From 5771f3a194a99417537390600f38b42abdd2f394 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20L=C3=B3pez?= <50665615+flopez7@users.noreply.github.com> Date: Wed, 29 Oct 2025 09:30:19 +0100 Subject: [PATCH 1/6] [SDK][Python] Update Python SDK versioning with changeset (#3612) --- .changeset/config.json | 5 +- .github/workflows/cd-python-sdk.yaml | 55 +- .github/workflows/ci-test-dashboard.yaml | 8 +- .github/workflows/ci-test-faucet-server.yaml | 8 +- .github/workflows/ci-test-fortune.yaml | 10 +- .github/workflows/ci-test-human-app.yaml | 8 +- .github/workflows/ci-test-job-launcher.yaml | 8 +- .../workflows/ci-test-reputation-oracle.yaml | 8 +- .github/workflows/ci-test-subgraph.yaml | 8 +- packages/apps/dashboard/client/package.json | 2 +- packages/apps/dashboard/server/package.json | 2 +- packages/apps/faucet/client/package.json | 2 +- packages/apps/faucet/server/package.json | 2 +- .../exchange-oracle/client/package.json | 2 +- .../exchange-oracle/server/package.json | 2 +- .../fortune/recording-oracle/package.json | 2 +- packages/apps/human-app/frontend/package.json | 2 +- packages/apps/human-app/server/package.json | 2 +- .../apps/job-launcher/client/package.json | 2 +- .../apps/job-launcher/server/package.json | 2 +- .../reputation-oracle/server/package.json | 2 +- packages/apps/staking/package.json | 2 +- packages/examples/gcv/package.json | 2 +- .../sdk/python/human-protocol-sdk/MANIFEST.in | 1 + .../human_protocol_sdk/__init__.py | 19 +- .../python/human-protocol-sdk/package.json | 7 + .../sdk/python/human-protocol-sdk/setup.py | 3 +- packages/sdk/typescript/subgraph/package.json | 2 +- scripts/fortune-all-local.sh | 32 +- scripts/tag-published-packages.mjs | 2 +- yarn.lock | 2580 +++++++++-------- 31 files changed, 1414 insertions(+), 1378 deletions(-) create mode 100644 packages/sdk/python/human-protocol-sdk/package.json diff --git a/.changeset/config.json b/.changeset/config.json index 776ef64b00..83e90e5dd2 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -7,7 +7,8 @@ "changelog": false, "bumpVersionsWithWorkspaceProtocolOnly": true, "privatePackages": { - "version": false, + "version": true, "tag": false - } + }, + "ignore": ["@apps/*", "@tools/*"] } diff --git a/.github/workflows/cd-python-sdk.yaml b/.github/workflows/cd-python-sdk.yaml index 7444c4cae8..81db4c20ed 100644 --- a/.github/workflows/cd-python-sdk.yaml +++ b/.github/workflows/cd-python-sdk.yaml @@ -1,13 +1,14 @@ name: Python SDK publish +permissions: + contents: write + on: - release: - types: [published] - workflow_dispatch: - inputs: - release_version: - description: 'Release version to use' - required: true + push: + branches: + - main + paths: + - "packages/sdk/python/human-protocol-sdk/**" jobs: publish-python-sdk: @@ -15,11 +16,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 + with: + token: ${{ secrets.GH_GITBOOK_TOKEN }} - uses: actions/setup-node@v4 with: node-version-file: .nvmrc cache: yarn - - name: Install dependencies + - name: Install JS dependencies run: yarn install - name: Build core package run: yarn workspace @human-protocol/core build @@ -27,31 +30,31 @@ jobs: uses: actions/setup-python@v6 with: python-version: "3.x" - - name: Install dependencies + - name: Read package version + id: read_version + run: | + VERSION=$(jq -r '.version' packages/sdk/python/human-protocol-sdk/package.json) + echo "version=$VERSION" >> $GITHUB_OUTPUT + - name: Install build deps working-directory: ./packages/sdk/python/human-protocol-sdk run: | python -m pip install --upgrade pip pip install setuptools==68.2.2 wheel twine - - name: Set the release version - uses: "DamianReeves/write-file-action@master" - if: ${{ github.event_name != 'workflow_dispatch' }} - with: - path: ./packages/sdk/python/human-protocol-sdk/human_protocol_sdk/__init__.py - write-mode: overwrite - contents: | - __version__ = "${{ github.event.release.tag_name }}" - - name: Set the release version - uses: "DamianReeves/write-file-action@master" - if: ${{ github.event_name == 'workflow_dispatch' }} - with: - path: ./packages/sdk/python/human-protocol-sdk/human_protocol_sdk/__init__.py - write-mode: overwrite - contents: | - __version__ = "${{ github.event.inputs.release_version }}" - name: Build and publish working-directory: ./packages/sdk/python/human-protocol-sdk env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} + run: make publish-package + - name: Create and push tag + working-directory: ./packages/sdk/python/human-protocol-sdk run: | - make publish-package + VERSION="${{ steps.read_version.outputs.version }}" + TAG="python/sdk@${VERSION}" + echo "Version: $VERSION | Tag: $TAG" + if git rev-parse -q --verify "refs/tags/${TAG}" >/dev/null; then + echo "Tag ${TAG} already exists. Skipping tag creation." + exit 0 + fi + git tag -a "$TAG" -m "Python SDK $VERSION" + git push origin "$TAG" diff --git a/.github/workflows/ci-test-dashboard.yaml b/.github/workflows/ci-test-dashboard.yaml index 4533212239..ec54d0e072 100644 --- a/.github/workflows/ci-test-dashboard.yaml +++ b/.github/workflows/ci-test-dashboard.yaml @@ -3,9 +3,9 @@ name: Dashboard Check on: push: paths: - - 'packages/core/**' - - 'packages/sdk/typescript/human-protocol-sdk/**' - - 'packages/apps/dashboard/**' + - "packages/core/**" + - "packages/sdk/typescript/human-protocol-sdk/**" + - "packages/apps/dashboard/**" jobs: dashboard-server-test: @@ -22,4 +22,4 @@ jobs: - name: Build libs run: yarn build:libs - name: Run dashboard Server test - run: yarn workspace @human-protocol/dashboard-server test + run: yarn workspace @apps/dashboard-server test diff --git a/.github/workflows/ci-test-faucet-server.yaml b/.github/workflows/ci-test-faucet-server.yaml index d61d1fc1f8..07a4d6faaf 100644 --- a/.github/workflows/ci-test-faucet-server.yaml +++ b/.github/workflows/ci-test-faucet-server.yaml @@ -3,9 +3,9 @@ name: Faucet server check on: push: paths: - - 'packages/core/**' - - 'packages/sdk/typescript/human-protocol-sdk/**' - - 'packages/apps/faucet/server/**' + - "packages/core/**" + - "packages/sdk/typescript/human-protocol-sdk/**" + - "packages/apps/faucet/server/**" jobs: faucet-server-test: @@ -25,4 +25,4 @@ jobs: run: cp .env.example .env working-directory: packages/apps/faucet/server - name: Run faucet/server test - run: yarn workspace @human-protocol/faucet-server test + run: yarn workspace @apps/faucet-server test diff --git a/.github/workflows/ci-test-fortune.yaml b/.github/workflows/ci-test-fortune.yaml index 3aa199f90e..001eafed1a 100644 --- a/.github/workflows/ci-test-fortune.yaml +++ b/.github/workflows/ci-test-fortune.yaml @@ -3,9 +3,9 @@ name: Fortune check on: push: paths: - - 'packages/core/**' - - 'packages/sdk/typescript/human-protocol-sdk/**' - - 'packages/apps/fortune/**' + - "packages/core/**" + - "packages/sdk/typescript/human-protocol-sdk/**" + - "packages/apps/fortune/**" jobs: fortune-exchange-oracle-test: @@ -22,7 +22,7 @@ jobs: - name: Build libs run: yarn build:libs - name: Run Exchange Oracle tests - run: yarn workspace @human-protocol/fortune-exchange-oracle-server test + run: yarn workspace @apps/fortune-exchange-oracle-server test fortune-recording-oracle-test: name: Fortune Recording Oracle Tests @@ -38,4 +38,4 @@ jobs: - name: Build libs run: yarn build:libs - name: Run Recording Oracle tests - run: yarn workspace @human-protocol/fortune-recording-oracle test + run: yarn workspace @apps/fortune-recording-oracle test diff --git a/.github/workflows/ci-test-human-app.yaml b/.github/workflows/ci-test-human-app.yaml index 412b0d405e..0fc74e09d9 100644 --- a/.github/workflows/ci-test-human-app.yaml +++ b/.github/workflows/ci-test-human-app.yaml @@ -3,9 +3,9 @@ name: Human App Check on: push: paths: - - 'packages/core/**' - - 'packages/sdk/typescript/human-protocol-sdk/**' - - 'packages/apps/human-app/**' + - "packages/core/**" + - "packages/sdk/typescript/human-protocol-sdk/**" + - "packages/apps/human-app/**" jobs: job-app-server-test: @@ -22,4 +22,4 @@ jobs: - name: Build libs run: yarn build:libs - name: Run Job Human App unit tests - run: yarn workspace @human-protocol/human-app-server test + run: yarn workspace @apps/human-app-server test diff --git a/.github/workflows/ci-test-job-launcher.yaml b/.github/workflows/ci-test-job-launcher.yaml index 89de81e26c..7d9c1c7007 100644 --- a/.github/workflows/ci-test-job-launcher.yaml +++ b/.github/workflows/ci-test-job-launcher.yaml @@ -3,9 +3,9 @@ name: Job Launcher Check on: push: paths: - - 'packages/core/**' - - 'packages/sdk/typescript/human-protocol-sdk/**' - - 'packages/apps/job-launcher/**' + - "packages/core/**" + - "packages/sdk/typescript/human-protocol-sdk/**" + - "packages/apps/job-launcher/**" jobs: job-launcher-server-test: @@ -22,4 +22,4 @@ jobs: - name: Build libs run: yarn build:libs - name: Run Job Launcher Server test - run: yarn workspace @human-protocol/job-launcher-server test + run: yarn workspace @apps/job-launcher-server test diff --git a/.github/workflows/ci-test-reputation-oracle.yaml b/.github/workflows/ci-test-reputation-oracle.yaml index 8b705ff847..ebee20e1db 100644 --- a/.github/workflows/ci-test-reputation-oracle.yaml +++ b/.github/workflows/ci-test-reputation-oracle.yaml @@ -3,9 +3,9 @@ name: Reputation Oracle Check on: push: paths: - - 'packages/core/**' - - 'packages/sdk/typescript/human-protocol-sdk/**' - - 'packages/apps/reputation-oracle/**' + - "packages/core/**" + - "packages/sdk/typescript/human-protocol-sdk/**" + - "packages/apps/reputation-oracle/**" jobs: reputation-oracle-test: @@ -22,4 +22,4 @@ jobs: - name: Build libs run: yarn build:libs - name: Run reputation oracle test - run: yarn workspace @human-protocol/reputation-oracle test + run: yarn workspace @apps/reputation-oracle test diff --git a/.github/workflows/ci-test-subgraph.yaml b/.github/workflows/ci-test-subgraph.yaml index b0384df9bf..9f4d1b1e2c 100644 --- a/.github/workflows/ci-test-subgraph.yaml +++ b/.github/workflows/ci-test-subgraph.yaml @@ -3,8 +3,8 @@ name: Subgraph check on: push: paths: - - 'packages/core/**' - - 'packages/sdk/typescript/subgraph/**' + - "packages/core/**" + - "packages/sdk/typescript/subgraph/**" jobs: subgraph-test: @@ -22,6 +22,6 @@ jobs: - name: Build core package run: yarn workspace @human-protocol/core build - name: Generate manifest for Polygon for tests - run: NETWORK=polygon yarn workspace @human-protocol/subgraph generate + run: NETWORK=polygon yarn workspace @tools/subgraph generate - name: Run subgraph test - run: yarn workspace @human-protocol/subgraph test + run: yarn workspace @tools/subgraph test diff --git a/packages/apps/dashboard/client/package.json b/packages/apps/dashboard/client/package.json index 288191b390..0ba4223942 100644 --- a/packages/apps/dashboard/client/package.json +++ b/packages/apps/dashboard/client/package.json @@ -1,5 +1,5 @@ { - "name": "@human-protocol/dashboard-client", + "name": "@apps/dashboard-client", "private": true, "version": "1.0.0", "description": "Human Protocol Dashboard", diff --git a/packages/apps/dashboard/server/package.json b/packages/apps/dashboard/server/package.json index 51a334dfca..557c2423da 100644 --- a/packages/apps/dashboard/server/package.json +++ b/packages/apps/dashboard/server/package.json @@ -1,5 +1,5 @@ { - "name": "@human-protocol/dashboard-server", + "name": "@apps/dashboard-server", "private": true, "version": "0.0.1", "description": "", diff --git a/packages/apps/faucet/client/package.json b/packages/apps/faucet/client/package.json index d9ba8b8abd..bcce15fd2c 100644 --- a/packages/apps/faucet/client/package.json +++ b/packages/apps/faucet/client/package.json @@ -1,5 +1,5 @@ { - "name": "@human-protocol/faucet-client", + "name": "@apps/faucet-client", "private": true, "version": "1.0.0", "description": "Human Protocol Faucet", diff --git a/packages/apps/faucet/server/package.json b/packages/apps/faucet/server/package.json index 869d283198..8f1f2ca83f 100644 --- a/packages/apps/faucet/server/package.json +++ b/packages/apps/faucet/server/package.json @@ -1,5 +1,5 @@ { - "name": "@human-protocol/faucet-server", + "name": "@apps/faucet-server", "private": true, "version": "1.0.0", "description": "Human Protocol faucet for private Ethereum testnet.", diff --git a/packages/apps/fortune/exchange-oracle/client/package.json b/packages/apps/fortune/exchange-oracle/client/package.json index 6c53fd1633..6284ecee93 100644 --- a/packages/apps/fortune/exchange-oracle/client/package.json +++ b/packages/apps/fortune/exchange-oracle/client/package.json @@ -1,5 +1,5 @@ { - "name": "@human-protocol/fortune-exchange-oracle-client", + "name": "@apps/fortune-exchange-oracle-client", "private": true, "version": "1.0.0", "description": "Job Launcher Client", diff --git a/packages/apps/fortune/exchange-oracle/server/package.json b/packages/apps/fortune/exchange-oracle/server/package.json index 84ce3e1ed8..39fe533a13 100644 --- a/packages/apps/fortune/exchange-oracle/server/package.json +++ b/packages/apps/fortune/exchange-oracle/server/package.json @@ -1,5 +1,5 @@ { - "name": "@human-protocol/fortune-exchange-oracle-server", + "name": "@apps/fortune-exchange-oracle-server", "private": true, "version": "1.0.0", "description": "Fortune Exchange Oracle", diff --git a/packages/apps/fortune/recording-oracle/package.json b/packages/apps/fortune/recording-oracle/package.json index bdba0f50b2..e001d734ce 100644 --- a/packages/apps/fortune/recording-oracle/package.json +++ b/packages/apps/fortune/recording-oracle/package.json @@ -1,5 +1,5 @@ { - "name": "@human-protocol/fortune-recording-oracle", + "name": "@apps/fortune-recording-oracle", "private": true, "version": "1.0.0", "description": "Fortune Recording Oracle", diff --git a/packages/apps/human-app/frontend/package.json b/packages/apps/human-app/frontend/package.json index ce3147d425..107b207057 100644 --- a/packages/apps/human-app/frontend/package.json +++ b/packages/apps/human-app/frontend/package.json @@ -1,5 +1,5 @@ { - "name": "@human-protocol/human-app-frontend", + "name": "@apps/human-app-frontend", "private": true, "version": "1.0.0", "scripts": { diff --git a/packages/apps/human-app/server/package.json b/packages/apps/human-app/server/package.json index 233e79c157..b25ceacaf9 100644 --- a/packages/apps/human-app/server/package.json +++ b/packages/apps/human-app/server/package.json @@ -1,5 +1,5 @@ { - "name": "@human-protocol/human-app-server", + "name": "@apps/human-app-server", "private": true, "version": "0.0.1", "description": "HUMAN App server", diff --git a/packages/apps/job-launcher/client/package.json b/packages/apps/job-launcher/client/package.json index 52199b62c1..4aba2a6e10 100644 --- a/packages/apps/job-launcher/client/package.json +++ b/packages/apps/job-launcher/client/package.json @@ -1,5 +1,5 @@ { - "name": "@human-protocol/job-launcher-client", + "name": "@apps/job-launcher-client", "private": true, "version": "1.0.0", "description": "Job Launcher Client", diff --git a/packages/apps/job-launcher/server/package.json b/packages/apps/job-launcher/server/package.json index 7c55d39019..d573b27d0c 100644 --- a/packages/apps/job-launcher/server/package.json +++ b/packages/apps/job-launcher/server/package.json @@ -1,5 +1,5 @@ { - "name": "@human-protocol/job-launcher-server", + "name": "@apps/job-launcher-server", "private": true, "version": "0.0.1", "description": "", diff --git a/packages/apps/reputation-oracle/server/package.json b/packages/apps/reputation-oracle/server/package.json index ae76e501b1..6095e32da8 100644 --- a/packages/apps/reputation-oracle/server/package.json +++ b/packages/apps/reputation-oracle/server/package.json @@ -1,5 +1,5 @@ { - "name": "@human-protocol/reputation-oracle", + "name": "@apps/reputation-oracle", "private": true, "version": "0.0.1", "description": "", diff --git a/packages/apps/staking/package.json b/packages/apps/staking/package.json index da54e0f22a..0861041bc7 100644 --- a/packages/apps/staking/package.json +++ b/packages/apps/staking/package.json @@ -1,5 +1,5 @@ { - "name": "@human-protocol/staking-dashboard-client", + "name": "@apps/staking-dashboard-client", "private": true, "version": "1.0.0", "description": "Staking Dashboard", diff --git a/packages/examples/gcv/package.json b/packages/examples/gcv/package.json index aafe7cbfdf..307424e5ed 100644 --- a/packages/examples/gcv/package.json +++ b/packages/examples/gcv/package.json @@ -1,5 +1,5 @@ { - "name": "gcv", + "name": "@apps/gcv", "private": true, "version": "1.0.0", "license": "UNLICENSED", diff --git a/packages/sdk/python/human-protocol-sdk/MANIFEST.in b/packages/sdk/python/human-protocol-sdk/MANIFEST.in index eb410e634e..1b3bbb5fb6 100644 --- a/packages/sdk/python/human-protocol-sdk/MANIFEST.in +++ b/packages/sdk/python/human-protocol-sdk/MANIFEST.in @@ -1 +1,2 @@ recursive-include artifacts *.json +include package.json diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/__init__.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/__init__.py index 6c8e6b979c..ed04e4c8e3 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/__init__.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/__init__.py @@ -1 +1,18 @@ -__version__ = "0.0.0" +from pathlib import Path +import json + +_base_dir = Path(__file__).resolve().parent.parent +_pkg_json_path = _base_dir / "package.json" +try: + with _pkg_json_path.open("r", encoding="utf-8") as f: + _pkg = json.load(f) +except FileNotFoundError as e: + raise RuntimeError(f"package.json not found at {_pkg_json_path}") from e +except Exception as e: + raise RuntimeError("Failed to read package.json") from e + +_v = _pkg.get("version") +if not isinstance(_v, str) or not _v.strip(): + raise RuntimeError("Missing or empty 'version' in package.json") + +__version__ = _v diff --git a/packages/sdk/python/human-protocol-sdk/package.json b/packages/sdk/python/human-protocol-sdk/package.json new file mode 100644 index 0000000000..b740442760 --- /dev/null +++ b/packages/sdk/python/human-protocol-sdk/package.json @@ -0,0 +1,7 @@ +{ + "name": "@human-protocol/python-sdk", + "version": "4.4.0", + "private": true, + "description": "Stub package to integrate the Python SDK with Changesets (dev-only).", + "license": "MIT" +} diff --git a/packages/sdk/python/human-protocol-sdk/setup.py b/packages/sdk/python/human-protocol-sdk/setup.py index 7b0e91653b..57d1595ca3 100644 --- a/packages/sdk/python/human-protocol-sdk/setup.py +++ b/packages/sdk/python/human-protocol-sdk/setup.py @@ -1,8 +1,9 @@ import setuptools +from human_protocol_sdk import __version__ as _version setuptools.setup( name="human-protocol-sdk", - version="4.1.3", + version=_version, author="HUMAN Protocol", description="A python library to launch escrow contracts to the HUMAN network.", url="https://github.com/humanprotocol/human-protocol/packages/sdk/python/human-protocol-sdk", diff --git a/packages/sdk/typescript/subgraph/package.json b/packages/sdk/typescript/subgraph/package.json index db9f7cb9a1..c5fbfadde4 100644 --- a/packages/sdk/typescript/subgraph/package.json +++ b/packages/sdk/typescript/subgraph/package.json @@ -1,5 +1,5 @@ { - "name": "@human-protocol/subgraph", + "name": "@tools/subgraph", "private": true, "description": "Human Protocol Subgraph", "version": "1.0.0", diff --git a/scripts/fortune-all-local.sh b/scripts/fortune-all-local.sh index 55b568b37e..9a4dca59e6 100755 --- a/scripts/fortune-all-local.sh +++ b/scripts/fortune-all-local.sh @@ -15,7 +15,7 @@ check_core_folders() { deploy_subgraph() { echo "Waiting for graph node to be healthy..." retries=0 - while ! yarn workspace @human-protocol/subgraph health-local:node + while ! yarn workspace @tools/subgraph health-local:node do ((retries++)) if [ "$retries" -ge 10 ]; then @@ -26,9 +26,9 @@ deploy_subgraph() { echo "Deploying subgraph..." - NETWORK=localhost yarn workspace @human-protocol/subgraph generate - yarn workspace @human-protocol/subgraph create-local - yarn workspace @human-protocol/subgraph deploy-local + NETWORK=localhost yarn workspace @tools/subgraph generate + yarn workspace @tools/subgraph create-local + yarn workspace @tools/subgraph deploy-local } setup_oracles() { @@ -36,35 +36,35 @@ setup_oracles() { # It's important to run these commands sequentially # to successfully execute all parallel blockchain transactions # that might conflict on same nonce value - echo "Setup JL" && yarn workspace @human-protocol/job-launcher-server setup:local - echo "Setup RepO" && yarn workspace @human-protocol/reputation-oracle setup:local - echo "Setup ExcO" && yarn workspace @human-protocol/fortune-exchange-oracle-server setup:local - echo "Setup RecO" && yarn workspace @human-protocol/fortune-recording-oracle setup:local + echo "Setup JL" && yarn workspace @apps/job-launcher-server setup:local + echo "Setup RepO" && yarn workspace @apps/reputation-oracle setup:local + echo "Setup ExcO" && yarn workspace @apps/fortune-exchange-oracle-server setup:local + echo "Setup RecO" && yarn workspace @apps/fortune-recording-oracle setup:local echo "Oracles successfully set up" } run_jl_server() { - NODE_ENV=local yarn workspace @human-protocol/job-launcher-server migration:run - NODE_ENV=local yarn workspace @human-protocol/job-launcher-server start:dev + NODE_ENV=local yarn workspace @apps/job-launcher-server migration:run + NODE_ENV=local yarn workspace @apps/job-launcher-server start:dev } run_jl_client() { - NODE_ENV=local yarn workspace @human-protocol/job-launcher-client start + NODE_ENV=local yarn workspace @apps/job-launcher-client start } run_reputation_oracle() { - NODE_ENV=local yarn workspace @human-protocol/reputation-oracle migration:run - NODE_ENV=local yarn workspace @human-protocol/reputation-oracle start:dev + NODE_ENV=local yarn workspace @apps/reputation-oracle migration:run + NODE_ENV=local yarn workspace @apps/reputation-oracle start:dev } run_fortune_exchange_oracle() { - NODE_ENV=local yarn workspace @human-protocol/fortune-exchange-oracle-server migration:run - NODE_ENV=local yarn workspace @human-protocol/fortune-exchange-oracle-server start:dev + NODE_ENV=local yarn workspace @apps/fortune-exchange-oracle-server migration:run + NODE_ENV=local yarn workspace @apps/fortune-exchange-oracle-server start:dev } run_fortune_recording_oracle() { - NODE_ENV=local yarn workspace @human-protocol/fortune-recording-oracle start:dev + NODE_ENV=local yarn workspace @apps/fortune-recording-oracle start:dev } full_run() { diff --git a/scripts/tag-published-packages.mjs b/scripts/tag-published-packages.mjs index 1624ca73af..cdb2546cf4 100644 --- a/scripts/tag-published-packages.mjs +++ b/scripts/tag-published-packages.mjs @@ -9,7 +9,7 @@ function maybeCreateGitTagForPackage({ name, version }) { return; } - const tag = `${name}@${version}`; + const tag = `js/${name}@${version}`; try { childProcess.execSync(`git rev-parse --verify ${tag}`, { stdio: "ignore" }); diff --git a/yarn.lock b/yarn.lock index 72674dd140..d1ba2d151f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -109,208 +109,874 @@ __metadata: languageName: node linkType: hard -"@ardatan/sync-fetch@npm:^0.0.1": - version: 0.0.1 - resolution: "@ardatan/sync-fetch@npm:0.0.1" - dependencies: - node-fetch: "npm:^2.6.1" - checksum: 10c0/cd69134005ef5ea570d55631c8be59b593e2dda2207f616d30618f948af6ee5d227b857aefd56c535e8f7f3ade47083e4e7795b5ee014a6732011c6e5f9eb08f - languageName: node - linkType: hard - -"@asamuzakjp/css-color@npm:^3.1.2": - version: 3.1.7 - resolution: "@asamuzakjp/css-color@npm:3.1.7" +"@apps/dashboard-client@workspace:packages/apps/dashboard/client": + version: 0.0.0-use.local + resolution: "@apps/dashboard-client@workspace:packages/apps/dashboard/client" dependencies: - "@csstools/css-calc": "npm:^2.1.3" - "@csstools/css-color-parser": "npm:^3.0.9" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" - lru-cache: "npm:^10.4.3" - checksum: 10c0/ac70af38c9b9d972941fe9dbed5221118077bc8f217617edbd534d9c7c281fd2c4023d0f0daa349d57b895cb73430d67d509b722226294bad2910a81d9439e91 - languageName: node - linkType: hard - -"@automapper/classes@npm:^8.8.1": - version: 8.8.1 - resolution: "@automapper/classes@npm:8.8.1" - peerDependencies: - "@automapper/core": 8.8.1 - reflect-metadata: ~0.1.13 - checksum: 10c0/f1d258e2a41a2fab2cfdea0385294d4319df00dfb0db07994d9e62722cd84a27763aedf8aca59b4f7cb580ae0e92533a9dff8e8a15e2243642dfc4b4365f01ed - languageName: node - linkType: hard - -"@automapper/core@npm:^8.8.1": - version: 8.8.1 - resolution: "@automapper/core@npm:8.8.1" - checksum: 10c0/2b724ba2bcda476dcffb5f26c8552c7b339ff25fe9699a7a0f025aaa5861ad073253df21368d7aa475e1641374edf54edfd426e23c4e7b35135e04c7203732ad - languageName: node - linkType: hard - -"@automapper/nestjs@npm:^8.8.1": - version: 8.8.1 - resolution: "@automapper/nestjs@npm:8.8.1" - peerDependencies: - "@automapper/core": 8.8.1 - "@nestjs/common": ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 - "@nestjs/core": ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 - checksum: 10c0/a05842e3a7511b67e6a79df517b5a86c0c9faebbd8877de2e8af5537746933aafe1a8a88d58dd096b464c73f25657813d87ab3ac2b97cc8a393acd5ed5e12640 - languageName: node - linkType: hard + "@emotion/react": "npm:^11.11.4" + "@emotion/styled": "npm:^11.11.5" + "@eslint/js": "npm:^9.27.0" + "@human-protocol/sdk": "workspace:*" + "@mui/icons-material": "npm:^7.2.0" + "@mui/material": "npm:^7.2.0" + "@mui/styled-engine-sc": "npm:7.2.0" + "@mui/system": "npm:^7.2.0" + "@mui/x-data-grid": "npm:^8.7.0" + "@mui/x-date-pickers": "npm:^8.7.0" + "@tanstack/react-query": "npm:^5.67.2" + "@types/react": "npm:^18.3.12" + "@types/react-dom": "npm:^18.3.1" + "@types/react-router-dom": "npm:^5.3.3" + "@types/recharts": "npm:^1.8.29" + "@typescript-eslint/eslint-plugin": "npm:^7.2.0" + "@typescript-eslint/parser": "npm:^7.2.0" + "@vitejs/plugin-react": "npm:^4.2.1" + axios: "npm:^1.7.2" + clsx: "npm:^2.1.1" + dayjs: "npm:^1.11.11" + eslint: "npm:^9.27.0" + eslint-plugin-import: "npm:^2.31.0" + eslint-plugin-prettier: "npm:^5.4.0" + eslint-plugin-react: "npm:^7.37.5" + eslint-plugin-react-hooks: "npm:^5.2.0" + eslint-plugin-react-refresh: "npm:^0.4.11" + globals: "npm:^16.2.0" + prettier: "npm:^3.4.2" + react: "npm:^18.3.1" + react-dom: "npm:^18.3.1" + react-number-format: "npm:^5.4.3" + react-router-dom: "npm:^6.23.1" + recharts: "npm:^2.13.0-alpha.4" + sass: "npm:^1.89.2" + simplebar-react: "npm:^3.3.2" + styled-components: "npm:^6.1.11" + swiper: "npm:^11.1.3" + typescript: "npm:^5.6.3" + typescript-eslint: "npm:^8.33.0" + use-debounce: "npm:^10.0.2" + vite: "npm:^6.2.4" + vite-plugin-node-polyfills: "npm:^0.23.0" + zod: "npm:^4.0.17" + zustand: "npm:^4.5.4" + languageName: unknown + linkType: soft -"@aws-crypto/crc32@npm:5.2.0": - version: 5.2.0 - resolution: "@aws-crypto/crc32@npm:5.2.0" +"@apps/dashboard-server@workspace:packages/apps/dashboard/server": + version: 0.0.0-use.local + resolution: "@apps/dashboard-server@workspace:packages/apps/dashboard/server" dependencies: - "@aws-crypto/util": "npm:^5.2.0" - "@aws-sdk/types": "npm:^3.222.0" - tslib: "npm:^2.6.2" - checksum: 10c0/eab9581d3363af5ea498ae0e72de792f54d8890360e14a9d8261b7b5c55ebe080279fb2556e07994d785341cdaa99ab0b1ccf137832b53b5904cd6928f2b094b - languageName: node - linkType: hard + "@human-protocol/core": "workspace:*" + "@human-protocol/logger": "workspace:*" + "@human-protocol/sdk": "workspace:*" + "@nestjs/axios": "npm:^3.1.2" + "@nestjs/cache-manager": "npm:^2.2.2" + "@nestjs/cli": "npm:^10.3.2" + "@nestjs/common": "npm:^10.2.7" + "@nestjs/config": "npm:^3.2.3" + "@nestjs/core": "npm:^10.2.8" + "@nestjs/mapped-types": "npm:*" + "@nestjs/platform-express": "npm:^10.3.10" + "@nestjs/schematics": "npm:^11.0.2" + "@nestjs/testing": "npm:^10.4.6" + "@types/express": "npm:^4.17.13" + "@types/jest": "npm:29.5.1" + "@types/node": "npm:22.10.5" + "@typescript-eslint/eslint-plugin": "npm:^5.0.0" + "@typescript-eslint/parser": "npm:^5.0.0" + axios: "npm:^1.3.1" + cache-manager: "npm:^5.4.0" + cache-manager-redis-yet: "npm:^5.1.5" + dayjs: "npm:^1.11.12" + eslint: "npm:^8.0.1" + eslint-config-prettier: "npm:^9.1.0" + eslint-plugin-prettier: "npm:^5.2.1" + ethers: "npm:~6.15.0" + jest: "npm:29.5.0" + lodash: "npm:^4.17.21" + prettier: "npm:^3.4.2" + reflect-metadata: "npm:^0.2.2" + rxjs: "npm:^7.2.0" + source-map-support: "npm:^0.5.20" + ts-jest: "npm:29.2.5" + ts-node: "npm:^10.0.0" + tsconfig-paths: "npm:4.2.0" + typescript: "npm:^5.6.3" + languageName: unknown + linkType: soft -"@aws-crypto/sha256-browser@npm:5.2.0": - version: 5.2.0 - resolution: "@aws-crypto/sha256-browser@npm:5.2.0" +"@apps/faucet-client@workspace:packages/apps/faucet/client": + version: 0.0.0-use.local + resolution: "@apps/faucet-client@workspace:packages/apps/faucet/client" dependencies: - "@aws-crypto/sha256-js": "npm:^5.2.0" - "@aws-crypto/supports-web-crypto": "npm:^5.2.0" - "@aws-crypto/util": "npm:^5.2.0" - "@aws-sdk/types": "npm:^3.222.0" - "@aws-sdk/util-locate-window": "npm:^3.0.0" - "@smithy/util-utf8": "npm:^2.0.0" - tslib: "npm:^2.6.2" - checksum: 10c0/05f6d256794df800fe9aef5f52f2ac7415f7f3117d461f85a6aecaa4e29e91527b6fd503681a17136fa89e9dd3d916e9c7e4cfb5eba222875cb6c077bdc1d00d - languageName: node - linkType: hard + "@human-protocol/sdk": "workspace:*" + "@mui/icons-material": "npm:^7.0.1" + "@mui/material": "npm:^5.16.7" + "@types/react": "npm:^18.3.12" + "@types/react-dom": "npm:^18.3.1" + dotenv: "npm:^17.2.2" + eslint: "npm:^8.55.0" + eslint-config-react-app: "npm:^7.0.1" + eslint-import-resolver-typescript: "npm:^3.7.0" + eslint-plugin-import: "npm:^2.29.0" + eslint-plugin-react: "npm:^7.34.3" + eslint-plugin-react-hooks: "npm:^5.1.0" + prettier: "npm:^3.4.2" + react: "npm:^18.3.1" + react-dom: "npm:^18.3.1" + react-loading-skeleton: "npm:^3.3.1" + react-router-dom: "npm:^6.4.3" + serve: "npm:^14.2.4" + typescript: "npm:^5.8.3" + viem: "npm:2.x" + vite: "npm:^6.2.4" + vite-plugin-node-polyfills: "npm:^0.23.0" + languageName: unknown + linkType: soft -"@aws-crypto/sha256-js@npm:1.2.2": - version: 1.2.2 - resolution: "@aws-crypto/sha256-js@npm:1.2.2" +"@apps/faucet-server@workspace:packages/apps/faucet/server": + version: 0.0.0-use.local + resolution: "@apps/faucet-server@workspace:packages/apps/faucet/server" dependencies: - "@aws-crypto/util": "npm:^1.2.2" - "@aws-sdk/types": "npm:^3.1.0" - tslib: "npm:^1.11.1" - checksum: 10c0/f4e8593cfbc48591413f00c744569b21e5ed5fab0e27fa4b59c517f2024ca4f46fab7b3874f2a207ceeef8feefc22d143a82d6c6bfe5303ea717f579d8d7ad0a - languageName: node - linkType: hard + "@human-protocol/sdk": "workspace:*" + "@types/cors": "npm:^2.8.19" + "@types/express": "npm:^4.17.14" + "@types/node": "npm:^22.15.16" + axios: "npm:^1.3.4" + body-parser: "npm:^1.20.0" + concurrently: "npm:^9.1.2" + cors: "npm:^2.8.5" + eslint: "npm:^8.55.0" + express: "npm:^4.21.0" + express-rate-limit: "npm:^7.3.0" + hardhat: "npm:^2.26.0" + jest: "npm:^29.7.0" + node-cache: "npm:^5.1.2" + ts-node: "npm:^10.9.2" + typescript: "npm:^5.8.3" + web3: "npm:^4.12.1" + languageName: unknown + linkType: soft -"@aws-crypto/sha256-js@npm:5.2.0, @aws-crypto/sha256-js@npm:^5.2.0": - version: 5.2.0 - resolution: "@aws-crypto/sha256-js@npm:5.2.0" +"@apps/fortune-exchange-oracle-client@workspace:packages/apps/fortune/exchange-oracle/client": + version: 0.0.0-use.local + resolution: "@apps/fortune-exchange-oracle-client@workspace:packages/apps/fortune/exchange-oracle/client" dependencies: - "@aws-crypto/util": "npm:^5.2.0" - "@aws-sdk/types": "npm:^3.222.0" - tslib: "npm:^2.6.2" - checksum: 10c0/6c48701f8336341bb104dfde3d0050c89c288051f6b5e9bdfeb8091cf3ffc86efcd5c9e6ff2a4a134406b019c07aca9db608128f8d9267c952578a3108db9fd1 - languageName: node - linkType: hard + "@emotion/react": "npm:^11.11.3" + "@emotion/styled": "npm:^11.11.0" + "@human-protocol/sdk": "workspace:^" + "@mui/icons-material": "npm:^7.0.1" + "@mui/material": "npm:^5.16.7" + "@tanstack/query-sync-storage-persister": "npm:^5.68.0" + "@tanstack/react-query": "npm:^5.67.2" + "@tanstack/react-query-persist-client": "npm:^5.80.7" + "@types/react": "npm:^18.3.12" + "@types/react-dom": "npm:^18.3.1" + "@types/react-router-dom": "npm:^5.3.3" + "@typescript-eslint/eslint-plugin": "npm:^7.13.1" + "@typescript-eslint/parser": "npm:^7.13.1" + "@vitejs/plugin-react": "npm:^4.3.1" + axios: "npm:^1.7.2" + eslint: "npm:^8.57.0" + eslint-plugin-react-hooks: "npm:^5.1.0" + eslint-plugin-react-refresh: "npm:^0.4.11" + ethers: "npm:^6.15.0" + prettier: "npm:^3.4.2" + react: "npm:^18.3.1" + react-dom: "npm:^18.3.1" + react-router-dom: "npm:^6.24.1" + serve: "npm:^14.2.4" + typescript: "npm:^5.6.3" + viem: "npm:2.x" + vite: "npm:^6.2.4" + vite-plugin-node-polyfills: "npm:^0.23.0" + wagmi: "npm:^2.14.6" + languageName: unknown + linkType: soft -"@aws-crypto/supports-web-crypto@npm:^5.2.0": - version: 5.2.0 - resolution: "@aws-crypto/supports-web-crypto@npm:5.2.0" +"@apps/fortune-exchange-oracle-server@workspace:packages/apps/fortune/exchange-oracle/server": + version: 0.0.0-use.local + resolution: "@apps/fortune-exchange-oracle-server@workspace:packages/apps/fortune/exchange-oracle/server" dependencies: - tslib: "npm:^2.6.2" - checksum: 10c0/4d2118e29d68ca3f5947f1e37ce1fbb3239a0c569cc938cdc8ab8390d595609b5caf51a07c9e0535105b17bf5c52ea256fed705a07e9681118120ab64ee73af2 - languageName: node - linkType: hard + "@golevelup/ts-jest": "npm:^0.6.1" + "@human-protocol/logger": "workspace:*" + "@human-protocol/sdk": "workspace:*" + "@nestjs/axios": "npm:^3.1.2" + "@nestjs/cli": "npm:^10.3.2" + "@nestjs/common": "npm:^10.2.7" + "@nestjs/config": "npm:^3.1.1" + "@nestjs/core": "npm:^10.3.10" + "@nestjs/passport": "npm:^10.0.0" + "@nestjs/platform-express": "npm:^10.3.10" + "@nestjs/schedule": "npm:^4.0.1" + "@nestjs/schematics": "npm:^11.0.2" + "@nestjs/swagger": "npm:^7.4.2" + "@nestjs/terminus": "npm:^11.0.0" + "@nestjs/testing": "npm:^10.4.6" + "@nestjs/typeorm": "npm:^10.0.1" + "@types/body-parser": "npm:^1" + "@types/express": "npm:^4.17.13" + "@types/jest": "npm:29.5.12" + "@types/jsonwebtoken": "npm:^9.0.7" + "@types/node": "npm:22.10.5" + "@types/passport": "npm:^0" + "@types/passport-jwt": "npm:^4.0.1" + "@types/pg": "npm:8.11.10" + "@typescript-eslint/eslint-plugin": "npm:^5.0.0" + "@typescript-eslint/parser": "npm:^5.0.0" + axios: "npm:^1.3.1" + body-parser: "npm:^1.20.3" + class-transformer: "npm:^0.5.1" + class-validator: "npm:0.14.1" + dotenv: "npm:^17.2.2" + eslint: "npm:^8.55.0" + eslint-config-prettier: "npm:^9.1.0" + eslint-plugin-prettier: "npm:^5.2.1" + ethers: "npm:~6.15.0" + jest: "npm:29.7.0" + joi: "npm:^17.13.3" + jsonwebtoken: "npm:^9.0.2" + minio: "npm:7.1.3" + passport: "npm:^0.7.0" + passport-jwt: "npm:^4.0.1" + pg: "npm:8.13.1" + prettier: "npm:^3.4.2" + reflect-metadata: "npm:^0.2.2" + rxjs: "npm:^7.2.0" + source-map-support: "npm:^0.5.20" + ts-jest: "npm:29.2.5" + ts-node: "npm:^10.9.2" + tsconfig-paths: "npm:4.2.0" + typeorm: "npm:^0.3.25" + typeorm-naming-strategies: "npm:^4.1.0" + typescript: "npm:^5.6.3" + languageName: unknown + linkType: soft -"@aws-crypto/util@npm:^1.2.2": - version: 1.2.2 - resolution: "@aws-crypto/util@npm:1.2.2" +"@apps/fortune-recording-oracle@workspace:packages/apps/fortune/recording-oracle": + version: 0.0.0-use.local + resolution: "@apps/fortune-recording-oracle@workspace:packages/apps/fortune/recording-oracle" dependencies: - "@aws-sdk/types": "npm:^3.1.0" - "@aws-sdk/util-utf8-browser": "npm:^3.0.0" - tslib: "npm:^1.11.1" - checksum: 10c0/ade8843bf13529b1854f64d6bbb23f30b46330743c8866adfd2105d830e30ce837a868eaaf41c4c2381d27e9d225d3a0a7558ee1eee022f0192916e33bfb654c - languageName: node - linkType: hard + "@human-protocol/logger": "workspace:*" + "@human-protocol/sdk": "workspace:*" + "@nestjs/axios": "npm:^3.1.2" + "@nestjs/cli": "npm:^10.3.2" + "@nestjs/common": "npm:^10.2.7" + "@nestjs/config": "npm:^3.1.1" + "@nestjs/core": "npm:^10.3.10" + "@nestjs/platform-express": "npm:^10.3.10" + "@nestjs/schematics": "npm:^11.0.2" + "@nestjs/swagger": "npm:^7.4.2" + "@nestjs/testing": "npm:^10.4.6" + "@types/express": "npm:^4.17.13" + "@types/node": "npm:^22.15.16" + axios: "npm:^1.3.1" + body-parser: "npm:^1.20.2" + class-transformer: "npm:^0.5.1" + class-validator: "npm:0.14.1" + dotenv: "npm:^17.2.2" + eslint: "npm:^8.55.0" + helmet: "npm:^7.1.0" + jest: "npm:^29.7.0" + joi: "npm:^17.13.3" + minio: "npm:7.1.3" + prettier: "npm:^3.4.2" + reflect-metadata: "npm:^0.2.2" + rxjs: "npm:^7.2.0" + ts-node: "npm:^10.9.2" + typescript: "npm:^5.8.3" + languageName: unknown + linkType: soft -"@aws-crypto/util@npm:^5.2.0": - version: 5.2.0 - resolution: "@aws-crypto/util@npm:5.2.0" +"@apps/gcv@workspace:packages/examples/gcv": + version: 0.0.0-use.local + resolution: "@apps/gcv@workspace:packages/examples/gcv" dependencies: - "@aws-sdk/types": "npm:^3.222.0" - "@smithy/util-utf8": "npm:^2.0.0" - tslib: "npm:^2.6.2" - checksum: 10c0/0362d4c197b1fd64b423966945130207d1fe23e1bb2878a18e361f7743c8d339dad3f8729895a29aa34fff6a86c65f281cf5167c4bf253f21627ae80b6dd2951 - languageName: node - linkType: hard + "@google-cloud/vision": "npm:^4.3.2" + "@nestjs/common": "npm:^10.2.7" + "@types/xml2js": "npm:^0.4.14" + axios: "npm:^1.7.2" + dotenv: "npm:^17.2.2" + eslint: "npm:^8.55.0" + jest: "npm:^29.7.0" + typescript: "npm:^5.8.3" + xml2js: "npm:^0.6.2" + languageName: unknown + linkType: soft -"@aws-sdk/client-lambda@npm:^3.563.0": - version: 3.804.0 - resolution: "@aws-sdk/client-lambda@npm:3.804.0" +"@apps/human-app-frontend@workspace:packages/apps/human-app/frontend": + version: 0.0.0-use.local + resolution: "@apps/human-app-frontend@workspace:packages/apps/human-app/frontend" dependencies: - "@aws-crypto/sha256-browser": "npm:5.2.0" - "@aws-crypto/sha256-js": "npm:5.2.0" - "@aws-sdk/core": "npm:3.804.0" - "@aws-sdk/credential-provider-node": "npm:3.804.0" - "@aws-sdk/middleware-host-header": "npm:3.804.0" - "@aws-sdk/middleware-logger": "npm:3.804.0" - "@aws-sdk/middleware-recursion-detection": "npm:3.804.0" - "@aws-sdk/middleware-user-agent": "npm:3.804.0" - "@aws-sdk/region-config-resolver": "npm:3.804.0" - "@aws-sdk/types": "npm:3.804.0" - "@aws-sdk/util-endpoints": "npm:3.804.0" - "@aws-sdk/util-user-agent-browser": "npm:3.804.0" - "@aws-sdk/util-user-agent-node": "npm:3.804.0" - "@smithy/config-resolver": "npm:^4.1.0" - "@smithy/core": "npm:^3.3.1" - "@smithy/eventstream-serde-browser": "npm:^4.0.2" - "@smithy/eventstream-serde-config-resolver": "npm:^4.1.0" - "@smithy/eventstream-serde-node": "npm:^4.0.2" - "@smithy/fetch-http-handler": "npm:^5.0.2" - "@smithy/hash-node": "npm:^4.0.2" - "@smithy/invalid-dependency": "npm:^4.0.2" - "@smithy/middleware-content-length": "npm:^4.0.2" - "@smithy/middleware-endpoint": "npm:^4.1.2" - "@smithy/middleware-retry": "npm:^4.1.3" - "@smithy/middleware-serde": "npm:^4.0.3" - "@smithy/middleware-stack": "npm:^4.0.2" - "@smithy/node-config-provider": "npm:^4.0.2" - "@smithy/node-http-handler": "npm:^4.0.4" - "@smithy/protocol-http": "npm:^5.1.0" - "@smithy/smithy-client": "npm:^4.2.2" - "@smithy/types": "npm:^4.2.0" - "@smithy/url-parser": "npm:^4.0.2" - "@smithy/util-base64": "npm:^4.0.0" - "@smithy/util-body-length-browser": "npm:^4.0.0" - "@smithy/util-body-length-node": "npm:^4.0.0" - "@smithy/util-defaults-mode-browser": "npm:^4.0.10" - "@smithy/util-defaults-mode-node": "npm:^4.0.10" - "@smithy/util-endpoints": "npm:^3.0.2" - "@smithy/util-middleware": "npm:^4.0.2" - "@smithy/util-retry": "npm:^4.0.3" - "@smithy/util-stream": "npm:^4.2.0" - "@smithy/util-utf8": "npm:^4.0.0" - "@smithy/util-waiter": "npm:^4.0.3" - tslib: "npm:^2.6.2" - checksum: 10c0/bf0f607b01ef70dba2ca4a310cb8765d1a0e24630875709ec3006a1cbc92afb7373505fe88b9a9c9a2aab41b2701b496fe7ef6b559ce98caac94174965e3deee - languageName: node - linkType: hard + "@emotion/react": "npm:^11.11.3" + "@emotion/styled": "npm:^11.11.0" + "@faker-js/faker": "npm:^9.7.0" + "@fontsource/inter": "npm:^5.0.17" + "@fontsource/roboto": "npm:^5.2.6" + "@hcaptcha/react-hcaptcha": "npm:^0.3.6" + "@hookform/resolvers": "npm:^5.1.0" + "@human-protocol/sdk": "workspace:*" + "@mui/icons-material": "npm:^7.0.1" + "@mui/material": "npm:^5.16.7" + "@mui/system": "npm:^5.15.14" + "@mui/x-date-pickers": "npm:^7.23.6" + "@reown/appkit": "npm:^1.7.11" + "@reown/appkit-adapter-wagmi": "npm:^1.7.11" + "@synaps-io/verify-sdk": "npm:^4.0.45" + "@tanstack/eslint-plugin-query": "npm:^5.60.1" + "@tanstack/react-query": "npm:^5.75.5" + "@tanstack/react-query-devtools": "npm:^5.59.16" + "@types/lodash": "npm:^4.17.12" + "@types/mui-image": "npm:^1.0.5" + "@types/node": "npm:^22.10.5" + "@types/prop-types": "npm:^15" + "@types/react": "npm:^18.3.12" + "@types/react-dom": "npm:^18.3.1" + "@typescript-eslint/eslint-plugin": "npm:^6.20.0" + "@typescript-eslint/parser": "npm:^6.20.0" + "@vercel/style-guide": "npm:^6.0.0" + "@vitejs/plugin-react": "npm:^4.2.1" + "@wagmi/core": "npm:^2.17.1" + date-fns: "npm:^4.1.0" + eslint: "npm:^8.55.0" + eslint-config-prettier: "npm:^9.1.0" + eslint-plugin-prettier: "npm:^5.2.1" + eslint-plugin-react-refresh: "npm:^0.4.11" + ethers: "npm:^6.15.0" + husky: "npm:^9.1.6" + i18next: "npm:^23.8.2" + jsdom: "npm:^25.0.1" + jwt-decode: "npm:^4.0.0" + lint-staged: "npm:^15.4.3" + lodash: "npm:^4.17.21" + material-react-table: "npm:3.0.1" + mui-image: "npm:^1.0.7" + notistack: "npm:^3.0.1" + prettier: "npm:^3.4.2" + prop-types: "npm:^15.8.1" + query-string: "npm:^9.0.0" + react: "npm:^18.3.1" + react-dom: "npm:^18.3.1" + react-hook-form: "npm:^7.62.0" + react-i18next: "npm:^15.1.0" + react-imask: "npm:^7.4.0" + react-number-format: "npm:^5.4.3" + react-router-dom: "npm:^6.22.0" + serve: "npm:^14.2.4" + typescript: "npm:^5.6.3" + viem: "npm:^2.31.4" + vite: "npm:^6.2.4" + vite-plugin-svgr: "npm:^4.2.0" + vitest: "npm:^3.1.1" + wagmi: "npm:^2.15.6" + zod: "npm:^4.0.17" + zustand: "npm:^4.5.0" + languageName: unknown + linkType: soft -"@aws-sdk/client-sso@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/client-sso@npm:3.804.0" +"@apps/human-app-server@workspace:packages/apps/human-app/server": + version: 0.0.0-use.local + resolution: "@apps/human-app-server@workspace:packages/apps/human-app/server" dependencies: - "@aws-crypto/sha256-browser": "npm:5.2.0" - "@aws-crypto/sha256-js": "npm:5.2.0" - "@aws-sdk/core": "npm:3.804.0" - "@aws-sdk/middleware-host-header": "npm:3.804.0" - "@aws-sdk/middleware-logger": "npm:3.804.0" - "@aws-sdk/middleware-recursion-detection": "npm:3.804.0" - "@aws-sdk/middleware-user-agent": "npm:3.804.0" - "@aws-sdk/region-config-resolver": "npm:3.804.0" - "@aws-sdk/types": "npm:3.804.0" - "@aws-sdk/util-endpoints": "npm:3.804.0" - "@aws-sdk/util-user-agent-browser": "npm:3.804.0" - "@aws-sdk/util-user-agent-node": "npm:3.804.0" - "@smithy/config-resolver": "npm:^4.1.0" - "@smithy/core": "npm:^3.3.1" - "@smithy/fetch-http-handler": "npm:^5.0.2" - "@smithy/hash-node": "npm:^4.0.2" - "@smithy/invalid-dependency": "npm:^4.0.2" + "@automapper/classes": "npm:^8.8.1" + "@automapper/core": "npm:^8.8.1" + "@automapper/nestjs": "npm:^8.8.1" + "@human-protocol/core": "workspace:*" + "@human-protocol/logger": "workspace:*" + "@human-protocol/sdk": "workspace:*" + "@nestjs/axios": "npm:^3.1.2" + "@nestjs/cache-manager": "npm:^2.2.1" + "@nestjs/cli": "npm:^10.3.2" + "@nestjs/common": "npm:^10.2.7" + "@nestjs/config": "npm:^3.1.1" + "@nestjs/core": "npm:^10.3.10" + "@nestjs/passport": "npm:^10.0.0" + "@nestjs/platform-express": "npm:^10.3.10" + "@nestjs/schedule": "npm:^4.0.1" + "@nestjs/schematics": "npm:^11.0.2" + "@nestjs/swagger": "npm:^7.4.2" + "@nestjs/terminus": "npm:^11.0.0" + "@nestjs/testing": "npm:^10.4.6" + "@types/express": "npm:^4.17.13" + "@types/jest": "npm:29.5.12" + "@types/jsonwebtoken": "npm:^9.0.7" + "@types/lodash": "npm:^4.17.14" + "@types/node": "npm:22.10.5" + "@types/passport": "npm:^0" + "@types/passport-jwt": "npm:^4.0.1" + "@typescript-eslint/eslint-plugin": "npm:^5.0.0" + "@typescript-eslint/parser": "npm:^5.0.0" + axios: "npm:^1.7.2" + cache-manager: "npm:^5.4.0" + cache-manager-redis-yet: "npm:^5.1.5" + class-transformer: "npm:^0.5.1" + class-validator: "npm:0.14.1" + eslint: "npm:^8.55.0" + eslint-config-prettier: "npm:^9.1.0" + eslint-plugin-prettier: "npm:^5.2.1" + ethers: "npm:^6.15.0" + jest: "npm:29.7.0" + joi: "npm:^17.13.3" + jsonwebtoken: "npm:^9.0.2" + jwt-decode: "npm:^4.0.0" + lodash: "npm:^4.17.21" + nock: "npm:^13.5.1" + passport: "npm:^0.7.0" + passport-jwt: "npm:^4.0.1" + prettier: "npm:^3.4.2" + reflect-metadata: "npm:^0.2.2" + rxjs: "npm:^7.2.0" + source-map-support: "npm:^0.5.20" + ts-jest: "npm:29.2.5" + ts-node: "npm:^10.9.2" + tsconfig-paths: "npm:4.2.0" + typescript: "npm:^5.6.3" + languageName: unknown + linkType: soft + +"@apps/job-launcher-client@workspace:packages/apps/job-launcher/client": + version: 0.0.0-use.local + resolution: "@apps/job-launcher-client@workspace:packages/apps/job-launcher/client" + dependencies: + "@emotion/react": "npm:^11.10.5" + "@emotion/styled": "npm:^11.10.5" + "@hcaptcha/react-hcaptcha": "npm:^1.10.1" + "@human-protocol/sdk": "workspace:*" + "@mui/icons-material": "npm:^7.0.1" + "@mui/lab": "npm:^5.0.0-alpha.141" + "@mui/material": "npm:^5.16.7" + "@mui/system": "npm:^5.15.14" + "@mui/x-date-pickers": "npm:^7.23.6" + "@reduxjs/toolkit": "npm:^2.5.0" + "@stripe/react-stripe-js": "npm:^3.0.0" + "@stripe/stripe-js": "npm:^4.2.0" + "@tanstack/query-sync-storage-persister": "npm:^5.68.0" + "@tanstack/react-query": "npm:^5.67.2" + "@tanstack/react-query-persist-client": "npm:^5.80.7" + "@types/file-saver": "npm:^2.0.7" + "@types/react": "npm:^18.3.12" + "@types/react-dom": "npm:^18.3.1" + "@types/xml2js": "npm:^0.4.14" + "@vitejs/plugin-react": "npm:^4.2.1" + axios: "npm:^1.1.3" + copy-to-clipboard: "npm:^3.3.3" + dayjs: "npm:^1.11.12" + decimal.js: "npm:^10.6.0" + eslint: "npm:^8.55.0" + eslint-config-react-app: "npm:^7.0.1" + eslint-import-resolver-typescript: "npm:^3.7.0" + eslint-plugin-import: "npm:^2.29.0" + eslint-plugin-react: "npm:^7.34.3" + eslint-plugin-react-hooks: "npm:^5.1.0" + ethers: "npm:^6.15.0" + file-saver: "npm:^2.0.5" + formik: "npm:^2.4.2" + jwt-decode: "npm:^4.0.0" + prettier: "npm:^3.4.2" + react: "npm:^18.3.1" + react-dom: "npm:^18.3.1" + react-redux: "npm:^9.1.0" + react-router-dom: "npm:^6.14.1" + recharts: "npm:^2.7.2" + resize-observer-polyfill: "npm:^1.5.1" + serve: "npm:^14.2.4" + swr: "npm:^2.2.4" + typescript: "npm:^5.6.3" + viem: "npm:2.x" + vite: "npm:^6.2.4" + vite-plugin-node-polyfills: "npm:^0.23.0" + wagmi: "npm:^2.14.6" + xml2js: "npm:^0.6.2" + yup: "npm:^1.6.1" + languageName: unknown + linkType: soft + +"@apps/job-launcher-server@workspace:packages/apps/job-launcher/server": + version: 0.0.0-use.local + resolution: "@apps/job-launcher-server@workspace:packages/apps/job-launcher/server" + dependencies: + "@faker-js/faker": "npm:^9.5.0" + "@golevelup/ts-jest": "npm:^0.6.1" + "@google-cloud/storage": "npm:^7.15.0" + "@google-cloud/vision": "npm:^4.3.2" + "@human-protocol/logger": "workspace:*" + "@human-protocol/sdk": "workspace:*" + "@nestjs/axios": "npm:^3.1.2" + "@nestjs/cli": "npm:^10.3.2" + "@nestjs/common": "npm:^10.2.7" + "@nestjs/config": "npm:^3.1.1" + "@nestjs/core": "npm:^10.3.10" + "@nestjs/jwt": "npm:^10.2.0" + "@nestjs/passport": "npm:^10.0.0" + "@nestjs/platform-express": "npm:^10.3.10" + "@nestjs/schedule": "npm:^4.0.1" + "@nestjs/schematics": "npm:^11.0.2" + "@nestjs/swagger": "npm:^7.4.2" + "@nestjs/terminus": "npm:^11.0.0" + "@nestjs/testing": "npm:^10.4.6" + "@nestjs/throttler": "npm:^6.4.0" + "@nestjs/typeorm": "npm:^10.0.1" + "@sendgrid/mail": "npm:^8.1.3" + "@types/bcrypt": "npm:^5.0.2" + "@types/express": "npm:^4.17.13" + "@types/jest": "npm:29.5.12" + "@types/node": "npm:22.10.5" + "@types/passport-jwt": "npm:^4.0.1" + "@types/uuid": "npm:^10.0.0" + "@types/xml2js": "npm:0.4.14" + "@types/zxcvbn": "npm:4.4.5" + "@typescript-eslint/eslint-plugin": "npm:^5.0.0" + "@typescript-eslint/parser": "npm:^5.0.0" + async-mutex: "npm:^0.5.0" + axios: "npm:^1.7.2" + bcrypt: "npm:^5.1.1" + body-parser: "npm:^1.20.3" + class-transformer: "npm:^0.5.1" + class-validator: "npm:0.14.1" + decimal.js: "npm:^10.6.0" + dotenv: "npm:^17.2.2" + eslint: "npm:^8.55.0" + eslint-config-prettier: "npm:^9.1.0" + eslint-plugin-prettier: "npm:^5.2.1" + helmet: "npm:^7.1.0" + jest: "npm:29.7.0" + joi: "npm:^17.13.3" + json-stable-stringify: "npm:^1.2.1" + minio: "npm:7.1.3" + nestjs-minio-client: "npm:^2.2.0" + node-cache: "npm:^5.1.2" + passport: "npm:^0.7.0" + passport-jwt: "npm:^4.0.1" + pg: "npm:8.13.1" + prettier: "npm:^3.4.2" + reflect-metadata: "npm:^0.2.2" + rxjs: "npm:^7.2.0" + source-map-support: "npm:^0.5.20" + stripe: "npm:^17.7.0" + ts-jest: "npm:29.2.5" + ts-node: "npm:^10.9.2" + tsconfig-paths: "npm:4.2.0" + typeorm: "npm:^0.3.25" + typeorm-naming-strategies: "npm:^4.1.0" + typescript: "npm:^5.6.3" + validator: "npm:^13.12.0" + zxcvbn: "npm:^4.4.2" + languageName: unknown + linkType: soft + +"@apps/reputation-oracle@workspace:packages/apps/reputation-oracle/server": + version: 0.0.0-use.local + resolution: "@apps/reputation-oracle@workspace:packages/apps/reputation-oracle/server" + dependencies: + "@eslint/js": "npm:^9.33.0" + "@faker-js/faker": "npm:^9.4.0" + "@golevelup/ts-jest": "npm:^0.6.1" + "@human-protocol/core": "workspace:*" + "@human-protocol/logger": "workspace:*" + "@human-protocol/sdk": "workspace:*" + "@nestjs/axios": "npm:^3.1.3" + "@nestjs/cli": "npm:^10.3.2" + "@nestjs/common": "npm:^10.2.7" + "@nestjs/config": "npm:^3.1.1" + "@nestjs/core": "npm:^10.3.10" + "@nestjs/jwt": "npm:^10.2.0" + "@nestjs/passport": "npm:^10.0.0" + "@nestjs/platform-express": "npm:^10.3.10" + "@nestjs/schedule": "npm:^4.0.1" + "@nestjs/schematics": "npm:^11.0.2" + "@nestjs/swagger": "npm:^7.4.2" + "@nestjs/terminus": "npm:^11.0.0" + "@nestjs/testing": "npm:^10.4.6" + "@nestjs/typeorm": "npm:^10.0.1" + "@sendgrid/mail": "npm:^8.1.3" + "@slack/bolt": "npm:^4.2.1" + "@slack/web-api": "npm:^7.9.1" + "@slack/webhook": "npm:^7.0.5" + "@types/bcrypt": "npm:^5.0.2" + "@types/express": "npm:^4.17.13" + "@types/jest": "npm:29.5.12" + "@types/lodash": "npm:^4.17.14" + "@types/node": "npm:22.10.5" + "@types/passport-jwt": "npm:^4.0.1" + "@types/uuid": "npm:^10.0.0" + "@types/zxcvbn": "npm:4.4.5" + axios: "npm:^1.8.1" + bcrypt: "npm:^5.1.1" + body-parser: "npm:^1.20.3" + class-transformer: "npm:^0.5.1" + class-validator: "npm:^0.14.1" + dotenv: "npm:^17.2.2" + eslint: "npm:^9.33.0" + eslint-config-prettier: "npm:^10.1.8" + eslint-import-resolver-typescript: "npm:^4.4.4" + eslint-plugin-import: "npm:^2.32.0" + eslint-plugin-prettier: "npm:^5.5.4" + ethers: "npm:~6.15.0" + globals: "npm:^16.3.0" + helmet: "npm:^7.1.0" + jest: "npm:29.7.0" + joi: "npm:^17.13.3" + json-stable-stringify: "npm:^1.2.1" + lodash: "npm:^4.17.21" + minio: "npm:7.1.3" + nock: "npm:^14.0.3" + passport: "npm:^0.7.0" + passport-jwt: "npm:^4.0.1" + pg: "npm:8.13.1" + prettier: "npm:^3.4.2" + reflect-metadata: "npm:^0.2.2" + rxjs: "npm:^7.2.0" + ts-jest: "npm:29.2.5" + ts-node: "npm:^10.9.2" + tsconfig-paths: "npm:^4.2.0" + type-fest: "npm:^4.37.0" + typeorm: "npm:^0.3.25" + typeorm-naming-strategies: "npm:^4.1.0" + typescript: "npm:^5.9.2" + typescript-eslint: "npm:^8.39.1" + uuid: "npm:^11.1.0" + validator: "npm:^13.12.0" + zxcvbn: "npm:^4.4.2" + languageName: unknown + linkType: soft + +"@apps/staking-dashboard-client@workspace:packages/apps/staking": + version: 0.0.0-use.local + resolution: "@apps/staking-dashboard-client@workspace:packages/apps/staking" + dependencies: + "@human-protocol/sdk": "npm:*" + "@mui/icons-material": "npm:^7.0.1" + "@mui/material": "npm:^5.16.7" + "@mui/x-data-grid": "npm:^8.7.0" + "@tanstack/query-sync-storage-persister": "npm:^5.68.0" + "@tanstack/react-query": "npm:^5.67.2" + "@tanstack/react-query-persist-client": "npm:^5.80.7" + "@types/react": "npm:^18.3.12" + "@types/react-dom": "npm:^18.3.1" + "@types/react-router-dom": "npm:^5.3.3" + "@typescript-eslint/eslint-plugin": "npm:^7.13.1" + "@typescript-eslint/parser": "npm:^7.13.1" + "@vitejs/plugin-react": "npm:^4.3.1" + axios: "npm:^1.7.2" + eslint: "npm:^8.57.0" + eslint-plugin-react-hooks: "npm:^5.1.0" + eslint-plugin-react-refresh: "npm:^0.4.11" + ethers: "npm:^6.15.0" + prettier: "npm:^3.4.2" + react: "npm:^18.3.1" + react-dom: "npm:^18.3.1" + react-router-dom: "npm:^6.24.1" + sass: "npm:^1.89.2" + serve: "npm:^14.2.4" + typescript: "npm:^5.6.3" + viem: "npm:2.x" + vite: "npm:^6.2.4" + vite-plugin-node-polyfills: "npm:^0.23.0" + wagmi: "npm:^2.14.6" + languageName: unknown + linkType: soft + +"@ardatan/sync-fetch@npm:^0.0.1": + version: 0.0.1 + resolution: "@ardatan/sync-fetch@npm:0.0.1" + dependencies: + node-fetch: "npm:^2.6.1" + checksum: 10c0/cd69134005ef5ea570d55631c8be59b593e2dda2207f616d30618f948af6ee5d227b857aefd56c535e8f7f3ade47083e4e7795b5ee014a6732011c6e5f9eb08f + languageName: node + linkType: hard + +"@asamuzakjp/css-color@npm:^3.1.2": + version: 3.1.7 + resolution: "@asamuzakjp/css-color@npm:3.1.7" + dependencies: + "@csstools/css-calc": "npm:^2.1.3" + "@csstools/css-color-parser": "npm:^3.0.9" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + lru-cache: "npm:^10.4.3" + checksum: 10c0/ac70af38c9b9d972941fe9dbed5221118077bc8f217617edbd534d9c7c281fd2c4023d0f0daa349d57b895cb73430d67d509b722226294bad2910a81d9439e91 + languageName: node + linkType: hard + +"@automapper/classes@npm:^8.8.1": + version: 8.8.1 + resolution: "@automapper/classes@npm:8.8.1" + peerDependencies: + "@automapper/core": 8.8.1 + reflect-metadata: ~0.1.13 + checksum: 10c0/f1d258e2a41a2fab2cfdea0385294d4319df00dfb0db07994d9e62722cd84a27763aedf8aca59b4f7cb580ae0e92533a9dff8e8a15e2243642dfc4b4365f01ed + languageName: node + linkType: hard + +"@automapper/core@npm:^8.8.1": + version: 8.8.1 + resolution: "@automapper/core@npm:8.8.1" + checksum: 10c0/2b724ba2bcda476dcffb5f26c8552c7b339ff25fe9699a7a0f025aaa5861ad073253df21368d7aa475e1641374edf54edfd426e23c4e7b35135e04c7203732ad + languageName: node + linkType: hard + +"@automapper/nestjs@npm:^8.8.1": + version: 8.8.1 + resolution: "@automapper/nestjs@npm:8.8.1" + peerDependencies: + "@automapper/core": 8.8.1 + "@nestjs/common": ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 + "@nestjs/core": ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 + checksum: 10c0/a05842e3a7511b67e6a79df517b5a86c0c9faebbd8877de2e8af5537746933aafe1a8a88d58dd096b464c73f25657813d87ab3ac2b97cc8a393acd5ed5e12640 + languageName: node + linkType: hard + +"@aws-crypto/crc32@npm:5.2.0": + version: 5.2.0 + resolution: "@aws-crypto/crc32@npm:5.2.0" + dependencies: + "@aws-crypto/util": "npm:^5.2.0" + "@aws-sdk/types": "npm:^3.222.0" + tslib: "npm:^2.6.2" + checksum: 10c0/eab9581d3363af5ea498ae0e72de792f54d8890360e14a9d8261b7b5c55ebe080279fb2556e07994d785341cdaa99ab0b1ccf137832b53b5904cd6928f2b094b + languageName: node + linkType: hard + +"@aws-crypto/sha256-browser@npm:5.2.0": + version: 5.2.0 + resolution: "@aws-crypto/sha256-browser@npm:5.2.0" + dependencies: + "@aws-crypto/sha256-js": "npm:^5.2.0" + "@aws-crypto/supports-web-crypto": "npm:^5.2.0" + "@aws-crypto/util": "npm:^5.2.0" + "@aws-sdk/types": "npm:^3.222.0" + "@aws-sdk/util-locate-window": "npm:^3.0.0" + "@smithy/util-utf8": "npm:^2.0.0" + tslib: "npm:^2.6.2" + checksum: 10c0/05f6d256794df800fe9aef5f52f2ac7415f7f3117d461f85a6aecaa4e29e91527b6fd503681a17136fa89e9dd3d916e9c7e4cfb5eba222875cb6c077bdc1d00d + languageName: node + linkType: hard + +"@aws-crypto/sha256-js@npm:1.2.2": + version: 1.2.2 + resolution: "@aws-crypto/sha256-js@npm:1.2.2" + dependencies: + "@aws-crypto/util": "npm:^1.2.2" + "@aws-sdk/types": "npm:^3.1.0" + tslib: "npm:^1.11.1" + checksum: 10c0/f4e8593cfbc48591413f00c744569b21e5ed5fab0e27fa4b59c517f2024ca4f46fab7b3874f2a207ceeef8feefc22d143a82d6c6bfe5303ea717f579d8d7ad0a + languageName: node + linkType: hard + +"@aws-crypto/sha256-js@npm:5.2.0, @aws-crypto/sha256-js@npm:^5.2.0": + version: 5.2.0 + resolution: "@aws-crypto/sha256-js@npm:5.2.0" + dependencies: + "@aws-crypto/util": "npm:^5.2.0" + "@aws-sdk/types": "npm:^3.222.0" + tslib: "npm:^2.6.2" + checksum: 10c0/6c48701f8336341bb104dfde3d0050c89c288051f6b5e9bdfeb8091cf3ffc86efcd5c9e6ff2a4a134406b019c07aca9db608128f8d9267c952578a3108db9fd1 + languageName: node + linkType: hard + +"@aws-crypto/supports-web-crypto@npm:^5.2.0": + version: 5.2.0 + resolution: "@aws-crypto/supports-web-crypto@npm:5.2.0" + dependencies: + tslib: "npm:^2.6.2" + checksum: 10c0/4d2118e29d68ca3f5947f1e37ce1fbb3239a0c569cc938cdc8ab8390d595609b5caf51a07c9e0535105b17bf5c52ea256fed705a07e9681118120ab64ee73af2 + languageName: node + linkType: hard + +"@aws-crypto/util@npm:^1.2.2": + version: 1.2.2 + resolution: "@aws-crypto/util@npm:1.2.2" + dependencies: + "@aws-sdk/types": "npm:^3.1.0" + "@aws-sdk/util-utf8-browser": "npm:^3.0.0" + tslib: "npm:^1.11.1" + checksum: 10c0/ade8843bf13529b1854f64d6bbb23f30b46330743c8866adfd2105d830e30ce837a868eaaf41c4c2381d27e9d225d3a0a7558ee1eee022f0192916e33bfb654c + languageName: node + linkType: hard + +"@aws-crypto/util@npm:^5.2.0": + version: 5.2.0 + resolution: "@aws-crypto/util@npm:5.2.0" + dependencies: + "@aws-sdk/types": "npm:^3.222.0" + "@smithy/util-utf8": "npm:^2.0.0" + tslib: "npm:^2.6.2" + checksum: 10c0/0362d4c197b1fd64b423966945130207d1fe23e1bb2878a18e361f7743c8d339dad3f8729895a29aa34fff6a86c65f281cf5167c4bf253f21627ae80b6dd2951 + languageName: node + linkType: hard + +"@aws-sdk/client-lambda@npm:^3.563.0": + version: 3.804.0 + resolution: "@aws-sdk/client-lambda@npm:3.804.0" + dependencies: + "@aws-crypto/sha256-browser": "npm:5.2.0" + "@aws-crypto/sha256-js": "npm:5.2.0" + "@aws-sdk/core": "npm:3.804.0" + "@aws-sdk/credential-provider-node": "npm:3.804.0" + "@aws-sdk/middleware-host-header": "npm:3.804.0" + "@aws-sdk/middleware-logger": "npm:3.804.0" + "@aws-sdk/middleware-recursion-detection": "npm:3.804.0" + "@aws-sdk/middleware-user-agent": "npm:3.804.0" + "@aws-sdk/region-config-resolver": "npm:3.804.0" + "@aws-sdk/types": "npm:3.804.0" + "@aws-sdk/util-endpoints": "npm:3.804.0" + "@aws-sdk/util-user-agent-browser": "npm:3.804.0" + "@aws-sdk/util-user-agent-node": "npm:3.804.0" + "@smithy/config-resolver": "npm:^4.1.0" + "@smithy/core": "npm:^3.3.1" + "@smithy/eventstream-serde-browser": "npm:^4.0.2" + "@smithy/eventstream-serde-config-resolver": "npm:^4.1.0" + "@smithy/eventstream-serde-node": "npm:^4.0.2" + "@smithy/fetch-http-handler": "npm:^5.0.2" + "@smithy/hash-node": "npm:^4.0.2" + "@smithy/invalid-dependency": "npm:^4.0.2" + "@smithy/middleware-content-length": "npm:^4.0.2" + "@smithy/middleware-endpoint": "npm:^4.1.2" + "@smithy/middleware-retry": "npm:^4.1.3" + "@smithy/middleware-serde": "npm:^4.0.3" + "@smithy/middleware-stack": "npm:^4.0.2" + "@smithy/node-config-provider": "npm:^4.0.2" + "@smithy/node-http-handler": "npm:^4.0.4" + "@smithy/protocol-http": "npm:^5.1.0" + "@smithy/smithy-client": "npm:^4.2.2" + "@smithy/types": "npm:^4.2.0" + "@smithy/url-parser": "npm:^4.0.2" + "@smithy/util-base64": "npm:^4.0.0" + "@smithy/util-body-length-browser": "npm:^4.0.0" + "@smithy/util-body-length-node": "npm:^4.0.0" + "@smithy/util-defaults-mode-browser": "npm:^4.0.10" + "@smithy/util-defaults-mode-node": "npm:^4.0.10" + "@smithy/util-endpoints": "npm:^3.0.2" + "@smithy/util-middleware": "npm:^4.0.2" + "@smithy/util-retry": "npm:^4.0.3" + "@smithy/util-stream": "npm:^4.2.0" + "@smithy/util-utf8": "npm:^4.0.0" + "@smithy/util-waiter": "npm:^4.0.3" + tslib: "npm:^2.6.2" + checksum: 10c0/bf0f607b01ef70dba2ca4a310cb8765d1a0e24630875709ec3006a1cbc92afb7373505fe88b9a9c9a2aab41b2701b496fe7ef6b559ce98caac94174965e3deee + languageName: node + linkType: hard + +"@aws-sdk/client-sso@npm:3.804.0": + version: 3.804.0 + resolution: "@aws-sdk/client-sso@npm:3.804.0" + dependencies: + "@aws-crypto/sha256-browser": "npm:5.2.0" + "@aws-crypto/sha256-js": "npm:5.2.0" + "@aws-sdk/core": "npm:3.804.0" + "@aws-sdk/middleware-host-header": "npm:3.804.0" + "@aws-sdk/middleware-logger": "npm:3.804.0" + "@aws-sdk/middleware-recursion-detection": "npm:3.804.0" + "@aws-sdk/middleware-user-agent": "npm:3.804.0" + "@aws-sdk/region-config-resolver": "npm:3.804.0" + "@aws-sdk/types": "npm:3.804.0" + "@aws-sdk/util-endpoints": "npm:3.804.0" + "@aws-sdk/util-user-agent-browser": "npm:3.804.0" + "@aws-sdk/util-user-agent-node": "npm:3.804.0" + "@smithy/config-resolver": "npm:^4.1.0" + "@smithy/core": "npm:^3.3.1" + "@smithy/fetch-http-handler": "npm:^5.0.2" + "@smithy/hash-node": "npm:^4.0.2" + "@smithy/invalid-dependency": "npm:^4.0.2" "@smithy/middleware-content-length": "npm:^4.0.2" "@smithy/middleware-endpoint": "npm:^4.1.2" "@smithy/middleware-retry": "npm:^4.1.3" @@ -3684,1069 +4350,531 @@ __metadata: languageName: node linkType: hard -"@golevelup/ts-jest@npm:^0.6.1": - version: 0.6.2 - resolution: "@golevelup/ts-jest@npm:0.6.2" - checksum: 10c0/91fd477a1bd44913178929a9aecf8f5540208cf78a939b74f52c6804069ba1098b6e134d415b02226fb4be0f621ec16a1bcf1904821f254c009accce8c70ef27 - languageName: node - linkType: hard - -"@google-cloud/paginator@npm:^5.0.0": - version: 5.0.2 - resolution: "@google-cloud/paginator@npm:5.0.2" - dependencies: - arrify: "npm:^2.0.0" - extend: "npm:^3.0.2" - checksum: 10c0/aac4ed986c2b274ac9fdca3f68d5ba6ee95f4c35370b11db25c288bf485352e2ec5df16bf9c3cff554a2e73a07e62f10044d273788df61897b81fe47bb18106d - languageName: node - linkType: hard - -"@google-cloud/projectify@npm:^4.0.0": - version: 4.0.0 - resolution: "@google-cloud/projectify@npm:4.0.0" - checksum: 10c0/0d0a6ceca76a138973fcb3ad577f209acdbd9d9aed1c645b09f98d5e5a258053dbbe6c1f13e6f85310cc0d9308f5f3a84f8fa4f1a132549a68d86174fb21067f - languageName: node - linkType: hard - -"@google-cloud/promisify@npm:<4.1.0": - version: 4.0.0 - resolution: "@google-cloud/promisify@npm:4.0.0" - checksum: 10c0/4332cbd923d7c6943ecdf46f187f1417c84bb9c801525cd74d719c766bfaad650f7964fb74576345f6537b6d6273a4f2992c8d79ebec6c8b8401b23d626b8dd3 - languageName: node - linkType: hard - -"@google-cloud/promisify@npm:^4.0.0": - version: 4.1.0 - resolution: "@google-cloud/promisify@npm:4.1.0" - checksum: 10c0/8b09a79ff33acafac5b4f71b461925e1c5b1a40636057b7e0233214e278d30fab10406597ad86e4037f392f365bdecdbb839a65bdd95a31da0e992a21aaa26e1 - languageName: node - linkType: hard - -"@google-cloud/storage@npm:^7.15.0": - version: 7.16.0 - resolution: "@google-cloud/storage@npm:7.16.0" - dependencies: - "@google-cloud/paginator": "npm:^5.0.0" - "@google-cloud/projectify": "npm:^4.0.0" - "@google-cloud/promisify": "npm:<4.1.0" - abort-controller: "npm:^3.0.0" - async-retry: "npm:^1.3.3" - duplexify: "npm:^4.1.3" - fast-xml-parser: "npm:^4.4.1" - gaxios: "npm:^6.0.2" - google-auth-library: "npm:^9.6.3" - html-entities: "npm:^2.5.2" - mime: "npm:^3.0.0" - p-limit: "npm:^3.0.1" - retry-request: "npm:^7.0.0" - teeny-request: "npm:^9.0.0" - uuid: "npm:^8.0.0" - checksum: 10c0/a2a3f341232415d702c8fb054ec2eecbb6908a613848d7279f0b36db9b556ad93444a77a2f2a4c4c6b3f8901b3e7b2350120408c89b17c0ee17b31867a261462 - languageName: node - linkType: hard - -"@google-cloud/vision@npm:^4.3.2": - version: 4.3.3 - resolution: "@google-cloud/vision@npm:4.3.3" - dependencies: - "@google-cloud/promisify": "npm:^4.0.0" - google-gax: "npm:^4.0.3" - is: "npm:^3.3.0" - checksum: 10c0/335ad7e41ca89a5a3cebf6dc295b3060a3e76f9cc2bf6ec2ec215520ea9e6888c49ceea40b8c4ace647082ee6a9aab218f5a8d8af6f8d31afa8af3f9c22536f1 - languageName: node - linkType: hard - -"@graphprotocol/graph-cli@npm:^0.95.0": - version: 0.95.0 - resolution: "@graphprotocol/graph-cli@npm:0.95.0" - dependencies: - "@float-capital/float-subgraph-uncrashable": "npm:0.0.0-internal-testing.5" - "@oclif/core": "npm:4.0.34" - "@oclif/plugin-autocomplete": "npm:^3.2.11" - "@oclif/plugin-not-found": "npm:^3.2.29" - "@oclif/plugin-warn-if-update-available": "npm:^3.1.24" - "@pinax/graph-networks-registry": "npm:^0.6.5" - "@whatwg-node/fetch": "npm:^0.10.1" - assemblyscript: "npm:0.19.23" - chokidar: "npm:4.0.1" - debug: "npm:4.3.7" - docker-compose: "npm:1.1.0" - fs-extra: "npm:11.2.0" - glob: "npm:11.0.0" - gluegun: "npm:5.2.0" - graphql: "npm:16.9.0" - immutable: "npm:5.0.3" - jayson: "npm:4.1.3" - js-yaml: "npm:4.1.0" - kubo-rpc-client: "npm:^5.0.2" - open: "npm:10.1.0" - prettier: "npm:3.4.2" - semver: "npm:7.6.3" - tmp-promise: "npm:3.0.3" - undici: "npm:7.2.3" - web3-eth-abi: "npm:4.4.1" - yaml: "npm:2.6.1" - bin: - graph: bin/run.js - checksum: 10c0/0a5b0d9ba8ed97986f4877d1f53d8b94afd958a0864dbd52eab17913383f855723c69d93347d921216c0ad7453247470ad2d4543383376926c6d1e001c265a0b - languageName: node - linkType: hard - -"@graphprotocol/graph-ts@npm:^0.38.0": - version: 0.38.0 - resolution: "@graphprotocol/graph-ts@npm:0.38.0" - dependencies: - assemblyscript: "npm:0.27.31" - checksum: 10c0/ab19712281db7ed4a1fe46bf294e1fd8aca2a39f5eff4db904fb9f068b4f1883aa253e5f27447fac35e8ae708a70f5c0d6ee6202d1540b126645fafa9a39afa4 - languageName: node - linkType: hard - -"@graphql-eslint/eslint-plugin@npm:^3.19.1": - version: 3.20.1 - resolution: "@graphql-eslint/eslint-plugin@npm:3.20.1" - dependencies: - "@babel/code-frame": "npm:^7.18.6" - "@graphql-tools/code-file-loader": "npm:^7.3.6" - "@graphql-tools/graphql-tag-pluck": "npm:^7.3.6" - "@graphql-tools/utils": "npm:^9.0.0" - chalk: "npm:^4.1.2" - debug: "npm:^4.3.4" - fast-glob: "npm:^3.2.12" - graphql-config: "npm:^4.4.0" - graphql-depth-limit: "npm:^1.1.0" - lodash.lowercase: "npm:^4.3.0" - tslib: "npm:^2.4.1" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 10c0/30c874e2f6ae845d7b8e016074c4b3b195a493afbff6fee4c61877893ab565d5e358b6424f35cf812b0956c48ed9a48490382ddf1d9eaa169069eb31fb7431a5 - languageName: node - linkType: hard - -"@graphql-tools/batch-execute@npm:^8.5.22": - version: 8.5.22 - resolution: "@graphql-tools/batch-execute@npm:8.5.22" - dependencies: - "@graphql-tools/utils": "npm:^9.2.1" - dataloader: "npm:^2.2.2" - tslib: "npm:^2.4.0" - value-or-promise: "npm:^1.0.12" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10c0/ff5ad8f36844cfa823061e6aa4cb0e5c4e2ebbd716c02c04bc1fdf637799fea760abd9f53083e9ebb038a0aa61263cf6360535776610dbfb9b0981e1deb1fb8a - languageName: node - linkType: hard - -"@graphql-tools/code-file-loader@npm:^7.3.6": - version: 7.3.23 - resolution: "@graphql-tools/code-file-loader@npm:7.3.23" - dependencies: - "@graphql-tools/graphql-tag-pluck": "npm:7.5.2" - "@graphql-tools/utils": "npm:^9.2.1" - globby: "npm:^11.0.3" - tslib: "npm:^2.4.0" - unixify: "npm:^1.0.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10c0/c7a59c9422c20b3deecdaa227a73c900581487f3f13dc4105ffe2e32f4d740b9d9409d4aed2a8f8c78f659f5181f93a20cfbb963994c9902261a1df7486c9bd4 - languageName: node - linkType: hard - -"@graphql-tools/delegate@npm:^9.0.31": - version: 9.0.35 - resolution: "@graphql-tools/delegate@npm:9.0.35" - dependencies: - "@graphql-tools/batch-execute": "npm:^8.5.22" - "@graphql-tools/executor": "npm:^0.0.20" - "@graphql-tools/schema": "npm:^9.0.19" - "@graphql-tools/utils": "npm:^9.2.1" - dataloader: "npm:^2.2.2" - tslib: "npm:^2.5.0" - value-or-promise: "npm:^1.0.12" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10c0/1199ad14ffa1f0e8d6b12102bd78f7b0451ebe802f4bb7b4332a6fc27acf26b5d092b9dc6d656c7595efb0f7fc3bc247ba7fe1bb5317892443f42b27af4c54fc - languageName: node - linkType: hard - -"@graphql-tools/executor-graphql-ws@npm:^0.0.14": - version: 0.0.14 - resolution: "@graphql-tools/executor-graphql-ws@npm:0.0.14" - dependencies: - "@graphql-tools/utils": "npm:^9.2.1" - "@repeaterjs/repeater": "npm:3.0.4" - "@types/ws": "npm:^8.0.0" - graphql-ws: "npm:5.12.1" - isomorphic-ws: "npm:5.0.0" - tslib: "npm:^2.4.0" - ws: "npm:8.13.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10c0/35619da6da45320ea53433018c4e2aa3ceab5fed097b9b51b6151007817139c9cb9f554d44a6fc51185d3ba829824cad9758f6cd98ead052a75d3d757306400f - languageName: node - linkType: hard - -"@graphql-tools/executor-http@npm:^0.1.7": - version: 0.1.10 - resolution: "@graphql-tools/executor-http@npm:0.1.10" - dependencies: - "@graphql-tools/utils": "npm:^9.2.1" - "@repeaterjs/repeater": "npm:^3.0.4" - "@whatwg-node/fetch": "npm:^0.8.1" - dset: "npm:^3.1.2" - extract-files: "npm:^11.0.0" - meros: "npm:^1.2.1" - tslib: "npm:^2.4.0" - value-or-promise: "npm:^1.0.12" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10c0/db2bb80e10bde0e6e34c3c86ed30c4f3082ba332fba5700d182045c4eb40453e670ea2277426fea31167481ed0b89446644ff106848e397b83e17c61d73218f3 - languageName: node - linkType: hard - -"@graphql-tools/executor-legacy-ws@npm:^0.0.11": - version: 0.0.11 - resolution: "@graphql-tools/executor-legacy-ws@npm:0.0.11" - dependencies: - "@graphql-tools/utils": "npm:^9.2.1" - "@types/ws": "npm:^8.0.0" - isomorphic-ws: "npm:5.0.0" - tslib: "npm:^2.4.0" - ws: "npm:8.13.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10c0/caf03080b125a9c3291a09a19747ffd7d16c99bfa378ee26bbd82d7613efcaa516d684ed74139a70267c68d8b4ff071541a4db4c9a3e9d2ea944d2bf912b6f50 - languageName: node - linkType: hard - -"@graphql-tools/executor@npm:^0.0.20": - version: 0.0.20 - resolution: "@graphql-tools/executor@npm:0.0.20" - dependencies: - "@graphql-tools/utils": "npm:^9.2.1" - "@graphql-typed-document-node/core": "npm:3.2.0" - "@repeaterjs/repeater": "npm:^3.0.4" - tslib: "npm:^2.4.0" - value-or-promise: "npm:^1.0.12" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10c0/c9300ac118040ea1da18f4cc79613292d91b6e5edc312763c5b8a9da79cc3581bc7d43a292120c7b4c71367613c4b21da3e656985dce827fae0503a5fcbcbc71 +"@golevelup/ts-jest@npm:^0.6.1": + version: 0.6.2 + resolution: "@golevelup/ts-jest@npm:0.6.2" + checksum: 10c0/91fd477a1bd44913178929a9aecf8f5540208cf78a939b74f52c6804069ba1098b6e134d415b02226fb4be0f621ec16a1bcf1904821f254c009accce8c70ef27 languageName: node linkType: hard -"@graphql-tools/graphql-file-loader@npm:^7.3.7": - version: 7.5.17 - resolution: "@graphql-tools/graphql-file-loader@npm:7.5.17" +"@google-cloud/paginator@npm:^5.0.0": + version: 5.0.2 + resolution: "@google-cloud/paginator@npm:5.0.2" dependencies: - "@graphql-tools/import": "npm:6.7.18" - "@graphql-tools/utils": "npm:^9.2.1" - globby: "npm:^11.0.3" - tslib: "npm:^2.4.0" - unixify: "npm:^1.0.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10c0/f737f14357731ad01da57755e1cf26ce375b475209d6ab7e4b656b56191a8979d2ab7dd5d1c54a1f11e04374f7a373fa95ea5ec6a001d0cef913ea208fadc65b + arrify: "npm:^2.0.0" + extend: "npm:^3.0.2" + checksum: 10c0/aac4ed986c2b274ac9fdca3f68d5ba6ee95f4c35370b11db25c288bf485352e2ec5df16bf9c3cff554a2e73a07e62f10044d273788df61897b81fe47bb18106d languageName: node linkType: hard -"@graphql-tools/graphql-tag-pluck@npm:7.5.2, @graphql-tools/graphql-tag-pluck@npm:^7.3.6": - version: 7.5.2 - resolution: "@graphql-tools/graphql-tag-pluck@npm:7.5.2" - dependencies: - "@babel/parser": "npm:^7.16.8" - "@babel/plugin-syntax-import-assertions": "npm:^7.20.0" - "@babel/traverse": "npm:^7.16.8" - "@babel/types": "npm:^7.16.8" - "@graphql-tools/utils": "npm:^9.2.1" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10c0/86d9558cdd64526dd8ff8c3fdcb8c242c00911fac856ea7c8d6e437a13a1ee38aea44a55c586bcba13481928f45cd3e2006712cc750a8ba5a3d43e7be6097ea8 +"@google-cloud/projectify@npm:^4.0.0": + version: 4.0.0 + resolution: "@google-cloud/projectify@npm:4.0.0" + checksum: 10c0/0d0a6ceca76a138973fcb3ad577f209acdbd9d9aed1c645b09f98d5e5a258053dbbe6c1f13e6f85310cc0d9308f5f3a84f8fa4f1a132549a68d86174fb21067f languageName: node linkType: hard -"@graphql-tools/import@npm:6.7.18": - version: 6.7.18 - resolution: "@graphql-tools/import@npm:6.7.18" - dependencies: - "@graphql-tools/utils": "npm:^9.2.1" - resolve-from: "npm:5.0.0" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10c0/d33e37a1879dd43ac2851c9bac2f2873c58bb3687f1c06e159760dbb5e540ef074d688df70cc6dbd3ee5de48d437878df8f65a7c65ae80bd025bf98f2d615732 +"@google-cloud/promisify@npm:<4.1.0": + version: 4.0.0 + resolution: "@google-cloud/promisify@npm:4.0.0" + checksum: 10c0/4332cbd923d7c6943ecdf46f187f1417c84bb9c801525cd74d719c766bfaad650f7964fb74576345f6537b6d6273a4f2992c8d79ebec6c8b8401b23d626b8dd3 languageName: node linkType: hard -"@graphql-tools/json-file-loader@npm:^7.3.7": - version: 7.4.18 - resolution: "@graphql-tools/json-file-loader@npm:7.4.18" - dependencies: - "@graphql-tools/utils": "npm:^9.2.1" - globby: "npm:^11.0.3" - tslib: "npm:^2.4.0" - unixify: "npm:^1.0.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10c0/0628719ae10799d6b07d80b2f6228d62afb53aa52ce2f95e222afa63c829fd3ccf1bec68f334c5a00e11f1a517c768528704bb9290a8e303a60e0286258e100d +"@google-cloud/promisify@npm:^4.0.0": + version: 4.1.0 + resolution: "@google-cloud/promisify@npm:4.1.0" + checksum: 10c0/8b09a79ff33acafac5b4f71b461925e1c5b1a40636057b7e0233214e278d30fab10406597ad86e4037f392f365bdecdbb839a65bdd95a31da0e992a21aaa26e1 languageName: node linkType: hard -"@graphql-tools/load@npm:^7.5.5": - version: 7.8.14 - resolution: "@graphql-tools/load@npm:7.8.14" +"@google-cloud/storage@npm:^7.15.0": + version: 7.16.0 + resolution: "@google-cloud/storage@npm:7.16.0" dependencies: - "@graphql-tools/schema": "npm:^9.0.18" - "@graphql-tools/utils": "npm:^9.2.1" - p-limit: "npm:3.1.0" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10c0/1fa036ac596ccf48f350aa545d108c173184d9b53247f9e21c0d4ba96c5cba4a0b44281f9154f122e1e8e9d9d6eab93a5b2618ca8a797969bde1e75c1d45e786 + "@google-cloud/paginator": "npm:^5.0.0" + "@google-cloud/projectify": "npm:^4.0.0" + "@google-cloud/promisify": "npm:<4.1.0" + abort-controller: "npm:^3.0.0" + async-retry: "npm:^1.3.3" + duplexify: "npm:^4.1.3" + fast-xml-parser: "npm:^4.4.1" + gaxios: "npm:^6.0.2" + google-auth-library: "npm:^9.6.3" + html-entities: "npm:^2.5.2" + mime: "npm:^3.0.0" + p-limit: "npm:^3.0.1" + retry-request: "npm:^7.0.0" + teeny-request: "npm:^9.0.0" + uuid: "npm:^8.0.0" + checksum: 10c0/a2a3f341232415d702c8fb054ec2eecbb6908a613848d7279f0b36db9b556ad93444a77a2f2a4c4c6b3f8901b3e7b2350120408c89b17c0ee17b31867a261462 languageName: node linkType: hard -"@graphql-tools/merge@npm:^8.2.6, @graphql-tools/merge@npm:^8.4.1": - version: 8.4.2 - resolution: "@graphql-tools/merge@npm:8.4.2" +"@google-cloud/vision@npm:^4.3.2": + version: 4.3.3 + resolution: "@google-cloud/vision@npm:4.3.3" dependencies: - "@graphql-tools/utils": "npm:^9.2.1" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10c0/2df55222b48e010e683572f456cf265aabae5748c59f7c1260c66dec9794b7a076d3706f04da969b77f0a32c7ccb4551fee30125931d3fe9c98a8806aae9a3f4 + "@google-cloud/promisify": "npm:^4.0.0" + google-gax: "npm:^4.0.3" + is: "npm:^3.3.0" + checksum: 10c0/335ad7e41ca89a5a3cebf6dc295b3060a3e76f9cc2bf6ec2ec215520ea9e6888c49ceea40b8c4ace647082ee6a9aab218f5a8d8af6f8d31afa8af3f9c22536f1 languageName: node linkType: hard -"@graphql-tools/schema@npm:^9.0.18, @graphql-tools/schema@npm:^9.0.19": - version: 9.0.19 - resolution: "@graphql-tools/schema@npm:9.0.19" +"@graphprotocol/graph-cli@npm:^0.95.0": + version: 0.95.0 + resolution: "@graphprotocol/graph-cli@npm:0.95.0" dependencies: - "@graphql-tools/merge": "npm:^8.4.1" - "@graphql-tools/utils": "npm:^9.2.1" - tslib: "npm:^2.4.0" - value-or-promise: "npm:^1.0.12" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10c0/42fd8ca8d3c8d60b583077c201980518482ff0cd5ed0c1f14bd9b835a2689ad41d02cbd3478f7d7dea7aec1227f7639fd5deb5e6360852a2e542b96b44bfb7a4 + "@float-capital/float-subgraph-uncrashable": "npm:0.0.0-internal-testing.5" + "@oclif/core": "npm:4.0.34" + "@oclif/plugin-autocomplete": "npm:^3.2.11" + "@oclif/plugin-not-found": "npm:^3.2.29" + "@oclif/plugin-warn-if-update-available": "npm:^3.1.24" + "@pinax/graph-networks-registry": "npm:^0.6.5" + "@whatwg-node/fetch": "npm:^0.10.1" + assemblyscript: "npm:0.19.23" + chokidar: "npm:4.0.1" + debug: "npm:4.3.7" + docker-compose: "npm:1.1.0" + fs-extra: "npm:11.2.0" + glob: "npm:11.0.0" + gluegun: "npm:5.2.0" + graphql: "npm:16.9.0" + immutable: "npm:5.0.3" + jayson: "npm:4.1.3" + js-yaml: "npm:4.1.0" + kubo-rpc-client: "npm:^5.0.2" + open: "npm:10.1.0" + prettier: "npm:3.4.2" + semver: "npm:7.6.3" + tmp-promise: "npm:3.0.3" + undici: "npm:7.2.3" + web3-eth-abi: "npm:4.4.1" + yaml: "npm:2.6.1" + bin: + graph: bin/run.js + checksum: 10c0/0a5b0d9ba8ed97986f4877d1f53d8b94afd958a0864dbd52eab17913383f855723c69d93347d921216c0ad7453247470ad2d4543383376926c6d1e001c265a0b languageName: node linkType: hard -"@graphql-tools/url-loader@npm:^7.9.7": - version: 7.17.18 - resolution: "@graphql-tools/url-loader@npm:7.17.18" +"@graphprotocol/graph-ts@npm:^0.38.0": + version: 0.38.0 + resolution: "@graphprotocol/graph-ts@npm:0.38.0" dependencies: - "@ardatan/sync-fetch": "npm:^0.0.1" - "@graphql-tools/delegate": "npm:^9.0.31" - "@graphql-tools/executor-graphql-ws": "npm:^0.0.14" - "@graphql-tools/executor-http": "npm:^0.1.7" - "@graphql-tools/executor-legacy-ws": "npm:^0.0.11" - "@graphql-tools/utils": "npm:^9.2.1" - "@graphql-tools/wrap": "npm:^9.4.2" - "@types/ws": "npm:^8.0.0" - "@whatwg-node/fetch": "npm:^0.8.0" - isomorphic-ws: "npm:^5.0.0" - tslib: "npm:^2.4.0" - value-or-promise: "npm:^1.0.11" - ws: "npm:^8.12.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10c0/963153fde3389f3e44de63c8bca3ce43c85c6ef0f9c5feb56b24d9146f4bf4fef84bebe44a961acc0e0aa0a48081add24684404b83b84bbb9f5e3fcdbc131cae + assemblyscript: "npm:0.27.31" + checksum: 10c0/ab19712281db7ed4a1fe46bf294e1fd8aca2a39f5eff4db904fb9f068b4f1883aa253e5f27447fac35e8ae708a70f5c0d6ee6202d1540b126645fafa9a39afa4 languageName: node linkType: hard -"@graphql-tools/utils@npm:^9.0.0, @graphql-tools/utils@npm:^9.2.1": - version: 9.2.1 - resolution: "@graphql-tools/utils@npm:9.2.1" +"@graphql-eslint/eslint-plugin@npm:^3.19.1": + version: 3.20.1 + resolution: "@graphql-eslint/eslint-plugin@npm:3.20.1" dependencies: - "@graphql-typed-document-node/core": "npm:^3.1.1" - tslib: "npm:^2.4.0" + "@babel/code-frame": "npm:^7.18.6" + "@graphql-tools/code-file-loader": "npm:^7.3.6" + "@graphql-tools/graphql-tag-pluck": "npm:^7.3.6" + "@graphql-tools/utils": "npm:^9.0.0" + chalk: "npm:^4.1.2" + debug: "npm:^4.3.4" + fast-glob: "npm:^3.2.12" + graphql-config: "npm:^4.4.0" + graphql-depth-limit: "npm:^1.1.0" + lodash.lowercase: "npm:^4.3.0" + tslib: "npm:^2.4.1" peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10c0/37a7bd7e14d28ff1bacc007dca84bc6cef2d7d7af9a547b5dbe52fcd134afddd6d4a7b2148cfbaff5ddba91a868453d597da77bd0457fb0be15928f916901606 + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/30c874e2f6ae845d7b8e016074c4b3b195a493afbff6fee4c61877893ab565d5e358b6424f35cf812b0956c48ed9a48490382ddf1d9eaa169069eb31fb7431a5 languageName: node linkType: hard -"@graphql-tools/wrap@npm:^9.4.2": - version: 9.4.2 - resolution: "@graphql-tools/wrap@npm:9.4.2" +"@graphql-tools/batch-execute@npm:^8.5.22": + version: 8.5.22 + resolution: "@graphql-tools/batch-execute@npm:8.5.22" dependencies: - "@graphql-tools/delegate": "npm:^9.0.31" - "@graphql-tools/schema": "npm:^9.0.18" "@graphql-tools/utils": "npm:^9.2.1" + dataloader: "npm:^2.2.2" tslib: "npm:^2.4.0" value-or-promise: "npm:^1.0.12" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10c0/6b0aa1a78af8280c7356e2841156a6708a9a147e5991afae9586046ef000b8d08e6d0405dceb10ffbfb0c208a97a527a16d5f04ee2fbf99f6eefe98fe6037292 - languageName: node - linkType: hard - -"@graphql-typed-document-node/core@npm:3.2.0, @graphql-typed-document-node/core@npm:^3.1.1, @graphql-typed-document-node/core@npm:^3.2.0": - version: 3.2.0 - resolution: "@graphql-typed-document-node/core@npm:3.2.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10c0/94e9d75c1f178bbae8d874f5a9361708a3350c8def7eaeb6920f2c820e82403b7d4f55b3735856d68e145e86c85cbfe2adc444fdc25519cd51f108697e99346c - languageName: node - linkType: hard - -"@grpc/grpc-js@npm:^1.10.9": - version: 1.13.3 - resolution: "@grpc/grpc-js@npm:1.13.3" - dependencies: - "@grpc/proto-loader": "npm:^0.7.13" - "@js-sdsl/ordered-map": "npm:^4.4.2" - checksum: 10c0/1d4e5504a62c5d65be783f6edce24d5fdd101b1d204813e07e6f512e5ca3485138c57caffe4c3cd237e4ed107168ad29237c2629a52e4639b0b2d2947c02bf01 + checksum: 10c0/ff5ad8f36844cfa823061e6aa4cb0e5c4e2ebbd716c02c04bc1fdf637799fea760abd9f53083e9ebb038a0aa61263cf6360535776610dbfb9b0981e1deb1fb8a languageName: node linkType: hard -"@grpc/proto-loader@npm:^0.7.13": - version: 0.7.15 - resolution: "@grpc/proto-loader@npm:0.7.15" +"@graphql-tools/code-file-loader@npm:^7.3.6": + version: 7.3.23 + resolution: "@graphql-tools/code-file-loader@npm:7.3.23" dependencies: - lodash.camelcase: "npm:^4.3.0" - long: "npm:^5.0.0" - protobufjs: "npm:^7.2.5" - yargs: "npm:^17.7.2" - bin: - proto-loader-gen-types: build/bin/proto-loader-gen-types.js - checksum: 10c0/514a134a724b56d73d0a202b7e02c84479da21e364547bacb2f4995ebc0d52412a1a21653add9f004ebd146c1e6eb4bcb0b8846fdfe1bfa8a98ed8f3d203da4a + "@graphql-tools/graphql-tag-pluck": "npm:7.5.2" + "@graphql-tools/utils": "npm:^9.2.1" + globby: "npm:^11.0.3" + tslib: "npm:^2.4.0" + unixify: "npm:^1.0.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/c7a59c9422c20b3deecdaa227a73c900581487f3f13dc4105ffe2e32f4d740b9d9409d4aed2a8f8c78f659f5181f93a20cfbb963994c9902261a1df7486c9bd4 languageName: node linkType: hard -"@hapi/hoek@npm:^9.0.0, @hapi/hoek@npm:^9.3.0": - version: 9.3.0 - resolution: "@hapi/hoek@npm:9.3.0" - checksum: 10c0/a096063805051fb8bba4c947e293c664b05a32b47e13bc654c0dd43813a1cec993bdd8f29ceb838020299e1d0f89f68dc0d62a603c13c9cc8541963f0beca055 +"@graphql-tools/delegate@npm:^9.0.31": + version: 9.0.35 + resolution: "@graphql-tools/delegate@npm:9.0.35" + dependencies: + "@graphql-tools/batch-execute": "npm:^8.5.22" + "@graphql-tools/executor": "npm:^0.0.20" + "@graphql-tools/schema": "npm:^9.0.19" + "@graphql-tools/utils": "npm:^9.2.1" + dataloader: "npm:^2.2.2" + tslib: "npm:^2.5.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/1199ad14ffa1f0e8d6b12102bd78f7b0451ebe802f4bb7b4332a6fc27acf26b5d092b9dc6d656c7595efb0f7fc3bc247ba7fe1bb5317892443f42b27af4c54fc languageName: node linkType: hard -"@hapi/topo@npm:^5.1.0": - version: 5.1.0 - resolution: "@hapi/topo@npm:5.1.0" +"@graphql-tools/executor-graphql-ws@npm:^0.0.14": + version: 0.0.14 + resolution: "@graphql-tools/executor-graphql-ws@npm:0.0.14" dependencies: - "@hapi/hoek": "npm:^9.0.0" - checksum: 10c0/b16b06d9357947149e032bdf10151eb71aea8057c79c4046bf32393cb89d0d0f7ca501c40c0f7534a5ceca078de0700d2257ac855c15e59fe4e00bba2f25c86f + "@graphql-tools/utils": "npm:^9.2.1" + "@repeaterjs/repeater": "npm:3.0.4" + "@types/ws": "npm:^8.0.0" + graphql-ws: "npm:5.12.1" + isomorphic-ws: "npm:5.0.0" + tslib: "npm:^2.4.0" + ws: "npm:8.13.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/35619da6da45320ea53433018c4e2aa3ceab5fed097b9b51b6151007817139c9cb9f554d44a6fc51185d3ba829824cad9758f6cd98ead052a75d3d757306400f languageName: node linkType: hard -"@hcaptcha/loader@npm:^2.0.0": - version: 2.0.0 - resolution: "@hcaptcha/loader@npm:2.0.0" - checksum: 10c0/c69c8e62ccf41cc5cce8f25721b9bd8284e201da608022476dc6d69afbd70512a6f272dd2bfe558c4b5fdbc0ee20fb5f062033c4d556e6d523ecb2448203298f +"@graphql-tools/executor-http@npm:^0.1.7": + version: 0.1.10 + resolution: "@graphql-tools/executor-http@npm:0.1.10" + dependencies: + "@graphql-tools/utils": "npm:^9.2.1" + "@repeaterjs/repeater": "npm:^3.0.4" + "@whatwg-node/fetch": "npm:^0.8.1" + dset: "npm:^3.1.2" + extract-files: "npm:^11.0.0" + meros: "npm:^1.2.1" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/db2bb80e10bde0e6e34c3c86ed30c4f3082ba332fba5700d182045c4eb40453e670ea2277426fea31167481ed0b89446644ff106848e397b83e17c61d73218f3 languageName: node linkType: hard -"@hcaptcha/react-hcaptcha@npm:^0.3.6": - version: 0.3.10 - resolution: "@hcaptcha/react-hcaptcha@npm:0.3.10" +"@graphql-tools/executor-legacy-ws@npm:^0.0.11": + version: 0.0.11 + resolution: "@graphql-tools/executor-legacy-ws@npm:0.0.11" + dependencies: + "@graphql-tools/utils": "npm:^9.2.1" + "@types/ws": "npm:^8.0.0" + isomorphic-ws: "npm:5.0.0" + tslib: "npm:^2.4.0" + ws: "npm:8.13.0" peerDependencies: - react: ">= 16.3.0" - react-dom: ">= 16.3.0" - checksum: 10c0/cb9af880be869baffc0088833b24b8ad2338db997f5a19d4c64f4fd9173d7d339639c2811802d6578d8b2f711a25417ef7f3923e23641cbc31e803d7ac732370 + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/caf03080b125a9c3291a09a19747ffd7d16c99bfa378ee26bbd82d7613efcaa516d684ed74139a70267c68d8b4ff071541a4db4c9a3e9d2ea944d2bf912b6f50 languageName: node linkType: hard -"@hcaptcha/react-hcaptcha@npm:^1.10.1": - version: 1.12.0 - resolution: "@hcaptcha/react-hcaptcha@npm:1.12.0" +"@graphql-tools/executor@npm:^0.0.20": + version: 0.0.20 + resolution: "@graphql-tools/executor@npm:0.0.20" dependencies: - "@babel/runtime": "npm:^7.17.9" - "@hcaptcha/loader": "npm:^2.0.0" + "@graphql-tools/utils": "npm:^9.2.1" + "@graphql-typed-document-node/core": "npm:3.2.0" + "@repeaterjs/repeater": "npm:^3.0.4" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" peerDependencies: - react: ">= 16.3.0" - react-dom: ">= 16.3.0" - checksum: 10c0/58fddf7cbbeb1c9d784a90a4ee76604efd8d0c968d1d256f72d112d95c8d68bbb1255dd4184148e7e43e38491c5614b3747f4d17393a17d320e28935da47f8e8 + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/c9300ac118040ea1da18f4cc79613292d91b6e5edc312763c5b8a9da79cc3581bc7d43a292120c7b4c71367613c4b21da3e656985dce827fae0503a5fcbcbc71 languageName: node linkType: hard -"@hookform/resolvers@npm:^5.1.0": - version: 5.2.1 - resolution: "@hookform/resolvers@npm:5.2.1" +"@graphql-tools/graphql-file-loader@npm:^7.3.7": + version: 7.5.17 + resolution: "@graphql-tools/graphql-file-loader@npm:7.5.17" dependencies: - "@standard-schema/utils": "npm:^0.3.0" + "@graphql-tools/import": "npm:6.7.18" + "@graphql-tools/utils": "npm:^9.2.1" + globby: "npm:^11.0.3" + tslib: "npm:^2.4.0" + unixify: "npm:^1.0.0" peerDependencies: - react-hook-form: ^7.55.0 - checksum: 10c0/e8e48abc188b5139bc444e4495e2fb1680c6aafa31d79c5d7fa4d7d690b0fc2bac1dfbd99213cbc0c6c53c5c3c4e8c4dc28278dd87a3fa0176540795a6f2edde + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/f737f14357731ad01da57755e1cf26ce375b475209d6ab7e4b656b56191a8979d2ab7dd5d1c54a1f11e04374f7a373fa95ea5ec6a001d0cef913ea208fadc65b languageName: node linkType: hard -"@human-protocol/core@workspace:*, @human-protocol/core@workspace:packages/core": - version: 0.0.0-use.local - resolution: "@human-protocol/core@workspace:packages/core" +"@graphql-tools/graphql-tag-pluck@npm:7.5.2, @graphql-tools/graphql-tag-pluck@npm:^7.3.6": + version: 7.5.2 + resolution: "@graphql-tools/graphql-tag-pluck@npm:7.5.2" dependencies: - "@nomicfoundation/hardhat-chai-matchers": "npm:^2.0.7" - "@nomicfoundation/hardhat-ethers": "npm:^3.1.0" - "@nomicfoundation/hardhat-network-helpers": "npm:^1.0.12" - "@nomicfoundation/hardhat-toolbox": "npm:^4.0.0" - "@nomicfoundation/hardhat-verify": "npm:^2.0.11" - "@openzeppelin/contracts": "npm:5.0.2" - "@openzeppelin/contracts-upgradeable": "npm:^4.9.2" - "@openzeppelin/hardhat-upgrades": "npm:^3.9.1" - "@tenderly/hardhat-tenderly": "npm:^2.0.1" - "@typechain/ethers-v6": "npm:^0.5.1" - "@typechain/hardhat": "npm:^9.1.0" - "@types/chai": "npm:^4.3.3" - "@types/mocha": "npm:^10.0.8" - "@types/node": "npm:^22.15.16" - chai: "npm:^4.5.0" - concurrently: "npm:^9.1.2" - eslint: "npm:^8.55.0" - ethers: "npm:~6.15.0" - hardhat: "npm:^2.26.0" - hardhat-abi-exporter: "npm:^2.10.1" - hardhat-contract-sizer: "npm:^2.6.1" - hardhat-dependency-compiler: "npm:^1.2.1" - hardhat-gas-reporter: "npm:^2.0.2" - openpgp: "npm:5.11.2" - prettier: "npm:^3.4.2" - prettier-plugin-solidity: "npm:^1.3.1" - solidity-coverage: "npm:^0.8.16" - tenderly: "npm:^0.9.1" - ts-node: "npm:^10.9.2" - typechain: "npm:^8.3.2" - typescript: "npm:^5.8.3" - xdeployer: "npm:3.1.6" + "@babel/parser": "npm:^7.16.8" + "@babel/plugin-syntax-import-assertions": "npm:^7.20.0" + "@babel/traverse": "npm:^7.16.8" + "@babel/types": "npm:^7.16.8" + "@graphql-tools/utils": "npm:^9.2.1" + tslib: "npm:^2.4.0" peerDependencies: - ethers: ~6.15.0 - languageName: unknown - linkType: soft - -"@human-protocol/dashboard-client@workspace:packages/apps/dashboard/client": - version: 0.0.0-use.local - resolution: "@human-protocol/dashboard-client@workspace:packages/apps/dashboard/client" - dependencies: - "@emotion/react": "npm:^11.11.4" - "@emotion/styled": "npm:^11.11.5" - "@eslint/js": "npm:^9.27.0" - "@human-protocol/sdk": "workspace:*" - "@mui/icons-material": "npm:^7.2.0" - "@mui/material": "npm:^7.2.0" - "@mui/styled-engine-sc": "npm:7.2.0" - "@mui/system": "npm:^7.2.0" - "@mui/x-data-grid": "npm:^8.7.0" - "@mui/x-date-pickers": "npm:^8.7.0" - "@tanstack/react-query": "npm:^5.67.2" - "@types/react": "npm:^18.3.12" - "@types/react-dom": "npm:^18.3.1" - "@types/react-router-dom": "npm:^5.3.3" - "@types/recharts": "npm:^1.8.29" - "@typescript-eslint/eslint-plugin": "npm:^7.2.0" - "@typescript-eslint/parser": "npm:^7.2.0" - "@vitejs/plugin-react": "npm:^4.2.1" - axios: "npm:^1.7.2" - clsx: "npm:^2.1.1" - dayjs: "npm:^1.11.11" - eslint: "npm:^9.27.0" - eslint-plugin-import: "npm:^2.31.0" - eslint-plugin-prettier: "npm:^5.4.0" - eslint-plugin-react: "npm:^7.37.5" - eslint-plugin-react-hooks: "npm:^5.2.0" - eslint-plugin-react-refresh: "npm:^0.4.11" - globals: "npm:^16.2.0" - prettier: "npm:^3.4.2" - react: "npm:^18.3.1" - react-dom: "npm:^18.3.1" - react-number-format: "npm:^5.4.3" - react-router-dom: "npm:^6.23.1" - recharts: "npm:^2.13.0-alpha.4" - sass: "npm:^1.89.2" - simplebar-react: "npm:^3.3.2" - styled-components: "npm:^6.1.11" - swiper: "npm:^11.1.3" - typescript: "npm:^5.6.3" - typescript-eslint: "npm:^8.33.0" - use-debounce: "npm:^10.0.2" - vite: "npm:^6.2.4" - vite-plugin-node-polyfills: "npm:^0.23.0" - zod: "npm:^4.0.17" - zustand: "npm:^4.5.4" - languageName: unknown - linkType: soft + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/86d9558cdd64526dd8ff8c3fdcb8c242c00911fac856ea7c8d6e437a13a1ee38aea44a55c586bcba13481928f45cd3e2006712cc750a8ba5a3d43e7be6097ea8 + languageName: node + linkType: hard -"@human-protocol/dashboard-server@workspace:packages/apps/dashboard/server": - version: 0.0.0-use.local - resolution: "@human-protocol/dashboard-server@workspace:packages/apps/dashboard/server" +"@graphql-tools/import@npm:6.7.18": + version: 6.7.18 + resolution: "@graphql-tools/import@npm:6.7.18" dependencies: - "@human-protocol/core": "workspace:*" - "@human-protocol/logger": "workspace:*" - "@human-protocol/sdk": "workspace:*" - "@nestjs/axios": "npm:^3.1.2" - "@nestjs/cache-manager": "npm:^2.2.2" - "@nestjs/cli": "npm:^10.3.2" - "@nestjs/common": "npm:^10.2.7" - "@nestjs/config": "npm:^3.2.3" - "@nestjs/core": "npm:^10.2.8" - "@nestjs/mapped-types": "npm:*" - "@nestjs/platform-express": "npm:^10.3.10" - "@nestjs/schematics": "npm:^11.0.2" - "@nestjs/testing": "npm:^10.4.6" - "@types/express": "npm:^4.17.13" - "@types/jest": "npm:29.5.1" - "@types/node": "npm:22.10.5" - "@typescript-eslint/eslint-plugin": "npm:^5.0.0" - "@typescript-eslint/parser": "npm:^5.0.0" - axios: "npm:^1.3.1" - cache-manager: "npm:^5.4.0" - cache-manager-redis-yet: "npm:^5.1.5" - dayjs: "npm:^1.11.12" - eslint: "npm:^8.0.1" - eslint-config-prettier: "npm:^9.1.0" - eslint-plugin-prettier: "npm:^5.2.1" - ethers: "npm:~6.15.0" - jest: "npm:29.5.0" - lodash: "npm:^4.17.21" - prettier: "npm:^3.4.2" - reflect-metadata: "npm:^0.2.2" - rxjs: "npm:^7.2.0" - source-map-support: "npm:^0.5.20" - ts-jest: "npm:29.2.5" - ts-node: "npm:^10.0.0" - tsconfig-paths: "npm:4.2.0" - typescript: "npm:^5.6.3" - languageName: unknown - linkType: soft + "@graphql-tools/utils": "npm:^9.2.1" + resolve-from: "npm:5.0.0" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/d33e37a1879dd43ac2851c9bac2f2873c58bb3687f1c06e159760dbb5e540ef074d688df70cc6dbd3ee5de48d437878df8f65a7c65ae80bd025bf98f2d615732 + languageName: node + linkType: hard -"@human-protocol/faucet-client@workspace:packages/apps/faucet/client": - version: 0.0.0-use.local - resolution: "@human-protocol/faucet-client@workspace:packages/apps/faucet/client" +"@graphql-tools/json-file-loader@npm:^7.3.7": + version: 7.4.18 + resolution: "@graphql-tools/json-file-loader@npm:7.4.18" dependencies: - "@human-protocol/sdk": "workspace:*" - "@mui/icons-material": "npm:^7.0.1" - "@mui/material": "npm:^5.16.7" - "@types/react": "npm:^18.3.12" - "@types/react-dom": "npm:^18.3.1" - dotenv: "npm:^17.2.2" - eslint: "npm:^8.55.0" - eslint-config-react-app: "npm:^7.0.1" - eslint-import-resolver-typescript: "npm:^3.7.0" - eslint-plugin-import: "npm:^2.29.0" - eslint-plugin-react: "npm:^7.34.3" - eslint-plugin-react-hooks: "npm:^5.1.0" - prettier: "npm:^3.4.2" - react: "npm:^18.3.1" - react-dom: "npm:^18.3.1" - react-loading-skeleton: "npm:^3.3.1" - react-router-dom: "npm:^6.4.3" - serve: "npm:^14.2.4" - typescript: "npm:^5.8.3" - viem: "npm:2.x" - vite: "npm:^6.2.4" - vite-plugin-node-polyfills: "npm:^0.23.0" - languageName: unknown - linkType: soft + "@graphql-tools/utils": "npm:^9.2.1" + globby: "npm:^11.0.3" + tslib: "npm:^2.4.0" + unixify: "npm:^1.0.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/0628719ae10799d6b07d80b2f6228d62afb53aa52ce2f95e222afa63c829fd3ccf1bec68f334c5a00e11f1a517c768528704bb9290a8e303a60e0286258e100d + languageName: node + linkType: hard -"@human-protocol/faucet-server@workspace:packages/apps/faucet/server": - version: 0.0.0-use.local - resolution: "@human-protocol/faucet-server@workspace:packages/apps/faucet/server" +"@graphql-tools/load@npm:^7.5.5": + version: 7.8.14 + resolution: "@graphql-tools/load@npm:7.8.14" dependencies: - "@human-protocol/sdk": "workspace:*" - "@types/cors": "npm:^2.8.19" - "@types/express": "npm:^4.17.14" - "@types/node": "npm:^22.15.16" - axios: "npm:^1.3.4" - body-parser: "npm:^1.20.0" - concurrently: "npm:^9.1.2" - cors: "npm:^2.8.5" - eslint: "npm:^8.55.0" - express: "npm:^4.21.0" - express-rate-limit: "npm:^7.3.0" - hardhat: "npm:^2.26.0" - jest: "npm:^29.7.0" - node-cache: "npm:^5.1.2" - ts-node: "npm:^10.9.2" - typescript: "npm:^5.8.3" - web3: "npm:^4.12.1" - languageName: unknown - linkType: soft + "@graphql-tools/schema": "npm:^9.0.18" + "@graphql-tools/utils": "npm:^9.2.1" + p-limit: "npm:3.1.0" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/1fa036ac596ccf48f350aa545d108c173184d9b53247f9e21c0d4ba96c5cba4a0b44281f9154f122e1e8e9d9d6eab93a5b2618ca8a797969bde1e75c1d45e786 + languageName: node + linkType: hard -"@human-protocol/fortune-exchange-oracle-client@workspace:packages/apps/fortune/exchange-oracle/client": - version: 0.0.0-use.local - resolution: "@human-protocol/fortune-exchange-oracle-client@workspace:packages/apps/fortune/exchange-oracle/client" +"@graphql-tools/merge@npm:^8.2.6, @graphql-tools/merge@npm:^8.4.1": + version: 8.4.2 + resolution: "@graphql-tools/merge@npm:8.4.2" dependencies: - "@emotion/react": "npm:^11.11.3" - "@emotion/styled": "npm:^11.11.0" - "@human-protocol/sdk": "workspace:^" - "@mui/icons-material": "npm:^7.0.1" - "@mui/material": "npm:^5.16.7" - "@tanstack/query-sync-storage-persister": "npm:^5.68.0" - "@tanstack/react-query": "npm:^5.67.2" - "@tanstack/react-query-persist-client": "npm:^5.80.7" - "@types/react": "npm:^18.3.12" - "@types/react-dom": "npm:^18.3.1" - "@types/react-router-dom": "npm:^5.3.3" - "@typescript-eslint/eslint-plugin": "npm:^7.13.1" - "@typescript-eslint/parser": "npm:^7.13.1" - "@vitejs/plugin-react": "npm:^4.3.1" - axios: "npm:^1.7.2" - eslint: "npm:^8.57.0" - eslint-plugin-react-hooks: "npm:^5.1.0" - eslint-plugin-react-refresh: "npm:^0.4.11" - ethers: "npm:^6.15.0" - prettier: "npm:^3.4.2" - react: "npm:^18.3.1" - react-dom: "npm:^18.3.1" - react-router-dom: "npm:^6.24.1" - serve: "npm:^14.2.4" - typescript: "npm:^5.6.3" - viem: "npm:2.x" - vite: "npm:^6.2.4" - vite-plugin-node-polyfills: "npm:^0.23.0" - wagmi: "npm:^2.14.6" - languageName: unknown - linkType: soft + "@graphql-tools/utils": "npm:^9.2.1" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/2df55222b48e010e683572f456cf265aabae5748c59f7c1260c66dec9794b7a076d3706f04da969b77f0a32c7ccb4551fee30125931d3fe9c98a8806aae9a3f4 + languageName: node + linkType: hard -"@human-protocol/fortune-exchange-oracle-server@workspace:packages/apps/fortune/exchange-oracle/server": - version: 0.0.0-use.local - resolution: "@human-protocol/fortune-exchange-oracle-server@workspace:packages/apps/fortune/exchange-oracle/server" +"@graphql-tools/schema@npm:^9.0.18, @graphql-tools/schema@npm:^9.0.19": + version: 9.0.19 + resolution: "@graphql-tools/schema@npm:9.0.19" dependencies: - "@golevelup/ts-jest": "npm:^0.6.1" - "@human-protocol/logger": "workspace:*" - "@human-protocol/sdk": "workspace:*" - "@nestjs/axios": "npm:^3.1.2" - "@nestjs/cli": "npm:^10.3.2" - "@nestjs/common": "npm:^10.2.7" - "@nestjs/config": "npm:^3.1.1" - "@nestjs/core": "npm:^10.3.10" - "@nestjs/passport": "npm:^10.0.0" - "@nestjs/platform-express": "npm:^10.3.10" - "@nestjs/schedule": "npm:^4.0.1" - "@nestjs/schematics": "npm:^11.0.2" - "@nestjs/swagger": "npm:^7.4.2" - "@nestjs/terminus": "npm:^11.0.0" - "@nestjs/testing": "npm:^10.4.6" - "@nestjs/typeorm": "npm:^10.0.1" - "@types/body-parser": "npm:^1" - "@types/express": "npm:^4.17.13" - "@types/jest": "npm:29.5.12" - "@types/jsonwebtoken": "npm:^9.0.7" - "@types/node": "npm:22.10.5" - "@types/passport": "npm:^0" - "@types/passport-jwt": "npm:^4.0.1" - "@types/pg": "npm:8.11.10" - "@typescript-eslint/eslint-plugin": "npm:^5.0.0" - "@typescript-eslint/parser": "npm:^5.0.0" - axios: "npm:^1.3.1" - body-parser: "npm:^1.20.3" - class-transformer: "npm:^0.5.1" - class-validator: "npm:0.14.1" - dotenv: "npm:^17.2.2" - eslint: "npm:^8.55.0" - eslint-config-prettier: "npm:^9.1.0" - eslint-plugin-prettier: "npm:^5.2.1" - ethers: "npm:~6.15.0" - jest: "npm:29.7.0" - joi: "npm:^17.13.3" - jsonwebtoken: "npm:^9.0.2" - minio: "npm:7.1.3" - passport: "npm:^0.7.0" - passport-jwt: "npm:^4.0.1" - pg: "npm:8.13.1" - prettier: "npm:^3.4.2" - reflect-metadata: "npm:^0.2.2" - rxjs: "npm:^7.2.0" - source-map-support: "npm:^0.5.20" - ts-jest: "npm:29.2.5" - ts-node: "npm:^10.9.2" - tsconfig-paths: "npm:4.2.0" - typeorm: "npm:^0.3.25" - typeorm-naming-strategies: "npm:^4.1.0" - typescript: "npm:^5.6.3" - languageName: unknown - linkType: soft + "@graphql-tools/merge": "npm:^8.4.1" + "@graphql-tools/utils": "npm:^9.2.1" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/42fd8ca8d3c8d60b583077c201980518482ff0cd5ed0c1f14bd9b835a2689ad41d02cbd3478f7d7dea7aec1227f7639fd5deb5e6360852a2e542b96b44bfb7a4 + languageName: node + linkType: hard -"@human-protocol/fortune-recording-oracle@workspace:packages/apps/fortune/recording-oracle": - version: 0.0.0-use.local - resolution: "@human-protocol/fortune-recording-oracle@workspace:packages/apps/fortune/recording-oracle" +"@graphql-tools/url-loader@npm:^7.9.7": + version: 7.17.18 + resolution: "@graphql-tools/url-loader@npm:7.17.18" dependencies: - "@human-protocol/logger": "workspace:*" - "@human-protocol/sdk": "workspace:*" - "@nestjs/axios": "npm:^3.1.2" - "@nestjs/cli": "npm:^10.3.2" - "@nestjs/common": "npm:^10.2.7" - "@nestjs/config": "npm:^3.1.1" - "@nestjs/core": "npm:^10.3.10" - "@nestjs/platform-express": "npm:^10.3.10" - "@nestjs/schematics": "npm:^11.0.2" - "@nestjs/swagger": "npm:^7.4.2" - "@nestjs/testing": "npm:^10.4.6" - "@types/express": "npm:^4.17.13" - "@types/node": "npm:^22.15.16" - axios: "npm:^1.3.1" - body-parser: "npm:^1.20.2" - class-transformer: "npm:^0.5.1" - class-validator: "npm:0.14.1" - dotenv: "npm:^17.2.2" - eslint: "npm:^8.55.0" - helmet: "npm:^7.1.0" - jest: "npm:^29.7.0" - joi: "npm:^17.13.3" - minio: "npm:7.1.3" - prettier: "npm:^3.4.2" - reflect-metadata: "npm:^0.2.2" - rxjs: "npm:^7.2.0" - ts-node: "npm:^10.9.2" - typescript: "npm:^5.8.3" - languageName: unknown - linkType: soft + "@ardatan/sync-fetch": "npm:^0.0.1" + "@graphql-tools/delegate": "npm:^9.0.31" + "@graphql-tools/executor-graphql-ws": "npm:^0.0.14" + "@graphql-tools/executor-http": "npm:^0.1.7" + "@graphql-tools/executor-legacy-ws": "npm:^0.0.11" + "@graphql-tools/utils": "npm:^9.2.1" + "@graphql-tools/wrap": "npm:^9.4.2" + "@types/ws": "npm:^8.0.0" + "@whatwg-node/fetch": "npm:^0.8.0" + isomorphic-ws: "npm:^5.0.0" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.11" + ws: "npm:^8.12.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/963153fde3389f3e44de63c8bca3ce43c85c6ef0f9c5feb56b24d9146f4bf4fef84bebe44a961acc0e0aa0a48081add24684404b83b84bbb9f5e3fcdbc131cae + languageName: node + linkType: hard + +"@graphql-tools/utils@npm:^9.0.0, @graphql-tools/utils@npm:^9.2.1": + version: 9.2.1 + resolution: "@graphql-tools/utils@npm:9.2.1" + dependencies: + "@graphql-typed-document-node/core": "npm:^3.1.1" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/37a7bd7e14d28ff1bacc007dca84bc6cef2d7d7af9a547b5dbe52fcd134afddd6d4a7b2148cfbaff5ddba91a868453d597da77bd0457fb0be15928f916901606 + languageName: node + linkType: hard + +"@graphql-tools/wrap@npm:^9.4.2": + version: 9.4.2 + resolution: "@graphql-tools/wrap@npm:9.4.2" + dependencies: + "@graphql-tools/delegate": "npm:^9.0.31" + "@graphql-tools/schema": "npm:^9.0.18" + "@graphql-tools/utils": "npm:^9.2.1" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/6b0aa1a78af8280c7356e2841156a6708a9a147e5991afae9586046ef000b8d08e6d0405dceb10ffbfb0c208a97a527a16d5f04ee2fbf99f6eefe98fe6037292 + languageName: node + linkType: hard -"@human-protocol/human-app-frontend@workspace:packages/apps/human-app/frontend": - version: 0.0.0-use.local - resolution: "@human-protocol/human-app-frontend@workspace:packages/apps/human-app/frontend" +"@graphql-typed-document-node/core@npm:3.2.0, @graphql-typed-document-node/core@npm:^3.1.1, @graphql-typed-document-node/core@npm:^3.2.0": + version: 3.2.0 + resolution: "@graphql-typed-document-node/core@npm:3.2.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/94e9d75c1f178bbae8d874f5a9361708a3350c8def7eaeb6920f2c820e82403b7d4f55b3735856d68e145e86c85cbfe2adc444fdc25519cd51f108697e99346c + languageName: node + linkType: hard + +"@grpc/grpc-js@npm:^1.10.9": + version: 1.13.3 + resolution: "@grpc/grpc-js@npm:1.13.3" dependencies: - "@emotion/react": "npm:^11.11.3" - "@emotion/styled": "npm:^11.11.0" - "@faker-js/faker": "npm:^9.7.0" - "@fontsource/inter": "npm:^5.0.17" - "@fontsource/roboto": "npm:^5.2.6" - "@hcaptcha/react-hcaptcha": "npm:^0.3.6" - "@hookform/resolvers": "npm:^5.1.0" - "@human-protocol/sdk": "workspace:*" - "@mui/icons-material": "npm:^7.0.1" - "@mui/material": "npm:^5.16.7" - "@mui/system": "npm:^5.15.14" - "@mui/x-date-pickers": "npm:^7.23.6" - "@reown/appkit": "npm:^1.7.11" - "@reown/appkit-adapter-wagmi": "npm:^1.7.11" - "@synaps-io/verify-sdk": "npm:^4.0.45" - "@tanstack/eslint-plugin-query": "npm:^5.60.1" - "@tanstack/react-query": "npm:^5.75.5" - "@tanstack/react-query-devtools": "npm:^5.59.16" - "@types/lodash": "npm:^4.17.12" - "@types/mui-image": "npm:^1.0.5" - "@types/node": "npm:^22.10.5" - "@types/prop-types": "npm:^15" - "@types/react": "npm:^18.3.12" - "@types/react-dom": "npm:^18.3.1" - "@typescript-eslint/eslint-plugin": "npm:^6.20.0" - "@typescript-eslint/parser": "npm:^6.20.0" - "@vercel/style-guide": "npm:^6.0.0" - "@vitejs/plugin-react": "npm:^4.2.1" - "@wagmi/core": "npm:^2.17.1" - date-fns: "npm:^4.1.0" - eslint: "npm:^8.55.0" - eslint-config-prettier: "npm:^9.1.0" - eslint-plugin-prettier: "npm:^5.2.1" - eslint-plugin-react-refresh: "npm:^0.4.11" - ethers: "npm:^6.15.0" - husky: "npm:^9.1.6" - i18next: "npm:^23.8.2" - jsdom: "npm:^25.0.1" - jwt-decode: "npm:^4.0.0" - lint-staged: "npm:^15.4.3" - lodash: "npm:^4.17.21" - material-react-table: "npm:3.0.1" - mui-image: "npm:^1.0.7" - notistack: "npm:^3.0.1" - prettier: "npm:^3.4.2" - prop-types: "npm:^15.8.1" - query-string: "npm:^9.0.0" - react: "npm:^18.3.1" - react-dom: "npm:^18.3.1" - react-hook-form: "npm:^7.62.0" - react-i18next: "npm:^15.1.0" - react-imask: "npm:^7.4.0" - react-number-format: "npm:^5.4.3" - react-router-dom: "npm:^6.22.0" - serve: "npm:^14.2.4" - typescript: "npm:^5.6.3" - viem: "npm:^2.31.4" - vite: "npm:^6.2.4" - vite-plugin-svgr: "npm:^4.2.0" - vitest: "npm:^3.1.1" - wagmi: "npm:^2.15.6" - zod: "npm:^4.0.17" - zustand: "npm:^4.5.0" - languageName: unknown - linkType: soft + "@grpc/proto-loader": "npm:^0.7.13" + "@js-sdsl/ordered-map": "npm:^4.4.2" + checksum: 10c0/1d4e5504a62c5d65be783f6edce24d5fdd101b1d204813e07e6f512e5ca3485138c57caffe4c3cd237e4ed107168ad29237c2629a52e4639b0b2d2947c02bf01 + languageName: node + linkType: hard -"@human-protocol/human-app-server@workspace:packages/apps/human-app/server": - version: 0.0.0-use.local - resolution: "@human-protocol/human-app-server@workspace:packages/apps/human-app/server" +"@grpc/proto-loader@npm:^0.7.13": + version: 0.7.15 + resolution: "@grpc/proto-loader@npm:0.7.15" dependencies: - "@automapper/classes": "npm:^8.8.1" - "@automapper/core": "npm:^8.8.1" - "@automapper/nestjs": "npm:^8.8.1" - "@human-protocol/core": "workspace:*" - "@human-protocol/logger": "workspace:*" - "@human-protocol/sdk": "workspace:*" - "@nestjs/axios": "npm:^3.1.2" - "@nestjs/cache-manager": "npm:^2.2.1" - "@nestjs/cli": "npm:^10.3.2" - "@nestjs/common": "npm:^10.2.7" - "@nestjs/config": "npm:^3.1.1" - "@nestjs/core": "npm:^10.3.10" - "@nestjs/passport": "npm:^10.0.0" - "@nestjs/platform-express": "npm:^10.3.10" - "@nestjs/schedule": "npm:^4.0.1" - "@nestjs/schematics": "npm:^11.0.2" - "@nestjs/swagger": "npm:^7.4.2" - "@nestjs/terminus": "npm:^11.0.0" - "@nestjs/testing": "npm:^10.4.6" - "@types/express": "npm:^4.17.13" - "@types/jest": "npm:29.5.12" - "@types/jsonwebtoken": "npm:^9.0.7" - "@types/lodash": "npm:^4.17.14" - "@types/node": "npm:22.10.5" - "@types/passport": "npm:^0" - "@types/passport-jwt": "npm:^4.0.1" - "@typescript-eslint/eslint-plugin": "npm:^5.0.0" - "@typescript-eslint/parser": "npm:^5.0.0" - axios: "npm:^1.7.2" - cache-manager: "npm:^5.4.0" - cache-manager-redis-yet: "npm:^5.1.5" - class-transformer: "npm:^0.5.1" - class-validator: "npm:0.14.1" - eslint: "npm:^8.55.0" - eslint-config-prettier: "npm:^9.1.0" - eslint-plugin-prettier: "npm:^5.2.1" - ethers: "npm:^6.15.0" - jest: "npm:29.7.0" - joi: "npm:^17.13.3" - jsonwebtoken: "npm:^9.0.2" - jwt-decode: "npm:^4.0.0" - lodash: "npm:^4.17.21" - nock: "npm:^13.5.1" - passport: "npm:^0.7.0" - passport-jwt: "npm:^4.0.1" - prettier: "npm:^3.4.2" - reflect-metadata: "npm:^0.2.2" - rxjs: "npm:^7.2.0" - source-map-support: "npm:^0.5.20" - ts-jest: "npm:29.2.5" - ts-node: "npm:^10.9.2" - tsconfig-paths: "npm:4.2.0" - typescript: "npm:^5.6.3" - languageName: unknown - linkType: soft + lodash.camelcase: "npm:^4.3.0" + long: "npm:^5.0.0" + protobufjs: "npm:^7.2.5" + yargs: "npm:^17.7.2" + bin: + proto-loader-gen-types: build/bin/proto-loader-gen-types.js + checksum: 10c0/514a134a724b56d73d0a202b7e02c84479da21e364547bacb2f4995ebc0d52412a1a21653add9f004ebd146c1e6eb4bcb0b8846fdfe1bfa8a98ed8f3d203da4a + languageName: node + linkType: hard -"@human-protocol/job-launcher-client@workspace:packages/apps/job-launcher/client": - version: 0.0.0-use.local - resolution: "@human-protocol/job-launcher-client@workspace:packages/apps/job-launcher/client" +"@hapi/hoek@npm:^9.0.0, @hapi/hoek@npm:^9.3.0": + version: 9.3.0 + resolution: "@hapi/hoek@npm:9.3.0" + checksum: 10c0/a096063805051fb8bba4c947e293c664b05a32b47e13bc654c0dd43813a1cec993bdd8f29ceb838020299e1d0f89f68dc0d62a603c13c9cc8541963f0beca055 + languageName: node + linkType: hard + +"@hapi/topo@npm:^5.1.0": + version: 5.1.0 + resolution: "@hapi/topo@npm:5.1.0" dependencies: - "@emotion/react": "npm:^11.10.5" - "@emotion/styled": "npm:^11.10.5" - "@hcaptcha/react-hcaptcha": "npm:^1.10.1" - "@human-protocol/sdk": "workspace:*" - "@mui/icons-material": "npm:^7.0.1" - "@mui/lab": "npm:^5.0.0-alpha.141" - "@mui/material": "npm:^5.16.7" - "@mui/system": "npm:^5.15.14" - "@mui/x-date-pickers": "npm:^7.23.6" - "@reduxjs/toolkit": "npm:^2.5.0" - "@stripe/react-stripe-js": "npm:^3.0.0" - "@stripe/stripe-js": "npm:^4.2.0" - "@tanstack/query-sync-storage-persister": "npm:^5.68.0" - "@tanstack/react-query": "npm:^5.67.2" - "@tanstack/react-query-persist-client": "npm:^5.80.7" - "@types/file-saver": "npm:^2.0.7" - "@types/react": "npm:^18.3.12" - "@types/react-dom": "npm:^18.3.1" - "@types/xml2js": "npm:^0.4.14" - "@vitejs/plugin-react": "npm:^4.2.1" - axios: "npm:^1.1.3" - copy-to-clipboard: "npm:^3.3.3" - dayjs: "npm:^1.11.12" - decimal.js: "npm:^10.6.0" - eslint: "npm:^8.55.0" - eslint-config-react-app: "npm:^7.0.1" - eslint-import-resolver-typescript: "npm:^3.7.0" - eslint-plugin-import: "npm:^2.29.0" - eslint-plugin-react: "npm:^7.34.3" - eslint-plugin-react-hooks: "npm:^5.1.0" - ethers: "npm:^6.15.0" - file-saver: "npm:^2.0.5" - formik: "npm:^2.4.2" - jwt-decode: "npm:^4.0.0" - prettier: "npm:^3.4.2" - react: "npm:^18.3.1" - react-dom: "npm:^18.3.1" - react-redux: "npm:^9.1.0" - react-router-dom: "npm:^6.14.1" - recharts: "npm:^2.7.2" - resize-observer-polyfill: "npm:^1.5.1" - serve: "npm:^14.2.4" - swr: "npm:^2.2.4" - typescript: "npm:^5.6.3" - viem: "npm:2.x" - vite: "npm:^6.2.4" - vite-plugin-node-polyfills: "npm:^0.23.0" - wagmi: "npm:^2.14.6" - xml2js: "npm:^0.6.2" - yup: "npm:^1.6.1" - languageName: unknown - linkType: soft + "@hapi/hoek": "npm:^9.0.0" + checksum: 10c0/b16b06d9357947149e032bdf10151eb71aea8057c79c4046bf32393cb89d0d0f7ca501c40c0f7534a5ceca078de0700d2257ac855c15e59fe4e00bba2f25c86f + languageName: node + linkType: hard + +"@hcaptcha/loader@npm:^2.0.0": + version: 2.0.0 + resolution: "@hcaptcha/loader@npm:2.0.0" + checksum: 10c0/c69c8e62ccf41cc5cce8f25721b9bd8284e201da608022476dc6d69afbd70512a6f272dd2bfe558c4b5fdbc0ee20fb5f062033c4d556e6d523ecb2448203298f + languageName: node + linkType: hard + +"@hcaptcha/react-hcaptcha@npm:^0.3.6": + version: 0.3.10 + resolution: "@hcaptcha/react-hcaptcha@npm:0.3.10" + peerDependencies: + react: ">= 16.3.0" + react-dom: ">= 16.3.0" + checksum: 10c0/cb9af880be869baffc0088833b24b8ad2338db997f5a19d4c64f4fd9173d7d339639c2811802d6578d8b2f711a25417ef7f3923e23641cbc31e803d7ac732370 + languageName: node + linkType: hard + +"@hcaptcha/react-hcaptcha@npm:^1.10.1": + version: 1.12.0 + resolution: "@hcaptcha/react-hcaptcha@npm:1.12.0" + dependencies: + "@babel/runtime": "npm:^7.17.9" + "@hcaptcha/loader": "npm:^2.0.0" + peerDependencies: + react: ">= 16.3.0" + react-dom: ">= 16.3.0" + checksum: 10c0/58fddf7cbbeb1c9d784a90a4ee76604efd8d0c968d1d256f72d112d95c8d68bbb1255dd4184148e7e43e38491c5614b3747f4d17393a17d320e28935da47f8e8 + languageName: node + linkType: hard + +"@hookform/resolvers@npm:^5.1.0": + version: 5.2.1 + resolution: "@hookform/resolvers@npm:5.2.1" + dependencies: + "@standard-schema/utils": "npm:^0.3.0" + peerDependencies: + react-hook-form: ^7.55.0 + checksum: 10c0/e8e48abc188b5139bc444e4495e2fb1680c6aafa31d79c5d7fa4d7d690b0fc2bac1dfbd99213cbc0c6c53c5c3c4e8c4dc28278dd87a3fa0176540795a6f2edde + languageName: node + linkType: hard -"@human-protocol/job-launcher-server@workspace:packages/apps/job-launcher/server": +"@human-protocol/core@workspace:*, @human-protocol/core@workspace:packages/core": version: 0.0.0-use.local - resolution: "@human-protocol/job-launcher-server@workspace:packages/apps/job-launcher/server" + resolution: "@human-protocol/core@workspace:packages/core" dependencies: - "@faker-js/faker": "npm:^9.5.0" - "@golevelup/ts-jest": "npm:^0.6.1" - "@google-cloud/storage": "npm:^7.15.0" - "@google-cloud/vision": "npm:^4.3.2" - "@human-protocol/logger": "workspace:*" - "@human-protocol/sdk": "workspace:*" - "@nestjs/axios": "npm:^3.1.2" - "@nestjs/cli": "npm:^10.3.2" - "@nestjs/common": "npm:^10.2.7" - "@nestjs/config": "npm:^3.1.1" - "@nestjs/core": "npm:^10.3.10" - "@nestjs/jwt": "npm:^10.2.0" - "@nestjs/passport": "npm:^10.0.0" - "@nestjs/platform-express": "npm:^10.3.10" - "@nestjs/schedule": "npm:^4.0.1" - "@nestjs/schematics": "npm:^11.0.2" - "@nestjs/swagger": "npm:^7.4.2" - "@nestjs/terminus": "npm:^11.0.0" - "@nestjs/testing": "npm:^10.4.6" - "@nestjs/throttler": "npm:^6.4.0" - "@nestjs/typeorm": "npm:^10.0.1" - "@sendgrid/mail": "npm:^8.1.3" - "@types/bcrypt": "npm:^5.0.2" - "@types/express": "npm:^4.17.13" - "@types/jest": "npm:29.5.12" - "@types/node": "npm:22.10.5" - "@types/passport-jwt": "npm:^4.0.1" - "@types/uuid": "npm:^10.0.0" - "@types/xml2js": "npm:0.4.14" - "@types/zxcvbn": "npm:4.4.5" - "@typescript-eslint/eslint-plugin": "npm:^5.0.0" - "@typescript-eslint/parser": "npm:^5.0.0" - async-mutex: "npm:^0.5.0" - axios: "npm:^1.7.2" - bcrypt: "npm:^5.1.1" - body-parser: "npm:^1.20.3" - class-transformer: "npm:^0.5.1" - class-validator: "npm:0.14.1" - decimal.js: "npm:^10.6.0" - dotenv: "npm:^17.2.2" + "@nomicfoundation/hardhat-chai-matchers": "npm:^2.0.7" + "@nomicfoundation/hardhat-ethers": "npm:^3.1.0" + "@nomicfoundation/hardhat-network-helpers": "npm:^1.0.12" + "@nomicfoundation/hardhat-toolbox": "npm:^4.0.0" + "@nomicfoundation/hardhat-verify": "npm:^2.0.11" + "@openzeppelin/contracts": "npm:5.0.2" + "@openzeppelin/contracts-upgradeable": "npm:^4.9.2" + "@openzeppelin/hardhat-upgrades": "npm:^3.9.1" + "@tenderly/hardhat-tenderly": "npm:^2.0.1" + "@typechain/ethers-v6": "npm:^0.5.1" + "@typechain/hardhat": "npm:^9.1.0" + "@types/chai": "npm:^4.3.3" + "@types/mocha": "npm:^10.0.8" + "@types/node": "npm:^22.15.16" + chai: "npm:^4.5.0" + concurrently: "npm:^9.1.2" eslint: "npm:^8.55.0" - eslint-config-prettier: "npm:^9.1.0" - eslint-plugin-prettier: "npm:^5.2.1" - helmet: "npm:^7.1.0" - jest: "npm:29.7.0" - joi: "npm:^17.13.3" - json-stable-stringify: "npm:^1.2.1" - minio: "npm:7.1.3" - nestjs-minio-client: "npm:^2.2.0" - node-cache: "npm:^5.1.2" - passport: "npm:^0.7.0" - passport-jwt: "npm:^4.0.1" - pg: "npm:8.13.1" + ethers: "npm:~6.15.0" + hardhat: "npm:^2.26.0" + hardhat-abi-exporter: "npm:^2.10.1" + hardhat-contract-sizer: "npm:^2.6.1" + hardhat-dependency-compiler: "npm:^1.2.1" + hardhat-gas-reporter: "npm:^2.0.2" + openpgp: "npm:5.11.2" prettier: "npm:^3.4.2" - reflect-metadata: "npm:^0.2.2" - rxjs: "npm:^7.2.0" - source-map-support: "npm:^0.5.20" - stripe: "npm:^17.7.0" - ts-jest: "npm:29.2.5" + prettier-plugin-solidity: "npm:^1.3.1" + solidity-coverage: "npm:^0.8.16" + tenderly: "npm:^0.9.1" ts-node: "npm:^10.9.2" - tsconfig-paths: "npm:4.2.0" - typeorm: "npm:^0.3.25" - typeorm-naming-strategies: "npm:^4.1.0" - typescript: "npm:^5.6.3" - validator: "npm:^13.12.0" - zxcvbn: "npm:^4.4.2" + typechain: "npm:^8.3.2" + typescript: "npm:^5.8.3" + xdeployer: "npm:3.1.6" + peerDependencies: + ethers: ~6.15.0 languageName: unknown linkType: soft @@ -4772,79 +4900,9 @@ __metadata: languageName: unknown linkType: soft -"@human-protocol/reputation-oracle@workspace:packages/apps/reputation-oracle/server": +"@human-protocol/python-sdk@workspace:packages/sdk/python/human-protocol-sdk": version: 0.0.0-use.local - resolution: "@human-protocol/reputation-oracle@workspace:packages/apps/reputation-oracle/server" - dependencies: - "@eslint/js": "npm:^9.33.0" - "@faker-js/faker": "npm:^9.4.0" - "@golevelup/ts-jest": "npm:^0.6.1" - "@human-protocol/core": "workspace:*" - "@human-protocol/logger": "workspace:*" - "@human-protocol/sdk": "workspace:*" - "@nestjs/axios": "npm:^3.1.3" - "@nestjs/cli": "npm:^10.3.2" - "@nestjs/common": "npm:^10.2.7" - "@nestjs/config": "npm:^3.1.1" - "@nestjs/core": "npm:^10.3.10" - "@nestjs/jwt": "npm:^10.2.0" - "@nestjs/passport": "npm:^10.0.0" - "@nestjs/platform-express": "npm:^10.3.10" - "@nestjs/schedule": "npm:^4.0.1" - "@nestjs/schematics": "npm:^11.0.2" - "@nestjs/swagger": "npm:^7.4.2" - "@nestjs/terminus": "npm:^11.0.0" - "@nestjs/testing": "npm:^10.4.6" - "@nestjs/typeorm": "npm:^10.0.1" - "@sendgrid/mail": "npm:^8.1.3" - "@slack/bolt": "npm:^4.2.1" - "@slack/web-api": "npm:^7.9.1" - "@slack/webhook": "npm:^7.0.5" - "@types/bcrypt": "npm:^5.0.2" - "@types/express": "npm:^4.17.13" - "@types/jest": "npm:29.5.12" - "@types/lodash": "npm:^4.17.14" - "@types/node": "npm:22.10.5" - "@types/passport-jwt": "npm:^4.0.1" - "@types/uuid": "npm:^10.0.0" - "@types/zxcvbn": "npm:4.4.5" - axios: "npm:^1.8.1" - bcrypt: "npm:^5.1.1" - body-parser: "npm:^1.20.3" - class-transformer: "npm:^0.5.1" - class-validator: "npm:^0.14.1" - dotenv: "npm:^17.2.2" - eslint: "npm:^9.33.0" - eslint-config-prettier: "npm:^10.1.8" - eslint-import-resolver-typescript: "npm:^4.4.4" - eslint-plugin-import: "npm:^2.32.0" - eslint-plugin-prettier: "npm:^5.5.4" - ethers: "npm:~6.15.0" - globals: "npm:^16.3.0" - helmet: "npm:^7.1.0" - jest: "npm:29.7.0" - joi: "npm:^17.13.3" - json-stable-stringify: "npm:^1.2.1" - lodash: "npm:^4.17.21" - minio: "npm:7.1.3" - nock: "npm:^14.0.3" - passport: "npm:^0.7.0" - passport-jwt: "npm:^4.0.1" - pg: "npm:8.13.1" - prettier: "npm:^3.4.2" - reflect-metadata: "npm:^0.2.2" - rxjs: "npm:^7.2.0" - ts-jest: "npm:29.2.5" - ts-node: "npm:^10.9.2" - tsconfig-paths: "npm:^4.2.0" - type-fest: "npm:^4.37.0" - typeorm: "npm:^0.3.25" - typeorm-naming-strategies: "npm:^4.1.0" - typescript: "npm:^5.9.2" - typescript-eslint: "npm:^8.39.1" - uuid: "npm:^11.1.0" - validator: "npm:^13.12.0" - zxcvbn: "npm:^4.4.2" + resolution: "@human-protocol/python-sdk@workspace:packages/sdk/python/human-protocol-sdk" languageName: unknown linkType: soft @@ -4872,59 +4930,6 @@ __metadata: languageName: unknown linkType: soft -"@human-protocol/staking-dashboard-client@workspace:packages/apps/staking": - version: 0.0.0-use.local - resolution: "@human-protocol/staking-dashboard-client@workspace:packages/apps/staking" - dependencies: - "@human-protocol/sdk": "npm:*" - "@mui/icons-material": "npm:^7.0.1" - "@mui/material": "npm:^5.16.7" - "@mui/x-data-grid": "npm:^8.7.0" - "@tanstack/query-sync-storage-persister": "npm:^5.68.0" - "@tanstack/react-query": "npm:^5.67.2" - "@tanstack/react-query-persist-client": "npm:^5.80.7" - "@types/react": "npm:^18.3.12" - "@types/react-dom": "npm:^18.3.1" - "@types/react-router-dom": "npm:^5.3.3" - "@typescript-eslint/eslint-plugin": "npm:^7.13.1" - "@typescript-eslint/parser": "npm:^7.13.1" - "@vitejs/plugin-react": "npm:^4.3.1" - axios: "npm:^1.7.2" - eslint: "npm:^8.57.0" - eslint-plugin-react-hooks: "npm:^5.1.0" - eslint-plugin-react-refresh: "npm:^0.4.11" - ethers: "npm:^6.15.0" - prettier: "npm:^3.4.2" - react: "npm:^18.3.1" - react-dom: "npm:^18.3.1" - react-router-dom: "npm:^6.24.1" - sass: "npm:^1.89.2" - serve: "npm:^14.2.4" - typescript: "npm:^5.6.3" - viem: "npm:2.x" - vite: "npm:^6.2.4" - vite-plugin-node-polyfills: "npm:^0.23.0" - wagmi: "npm:^2.14.6" - languageName: unknown - linkType: soft - -"@human-protocol/subgraph@workspace:packages/sdk/typescript/subgraph": - version: 0.0.0-use.local - resolution: "@human-protocol/subgraph@workspace:packages/sdk/typescript/subgraph" - dependencies: - "@graphprotocol/graph-cli": "npm:^0.95.0" - "@graphprotocol/graph-ts": "npm:^0.38.0" - "@graphql-eslint/eslint-plugin": "npm:^3.19.1" - "@human-protocol/core": "workspace:*" - eslint: "npm:^8.55.0" - ethers: "npm:~6.15.0" - graphql: "npm:^16.6.0" - matchstick-as: "npm:^0.6.0" - mustache: "npm:^4.2.0" - prettier: "npm:^3.4.2" - languageName: unknown - linkType: soft - "@humanfs/core@npm:^0.19.1": version: 0.19.1 resolution: "@humanfs/core@npm:0.19.1" @@ -10207,6 +10212,23 @@ __metadata: languageName: node linkType: hard +"@tools/subgraph@workspace:packages/sdk/typescript/subgraph": + version: 0.0.0-use.local + resolution: "@tools/subgraph@workspace:packages/sdk/typescript/subgraph" + dependencies: + "@graphprotocol/graph-cli": "npm:^0.95.0" + "@graphprotocol/graph-ts": "npm:^0.38.0" + "@graphql-eslint/eslint-plugin": "npm:^3.19.1" + "@human-protocol/core": "workspace:*" + eslint: "npm:^8.55.0" + ethers: "npm:~6.15.0" + graphql: "npm:^16.6.0" + matchstick-as: "npm:^0.6.0" + mustache: "npm:^4.2.0" + prettier: "npm:^3.4.2" + languageName: unknown + linkType: soft + "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" @@ -19780,22 +19802,6 @@ __metadata: languageName: node linkType: hard -"gcv@workspace:packages/examples/gcv": - version: 0.0.0-use.local - resolution: "gcv@workspace:packages/examples/gcv" - dependencies: - "@google-cloud/vision": "npm:^4.3.2" - "@nestjs/common": "npm:^10.2.7" - "@types/xml2js": "npm:^0.4.14" - axios: "npm:^1.7.2" - dotenv: "npm:^17.2.2" - eslint: "npm:^8.55.0" - jest: "npm:^29.7.0" - typescript: "npm:^5.8.3" - xml2js: "npm:^0.6.2" - languageName: unknown - linkType: soft - "generic-pool@npm:3.9.0": version: 3.9.0 resolution: "generic-pool@npm:3.9.0" From 82b1d0d0674617e42ffa81b21ddb7490bdf22931 Mon Sep 17 00:00:00 2001 From: Dmitry Nechay Date: Thu, 30 Oct 2025 09:56:41 +0300 Subject: [PATCH 2/6] feat: serve config for UI apps with security headers (#3644) --- packages/apps/human-app/frontend/package.json | 2 +- packages/apps/human-app/frontend/serve.json | 58 +++++++++++++++++++ .../apps/job-launcher/client/package.json | 2 +- packages/apps/job-launcher/client/serve.json | 58 +++++++++++++++++++ packages/apps/staking/package.json | 2 +- packages/apps/staking/serve.json | 58 +++++++++++++++++++ 6 files changed, 177 insertions(+), 3 deletions(-) create mode 100644 packages/apps/human-app/frontend/serve.json create mode 100644 packages/apps/job-launcher/client/serve.json create mode 100644 packages/apps/staking/serve.json diff --git a/packages/apps/human-app/frontend/package.json b/packages/apps/human-app/frontend/package.json index 107b207057..18ce4190a6 100644 --- a/packages/apps/human-app/frontend/package.json +++ b/packages/apps/human-app/frontend/package.json @@ -6,7 +6,7 @@ "clean": "tsc --build --clean && rm -rf dist", "start": "vite", "build": "tsc --build && vite build", - "start:prod": "serve -s dist", + "start:prod": "serve -c ./serve.json", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview", "test": "vitest --run", diff --git a/packages/apps/human-app/frontend/serve.json b/packages/apps/human-app/frontend/serve.json new file mode 100644 index 0000000000..09543122e9 --- /dev/null +++ b/packages/apps/human-app/frontend/serve.json @@ -0,0 +1,58 @@ +{ + "public": "dist", + "symlinks": true, + "trailingSlash": false, + "headers": [ + { + "source": "**/*.html", + "headers": [ + { + "key": "Cache-Control", + "value": "no-cache" + }, + { + "key": "Content-Security-Policy", + "value": "frame-ancestors: 'none';" + }, + { + "key": "Strict-Transport-Security", + "value": "max-age=63072000; includeSubDomains; preload" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Referrer-Policy", + "value": "no-referrer" + }, + { + "key": "Permissions-Policy", + "value": "geolocation=(), microphone=(), camera=()" + } + ] + }, + { + "source": "**/*.{js,css,woff2}", + "headers": [ + { + "key": "Cache-Control", + "value": "public, max-age=31536000, immutable" + } + ] + }, + { + "source": "**/*.{ico,svg,jpg,png}", + "headers": [ + { + "key": "Cache-Control", + "value": "public, max-age=3600" + } + ] + } + ] +} \ No newline at end of file diff --git a/packages/apps/job-launcher/client/package.json b/packages/apps/job-launcher/client/package.json index 4aba2a6e10..686de04368 100644 --- a/packages/apps/job-launcher/client/package.json +++ b/packages/apps/job-launcher/client/package.json @@ -46,7 +46,7 @@ "start": "vite", "build": "vite build", "preview": "vite preview", - "start:prod": "serve -s dist", + "start:prod": "serve -c ./serve.json", "format:prettier": "prettier --write \"**/*.{ts,tsx,js,jsx}\"", "format:lint": "eslint --fix \"**/*.{ts,tsx,js,jsx}\"", "format": "yarn format:prettier && yarn format:lint", diff --git a/packages/apps/job-launcher/client/serve.json b/packages/apps/job-launcher/client/serve.json new file mode 100644 index 0000000000..09543122e9 --- /dev/null +++ b/packages/apps/job-launcher/client/serve.json @@ -0,0 +1,58 @@ +{ + "public": "dist", + "symlinks": true, + "trailingSlash": false, + "headers": [ + { + "source": "**/*.html", + "headers": [ + { + "key": "Cache-Control", + "value": "no-cache" + }, + { + "key": "Content-Security-Policy", + "value": "frame-ancestors: 'none';" + }, + { + "key": "Strict-Transport-Security", + "value": "max-age=63072000; includeSubDomains; preload" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Referrer-Policy", + "value": "no-referrer" + }, + { + "key": "Permissions-Policy", + "value": "geolocation=(), microphone=(), camera=()" + } + ] + }, + { + "source": "**/*.{js,css,woff2}", + "headers": [ + { + "key": "Cache-Control", + "value": "public, max-age=31536000, immutable" + } + ] + }, + { + "source": "**/*.{ico,svg,jpg,png}", + "headers": [ + { + "key": "Cache-Control", + "value": "public, max-age=3600" + } + ] + } + ] +} \ No newline at end of file diff --git a/packages/apps/staking/package.json b/packages/apps/staking/package.json index 0861041bc7..cca339c1ef 100644 --- a/packages/apps/staking/package.json +++ b/packages/apps/staking/package.json @@ -9,7 +9,7 @@ "start": "vite", "build": "vite build", "preview": "vite preview", - "start:prod": "serve -s dist", + "start:prod": "serve -c ./serve.json", "format:prettier": "prettier --write \"**/*.{ts,tsx,js,jsx}\"", "format:lint": "eslint --fix \"**/*.{ts,tsx,js,jsx}\"", "format": "yarn format:prettier && yarn format:lint", diff --git a/packages/apps/staking/serve.json b/packages/apps/staking/serve.json new file mode 100644 index 0000000000..09543122e9 --- /dev/null +++ b/packages/apps/staking/serve.json @@ -0,0 +1,58 @@ +{ + "public": "dist", + "symlinks": true, + "trailingSlash": false, + "headers": [ + { + "source": "**/*.html", + "headers": [ + { + "key": "Cache-Control", + "value": "no-cache" + }, + { + "key": "Content-Security-Policy", + "value": "frame-ancestors: 'none';" + }, + { + "key": "Strict-Transport-Security", + "value": "max-age=63072000; includeSubDomains; preload" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "Referrer-Policy", + "value": "no-referrer" + }, + { + "key": "Permissions-Policy", + "value": "geolocation=(), microphone=(), camera=()" + } + ] + }, + { + "source": "**/*.{js,css,woff2}", + "headers": [ + { + "key": "Cache-Control", + "value": "public, max-age=31536000, immutable" + } + ] + }, + { + "source": "**/*.{ico,svg,jpg,png}", + "headers": [ + { + "key": "Cache-Control", + "value": "public, max-age=3600" + } + ] + } + ] +} \ No newline at end of file From 71308e6ceabb4d403ae8213d5fc49ef7a514f46c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20L=C3=B3pez?= <50665615+flopez7@users.noreply.github.com> Date: Mon, 3 Nov 2025 15:25:07 +0100 Subject: [PATCH 3/6] [Reputation Oracle][Abuse] Modify abuse flow (#3646) --- docker-setup/docker-compose.dev.yml | 2 +- .../server/src/common/enums/job.ts | 1 - .../assignment/assignment.service.spec.ts | 2 +- .../src/modules/job/job.service.spec.ts | 50 ------ .../server/src/modules/job/job.service.ts | 30 ---- .../modules/webhook/webhook.service.spec.ts | 12 +- .../src/modules/webhook/webhook.service.ts | 7 +- .../server/src/modules/job/job.service.ts | 1 + .../src/modules/payment/payment.controller.ts | 4 + .../src/modules/abuse/abuse.service.spec.ts | 116 +++----------- .../server/src/modules/abuse/abuse.service.ts | 143 +++++------------- 11 files changed, 71 insertions(+), 297 deletions(-) diff --git a/docker-setup/docker-compose.dev.yml b/docker-setup/docker-compose.dev.yml index b329016fb9..3a20df61dc 100644 --- a/docker-setup/docker-compose.dev.yml +++ b/docker-setup/docker-compose.dev.yml @@ -73,7 +73,7 @@ services: graph-node-db: container_name: hp-dev-graph-node-db - image: postgres:latest + image: postgres:16 restart: *default-restart logging: <<: *default-logging diff --git a/packages/apps/fortune/exchange-oracle/server/src/common/enums/job.ts b/packages/apps/fortune/exchange-oracle/server/src/common/enums/job.ts index 052a3754ad..68659c8162 100644 --- a/packages/apps/fortune/exchange-oracle/server/src/common/enums/job.ts +++ b/packages/apps/fortune/exchange-oracle/server/src/common/enums/job.ts @@ -1,6 +1,5 @@ export enum JobStatus { ACTIVE = 'active', - PAUSED = 'paused', COMPLETED = 'completed', CANCELED = 'canceled', } diff --git a/packages/apps/fortune/exchange-oracle/server/src/modules/assignment/assignment.service.spec.ts b/packages/apps/fortune/exchange-oracle/server/src/modules/assignment/assignment.service.spec.ts index 76fec45ecf..6bd57ac270 100644 --- a/packages/apps/fortune/exchange-oracle/server/src/modules/assignment/assignment.service.spec.ts +++ b/packages/apps/fortune/exchange-oracle/server/src/modules/assignment/assignment.service.spec.ts @@ -229,7 +229,7 @@ describe('AssignmentService', () => { id: 1, manifestUrl: MOCK_MANIFEST_URL, reputationNetwork: reputationNetwork, - status: JobStatus.PAUSED, + status: JobStatus.CANCELED, } as any); await expect( diff --git a/packages/apps/fortune/exchange-oracle/server/src/modules/job/job.service.spec.ts b/packages/apps/fortune/exchange-oracle/server/src/modules/job/job.service.spec.ts index 9073407ca7..5eea7efe29 100644 --- a/packages/apps/fortune/exchange-oracle/server/src/modules/job/job.service.spec.ts +++ b/packages/apps/fortune/exchange-oracle/server/src/modules/job/job.service.spec.ts @@ -667,54 +667,4 @@ describe('JobService', () => { ).rejects.toThrow(`Solution not found in Escrow: ${escrowAddress}`); }); }); - - describe('pauseJob', () => { - const webhook: WebhookDto = { - chainId, - escrowAddress, - eventType: EventType.ABUSE_DETECTED, - }; - - it('should create a new job in the database', async () => { - jest - .spyOn(jobRepository, 'findOneByChainIdAndEscrowAddress') - .mockResolvedValue({ - chainId: chainId, - escrowAddress: escrowAddress, - status: JobStatus.ACTIVE, - } as JobEntity); - const result = await jobService.pauseJob(webhook); - - expect(result).toEqual(undefined); - expect(jobRepository.updateOne).toHaveBeenCalledWith({ - chainId: chainId, - escrowAddress: escrowAddress, - status: JobStatus.PAUSED, - }); - }); - - it('should fail if job not exists', async () => { - jest - .spyOn(jobRepository, 'findOneByChainIdAndEscrowAddress') - .mockResolvedValue(null); - - await expect(jobService.pauseJob(webhook)).rejects.toThrow( - ErrorJob.NotFound, - ); - }); - - it('should fail if job is not in Active status', async () => { - jest - .spyOn(jobRepository, 'findOneByChainIdAndEscrowAddress') - .mockResolvedValue({ - chainId: chainId, - escrowAddress: escrowAddress, - status: JobStatus.CANCELED, - } as JobEntity); - - await expect(jobService.pauseJob(webhook)).rejects.toThrow( - ErrorJob.InvalidStatus, - ); - }); - }); }); diff --git a/packages/apps/fortune/exchange-oracle/server/src/modules/job/job.service.ts b/packages/apps/fortune/exchange-oracle/server/src/modules/job/job.service.ts index 7089fed2a2..72f8129444 100644 --- a/packages/apps/fortune/exchange-oracle/server/src/modules/job/job.service.ts +++ b/packages/apps/fortune/exchange-oracle/server/src/modules/job/job.service.ts @@ -382,34 +382,4 @@ export class JobService { return manifest; } - - public async pauseJob(webhook: WebhookDto): Promise { - const jobEntity = await this.jobRepository.findOneByChainIdAndEscrowAddress( - webhook.chainId, - webhook.escrowAddress, - ); - if (!jobEntity) { - throw new ServerError(ErrorJob.NotFound); - } - if (jobEntity.status !== JobStatus.ACTIVE) { - throw new ConflictError(ErrorJob.InvalidStatus); - } - jobEntity.status = JobStatus.PAUSED; - await this.jobRepository.updateOne(jobEntity); - } - - public async resumeJob(webhook: WebhookDto): Promise { - const jobEntity = await this.jobRepository.findOneByChainIdAndEscrowAddress( - webhook.chainId, - webhook.escrowAddress, - ); - if (!jobEntity) { - throw new ServerError(ErrorJob.NotFound); - } - if (jobEntity.status !== JobStatus.PAUSED) { - throw new ConflictError(ErrorJob.InvalidStatus); - } - jobEntity.status = JobStatus.ACTIVE; - await this.jobRepository.updateOne(jobEntity); - } } diff --git a/packages/apps/fortune/exchange-oracle/server/src/modules/webhook/webhook.service.spec.ts b/packages/apps/fortune/exchange-oracle/server/src/modules/webhook/webhook.service.spec.ts index 148596b5ae..dc445214b6 100644 --- a/packages/apps/fortune/exchange-oracle/server/src/modules/webhook/webhook.service.spec.ts +++ b/packages/apps/fortune/exchange-oracle/server/src/modules/webhook/webhook.service.spec.ts @@ -169,7 +169,7 @@ describe('WebhookService', () => { }); it('should handle an incoming escrow abuse webhook', async () => { - jest.spyOn(jobService, 'pauseJob').mockResolvedValue(); + jest.spyOn(jobService, 'cancelJob').mockResolvedValue(); const webhook: WebhookDto = { chainId, escrowAddress, @@ -178,16 +178,6 @@ describe('WebhookService', () => { expect(await webhookService.handleWebhook(webhook)).toBe(undefined); }); - it('should handle an incoming escrow resume webhook', async () => { - jest.spyOn(jobService, 'resumeJob').mockResolvedValue(); - const webhook: WebhookDto = { - chainId, - escrowAddress, - eventType: EventType.ABUSE_DISMISSED, - }; - expect(await webhookService.handleWebhook(webhook)).toBe(undefined); - }); - it('should return an error when the event type is invalid', async () => { const webhook: WebhookDto = { chainId, diff --git a/packages/apps/fortune/exchange-oracle/server/src/modules/webhook/webhook.service.ts b/packages/apps/fortune/exchange-oracle/server/src/modules/webhook/webhook.service.ts index fac0c3820a..c751ffd89e 100644 --- a/packages/apps/fortune/exchange-oracle/server/src/modules/webhook/webhook.service.ts +++ b/packages/apps/fortune/exchange-oracle/server/src/modules/webhook/webhook.service.ts @@ -54,13 +54,8 @@ export class WebhookService { break; case EventType.ABUSE_DETECTED: - await this.jobService.pauseJob(webhook); - break; - - case EventType.ABUSE_DISMISSED: - await this.jobService.resumeJob(webhook); + await this.jobService.cancelJob(webhook); break; - default: throw new ValidationError( `Invalid webhook event type: ${webhook.eventType}`, diff --git a/packages/apps/job-launcher/server/src/modules/job/job.service.ts b/packages/apps/job-launcher/server/src/modules/job/job.service.ts index dfc2ef0346..fabd5f7e74 100644 --- a/packages/apps/job-launcher/server/src/modules/job/job.service.ts +++ b/packages/apps/job-launcher/server/src/modules/job/job.service.ts @@ -147,6 +147,7 @@ export class JobService { // DISABLE HMT if ( requestType !== HCaptchaJobType.HCAPTCHA && + dto.chainId !== ChainId.LOCALHOST && (dto.escrowFundToken === EscrowFundToken.HMT || dto.paymentCurrency === PaymentCurrency.HMT) ) { diff --git a/packages/apps/job-launcher/server/src/modules/payment/payment.controller.ts b/packages/apps/job-launcher/server/src/modules/payment/payment.controller.ts index 1914564209..cedade9fad 100644 --- a/packages/apps/job-launcher/server/src/modules/payment/payment.controller.ts +++ b/packages/apps/job-launcher/server/src/modules/payment/payment.controller.ts @@ -452,6 +452,10 @@ export class PaymentController { throw new ValidationError(ErrorPayment.InvalidChainId); } + if (chainId === ChainId.LOCALHOST) { + return tokens; + } + // Disable HMT const { [EscrowFundToken.HMT]: _omit, ...withoutHMT } = tokens; diff --git a/packages/apps/reputation-oracle/server/src/modules/abuse/abuse.service.spec.ts b/packages/apps/reputation-oracle/server/src/modules/abuse/abuse.service.spec.ts index b9e1e730e7..d428f930fa 100644 --- a/packages/apps/reputation-oracle/server/src/modules/abuse/abuse.service.spec.ts +++ b/packages/apps/reputation-oracle/server/src/modules/abuse/abuse.service.spec.ts @@ -294,13 +294,6 @@ describe('AbuseService', () => { .mockResolvedValueOnce({ exchangeOracle: fakeAddress, } as unknown as IEscrow); - mockedOperatorUtils.getOperator - .mockResolvedValueOnce({ - webhookUrl: webhookUrl1, - } as IOperator) - .mockResolvedValueOnce({ - webhookUrl: webhookUrl2, - } as IOperator); mockAbuseSlackBot.sendAbuseNotification .mockResolvedValueOnce(undefined) .mockResolvedValueOnce(undefined); @@ -325,9 +318,6 @@ describe('AbuseService', () => { mockedEscrowUtils.getEscrow.mockResolvedValueOnce({ exchangeOracle: fakeAddress, } as unknown as IEscrow); - mockedOperatorUtils.getOperator.mockResolvedValueOnce({ - webhookUrl: webhookUrl1, - } as IOperator); mockAbuseRepository.findToClassify.mockResolvedValueOnce( mockAbuseEntities, ); @@ -345,32 +335,6 @@ describe('AbuseService', () => { }); }); - it('should handle errors when createOutgoingWebhook fails', async () => { - const mockAbuseEntities = [generateAbuseEntity({ retriesCount: 0 })]; - - mockAbuseRepository.findToClassify.mockResolvedValueOnce( - mockAbuseEntities, - ); - mockedEscrowUtils.getEscrow.mockResolvedValueOnce({ - exchangeOracle: fakeAddress, - } as unknown as IEscrow); - mockedOperatorUtils.getOperator.mockResolvedValueOnce({ - webhookUrl: webhookUrl1, - } as IOperator); - - mockOutgoingWebhookService.createOutgoingWebhook.mockRejectedValueOnce( - new DatabaseError('Failed to create webhook'), - ); - - await abuseService.processAbuseRequests(); - - expect(mockAbuseRepository.findToClassify).toHaveBeenCalledTimes(1); - expect(mockAbuseRepository.updateOne).toHaveBeenCalledWith({ - ...mockAbuseEntities[0], - retriesCount: 1, - }); - }); - it('should continue if createOutgoingWebhook throws a duplicated error', async () => { const mockAbuseEntities = [generateAbuseEntity(), generateAbuseEntity()]; @@ -384,13 +348,6 @@ describe('AbuseService', () => { .mockResolvedValueOnce({ exchangeOracle: fakeAddress, } as unknown as IEscrow); - mockedOperatorUtils.getOperator - .mockResolvedValueOnce({ - webhookUrl: webhookUrl1, - } as IOperator) - .mockResolvedValueOnce({ - webhookUrl: webhookUrl2, - } as IOperator); mockOutgoingWebhookService.createOutgoingWebhook.mockRejectedValueOnce( new DatabaseError(DatabaseErrorMessages.DUPLICATED), @@ -450,24 +407,6 @@ describe('AbuseService', () => { retriesCount: 1, }); }); - - it('should increment retries when operator data is missing', async () => { - const abuseEntity = generateAbuseEntity({ retriesCount: 0 }); - mockAbuseRepository.findToClassify.mockResolvedValueOnce([abuseEntity]); - - mockedEscrowUtils.getEscrow.mockResolvedValueOnce({ - exchangeOracle: fakeAddress, - } as unknown as IEscrow); - mockedOperatorUtils.getOperator.mockResolvedValueOnce(null); - - await abuseService.processAbuseRequests(); - - expect(mockAbuseRepository.findToClassify).toHaveBeenCalledTimes(1); - expect(mockAbuseRepository.updateOne).toHaveBeenCalledWith({ - ...abuseEntity, - retriesCount: 1, - }); - }); }); describe('processClassifiedAbuses', () => { @@ -485,10 +424,15 @@ describe('AbuseService', () => { } as unknown as StakingClient); mockedEscrowUtils.getEscrow.mockResolvedValueOnce({ launcher: fakeAddress, + exchangeOracle: fakeAddress, } as unknown as IEscrow); - mockedOperatorUtils.getOperator.mockResolvedValueOnce({ - webhookUrl: webhookUrl1, - } as IOperator); + mockedOperatorUtils.getOperator + .mockResolvedValueOnce({ + webhookUrl: webhookUrl1, + } as IOperator) + .mockResolvedValueOnce({ + webhookUrl: webhookUrl2, + } as IOperator); mockOutgoingWebhookService.createOutgoingWebhook.mockResolvedValueOnce( undefined, ); @@ -511,7 +455,17 @@ describe('AbuseService', () => { chainId: mockAbuseEntities[0].chainId, eventType: OutgoingWebhookEventType.ABUSE_DETECTED, }, - expect.any(String), + webhookUrl1, + ); + expect( + mockOutgoingWebhookService.createOutgoingWebhook, + ).toHaveBeenCalledWith( + { + escrowAddress: mockAbuseEntities[0].escrowAddress, + chainId: mockAbuseEntities[0].chainId, + eventType: OutgoingWebhookEventType.ABUSE_DETECTED, + }, + webhookUrl2, ); expect(mockAbuseRepository.updateOne).toHaveBeenCalledWith({ ...mockAbuseEntities[0], @@ -527,12 +481,6 @@ describe('AbuseService', () => { mockAbuseRepository.findClassified.mockResolvedValueOnce( mockAbuseEntities, ); - mockedEscrowUtils.getEscrow.mockResolvedValueOnce({ - exchangeOracle: fakeAddress, - } as unknown as IEscrow); - mockedOperatorUtils.getOperator.mockResolvedValueOnce({ - webhookUrl: webhookUrl1, - } as IOperator); await abuseService.processClassifiedAbuses(); @@ -541,6 +489,11 @@ describe('AbuseService', () => { ...mockAbuseEntities[0], status: AbuseStatus.COMPLETED, }); + expect(mockedEscrowUtils.getEscrow).not.toHaveBeenCalled(); + expect(mockedOperatorUtils.getOperator).not.toHaveBeenCalled(); + expect( + mockOutgoingWebhookService.createOutgoingWebhook, + ).not.toHaveBeenCalled(); }); it('should handle empty results from findClassified', async () => { @@ -572,26 +525,5 @@ describe('AbuseService', () => { retriesCount: 1, }); }); - - it('should increment retries when operator is missing (REJECTED)', async () => { - const abuseEntity = generateAbuseEntity({ - retriesCount: 0, - decision: AbuseDecision.REJECTED, - }); - - mockAbuseRepository.findClassified.mockResolvedValueOnce([abuseEntity]); - mockedEscrowUtils.getEscrow.mockResolvedValueOnce({ - exchangeOracle: fakeAddress, - } as unknown as IEscrow); - mockedOperatorUtils.getOperator.mockResolvedValueOnce(null); - - await abuseService.processClassifiedAbuses(); - - expect(mockAbuseRepository.findClassified).toHaveBeenCalledTimes(1); - expect(mockAbuseRepository.updateOne).toHaveBeenCalledWith({ - ...abuseEntity, - retriesCount: 1, - }); - }); }); }); diff --git a/packages/apps/reputation-oracle/server/src/modules/abuse/abuse.service.ts b/packages/apps/reputation-oracle/server/src/modules/abuse/abuse.service.ts index b87eff134c..20ee094117 100644 --- a/packages/apps/reputation-oracle/server/src/modules/abuse/abuse.service.ts +++ b/packages/apps/reputation-oracle/server/src/modules/abuse/abuse.service.ts @@ -179,39 +179,6 @@ export class AbuseService { if (!escrow) { throw new Error('Escrow data is missing'); } - const operator = await OperatorUtils.getOperator( - abuseEntity.chainId, - escrow.exchangeOracle as string, - ); - if (!operator) { - throw new Error('Operator data is missing'); - } - if (!operator.webhookUrl) { - throw new Error('Operator webhook URL is missing'); - } - - const webhookPayload = { - chainId: abuseEntity.chainId, - escrowAddress: abuseEntity.escrowAddress, - eventType: OutgoingWebhookEventType.ABUSE_DETECTED, - }; - - try { - await this.outgoingWebhookService.createOutgoingWebhook( - webhookPayload, - operator.webhookUrl, - ); - } catch (error) { - if (!isDuplicatedError(error)) { - this.logger.error('Failed to create outgoing webhook for oracle', { - error, - abuseEntityId: abuseEntity.id, - }); - - await this.handleAbuseError(abuseEntity); - continue; - } - } await this.abuseSlackBot.sendAbuseNotification({ abuseId: abuseEntity.id, @@ -239,15 +206,16 @@ export class AbuseService { for (const abuseEntity of abuseEntities) { try { const { chainId, escrowAddress } = abuseEntity; - const escrow = await EscrowUtils.getEscrow( - abuseEntity.chainId, - abuseEntity.escrowAddress, - ); - if (!escrow) { - throw new Error('Escrow data is missing'); - } if (abuseEntity.decision === AbuseDecision.ACCEPTED) { + const escrow = await EscrowUtils.getEscrow( + abuseEntity.chainId, + abuseEntity.escrowAddress, + ); + if (!escrow) { + throw new Error('Escrow data is missing'); + } + await this.slashAccount({ slasher: abuseEntity?.user?.evmAddress as string, staker: escrow.launcher, @@ -255,76 +223,41 @@ export class AbuseService { escrowAddress: escrowAddress, amount: Number(abuseEntity.amount), }); - const operator = await OperatorUtils.getOperator( - chainId, + for (const address of [ escrow.launcher, - ); - if (!operator) { - throw new Error('Operator data is missing'); - } - if (!operator.webhookUrl) { - throw new Error('Operator webhook URL is missing'); - } - - const webhookPayload = { - chainId, - escrowAddress, - eventType: OutgoingWebhookEventType.ABUSE_DETECTED, - }; - - try { - await this.outgoingWebhookService.createOutgoingWebhook( - webhookPayload, - operator.webhookUrl, - ); - } catch (error) { - if (!isDuplicatedError(error)) { - this.logger.error( - 'Failed to create outgoing webhook for oracle', - { - error, - abuseEntityId: abuseEntity.id, - }, - ); - - await this.handleAbuseError(abuseEntity); - continue; - } - } - } else { - const webhookPayload = { - chainId: chainId, - escrowAddress: escrowAddress, - eventType: OutgoingWebhookEventType.ABUSE_DISMISSED, - }; - const operator = await OperatorUtils.getOperator( - chainId, escrow.exchangeOracle as string, - ); - if (!operator) { - throw new Error('Operator data is missing'); - } - if (!operator.webhookUrl) { - throw new Error('Operator webhook URL is missing'); - } + ]) { + const operator = await OperatorUtils.getOperator(chainId, address); + if (!operator) { + throw new Error('Operator data is missing'); + } + if (!operator.webhookUrl) { + throw new Error('Operator webhook URL is missing'); + } + const webhookPayload = { + chainId, + escrowAddress, + eventType: OutgoingWebhookEventType.ABUSE_DETECTED, + }; - try { - await this.outgoingWebhookService.createOutgoingWebhook( - webhookPayload, - operator.webhookUrl, - ); - } catch (error) { - if (!isDuplicatedError(error)) { - this.logger.error( - 'Failed to create outgoing webhook for oracle', - { - error, - abuseEntityId: abuseEntity.id, - }, + try { + await this.outgoingWebhookService.createOutgoingWebhook( + webhookPayload, + operator.webhookUrl, ); + } catch (error) { + if (!isDuplicatedError(error)) { + this.logger.error( + 'Failed to create outgoing webhook for oracle', + { + error, + abuseEntityId: abuseEntity.id, + }, + ); - await this.handleAbuseError(abuseEntity); - continue; + await this.handleAbuseError(abuseEntity); + continue; + } } } } From d5f21bdd33358f111ee457fd9dcb5acc0ba25084 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20L=C3=B3pez?= <50665615+flopez7@users.noreply.github.com> Date: Mon, 3 Nov 2025 16:15:24 +0100 Subject: [PATCH 4/6] [Fortune][Exchange Oracle] Add missing migration to remove paused status (#3647) --- .../1762175785287-removePausedStatus.ts | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 packages/apps/fortune/exchange-oracle/server/src/database/migrations/1762175785287-removePausedStatus.ts diff --git a/packages/apps/fortune/exchange-oracle/server/src/database/migrations/1762175785287-removePausedStatus.ts b/packages/apps/fortune/exchange-oracle/server/src/database/migrations/1762175785287-removePausedStatus.ts new file mode 100644 index 0000000000..0144e8fc09 --- /dev/null +++ b/packages/apps/fortune/exchange-oracle/server/src/database/migrations/1762175785287-removePausedStatus.ts @@ -0,0 +1,39 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class RemovePausedStatus1762175785287 implements MigrationInterface { + name = 'RemovePausedStatus1762175785287'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + ALTER TYPE "hmt"."jobs_status_enum" + RENAME TO "jobs_status_enum_old" + `); + await queryRunner.query(` + CREATE TYPE "hmt"."jobs_status_enum" AS ENUM('active', 'completed', 'canceled') + `); + await queryRunner.query(` + ALTER TABLE "hmt"."jobs" + ALTER COLUMN "status" TYPE "hmt"."jobs_status_enum" USING "status"::"text"::"hmt"."jobs_status_enum" + `); + await queryRunner.query(` + DROP TYPE "hmt"."jobs_status_enum_old" + `); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + CREATE TYPE "hmt"."jobs_status_enum_old" AS ENUM('active', 'paused', 'completed', 'canceled') + `); + await queryRunner.query(` + ALTER TABLE "hmt"."jobs" + ALTER COLUMN "status" TYPE "hmt"."jobs_status_enum_old" USING "status"::"text"::"hmt"."jobs_status_enum_old" + `); + await queryRunner.query(` + DROP TYPE "hmt"."jobs_status_enum" + `); + await queryRunner.query(` + ALTER TYPE "hmt"."jobs_status_enum_old" + RENAME TO "jobs_status_enum" + `); + } +} From 3063134055b03947300df193f6e5f70276f14e15 Mon Sep 17 00:00:00 2001 From: portuu3 <61605646+portuu3@users.noreply.github.com> Date: Tue, 4 Nov 2025 10:01:48 +0100 Subject: [PATCH 5/6] Escrow contract upgrades (#3482) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Francisco López Co-authored-by: Francisco López <50665615+flopez7@users.noreply.github.com> Co-authored-by: Dmitry Nechay --- .changeset/early-words-arrive.md | 8 + .changeset/rich-kids-rush.md | 10 + .github/workflows/cd-gitbook-sdk-docs.yaml | 2 +- .../python/human_protocol_sdk.constants.md | 2 + ...human_protocol_sdk.escrow.escrow_client.md | 82 +- .../human_protocol_sdk.escrow.escrow_utils.md | 80 +- docs/sdk/python/human_protocol_sdk.escrow.md | 9 +- docs/sdk/python/human_protocol_sdk.filter.md | 32 + ...man_protocol_sdk.kvstore.kvstore_client.md | 19 +- docs/sdk/python/human_protocol_sdk.md | 13 + ...an_protocol_sdk.operator.operator_utils.md | 29 +- docs/sdk/python/human_protocol_sdk.staking.md | 9 + ...uman_protocol_sdk.staking.staking_utils.md | 49 + docs/sdk/python/human_protocol_sdk.utils.md | 18 +- .../human_protocol_sdk.worker.worker_utils.md | 4 +- docs/sdk/python/index.md | 3 + .../base/classes/BaseEthersClient.md | 12 +- .../encryption/classes/Encryption.md | 12 +- .../encryption/classes/EncryptionUtils.md | 12 +- .../typescript/enums/enumerations/ChainId.md | 20 +- .../enums/enumerations/OperatorCategory.md | 6 +- .../enums/enumerations/OrderDirection.md | 6 +- .../typescript/escrow/classes/EscrowClient.md | 568 +- .../typescript/escrow/classes/EscrowUtils.md | 252 +- docs/sdk/typescript/graphql/types/README.md | 24 +- .../types/interfaces/IOperatorSubgraph.md | 141 + .../interfaces/IReputationNetworkSubgraph.md | 45 + .../type-aliases/CancellationRefundData.md | 67 + .../types/type-aliases/DailyEscrowData.md | 59 - .../types/type-aliases/DailyHMTData.md | 51 - .../types/type-aliases/DailyPaymentData.md | 43 - .../types/type-aliases/DailyTaskData.md | 35 - .../types/type-aliases/DailyWorkerData.md | 27 - .../graphql/types/type-aliases/EscrowData.md | 120 +- .../types/type-aliases/EscrowStatistics.md | 27 - .../type-aliases/EscrowStatisticsData.md | 22 +- .../types/type-aliases/EventDayData.md | 38 +- .../graphql/types/type-aliases/HMTHolder.md | 27 - .../types/type-aliases/HMTHolderData.md | 6 +- .../types/type-aliases/HMTStatistics.md | 35 - .../types/type-aliases/HMTStatisticsData.md | 14 +- .../graphql/types/type-aliases/IMData.md | 11 - .../types/type-aliases/IMDataEntity.md | 27 - .../type-aliases/InternalTransactionData.md | 75 + .../graphql/types/type-aliases/KVStoreData.md | 16 +- .../types/type-aliases/PaymentStatistics.md | 19 - .../graphql/types/type-aliases/PayoutData.md | 51 + .../type-aliases/RewardAddedEventData.md | 10 +- .../graphql/types/type-aliases/StakerData.md | 75 + .../graphql/types/type-aliases/StatusEvent.md | 18 +- .../types/type-aliases/TaskStatistics.md | 19 - .../types/type-aliases/TransactionData.md | 99 + .../graphql/types/type-aliases/WorkerData.md | 43 + .../types/type-aliases/WorkerStatistics.md | 19 - docs/sdk/typescript/interfaces/README.md | 18 +- .../interfaces/ICancellationRefund.md | 65 + .../interfaces/ICancellationRefundFilter.md | 89 + .../interfaces/interfaces/IDailyEscrow.md | 57 + .../interfaces/interfaces/IDailyHMT.md | 49 + .../interfaces/interfaces/IDailyPayment.md | 41 + .../interfaces/interfaces/IDailyWorker.md | 25 + .../interfaces/interfaces/IEscrow.md | 126 +- .../interfaces/interfaces/IEscrowConfig.md | 18 +- .../interfaces/IEscrowStatistics.md | 25 + .../interfaces/interfaces/IEscrowWithdraw.md | 33 + .../interfaces/interfaces/IEscrowsFilter.md | 26 +- .../interfaces/interfaces/IHMTHolder.md | 25 + .../interfaces/IHMTHoldersParams.md | 10 +- .../interfaces/interfaces/IHMTStatistics.md | 33 + .../interfaces/interfaces/IKVStore.md | 6 +- .../interfaces/interfaces/IKeyPair.md | 10 +- .../interfaces/interfaces/IOperator.md | 130 +- .../interfaces/IOperatorSubgraph.md | 261 - .../interfaces/interfaces/IOperatorsFilter.md | 20 +- .../interfaces/interfaces/IPagination.md | 10 +- .../interfaces/IPaymentStatistics.md | 17 + .../interfaces/interfaces/IPayout.md | 49 + .../interfaces/interfaces/IPayoutFilter.md | 18 +- .../interfaces/IReputationNetwork.md | 8 +- .../interfaces/IReputationNetworkSubgraph.md | 45 - .../interfaces/interfaces/IReward.md | 6 +- .../interfaces/interfaces/IStaker.md | 65 + .../interfaces/interfaces/IStakersFilter.md | 129 + .../interfaces/IStatisticsFilter.md | 12 +- .../interfaces/interfaces/IStatusEvent.md | 41 + .../interfaces/IStatusEventFilter.md | 18 +- .../interfaces/interfaces/ITransaction.md | 40 +- .../interfaces/ITransactionsFilter.md | 28 +- .../interfaces/interfaces/IWorker.md | 12 +- .../interfaces/IWorkerStatistics.md | 17 + .../interfaces/interfaces/IWorkersFilter.md | 14 +- .../interfaces/InternalTransaction.md | 30 +- .../interfaces/interfaces/StakerInfo.md | 10 +- .../kvstore/classes/KVStoreClient.md | 20 +- .../kvstore/classes/KVStoreUtils.md | 10 +- .../operator/classes/OperatorUtils.md | 14 +- docs/sdk/typescript/staking/README.md | 1 + .../staking/classes/StakingClient.md | 30 +- .../staking/classes/StakingUtils.md | 73 + .../statistics/classes/StatisticsClient.md | 82 +- .../storage/classes/StorageClient.md | 16 +- .../transaction/classes/TransactionUtils.md | 62 +- docs/sdk/typescript/types/README.md | 3 - .../types/enumerations/EscrowStatus.md | 24 +- .../types/type-aliases/EscrowCancel.md | 33 - .../types/type-aliases/EscrowWithdraw.md | 43 - .../types/type-aliases/NetworkData.md | 24 +- .../typescript/types/type-aliases/Payout.md | 63 - .../types/type-aliases/StorageCredentials.md | 8 +- .../types/type-aliases/StorageParams.md | 12 +- .../type-aliases/TransactionLikeWithNonce.md | 4 +- .../types/type-aliases/UploadFile.md | 8 +- .../leaderboard/model/leaderboardSchema.ts | 4 +- .../features/leaderboard/ui/useDataGrid.tsx | 2 +- .../model/addressDetailsSchema.ts | 16 +- .../searchResults/ui/OperatorAddress.tsx | 12 +- .../features/searchResults/ui/StakeInfo.tsx | 26 +- .../searchResults/ui/WalletAddress.tsx | 12 +- .../server/src/common/constants/operator.ts | 2 +- .../server/src/common/enums/operator.ts | 2 +- .../src/modules/details/details.service.ts | 16 +- .../details/dto/details-pagination.dto.ts | 4 +- .../src/modules/details/dto/operator.dto.ts | 7 +- .../src/modules/details/dto/wallet.dto.ts | 4 +- .../server/src/modules/stats/stats.service.ts | 9 +- .../server/scripts/setup-kv-store.ts | 5 +- .../server/scripts/setup-staking.ts | 5 +- .../server/src/common/enums/webhook.ts | 2 +- .../1754660427175-EscrowCancellation.ts | 58 + .../modules/webhook/webhook.service.spec.ts | 22 +- .../src/modules/webhook/webhook.service.ts | 12 +- .../scripts/setup-kv-store.ts | 5 +- .../recording-oracle/scripts/setup-staking.ts | 5 +- .../common/config/network-config.service.ts | 2 +- .../src/common/enums/webhook.ts | 2 + .../src/modules/job/job.service.spec.ts | 14 + .../src/modules/job/job.service.ts | 84 +- .../src/modules/webhook/webhook.service.ts | 4 + .../components/data-entry/multi-select.tsx | 1 - .../model/oracle-discovery.model.ts | 99 +- .../oracle-discovery.controller.ts | 21 +- .../oracle-discovery.service.ts | 25 +- .../spec/oracle-discovery.fixture.ts | 52 +- .../spec/oracle-discovery.service.spec.ts | 16 +- .../src/components/Jobs/Create/CreateJob.tsx | 2 +- .../apps/job-launcher/server/package.json | 2 +- .../server/scripts/setup-kv-store.ts | 5 +- .../server/scripts/setup-staking.ts | 7 +- .../server/src/common/constants/errors.ts | 2 + .../server/src/common/enums/job.ts | 1 + .../server/src/common/enums/webhook.ts | 1 + .../server/src/common/utils/tokens.ts | 4 + .../server/src/database/base.repository.ts | 13 + .../1754660014999-EscrowCancellation.ts | 131 + .../modules/cron-job/cron-job.service.spec.ts | 100 +- .../src/modules/cron-job/cron-job.service.ts | 129 +- .../server/src/modules/job/fixtures.ts | 7 +- .../src/modules/job/job.controller.spec.ts | 213 +- .../server/src/modules/job/job.controller.ts | 1 + .../server/src/modules/job/job.dto.ts | 8 - .../server/src/modules/job/job.repository.ts | 6 +- .../src/modules/job/job.service.spec.ts | 224 +- .../server/src/modules/job/job.service.ts | 168 +- .../src/modules/payment/payment.repository.ts | 9 + .../modules/payment/payment.service.spec.ts | 56 + .../src/modules/payment/payment.service.ts | 7 + .../routing-protocol.service.spec.ts | 50 +- .../routing-protocol.service.ts | 9 +- .../server/src/modules/web3/web3.dto.ts | 6 +- .../src/modules/webhook/webhook.entity.ts | 7 +- .../src/modules/webhook/webhook.module.ts | 14 +- .../modules/webhook/webhook.service.spec.ts | 94 +- .../src/modules/webhook/webhook.service.ts | 53 +- .../reputation-oracle/server/package.json | 2 +- .../server/scripts/setup-kv-store.ts | 5 +- .../server/scripts/setup-staking.ts | 7 +- .../src/modules/abuse/abuse.service.spec.ts | 2 +- .../server/src/modules/abuse/abuse.service.ts | 2 +- .../modules/escrow-completion/constants.ts | 2 - .../escrow-completion.service.spec.ts | 10 +- .../escrow-completion.service.ts | 54 +- .../audino-payouts-calculator.ts | 11 +- .../fortune-payouts-calculator.spec.ts | 32 +- .../fortune-payouts-calculator.ts | 16 +- .../escrow-results-processor.spec.ts | 100 +- .../escrow-results-processor.ts | 13 +- .../reputation/reputation.service.spec.ts | 8 +- .../modules/reputation/reputation.service.ts | 16 +- .../server/src/modules/webhook/types.ts | 2 + packages/core/.gitignore | 4 +- packages/core/.openzeppelin/bsc-testnet.json | 1106 +- packages/core/.openzeppelin/sepolia.json | 1866 ++- .../.openzeppelin/unknown-1313161555.json | 795 ++ .../core/.openzeppelin/unknown-80002.json | 948 +- packages/core/README.md | 141 +- packages/core/contracts/Escrow.sol | 627 +- packages/core/contracts/EscrowFactory.sol | 122 +- packages/core/contracts/Staking.sol | 1 - .../core/contracts/interfaces/IEscrow.sol | 43 +- .../core/contracts/test/EscrowFactoryV0.sol | 5 +- packages/core/contracts/test/USDT.sol | 11 - packages/core/package.json | 3 +- packages/core/test/Escrow-USDT.ts | 1061 -- packages/core/test/Escrow.ts | 2202 ++-- packages/core/test/EscrowFactory.ts | 576 +- packages/core/test/Staking.ts | 20 +- .../test/{ => governance}/DAOSpokeContract.ts | 2 +- .../test/{ => governance}/GovernanceTypes.ts | 0 .../test/{ => governance}/GovernanceUtils.ts | 2 +- .../{ => governance}/MetaHumanGovernor.ts | 2 +- .../MetaHumanGovernorHubOnly.ts | 2 +- .../docs/human_protocol_sdk.staking.rst | 1 + ...man_protocol_sdk.staking.staking_utils.rst | 7 + .../sdk/python/human-protocol-sdk/example.py | 77 +- .../human_protocol_sdk/constants.py | 9 +- .../escrow/escrow_client.py | 402 +- .../human_protocol_sdk/escrow/escrow_utils.py | 323 +- .../human_protocol_sdk/filter.py | 79 + .../human_protocol_sdk/gql/cancel.py | 75 + .../human_protocol_sdk/gql/escrow.py | 7 +- .../human_protocol_sdk/gql/operator.py | 26 +- .../human_protocol_sdk/gql/staking.py | 75 + .../kvstore/kvstore_client.py | 7 +- .../operator/operator_utils.py | 282 +- .../human_protocol_sdk/staking/__init__.py | 2 + .../staking/staking_client.py | 17 +- .../staking/staking_utils.py | 140 + .../transaction/transaction_utils.py | 86 +- .../human_protocol_sdk/utils.py | 2 +- .../human_protocol_sdk/worker/worker_utils.py | 24 +- .../escrow/test_escrow_client.py | 611 +- .../escrow/test_escrow_utils.py | 248 +- .../operator/test_operator_utils.py | 161 +- .../staking/test_staking_utils.py | 200 + .../transaction/test_transaction_utils.py | 20 +- .../human-protocol-sdk/example/staking.ts | 30 + .../human-protocol-sdk/package.json | 2 +- .../human-protocol-sdk/src/constants.ts | 8 +- .../human-protocol-sdk/src/error.ts | 32 +- .../human-protocol-sdk/src/escrow.ts | 920 +- .../src/graphql/queries/escrow.ts | 58 +- .../src/graphql/queries/operator.ts | 20 +- .../src/graphql/queries/staking.ts | 80 + .../human-protocol-sdk/src/graphql/types.ts | 190 +- .../human-protocol-sdk/src/index.ts | 3 +- .../human-protocol-sdk/src/interfaces.ts | 228 +- .../human-protocol-sdk/src/operator.ts | 152 +- .../human-protocol-sdk/src/staking.ts | 121 +- .../human-protocol-sdk/src/statistics.ts | 120 +- .../human-protocol-sdk/src/transaction.ts | 74 +- .../human-protocol-sdk/src/types.ts | 62 +- .../human-protocol-sdk/src/worker.ts | 24 +- .../human-protocol-sdk/test/escrow.test.ts | 1441 ++- .../human-protocol-sdk/test/operator.test.ts | 296 +- .../human-protocol-sdk/test/staking.test.ts | 196 +- .../test/statistics.test.ts | 8 +- .../test/transaction.test.ts | 277 +- .../test/utils/constants.ts | 1 + .../human-protocol-sdk/test/worker.test.ts | 30 +- .../typescript/subgraph/config/localhost.json | 2 +- packages/sdk/typescript/subgraph/package.json | 4 +- .../sdk/typescript/subgraph/schema.graphql | 82 +- .../subgraph/src/mapping/EscrowFactory.ts | 2 +- .../subgraph/src/mapping/EscrowTemplate.ts | 302 +- .../subgraph/src/mapping/HMTokenTemplate.ts | 57 +- .../subgraph/src/mapping/KVStore.ts | 30 +- .../subgraph/src/mapping/StakingTemplate.ts | 117 +- .../subgraph/src/mapping/legacy/Escrow.ts | 4 +- .../src/mapping/legacy/EscrowFactory.ts | 2 +- .../subgraph/src/mapping/utils/dayUpdates.ts | 1 + .../subgraph/src/mapping/utils/transaction.ts | 1 + .../sdk/typescript/subgraph/template.yaml | 6 + .../subgraph/tests/escrow/escrow.test.ts | 625 +- .../subgraph/tests/escrow/fixtures.ts | 153 +- .../typescript/subgraph/tests/hmt/hmt.test.ts | 117 - .../subgraph/tests/kvstore/kvstore.test.ts | 24 +- .../tests/legacy/escrow/escrow.test.ts | 4 +- .../subgraph/tests/staking/staking.test.ts | 153 +- yarn.lock | 10072 ++++++++-------- 279 files changed, 22369 insertions(+), 13029 deletions(-) create mode 100644 .changeset/early-words-arrive.md create mode 100644 .changeset/rich-kids-rush.md create mode 100644 docs/sdk/python/human_protocol_sdk.staking.staking_utils.md create mode 100644 docs/sdk/typescript/graphql/types/interfaces/IOperatorSubgraph.md create mode 100644 docs/sdk/typescript/graphql/types/interfaces/IReputationNetworkSubgraph.md create mode 100644 docs/sdk/typescript/graphql/types/type-aliases/CancellationRefundData.md delete mode 100644 docs/sdk/typescript/graphql/types/type-aliases/DailyEscrowData.md delete mode 100644 docs/sdk/typescript/graphql/types/type-aliases/DailyHMTData.md delete mode 100644 docs/sdk/typescript/graphql/types/type-aliases/DailyPaymentData.md delete mode 100644 docs/sdk/typescript/graphql/types/type-aliases/DailyTaskData.md delete mode 100644 docs/sdk/typescript/graphql/types/type-aliases/DailyWorkerData.md delete mode 100644 docs/sdk/typescript/graphql/types/type-aliases/EscrowStatistics.md delete mode 100644 docs/sdk/typescript/graphql/types/type-aliases/HMTHolder.md delete mode 100644 docs/sdk/typescript/graphql/types/type-aliases/HMTStatistics.md delete mode 100644 docs/sdk/typescript/graphql/types/type-aliases/IMData.md delete mode 100644 docs/sdk/typescript/graphql/types/type-aliases/IMDataEntity.md create mode 100644 docs/sdk/typescript/graphql/types/type-aliases/InternalTransactionData.md delete mode 100644 docs/sdk/typescript/graphql/types/type-aliases/PaymentStatistics.md create mode 100644 docs/sdk/typescript/graphql/types/type-aliases/PayoutData.md create mode 100644 docs/sdk/typescript/graphql/types/type-aliases/StakerData.md delete mode 100644 docs/sdk/typescript/graphql/types/type-aliases/TaskStatistics.md create mode 100644 docs/sdk/typescript/graphql/types/type-aliases/TransactionData.md create mode 100644 docs/sdk/typescript/graphql/types/type-aliases/WorkerData.md delete mode 100644 docs/sdk/typescript/graphql/types/type-aliases/WorkerStatistics.md create mode 100644 docs/sdk/typescript/interfaces/interfaces/ICancellationRefund.md create mode 100644 docs/sdk/typescript/interfaces/interfaces/ICancellationRefundFilter.md create mode 100644 docs/sdk/typescript/interfaces/interfaces/IDailyEscrow.md create mode 100644 docs/sdk/typescript/interfaces/interfaces/IDailyHMT.md create mode 100644 docs/sdk/typescript/interfaces/interfaces/IDailyPayment.md create mode 100644 docs/sdk/typescript/interfaces/interfaces/IDailyWorker.md create mode 100644 docs/sdk/typescript/interfaces/interfaces/IEscrowStatistics.md create mode 100644 docs/sdk/typescript/interfaces/interfaces/IEscrowWithdraw.md create mode 100644 docs/sdk/typescript/interfaces/interfaces/IHMTHolder.md create mode 100644 docs/sdk/typescript/interfaces/interfaces/IHMTStatistics.md delete mode 100644 docs/sdk/typescript/interfaces/interfaces/IOperatorSubgraph.md create mode 100644 docs/sdk/typescript/interfaces/interfaces/IPaymentStatistics.md create mode 100644 docs/sdk/typescript/interfaces/interfaces/IPayout.md delete mode 100644 docs/sdk/typescript/interfaces/interfaces/IReputationNetworkSubgraph.md create mode 100644 docs/sdk/typescript/interfaces/interfaces/IStaker.md create mode 100644 docs/sdk/typescript/interfaces/interfaces/IStakersFilter.md create mode 100644 docs/sdk/typescript/interfaces/interfaces/IStatusEvent.md create mode 100644 docs/sdk/typescript/interfaces/interfaces/IWorkerStatistics.md create mode 100644 docs/sdk/typescript/staking/classes/StakingUtils.md delete mode 100644 docs/sdk/typescript/types/type-aliases/EscrowCancel.md delete mode 100644 docs/sdk/typescript/types/type-aliases/EscrowWithdraw.md delete mode 100644 docs/sdk/typescript/types/type-aliases/Payout.md create mode 100644 packages/apps/fortune/exchange-oracle/server/src/database/migrations/1754660427175-EscrowCancellation.ts create mode 100644 packages/apps/job-launcher/server/src/database/migrations/1754660014999-EscrowCancellation.ts create mode 100644 packages/core/.openzeppelin/unknown-1313161555.json delete mode 100644 packages/core/contracts/test/USDT.sol delete mode 100644 packages/core/test/Escrow-USDT.ts rename packages/core/test/{ => governance}/DAOSpokeContract.ts (99%) rename packages/core/test/{ => governance}/GovernanceTypes.ts (100%) rename packages/core/test/{ => governance}/GovernanceUtils.ts (99%) rename packages/core/test/{ => governance}/MetaHumanGovernor.ts (99%) rename packages/core/test/{ => governance}/MetaHumanGovernorHubOnly.ts (99%) create mode 100644 packages/sdk/python/human-protocol-sdk/docs/human_protocol_sdk.staking.staking_utils.rst create mode 100644 packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/cancel.py create mode 100644 packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/staking.py create mode 100644 packages/sdk/python/human-protocol-sdk/human_protocol_sdk/staking/staking_utils.py create mode 100644 packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/staking/test_staking_utils.py create mode 100644 packages/sdk/typescript/human-protocol-sdk/example/staking.ts create mode 100644 packages/sdk/typescript/human-protocol-sdk/src/graphql/queries/staking.ts diff --git a/.changeset/early-words-arrive.md b/.changeset/early-words-arrive.md new file mode 100644 index 0000000000..f022b9a4f7 --- /dev/null +++ b/.changeset/early-words-arrive.md @@ -0,0 +1,8 @@ +--- +"@human-protocol/core": major +--- + +- Add new cancellation flow +- Introduce admin role +- Add the ability to create, fund and setup an escrow with only one transaction +- Store intermediateResultsHash diff --git a/.changeset/rich-kids-rush.md b/.changeset/rich-kids-rush.md new file mode 100644 index 0000000000..369a78adc6 --- /dev/null +++ b/.changeset/rich-kids-rush.md @@ -0,0 +1,10 @@ +--- +"@human-protocol/sdk": major +--- + +### Changed + +- Created proper Subgraph types and cast values to the interfaces we have for SDK +- Refactor EscrowUtils, TransactionUtils, OperatorUtils and WorkerUtils methods to fix mismatch types with Subgraph +- Created some mappings to remove duplicated code +- Add the ability to create, fund and setup an escrow with only one transaction diff --git a/.github/workflows/cd-gitbook-sdk-docs.yaml b/.github/workflows/cd-gitbook-sdk-docs.yaml index 33cbc63ca4..29c0a30136 100644 --- a/.github/workflows/cd-gitbook-sdk-docs.yaml +++ b/.github/workflows/cd-gitbook-sdk-docs.yaml @@ -3,7 +3,7 @@ name: Publish SDK Docs to GitBook on: push: tags: - - "sdk@*" + - "js/sdk@*" permissions: contents: read diff --git a/docs/sdk/python/human_protocol_sdk.constants.md b/docs/sdk/python/human_protocol_sdk.constants.md index fe660c84fe..54960e9341 100644 --- a/docs/sdk/python/human_protocol_sdk.constants.md +++ b/docs/sdk/python/human_protocol_sdk.constants.md @@ -103,3 +103,5 @@ Enum for escrow statuses. #### Partial *= 2* #### Pending *= 1* + +#### ToCancel *= 6* diff --git a/docs/sdk/python/human_protocol_sdk.escrow.escrow_client.md b/docs/sdk/python/human_protocol_sdk.escrow.escrow_client.md index 4daa504709..9a4dbaa4a2 100644 --- a/docs/sdk/python/human_protocol_sdk.escrow.escrow_client.md +++ b/docs/sdk/python/human_protocol_sdk.escrow.escrow_client.md @@ -74,25 +74,23 @@ Initializes a Escrow instance. * **Parameters:** **web3** (`Web3`) – The Web3 object -#### add_trusted_handlers(\*args, \*\*kwargs) - #### bulk_payout(\*args, \*\*kwargs) #### cancel(\*args, \*\*kwargs) #### complete(\*args, \*\*kwargs) -#### create_bulk_payout_transaction(escrow_address, recipients, amounts, final_results_url, final_results_hash, txId, force_complete=False, tx_options=None) +#### create_bulk_payout_transaction(escrow_address, recipients, amounts, final_results_url, final_results_hash, payoutId, force_complete=False, tx_options=None) Creates a prepared transaction for bulk payout without signing or sending it. * **Parameters:** * **escrow_address** (`str`) – Address of the escrow * **recipients** (`List`[`str`]) – Array of recipient addresses - * **amounts** (`List`[`Decimal`]) – Array of amounts the recipients will receive + * **amounts** (`List`[`int`]) – Array of amounts the recipients will receive * **final_results_url** (`str`) – Final results file URL * **final_results_hash** (`str`) – Final results file hash - * **txId** (`Decimal`) – Serial number of the bulks + * **payoutId** (`str`) – Unique identifier for the payout * **tx_options** (`Optional`[`TxParams`]) – (Optional) Additional transaction parameters * **Return type:** `TxParams` @@ -159,6 +157,8 @@ Creates a prepared transaction for bulk payout without signing or sending it. #### create_escrow(\*args, \*\*kwargs) +#### create_fund_and_setup_escrow(\*args, \*\*kwargs) + #### ensure_correct_bulk_payout_input(escrow_address, recipients, amounts, final_results_url, final_results_hash) Validates input parameters for bulk payout operations. @@ -166,7 +166,7 @@ Validates input parameters for bulk payout operations. * **Parameters:** * **escrow_address** (`str`) – Address of the escrow * **recipients** (`List`[`str`]) – Array of recipient addresses - * **amounts** (`List`[`Decimal`]) – Array of amounts the recipients will receive + * **amounts** (`List`[`int`]) – Array of amounts the recipients will receive * **final_results_url** (`str`) – Final results file URL * **final_results_hash** (`str`) – Final results file hash * **Return type:** @@ -185,7 +185,7 @@ Gets the balance for a specified escrow address. * **Parameters:** **escrow_address** (`str`) – Address of the escrow * **Return type:** - `Decimal` + `int` * **Returns:** Value of the balance * **Raises:** @@ -262,6 +262,34 @@ Gets the escrow factory address of the escrow. ) ``` +#### get_intermediate_results_hash(escrow_address) + +Gets the intermediate results file hash. + +* **Parameters:** + **escrow_address** (`str`) – Address of the escrow +* **Return type:** + `str` +* **Returns:** + Intermediate results file hash +* **Raises:** + [**EscrowClientError**](#human_protocol_sdk.escrow.escrow_client.EscrowClientError) – If an error occurs while checking the parameters +* **Example:** + ```python + from eth_typing import URI + from web3 import Web3 + from web3.providers.auto import load_provider_from_uri + + from human_protocol_sdk.escrow import EscrowClient + + w3 = Web3(load_provider_from_uri(URI("http://localhost:8545"))) + escrow_client = EscrowClient(w3) + + hash = escrow_client.get_intermediate_results_hash( + "0x62dD51230A30401C455c8398d06F85e4EaB6309f" + ) + ``` + #### get_intermediate_results_url(escrow_address) Gets the intermediate results file URL. @@ -430,6 +458,34 @@ Gets the reputation oracle address of the escrow. ) ``` +#### get_reserved_funds(escrow_address) + +Gets the reserved funds for a specified escrow address. + +* **Parameters:** + **escrow_address** (`str`) – Address of the escrow +* **Return type:** + `int` +* **Returns:** + Value of the reserved funds +* **Raises:** + [**EscrowClientError**](#human_protocol_sdk.escrow.escrow_client.EscrowClientError) – If an error occurs while checking the parameters +* **Example:** + ```python + from eth_typing import URI + from web3 import Web3 + from web3.providers.auto import load_provider_from_uri + + from human_protocol_sdk.escrow import EscrowClient + + w3 = Web3(load_provider_from_uri(URI("http://localhost:8545"))) + escrow_client = EscrowClient(w3) + + reserved_funds = escrow_client.get_reserved_funds( + "0x62dD51230A30401C455c8398d06F85e4EaB6309f" + ) + ``` + #### get_results_url(escrow_address) Gets the results file URL. @@ -514,6 +570,8 @@ Gets the address of the token used to fund the escrow. ) ``` +#### request_cancellation(\*args, \*\*kwargs) + #### setup(\*args, \*\*kwargs) #### store_results(\*args, \*\*kwargs) @@ -539,20 +597,20 @@ Initializes a Escrow instance. * **Parameters:** * **recording_oracle_address** (`str`) – Address of the Recording Oracle * **reputation_oracle_address** (`str`) – Address of the Reputation Oracle - * **recording_oracle_fee** (`Decimal`) – Fee percentage of the Recording Oracle - * **reputation_oracle_fee** (`Decimal`) – Fee percentage of the Reputation Oracle + * **recording_oracle_fee** (`int`) – Fee percentage of the Recording Oracle + * **reputation_oracle_fee** (`int`) – Fee percentage of the Reputation Oracle * **manifest** (`str`) – Manifest data (can be a URL or JSON string) * **hash** (`str`) – Manifest file hash -### *class* human_protocol_sdk.escrow.escrow_client.EscrowWithdraw(tx_hash, token_address, amount_withdrawn) +### *class* human_protocol_sdk.escrow.escrow_client.EscrowWithdraw(tx_hash, token_address, withdrawn_amount) Bases: `object` -#### \_\_init_\_(tx_hash, token_address, amount_withdrawn) +#### \_\_init_\_(tx_hash, token_address, withdrawn_amount) Represents the result of an escrow cancellation transaction. * **Parameters:** * **tx_hash** (`str`) – The hash of the transaction associated with the escrow withdrawal. * **token_address** (`str`) – The address of the token used for the withdrawal. - * **amount_withdrawn** (`any`) – The amount withdrawn from the escrow. + * **withdrawn_amount** (`any`) – The amount withdrawn from the escrow. diff --git a/docs/sdk/python/human_protocol_sdk.escrow.escrow_utils.md b/docs/sdk/python/human_protocol_sdk.escrow.escrow_utils.md index 53ce985248..523d05dd8d 100644 --- a/docs/sdk/python/human_protocol_sdk.escrow.escrow_utils.md +++ b/docs/sdk/python/human_protocol_sdk.escrow.escrow_utils.md @@ -22,11 +22,28 @@ print( ## Module -### *class* human_protocol_sdk.escrow.escrow_utils.EscrowData(chain_id, id, address, amount_paid, balance, count, factory_address, launcher, status, token, total_funded_amount, created_at, final_results_url=None, intermediate_results_url=None, manifest_hash=None, manifest=None, recording_oracle=None, reputation_oracle=None, exchange_oracle=None) +### *class* human_protocol_sdk.escrow.escrow_utils.CancellationRefund(id, escrow_address, receiver, amount, block, timestamp, tx_hash) Bases: `object` -#### \_\_init_\_(chain_id, id, address, amount_paid, balance, count, factory_address, launcher, status, token, total_funded_amount, created_at, final_results_url=None, intermediate_results_url=None, manifest_hash=None, manifest=None, recording_oracle=None, reputation_oracle=None, exchange_oracle=None) +Represents a cancellation refund event. + +* **Parameters:** + * **id** (`str`) – The unique identifier for the cancellation refund event. + * **escrow_address** (`str`) – The address of the escrow associated with the refund. + * **receiver** (`str`) – The address of the recipient receiving the refund. + * **amount** (`str`) – The amount being refunded. + * **block** (`str`) – The block number in which the refund was processed. + * **timestamp** (`str`) – The timestamp of the refund event in milliseconds. + * **tx_hash** (`str`) – The transaction hash of the refund event. + +#### \_\_init_\_(id, escrow_address, receiver, amount, block, timestamp, tx_hash) + +### *class* human_protocol_sdk.escrow.escrow_utils.EscrowData(chain_id, id, address, amount_paid, balance, count, factory_address, launcher, job_requester_id, status, token, total_funded_amount, created_at, final_results_url=None, final_results_hash=None, intermediate_results_url=None, intermediate_results_hash=None, manifest_hash=None, manifest=None, recording_oracle=None, reputation_oracle=None, exchange_oracle=None, recording_oracle_fee=None, reputation_oracle_fee=None, exchange_oracle_fee=None) + +Bases: `object` + +#### \_\_init_\_(chain_id, id, address, amount_paid, balance, count, factory_address, launcher, job_requester_id, status, token, total_funded_amount, created_at, final_results_url=None, final_results_hash=None, intermediate_results_url=None, intermediate_results_hash=None, manifest_hash=None, manifest=None, recording_oracle=None, reputation_oracle=None, exchange_oracle=None, recording_oracle_fee=None, reputation_oracle_fee=None, exchange_oracle_fee=None) Initializes an EscrowData instance. @@ -34,22 +51,28 @@ Initializes an EscrowData instance. * **chain_id** ([`ChainId`](human_protocol_sdk.constants.md#human_protocol_sdk.constants.ChainId)) – Chain identifier * **id** (`str`) – Identifier * **address** (`str`) – Address - * **amount_paid** (`int`) – Amount paid - * **balance** (`int`) – Balance - * **count** (`int`) – Count + * **amount_paid** (`str`) – Amount paid + * **balance** (`str`) – Balance + * **count** (`str`) – Count * **factory_address** (`str`) – Factory address * **launcher** (`str`) – Launcher + * **job_requester_id** (`Optional`[`str`]) – Job requester identifier * **status** (`str`) – Status * **token** (`str`) – Token - * **total_funded_amount** (`int`) – Total funded amount - * **created_at** (`datetime`) – Creation date + * **total_funded_amount** (`str`) – Total funded amount + * **created_at** (`str`) – Creation timestamp in milliseconds * **final_results_url** (`Optional`[`str`]) – URL for final results. + * **final_results_hash** (`Optional`[`str`]) – Hash for final results. * **intermediate_results_url** (`Optional`[`str`]) – URL for intermediate results. + * **intermediate_results_hash** (`Optional`[`str`]) – Hash for intermediate results. * **manifest_hash** (`Optional`[`str`]) – Manifest hash. * **manifest** (`Optional`[`str`]) – Manifest data (JSON/URL). * **recording_oracle** (`Optional`[`str`]) – Recording Oracle address. * **reputation_oracle** (`Optional`[`str`]) – Reputation Oracle address. * **exchange_oracle** (`Optional`[`str`]) – Exchange Oracle address. + * **recording_oracle_fee** (`Optional`[`str`]) – Fee for the Recording Oracle. + * **reputation_oracle_fee** (`Optional`[`str`]) – Fee for the Reputation Oracle. + * **exchange_oracle_fee** (`Optional`[`str`]) – Fee for the Exchange Oracle. ### *class* human_protocol_sdk.escrow.escrow_utils.EscrowUtils @@ -57,6 +80,43 @@ Bases: `object` A utility class that provides additional escrow-related functionalities. +#### *static* get_cancellation_refund(chain_id, escrow_address) + +Returns the cancellation refund for a given escrow address. + +* **Parameters:** + * **chain_id** ([`ChainId`](human_protocol_sdk.constants.md#human_protocol_sdk.constants.ChainId)) – Network in which the escrow has been deployed + * **escrow_address** (`str`) – Address of the escrow +* **Return type:** + [`CancellationRefund`](#human_protocol_sdk.escrow.escrow_utils.CancellationRefund) +* **Returns:** + CancellationRefund data or None +* **Raises:** + [**EscrowClientError**](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClientError) – If an unsupported chain ID or invalid address is provided. +* **Example:** + ```python + from human_protocol_sdk.constants import ChainId + from human_protocol_sdk.escrow import EscrowUtils + + refund = EscrowUtils.get_cancellation_refund( + ChainId.POLYGON_AMOY, + "0x1234567890123456789012345678901234567890" + ) + ``` + +#### *static* get_cancellation_refunds(filter) + +Fetch cancellation refunds from the subgraph based on the provided filter. + +* **Parameters:** + **filter** ([`CancellationRefundFilter`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.CancellationRefundFilter)) – Object containing all the necessary parameters to filter cancellation refunds. +* **Return List[CancellationRefund]:** + List of cancellation refunds matching the query parameters. +* **Raises:** + [**EscrowClientError**](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClientError) – If an unsupported chain ID or invalid addresses are provided. +* **Return type:** + `List`[[`CancellationRefund`](#human_protocol_sdk.escrow.escrow_utils.CancellationRefund)] + #### *static* get_escrow(chain_id, escrow_address) Returns the escrow for a given address. @@ -145,8 +205,8 @@ Initializes a Payout instance. * **chain_id** – The chain identifier where the payout occurred. * **escrow_address** (`str`) – The address of the escrow that executed the payout. * **recipient** (`str`) – The address of the recipient. - * **amount** (`int`) – The amount of the payout. - * **created_at** (`int`) – The time of creation of the payout. + * **amount** (`str`) – The amount of the payout. + * **created_at** (`str`) – The time of creation of the payout in milliseconds. #### \_\_init_\_(id, escrow_address, recipient, amount, created_at) @@ -157,7 +217,7 @@ Bases: `object` Initializes a StatusEvent instance. * **Parameters:** - * **timestamp** (`int`) – The timestamp of the event. + * **timestamp** (`int`) – The timestamp of the event in milliseconds. * **status** (`str`) – The status of the escrow. * **chain_id** ([`ChainId`](human_protocol_sdk.constants.md#human_protocol_sdk.constants.ChainId)) – The chain identifier where the event occurred. * **escrow_address** (`str`) – The address of the escrow. diff --git a/docs/sdk/python/human_protocol_sdk.escrow.md b/docs/sdk/python/human_protocol_sdk.escrow.md index 2e5c4e2e8b..59aeb91819 100644 --- a/docs/sdk/python/human_protocol_sdk.escrow.md +++ b/docs/sdk/python/human_protocol_sdk.escrow.md @@ -12,26 +12,29 @@ obtain information from both the contracts and subgraph. * [`EscrowCancel.__init__()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowCancel.__init__) * [`EscrowClient`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient) * [`EscrowClient.__init__()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.__init__) - * [`EscrowClient.add_trusted_handlers()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.add_trusted_handlers) * [`EscrowClient.bulk_payout()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.bulk_payout) * [`EscrowClient.cancel()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.cancel) * [`EscrowClient.complete()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.complete) * [`EscrowClient.create_bulk_payout_transaction()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.create_bulk_payout_transaction) * [`EscrowClient.create_escrow()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.create_escrow) + * [`EscrowClient.create_fund_and_setup_escrow()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.create_fund_and_setup_escrow) * [`EscrowClient.ensure_correct_bulk_payout_input()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.ensure_correct_bulk_payout_input) * [`EscrowClient.fund()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.fund) * [`EscrowClient.get_balance()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.get_balance) * [`EscrowClient.get_exchange_oracle_address()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.get_exchange_oracle_address) * [`EscrowClient.get_factory_address()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.get_factory_address) + * [`EscrowClient.get_intermediate_results_hash()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.get_intermediate_results_hash) * [`EscrowClient.get_intermediate_results_url()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.get_intermediate_results_url) * [`EscrowClient.get_job_launcher_address()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.get_job_launcher_address) * [`EscrowClient.get_manifest()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.get_manifest) * [`EscrowClient.get_manifest_hash()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.get_manifest_hash) * [`EscrowClient.get_recording_oracle_address()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.get_recording_oracle_address) * [`EscrowClient.get_reputation_oracle_address()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.get_reputation_oracle_address) + * [`EscrowClient.get_reserved_funds()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.get_reserved_funds) * [`EscrowClient.get_results_url()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.get_results_url) * [`EscrowClient.get_status()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.get_status) * [`EscrowClient.get_token_address()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.get_token_address) + * [`EscrowClient.request_cancellation()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.request_cancellation) * [`EscrowClient.setup()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.setup) * [`EscrowClient.store_results()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.store_results) * [`EscrowClient.withdraw()`](human_protocol_sdk.escrow.escrow_client.md#human_protocol_sdk.escrow.escrow_client.EscrowClient.withdraw) @@ -43,9 +46,13 @@ obtain information from both the contracts and subgraph. * [human_protocol_sdk.escrow.escrow_utils module](human_protocol_sdk.escrow.escrow_utils.md) * [Code Example](human_protocol_sdk.escrow.escrow_utils.md#code-example) * [Module](human_protocol_sdk.escrow.escrow_utils.md#module) + * [`CancellationRefund`](human_protocol_sdk.escrow.escrow_utils.md#human_protocol_sdk.escrow.escrow_utils.CancellationRefund) + * [`CancellationRefund.__init__()`](human_protocol_sdk.escrow.escrow_utils.md#human_protocol_sdk.escrow.escrow_utils.CancellationRefund.__init__) * [`EscrowData`](human_protocol_sdk.escrow.escrow_utils.md#human_protocol_sdk.escrow.escrow_utils.EscrowData) * [`EscrowData.__init__()`](human_protocol_sdk.escrow.escrow_utils.md#human_protocol_sdk.escrow.escrow_utils.EscrowData.__init__) * [`EscrowUtils`](human_protocol_sdk.escrow.escrow_utils.md#human_protocol_sdk.escrow.escrow_utils.EscrowUtils) + * [`EscrowUtils.get_cancellation_refund()`](human_protocol_sdk.escrow.escrow_utils.md#human_protocol_sdk.escrow.escrow_utils.EscrowUtils.get_cancellation_refund) + * [`EscrowUtils.get_cancellation_refunds()`](human_protocol_sdk.escrow.escrow_utils.md#human_protocol_sdk.escrow.escrow_utils.EscrowUtils.get_cancellation_refunds) * [`EscrowUtils.get_escrow()`](human_protocol_sdk.escrow.escrow_utils.md#human_protocol_sdk.escrow.escrow_utils.EscrowUtils.get_escrow) * [`EscrowUtils.get_escrows()`](human_protocol_sdk.escrow.escrow_utils.md#human_protocol_sdk.escrow.escrow_utils.EscrowUtils.get_escrows) * [`EscrowUtils.get_payouts()`](human_protocol_sdk.escrow.escrow_utils.md#human_protocol_sdk.escrow.escrow_utils.EscrowUtils.get_payouts) diff --git a/docs/sdk/python/human_protocol_sdk.filter.md b/docs/sdk/python/human_protocol_sdk.filter.md index a4fdc897cd..208bc0947e 100644 --- a/docs/sdk/python/human_protocol_sdk.filter.md +++ b/docs/sdk/python/human_protocol_sdk.filter.md @@ -1,5 +1,31 @@ # human_protocol_sdk.filter module +### *class* human_protocol_sdk.filter.CancellationRefundFilter(chain_id, escrow_address=None, receiver=None, date_from=None, date_to=None, first=10, skip=0, order_direction=OrderDirection.DESC) + +Bases: `object` + +A class used to filter cancellation refunds. + +#### \_\_init_\_(chain_id, escrow_address=None, receiver=None, date_from=None, date_to=None, first=10, skip=0, order_direction=OrderDirection.DESC) + +Initializes a CancellationRefundFilter instance. +:type chain_id: [`ChainId`](human_protocol_sdk.constants.md#human_protocol_sdk.constants.ChainId) +:param chain_id: Chain ID to request data +:type escrow_address: `Optional`[`str`] +:param escrow_address: Address of the escrow to filter by +:type receiver: `Optional`[`str`] +:param receiver: Address of the receiver to filter by +:type date_from: `Optional`[`datetime`] +:param date_from: Start date for filtering +:type date_to: `Optional`[`datetime`] +:param date_to: End date for filtering +:type first: `int` +:param first: Number of items per page +:type skip: `int` +:param skip: Number of items to skip (for pagination) +:type order_direction: [`OrderDirection`](human_protocol_sdk.constants.md#human_protocol_sdk.constants.OrderDirection) +:param order_direction: Order direction of results, “asc” or “desc” + ### *class* human_protocol_sdk.filter.EscrowFilter(chain_id, launcher=None, reputation_oracle=None, recording_oracle=None, exchange_oracle=None, job_requester_id=None, status=None, date_from=None, date_to=None, first=10, skip=0, order_direction=OrderDirection.DESC) Bases: `object` @@ -50,6 +76,12 @@ Initializes a filter for payouts. * **skip** (`int`) – Optional number of payouts to skip. Default is 0. * **order_direction** ([`OrderDirection`](human_protocol_sdk.constants.md#human_protocol_sdk.constants.OrderDirection)) – Optional order direction. Default is DESC. +### *class* human_protocol_sdk.filter.StakersFilter(chain_id, min_staked_amount=None, max_staked_amount=None, min_locked_amount=None, max_locked_amount=None, min_withdrawn_amount=None, max_withdrawn_amount=None, min_slashed_amount=None, max_slashed_amount=None, order_by='lastDepositTimestamp', order_direction=OrderDirection.DESC, first=10, skip=0) + +Bases: `object` + +#### \_\_init_\_(chain_id, min_staked_amount=None, max_staked_amount=None, min_locked_amount=None, max_locked_amount=None, min_withdrawn_amount=None, max_withdrawn_amount=None, min_slashed_amount=None, max_slashed_amount=None, order_by='lastDepositTimestamp', order_direction=OrderDirection.DESC, first=10, skip=0) + ### *class* human_protocol_sdk.filter.StatisticsFilter(date_from=None, date_to=None, first=10, skip=0, order_direction=OrderDirection.ASC) Bases: `object` diff --git a/docs/sdk/python/human_protocol_sdk.kvstore.kvstore_client.md b/docs/sdk/python/human_protocol_sdk.kvstore.kvstore_client.md index 80793dd083..4b4e8495bf 100644 --- a/docs/sdk/python/human_protocol_sdk.kvstore.kvstore_client.md +++ b/docs/sdk/python/human_protocol_sdk.kvstore.kvstore_client.md @@ -70,9 +70,22 @@ Gets the value of a key-value pair in the contract. :param address: The Ethereum address associated with the key-value pair :type key: `str` :param key: The key of the key-value pair to get -:rtype: `str` -:return: The value of the key-value pair if it exists -:example: + +* **Return type:** + `str` +* **Returns:** + The value of the key-value pair if it exists +* **Example:** + ```python + from eth_typing import URI + from web3 import Web3 + from web3.providers.auto import load_provider_from_uri + from human_protocol_sdk.kvstore import KVStoreClient + + w3 = Web3(load_provider_from_uri(URI("http://localhost:8545"))) + kvstore_client = KVStoreClient(w3) + role = kvstore_client.get('0x62dD51230A30401C455c8398d06F85e4EaB6309f', 'Role') + ``` #### set(\*args, \*\*kwargs) diff --git a/docs/sdk/python/human_protocol_sdk.md b/docs/sdk/python/human_protocol_sdk.md index 7cb3f24577..f9b2b46775 100644 --- a/docs/sdk/python/human_protocol_sdk.md +++ b/docs/sdk/python/human_protocol_sdk.md @@ -44,6 +44,7 @@ * [human_protocol_sdk.escrow.escrow_utils module](human_protocol_sdk.escrow.escrow_utils.md) * [Code Example](human_protocol_sdk.escrow.escrow_utils.md#code-example) * [Module](human_protocol_sdk.escrow.escrow_utils.md#module) + * [`CancellationRefund`](human_protocol_sdk.escrow.escrow_utils.md#human_protocol_sdk.escrow.escrow_utils.CancellationRefund) * [`EscrowData`](human_protocol_sdk.escrow.escrow_utils.md#human_protocol_sdk.escrow.escrow_utils.EscrowData) * [`EscrowUtils`](human_protocol_sdk.escrow.escrow_utils.md#human_protocol_sdk.escrow.escrow_utils.EscrowUtils) * [`Payout`](human_protocol_sdk.escrow.escrow_utils.md#human_protocol_sdk.escrow.escrow_utils.Payout) @@ -77,6 +78,12 @@ * [Module](human_protocol_sdk.staking.staking_client.md#module) * [`StakingClient`](human_protocol_sdk.staking.staking_client.md#human_protocol_sdk.staking.staking_client.StakingClient) * [`StakingClientError`](human_protocol_sdk.staking.staking_client.md#human_protocol_sdk.staking.staking_client.StakingClientError) + * [human_protocol_sdk.staking.staking_utils module](human_protocol_sdk.staking.staking_utils.md) + * [Code Example](human_protocol_sdk.staking.staking_utils.md#code-example) + * [Module](human_protocol_sdk.staking.staking_utils.md#module) + * [`StakerData`](human_protocol_sdk.staking.staking_utils.md#human_protocol_sdk.staking.staking_utils.StakerData) + * [`StakingUtils`](human_protocol_sdk.staking.staking_utils.md#human_protocol_sdk.staking.staking_utils.StakingUtils) + * [`StakingUtilsError`](human_protocol_sdk.staking.staking_utils.md#human_protocol_sdk.staking.staking_utils.StakingUtilsError) * [human_protocol_sdk.statistics package](human_protocol_sdk.statistics.md) * [Submodules](human_protocol_sdk.statistics.md#submodules) * [human_protocol_sdk.statistics.statistics_client module](human_protocol_sdk.statistics.statistics_client.md) @@ -164,12 +171,17 @@ * [`Status.Paid`](human_protocol_sdk.constants.md#human_protocol_sdk.constants.Status.Paid) * [`Status.Partial`](human_protocol_sdk.constants.md#human_protocol_sdk.constants.Status.Partial) * [`Status.Pending`](human_protocol_sdk.constants.md#human_protocol_sdk.constants.Status.Pending) + * [`Status.ToCancel`](human_protocol_sdk.constants.md#human_protocol_sdk.constants.Status.ToCancel) * [human_protocol_sdk.filter module](human_protocol_sdk.filter.md) + * [`CancellationRefundFilter`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.CancellationRefundFilter) + * [`CancellationRefundFilter.__init__()`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.CancellationRefundFilter.__init__) * [`EscrowFilter`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.EscrowFilter) * [`EscrowFilter.__init__()`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.EscrowFilter.__init__) * [`FilterError`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.FilterError) * [`PayoutFilter`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.PayoutFilter) * [`PayoutFilter.__init__()`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.PayoutFilter.__init__) + * [`StakersFilter`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.StakersFilter) + * [`StakersFilter.__init__()`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.StakersFilter.__init__) * [`StatisticsFilter`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.StatisticsFilter) * [`StatisticsFilter.__init__()`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.StatisticsFilter.__init__) * [`StatusEventFilter`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.StatusEventFilter) @@ -193,6 +205,7 @@ * [`Encryption.is_encrypted()`](human_protocol_sdk.legacy_encryption.md#human_protocol_sdk.legacy_encryption.Encryption.is_encrypted) * [`InvalidPublicKey`](human_protocol_sdk.legacy_encryption.md#human_protocol_sdk.legacy_encryption.InvalidPublicKey) * [human_protocol_sdk.utils module](human_protocol_sdk.utils.md) + * [`apply_tx_defaults()`](human_protocol_sdk.utils.md#human_protocol_sdk.utils.apply_tx_defaults) * [`get_contract_interface()`](human_protocol_sdk.utils.md#human_protocol_sdk.utils.get_contract_interface) * [`get_data_from_subgraph()`](human_protocol_sdk.utils.md#human_protocol_sdk.utils.get_data_from_subgraph) * [`get_erc20_interface()`](human_protocol_sdk.utils.md#human_protocol_sdk.utils.get_erc20_interface) diff --git a/docs/sdk/python/human_protocol_sdk.operator.operator_utils.md b/docs/sdk/python/human_protocol_sdk.operator.operator_utils.md index a415b09ff3..84b76cac89 100644 --- a/docs/sdk/python/human_protocol_sdk.operator.operator_utils.md +++ b/docs/sdk/python/human_protocol_sdk.operator.operator_utils.md @@ -17,11 +17,11 @@ print( ## Module -### *class* human_protocol_sdk.operator.operator_utils.OperatorData(chain_id, id, address, amount_staked, amount_locked, locked_until_timestamp, amount_withdrawn, amount_slashed, reward, amount_jobs_processed, role=None, fee=None, public_key=None, webhook_url=None, website=None, url=None, job_types=None, registration_needed=None, registration_instructions=None, reputation_networks=None, name=None, category=None) +### *class* human_protocol_sdk.operator.operator_utils.OperatorData(chain_id, id, address, amount_jobs_processed, reputation_networks, staked_amount=None, locked_amount=None, locked_until_timestamp=None, withdrawn_amount=None, slashed_amount=None, role=None, fee=None, public_key=None, webhook_url=None, website=None, url=None, job_types=None, registration_needed=None, registration_instructions=None, name=None, category=None) Bases: `object` -#### \_\_init_\_(chain_id, id, address, amount_staked, amount_locked, locked_until_timestamp, amount_withdrawn, amount_slashed, reward, amount_jobs_processed, role=None, fee=None, public_key=None, webhook_url=None, website=None, url=None, job_types=None, registration_needed=None, registration_instructions=None, reputation_networks=None, name=None, category=None) +#### \_\_init_\_(chain_id, id, address, amount_jobs_processed, reputation_networks, staked_amount=None, locked_amount=None, locked_until_timestamp=None, withdrawn_amount=None, slashed_amount=None, role=None, fee=None, public_key=None, webhook_url=None, website=None, url=None, job_types=None, registration_needed=None, registration_instructions=None, name=None, category=None) Initializes a OperatorData instance. @@ -29,40 +29,39 @@ Initializes a OperatorData instance. * **chain_id** ([`ChainId`](human_protocol_sdk.constants.md#human_protocol_sdk.constants.ChainId)) – Chain Identifier * **id** (`str`) – Identifier * **address** (`str`) – Address - * **amount_staked** (`int`) – Amount staked - * **amount_locked** (`int`) – Amount locked - * **locked_until_timestamp** (`int`) – Locked until timestamp - * **amount_withdrawn** (`int`) – Amount withdrawn - * **amount_slashed** (`int`) – Amount slashed - * **reward** (`int`) – Reward - * **amount_jobs_processed** (`int`) – Amount of jobs launched + * **staked_amount** (`Optional`[`str`]) – Amount staked + * **locked_amount** (`Optional`[`str`]) – Amount locked + * **locked_until_timestamp** (`Optional`[`str`]) – Locked until timestamp + * **withdrawn_amount** (`Optional`[`str`]) – Amount withdrawn + * **slashed_amount** (`Optional`[`str`]) – Amount slashed + * **amount_jobs_processed** (`str`) – Amount of jobs launched * **role** (`Optional`[`str`]) – Role - * **fee** (`Optional`[`int`]) – Fee + * **fee** (`Optional`[`str`]) – Fee * **public_key** (`Optional`[`str`]) – Public key * **webhook_url** (`Optional`[`str`]) – Webhook URL * **website** (`Optional`[`str`]) – Website URL * **url** (`Optional`[`str`]) – URL - * **job_types** (`Optional`[`List`[`str`]]) – Job types + * **job_types** (`Union`[`List`[`str`], `str`, `None`]) – Job types * **registration_needed** (`Optional`[`bool`]) – Whether registration is needed * **registration_instructions** (`Optional`[`str`]) – Registration instructions - * **reputation_networks** (`Optional`[`List`[`str`]]) – List of reputation networks + * **reputation_networks** (`Union`[`List`[`str`], `str`]) – List of reputation networks * **name** (`Optional`[`str`]) – Name * **category** (`Optional`[`str`]) – Category -### *class* human_protocol_sdk.operator.operator_utils.OperatorFilter(chain_id, roles=[], min_amount_staked=None, order_by=None, order_direction=OrderDirection.DESC, first=10, skip=0) +### *class* human_protocol_sdk.operator.operator_utils.OperatorFilter(chain_id, roles=[], min_staked_amount=None, order_by=None, order_direction=OrderDirection.DESC, first=10, skip=0) Bases: `object` A class used to filter operators. -#### \_\_init_\_(chain_id, roles=[], min_amount_staked=None, order_by=None, order_direction=OrderDirection.DESC, first=10, skip=0) +#### \_\_init_\_(chain_id, roles=[], min_staked_amount=None, order_by=None, order_direction=OrderDirection.DESC, first=10, skip=0) Initializes a OperatorFilter instance. * **Parameters:** * **chain_id** ([`ChainId`](human_protocol_sdk.constants.md#human_protocol_sdk.constants.ChainId)) – Chain ID to request data * **roles** (`Optional`[`str`]) – Roles to filter by - * **min_amount_staked** (`Optional`[`int`]) – Minimum amount staked to filter by + * **min_staked_amount** (`Optional`[`int`]) – Minimum amount staked to filter by * **order_by** (`Optional`[`str`]) – Property to order by, e.g., “role” * **order_direction** ([`OrderDirection`](human_protocol_sdk.constants.md#human_protocol_sdk.constants.OrderDirection)) – Order direction of results, “asc” or “desc” * **first** (`int`) – Number of items per page diff --git a/docs/sdk/python/human_protocol_sdk.staking.md b/docs/sdk/python/human_protocol_sdk.staking.md index b4e35a7a66..04a5aea76f 100644 --- a/docs/sdk/python/human_protocol_sdk.staking.md +++ b/docs/sdk/python/human_protocol_sdk.staking.md @@ -17,3 +17,12 @@ obtain staking information from both the contracts and subgraph. * [`StakingClient.unstake()`](human_protocol_sdk.staking.staking_client.md#human_protocol_sdk.staking.staking_client.StakingClient.unstake) * [`StakingClient.withdraw()`](human_protocol_sdk.staking.staking_client.md#human_protocol_sdk.staking.staking_client.StakingClient.withdraw) * [`StakingClientError`](human_protocol_sdk.staking.staking_client.md#human_protocol_sdk.staking.staking_client.StakingClientError) +* [human_protocol_sdk.staking.staking_utils module](human_protocol_sdk.staking.staking_utils.md) + * [Code Example](human_protocol_sdk.staking.staking_utils.md#code-example) + * [Module](human_protocol_sdk.staking.staking_utils.md#module) + * [`StakerData`](human_protocol_sdk.staking.staking_utils.md#human_protocol_sdk.staking.staking_utils.StakerData) + * [`StakerData.__init__()`](human_protocol_sdk.staking.staking_utils.md#human_protocol_sdk.staking.staking_utils.StakerData.__init__) + * [`StakingUtils`](human_protocol_sdk.staking.staking_utils.md#human_protocol_sdk.staking.staking_utils.StakingUtils) + * [`StakingUtils.get_staker()`](human_protocol_sdk.staking.staking_utils.md#human_protocol_sdk.staking.staking_utils.StakingUtils.get_staker) + * [`StakingUtils.get_stakers()`](human_protocol_sdk.staking.staking_utils.md#human_protocol_sdk.staking.staking_utils.StakingUtils.get_stakers) + * [`StakingUtilsError`](human_protocol_sdk.staking.staking_utils.md#human_protocol_sdk.staking.staking_utils.StakingUtilsError) diff --git a/docs/sdk/python/human_protocol_sdk.staking.staking_utils.md b/docs/sdk/python/human_protocol_sdk.staking.staking_utils.md new file mode 100644 index 0000000000..a22d644195 --- /dev/null +++ b/docs/sdk/python/human_protocol_sdk.staking.staking_utils.md @@ -0,0 +1,49 @@ +# human_protocol_sdk.staking.staking_utils module + +Utility class for staking-related operations. + +## Code Example + +```python +from human_protocol_sdk.constants import ChainId +from human_protocol_sdk.staking.staking_utils import StakingUtils, StakersFilter + +stakers = StakingUtils.get_stakers( + StakersFilter( + chain_id=ChainId.POLYGON_AMOY, + min_staked_amount="1000000000000000000", + max_locked_amount="5000000000000000000", + order_by="withdrawnAmount", + order_direction="asc", + first=5, + skip=0, + ) +) +print("Filtered stakers:", stakers) +``` + +## Module + +### *class* human_protocol_sdk.staking.staking_utils.StakerData(id, address, staked_amount, locked_amount, withdrawn_amount, slashed_amount, locked_until_timestamp, last_deposit_timestamp) + +Bases: `object` + +#### \_\_init_\_(id, address, staked_amount, locked_amount, withdrawn_amount, slashed_amount, locked_until_timestamp, last_deposit_timestamp) + +### *class* human_protocol_sdk.staking.staking_utils.StakingUtils + +Bases: `object` + +#### *static* get_staker(chain_id, address) + +* **Return type:** + `Optional`[[`StakerData`](#human_protocol_sdk.staking.staking_utils.StakerData)] + +#### *static* get_stakers(filter) + +* **Return type:** + `List`[[`StakerData`](#human_protocol_sdk.staking.staking_utils.StakerData)] + +### *exception* human_protocol_sdk.staking.staking_utils.StakingUtilsError + +Bases: `Exception` diff --git a/docs/sdk/python/human_protocol_sdk.utils.md b/docs/sdk/python/human_protocol_sdk.utils.md index 45fa0a776e..80251be352 100644 --- a/docs/sdk/python/human_protocol_sdk.utils.md +++ b/docs/sdk/python/human_protocol_sdk.utils.md @@ -1,5 +1,21 @@ # human_protocol_sdk.utils module +### human_protocol_sdk.utils.apply_tx_defaults(w3, tx_options) + +Apply network specific default transaction parameters. + +Aurora networks enforce a fixed gas price. We always override any user supplied +gasPrice with DEFAULT_AURORA_GAS_PRICE when on Aurora Testnet. +EIP-1559 fields are removed to avoid conflicts. + +* **Parameters:** + * **w3** (`Web3`) – Web3 instance (used to read chain id) + * **tx_options** (`Optional`[`TxParams`]) – Original transaction options (can be None) +* **Return type:** + `TxParams` +* **Returns:** + Mutated tx options with enforced defaults + ### human_protocol_sdk.utils.get_contract_interface(contract_entrypoint) Retrieve the contract interface of a given contract. @@ -52,7 +68,7 @@ Get HMT balance * **token_addr** – ERC-20 contract * **w3** – Web3 instance * **Returns:** - Decimal with HMT balance + HMT balance (wei) ### human_protocol_sdk.utils.get_kvstore_interface() diff --git a/docs/sdk/python/human_protocol_sdk.worker.worker_utils.md b/docs/sdk/python/human_protocol_sdk.worker.worker_utils.md index 91dea1a87c..7a5660d332 100644 --- a/docs/sdk/python/human_protocol_sdk.worker.worker_utils.md +++ b/docs/sdk/python/human_protocol_sdk.worker.worker_utils.md @@ -11,8 +11,8 @@ Initializes a WorkerData instance. * **Parameters:** * **id** (`str`) – Worker ID * **address** (`str`) – Worker address - * **total_amount_received** (`int`) – Total amount received by the worker - * **payout_count** (`int`) – Number of payouts received by the worker + * **total_amount_received** (`str`) – Total amount received by the worker + * **payout_count** (`str`) – Number of payouts received by the worker ### *class* human_protocol_sdk.worker.worker_utils.WorkerUtils diff --git a/docs/sdk/python/index.md b/docs/sdk/python/index.md index 1939b9d54e..7fd6c6bd8f 100644 --- a/docs/sdk/python/index.md +++ b/docs/sdk/python/index.md @@ -53,9 +53,11 @@ pip install human-protocol-sdk[agreement] * [`Role`](human_protocol_sdk.constants.md#human_protocol_sdk.constants.Role) * [`Status`](human_protocol_sdk.constants.md#human_protocol_sdk.constants.Status) * [human_protocol_sdk.filter module](human_protocol_sdk.filter.md) + * [`CancellationRefundFilter`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.CancellationRefundFilter) * [`EscrowFilter`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.EscrowFilter) * [`FilterError`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.FilterError) * [`PayoutFilter`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.PayoutFilter) + * [`StakersFilter`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.StakersFilter) * [`StatisticsFilter`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.StatisticsFilter) * [`StatusEventFilter`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.StatusEventFilter) * [`TransactionFilter`](human_protocol_sdk.filter.md#human_protocol_sdk.filter.TransactionFilter) @@ -65,6 +67,7 @@ pip install human-protocol-sdk[agreement] * [`Encryption`](human_protocol_sdk.legacy_encryption.md#human_protocol_sdk.legacy_encryption.Encryption) * [`InvalidPublicKey`](human_protocol_sdk.legacy_encryption.md#human_protocol_sdk.legacy_encryption.InvalidPublicKey) * [human_protocol_sdk.utils module](human_protocol_sdk.utils.md) + * [`apply_tx_defaults()`](human_protocol_sdk.utils.md#human_protocol_sdk.utils.apply_tx_defaults) * [`get_contract_interface()`](human_protocol_sdk.utils.md#human_protocol_sdk.utils.get_contract_interface) * [`get_data_from_subgraph()`](human_protocol_sdk.utils.md#human_protocol_sdk.utils.get_data_from_subgraph) * [`get_erc20_interface()`](human_protocol_sdk.utils.md#human_protocol_sdk.utils.get_erc20_interface) diff --git a/docs/sdk/typescript/base/classes/BaseEthersClient.md b/docs/sdk/typescript/base/classes/BaseEthersClient.md index 2aeb2817a5..0edcb18a15 100644 --- a/docs/sdk/typescript/base/classes/BaseEthersClient.md +++ b/docs/sdk/typescript/base/classes/BaseEthersClient.md @@ -4,9 +4,9 @@ [@human-protocol/sdk](../../modules.md) / [base](../README.md) / BaseEthersClient -# Class: `abstract` BaseEthersClient +# Abstract Class: BaseEthersClient -Defined in: [base.ts:12](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L12) +Defined in: [base.ts:12](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L12) ## Introduction @@ -24,7 +24,7 @@ This class is used as a base class for other clients making on-chain calls. > **new BaseEthersClient**(`runner`, `networkData`): `BaseEthersClient` -Defined in: [base.ts:22](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L22) +Defined in: [base.ts:22](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L22) **BaseClient constructor** @@ -52,7 +52,7 @@ The network information required to connect to the contracts > **networkData**: [`NetworkData`](../../types/type-aliases/NetworkData.md) -Defined in: [base.ts:14](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L14) +Defined in: [base.ts:14](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L14) *** @@ -60,7 +60,7 @@ Defined in: [base.ts:14](https://github.com/humanprotocol/human-protocol/blob/2f > `protected` **runner**: `ContractRunner` -Defined in: [base.ts:13](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L13) +Defined in: [base.ts:13](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L13) ## Methods @@ -68,7 +68,7 @@ Defined in: [base.ts:13](https://github.com/humanprotocol/human-protocol/blob/2f > `protected` **applyTxDefaults**(`txOptions`): `Overrides` -Defined in: [base.ts:35](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L35) +Defined in: [base.ts:35](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L35) Internal helper to enrich transaction overrides with network specific defaults. diff --git a/docs/sdk/typescript/encryption/classes/Encryption.md b/docs/sdk/typescript/encryption/classes/Encryption.md index 90beb70c41..b681701bd4 100644 --- a/docs/sdk/typescript/encryption/classes/Encryption.md +++ b/docs/sdk/typescript/encryption/classes/Encryption.md @@ -6,7 +6,7 @@ # Class: Encryption -Defined in: [encryption.ts:58](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L58) +Defined in: [encryption.ts:58](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L58) ## Introduction @@ -53,7 +53,7 @@ const encryption = await Encryption.build(privateKey, passphrase); > **new Encryption**(`privateKey`): `Encryption` -Defined in: [encryption.ts:66](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L66) +Defined in: [encryption.ts:66](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L66) Constructor for the Encryption class. @@ -75,7 +75,7 @@ The private key. > **decrypt**(`message`, `publicKey?`): `Promise`\<`Uint8Array`\<`ArrayBufferLike`\>\> -Defined in: [encryption.ts:194](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L194) +Defined in: [encryption.ts:194](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L194) This function decrypts messages using the private key. In addition, the public key can be added for signature verification. @@ -129,7 +129,7 @@ const resultMessage = await encryption.decrypt('message'); > **sign**(`message`): `Promise`\<`string`\> -Defined in: [encryption.ts:251](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L251) +Defined in: [encryption.ts:251](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L251) This function signs a message using the private key used to initialize the client. @@ -165,7 +165,7 @@ const resultMessage = await encryption.sign('message'); > **signAndEncrypt**(`message`, `publicKeys`): `Promise`\<`string`\> -Defined in: [encryption.ts:142](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L142) +Defined in: [encryption.ts:142](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L142) This function signs and encrypts a message using the private key used to initialize the client and the specified public keys. @@ -232,7 +232,7 @@ const resultMessage = await encryption.signAndEncrypt('message', publicKeys); > `static` **build**(`privateKeyArmored`, `passphrase?`): `Promise`\<`Encryption`\> -Defined in: [encryption.ts:77](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L77) +Defined in: [encryption.ts:77](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L77) Builds an Encryption instance by decrypting the private key from an encrypted private key and passphrase. diff --git a/docs/sdk/typescript/encryption/classes/EncryptionUtils.md b/docs/sdk/typescript/encryption/classes/EncryptionUtils.md index a894c86cfd..01aabb7515 100644 --- a/docs/sdk/typescript/encryption/classes/EncryptionUtils.md +++ b/docs/sdk/typescript/encryption/classes/EncryptionUtils.md @@ -6,7 +6,7 @@ # Class: EncryptionUtils -Defined in: [encryption.ts:290](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L290) +Defined in: [encryption.ts:290](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L290) ## Introduction @@ -48,7 +48,7 @@ const keyPair = await EncryptionUtils.generateKeyPair('Human', 'human@hmt.ai'); > `static` **encrypt**(`message`, `publicKeys`): `Promise`\<`string`\> -Defined in: [encryption.ts:444](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L444) +Defined in: [encryption.ts:444](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L444) This function encrypts a message using the specified public keys. @@ -111,7 +111,7 @@ const result = await EncryptionUtils.encrypt('message', publicKeys); > `static` **generateKeyPair**(`name`, `email`, `passphrase`): `Promise`\<[`IKeyPair`](../../interfaces/interfaces/IKeyPair.md)\> -Defined in: [encryption.ts:382](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L382) +Defined in: [encryption.ts:382](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L382) This function generates a key pair for encryption and decryption. @@ -158,7 +158,7 @@ const result = await EncryptionUtils.generateKeyPair(name, email, passphrase); > `static` **getSignedData**(`message`): `Promise`\<`string`\> -Defined in: [encryption.ts:351](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L351) +Defined in: [encryption.ts:351](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L351) This function gets signed data from a signed message. @@ -190,7 +190,7 @@ const signedData = await EncryptionUtils.getSignedData('message'); > `static` **isEncrypted**(`message`): `boolean` -Defined in: [encryption.ts:494](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L494) +Defined in: [encryption.ts:494](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L494) Verifies if a message appears to be encrypted with OpenPGP. @@ -238,7 +238,7 @@ if (isEncrypted) { > `static` **verify**(`message`, `publicKey`): `Promise`\<`boolean`\> -Defined in: [encryption.ts:318](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L318) +Defined in: [encryption.ts:318](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/encryption.ts#L318) This function verifies the signature of a signed message using the public key. diff --git a/docs/sdk/typescript/enums/enumerations/ChainId.md b/docs/sdk/typescript/enums/enumerations/ChainId.md index 1e5f42c376..a57c0378dc 100644 --- a/docs/sdk/typescript/enums/enumerations/ChainId.md +++ b/docs/sdk/typescript/enums/enumerations/ChainId.md @@ -6,7 +6,7 @@ # Enumeration: ChainId -Defined in: [enums.ts:1](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L1) +Defined in: [enums.ts:1](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L1) ## Enumeration Members @@ -14,7 +14,7 @@ Defined in: [enums.ts:1](https://github.com/humanprotocol/human-protocol/blob/2f > **ALL**: `-1` -Defined in: [enums.ts:2](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L2) +Defined in: [enums.ts:2](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L2) *** @@ -22,7 +22,7 @@ Defined in: [enums.ts:2](https://github.com/humanprotocol/human-protocol/blob/2f > **AURORA\_TESTNET**: `1313161555` -Defined in: [enums.ts:9](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L9) +Defined in: [enums.ts:9](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L9) *** @@ -30,7 +30,7 @@ Defined in: [enums.ts:9](https://github.com/humanprotocol/human-protocol/blob/2f > **BSC\_MAINNET**: `56` -Defined in: [enums.ts:5](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L5) +Defined in: [enums.ts:5](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L5) *** @@ -38,7 +38,7 @@ Defined in: [enums.ts:5](https://github.com/humanprotocol/human-protocol/blob/2f > **BSC\_TESTNET**: `97` -Defined in: [enums.ts:6](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L6) +Defined in: [enums.ts:6](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L6) *** @@ -46,7 +46,7 @@ Defined in: [enums.ts:6](https://github.com/humanprotocol/human-protocol/blob/2f > **LOCALHOST**: `1338` -Defined in: [enums.ts:10](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L10) +Defined in: [enums.ts:10](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L10) *** @@ -54,7 +54,7 @@ Defined in: [enums.ts:10](https://github.com/humanprotocol/human-protocol/blob/2 > **MAINNET**: `1` -Defined in: [enums.ts:3](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L3) +Defined in: [enums.ts:3](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L3) *** @@ -62,7 +62,7 @@ Defined in: [enums.ts:3](https://github.com/humanprotocol/human-protocol/blob/2f > **POLYGON**: `137` -Defined in: [enums.ts:7](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L7) +Defined in: [enums.ts:7](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L7) *** @@ -70,7 +70,7 @@ Defined in: [enums.ts:7](https://github.com/humanprotocol/human-protocol/blob/2f > **POLYGON\_AMOY**: `80002` -Defined in: [enums.ts:8](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L8) +Defined in: [enums.ts:8](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L8) *** @@ -78,4 +78,4 @@ Defined in: [enums.ts:8](https://github.com/humanprotocol/human-protocol/blob/2f > **SEPOLIA**: `11155111` -Defined in: [enums.ts:4](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L4) +Defined in: [enums.ts:4](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L4) diff --git a/docs/sdk/typescript/enums/enumerations/OperatorCategory.md b/docs/sdk/typescript/enums/enumerations/OperatorCategory.md index 2cd371a305..fd875d3c82 100644 --- a/docs/sdk/typescript/enums/enumerations/OperatorCategory.md +++ b/docs/sdk/typescript/enums/enumerations/OperatorCategory.md @@ -6,7 +6,7 @@ # Enumeration: OperatorCategory -Defined in: [enums.ts:18](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L18) +Defined in: [enums.ts:18](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L18) ## Enumeration Members @@ -14,7 +14,7 @@ Defined in: [enums.ts:18](https://github.com/humanprotocol/human-protocol/blob/2 > **MACHINE\_LEARNING**: `"machine_learning"` -Defined in: [enums.ts:19](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L19) +Defined in: [enums.ts:19](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L19) *** @@ -22,4 +22,4 @@ Defined in: [enums.ts:19](https://github.com/humanprotocol/human-protocol/blob/2 > **MARKET\_MAKING**: `"market_making"` -Defined in: [enums.ts:20](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L20) +Defined in: [enums.ts:20](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L20) diff --git a/docs/sdk/typescript/enums/enumerations/OrderDirection.md b/docs/sdk/typescript/enums/enumerations/OrderDirection.md index 972d481e1a..125560b6c5 100644 --- a/docs/sdk/typescript/enums/enumerations/OrderDirection.md +++ b/docs/sdk/typescript/enums/enumerations/OrderDirection.md @@ -6,7 +6,7 @@ # Enumeration: OrderDirection -Defined in: [enums.ts:13](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L13) +Defined in: [enums.ts:13](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L13) ## Enumeration Members @@ -14,7 +14,7 @@ Defined in: [enums.ts:13](https://github.com/humanprotocol/human-protocol/blob/2 > **ASC**: `"asc"` -Defined in: [enums.ts:14](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L14) +Defined in: [enums.ts:14](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L14) *** @@ -22,4 +22,4 @@ Defined in: [enums.ts:14](https://github.com/humanprotocol/human-protocol/blob/2 > **DESC**: `"desc"` -Defined in: [enums.ts:15](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L15) +Defined in: [enums.ts:15](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/enums.ts#L15) diff --git a/docs/sdk/typescript/escrow/classes/EscrowClient.md b/docs/sdk/typescript/escrow/classes/EscrowClient.md index 80aeaa8be9..dc58c016a1 100644 --- a/docs/sdk/typescript/escrow/classes/EscrowClient.md +++ b/docs/sdk/typescript/escrow/classes/EscrowClient.md @@ -6,7 +6,7 @@ # Class: EscrowClient -Defined in: [escrow.ts:143](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L143) +Defined in: [escrow.ts:146](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L146) ## Introduction @@ -86,7 +86,7 @@ const escrowClient = await EscrowClient.build(provider); > **new EscrowClient**(`runner`, `networkData`): `EscrowClient` -Defined in: [escrow.ts:152](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L152) +Defined in: [escrow.ts:155](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L155) **EscrowClient constructor** @@ -118,7 +118,7 @@ The network information required to connect to the Escrow contract > **networkData**: [`NetworkData`](../../types/type-aliases/NetworkData.md) -Defined in: [base.ts:14](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L14) +Defined in: [base.ts:14](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L14) #### Inherited from @@ -130,7 +130,7 @@ Defined in: [base.ts:14](https://github.com/humanprotocol/human-protocol/blob/2f > `protected` **runner**: `ContractRunner` -Defined in: [base.ts:13](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L13) +Defined in: [base.ts:13](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L13) #### Inherited from @@ -138,149 +138,184 @@ Defined in: [base.ts:13](https://github.com/humanprotocol/human-protocol/blob/2f ## Methods -### addTrustedHandlers() +### applyTxDefaults() -> **addTrustedHandlers**(`escrowAddress`, `trustedHandlers`, `txOptions?`): `Promise`\<`void`\> +> `protected` **applyTxDefaults**(`txOptions`): `Overrides` -Defined in: [escrow.ts:789](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L789) +Defined in: [base.ts:35](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L35) -This function adds an array of addresses to the trusted handlers list. +Internal helper to enrich transaction overrides with network specific defaults. + +Aurora networks use a fixed gas price. We always override any user provided +gasPrice with the canonical DEFAULT_AURORA_GAS_PRICE to avoid mismatches +or tx failures due to an unexpected value. For other networks the user +supplied fee parameters are left untouched. #### Parameters -##### escrowAddress +##### txOptions + +`Overrides` = `{}` + +#### Returns + +`Overrides` + +#### Inherited from + +[`BaseEthersClient`](../../base/classes/BaseEthersClient.md).[`applyTxDefaults`](../../base/classes/BaseEthersClient.md#applytxdefaults) + +*** + +### bulkPayOut() + +#### Call Signature + +> **bulkPayOut**(`escrowAddress`, `recipients`, `amounts`, `finalResultsUrl`, `finalResultsHash`, `txId`, `forceComplete`, `txOptions?`): `Promise`\<`void`\> + +Defined in: [escrow.ts:806](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L806) + +This function pays out the amounts specified to the workers and sets the URL of the final results file. + +##### Parameters + +###### escrowAddress `string` -Address of the escrow. +Escrow address to payout. -##### trustedHandlers +###### recipients `string`[] -Array of addresses of trusted handlers to add. +Array of recipient addresses. -##### txOptions? +###### amounts -`Overrides` = `{}` +`bigint`[] -Additional transaction parameters (optional, defaults to an empty object). +Array of amounts the recipients will receive. -#### Returns +###### finalResultsUrl -`Promise`\<`void`\> +`string` -Returns void if successful. Throws error if any. +Final results file URL. -**Code example** +###### finalResultsHash -> Only Job Launcher or trusted handler can call it. +`string` -```ts -import { Wallet, providers } from 'ethers'; -import { EscrowClient } from '@human-protocol/sdk'; +Final results file hash. -const rpcUrl = 'YOUR_RPC_URL'; -const privateKey = 'YOUR_PRIVATE_KEY'; +###### txId -const provider = new providers.JsonRpcProvider(rpcUrl); -const signer = new Wallet(privateKey, provider); -const escrowClient = await EscrowClient.build(signer); +`number` -const trustedHandlers = ['0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266']; -await escrowClient.addTrustedHandlers('0x62dD51230A30401C455c8398d06F85e4EaB6309f', trustedHandlers); -``` +Transaction ID. -*** +###### forceComplete -### applyTxDefaults() +`boolean` -> `protected` **applyTxDefaults**(`txOptions`): `Overrides` +Indicates if remaining balance should be transferred to the escrow creator (optional, defaults to false). -Defined in: [base.ts:35](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L35) +###### txOptions? -Internal helper to enrich transaction overrides with network specific defaults. +`Overrides` -Aurora networks use a fixed gas price. We always override any user provided -gasPrice with the canonical DEFAULT_AURORA_GAS_PRICE to avoid mismatches -or tx failures due to an unexpected value. For other networks the user -supplied fee parameters are left untouched. +Additional transaction parameters (optional, defaults to an empty object). -#### Parameters +##### Returns -##### txOptions +`Promise`\<`void`\> -`Overrides` = `{}` +Returns void if successful. Throws error if any. -#### Returns +**Code example** -`Overrides` +> Only Reputation Oracle or admin can call it. -#### Inherited from +```ts +import { ethers, Wallet, providers } from 'ethers'; +import { EscrowClient } from '@human-protocol/sdk'; -[`BaseEthersClient`](../../base/classes/BaseEthersClient.md).[`applyTxDefaults`](../../base/classes/BaseEthersClient.md#applytxdefaults) +const rpcUrl = 'YOUR_RPC_URL'; +const privateKey = 'YOUR_PRIVATE_KEY'; -*** +const provider = new providers.JsonRpcProvider(rpcUrl); +const signer = new Wallet(privateKey, provider); +const escrowClient = await EscrowClient.build(signer); -### bulkPayOut() +const recipients = ['0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266']; +const amounts = [ethers.parseUnits(5, 'ether'), ethers.parseUnits(10, 'ether')]; +const resultsUrl = 'http://localhost/results.json'; +const resultsHash = 'b5dad76bf6772c0f07fd5e048f6e75a5f86ee079'; +const txId = 1; -> **bulkPayOut**(`escrowAddress`, `recipients`, `amounts`, `finalResultsUrl`, `finalResultsHash`, `txId`, `forceComplete`, `txOptions?`): `Promise`\<`void`\> +await escrowClient.bulkPayOut('0x62dD51230A30401C455c8398d06F85e4EaB6309f', recipients, amounts, resultsUrl, resultsHash, txId, true); +``` + +#### Call Signature + +> **bulkPayOut**(`escrowAddress`, `recipients`, `amounts`, `finalResultsUrl`, `finalResultsHash`, `payoutId`, `forceComplete`, `txOptions?`): `Promise`\<`void`\> -Defined in: [escrow.ts:622](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L622) +Defined in: [escrow.ts:856](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L856) This function pays out the amounts specified to the workers and sets the URL of the final results file. -#### Parameters +##### Parameters -##### escrowAddress +###### escrowAddress `string` Escrow address to payout. -##### recipients +###### recipients `string`[] Array of recipient addresses. -##### amounts +###### amounts `bigint`[] Array of amounts the recipients will receive. -##### finalResultsUrl +###### finalResultsUrl `string` Final results file URL. -##### finalResultsHash +###### finalResultsHash `string` Final results file hash. -##### txId +###### payoutId -`number` +`string` -Transaction ID. +Payout ID. -##### forceComplete +###### forceComplete -`boolean` = `false` +`boolean` Indicates if remaining balance should be transferred to the escrow creator (optional, defaults to false). -##### txOptions? +###### txOptions? -`Overrides` = `{}` +`Overrides` Additional transaction parameters (optional, defaults to an empty object). -#### Returns +##### Returns `Promise`\<`void`\> @@ -288,11 +323,12 @@ Returns void if successful. Throws error if any. **Code example** -> Only Reputation Oracle or a trusted handler can call it. +> Only Reputation Oracle or admin can call it. ```ts import { ethers, Wallet, providers } from 'ethers'; import { EscrowClient } from '@human-protocol/sdk'; +import { v4 as uuidV4 } from 'uuid'; const rpcUrl = 'YOUR_RPC_URL'; const privateKey = 'YOUR_PRIVATE_KEY'; @@ -305,18 +341,18 @@ const recipients = ['0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', '0xf39Fd6e51aa const amounts = [ethers.parseUnits(5, 'ether'), ethers.parseUnits(10, 'ether')]; const resultsUrl = 'http://localhost/results.json'; const resultsHash = 'b5dad76bf6772c0f07fd5e048f6e75a5f86ee079'; -const txId = 1; +const payoutId = uuidV4(); -await escrowClient.bulkPayOut('0x62dD51230A30401C455c8398d06F85e4EaB6309f', recipients, amounts, resultsUrl, resultsHash, txId); +await escrowClient.bulkPayOut('0x62dD51230A30401C455c8398d06F85e4EaB6309f', recipients, amounts, resultsUrl, resultsHash, payoutId, true); ``` *** ### cancel() -> **cancel**(`escrowAddress`, `txOptions?`): `Promise`\<[`EscrowCancel`](../../types/type-aliases/EscrowCancel.md)\> +> **cancel**(`escrowAddress`, `txOptions?`): `Promise`\<`void`\> -Defined in: [escrow.ts:703](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L703) +Defined in: [escrow.ts:955](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L955) This function cancels the specified escrow and sends the balance to the canceler. @@ -334,15 +370,9 @@ Address of the escrow to cancel. Additional transaction parameters (optional, defaults to an empty object). -#### Returns - -`Promise`\<[`EscrowCancel`](../../types/type-aliases/EscrowCancel.md)\> - -Returns the escrow cancellation data including transaction hash and refunded amount. Throws error if any. - **Code example** -> Only Job Launcher or a trusted handler can call it. +> Only Job Launcher or admin can call it. ```ts import { ethers, Wallet, providers } from 'ethers'; @@ -358,13 +388,17 @@ const escrowClient = await EscrowClient.build(signer); await escrowClient.cancel('0x62dD51230A30401C455c8398d06F85e4EaB6309f'); ``` +#### Returns + +`Promise`\<`void`\> + *** ### complete() > **complete**(`escrowAddress`, `txOptions?`): `Promise`\<`void`\> -Defined in: [escrow.ts:559](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L559) +Defined in: [escrow.ts:744](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L744) This function sets the status of an escrow to completed. @@ -390,7 +424,7 @@ Returns void if successful. Throws error if any. **Code example** -> Only Recording Oracle or a trusted handler can call it. +> Only Recording Oracle or admin can call it. ```ts import { Wallet, providers } from 'ethers'; @@ -410,9 +444,9 @@ await escrowClient.complete('0x62dD51230A30401C455c8398d06F85e4EaB6309f'); ### createBulkPayoutTransaction() -> **createBulkPayoutTransaction**(`escrowAddress`, `recipients`, `amounts`, `finalResultsUrl`, `finalResultsHash`, `txId`, `forceComplete`, `txOptions?`): `Promise`\<[`TransactionLikeWithNonce`](../../types/type-aliases/TransactionLikeWithNonce.md)\> +> **createBulkPayoutTransaction**(`escrowAddress`, `recipients`, `amounts`, `finalResultsUrl`, `finalResultsHash`, `payoutId`, `forceComplete`, `txOptions?`): `Promise`\<[`TransactionLikeWithNonce`](../../types/type-aliases/TransactionLikeWithNonce.md)\> -Defined in: [escrow.ts:964](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L964) +Defined in: [escrow.ts:1162](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1162) Creates a prepared transaction for bulk payout without immediately sending it. @@ -448,11 +482,11 @@ Final results file URL. Final results file hash. -##### txId +##### payoutId -`number` +`string` -Transaction ID. +Payout ID to identify the payout. ##### forceComplete @@ -474,7 +508,7 @@ Returns object with raw transaction and signed transaction hash **Code example** -> Only Reputation Oracle or a trusted handler can call it. +> Only Reputation Oracle or admin can call it. ```ts import { ethers, Wallet, providers } from 'ethers'; @@ -491,7 +525,7 @@ const recipients = ['0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', '0xf39Fd6e51aa const amounts = [ethers.parseUnits(5, 'ether'), ethers.parseUnits(10, 'ether')]; const resultsUrl = 'http://localhost/results.json'; const resultsHash = 'b5dad76bf6772c0f07fd5e048f6e75a5f86ee079'; -const txId = 1; +const payoutId = '372f6916-fe34-4711-b6e3-274f682047de'; const rawTransaction = await escrowClient.createBulkPayoutTransaction('0x62dD51230A30401C455c8398d06F85e4EaB6309f', recipients, amounts, resultsUrl, resultsHash, txId); console.log('Raw transaction:', rawTransaction); @@ -504,9 +538,9 @@ console.log('Tx hash:', ethers.keccak256(signedTransaction)); ### createEscrow() -> **createEscrow**(`tokenAddress`, `trustedHandlers`, `jobRequesterId`, `txOptions?`): `Promise`\<`string`\> +> **createEscrow**(`tokenAddress`, `jobRequesterId`, `txOptions?`): `Promise`\<`string`\> -Defined in: [escrow.ts:232](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L232) +Defined in: [escrow.ts:233](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L233) This function creates an escrow contract that uses the token passed to pay oracle fees and reward workers. @@ -516,19 +550,13 @@ This function creates an escrow contract that uses the token passed to pay oracl `string` -Token address to use for payouts. - -##### trustedHandlers - -`string`[] - -Array of addresses that can perform actions on the contract. +The address of the token to use for escrow funding. ##### jobRequesterId `string` -Job Requester Id +Identifier for the job requester. ##### txOptions? @@ -558,9 +586,105 @@ const signer = new Wallet(privateKey, provider); const escrowClient = await EscrowClient.build(signer); const tokenAddress = '0x0376D26246Eb35FF4F9924cF13E6C05fd0bD7Fb4'; -const trustedHandlers = ['0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266']; const jobRequesterId = "job-requester-id"; -const escrowAddress = await escrowClient.createEscrow(tokenAddress, trustedHandlers, jobRequesterId); +const escrowAddress = await escrowClient.createEscrow(tokenAddress, jobRequesterId); +``` + +*** + +### createFundAndSetupEscrow() + +> **createFundAndSetupEscrow**(`tokenAddress`, `amount`, `jobRequesterId`, `escrowConfig`, `txOptions?`): `Promise`\<`string`\> + +Defined in: [escrow.ts:370](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L370) + +Creates, funds, and sets up a new escrow contract in a single transaction. + +#### Parameters + +##### tokenAddress + +`string` + +The ERC-20 token address used to fund the escrow. + +##### amount + +`bigint` + +The token amount to fund the escrow with. + +##### jobRequesterId + +`string` + +An off-chain identifier for the job requester. + +##### escrowConfig + +[`IEscrowConfig`](../../interfaces/interfaces/IEscrowConfig.md) + +Configuration parameters for escrow setup: + - `recordingOracle`: Address of the recording oracle. + - `reputationOracle`: Address of the reputation oracle. + - `exchangeOracle`: Address of the exchange oracle. + - `recordingOracleFee`: Fee (in basis points or percentage * 100) for the recording oracle. + - `reputationOracleFee`: Fee for the reputation oracle. + - `exchangeOracleFee`: Fee for the exchange oracle. + - `manifest`: URL to the manifest file. + - `manifestHash`: Hash of the manifest content. + +##### txOptions? + +`Overrides` = `{}` + +Additional transaction parameters (optional, defaults to an empty object). + +#### Returns + +`Promise`\<`string`\> + +Returns the address of the escrow created. + +#### Example + +```ts +import { Wallet, ethers } from 'ethers'; +import { EscrowClient, IERC20__factory } from '@human-protocol/sdk'; + +const rpcUrl = 'YOUR_RPC_URL'; +const privateKey = 'YOUR_PRIVATE_KEY'; +const provider = new ethers.JsonRpcProvider(rpcUrl); +const signer = new Wallet(privateKey, provider); + +const escrowClient = await EscrowClient.build(signer); + +const tokenAddress = '0xTokenAddress'; +const amount = ethers.parseUnits('1000', 18); +const jobRequesterId = 'requester-123'; + +const token = IERC20__factory.connect(tokenAddress, signer); +await token.approve(escrowClient.escrowFactoryContract.target, amount); + +const escrowConfig = { + recordingOracle: '0xRecordingOracle', + reputationOracle: '0xReputationOracle', + exchangeOracle: '0xExchangeOracle', + recordingOracleFee: 5n, + reputationOracleFee: 5n, + exchangeOracleFee: 5n, + manifest: 'https://example.com/manifest.json', + manifestHash: 'manifestHash-123', +} satisfies IEscrowConfig; + +const escrowAddress = await escrowClient.createFundAndSetupEscrow( + tokenAddress, + amount, + jobRequesterId, + escrowConfig +); + +console.log('Escrow created at:', escrowAddress); ``` *** @@ -569,7 +693,7 @@ const escrowAddress = await escrowClient.createEscrow(tokenAddress, trustedHandl > **fund**(`escrowAddress`, `amount`, `txOptions?`): `Promise`\<`void`\> -Defined in: [escrow.ts:420](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L420) +Defined in: [escrow.ts:543](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L543) This function adds funds of the chosen token to the escrow. @@ -622,7 +746,7 @@ await escrowClient.fund('0x62dD51230A30401C455c8398d06F85e4EaB6309f', amount); > **getBalance**(`escrowAddress`): `Promise`\<`bigint`\> -Defined in: [escrow.ts:1110](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1110) +Defined in: [escrow.ts:1308](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1308) This function returns the balance for a specified escrow address. @@ -660,7 +784,7 @@ const balance = await escrowClient.getBalance('0x62dD51230A30401C455c8398d06F85e > **getExchangeOracleAddress**(`escrowAddress`): `Promise`\<`string`\> -Defined in: [escrow.ts:1496](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1496) +Defined in: [escrow.ts:1769](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1769) This function returns the exchange oracle address for a given escrow. @@ -698,7 +822,7 @@ const oracleAddress = await escrowClient.getExchangeOracleAddress('0x62dD51230A3 > **getFactoryAddress**(`escrowAddress`): `Promise`\<`string`\> -Defined in: [escrow.ts:1534](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1534) +Defined in: [escrow.ts:1807](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1807) This function returns the escrow factory address for a given escrow. @@ -732,11 +856,49 @@ const factoryAddress = await escrowClient.getFactoryAddress('0x62dD51230A30401C4 *** +### getIntermediateResultsHash() + +> **getIntermediateResultsHash**(`escrowAddress`): `Promise`\<`string`\> + +Defined in: [escrow.ts:1541](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1541) + +This function returns the intermediate results hash. + +#### Parameters + +##### escrowAddress + +`string` + +Address of the escrow. + +#### Returns + +`Promise`\<`string`\> + +Hash of the intermediate results file content. + +**Code example** + +```ts +import { providers } from 'ethers'; +import { EscrowClient } from '@human-protocol/sdk'; + +const rpcUrl = 'YOUR_RPC_URL'; + +const provider = new providers.JsonRpcProvider(rpcUrl); +const escrowClient = await EscrowClient.build(provider); + +const intermediateResultsHash = await escrowClient.getIntermediateResultsHash('0x62dD51230A30401C455c8398d06F85e4EaB6309f'); +``` + +*** + ### getIntermediateResultsUrl() > **getIntermediateResultsUrl**(`escrowAddress`): `Promise`\<`string`\> -Defined in: [escrow.ts:1268](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1268) +Defined in: [escrow.ts:1503](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1503) This function returns the intermediate results file URL. @@ -774,7 +936,7 @@ const intermediateResultsUrl = await escrowClient.getIntermediateResultsUrl('0x6 > **getJobLauncherAddress**(`escrowAddress`): `Promise`\<`string`\> -Defined in: [escrow.ts:1420](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1420) +Defined in: [escrow.ts:1693](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1693) This function returns the job launcher address for a given escrow. @@ -812,7 +974,7 @@ const jobLauncherAddress = await escrowClient.getJobLauncherAddress('0x62dD51230 > **getManifest**(`escrowAddress`): `Promise`\<`string`\> -Defined in: [escrow.ts:1192](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1192) +Defined in: [escrow.ts:1427](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1427) This function returns the manifest. Could be a URL or a JSON string. @@ -850,7 +1012,7 @@ const manifest = await escrowClient.getManifest('0x62dD51230A30401C455c8398d06F8 > **getManifestHash**(`escrowAddress`): `Promise`\<`string`\> -Defined in: [escrow.ts:1154](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1154) +Defined in: [escrow.ts:1389](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1389) This function returns the manifest file hash. @@ -888,7 +1050,7 @@ const manifestHash = await escrowClient.getManifestHash('0x62dD51230A30401C455c8 > **getRecordingOracleAddress**(`escrowAddress`): `Promise`\<`string`\> -Defined in: [escrow.ts:1382](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1382) +Defined in: [escrow.ts:1655](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1655) This function returns the recording oracle address for a given escrow. @@ -926,7 +1088,7 @@ const oracleAddress = await escrowClient.getRecordingOracleAddress('0x62dD51230A > **getReputationOracleAddress**(`escrowAddress`): `Promise`\<`string`\> -Defined in: [escrow.ts:1458](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1458) +Defined in: [escrow.ts:1731](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1731) This function returns the reputation oracle address for a given escrow. @@ -960,11 +1122,49 @@ const oracleAddress = await escrowClient.getReputationOracleAddress('0x62dD51230 *** +### getReservedFunds() + +> **getReservedFunds**(`escrowAddress`): `Promise`\<`bigint`\> + +Defined in: [escrow.ts:1352](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1352) + +This function returns the reserved funds for a specified escrow address. + +#### Parameters + +##### escrowAddress + +`string` + +Address of the escrow. + +#### Returns + +`Promise`\<`bigint`\> + +Reserved funds of the escrow in the token used to fund it. + +**Code example** + +```ts +import { providers } from 'ethers'; +import { EscrowClient } from '@human-protocol/sdk'; + +const rpcUrl = 'YOUR_RPC_URL'; + +const provider = new providers.JsonRpcProvider(rpcUrl); +const escrowClient = await EscrowClient.build(provider); + +const reservedFunds = await escrowClient.getReservedFunds('0x62dD51230A30401C455c8398d06F85e4EaB6309f'); +``` + +*** + ### getResultsUrl() > **getResultsUrl**(`escrowAddress`): `Promise`\<`string`\> -Defined in: [escrow.ts:1230](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1230) +Defined in: [escrow.ts:1465](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1465) This function returns the results file URL. @@ -1002,7 +1202,7 @@ const resultsUrl = await escrowClient.getResultsUrl('0x62dD51230A30401C455c8398d > **getStatus**(`escrowAddress`): `Promise`\<[`EscrowStatus`](../../types/enumerations/EscrowStatus.md)\> -Defined in: [escrow.ts:1344](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1344) +Defined in: [escrow.ts:1617](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1617) This function returns the current status of the escrow. @@ -1040,7 +1240,7 @@ const status = await escrowClient.getStatus('0x62dD51230A30401C455c8398d06F85e4E > **getTokenAddress**(`escrowAddress`): `Promise`\<`string`\> -Defined in: [escrow.ts:1306](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1306) +Defined in: [escrow.ts:1579](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1579) This function returns the token address used for funding the escrow. @@ -1074,11 +1274,59 @@ const tokenAddress = await escrowClient.getTokenAddress('0x62dD51230A30401C455c8 *** +### requestCancellation() + +> **requestCancellation**(`escrowAddress`, `txOptions?`): `Promise`\<`void`\> + +Defined in: [escrow.ts:1003](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1003) + +This function requests the cancellation of the specified escrow (moves status to ToCancel or finalizes if expired). + +#### Parameters + +##### escrowAddress + +`string` + +Address of the escrow to request cancellation. + +##### txOptions? + +`Overrides` = `{}` + +Additional transaction parameters (optional, defaults to an empty object). + +#### Returns + +`Promise`\<`void`\> + +Returns void if successful. Throws error if any. + +**Code example** + +> Only Job Launcher or admin can call it. + +```ts +import { Wallet, providers } from 'ethers'; +import { EscrowClient } from '@human-protocol/sdk'; + +const rpcUrl = 'YOUR_RPC_URL'; +const privateKey = 'YOUR_PRIVATE_KEY'; + +const provider = new providers.JsonRpcProvider(rpcUrl); +const signer = new Wallet(privateKey, provider); +const escrowClient = await EscrowClient.build(signer); + +await escrowClient.requestCancellation('0x62dD51230A30401C455c8398d06F85e4EaB6309f'); +``` + +*** + ### setup() > **setup**(`escrowAddress`, `escrowConfig`, `txOptions?`): `Promise`\<`void`\> -Defined in: [escrow.ts:313](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L313) +Defined in: [escrow.ts:467](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L467) This function sets up the parameters of the escrow. @@ -1110,7 +1358,7 @@ Returns void if successful. Throws error if any. **Code example** -> Only Job Launcher or a trusted handler can call it. +> Only Job Launcher or admin can call it. ```ts import { Wallet, providers } from 'ethers'; @@ -1141,39 +1389,105 @@ await escrowClient.setup(escrowAddress, escrowConfig); ### storeResults() +#### Call Signature + +> **storeResults**(`escrowAddress`, `url`, `hash`, `fundsToReserve`, `txOptions?`): `Promise`\<`void`\> + +Defined in: [escrow.ts:613](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L613) + +This function stores the results URL and hash. + +##### Parameters + +###### escrowAddress + +`string` + +Address of the escrow. + +###### url + +`string` + +Results file URL. + +###### hash + +`string` + +Results file hash. + +###### fundsToReserve + +`bigint` + +Funds to reserve for payouts + +###### txOptions? + +`Overrides` + +Additional transaction parameters (optional, defaults to an empty object). + +##### Returns + +`Promise`\<`void`\> + +Returns void if successful. Throws error if any. + +**Code example** + +> Only Recording Oracle or admin can call it. + +```ts +import { ethers, Wallet, providers } from 'ethers'; +import { EscrowClient } from '@human-protocol/sdk'; + +const rpcUrl = 'YOUR_RPC_URL'; +const privateKey = 'YOUR_PRIVATE_KEY'; + +const provider = new providers.JsonRpcProvider(rpcUrl); +const signer = new Wallet(privateKey, provider); +const escrowClient = await EscrowClient.build(signer); + +await escrowClient.storeResults('0x62dD51230A30401C455c8398d06F85e4EaB6309f', 'http://localhost/results.json', 'b5dad76bf6772c0f07fd5e048f6e75a5f86ee079', ethers.parseEther('10')); +``` + +#### Call Signature + > **storeResults**(`escrowAddress`, `url`, `hash`, `txOptions?`): `Promise`\<`void`\> -Defined in: [escrow.ts:489](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L489) +Defined in: [escrow.ts:649](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L649) This function stores the results URL and hash. -#### Parameters +##### Parameters -##### escrowAddress +###### escrowAddress `string` Address of the escrow. -##### url +###### url `string` Results file URL. -##### hash +###### hash `string` Results file hash. -##### txOptions? +###### txOptions? -`Overrides` = `{}` +`Overrides` Additional transaction parameters (optional, defaults to an empty object). -#### Returns +##### Returns `Promise`\<`void`\> @@ -1181,7 +1495,7 @@ Returns void if successful. Throws error if any. **Code example** -> Only Recording Oracle or a trusted handler can call it. +> Only Recording Oracle or admin can call it. ```ts import { ethers, Wallet, providers } from 'ethers'; @@ -1201,9 +1515,9 @@ await escrowClient.storeResults('0x62dD51230A30401C455c8398d06F85e4EaB6309f', 'h ### withdraw() -> **withdraw**(`escrowAddress`, `tokenAddress`, `txOptions?`): `Promise`\<[`EscrowWithdraw`](../../types/type-aliases/EscrowWithdraw.md)\> +> **withdraw**(`escrowAddress`, `tokenAddress`, `txOptions?`): `Promise`\<[`IEscrowWithdraw`](../../interfaces/interfaces/IEscrowWithdraw.md)\> -Defined in: [escrow.ts:858](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L858) +Defined in: [escrow.ts:1058](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1058) This function withdraws additional tokens in the escrow to the canceler. @@ -1229,13 +1543,13 @@ Additional transaction parameters (optional, defaults to an empty object). #### Returns -`Promise`\<[`EscrowWithdraw`](../../types/type-aliases/EscrowWithdraw.md)\> +`Promise`\<[`IEscrowWithdraw`](../../interfaces/interfaces/IEscrowWithdraw.md)\> Returns the escrow withdrawal data including transaction hash and withdrawal amount. Throws error if any. **Code example** -> Only Job Launcher or a trusted handler can call it. +> Only Job Launcher or admin can call it. ```ts import { ethers, Wallet, providers } from 'ethers'; @@ -1260,7 +1574,7 @@ await escrowClient.withdraw( > `static` **build**(`runner`): `Promise`\<`EscrowClient`\> -Defined in: [escrow.ts:170](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L170) +Defined in: [escrow.ts:173](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L173) Creates an instance of EscrowClient from a Runner. diff --git a/docs/sdk/typescript/escrow/classes/EscrowUtils.md b/docs/sdk/typescript/escrow/classes/EscrowUtils.md index 830134a257..93519093ae 100644 --- a/docs/sdk/typescript/escrow/classes/EscrowUtils.md +++ b/docs/sdk/typescript/escrow/classes/EscrowUtils.md @@ -6,7 +6,7 @@ # Class: EscrowUtils -Defined in: [escrow.ts:1583](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1583) +Defined in: [escrow.ts:1856](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1856) ## Introduction @@ -50,11 +50,173 @@ const escrowAddresses = new EscrowUtils.getEscrows({ ## Methods +### getCancellationRefund() + +> `static` **getCancellationRefund**(`chainId`, `escrowAddress`): `Promise`\<[`ICancellationRefund`](../../interfaces/interfaces/ICancellationRefund.md) \| `null`\> + +Defined in: [escrow.ts:2431](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L2431) + +This function returns the cancellation refund for a given escrow address. + +> This uses Subgraph + +**Input parameters** + +```ts +enum ChainId { + ALL = -1, + MAINNET = 1, + SEPOLIA = 11155111, + BSC_MAINNET = 56, + BSC_TESTNET = 97, + POLYGON = 137, + POLYGON_AMOY = 80002, + LOCALHOST = 1338, +} +``` + +```ts +interface ICancellationRefund { + id: string; + escrowAddress: string; + receiver: string; + amount: bigint; + block: number; + timestamp: number; + txHash: string; +}; +``` + +#### Parameters + +##### chainId + +[`ChainId`](../../enums/enumerations/ChainId.md) + +Network in which the escrow has been deployed + +##### escrowAddress + +`string` + +Address of the escrow + +#### Returns + +`Promise`\<[`ICancellationRefund`](../../interfaces/interfaces/ICancellationRefund.md) \| `null`\> + +Cancellation refund data + +**Code example** + +```ts +import { ChainId, EscrowUtils } from '@human-protocol/sdk'; + +const cancellationRefund = await EscrowUtils.getCancellationRefund(ChainId.POLYGON_AMOY, "0x1234567890123456789012345678901234567890"); +``` + +*** + +### getCancellationRefunds() + +> `static` **getCancellationRefunds**(`filter`): `Promise`\<[`ICancellationRefund`](../../interfaces/interfaces/ICancellationRefund.md)[]\> + +Defined in: [escrow.ts:2335](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L2335) + +This function returns the cancellation refunds for a given set of networks. + +> This uses Subgraph + +**Input parameters** + +```ts +enum ChainId { + ALL = -1, + MAINNET = 1, + SEPOLIA = 11155111, + BSC_MAINNET = 56, + BSC_TESTNET = 97, + POLYGON = 137, + POLYGON_AMOY = 80002, + LOCALHOST = 1338, +} +``` + +```ts +interface ICancellationRefund { + id: string; + escrowAddress: string; + receiver: string; + amount: bigint; + block: number; + timestamp: number; + txHash: string; +}; +``` + +#### Parameters + +##### filter + +Filter parameters. + +###### chainId + +[`ChainId`](../../enums/enumerations/ChainId.md) + +###### escrowAddress? + +`string` + +###### first? + +`number` + +###### from? + +`Date` + +###### orderDirection? + +[`OrderDirection`](../../enums/enumerations/OrderDirection.md) + +###### receiver? + +`string` + +###### skip? + +`number` + +###### to? + +`Date` + +#### Returns + +`Promise`\<[`ICancellationRefund`](../../interfaces/interfaces/ICancellationRefund.md)[]\> + +List of cancellation refunds matching the filters. + +**Code example** + +```ts +import { ChainId, EscrowUtils } from '@human-protocol/sdk'; + +const cancellationRefunds = await EscrowUtils.getCancellationRefunds({ + chainId: ChainId.POLYGON_AMOY, + escrowAddress: '0x1234567890123456789012345678901234567890', +}); +console.log(cancellationRefunds); +``` + +*** + ### getEscrow() -> `static` **getEscrow**(`chainId`, `escrowAddress`): `Promise`\<`null` \| [`IEscrow`](../../interfaces/interfaces/IEscrow.md)\> +> `static` **getEscrow**(`chainId`, `escrowAddress`): `Promise`\<[`IEscrow`](../../interfaces/interfaces/IEscrow.md) \| `null`\> -Defined in: [escrow.ts:1796](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1796) +Defined in: [escrow.ts:2075](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L2075) This function returns the escrow data for a given address. @@ -79,23 +241,29 @@ enum ChainId { interface IEscrow { id: string; address: string; - amountPaid: string; - balance: string; - count: string; - jobRequesterId: string; + amountPaid: bigint; + balance: bigint; + count: bigint; factoryAddress: string; - finalResultsUrl?: string; - intermediateResultsUrl?: string; + finalResultsUrl: string | null; + finalResultsHash: string | null; + intermediateResultsUrl: string | null; + intermediateResultsHash: string | null; launcher: string; - manifestHash?: string; - manifest?: string; - recordingOracle?: string; - reputationOracle?: string; - exchangeOracle?: string; - status: EscrowStatus; + jobRequesterId: string | null; + manifestHash: string | null; + manifest: string | null; + recordingOracle: string | null; + reputationOracle: string | null; + exchangeOracle: string | null; + recordingOracleFee: number | null; + reputationOracleFee: number | null; + exchangeOracleFee: number | null; + status: string; token: string; - totalFundedAmount: string; - createdAt: string; + totalFundedAmount: bigint; + createdAt: number; + chainId: number; }; ``` @@ -115,7 +283,7 @@ Address of the escrow #### Returns -`Promise`\<`null` \| [`IEscrow`](../../interfaces/interfaces/IEscrow.md)\> +`Promise`\<[`IEscrow`](../../interfaces/interfaces/IEscrow.md) \| `null`\> - Escrow data or null if not found. @@ -133,7 +301,7 @@ const escrow = new EscrowUtils.getEscrow(ChainId.POLYGON_AMOY, "0x12345678901234 > `static` **getEscrows**(`filter`): `Promise`\<[`IEscrow`](../../interfaces/interfaces/IEscrow.md)[]\> -Defined in: [escrow.ts:1680](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1680) +Defined in: [escrow.ts:1959](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1959) This function returns an array of escrows based on the specified filter parameters. @@ -191,23 +359,29 @@ enum EscrowStatus { interface IEscrow { id: string; address: string; - amountPaid: string; - balance: string; - count: string; - jobRequesterId: string; + amountPaid: bigint; + balance: bigint; + count: bigint; factoryAddress: string; - finalResultsUrl?: string; - intermediateResultsUrl?: string; + finalResultsUrl: string | null; + finalResultsHash: string | null; + intermediateResultsUrl: string | null; + intermediateResultsHash: string | null; launcher: string; - manifestHash?: string; - manifest?: string; - recordingOracle?: string; - reputationOracle?: string; - exchangeOracle?: string; - status: EscrowStatus; + jobRequesterId: string | null; + manifestHash: string | null; + manifest: string | null; + recordingOracle: string | null; + reputationOracle: string | null; + exchangeOracle: string | null; + recordingOracleFee: number | null; + reputationOracleFee: number | null; + exchangeOracleFee: number | null; + status: string; token: string; - totalFundedAmount: string; - createdAt: string; + totalFundedAmount: bigint; + createdAt: number; + chainId: number; }; ``` @@ -243,9 +417,9 @@ const escrows = await EscrowUtils.getEscrows(filters); ### getPayouts() -> `static` **getPayouts**(`filter`): `Promise`\<[`Payout`](../../types/type-aliases/Payout.md)[]\> +> `static` **getPayouts**(`filter`): `Promise`\<[`IPayout`](../../interfaces/interfaces/IPayout.md)[]\> -Defined in: [escrow.ts:1967](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1967) +Defined in: [escrow.ts:2244](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L2244) This function returns the payouts for a given set of networks. @@ -264,7 +438,7 @@ Filter parameters. #### Returns -`Promise`\<[`Payout`](../../types/type-aliases/Payout.md)[]\> +`Promise`\<[`IPayout`](../../interfaces/interfaces/IPayout.md)[]\> List of payouts matching the filters. @@ -287,9 +461,9 @@ console.log(payouts); ### getStatusEvents() -> `static` **getStatusEvents**(`filter`): `Promise`\<[`StatusEvent`](../../graphql/types/type-aliases/StatusEvent.md)[]\> +> `static` **getStatusEvents**(`filter`): `Promise`\<[`IStatusEvent`](../../interfaces/interfaces/IStatusEvent.md)[]\> -Defined in: [escrow.ts:1876](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L1876) +Defined in: [escrow.ts:2155](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts#L2155) This function returns the status events for a given set of networks within an optional date range. @@ -335,7 +509,7 @@ Filter parameters. #### Returns -`Promise`\<[`StatusEvent`](../../graphql/types/type-aliases/StatusEvent.md)[]\> +`Promise`\<[`IStatusEvent`](../../interfaces/interfaces/IStatusEvent.md)[]\> - Array of status events with their corresponding statuses. diff --git a/docs/sdk/typescript/graphql/types/README.md b/docs/sdk/typescript/graphql/types/README.md index 627806191d..9e93a2e90f 100644 --- a/docs/sdk/typescript/graphql/types/README.md +++ b/docs/sdk/typescript/graphql/types/README.md @@ -6,26 +6,24 @@ # graphql/types +## Interfaces + +- [IOperatorSubgraph](interfaces/IOperatorSubgraph.md) +- [IReputationNetworkSubgraph](interfaces/IReputationNetworkSubgraph.md) + ## Type Aliases -- [DailyEscrowData](type-aliases/DailyEscrowData.md) -- [DailyHMTData](type-aliases/DailyHMTData.md) -- [DailyPaymentData](type-aliases/DailyPaymentData.md) -- [DailyTaskData](type-aliases/DailyTaskData.md) -- [DailyWorkerData](type-aliases/DailyWorkerData.md) +- [CancellationRefundData](type-aliases/CancellationRefundData.md) - [EscrowData](type-aliases/EscrowData.md) -- [EscrowStatistics](type-aliases/EscrowStatistics.md) - [EscrowStatisticsData](type-aliases/EscrowStatisticsData.md) - [EventDayData](type-aliases/EventDayData.md) -- [HMTHolder](type-aliases/HMTHolder.md) - [HMTHolderData](type-aliases/HMTHolderData.md) -- [HMTStatistics](type-aliases/HMTStatistics.md) - [HMTStatisticsData](type-aliases/HMTStatisticsData.md) -- [IMData](type-aliases/IMData.md) -- [IMDataEntity](type-aliases/IMDataEntity.md) +- [InternalTransactionData](type-aliases/InternalTransactionData.md) - [KVStoreData](type-aliases/KVStoreData.md) -- [PaymentStatistics](type-aliases/PaymentStatistics.md) +- [PayoutData](type-aliases/PayoutData.md) - [RewardAddedEventData](type-aliases/RewardAddedEventData.md) +- [StakerData](type-aliases/StakerData.md) - [StatusEvent](type-aliases/StatusEvent.md) -- [TaskStatistics](type-aliases/TaskStatistics.md) -- [WorkerStatistics](type-aliases/WorkerStatistics.md) +- [TransactionData](type-aliases/TransactionData.md) +- [WorkerData](type-aliases/WorkerData.md) diff --git a/docs/sdk/typescript/graphql/types/interfaces/IOperatorSubgraph.md b/docs/sdk/typescript/graphql/types/interfaces/IOperatorSubgraph.md new file mode 100644 index 0000000000..c89f6a65b2 --- /dev/null +++ b/docs/sdk/typescript/graphql/types/interfaces/IOperatorSubgraph.md @@ -0,0 +1,141 @@ +[**@human-protocol/sdk**](../../../README.md) + +*** + +[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / IOperatorSubgraph + +# Interface: IOperatorSubgraph + +Defined in: [graphql/types.ts:143](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L143) + +## Properties + +### address + +> **address**: `string` + +Defined in: [graphql/types.ts:145](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L145) + +*** + +### amountJobsProcessed + +> **amountJobsProcessed**: `string` + +Defined in: [graphql/types.ts:146](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L146) + +*** + +### category + +> **category**: `string` \| `null` + +Defined in: [graphql/types.ts:156](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L156) + +*** + +### fee + +> **fee**: `string` \| `null` + +Defined in: [graphql/types.ts:148](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L148) + +*** + +### id + +> **id**: `string` + +Defined in: [graphql/types.ts:144](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L144) + +*** + +### jobTypes + +> **jobTypes**: `string` \| `string`[] \| `null` + +Defined in: [graphql/types.ts:157](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L157) + +*** + +### name + +> **name**: `string` \| `null` + +Defined in: [graphql/types.ts:155](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L155) + +*** + +### publicKey + +> **publicKey**: `string` \| `null` + +Defined in: [graphql/types.ts:149](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L149) + +*** + +### registrationInstructions + +> **registrationInstructions**: `string` \| `null` + +Defined in: [graphql/types.ts:154](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L154) + +*** + +### registrationNeeded + +> **registrationNeeded**: `boolean` \| `null` + +Defined in: [graphql/types.ts:153](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L153) + +*** + +### reputationNetworks + +> **reputationNetworks**: `object`[] + +Defined in: [graphql/types.ts:158](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L158) + +#### address + +> **address**: `string` + +*** + +### role + +> **role**: `string` \| `null` + +Defined in: [graphql/types.ts:147](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L147) + +*** + +### staker + +> **staker**: \{ `lastDepositTimestamp`: `string`; `lockedAmount`: `string`; `lockedUntilTimestamp`: `string`; `slashedAmount`: `string`; `stakedAmount`: `string`; `withdrawnAmount`: `string`; \} \| `null` + +Defined in: [graphql/types.ts:159](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L159) + +*** + +### url + +> **url**: `string` \| `null` + +Defined in: [graphql/types.ts:152](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L152) + +*** + +### webhookUrl + +> **webhookUrl**: `string` \| `null` + +Defined in: [graphql/types.ts:150](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L150) + +*** + +### website + +> **website**: `string` \| `null` + +Defined in: [graphql/types.ts:151](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L151) diff --git a/docs/sdk/typescript/graphql/types/interfaces/IReputationNetworkSubgraph.md b/docs/sdk/typescript/graphql/types/interfaces/IReputationNetworkSubgraph.md new file mode 100644 index 0000000000..078f8968ca --- /dev/null +++ b/docs/sdk/typescript/graphql/types/interfaces/IReputationNetworkSubgraph.md @@ -0,0 +1,45 @@ +[**@human-protocol/sdk**](../../../README.md) + +*** + +[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / IReputationNetworkSubgraph + +# Interface: IReputationNetworkSubgraph + +Defined in: [graphql/types.ts:169](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L169) + +## Extends + +- `Omit`\<[`IReputationNetwork`](../../../interfaces/interfaces/IReputationNetwork.md), `"operators"`\> + +## Properties + +### address + +> **address**: `string` + +Defined in: [interfaces.ts:42](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L42) + +#### Inherited from + +[`IReputationNetwork`](../../../interfaces/interfaces/IReputationNetwork.md).[`address`](../../../interfaces/interfaces/IReputationNetwork.md#address) + +*** + +### id + +> **id**: `string` + +Defined in: [interfaces.ts:41](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L41) + +#### Inherited from + +[`IReputationNetwork`](../../../interfaces/interfaces/IReputationNetwork.md).[`id`](../../../interfaces/interfaces/IReputationNetwork.md#id) + +*** + +### operators + +> **operators**: [`IOperatorSubgraph`](IOperatorSubgraph.md)[] + +Defined in: [graphql/types.ts:171](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L171) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/CancellationRefundData.md b/docs/sdk/typescript/graphql/types/type-aliases/CancellationRefundData.md new file mode 100644 index 0000000000..ba79d3208a --- /dev/null +++ b/docs/sdk/typescript/graphql/types/type-aliases/CancellationRefundData.md @@ -0,0 +1,67 @@ +[**@human-protocol/sdk**](../../../README.md) + +*** + +[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / CancellationRefundData + +# Type Alias: CancellationRefundData + +> **CancellationRefundData** = `object` + +Defined in: [graphql/types.ts:182](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L182) + +## Properties + +### amount + +> **amount**: `string` + +Defined in: [graphql/types.ts:186](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L186) + +*** + +### block + +> **block**: `string` + +Defined in: [graphql/types.ts:187](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L187) + +*** + +### escrowAddress + +> **escrowAddress**: `string` + +Defined in: [graphql/types.ts:184](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L184) + +*** + +### id + +> **id**: `string` + +Defined in: [graphql/types.ts:183](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L183) + +*** + +### receiver + +> **receiver**: `string` + +Defined in: [graphql/types.ts:185](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L185) + +*** + +### timestamp + +> **timestamp**: `string` + +Defined in: [graphql/types.ts:188](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L188) + +*** + +### txHash + +> **txHash**: `string` + +Defined in: [graphql/types.ts:189](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L189) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/DailyEscrowData.md b/docs/sdk/typescript/graphql/types/type-aliases/DailyEscrowData.md deleted file mode 100644 index 44ecb8f493..0000000000 --- a/docs/sdk/typescript/graphql/types/type-aliases/DailyEscrowData.md +++ /dev/null @@ -1,59 +0,0 @@ -[**@human-protocol/sdk**](../../../README.md) - -*** - -[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / DailyEscrowData - -# Type Alias: DailyEscrowData - -> **DailyEscrowData** = `object` - -Defined in: [graphql/types.ts:75](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L75) - -## Properties - -### escrowsCancelled - -> **escrowsCancelled**: `number` - -Defined in: [graphql/types.ts:81](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L81) - -*** - -### escrowsPaid - -> **escrowsPaid**: `number` - -Defined in: [graphql/types.ts:80](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L80) - -*** - -### escrowsPending - -> **escrowsPending**: `number` - -Defined in: [graphql/types.ts:78](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L78) - -*** - -### escrowsSolved - -> **escrowsSolved**: `number` - -Defined in: [graphql/types.ts:79](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L79) - -*** - -### escrowsTotal - -> **escrowsTotal**: `number` - -Defined in: [graphql/types.ts:77](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L77) - -*** - -### timestamp - -> **timestamp**: `Date` - -Defined in: [graphql/types.ts:76](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L76) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/DailyHMTData.md b/docs/sdk/typescript/graphql/types/type-aliases/DailyHMTData.md deleted file mode 100644 index d3451e6a94..0000000000 --- a/docs/sdk/typescript/graphql/types/type-aliases/DailyHMTData.md +++ /dev/null @@ -1,51 +0,0 @@ -[**@human-protocol/sdk**](../../../README.md) - -*** - -[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / DailyHMTData - -# Type Alias: DailyHMTData - -> **DailyHMTData** = `object` - -Defined in: [graphql/types.ts:119](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L119) - -## Properties - -### dailyUniqueReceivers - -> **dailyUniqueReceivers**: `number` - -Defined in: [graphql/types.ts:124](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L124) - -*** - -### dailyUniqueSenders - -> **dailyUniqueSenders**: `number` - -Defined in: [graphql/types.ts:123](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L123) - -*** - -### timestamp - -> **timestamp**: `Date` - -Defined in: [graphql/types.ts:120](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L120) - -*** - -### totalTransactionAmount - -> **totalTransactionAmount**: `bigint` - -Defined in: [graphql/types.ts:121](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L121) - -*** - -### totalTransactionCount - -> **totalTransactionCount**: `number` - -Defined in: [graphql/types.ts:122](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L122) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/DailyPaymentData.md b/docs/sdk/typescript/graphql/types/type-aliases/DailyPaymentData.md deleted file mode 100644 index d6aeb48adf..0000000000 --- a/docs/sdk/typescript/graphql/types/type-aliases/DailyPaymentData.md +++ /dev/null @@ -1,43 +0,0 @@ -[**@human-protocol/sdk**](../../../README.md) - -*** - -[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / DailyPaymentData - -# Type Alias: DailyPaymentData - -> **DailyPaymentData** = `object` - -Defined in: [graphql/types.ts:98](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L98) - -## Properties - -### averageAmountPerWorker - -> **averageAmountPerWorker**: `bigint` - -Defined in: [graphql/types.ts:102](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L102) - -*** - -### timestamp - -> **timestamp**: `Date` - -Defined in: [graphql/types.ts:99](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L99) - -*** - -### totalAmountPaid - -> **totalAmountPaid**: `bigint` - -Defined in: [graphql/types.ts:100](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L100) - -*** - -### totalCount - -> **totalCount**: `number` - -Defined in: [graphql/types.ts:101](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L101) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/DailyTaskData.md b/docs/sdk/typescript/graphql/types/type-aliases/DailyTaskData.md deleted file mode 100644 index d09da52607..0000000000 --- a/docs/sdk/typescript/graphql/types/type-aliases/DailyTaskData.md +++ /dev/null @@ -1,35 +0,0 @@ -[**@human-protocol/sdk**](../../../README.md) - -*** - -[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / DailyTaskData - -# Type Alias: DailyTaskData - -> **DailyTaskData** = `object` - -Defined in: [graphql/types.ts:140](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L140) - -## Properties - -### tasksSolved - -> **tasksSolved**: `number` - -Defined in: [graphql/types.ts:143](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L143) - -*** - -### tasksTotal - -> **tasksTotal**: `number` - -Defined in: [graphql/types.ts:142](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L142) - -*** - -### timestamp - -> **timestamp**: `Date` - -Defined in: [graphql/types.ts:141](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L141) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/DailyWorkerData.md b/docs/sdk/typescript/graphql/types/type-aliases/DailyWorkerData.md deleted file mode 100644 index 86b604b588..0000000000 --- a/docs/sdk/typescript/graphql/types/type-aliases/DailyWorkerData.md +++ /dev/null @@ -1,27 +0,0 @@ -[**@human-protocol/sdk**](../../../README.md) - -*** - -[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / DailyWorkerData - -# Type Alias: DailyWorkerData - -> **DailyWorkerData** = `object` - -Defined in: [graphql/types.ts:89](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L89) - -## Properties - -### activeWorkers - -> **activeWorkers**: `number` - -Defined in: [graphql/types.ts:91](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L91) - -*** - -### timestamp - -> **timestamp**: `Date` - -Defined in: [graphql/types.ts:90](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L90) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/EscrowData.md b/docs/sdk/typescript/graphql/types/type-aliases/EscrowData.md index 6f3965b7a4..5b8896b3fd 100644 --- a/docs/sdk/typescript/graphql/types/type-aliases/EscrowData.md +++ b/docs/sdk/typescript/graphql/types/type-aliases/EscrowData.md @@ -8,7 +8,7 @@ > **EscrowData** = `object` -Defined in: [graphql/types.ts:3](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L3) +Defined in: [graphql/types.ts:3](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L3) ## Properties @@ -16,7 +16,7 @@ Defined in: [graphql/types.ts:3](https://github.com/humanprotocol/human-protocol > **address**: `string` -Defined in: [graphql/types.ts:5](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L5) +Defined in: [graphql/types.ts:5](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L5) *** @@ -24,7 +24,7 @@ Defined in: [graphql/types.ts:5](https://github.com/humanprotocol/human-protocol > **amountPaid**: `string` -Defined in: [graphql/types.ts:6](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L6) +Defined in: [graphql/types.ts:6](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L6) *** @@ -32,39 +32,39 @@ Defined in: [graphql/types.ts:6](https://github.com/humanprotocol/human-protocol > **balance**: `string` -Defined in: [graphql/types.ts:7](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L7) +Defined in: [graphql/types.ts:7](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L7) *** -### chainId +### count -> **chainId**: `number` +> **count**: `string` -Defined in: [graphql/types.ts:22](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L22) +Defined in: [graphql/types.ts:8](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L8) *** -### count +### createdAt -> **count**: `string` +> **createdAt**: `string` -Defined in: [graphql/types.ts:8](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L8) +Defined in: [graphql/types.ts:27](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L27) *** -### createdAt +### exchangeOracle -> **createdAt**: `string` +> **exchangeOracle**: `string` \| `null` -Defined in: [graphql/types.ts:21](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L21) +Defined in: [graphql/types.ts:20](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L20) *** -### exchangeOracle? +### exchangeOracleFee -> `optional` **exchangeOracle**: `string` +> **exchangeOracleFee**: `string` \| `null` -Defined in: [graphql/types.ts:17](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L17) +Defined in: [graphql/types.ts:23](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L23) *** @@ -72,15 +72,23 @@ Defined in: [graphql/types.ts:17](https://github.com/humanprotocol/human-protoco > **factoryAddress**: `string` -Defined in: [graphql/types.ts:9](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L9) +Defined in: [graphql/types.ts:9](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L9) *** -### finalResultsUrl? +### finalResultsHash -> `optional` **finalResultsUrl**: `string` +> **finalResultsHash**: `string` \| `null` -Defined in: [graphql/types.ts:10](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L10) +Defined in: [graphql/types.ts:11](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L11) + +*** + +### finalResultsUrl + +> **finalResultsUrl**: `string` \| `null` + +Defined in: [graphql/types.ts:10](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L10) *** @@ -88,15 +96,31 @@ Defined in: [graphql/types.ts:10](https://github.com/humanprotocol/human-protoco > **id**: `string` -Defined in: [graphql/types.ts:4](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L4) +Defined in: [graphql/types.ts:4](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L4) *** -### intermediateResultsUrl? +### intermediateResultsHash -> `optional` **intermediateResultsUrl**: `string` +> **intermediateResultsHash**: `string` \| `null` -Defined in: [graphql/types.ts:11](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L11) +Defined in: [graphql/types.ts:13](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L13) + +*** + +### intermediateResultsUrl + +> **intermediateResultsUrl**: `string` \| `null` + +Defined in: [graphql/types.ts:12](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L12) + +*** + +### jobRequesterId + +> **jobRequesterId**: `string` \| `null` + +Defined in: [graphql/types.ts:15](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L15) *** @@ -104,39 +128,55 @@ Defined in: [graphql/types.ts:11](https://github.com/humanprotocol/human-protoco > **launcher**: `string` -Defined in: [graphql/types.ts:12](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L12) +Defined in: [graphql/types.ts:14](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L14) + +*** + +### manifest + +> **manifest**: `string` \| `null` + +Defined in: [graphql/types.ts:17](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L17) + +*** + +### manifestHash + +> **manifestHash**: `string` \| `null` + +Defined in: [graphql/types.ts:16](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L16) *** -### manifestHash? +### recordingOracle -> `optional` **manifestHash**: `string` +> **recordingOracle**: `string` \| `null` -Defined in: [graphql/types.ts:13](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L13) +Defined in: [graphql/types.ts:18](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L18) *** -### manifestUrl? +### recordingOracleFee -> `optional` **manifestUrl**: `string` +> **recordingOracleFee**: `string` \| `null` -Defined in: [graphql/types.ts:14](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L14) +Defined in: [graphql/types.ts:21](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L21) *** -### recordingOracle? +### reputationOracle -> `optional` **recordingOracle**: `string` +> **reputationOracle**: `string` \| `null` -Defined in: [graphql/types.ts:15](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L15) +Defined in: [graphql/types.ts:19](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L19) *** -### reputationOracle? +### reputationOracleFee -> `optional` **reputationOracle**: `string` +> **reputationOracleFee**: `string` \| `null` -Defined in: [graphql/types.ts:16](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L16) +Defined in: [graphql/types.ts:22](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L22) *** @@ -144,7 +184,7 @@ Defined in: [graphql/types.ts:16](https://github.com/humanprotocol/human-protoco > **status**: `string` -Defined in: [graphql/types.ts:18](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L18) +Defined in: [graphql/types.ts:24](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L24) *** @@ -152,7 +192,7 @@ Defined in: [graphql/types.ts:18](https://github.com/humanprotocol/human-protoco > **token**: `string` -Defined in: [graphql/types.ts:19](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L19) +Defined in: [graphql/types.ts:25](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L25) *** @@ -160,4 +200,4 @@ Defined in: [graphql/types.ts:19](https://github.com/humanprotocol/human-protoco > **totalFundedAmount**: `string` -Defined in: [graphql/types.ts:20](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L20) +Defined in: [graphql/types.ts:26](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L26) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/EscrowStatistics.md b/docs/sdk/typescript/graphql/types/type-aliases/EscrowStatistics.md deleted file mode 100644 index f93d242da1..0000000000 --- a/docs/sdk/typescript/graphql/types/type-aliases/EscrowStatistics.md +++ /dev/null @@ -1,27 +0,0 @@ -[**@human-protocol/sdk**](../../../README.md) - -*** - -[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / EscrowStatistics - -# Type Alias: EscrowStatistics - -> **EscrowStatistics** = `object` - -Defined in: [graphql/types.ts:84](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L84) - -## Properties - -### dailyEscrowsData - -> **dailyEscrowsData**: [`DailyEscrowData`](DailyEscrowData.md)[] - -Defined in: [graphql/types.ts:86](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L86) - -*** - -### totalEscrows - -> **totalEscrows**: `number` - -Defined in: [graphql/types.ts:85](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L85) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/EscrowStatisticsData.md b/docs/sdk/typescript/graphql/types/type-aliases/EscrowStatisticsData.md index 8956581308..364720af4e 100644 --- a/docs/sdk/typescript/graphql/types/type-aliases/EscrowStatisticsData.md +++ b/docs/sdk/typescript/graphql/types/type-aliases/EscrowStatisticsData.md @@ -8,7 +8,7 @@ > **EscrowStatisticsData** = `object` -Defined in: [graphql/types.ts:34](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L34) +Defined in: [graphql/types.ts:71](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L71) ## Properties @@ -16,7 +16,7 @@ Defined in: [graphql/types.ts:34](https://github.com/humanprotocol/human-protoco > **bulkPayoutEventCount**: `string` -Defined in: [graphql/types.ts:37](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L37) +Defined in: [graphql/types.ts:74](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L74) *** @@ -24,7 +24,7 @@ Defined in: [graphql/types.ts:37](https://github.com/humanprotocol/human-protoco > **cancelledStatusEventCount**: `string` -Defined in: [graphql/types.ts:39](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L39) +Defined in: [graphql/types.ts:76](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L76) *** @@ -32,7 +32,7 @@ Defined in: [graphql/types.ts:39](https://github.com/humanprotocol/human-protoco > **completedStatusEventCount**: `string` -Defined in: [graphql/types.ts:42](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L42) +Defined in: [graphql/types.ts:79](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L79) *** @@ -40,7 +40,7 @@ Defined in: [graphql/types.ts:42](https://github.com/humanprotocol/human-protoco > **fundEventCount**: `string` -Defined in: [graphql/types.ts:35](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L35) +Defined in: [graphql/types.ts:72](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L72) *** @@ -48,7 +48,7 @@ Defined in: [graphql/types.ts:35](https://github.com/humanprotocol/human-protoco > **paidStatusEventCount**: `string` -Defined in: [graphql/types.ts:41](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L41) +Defined in: [graphql/types.ts:78](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L78) *** @@ -56,7 +56,7 @@ Defined in: [graphql/types.ts:41](https://github.com/humanprotocol/human-protoco > **partialStatusEventCount**: `string` -Defined in: [graphql/types.ts:40](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L40) +Defined in: [graphql/types.ts:77](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L77) *** @@ -64,7 +64,7 @@ Defined in: [graphql/types.ts:40](https://github.com/humanprotocol/human-protoco > **pendingStatusEventCount**: `string` -Defined in: [graphql/types.ts:38](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L38) +Defined in: [graphql/types.ts:75](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L75) *** @@ -72,7 +72,7 @@ Defined in: [graphql/types.ts:38](https://github.com/humanprotocol/human-protoco > **storeResultsEventCount**: `string` -Defined in: [graphql/types.ts:36](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L36) +Defined in: [graphql/types.ts:73](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L73) *** @@ -80,7 +80,7 @@ Defined in: [graphql/types.ts:36](https://github.com/humanprotocol/human-protoco > **totalEscrowCount**: `string` -Defined in: [graphql/types.ts:44](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L44) +Defined in: [graphql/types.ts:81](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L81) *** @@ -88,4 +88,4 @@ Defined in: [graphql/types.ts:44](https://github.com/humanprotocol/human-protoco > **totalEventCount**: `string` -Defined in: [graphql/types.ts:43](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L43) +Defined in: [graphql/types.ts:80](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L80) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/EventDayData.md b/docs/sdk/typescript/graphql/types/type-aliases/EventDayData.md index 624604f8bf..7f794500a3 100644 --- a/docs/sdk/typescript/graphql/types/type-aliases/EventDayData.md +++ b/docs/sdk/typescript/graphql/types/type-aliases/EventDayData.md @@ -8,7 +8,7 @@ > **EventDayData** = `object` -Defined in: [graphql/types.ts:47](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L47) +Defined in: [graphql/types.ts:84](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L84) ## Properties @@ -16,7 +16,7 @@ Defined in: [graphql/types.ts:47](https://github.com/humanprotocol/human-protoco > **dailyBulkPayoutEventCount**: `string` -Defined in: [graphql/types.ts:51](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L51) +Defined in: [graphql/types.ts:88](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L88) *** @@ -24,7 +24,7 @@ Defined in: [graphql/types.ts:51](https://github.com/humanprotocol/human-protoco > **dailyCancelledStatusEventCount**: `string` -Defined in: [graphql/types.ts:53](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L53) +Defined in: [graphql/types.ts:90](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L90) *** @@ -32,7 +32,7 @@ Defined in: [graphql/types.ts:53](https://github.com/humanprotocol/human-protoco > **dailyCompletedStatusEventCount**: `string` -Defined in: [graphql/types.ts:56](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L56) +Defined in: [graphql/types.ts:93](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L93) *** @@ -40,7 +40,7 @@ Defined in: [graphql/types.ts:56](https://github.com/humanprotocol/human-protoco > **dailyEscrowCount**: `string` -Defined in: [graphql/types.ts:58](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L58) +Defined in: [graphql/types.ts:95](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L95) *** @@ -48,7 +48,7 @@ Defined in: [graphql/types.ts:58](https://github.com/humanprotocol/human-protoco > **dailyFundEventCount**: `string` -Defined in: [graphql/types.ts:49](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L49) +Defined in: [graphql/types.ts:86](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L86) *** @@ -56,7 +56,7 @@ Defined in: [graphql/types.ts:49](https://github.com/humanprotocol/human-protoco > **dailyHMTPayoutAmount**: `string` -Defined in: [graphql/types.ts:61](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L61) +Defined in: [graphql/types.ts:98](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L98) *** @@ -64,7 +64,7 @@ Defined in: [graphql/types.ts:61](https://github.com/humanprotocol/human-protoco > **dailyHMTTransferAmount**: `string` -Defined in: [graphql/types.ts:63](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L63) +Defined in: [graphql/types.ts:100](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L100) *** @@ -72,7 +72,7 @@ Defined in: [graphql/types.ts:63](https://github.com/humanprotocol/human-protoco > **dailyHMTTransferCount**: `string` -Defined in: [graphql/types.ts:62](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L62) +Defined in: [graphql/types.ts:99](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L99) *** @@ -80,7 +80,7 @@ Defined in: [graphql/types.ts:62](https://github.com/humanprotocol/human-protoco > **dailyPaidStatusEventCount**: `string` -Defined in: [graphql/types.ts:55](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L55) +Defined in: [graphql/types.ts:92](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L92) *** @@ -88,7 +88,7 @@ Defined in: [graphql/types.ts:55](https://github.com/humanprotocol/human-protoco > **dailyPartialStatusEventCount**: `string` -Defined in: [graphql/types.ts:54](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L54) +Defined in: [graphql/types.ts:91](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L91) *** @@ -96,7 +96,7 @@ Defined in: [graphql/types.ts:54](https://github.com/humanprotocol/human-protoco > **dailyPayoutCount**: `string` -Defined in: [graphql/types.ts:60](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L60) +Defined in: [graphql/types.ts:97](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L97) *** @@ -104,7 +104,7 @@ Defined in: [graphql/types.ts:60](https://github.com/humanprotocol/human-protoco > **dailyPendingStatusEventCount**: `string` -Defined in: [graphql/types.ts:52](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L52) +Defined in: [graphql/types.ts:89](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L89) *** @@ -112,7 +112,7 @@ Defined in: [graphql/types.ts:52](https://github.com/humanprotocol/human-protoco > **dailyStoreResultsEventCount**: `string` -Defined in: [graphql/types.ts:50](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L50) +Defined in: [graphql/types.ts:87](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L87) *** @@ -120,7 +120,7 @@ Defined in: [graphql/types.ts:50](https://github.com/humanprotocol/human-protoco > **dailyTotalEventCount**: `string` -Defined in: [graphql/types.ts:57](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L57) +Defined in: [graphql/types.ts:94](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L94) *** @@ -128,7 +128,7 @@ Defined in: [graphql/types.ts:57](https://github.com/humanprotocol/human-protoco > **dailyUniqueReceivers**: `string` -Defined in: [graphql/types.ts:65](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L65) +Defined in: [graphql/types.ts:102](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L102) *** @@ -136,7 +136,7 @@ Defined in: [graphql/types.ts:65](https://github.com/humanprotocol/human-protoco > **dailyUniqueSenders**: `string` -Defined in: [graphql/types.ts:64](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L64) +Defined in: [graphql/types.ts:101](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L101) *** @@ -144,7 +144,7 @@ Defined in: [graphql/types.ts:64](https://github.com/humanprotocol/human-protoco > **dailyWorkerCount**: `string` -Defined in: [graphql/types.ts:59](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L59) +Defined in: [graphql/types.ts:96](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L96) *** @@ -152,4 +152,4 @@ Defined in: [graphql/types.ts:59](https://github.com/humanprotocol/human-protoco > **timestamp**: `string` -Defined in: [graphql/types.ts:48](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L48) +Defined in: [graphql/types.ts:85](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L85) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/HMTHolder.md b/docs/sdk/typescript/graphql/types/type-aliases/HMTHolder.md deleted file mode 100644 index eb2e3e12c6..0000000000 --- a/docs/sdk/typescript/graphql/types/type-aliases/HMTHolder.md +++ /dev/null @@ -1,27 +0,0 @@ -[**@human-protocol/sdk**](../../../README.md) - -*** - -[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / HMTHolder - -# Type Alias: HMTHolder - -> **HMTHolder** = `object` - -Defined in: [graphql/types.ts:114](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L114) - -## Properties - -### address - -> **address**: `string` - -Defined in: [graphql/types.ts:115](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L115) - -*** - -### balance - -> **balance**: `bigint` - -Defined in: [graphql/types.ts:116](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L116) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/HMTHolderData.md b/docs/sdk/typescript/graphql/types/type-aliases/HMTHolderData.md index 887cd89ef8..f511b64ce3 100644 --- a/docs/sdk/typescript/graphql/types/type-aliases/HMTHolderData.md +++ b/docs/sdk/typescript/graphql/types/type-aliases/HMTHolderData.md @@ -8,7 +8,7 @@ > **HMTHolderData** = `object` -Defined in: [graphql/types.ts:109](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L109) +Defined in: [graphql/types.ts:112](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L112) ## Properties @@ -16,7 +16,7 @@ Defined in: [graphql/types.ts:109](https://github.com/humanprotocol/human-protoc > **address**: `string` -Defined in: [graphql/types.ts:110](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L110) +Defined in: [graphql/types.ts:113](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L113) *** @@ -24,4 +24,4 @@ Defined in: [graphql/types.ts:110](https://github.com/humanprotocol/human-protoc > **balance**: `string` -Defined in: [graphql/types.ts:111](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L111) +Defined in: [graphql/types.ts:114](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L114) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/HMTStatistics.md b/docs/sdk/typescript/graphql/types/type-aliases/HMTStatistics.md deleted file mode 100644 index a0d9c232c7..0000000000 --- a/docs/sdk/typescript/graphql/types/type-aliases/HMTStatistics.md +++ /dev/null @@ -1,35 +0,0 @@ -[**@human-protocol/sdk**](../../../README.md) - -*** - -[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / HMTStatistics - -# Type Alias: HMTStatistics - -> **HMTStatistics** = `object` - -Defined in: [graphql/types.ts:127](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L127) - -## Properties - -### totalHolders - -> **totalHolders**: `number` - -Defined in: [graphql/types.ts:130](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L130) - -*** - -### totalTransferAmount - -> **totalTransferAmount**: `bigint` - -Defined in: [graphql/types.ts:128](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L128) - -*** - -### totalTransferCount - -> **totalTransferCount**: `number` - -Defined in: [graphql/types.ts:129](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L129) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/HMTStatisticsData.md b/docs/sdk/typescript/graphql/types/type-aliases/HMTStatisticsData.md index e0aa4eff4e..1840464b19 100644 --- a/docs/sdk/typescript/graphql/types/type-aliases/HMTStatisticsData.md +++ b/docs/sdk/typescript/graphql/types/type-aliases/HMTStatisticsData.md @@ -8,7 +8,7 @@ > **HMTStatisticsData** = `object` -Defined in: [graphql/types.ts:25](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L25) +Defined in: [graphql/types.ts:62](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L62) ## Properties @@ -16,7 +16,7 @@ Defined in: [graphql/types.ts:25](https://github.com/humanprotocol/human-protoco > **holders**: `string` -Defined in: [graphql/types.ts:31](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L31) +Defined in: [graphql/types.ts:68](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L68) *** @@ -24,7 +24,7 @@ Defined in: [graphql/types.ts:31](https://github.com/humanprotocol/human-protoco > **totalApprovalEventCount**: `string` -Defined in: [graphql/types.ts:28](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L28) +Defined in: [graphql/types.ts:65](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L65) *** @@ -32,7 +32,7 @@ Defined in: [graphql/types.ts:28](https://github.com/humanprotocol/human-protoco > **totalBulkApprovalEventCount**: `string` -Defined in: [graphql/types.ts:29](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L29) +Defined in: [graphql/types.ts:66](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L66) *** @@ -40,7 +40,7 @@ Defined in: [graphql/types.ts:29](https://github.com/humanprotocol/human-protoco > **totalBulkTransferEventCount**: `string` -Defined in: [graphql/types.ts:27](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L27) +Defined in: [graphql/types.ts:64](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L64) *** @@ -48,7 +48,7 @@ Defined in: [graphql/types.ts:27](https://github.com/humanprotocol/human-protoco > **totalTransferEventCount**: `string` -Defined in: [graphql/types.ts:26](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L26) +Defined in: [graphql/types.ts:63](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L63) *** @@ -56,4 +56,4 @@ Defined in: [graphql/types.ts:26](https://github.com/humanprotocol/human-protoco > **totalValueTransfered**: `string` -Defined in: [graphql/types.ts:30](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L30) +Defined in: [graphql/types.ts:67](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L67) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/IMData.md b/docs/sdk/typescript/graphql/types/type-aliases/IMData.md deleted file mode 100644 index 9341b01b3a..0000000000 --- a/docs/sdk/typescript/graphql/types/type-aliases/IMData.md +++ /dev/null @@ -1,11 +0,0 @@ -[**@human-protocol/sdk**](../../../README.md) - -*** - -[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / IMData - -# Type Alias: IMData - -> **IMData** = `Record`\<`string`, [`IMDataEntity`](IMDataEntity.md)\> - -Defined in: [graphql/types.ts:138](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L138) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/IMDataEntity.md b/docs/sdk/typescript/graphql/types/type-aliases/IMDataEntity.md deleted file mode 100644 index 1d5ac310ca..0000000000 --- a/docs/sdk/typescript/graphql/types/type-aliases/IMDataEntity.md +++ /dev/null @@ -1,27 +0,0 @@ -[**@human-protocol/sdk**](../../../README.md) - -*** - -[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / IMDataEntity - -# Type Alias: IMDataEntity - -> **IMDataEntity** = `object` - -Defined in: [graphql/types.ts:133](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L133) - -## Properties - -### served - -> **served**: `number` - -Defined in: [graphql/types.ts:134](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L134) - -*** - -### solved - -> **solved**: `number` - -Defined in: [graphql/types.ts:135](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L135) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/InternalTransactionData.md b/docs/sdk/typescript/graphql/types/type-aliases/InternalTransactionData.md new file mode 100644 index 0000000000..875e0e6819 --- /dev/null +++ b/docs/sdk/typescript/graphql/types/type-aliases/InternalTransactionData.md @@ -0,0 +1,75 @@ +[**@human-protocol/sdk**](../../../README.md) + +*** + +[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / InternalTransactionData + +# Type Alias: InternalTransactionData + +> **InternalTransactionData** = `object` + +Defined in: [graphql/types.ts:37](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L37) + +## Properties + +### escrow + +> **escrow**: `string` \| `null` + +Defined in: [graphql/types.ts:43](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L43) + +*** + +### from + +> **from**: `string` + +Defined in: [graphql/types.ts:38](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L38) + +*** + +### id + +> **id**: `string` \| `null` + +Defined in: [graphql/types.ts:45](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L45) + +*** + +### method + +> **method**: `string` + +Defined in: [graphql/types.ts:41](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L41) + +*** + +### receiver + +> **receiver**: `string` \| `null` + +Defined in: [graphql/types.ts:42](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L42) + +*** + +### to + +> **to**: `string` + +Defined in: [graphql/types.ts:39](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L39) + +*** + +### token + +> **token**: `string` \| `null` + +Defined in: [graphql/types.ts:44](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L44) + +*** + +### value + +> **value**: `string` + +Defined in: [graphql/types.ts:40](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L40) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/KVStoreData.md b/docs/sdk/typescript/graphql/types/type-aliases/KVStoreData.md index bc20df0475..5319d67ffd 100644 --- a/docs/sdk/typescript/graphql/types/type-aliases/KVStoreData.md +++ b/docs/sdk/typescript/graphql/types/type-aliases/KVStoreData.md @@ -8,7 +8,7 @@ > **KVStoreData** = `object` -Defined in: [graphql/types.ts:157](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L157) +Defined in: [graphql/types.ts:123](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L123) ## Properties @@ -16,15 +16,15 @@ Defined in: [graphql/types.ts:157](https://github.com/humanprotocol/human-protoc > **address**: `string` -Defined in: [graphql/types.ts:159](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L159) +Defined in: [graphql/types.ts:125](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L125) *** ### block -> **block**: `number` +> **block**: `string` -Defined in: [graphql/types.ts:163](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L163) +Defined in: [graphql/types.ts:129](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L129) *** @@ -32,7 +32,7 @@ Defined in: [graphql/types.ts:163](https://github.com/humanprotocol/human-protoc > **id**: `string` -Defined in: [graphql/types.ts:158](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L158) +Defined in: [graphql/types.ts:124](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L124) *** @@ -40,7 +40,7 @@ Defined in: [graphql/types.ts:158](https://github.com/humanprotocol/human-protoc > **key**: `string` -Defined in: [graphql/types.ts:160](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L160) +Defined in: [graphql/types.ts:126](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L126) *** @@ -48,7 +48,7 @@ Defined in: [graphql/types.ts:160](https://github.com/humanprotocol/human-protoc > **timestamp**: `Date` -Defined in: [graphql/types.ts:162](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L162) +Defined in: [graphql/types.ts:128](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L128) *** @@ -56,4 +56,4 @@ Defined in: [graphql/types.ts:162](https://github.com/humanprotocol/human-protoc > **value**: `string` -Defined in: [graphql/types.ts:161](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L161) +Defined in: [graphql/types.ts:127](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L127) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/PaymentStatistics.md b/docs/sdk/typescript/graphql/types/type-aliases/PaymentStatistics.md deleted file mode 100644 index ad36495e2e..0000000000 --- a/docs/sdk/typescript/graphql/types/type-aliases/PaymentStatistics.md +++ /dev/null @@ -1,19 +0,0 @@ -[**@human-protocol/sdk**](../../../README.md) - -*** - -[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / PaymentStatistics - -# Type Alias: PaymentStatistics - -> **PaymentStatistics** = `object` - -Defined in: [graphql/types.ts:105](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L105) - -## Properties - -### dailyPaymentsData - -> **dailyPaymentsData**: [`DailyPaymentData`](DailyPaymentData.md)[] - -Defined in: [graphql/types.ts:106](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L106) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/PayoutData.md b/docs/sdk/typescript/graphql/types/type-aliases/PayoutData.md new file mode 100644 index 0000000000..566111dec8 --- /dev/null +++ b/docs/sdk/typescript/graphql/types/type-aliases/PayoutData.md @@ -0,0 +1,51 @@ +[**@human-protocol/sdk**](../../../README.md) + +*** + +[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / PayoutData + +# Type Alias: PayoutData + +> **PayoutData** = `object` + +Defined in: [graphql/types.ts:174](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L174) + +## Properties + +### amount + +> **amount**: `string` + +Defined in: [graphql/types.ts:178](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L178) + +*** + +### createdAt + +> **createdAt**: `string` + +Defined in: [graphql/types.ts:179](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L179) + +*** + +### escrowAddress + +> **escrowAddress**: `string` + +Defined in: [graphql/types.ts:176](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L176) + +*** + +### id + +> **id**: `string` + +Defined in: [graphql/types.ts:175](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L175) + +*** + +### recipient + +> **recipient**: `string` + +Defined in: [graphql/types.ts:177](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L177) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/RewardAddedEventData.md b/docs/sdk/typescript/graphql/types/type-aliases/RewardAddedEventData.md index ee31803059..287b724a8a 100644 --- a/docs/sdk/typescript/graphql/types/type-aliases/RewardAddedEventData.md +++ b/docs/sdk/typescript/graphql/types/type-aliases/RewardAddedEventData.md @@ -8,7 +8,7 @@ > **RewardAddedEventData** = `object` -Defined in: [graphql/types.ts:68](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L68) +Defined in: [graphql/types.ts:105](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L105) ## Properties @@ -16,7 +16,7 @@ Defined in: [graphql/types.ts:68](https://github.com/humanprotocol/human-protoco > **amount**: `string` -Defined in: [graphql/types.ts:72](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L72) +Defined in: [graphql/types.ts:109](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L109) *** @@ -24,7 +24,7 @@ Defined in: [graphql/types.ts:72](https://github.com/humanprotocol/human-protoco > **escrowAddress**: `string` -Defined in: [graphql/types.ts:69](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L69) +Defined in: [graphql/types.ts:106](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L106) *** @@ -32,7 +32,7 @@ Defined in: [graphql/types.ts:69](https://github.com/humanprotocol/human-protoco > **slasher**: `string` -Defined in: [graphql/types.ts:71](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L71) +Defined in: [graphql/types.ts:108](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L108) *** @@ -40,4 +40,4 @@ Defined in: [graphql/types.ts:71](https://github.com/humanprotocol/human-protoco > **staker**: `string` -Defined in: [graphql/types.ts:70](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L70) +Defined in: [graphql/types.ts:107](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L107) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/StakerData.md b/docs/sdk/typescript/graphql/types/type-aliases/StakerData.md new file mode 100644 index 0000000000..c2dc41fd43 --- /dev/null +++ b/docs/sdk/typescript/graphql/types/type-aliases/StakerData.md @@ -0,0 +1,75 @@ +[**@human-protocol/sdk**](../../../README.md) + +*** + +[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / StakerData + +# Type Alias: StakerData + +> **StakerData** = `object` + +Defined in: [graphql/types.ts:132](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L132) + +## Properties + +### address + +> **address**: `string` + +Defined in: [graphql/types.ts:134](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L134) + +*** + +### id + +> **id**: `string` + +Defined in: [graphql/types.ts:133](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L133) + +*** + +### lastDepositTimestamp + +> **lastDepositTimestamp**: `string` + +Defined in: [graphql/types.ts:140](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L140) + +*** + +### lockedAmount + +> **lockedAmount**: `string` + +Defined in: [graphql/types.ts:136](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L136) + +*** + +### lockedUntilTimestamp + +> **lockedUntilTimestamp**: `string` + +Defined in: [graphql/types.ts:139](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L139) + +*** + +### slashedAmount + +> **slashedAmount**: `string` + +Defined in: [graphql/types.ts:138](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L138) + +*** + +### stakedAmount + +> **stakedAmount**: `string` + +Defined in: [graphql/types.ts:135](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L135) + +*** + +### withdrawnAmount + +> **withdrawnAmount**: `string` + +Defined in: [graphql/types.ts:137](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L137) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/StatusEvent.md b/docs/sdk/typescript/graphql/types/type-aliases/StatusEvent.md index e42e047479..9a86d3081b 100644 --- a/docs/sdk/typescript/graphql/types/type-aliases/StatusEvent.md +++ b/docs/sdk/typescript/graphql/types/type-aliases/StatusEvent.md @@ -8,23 +8,15 @@ > **StatusEvent** = `object` -Defined in: [graphql/types.ts:150](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L150) +Defined in: [graphql/types.ts:117](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L117) ## Properties -### chainId - -> **chainId**: [`ChainId`](../../../enums/enumerations/ChainId.md) - -Defined in: [graphql/types.ts:154](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L154) - -*** - ### escrowAddress > **escrowAddress**: `string` -Defined in: [graphql/types.ts:152](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L152) +Defined in: [graphql/types.ts:119](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L119) *** @@ -32,12 +24,12 @@ Defined in: [graphql/types.ts:152](https://github.com/humanprotocol/human-protoc > **status**: `string` -Defined in: [graphql/types.ts:153](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L153) +Defined in: [graphql/types.ts:120](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L120) *** ### timestamp -> **timestamp**: `number` +> **timestamp**: `string` -Defined in: [graphql/types.ts:151](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L151) +Defined in: [graphql/types.ts:118](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L118) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/TaskStatistics.md b/docs/sdk/typescript/graphql/types/type-aliases/TaskStatistics.md deleted file mode 100644 index 60e98e16ce..0000000000 --- a/docs/sdk/typescript/graphql/types/type-aliases/TaskStatistics.md +++ /dev/null @@ -1,19 +0,0 @@ -[**@human-protocol/sdk**](../../../README.md) - -*** - -[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / TaskStatistics - -# Type Alias: TaskStatistics - -> **TaskStatistics** = `object` - -Defined in: [graphql/types.ts:146](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L146) - -## Properties - -### dailyTasksData - -> **dailyTasksData**: [`DailyTaskData`](DailyTaskData.md)[] - -Defined in: [graphql/types.ts:147](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L147) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/TransactionData.md b/docs/sdk/typescript/graphql/types/type-aliases/TransactionData.md new file mode 100644 index 0000000000..85ac5eacd5 --- /dev/null +++ b/docs/sdk/typescript/graphql/types/type-aliases/TransactionData.md @@ -0,0 +1,99 @@ +[**@human-protocol/sdk**](../../../README.md) + +*** + +[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / TransactionData + +# Type Alias: TransactionData + +> **TransactionData** = `object` + +Defined in: [graphql/types.ts:48](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L48) + +## Properties + +### block + +> **block**: `string` + +Defined in: [graphql/types.ts:49](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L49) + +*** + +### escrow + +> **escrow**: `string` \| `null` + +Defined in: [graphql/types.ts:57](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L57) + +*** + +### from + +> **from**: `string` + +Defined in: [graphql/types.ts:51](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L51) + +*** + +### internalTransactions + +> **internalTransactions**: [`InternalTransactionData`](InternalTransactionData.md)[] + +Defined in: [graphql/types.ts:59](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L59) + +*** + +### method + +> **method**: `string` + +Defined in: [graphql/types.ts:55](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L55) + +*** + +### receiver + +> **receiver**: `string` \| `null` + +Defined in: [graphql/types.ts:56](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L56) + +*** + +### timestamp + +> **timestamp**: `string` + +Defined in: [graphql/types.ts:53](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L53) + +*** + +### to + +> **to**: `string` + +Defined in: [graphql/types.ts:52](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L52) + +*** + +### token + +> **token**: `string` \| `null` + +Defined in: [graphql/types.ts:58](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L58) + +*** + +### txHash + +> **txHash**: `string` + +Defined in: [graphql/types.ts:50](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L50) + +*** + +### value + +> **value**: `string` + +Defined in: [graphql/types.ts:54](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L54) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/WorkerData.md b/docs/sdk/typescript/graphql/types/type-aliases/WorkerData.md new file mode 100644 index 0000000000..1eca0e3e1a --- /dev/null +++ b/docs/sdk/typescript/graphql/types/type-aliases/WorkerData.md @@ -0,0 +1,43 @@ +[**@human-protocol/sdk**](../../../README.md) + +*** + +[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / WorkerData + +# Type Alias: WorkerData + +> **WorkerData** = `object` + +Defined in: [graphql/types.ts:30](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L30) + +## Properties + +### address + +> **address**: `string` + +Defined in: [graphql/types.ts:32](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L32) + +*** + +### id + +> **id**: `string` + +Defined in: [graphql/types.ts:31](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L31) + +*** + +### payoutCount + +> **payoutCount**: `string` + +Defined in: [graphql/types.ts:34](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L34) + +*** + +### totalHMTAmountReceived + +> **totalHMTAmountReceived**: `string` + +Defined in: [graphql/types.ts:33](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L33) diff --git a/docs/sdk/typescript/graphql/types/type-aliases/WorkerStatistics.md b/docs/sdk/typescript/graphql/types/type-aliases/WorkerStatistics.md deleted file mode 100644 index d7c7bb3d43..0000000000 --- a/docs/sdk/typescript/graphql/types/type-aliases/WorkerStatistics.md +++ /dev/null @@ -1,19 +0,0 @@ -[**@human-protocol/sdk**](../../../README.md) - -*** - -[@human-protocol/sdk](../../../modules.md) / [graphql/types](../README.md) / WorkerStatistics - -# Type Alias: WorkerStatistics - -> **WorkerStatistics** = `object` - -Defined in: [graphql/types.ts:94](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L94) - -## Properties - -### dailyWorkersData - -> **dailyWorkersData**: [`DailyWorkerData`](DailyWorkerData.md)[] - -Defined in: [graphql/types.ts:95](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts#L95) diff --git a/docs/sdk/typescript/interfaces/README.md b/docs/sdk/typescript/interfaces/README.md index e7046c38a1..3d3934d7e2 100644 --- a/docs/sdk/typescript/interfaces/README.md +++ b/docs/sdk/typescript/interfaces/README.md @@ -8,25 +8,39 @@ ## Interfaces +- [ICancellationRefund](interfaces/ICancellationRefund.md) +- [ICancellationRefundFilter](interfaces/ICancellationRefundFilter.md) +- [IDailyEscrow](interfaces/IDailyEscrow.md) +- [IDailyHMT](interfaces/IDailyHMT.md) +- [IDailyPayment](interfaces/IDailyPayment.md) +- [IDailyWorker](interfaces/IDailyWorker.md) - [IEscrow](interfaces/IEscrow.md) - [IEscrowConfig](interfaces/IEscrowConfig.md) - [IEscrowsFilter](interfaces/IEscrowsFilter.md) +- [IEscrowStatistics](interfaces/IEscrowStatistics.md) +- [IEscrowWithdraw](interfaces/IEscrowWithdraw.md) +- [IHMTHolder](interfaces/IHMTHolder.md) - [IHMTHoldersParams](interfaces/IHMTHoldersParams.md) +- [IHMTStatistics](interfaces/IHMTStatistics.md) - [IKeyPair](interfaces/IKeyPair.md) - [IKVStore](interfaces/IKVStore.md) - [InternalTransaction](interfaces/InternalTransaction.md) - [IOperator](interfaces/IOperator.md) - [IOperatorsFilter](interfaces/IOperatorsFilter.md) -- [IOperatorSubgraph](interfaces/IOperatorSubgraph.md) - [IPagination](interfaces/IPagination.md) +- [IPaymentStatistics](interfaces/IPaymentStatistics.md) +- [IPayout](interfaces/IPayout.md) - [IPayoutFilter](interfaces/IPayoutFilter.md) - [IReputationNetwork](interfaces/IReputationNetwork.md) -- [IReputationNetworkSubgraph](interfaces/IReputationNetworkSubgraph.md) - [IReward](interfaces/IReward.md) +- [IStaker](interfaces/IStaker.md) +- [IStakersFilter](interfaces/IStakersFilter.md) - [IStatisticsFilter](interfaces/IStatisticsFilter.md) +- [IStatusEvent](interfaces/IStatusEvent.md) - [IStatusEventFilter](interfaces/IStatusEventFilter.md) - [ITransaction](interfaces/ITransaction.md) - [ITransactionsFilter](interfaces/ITransactionsFilter.md) - [IWorker](interfaces/IWorker.md) - [IWorkersFilter](interfaces/IWorkersFilter.md) +- [IWorkerStatistics](interfaces/IWorkerStatistics.md) - [StakerInfo](interfaces/StakerInfo.md) diff --git a/docs/sdk/typescript/interfaces/interfaces/ICancellationRefund.md b/docs/sdk/typescript/interfaces/interfaces/ICancellationRefund.md new file mode 100644 index 0000000000..e042209610 --- /dev/null +++ b/docs/sdk/typescript/interfaces/interfaces/ICancellationRefund.md @@ -0,0 +1,65 @@ +[**@human-protocol/sdk**](../../README.md) + +*** + +[@human-protocol/sdk](../../modules.md) / [interfaces](../README.md) / ICancellationRefund + +# Interface: ICancellationRefund + +Defined in: [interfaces.ts:292](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L292) + +## Properties + +### amount + +> **amount**: `bigint` + +Defined in: [interfaces.ts:296](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L296) + +*** + +### block + +> **block**: `number` + +Defined in: [interfaces.ts:297](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L297) + +*** + +### escrowAddress + +> **escrowAddress**: `string` + +Defined in: [interfaces.ts:294](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L294) + +*** + +### id + +> **id**: `string` + +Defined in: [interfaces.ts:293](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L293) + +*** + +### receiver + +> **receiver**: `string` + +Defined in: [interfaces.ts:295](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L295) + +*** + +### timestamp + +> **timestamp**: `number` + +Defined in: [interfaces.ts:298](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L298) + +*** + +### txHash + +> **txHash**: `string` + +Defined in: [interfaces.ts:299](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L299) diff --git a/docs/sdk/typescript/interfaces/interfaces/ICancellationRefundFilter.md b/docs/sdk/typescript/interfaces/interfaces/ICancellationRefundFilter.md new file mode 100644 index 0000000000..cb58c8298c --- /dev/null +++ b/docs/sdk/typescript/interfaces/interfaces/ICancellationRefundFilter.md @@ -0,0 +1,89 @@ +[**@human-protocol/sdk**](../../README.md) + +*** + +[@human-protocol/sdk](../../modules.md) / [interfaces](../README.md) / ICancellationRefundFilter + +# Interface: ICancellationRefundFilter + +Defined in: [interfaces.ts:224](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L224) + +## Extends + +- [`IPagination`](IPagination.md) + +## Properties + +### chainId + +> **chainId**: [`ChainId`](../../enums/enumerations/ChainId.md) + +Defined in: [interfaces.ts:225](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L225) + +*** + +### escrowAddress? + +> `optional` **escrowAddress**: `string` + +Defined in: [interfaces.ts:226](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L226) + +*** + +### first? + +> `optional` **first**: `number` + +Defined in: [interfaces.ts:164](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L164) + +#### Inherited from + +[`IPagination`](IPagination.md).[`first`](IPagination.md#first) + +*** + +### from? + +> `optional` **from**: `Date` + +Defined in: [interfaces.ts:228](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L228) + +*** + +### orderDirection? + +> `optional` **orderDirection**: [`OrderDirection`](../../enums/enumerations/OrderDirection.md) + +Defined in: [interfaces.ts:166](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L166) + +#### Inherited from + +[`IPagination`](IPagination.md).[`orderDirection`](IPagination.md#orderdirection) + +*** + +### receiver? + +> `optional` **receiver**: `string` + +Defined in: [interfaces.ts:227](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L227) + +*** + +### skip? + +> `optional` **skip**: `number` + +Defined in: [interfaces.ts:165](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L165) + +#### Inherited from + +[`IPagination`](IPagination.md).[`skip`](IPagination.md#skip) + +*** + +### to? + +> `optional` **to**: `Date` + +Defined in: [interfaces.ts:229](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L229) diff --git a/docs/sdk/typescript/interfaces/interfaces/IDailyEscrow.md b/docs/sdk/typescript/interfaces/interfaces/IDailyEscrow.md new file mode 100644 index 0000000000..7f82a8a956 --- /dev/null +++ b/docs/sdk/typescript/interfaces/interfaces/IDailyEscrow.md @@ -0,0 +1,57 @@ +[**@human-protocol/sdk**](../../README.md) + +*** + +[@human-protocol/sdk](../../modules.md) / [interfaces](../README.md) / IDailyEscrow + +# Interface: IDailyEscrow + +Defined in: [interfaces.ts:232](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L232) + +## Properties + +### escrowsCancelled + +> **escrowsCancelled**: `number` + +Defined in: [interfaces.ts:238](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L238) + +*** + +### escrowsPaid + +> **escrowsPaid**: `number` + +Defined in: [interfaces.ts:237](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L237) + +*** + +### escrowsPending + +> **escrowsPending**: `number` + +Defined in: [interfaces.ts:235](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L235) + +*** + +### escrowsSolved + +> **escrowsSolved**: `number` + +Defined in: [interfaces.ts:236](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L236) + +*** + +### escrowsTotal + +> **escrowsTotal**: `number` + +Defined in: [interfaces.ts:234](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L234) + +*** + +### timestamp + +> **timestamp**: `number` + +Defined in: [interfaces.ts:233](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L233) diff --git a/docs/sdk/typescript/interfaces/interfaces/IDailyHMT.md b/docs/sdk/typescript/interfaces/interfaces/IDailyHMT.md new file mode 100644 index 0000000000..3a4e468d09 --- /dev/null +++ b/docs/sdk/typescript/interfaces/interfaces/IDailyHMT.md @@ -0,0 +1,49 @@ +[**@human-protocol/sdk**](../../README.md) + +*** + +[@human-protocol/sdk](../../modules.md) / [interfaces](../README.md) / IDailyHMT + +# Interface: IDailyHMT + +Defined in: [interfaces.ts:277](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L277) + +## Properties + +### dailyUniqueReceivers + +> **dailyUniqueReceivers**: `number` + +Defined in: [interfaces.ts:282](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L282) + +*** + +### dailyUniqueSenders + +> **dailyUniqueSenders**: `number` + +Defined in: [interfaces.ts:281](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L281) + +*** + +### timestamp + +> **timestamp**: `number` + +Defined in: [interfaces.ts:278](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L278) + +*** + +### totalTransactionAmount + +> **totalTransactionAmount**: `bigint` + +Defined in: [interfaces.ts:279](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L279) + +*** + +### totalTransactionCount + +> **totalTransactionCount**: `number` + +Defined in: [interfaces.ts:280](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L280) diff --git a/docs/sdk/typescript/interfaces/interfaces/IDailyPayment.md b/docs/sdk/typescript/interfaces/interfaces/IDailyPayment.md new file mode 100644 index 0000000000..4569acc3b7 --- /dev/null +++ b/docs/sdk/typescript/interfaces/interfaces/IDailyPayment.md @@ -0,0 +1,41 @@ +[**@human-protocol/sdk**](../../README.md) + +*** + +[@human-protocol/sdk](../../modules.md) / [interfaces](../README.md) / IDailyPayment + +# Interface: IDailyPayment + +Defined in: [interfaces.ts:255](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L255) + +## Properties + +### averageAmountPerWorker + +> **averageAmountPerWorker**: `bigint` + +Defined in: [interfaces.ts:259](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L259) + +*** + +### timestamp + +> **timestamp**: `number` + +Defined in: [interfaces.ts:256](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L256) + +*** + +### totalAmountPaid + +> **totalAmountPaid**: `bigint` + +Defined in: [interfaces.ts:257](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L257) + +*** + +### totalCount + +> **totalCount**: `number` + +Defined in: [interfaces.ts:258](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L258) diff --git a/docs/sdk/typescript/interfaces/interfaces/IDailyWorker.md b/docs/sdk/typescript/interfaces/interfaces/IDailyWorker.md new file mode 100644 index 0000000000..3ea26d5246 --- /dev/null +++ b/docs/sdk/typescript/interfaces/interfaces/IDailyWorker.md @@ -0,0 +1,25 @@ +[**@human-protocol/sdk**](../../README.md) + +*** + +[@human-protocol/sdk](../../modules.md) / [interfaces](../README.md) / IDailyWorker + +# Interface: IDailyWorker + +Defined in: [interfaces.ts:246](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L246) + +## Properties + +### activeWorkers + +> **activeWorkers**: `number` + +Defined in: [interfaces.ts:248](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L248) + +*** + +### timestamp + +> **timestamp**: `number` + +Defined in: [interfaces.ts:247](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L247) diff --git a/docs/sdk/typescript/interfaces/interfaces/IEscrow.md b/docs/sdk/typescript/interfaces/interfaces/IEscrow.md index bebc4e92c0..bbbe7aa882 100644 --- a/docs/sdk/typescript/interfaces/interfaces/IEscrow.md +++ b/docs/sdk/typescript/interfaces/interfaces/IEscrow.md @@ -6,7 +6,7 @@ # Interface: IEscrow -Defined in: [interfaces.ts:67](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L67) +Defined in: [interfaces.ts:46](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L46) ## Properties @@ -14,23 +14,23 @@ Defined in: [interfaces.ts:67](https://github.com/humanprotocol/human-protocol/b > **address**: `string` -Defined in: [interfaces.ts:69](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L69) +Defined in: [interfaces.ts:48](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L48) *** ### amountPaid -> **amountPaid**: `string` +> **amountPaid**: `bigint` -Defined in: [interfaces.ts:70](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L70) +Defined in: [interfaces.ts:49](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L49) *** ### balance -> **balance**: `string` +> **balance**: `bigint` -Defined in: [interfaces.ts:71](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L71) +Defined in: [interfaces.ts:50](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L50) *** @@ -38,31 +38,39 @@ Defined in: [interfaces.ts:71](https://github.com/humanprotocol/human-protocol/b > **chainId**: `number` -Defined in: [interfaces.ts:86](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L86) +Defined in: [interfaces.ts:71](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L71) *** ### count -> **count**: `string` +> **count**: `number` -Defined in: [interfaces.ts:72](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L72) +Defined in: [interfaces.ts:51](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L51) *** ### createdAt -> **createdAt**: `string` +> **createdAt**: `number` -Defined in: [interfaces.ts:85](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L85) +Defined in: [interfaces.ts:70](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L70) *** -### exchangeOracle? +### exchangeOracle -> `optional` **exchangeOracle**: `string` +> **exchangeOracle**: `string` \| `null` -Defined in: [interfaces.ts:81](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L81) +Defined in: [interfaces.ts:63](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L63) + +*** + +### exchangeOracleFee + +> **exchangeOracleFee**: `number` \| `null` + +Defined in: [interfaces.ts:66](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L66) *** @@ -70,15 +78,23 @@ Defined in: [interfaces.ts:81](https://github.com/humanprotocol/human-protocol/b > **factoryAddress**: `string` -Defined in: [interfaces.ts:73](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L73) +Defined in: [interfaces.ts:52](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L52) *** -### finalResultsUrl? +### finalResultsHash -> `optional` **finalResultsUrl**: `string` +> **finalResultsHash**: `string` \| `null` -Defined in: [interfaces.ts:74](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L74) +Defined in: [interfaces.ts:54](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L54) + +*** + +### finalResultsUrl + +> **finalResultsUrl**: `string` \| `null` + +Defined in: [interfaces.ts:53](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L53) *** @@ -86,15 +102,31 @@ Defined in: [interfaces.ts:74](https://github.com/humanprotocol/human-protocol/b > **id**: `string` -Defined in: [interfaces.ts:68](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L68) +Defined in: [interfaces.ts:47](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L47) + +*** + +### intermediateResultsHash + +> **intermediateResultsHash**: `string` \| `null` + +Defined in: [interfaces.ts:56](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L56) *** -### intermediateResultsUrl? +### intermediateResultsUrl -> `optional` **intermediateResultsUrl**: `string` +> **intermediateResultsUrl**: `string` \| `null` -Defined in: [interfaces.ts:75](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L75) +Defined in: [interfaces.ts:55](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L55) + +*** + +### jobRequesterId + +> **jobRequesterId**: `string` \| `null` + +Defined in: [interfaces.ts:58](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L58) *** @@ -102,39 +134,55 @@ Defined in: [interfaces.ts:75](https://github.com/humanprotocol/human-protocol/b > **launcher**: `string` -Defined in: [interfaces.ts:76](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L76) +Defined in: [interfaces.ts:57](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L57) + +*** + +### manifest + +> **manifest**: `string` \| `null` + +Defined in: [interfaces.ts:60](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L60) + +*** + +### manifestHash + +> **manifestHash**: `string` \| `null` + +Defined in: [interfaces.ts:59](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L59) *** -### manifest? +### recordingOracle -> `optional` **manifest**: `string` +> **recordingOracle**: `string` \| `null` -Defined in: [interfaces.ts:78](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L78) +Defined in: [interfaces.ts:61](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L61) *** -### manifestHash? +### recordingOracleFee -> `optional` **manifestHash**: `string` +> **recordingOracleFee**: `number` \| `null` -Defined in: [interfaces.ts:77](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L77) +Defined in: [interfaces.ts:64](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L64) *** -### recordingOracle? +### reputationOracle -> `optional` **recordingOracle**: `string` +> **reputationOracle**: `string` \| `null` -Defined in: [interfaces.ts:79](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L79) +Defined in: [interfaces.ts:62](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L62) *** -### reputationOracle? +### reputationOracleFee -> `optional` **reputationOracle**: `string` +> **reputationOracleFee**: `number` \| `null` -Defined in: [interfaces.ts:80](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L80) +Defined in: [interfaces.ts:65](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L65) *** @@ -142,7 +190,7 @@ Defined in: [interfaces.ts:80](https://github.com/humanprotocol/human-protocol/b > **status**: `string` -Defined in: [interfaces.ts:82](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L82) +Defined in: [interfaces.ts:67](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L67) *** @@ -150,12 +198,12 @@ Defined in: [interfaces.ts:82](https://github.com/humanprotocol/human-protocol/b > **token**: `string` -Defined in: [interfaces.ts:83](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L83) +Defined in: [interfaces.ts:68](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L68) *** ### totalFundedAmount -> **totalFundedAmount**: `string` +> **totalFundedAmount**: `bigint` -Defined in: [interfaces.ts:84](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L84) +Defined in: [interfaces.ts:69](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L69) diff --git a/docs/sdk/typescript/interfaces/interfaces/IEscrowConfig.md b/docs/sdk/typescript/interfaces/interfaces/IEscrowConfig.md index 8411137a51..90150c5871 100644 --- a/docs/sdk/typescript/interfaces/interfaces/IEscrowConfig.md +++ b/docs/sdk/typescript/interfaces/interfaces/IEscrowConfig.md @@ -6,7 +6,7 @@ # Interface: IEscrowConfig -Defined in: [interfaces.ts:101](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L101) +Defined in: [interfaces.ts:86](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L86) ## Properties @@ -14,7 +14,7 @@ Defined in: [interfaces.ts:101](https://github.com/humanprotocol/human-protocol/ > **exchangeOracle**: `string` -Defined in: [interfaces.ts:104](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L104) +Defined in: [interfaces.ts:89](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L89) *** @@ -22,7 +22,7 @@ Defined in: [interfaces.ts:104](https://github.com/humanprotocol/human-protocol/ > **exchangeOracleFee**: `bigint` -Defined in: [interfaces.ts:107](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L107) +Defined in: [interfaces.ts:92](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L92) *** @@ -30,7 +30,7 @@ Defined in: [interfaces.ts:107](https://github.com/humanprotocol/human-protocol/ > **manifest**: `string` -Defined in: [interfaces.ts:108](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L108) +Defined in: [interfaces.ts:93](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L93) *** @@ -38,7 +38,7 @@ Defined in: [interfaces.ts:108](https://github.com/humanprotocol/human-protocol/ > **manifestHash**: `string` -Defined in: [interfaces.ts:109](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L109) +Defined in: [interfaces.ts:94](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L94) *** @@ -46,7 +46,7 @@ Defined in: [interfaces.ts:109](https://github.com/humanprotocol/human-protocol/ > **recordingOracle**: `string` -Defined in: [interfaces.ts:102](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L102) +Defined in: [interfaces.ts:87](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L87) *** @@ -54,7 +54,7 @@ Defined in: [interfaces.ts:102](https://github.com/humanprotocol/human-protocol/ > **recordingOracleFee**: `bigint` -Defined in: [interfaces.ts:105](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L105) +Defined in: [interfaces.ts:90](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L90) *** @@ -62,7 +62,7 @@ Defined in: [interfaces.ts:105](https://github.com/humanprotocol/human-protocol/ > **reputationOracle**: `string` -Defined in: [interfaces.ts:103](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L103) +Defined in: [interfaces.ts:88](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L88) *** @@ -70,4 +70,4 @@ Defined in: [interfaces.ts:103](https://github.com/humanprotocol/human-protocol/ > **reputationOracleFee**: `bigint` -Defined in: [interfaces.ts:106](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L106) +Defined in: [interfaces.ts:91](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L91) diff --git a/docs/sdk/typescript/interfaces/interfaces/IEscrowStatistics.md b/docs/sdk/typescript/interfaces/interfaces/IEscrowStatistics.md new file mode 100644 index 0000000000..b2669677ab --- /dev/null +++ b/docs/sdk/typescript/interfaces/interfaces/IEscrowStatistics.md @@ -0,0 +1,25 @@ +[**@human-protocol/sdk**](../../README.md) + +*** + +[@human-protocol/sdk](../../modules.md) / [interfaces](../README.md) / IEscrowStatistics + +# Interface: IEscrowStatistics + +Defined in: [interfaces.ts:241](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L241) + +## Properties + +### dailyEscrowsData + +> **dailyEscrowsData**: [`IDailyEscrow`](IDailyEscrow.md)[] + +Defined in: [interfaces.ts:243](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L243) + +*** + +### totalEscrows + +> **totalEscrows**: `number` + +Defined in: [interfaces.ts:242](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L242) diff --git a/docs/sdk/typescript/interfaces/interfaces/IEscrowWithdraw.md b/docs/sdk/typescript/interfaces/interfaces/IEscrowWithdraw.md new file mode 100644 index 0000000000..1fb5938306 --- /dev/null +++ b/docs/sdk/typescript/interfaces/interfaces/IEscrowWithdraw.md @@ -0,0 +1,33 @@ +[**@human-protocol/sdk**](../../README.md) + +*** + +[@human-protocol/sdk](../../modules.md) / [interfaces](../README.md) / IEscrowWithdraw + +# Interface: IEscrowWithdraw + +Defined in: [interfaces.ts:310](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L310) + +## Properties + +### tokenAddress + +> **tokenAddress**: `string` + +Defined in: [interfaces.ts:312](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L312) + +*** + +### txHash + +> **txHash**: `string` + +Defined in: [interfaces.ts:311](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L311) + +*** + +### withdrawnAmount + +> **withdrawnAmount**: `bigint` + +Defined in: [interfaces.ts:313](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L313) diff --git a/docs/sdk/typescript/interfaces/interfaces/IEscrowsFilter.md b/docs/sdk/typescript/interfaces/interfaces/IEscrowsFilter.md index dea0d4a7f1..862fe1c95f 100644 --- a/docs/sdk/typescript/interfaces/interfaces/IEscrowsFilter.md +++ b/docs/sdk/typescript/interfaces/interfaces/IEscrowsFilter.md @@ -6,7 +6,7 @@ # Interface: IEscrowsFilter -Defined in: [interfaces.ts:89](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L89) +Defined in: [interfaces.ts:74](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L74) ## Extends @@ -18,7 +18,7 @@ Defined in: [interfaces.ts:89](https://github.com/humanprotocol/human-protocol/b > **chainId**: [`ChainId`](../../enums/enumerations/ChainId.md) -Defined in: [interfaces.ts:98](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L98) +Defined in: [interfaces.ts:83](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L83) *** @@ -26,7 +26,7 @@ Defined in: [interfaces.ts:98](https://github.com/humanprotocol/human-protocol/b > `optional` **exchangeOracle**: `string` -Defined in: [interfaces.ts:93](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L93) +Defined in: [interfaces.ts:78](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L78) *** @@ -34,7 +34,7 @@ Defined in: [interfaces.ts:93](https://github.com/humanprotocol/human-protocol/b > `optional` **first**: `number` -Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L179) +Defined in: [interfaces.ts:164](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L164) #### Inherited from @@ -46,7 +46,7 @@ Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/ > `optional` **from**: `Date` -Defined in: [interfaces.ts:96](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L96) +Defined in: [interfaces.ts:81](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L81) *** @@ -54,7 +54,7 @@ Defined in: [interfaces.ts:96](https://github.com/humanprotocol/human-protocol/b > `optional` **jobRequesterId**: `string` -Defined in: [interfaces.ts:94](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L94) +Defined in: [interfaces.ts:79](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L79) *** @@ -62,7 +62,7 @@ Defined in: [interfaces.ts:94](https://github.com/humanprotocol/human-protocol/b > `optional` **launcher**: `string` -Defined in: [interfaces.ts:90](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L90) +Defined in: [interfaces.ts:75](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L75) *** @@ -70,7 +70,7 @@ Defined in: [interfaces.ts:90](https://github.com/humanprotocol/human-protocol/b > `optional` **orderDirection**: [`OrderDirection`](../../enums/enumerations/OrderDirection.md) -Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L181) +Defined in: [interfaces.ts:166](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L166) #### Inherited from @@ -82,7 +82,7 @@ Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/ > `optional` **recordingOracle**: `string` -Defined in: [interfaces.ts:92](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L92) +Defined in: [interfaces.ts:77](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L77) *** @@ -90,7 +90,7 @@ Defined in: [interfaces.ts:92](https://github.com/humanprotocol/human-protocol/b > `optional` **reputationOracle**: `string` -Defined in: [interfaces.ts:91](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L91) +Defined in: [interfaces.ts:76](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L76) *** @@ -98,7 +98,7 @@ Defined in: [interfaces.ts:91](https://github.com/humanprotocol/human-protocol/b > `optional` **skip**: `number` -Defined in: [interfaces.ts:180](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L180) +Defined in: [interfaces.ts:165](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L165) #### Inherited from @@ -110,7 +110,7 @@ Defined in: [interfaces.ts:180](https://github.com/humanprotocol/human-protocol/ > `optional` **status**: [`EscrowStatus`](../../types/enumerations/EscrowStatus.md) \| [`EscrowStatus`](../../types/enumerations/EscrowStatus.md)[] -Defined in: [interfaces.ts:95](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L95) +Defined in: [interfaces.ts:80](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L80) *** @@ -118,4 +118,4 @@ Defined in: [interfaces.ts:95](https://github.com/humanprotocol/human-protocol/b > `optional` **to**: `Date` -Defined in: [interfaces.ts:97](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L97) +Defined in: [interfaces.ts:82](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L82) diff --git a/docs/sdk/typescript/interfaces/interfaces/IHMTHolder.md b/docs/sdk/typescript/interfaces/interfaces/IHMTHolder.md new file mode 100644 index 0000000000..bc9bf1ae09 --- /dev/null +++ b/docs/sdk/typescript/interfaces/interfaces/IHMTHolder.md @@ -0,0 +1,25 @@ +[**@human-protocol/sdk**](../../README.md) + +*** + +[@human-protocol/sdk](../../modules.md) / [interfaces](../README.md) / IHMTHolder + +# Interface: IHMTHolder + +Defined in: [interfaces.ts:272](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L272) + +## Properties + +### address + +> **address**: `string` + +Defined in: [interfaces.ts:273](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L273) + +*** + +### balance + +> **balance**: `bigint` + +Defined in: [interfaces.ts:274](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L274) diff --git a/docs/sdk/typescript/interfaces/interfaces/IHMTHoldersParams.md b/docs/sdk/typescript/interfaces/interfaces/IHMTHoldersParams.md index 9bfa365c4b..e4452de58a 100644 --- a/docs/sdk/typescript/interfaces/interfaces/IHMTHoldersParams.md +++ b/docs/sdk/typescript/interfaces/interfaces/IHMTHoldersParams.md @@ -6,7 +6,7 @@ # Interface: IHMTHoldersParams -Defined in: [interfaces.ts:124](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L124) +Defined in: [interfaces.ts:109](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L109) ## Extends @@ -18,7 +18,7 @@ Defined in: [interfaces.ts:124](https://github.com/humanprotocol/human-protocol/ > `optional` **address**: `string` -Defined in: [interfaces.ts:125](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L125) +Defined in: [interfaces.ts:110](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L110) *** @@ -26,7 +26,7 @@ Defined in: [interfaces.ts:125](https://github.com/humanprotocol/human-protocol/ > `optional` **first**: `number` -Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L179) +Defined in: [interfaces.ts:164](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L164) #### Inherited from @@ -38,7 +38,7 @@ Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/ > `optional` **orderDirection**: [`OrderDirection`](../../enums/enumerations/OrderDirection.md) -Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L181) +Defined in: [interfaces.ts:166](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L166) #### Inherited from @@ -50,7 +50,7 @@ Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/ > `optional` **skip**: `number` -Defined in: [interfaces.ts:180](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L180) +Defined in: [interfaces.ts:165](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L165) #### Inherited from diff --git a/docs/sdk/typescript/interfaces/interfaces/IHMTStatistics.md b/docs/sdk/typescript/interfaces/interfaces/IHMTStatistics.md new file mode 100644 index 0000000000..ce311a5adf --- /dev/null +++ b/docs/sdk/typescript/interfaces/interfaces/IHMTStatistics.md @@ -0,0 +1,33 @@ +[**@human-protocol/sdk**](../../README.md) + +*** + +[@human-protocol/sdk](../../modules.md) / [interfaces](../README.md) / IHMTStatistics + +# Interface: IHMTStatistics + +Defined in: [interfaces.ts:266](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L266) + +## Properties + +### totalHolders + +> **totalHolders**: `number` + +Defined in: [interfaces.ts:269](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L269) + +*** + +### totalTransferAmount + +> **totalTransferAmount**: `bigint` + +Defined in: [interfaces.ts:267](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L267) + +*** + +### totalTransferCount + +> **totalTransferCount**: `number` + +Defined in: [interfaces.ts:268](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L268) diff --git a/docs/sdk/typescript/interfaces/interfaces/IKVStore.md b/docs/sdk/typescript/interfaces/interfaces/IKVStore.md index 87eac7bf48..46479abcb1 100644 --- a/docs/sdk/typescript/interfaces/interfaces/IKVStore.md +++ b/docs/sdk/typescript/interfaces/interfaces/IKVStore.md @@ -6,7 +6,7 @@ # Interface: IKVStore -Defined in: [interfaces.ts:136](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L136) +Defined in: [interfaces.ts:121](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L121) ## Properties @@ -14,7 +14,7 @@ Defined in: [interfaces.ts:136](https://github.com/humanprotocol/human-protocol/ > **key**: `string` -Defined in: [interfaces.ts:137](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L137) +Defined in: [interfaces.ts:122](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L122) *** @@ -22,4 +22,4 @@ Defined in: [interfaces.ts:137](https://github.com/humanprotocol/human-protocol/ > **value**: `string` -Defined in: [interfaces.ts:138](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L138) +Defined in: [interfaces.ts:123](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L123) diff --git a/docs/sdk/typescript/interfaces/interfaces/IKeyPair.md b/docs/sdk/typescript/interfaces/interfaces/IKeyPair.md index c825c77a9e..4d02aed387 100644 --- a/docs/sdk/typescript/interfaces/interfaces/IKeyPair.md +++ b/docs/sdk/typescript/interfaces/interfaces/IKeyPair.md @@ -6,7 +6,7 @@ # Interface: IKeyPair -Defined in: [interfaces.ts:112](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L112) +Defined in: [interfaces.ts:97](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L97) ## Properties @@ -14,7 +14,7 @@ Defined in: [interfaces.ts:112](https://github.com/humanprotocol/human-protocol/ > **passphrase**: `string` -Defined in: [interfaces.ts:115](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L115) +Defined in: [interfaces.ts:100](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L100) *** @@ -22,7 +22,7 @@ Defined in: [interfaces.ts:115](https://github.com/humanprotocol/human-protocol/ > **privateKey**: `string` -Defined in: [interfaces.ts:113](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L113) +Defined in: [interfaces.ts:98](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L98) *** @@ -30,7 +30,7 @@ Defined in: [interfaces.ts:113](https://github.com/humanprotocol/human-protocol/ > **publicKey**: `string` -Defined in: [interfaces.ts:114](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L114) +Defined in: [interfaces.ts:99](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L99) *** @@ -38,4 +38,4 @@ Defined in: [interfaces.ts:114](https://github.com/humanprotocol/human-protocol/ > `optional` **revocationCertificate**: `string` -Defined in: [interfaces.ts:116](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L116) +Defined in: [interfaces.ts:101](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L101) diff --git a/docs/sdk/typescript/interfaces/interfaces/IOperator.md b/docs/sdk/typescript/interfaces/interfaces/IOperator.md index 6ec6256899..d5efa4b39a 100644 --- a/docs/sdk/typescript/interfaces/interfaces/IOperator.md +++ b/docs/sdk/typescript/interfaces/interfaces/IOperator.md @@ -6,7 +6,7 @@ # Interface: IOperator -Defined in: [interfaces.ts:9](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L9) +Defined in: [interfaces.ts:9](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L9) ## Properties @@ -14,172 +14,164 @@ Defined in: [interfaces.ts:9](https://github.com/humanprotocol/human-protocol/bl > **address**: `string` -Defined in: [interfaces.ts:12](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L12) +Defined in: [interfaces.ts:12](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L12) *** ### amountJobsProcessed -> **amountJobsProcessed**: `bigint` +> **amountJobsProcessed**: `bigint` \| `null` -Defined in: [interfaces.ts:19](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L19) +Defined in: [interfaces.ts:18](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L18) *** -### amountLocked +### category -> **amountLocked**: `bigint` +> **category**: `string` \| `null` -Defined in: [interfaces.ts:14](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L14) +Defined in: [interfaces.ts:30](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L30) *** -### amountSlashed - -> **amountSlashed**: `bigint` - -Defined in: [interfaces.ts:17](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L17) - -*** - -### amountStaked +### chainId -> **amountStaked**: `bigint` +> **chainId**: [`ChainId`](../../enums/enumerations/ChainId.md) -Defined in: [interfaces.ts:13](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L13) +Defined in: [interfaces.ts:11](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L11) *** -### amountWithdrawn +### fee -> **amountWithdrawn**: `bigint` +> **fee**: `bigint` \| `null` -Defined in: [interfaces.ts:16](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L16) +Defined in: [interfaces.ts:20](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L20) *** -### category? +### id -> `optional` **category**: `string` +> **id**: `string` -Defined in: [interfaces.ts:31](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L31) +Defined in: [interfaces.ts:10](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L10) *** -### chainId +### jobTypes -> **chainId**: [`ChainId`](../../enums/enumerations/ChainId.md) +> **jobTypes**: `string`[] \| `null` -Defined in: [interfaces.ts:11](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L11) +Defined in: [interfaces.ts:25](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L25) *** -### fee? +### lockedAmount -> `optional` **fee**: `bigint` +> **lockedAmount**: `bigint` \| `null` -Defined in: [interfaces.ts:21](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L21) +Defined in: [interfaces.ts:14](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L14) *** -### id +### lockedUntilTimestamp -> **id**: `string` +> **lockedUntilTimestamp**: `number` \| `null` -Defined in: [interfaces.ts:10](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L10) +Defined in: [interfaces.ts:15](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L15) *** -### jobTypes? +### name -> `optional` **jobTypes**: `string`[] +> **name**: `string` \| `null` -Defined in: [interfaces.ts:26](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L26) +Defined in: [interfaces.ts:29](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L29) *** -### lockedUntilTimestamp +### publicKey -> **lockedUntilTimestamp**: `bigint` +> **publicKey**: `string` \| `null` -Defined in: [interfaces.ts:15](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L15) +Defined in: [interfaces.ts:21](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L21) *** -### name? +### registrationInstructions -> `optional` **name**: `string` +> **registrationInstructions**: `string` \| `null` -Defined in: [interfaces.ts:30](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L30) +Defined in: [interfaces.ts:27](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L27) *** -### publicKey? +### registrationNeeded -> `optional` **publicKey**: `string` +> **registrationNeeded**: `boolean` \| `null` -Defined in: [interfaces.ts:22](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L22) +Defined in: [interfaces.ts:26](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L26) *** -### registrationInstructions? +### reputationNetworks -> `optional` **registrationInstructions**: `string` +> **reputationNetworks**: `string`[] -Defined in: [interfaces.ts:28](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L28) +Defined in: [interfaces.ts:28](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L28) *** -### registrationNeeded? +### role -> `optional` **registrationNeeded**: `boolean` +> **role**: `string` \| `null` -Defined in: [interfaces.ts:27](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L27) +Defined in: [interfaces.ts:19](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L19) *** -### reputationNetworks? +### slashedAmount -> `optional` **reputationNetworks**: `string`[] +> **slashedAmount**: `bigint` \| `null` -Defined in: [interfaces.ts:29](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L29) +Defined in: [interfaces.ts:17](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L17) *** -### reward +### stakedAmount -> **reward**: `bigint` +> **stakedAmount**: `bigint` \| `null` -Defined in: [interfaces.ts:18](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L18) +Defined in: [interfaces.ts:13](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L13) *** -### role? +### url -> `optional` **role**: `string` +> **url**: `string` \| `null` -Defined in: [interfaces.ts:20](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L20) +Defined in: [interfaces.ts:24](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L24) *** -### url? +### webhookUrl -> `optional` **url**: `string` +> **webhookUrl**: `string` \| `null` -Defined in: [interfaces.ts:25](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L25) +Defined in: [interfaces.ts:22](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L22) *** -### webhookUrl? +### website -> `optional` **webhookUrl**: `string` +> **website**: `string` \| `null` -Defined in: [interfaces.ts:23](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L23) +Defined in: [interfaces.ts:23](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L23) *** -### website? +### withdrawnAmount -> `optional` **website**: `string` +> **withdrawnAmount**: `bigint` \| `null` -Defined in: [interfaces.ts:24](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L24) +Defined in: [interfaces.ts:16](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L16) diff --git a/docs/sdk/typescript/interfaces/interfaces/IOperatorSubgraph.md b/docs/sdk/typescript/interfaces/interfaces/IOperatorSubgraph.md deleted file mode 100644 index 900d10d9cf..0000000000 --- a/docs/sdk/typescript/interfaces/interfaces/IOperatorSubgraph.md +++ /dev/null @@ -1,261 +0,0 @@ -[**@human-protocol/sdk**](../../README.md) - -*** - -[@human-protocol/sdk](../../modules.md) / [interfaces](../README.md) / IOperatorSubgraph - -# Interface: IOperatorSubgraph - -Defined in: [interfaces.ts:34](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L34) - -## Extends - -- `Omit`\<[`IOperator`](IOperator.md), `"jobTypes"` \| `"reputationNetworks"` \| `"chainId"`\> - -## Properties - -### address - -> **address**: `string` - -Defined in: [interfaces.ts:12](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L12) - -#### Inherited from - -`Omit.address` - -*** - -### amountJobsProcessed - -> **amountJobsProcessed**: `bigint` - -Defined in: [interfaces.ts:19](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L19) - -#### Inherited from - -`Omit.amountJobsProcessed` - -*** - -### amountLocked - -> **amountLocked**: `bigint` - -Defined in: [interfaces.ts:14](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L14) - -#### Inherited from - -`Omit.amountLocked` - -*** - -### amountSlashed - -> **amountSlashed**: `bigint` - -Defined in: [interfaces.ts:17](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L17) - -#### Inherited from - -`Omit.amountSlashed` - -*** - -### amountStaked - -> **amountStaked**: `bigint` - -Defined in: [interfaces.ts:13](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L13) - -#### Inherited from - -`Omit.amountStaked` - -*** - -### amountWithdrawn - -> **amountWithdrawn**: `bigint` - -Defined in: [interfaces.ts:16](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L16) - -#### Inherited from - -`Omit.amountWithdrawn` - -*** - -### category? - -> `optional` **category**: `string` - -Defined in: [interfaces.ts:31](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L31) - -#### Inherited from - -`Omit.category` - -*** - -### fee? - -> `optional` **fee**: `bigint` - -Defined in: [interfaces.ts:21](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L21) - -#### Inherited from - -`Omit.fee` - -*** - -### id - -> **id**: `string` - -Defined in: [interfaces.ts:10](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L10) - -#### Inherited from - -`Omit.id` - -*** - -### jobTypes? - -> `optional` **jobTypes**: `string` - -Defined in: [interfaces.ts:36](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L36) - -*** - -### lockedUntilTimestamp - -> **lockedUntilTimestamp**: `bigint` - -Defined in: [interfaces.ts:15](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L15) - -#### Inherited from - -`Omit.lockedUntilTimestamp` - -*** - -### name? - -> `optional` **name**: `string` - -Defined in: [interfaces.ts:30](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L30) - -#### Inherited from - -`Omit.name` - -*** - -### publicKey? - -> `optional` **publicKey**: `string` - -Defined in: [interfaces.ts:22](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L22) - -#### Inherited from - -`Omit.publicKey` - -*** - -### registrationInstructions? - -> `optional` **registrationInstructions**: `string` - -Defined in: [interfaces.ts:28](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L28) - -#### Inherited from - -`Omit.registrationInstructions` - -*** - -### registrationNeeded? - -> `optional` **registrationNeeded**: `boolean` - -Defined in: [interfaces.ts:27](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L27) - -#### Inherited from - -`Omit.registrationNeeded` - -*** - -### reputationNetworks? - -> `optional` **reputationNetworks**: `object`[] - -Defined in: [interfaces.ts:37](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L37) - -#### address - -> **address**: `string` - -*** - -### reward - -> **reward**: `bigint` - -Defined in: [interfaces.ts:18](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L18) - -#### Inherited from - -`Omit.reward` - -*** - -### role? - -> `optional` **role**: `string` - -Defined in: [interfaces.ts:20](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L20) - -#### Inherited from - -`Omit.role` - -*** - -### url? - -> `optional` **url**: `string` - -Defined in: [interfaces.ts:25](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L25) - -#### Inherited from - -`Omit.url` - -*** - -### webhookUrl? - -> `optional` **webhookUrl**: `string` - -Defined in: [interfaces.ts:23](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L23) - -#### Inherited from - -`Omit.webhookUrl` - -*** - -### website? - -> `optional` **website**: `string` - -Defined in: [interfaces.ts:24](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L24) - -#### Inherited from - -`Omit.website` diff --git a/docs/sdk/typescript/interfaces/interfaces/IOperatorsFilter.md b/docs/sdk/typescript/interfaces/interfaces/IOperatorsFilter.md index 9a0c74d624..152a727547 100644 --- a/docs/sdk/typescript/interfaces/interfaces/IOperatorsFilter.md +++ b/docs/sdk/typescript/interfaces/interfaces/IOperatorsFilter.md @@ -6,7 +6,7 @@ # Interface: IOperatorsFilter -Defined in: [interfaces.ts:40](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L40) +Defined in: [interfaces.ts:33](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L33) ## Extends @@ -18,7 +18,7 @@ Defined in: [interfaces.ts:40](https://github.com/humanprotocol/human-protocol/b > **chainId**: [`ChainId`](../../enums/enumerations/ChainId.md) -Defined in: [interfaces.ts:41](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L41) +Defined in: [interfaces.ts:34](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L34) *** @@ -26,7 +26,7 @@ Defined in: [interfaces.ts:41](https://github.com/humanprotocol/human-protocol/b > `optional` **first**: `number` -Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L179) +Defined in: [interfaces.ts:164](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L164) #### Inherited from @@ -34,11 +34,11 @@ Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/ *** -### minAmountStaked? +### minStakedAmount? -> `optional` **minAmountStaked**: `number` +> `optional` **minStakedAmount**: `number` -Defined in: [interfaces.ts:43](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L43) +Defined in: [interfaces.ts:36](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L36) *** @@ -46,7 +46,7 @@ Defined in: [interfaces.ts:43](https://github.com/humanprotocol/human-protocol/b > `optional` **orderBy**: `string` -Defined in: [interfaces.ts:44](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L44) +Defined in: [interfaces.ts:37](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L37) *** @@ -54,7 +54,7 @@ Defined in: [interfaces.ts:44](https://github.com/humanprotocol/human-protocol/b > `optional` **orderDirection**: [`OrderDirection`](../../enums/enumerations/OrderDirection.md) -Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L181) +Defined in: [interfaces.ts:166](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L166) #### Inherited from @@ -66,7 +66,7 @@ Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/ > `optional` **roles**: `string`[] -Defined in: [interfaces.ts:42](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L42) +Defined in: [interfaces.ts:35](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L35) *** @@ -74,7 +74,7 @@ Defined in: [interfaces.ts:42](https://github.com/humanprotocol/human-protocol/b > `optional` **skip**: `number` -Defined in: [interfaces.ts:180](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L180) +Defined in: [interfaces.ts:165](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L165) #### Inherited from diff --git a/docs/sdk/typescript/interfaces/interfaces/IPagination.md b/docs/sdk/typescript/interfaces/interfaces/IPagination.md index ef578119ff..044376aec4 100644 --- a/docs/sdk/typescript/interfaces/interfaces/IPagination.md +++ b/docs/sdk/typescript/interfaces/interfaces/IPagination.md @@ -6,7 +6,7 @@ # Interface: IPagination -Defined in: [interfaces.ts:178](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L178) +Defined in: [interfaces.ts:163](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L163) ## Extended by @@ -18,6 +18,8 @@ Defined in: [interfaces.ts:178](https://github.com/humanprotocol/human-protocol/ - [`ITransactionsFilter`](ITransactionsFilter.md) - [`IStatusEventFilter`](IStatusEventFilter.md) - [`IWorkersFilter`](IWorkersFilter.md) +- [`IStakersFilter`](IStakersFilter.md) +- [`ICancellationRefundFilter`](ICancellationRefundFilter.md) ## Properties @@ -25,7 +27,7 @@ Defined in: [interfaces.ts:178](https://github.com/humanprotocol/human-protocol/ > `optional` **first**: `number` -Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L179) +Defined in: [interfaces.ts:164](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L164) *** @@ -33,7 +35,7 @@ Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/ > `optional` **orderDirection**: [`OrderDirection`](../../enums/enumerations/OrderDirection.md) -Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L181) +Defined in: [interfaces.ts:166](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L166) *** @@ -41,4 +43,4 @@ Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/ > `optional` **skip**: `number` -Defined in: [interfaces.ts:180](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L180) +Defined in: [interfaces.ts:165](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L165) diff --git a/docs/sdk/typescript/interfaces/interfaces/IPaymentStatistics.md b/docs/sdk/typescript/interfaces/interfaces/IPaymentStatistics.md new file mode 100644 index 0000000000..2991da5679 --- /dev/null +++ b/docs/sdk/typescript/interfaces/interfaces/IPaymentStatistics.md @@ -0,0 +1,17 @@ +[**@human-protocol/sdk**](../../README.md) + +*** + +[@human-protocol/sdk](../../modules.md) / [interfaces](../README.md) / IPaymentStatistics + +# Interface: IPaymentStatistics + +Defined in: [interfaces.ts:262](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L262) + +## Properties + +### dailyPaymentsData + +> **dailyPaymentsData**: [`IDailyPayment`](IDailyPayment.md)[] + +Defined in: [interfaces.ts:263](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L263) diff --git a/docs/sdk/typescript/interfaces/interfaces/IPayout.md b/docs/sdk/typescript/interfaces/interfaces/IPayout.md new file mode 100644 index 0000000000..dffb7858e4 --- /dev/null +++ b/docs/sdk/typescript/interfaces/interfaces/IPayout.md @@ -0,0 +1,49 @@ +[**@human-protocol/sdk**](../../README.md) + +*** + +[@human-protocol/sdk](../../modules.md) / [interfaces](../README.md) / IPayout + +# Interface: IPayout + +Defined in: [interfaces.ts:302](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L302) + +## Properties + +### amount + +> **amount**: `bigint` + +Defined in: [interfaces.ts:306](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L306) + +*** + +### createdAt + +> **createdAt**: `number` + +Defined in: [interfaces.ts:307](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L307) + +*** + +### escrowAddress + +> **escrowAddress**: `string` + +Defined in: [interfaces.ts:304](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L304) + +*** + +### id + +> **id**: `string` + +Defined in: [interfaces.ts:303](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L303) + +*** + +### recipient + +> **recipient**: `string` + +Defined in: [interfaces.ts:305](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L305) diff --git a/docs/sdk/typescript/interfaces/interfaces/IPayoutFilter.md b/docs/sdk/typescript/interfaces/interfaces/IPayoutFilter.md index 00574c61f9..05b04f834d 100644 --- a/docs/sdk/typescript/interfaces/interfaces/IPayoutFilter.md +++ b/docs/sdk/typescript/interfaces/interfaces/IPayoutFilter.md @@ -6,7 +6,7 @@ # Interface: IPayoutFilter -Defined in: [interfaces.ts:128](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L128) +Defined in: [interfaces.ts:113](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L113) ## Extends @@ -18,7 +18,7 @@ Defined in: [interfaces.ts:128](https://github.com/humanprotocol/human-protocol/ > **chainId**: [`ChainId`](../../enums/enumerations/ChainId.md) -Defined in: [interfaces.ts:129](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L129) +Defined in: [interfaces.ts:114](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L114) *** @@ -26,7 +26,7 @@ Defined in: [interfaces.ts:129](https://github.com/humanprotocol/human-protocol/ > `optional` **escrowAddress**: `string` -Defined in: [interfaces.ts:130](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L130) +Defined in: [interfaces.ts:115](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L115) *** @@ -34,7 +34,7 @@ Defined in: [interfaces.ts:130](https://github.com/humanprotocol/human-protocol/ > `optional` **first**: `number` -Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L179) +Defined in: [interfaces.ts:164](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L164) #### Inherited from @@ -46,7 +46,7 @@ Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/ > `optional` **from**: `Date` -Defined in: [interfaces.ts:132](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L132) +Defined in: [interfaces.ts:117](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L117) *** @@ -54,7 +54,7 @@ Defined in: [interfaces.ts:132](https://github.com/humanprotocol/human-protocol/ > `optional` **orderDirection**: [`OrderDirection`](../../enums/enumerations/OrderDirection.md) -Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L181) +Defined in: [interfaces.ts:166](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L166) #### Inherited from @@ -66,7 +66,7 @@ Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/ > `optional` **recipient**: `string` -Defined in: [interfaces.ts:131](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L131) +Defined in: [interfaces.ts:116](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L116) *** @@ -74,7 +74,7 @@ Defined in: [interfaces.ts:131](https://github.com/humanprotocol/human-protocol/ > `optional` **skip**: `number` -Defined in: [interfaces.ts:180](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L180) +Defined in: [interfaces.ts:165](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L165) #### Inherited from @@ -86,4 +86,4 @@ Defined in: [interfaces.ts:180](https://github.com/humanprotocol/human-protocol/ > `optional` **to**: `Date` -Defined in: [interfaces.ts:133](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L133) +Defined in: [interfaces.ts:118](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L118) diff --git a/docs/sdk/typescript/interfaces/interfaces/IReputationNetwork.md b/docs/sdk/typescript/interfaces/interfaces/IReputationNetwork.md index e25e9d942c..d19b1d2353 100644 --- a/docs/sdk/typescript/interfaces/interfaces/IReputationNetwork.md +++ b/docs/sdk/typescript/interfaces/interfaces/IReputationNetwork.md @@ -6,7 +6,7 @@ # Interface: IReputationNetwork -Defined in: [interfaces.ts:47](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L47) +Defined in: [interfaces.ts:40](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L40) ## Properties @@ -14,7 +14,7 @@ Defined in: [interfaces.ts:47](https://github.com/humanprotocol/human-protocol/b > **address**: `string` -Defined in: [interfaces.ts:49](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L49) +Defined in: [interfaces.ts:42](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L42) *** @@ -22,7 +22,7 @@ Defined in: [interfaces.ts:49](https://github.com/humanprotocol/human-protocol/b > **id**: `string` -Defined in: [interfaces.ts:48](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L48) +Defined in: [interfaces.ts:41](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L41) *** @@ -30,4 +30,4 @@ Defined in: [interfaces.ts:48](https://github.com/humanprotocol/human-protocol/b > **operators**: [`IOperator`](IOperator.md)[] -Defined in: [interfaces.ts:50](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L50) +Defined in: [interfaces.ts:43](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L43) diff --git a/docs/sdk/typescript/interfaces/interfaces/IReputationNetworkSubgraph.md b/docs/sdk/typescript/interfaces/interfaces/IReputationNetworkSubgraph.md deleted file mode 100644 index 6e370316e2..0000000000 --- a/docs/sdk/typescript/interfaces/interfaces/IReputationNetworkSubgraph.md +++ /dev/null @@ -1,45 +0,0 @@ -[**@human-protocol/sdk**](../../README.md) - -*** - -[@human-protocol/sdk](../../modules.md) / [interfaces](../README.md) / IReputationNetworkSubgraph - -# Interface: IReputationNetworkSubgraph - -Defined in: [interfaces.ts:53](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L53) - -## Extends - -- `Omit`\<[`IReputationNetwork`](IReputationNetwork.md), `"operators"`\> - -## Properties - -### address - -> **address**: `string` - -Defined in: [interfaces.ts:49](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L49) - -#### Inherited from - -`Omit.address` - -*** - -### id - -> **id**: `string` - -Defined in: [interfaces.ts:48](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L48) - -#### Inherited from - -`Omit.id` - -*** - -### operators - -> **operators**: [`IOperatorSubgraph`](IOperatorSubgraph.md)[] - -Defined in: [interfaces.ts:55](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L55) diff --git a/docs/sdk/typescript/interfaces/interfaces/IReward.md b/docs/sdk/typescript/interfaces/interfaces/IReward.md index aa90fdbb68..cb8bf5a0bf 100644 --- a/docs/sdk/typescript/interfaces/interfaces/IReward.md +++ b/docs/sdk/typescript/interfaces/interfaces/IReward.md @@ -6,7 +6,7 @@ # Interface: IReward -Defined in: [interfaces.ts:4](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L4) +Defined in: [interfaces.ts:4](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L4) ## Properties @@ -14,7 +14,7 @@ Defined in: [interfaces.ts:4](https://github.com/humanprotocol/human-protocol/bl > **amount**: `bigint` -Defined in: [interfaces.ts:6](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L6) +Defined in: [interfaces.ts:6](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L6) *** @@ -22,4 +22,4 @@ Defined in: [interfaces.ts:6](https://github.com/humanprotocol/human-protocol/bl > **escrowAddress**: `string` -Defined in: [interfaces.ts:5](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L5) +Defined in: [interfaces.ts:5](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L5) diff --git a/docs/sdk/typescript/interfaces/interfaces/IStaker.md b/docs/sdk/typescript/interfaces/interfaces/IStaker.md new file mode 100644 index 0000000000..b338efdac3 --- /dev/null +++ b/docs/sdk/typescript/interfaces/interfaces/IStaker.md @@ -0,0 +1,65 @@ +[**@human-protocol/sdk**](../../README.md) + +*** + +[@human-protocol/sdk](../../modules.md) / [interfaces](../README.md) / IStaker + +# Interface: IStaker + +Defined in: [interfaces.ts:197](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L197) + +## Properties + +### address + +> **address**: `string` + +Defined in: [interfaces.ts:198](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L198) + +*** + +### lastDepositTimestamp + +> **lastDepositTimestamp**: `number` + +Defined in: [interfaces.ts:204](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L204) + +*** + +### lockedAmount + +> **lockedAmount**: `bigint` + +Defined in: [interfaces.ts:200](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L200) + +*** + +### lockedUntil + +> **lockedUntil**: `number` + +Defined in: [interfaces.ts:203](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L203) + +*** + +### slashedAmount + +> **slashedAmount**: `bigint` + +Defined in: [interfaces.ts:202](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L202) + +*** + +### stakedAmount + +> **stakedAmount**: `bigint` + +Defined in: [interfaces.ts:199](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L199) + +*** + +### withdrawableAmount + +> **withdrawableAmount**: `bigint` + +Defined in: [interfaces.ts:201](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L201) diff --git a/docs/sdk/typescript/interfaces/interfaces/IStakersFilter.md b/docs/sdk/typescript/interfaces/interfaces/IStakersFilter.md new file mode 100644 index 0000000000..01ebfab5fe --- /dev/null +++ b/docs/sdk/typescript/interfaces/interfaces/IStakersFilter.md @@ -0,0 +1,129 @@ +[**@human-protocol/sdk**](../../README.md) + +*** + +[@human-protocol/sdk](../../modules.md) / [interfaces](../README.md) / IStakersFilter + +# Interface: IStakersFilter + +Defined in: [interfaces.ts:207](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L207) + +## Extends + +- [`IPagination`](IPagination.md) + +## Properties + +### chainId + +> **chainId**: [`ChainId`](../../enums/enumerations/ChainId.md) + +Defined in: [interfaces.ts:208](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L208) + +*** + +### first? + +> `optional` **first**: `number` + +Defined in: [interfaces.ts:164](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L164) + +#### Inherited from + +[`IPagination`](IPagination.md).[`first`](IPagination.md#first) + +*** + +### maxLockedAmount? + +> `optional` **maxLockedAmount**: `string` + +Defined in: [interfaces.ts:212](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L212) + +*** + +### maxSlashedAmount? + +> `optional` **maxSlashedAmount**: `string` + +Defined in: [interfaces.ts:216](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L216) + +*** + +### maxStakedAmount? + +> `optional` **maxStakedAmount**: `string` + +Defined in: [interfaces.ts:210](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L210) + +*** + +### maxWithdrawnAmount? + +> `optional` **maxWithdrawnAmount**: `string` + +Defined in: [interfaces.ts:214](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L214) + +*** + +### minLockedAmount? + +> `optional` **minLockedAmount**: `string` + +Defined in: [interfaces.ts:211](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L211) + +*** + +### minSlashedAmount? + +> `optional` **minSlashedAmount**: `string` + +Defined in: [interfaces.ts:215](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L215) + +*** + +### minStakedAmount? + +> `optional` **minStakedAmount**: `string` + +Defined in: [interfaces.ts:209](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L209) + +*** + +### minWithdrawnAmount? + +> `optional` **minWithdrawnAmount**: `string` + +Defined in: [interfaces.ts:213](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L213) + +*** + +### orderBy? + +> `optional` **orderBy**: `"stakedAmount"` \| `"lockedAmount"` \| `"withdrawnAmount"` \| `"slashedAmount"` \| `"lastDepositTimestamp"` + +Defined in: [interfaces.ts:217](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L217) + +*** + +### orderDirection? + +> `optional` **orderDirection**: [`OrderDirection`](../../enums/enumerations/OrderDirection.md) + +Defined in: [interfaces.ts:166](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L166) + +#### Inherited from + +[`IPagination`](IPagination.md).[`orderDirection`](IPagination.md#orderdirection) + +*** + +### skip? + +> `optional` **skip**: `number` + +Defined in: [interfaces.ts:165](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L165) + +#### Inherited from + +[`IPagination`](IPagination.md).[`skip`](IPagination.md#skip) diff --git a/docs/sdk/typescript/interfaces/interfaces/IStatisticsFilter.md b/docs/sdk/typescript/interfaces/interfaces/IStatisticsFilter.md index 14e1da3400..73cf11ad75 100644 --- a/docs/sdk/typescript/interfaces/interfaces/IStatisticsFilter.md +++ b/docs/sdk/typescript/interfaces/interfaces/IStatisticsFilter.md @@ -6,7 +6,7 @@ # Interface: IStatisticsFilter -Defined in: [interfaces.ts:119](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L119) +Defined in: [interfaces.ts:104](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L104) ## Extends @@ -18,7 +18,7 @@ Defined in: [interfaces.ts:119](https://github.com/humanprotocol/human-protocol/ > `optional` **first**: `number` -Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L179) +Defined in: [interfaces.ts:164](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L164) #### Inherited from @@ -30,7 +30,7 @@ Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/ > `optional` **from**: `Date` -Defined in: [interfaces.ts:120](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L120) +Defined in: [interfaces.ts:105](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L105) *** @@ -38,7 +38,7 @@ Defined in: [interfaces.ts:120](https://github.com/humanprotocol/human-protocol/ > `optional` **orderDirection**: [`OrderDirection`](../../enums/enumerations/OrderDirection.md) -Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L181) +Defined in: [interfaces.ts:166](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L166) #### Inherited from @@ -50,7 +50,7 @@ Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/ > `optional` **skip**: `number` -Defined in: [interfaces.ts:180](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L180) +Defined in: [interfaces.ts:165](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L165) #### Inherited from @@ -62,4 +62,4 @@ Defined in: [interfaces.ts:180](https://github.com/humanprotocol/human-protocol/ > `optional` **to**: `Date` -Defined in: [interfaces.ts:121](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L121) +Defined in: [interfaces.ts:106](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L106) diff --git a/docs/sdk/typescript/interfaces/interfaces/IStatusEvent.md b/docs/sdk/typescript/interfaces/interfaces/IStatusEvent.md new file mode 100644 index 0000000000..b177166479 --- /dev/null +++ b/docs/sdk/typescript/interfaces/interfaces/IStatusEvent.md @@ -0,0 +1,41 @@ +[**@human-protocol/sdk**](../../README.md) + +*** + +[@human-protocol/sdk](../../modules.md) / [interfaces](../README.md) / IStatusEvent + +# Interface: IStatusEvent + +Defined in: [interfaces.ts:285](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L285) + +## Properties + +### chainId + +> **chainId**: [`ChainId`](../../enums/enumerations/ChainId.md) + +Defined in: [interfaces.ts:289](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L289) + +*** + +### escrowAddress + +> **escrowAddress**: `string` + +Defined in: [interfaces.ts:287](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L287) + +*** + +### status + +> **status**: [`EscrowStatus`](../../types/enumerations/EscrowStatus.md) + +Defined in: [interfaces.ts:288](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L288) + +*** + +### timestamp + +> **timestamp**: `number` + +Defined in: [interfaces.ts:286](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L286) diff --git a/docs/sdk/typescript/interfaces/interfaces/IStatusEventFilter.md b/docs/sdk/typescript/interfaces/interfaces/IStatusEventFilter.md index 60c9d05b17..62de067014 100644 --- a/docs/sdk/typescript/interfaces/interfaces/IStatusEventFilter.md +++ b/docs/sdk/typescript/interfaces/interfaces/IStatusEventFilter.md @@ -6,7 +6,7 @@ # Interface: IStatusEventFilter -Defined in: [interfaces.ts:191](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L191) +Defined in: [interfaces.ts:176](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L176) ## Extends @@ -18,7 +18,7 @@ Defined in: [interfaces.ts:191](https://github.com/humanprotocol/human-protocol/ > **chainId**: [`ChainId`](../../enums/enumerations/ChainId.md) -Defined in: [interfaces.ts:192](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L192) +Defined in: [interfaces.ts:177](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L177) *** @@ -26,7 +26,7 @@ Defined in: [interfaces.ts:192](https://github.com/humanprotocol/human-protocol/ > `optional` **first**: `number` -Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L179) +Defined in: [interfaces.ts:164](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L164) #### Inherited from @@ -38,7 +38,7 @@ Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/ > `optional` **from**: `Date` -Defined in: [interfaces.ts:194](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L194) +Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L179) *** @@ -46,7 +46,7 @@ Defined in: [interfaces.ts:194](https://github.com/humanprotocol/human-protocol/ > `optional` **launcher**: `string` -Defined in: [interfaces.ts:196](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L196) +Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L181) *** @@ -54,7 +54,7 @@ Defined in: [interfaces.ts:196](https://github.com/humanprotocol/human-protocol/ > `optional` **orderDirection**: [`OrderDirection`](../../enums/enumerations/OrderDirection.md) -Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L181) +Defined in: [interfaces.ts:166](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L166) #### Inherited from @@ -66,7 +66,7 @@ Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/ > `optional` **skip**: `number` -Defined in: [interfaces.ts:180](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L180) +Defined in: [interfaces.ts:165](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L165) #### Inherited from @@ -78,7 +78,7 @@ Defined in: [interfaces.ts:180](https://github.com/humanprotocol/human-protocol/ > `optional` **statuses**: [`EscrowStatus`](../../types/enumerations/EscrowStatus.md)[] -Defined in: [interfaces.ts:193](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L193) +Defined in: [interfaces.ts:178](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L178) *** @@ -86,4 +86,4 @@ Defined in: [interfaces.ts:193](https://github.com/humanprotocol/human-protocol/ > `optional` **to**: `Date` -Defined in: [interfaces.ts:195](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L195) +Defined in: [interfaces.ts:180](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L180) diff --git a/docs/sdk/typescript/interfaces/interfaces/ITransaction.md b/docs/sdk/typescript/interfaces/interfaces/ITransaction.md index f4af746039..c0a8b57393 100644 --- a/docs/sdk/typescript/interfaces/interfaces/ITransaction.md +++ b/docs/sdk/typescript/interfaces/interfaces/ITransaction.md @@ -6,7 +6,7 @@ # Interface: ITransaction -Defined in: [interfaces.ts:151](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L151) +Defined in: [interfaces.ts:136](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L136) ## Properties @@ -14,15 +14,15 @@ Defined in: [interfaces.ts:151](https://github.com/humanprotocol/human-protocol/ > **block**: `bigint` -Defined in: [interfaces.ts:152](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L152) +Defined in: [interfaces.ts:137](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L137) *** -### escrow? +### escrow -> `optional` **escrow**: `string` +> **escrow**: `string` \| `null` -Defined in: [interfaces.ts:160](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L160) +Defined in: [interfaces.ts:145](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L145) *** @@ -30,7 +30,7 @@ Defined in: [interfaces.ts:160](https://github.com/humanprotocol/human-protocol/ > **from**: `string` -Defined in: [interfaces.ts:154](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L154) +Defined in: [interfaces.ts:139](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L139) *** @@ -38,7 +38,7 @@ Defined in: [interfaces.ts:154](https://github.com/humanprotocol/human-protocol/ > **internalTransactions**: [`InternalTransaction`](InternalTransaction.md)[] -Defined in: [interfaces.ts:162](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L162) +Defined in: [interfaces.ts:147](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L147) *** @@ -46,23 +46,23 @@ Defined in: [interfaces.ts:162](https://github.com/humanprotocol/human-protocol/ > **method**: `string` -Defined in: [interfaces.ts:158](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L158) +Defined in: [interfaces.ts:143](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L143) *** -### receiver? +### receiver -> `optional` **receiver**: `string` +> **receiver**: `string` \| `null` -Defined in: [interfaces.ts:159](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L159) +Defined in: [interfaces.ts:144](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L144) *** ### timestamp -> **timestamp**: `bigint` +> **timestamp**: `number` -Defined in: [interfaces.ts:156](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L156) +Defined in: [interfaces.ts:141](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L141) *** @@ -70,15 +70,15 @@ Defined in: [interfaces.ts:156](https://github.com/humanprotocol/human-protocol/ > **to**: `string` -Defined in: [interfaces.ts:155](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L155) +Defined in: [interfaces.ts:140](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L140) *** -### token? +### token -> `optional` **token**: `string` +> **token**: `string` \| `null` -Defined in: [interfaces.ts:161](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L161) +Defined in: [interfaces.ts:146](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L146) *** @@ -86,12 +86,12 @@ Defined in: [interfaces.ts:161](https://github.com/humanprotocol/human-protocol/ > **txHash**: `string` -Defined in: [interfaces.ts:153](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L153) +Defined in: [interfaces.ts:138](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L138) *** ### value -> **value**: `string` +> **value**: `bigint` -Defined in: [interfaces.ts:157](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L157) +Defined in: [interfaces.ts:142](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L142) diff --git a/docs/sdk/typescript/interfaces/interfaces/ITransactionsFilter.md b/docs/sdk/typescript/interfaces/interfaces/ITransactionsFilter.md index edeb3ed01c..cc2730e9b5 100644 --- a/docs/sdk/typescript/interfaces/interfaces/ITransactionsFilter.md +++ b/docs/sdk/typescript/interfaces/interfaces/ITransactionsFilter.md @@ -6,7 +6,7 @@ # Interface: ITransactionsFilter -Defined in: [interfaces.ts:165](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L165) +Defined in: [interfaces.ts:150](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L150) ## Extends @@ -18,7 +18,7 @@ Defined in: [interfaces.ts:165](https://github.com/humanprotocol/human-protocol/ > **chainId**: [`ChainId`](../../enums/enumerations/ChainId.md) -Defined in: [interfaces.ts:166](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L166) +Defined in: [interfaces.ts:151](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L151) *** @@ -26,7 +26,7 @@ Defined in: [interfaces.ts:166](https://github.com/humanprotocol/human-protocol/ > `optional` **endBlock**: `number` -Defined in: [interfaces.ts:168](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L168) +Defined in: [interfaces.ts:153](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L153) *** @@ -34,7 +34,7 @@ Defined in: [interfaces.ts:168](https://github.com/humanprotocol/human-protocol/ > `optional` **endDate**: `Date` -Defined in: [interfaces.ts:170](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L170) +Defined in: [interfaces.ts:155](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L155) *** @@ -42,7 +42,7 @@ Defined in: [interfaces.ts:170](https://github.com/humanprotocol/human-protocol/ > `optional` **escrow**: `string` -Defined in: [interfaces.ts:174](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L174) +Defined in: [interfaces.ts:159](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L159) *** @@ -50,7 +50,7 @@ Defined in: [interfaces.ts:174](https://github.com/humanprotocol/human-protocol/ > `optional` **first**: `number` -Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L179) +Defined in: [interfaces.ts:164](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L164) #### Inherited from @@ -62,7 +62,7 @@ Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/ > `optional` **fromAddress**: `string` -Defined in: [interfaces.ts:171](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L171) +Defined in: [interfaces.ts:156](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L156) *** @@ -70,7 +70,7 @@ Defined in: [interfaces.ts:171](https://github.com/humanprotocol/human-protocol/ > `optional` **method**: `string` -Defined in: [interfaces.ts:173](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L173) +Defined in: [interfaces.ts:158](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L158) *** @@ -78,7 +78,7 @@ Defined in: [interfaces.ts:173](https://github.com/humanprotocol/human-protocol/ > `optional` **orderDirection**: [`OrderDirection`](../../enums/enumerations/OrderDirection.md) -Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L181) +Defined in: [interfaces.ts:166](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L166) #### Inherited from @@ -90,7 +90,7 @@ Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/ > `optional` **skip**: `number` -Defined in: [interfaces.ts:180](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L180) +Defined in: [interfaces.ts:165](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L165) #### Inherited from @@ -102,7 +102,7 @@ Defined in: [interfaces.ts:180](https://github.com/humanprotocol/human-protocol/ > `optional` **startBlock**: `number` -Defined in: [interfaces.ts:167](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L167) +Defined in: [interfaces.ts:152](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L152) *** @@ -110,7 +110,7 @@ Defined in: [interfaces.ts:167](https://github.com/humanprotocol/human-protocol/ > `optional` **startDate**: `Date` -Defined in: [interfaces.ts:169](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L169) +Defined in: [interfaces.ts:154](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L154) *** @@ -118,7 +118,7 @@ Defined in: [interfaces.ts:169](https://github.com/humanprotocol/human-protocol/ > `optional` **toAddress**: `string` -Defined in: [interfaces.ts:172](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L172) +Defined in: [interfaces.ts:157](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L157) *** @@ -126,4 +126,4 @@ Defined in: [interfaces.ts:172](https://github.com/humanprotocol/human-protocol/ > `optional` **token**: `string` -Defined in: [interfaces.ts:175](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L175) +Defined in: [interfaces.ts:160](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L160) diff --git a/docs/sdk/typescript/interfaces/interfaces/IWorker.md b/docs/sdk/typescript/interfaces/interfaces/IWorker.md index 9ea6a753de..74bde1a05d 100644 --- a/docs/sdk/typescript/interfaces/interfaces/IWorker.md +++ b/docs/sdk/typescript/interfaces/interfaces/IWorker.md @@ -6,7 +6,7 @@ # Interface: IWorker -Defined in: [interfaces.ts:199](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L199) +Defined in: [interfaces.ts:184](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L184) ## Properties @@ -14,7 +14,7 @@ Defined in: [interfaces.ts:199](https://github.com/humanprotocol/human-protocol/ > **address**: `string` -Defined in: [interfaces.ts:201](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L201) +Defined in: [interfaces.ts:186](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L186) *** @@ -22,7 +22,7 @@ Defined in: [interfaces.ts:201](https://github.com/humanprotocol/human-protocol/ > **id**: `string` -Defined in: [interfaces.ts:200](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L200) +Defined in: [interfaces.ts:185](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L185) *** @@ -30,12 +30,12 @@ Defined in: [interfaces.ts:200](https://github.com/humanprotocol/human-protocol/ > **payoutCount**: `number` -Defined in: [interfaces.ts:203](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L203) +Defined in: [interfaces.ts:188](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L188) *** ### totalHMTAmountReceived -> **totalHMTAmountReceived**: `number` +> **totalHMTAmountReceived**: `bigint` -Defined in: [interfaces.ts:202](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L202) +Defined in: [interfaces.ts:187](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L187) diff --git a/docs/sdk/typescript/interfaces/interfaces/IWorkerStatistics.md b/docs/sdk/typescript/interfaces/interfaces/IWorkerStatistics.md new file mode 100644 index 0000000000..13cf73390b --- /dev/null +++ b/docs/sdk/typescript/interfaces/interfaces/IWorkerStatistics.md @@ -0,0 +1,17 @@ +[**@human-protocol/sdk**](../../README.md) + +*** + +[@human-protocol/sdk](../../modules.md) / [interfaces](../README.md) / IWorkerStatistics + +# Interface: IWorkerStatistics + +Defined in: [interfaces.ts:251](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L251) + +## Properties + +### dailyWorkersData + +> **dailyWorkersData**: [`IDailyWorker`](IDailyWorker.md)[] + +Defined in: [interfaces.ts:252](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L252) diff --git a/docs/sdk/typescript/interfaces/interfaces/IWorkersFilter.md b/docs/sdk/typescript/interfaces/interfaces/IWorkersFilter.md index d85cbb6f80..6be2e3d765 100644 --- a/docs/sdk/typescript/interfaces/interfaces/IWorkersFilter.md +++ b/docs/sdk/typescript/interfaces/interfaces/IWorkersFilter.md @@ -6,7 +6,7 @@ # Interface: IWorkersFilter -Defined in: [interfaces.ts:206](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L206) +Defined in: [interfaces.ts:191](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L191) ## Extends @@ -18,7 +18,7 @@ Defined in: [interfaces.ts:206](https://github.com/humanprotocol/human-protocol/ > `optional` **address**: `string` -Defined in: [interfaces.ts:208](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L208) +Defined in: [interfaces.ts:193](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L193) *** @@ -26,7 +26,7 @@ Defined in: [interfaces.ts:208](https://github.com/humanprotocol/human-protocol/ > **chainId**: [`ChainId`](../../enums/enumerations/ChainId.md) -Defined in: [interfaces.ts:207](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L207) +Defined in: [interfaces.ts:192](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L192) *** @@ -34,7 +34,7 @@ Defined in: [interfaces.ts:207](https://github.com/humanprotocol/human-protocol/ > `optional` **first**: `number` -Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L179) +Defined in: [interfaces.ts:164](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L164) #### Inherited from @@ -46,7 +46,7 @@ Defined in: [interfaces.ts:179](https://github.com/humanprotocol/human-protocol/ > `optional` **orderBy**: `string` -Defined in: [interfaces.ts:209](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L209) +Defined in: [interfaces.ts:194](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L194) *** @@ -54,7 +54,7 @@ Defined in: [interfaces.ts:209](https://github.com/humanprotocol/human-protocol/ > `optional` **orderDirection**: [`OrderDirection`](../../enums/enumerations/OrderDirection.md) -Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L181) +Defined in: [interfaces.ts:166](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L166) #### Inherited from @@ -66,7 +66,7 @@ Defined in: [interfaces.ts:181](https://github.com/humanprotocol/human-protocol/ > `optional` **skip**: `number` -Defined in: [interfaces.ts:180](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L180) +Defined in: [interfaces.ts:165](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L165) #### Inherited from diff --git a/docs/sdk/typescript/interfaces/interfaces/InternalTransaction.md b/docs/sdk/typescript/interfaces/interfaces/InternalTransaction.md index 09351679b5..4e4fe51572 100644 --- a/docs/sdk/typescript/interfaces/interfaces/InternalTransaction.md +++ b/docs/sdk/typescript/interfaces/interfaces/InternalTransaction.md @@ -6,15 +6,15 @@ # Interface: InternalTransaction -Defined in: [interfaces.ts:141](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L141) +Defined in: [interfaces.ts:126](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L126) ## Properties -### escrow? +### escrow -> `optional` **escrow**: `string` +> **escrow**: `string` \| `null` -Defined in: [interfaces.ts:147](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L147) +Defined in: [interfaces.ts:132](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L132) *** @@ -22,7 +22,7 @@ Defined in: [interfaces.ts:147](https://github.com/humanprotocol/human-protocol/ > **from**: `string` -Defined in: [interfaces.ts:142](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L142) +Defined in: [interfaces.ts:127](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L127) *** @@ -30,15 +30,15 @@ Defined in: [interfaces.ts:142](https://github.com/humanprotocol/human-protocol/ > **method**: `string` -Defined in: [interfaces.ts:145](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L145) +Defined in: [interfaces.ts:130](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L130) *** -### receiver? +### receiver -> `optional` **receiver**: `string` +> **receiver**: `string` \| `null` -Defined in: [interfaces.ts:146](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L146) +Defined in: [interfaces.ts:131](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L131) *** @@ -46,20 +46,20 @@ Defined in: [interfaces.ts:146](https://github.com/humanprotocol/human-protocol/ > **to**: `string` -Defined in: [interfaces.ts:143](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L143) +Defined in: [interfaces.ts:128](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L128) *** -### token? +### token -> `optional` **token**: `string` +> **token**: `string` \| `null` -Defined in: [interfaces.ts:148](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L148) +Defined in: [interfaces.ts:133](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L133) *** ### value -> **value**: `string` +> **value**: `bigint` -Defined in: [interfaces.ts:144](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L144) +Defined in: [interfaces.ts:129](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L129) diff --git a/docs/sdk/typescript/interfaces/interfaces/StakerInfo.md b/docs/sdk/typescript/interfaces/interfaces/StakerInfo.md index ea794c9176..64a3ed5d67 100644 --- a/docs/sdk/typescript/interfaces/interfaces/StakerInfo.md +++ b/docs/sdk/typescript/interfaces/interfaces/StakerInfo.md @@ -6,7 +6,7 @@ # Interface: StakerInfo -Defined in: [interfaces.ts:184](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L184) +Defined in: [interfaces.ts:169](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L169) ## Properties @@ -14,7 +14,7 @@ Defined in: [interfaces.ts:184](https://github.com/humanprotocol/human-protocol/ > **lockedAmount**: `bigint` -Defined in: [interfaces.ts:186](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L186) +Defined in: [interfaces.ts:171](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L171) *** @@ -22,7 +22,7 @@ Defined in: [interfaces.ts:186](https://github.com/humanprotocol/human-protocol/ > **lockedUntil**: `bigint` -Defined in: [interfaces.ts:187](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L187) +Defined in: [interfaces.ts:172](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L172) *** @@ -30,7 +30,7 @@ Defined in: [interfaces.ts:187](https://github.com/humanprotocol/human-protocol/ > **stakedAmount**: `bigint` -Defined in: [interfaces.ts:185](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L185) +Defined in: [interfaces.ts:170](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L170) *** @@ -38,4 +38,4 @@ Defined in: [interfaces.ts:185](https://github.com/humanprotocol/human-protocol/ > **withdrawableAmount**: `bigint` -Defined in: [interfaces.ts:188](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L188) +Defined in: [interfaces.ts:173](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts#L173) diff --git a/docs/sdk/typescript/kvstore/classes/KVStoreClient.md b/docs/sdk/typescript/kvstore/classes/KVStoreClient.md index 3c0d8e080a..a7267f4c1c 100644 --- a/docs/sdk/typescript/kvstore/classes/KVStoreClient.md +++ b/docs/sdk/typescript/kvstore/classes/KVStoreClient.md @@ -6,7 +6,7 @@ # Class: KVStoreClient -Defined in: [kvstore.ts:99](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L99) +Defined in: [kvstore.ts:99](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L99) ## Introduction @@ -86,7 +86,7 @@ const kvstoreClient = await KVStoreClient.build(provider); > **new KVStoreClient**(`runner`, `networkData`): `KVStoreClient` -Defined in: [kvstore.ts:108](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L108) +Defined in: [kvstore.ts:108](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L108) **KVStoreClient constructor** @@ -118,7 +118,7 @@ The network information required to connect to the KVStore contract > **networkData**: [`NetworkData`](../../types/type-aliases/NetworkData.md) -Defined in: [base.ts:14](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L14) +Defined in: [base.ts:14](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L14) #### Inherited from @@ -130,7 +130,7 @@ Defined in: [base.ts:14](https://github.com/humanprotocol/human-protocol/blob/2f > `protected` **runner**: `ContractRunner` -Defined in: [base.ts:13](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L13) +Defined in: [base.ts:13](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L13) #### Inherited from @@ -142,7 +142,7 @@ Defined in: [base.ts:13](https://github.com/humanprotocol/human-protocol/blob/2f > `protected` **applyTxDefaults**(`txOptions`): `Overrides` -Defined in: [base.ts:35](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L35) +Defined in: [base.ts:35](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L35) Internal helper to enrich transaction overrides with network specific defaults. @@ -171,7 +171,7 @@ supplied fee parameters are left untouched. > **get**(`address`, `key`): `Promise`\<`string`\> -Defined in: [kvstore.ts:316](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L316) +Defined in: [kvstore.ts:316](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L316) Gets the value of a key-value pair in the contract. @@ -217,7 +217,7 @@ const value = await kvstoreClient.get('0xf39Fd6e51aad88F6F4ce6aB8827279cffFb9226 > **set**(`key`, `value`, `txOptions?`): `Promise`\<`void`\> -Defined in: [kvstore.ts:171](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L171) +Defined in: [kvstore.ts:171](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L171) This function sets a key-value pair associated with the address that submits the transaction. @@ -271,7 +271,7 @@ await kvstoreClient.set('Role', 'RecordingOracle'); > **setBulk**(`keys`, `values`, `txOptions?`): `Promise`\<`void`\> -Defined in: [kvstore.ts:216](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L216) +Defined in: [kvstore.ts:216](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L216) This function sets key-value pairs in bulk associated with the address that submits the transaction. @@ -327,7 +327,7 @@ await kvstoreClient.setBulk(keys, values); > **setFileUrlAndHash**(`url`, `urlKey`, `txOptions?`): `Promise`\<`void`\> -Defined in: [kvstore.ts:265](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L265) +Defined in: [kvstore.ts:265](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L265) Sets a URL value for the address that submits the transaction, and its hash. @@ -380,7 +380,7 @@ await kvstoreClient.setFileUrlAndHash('linkedin.com/example', 'linkedin_url'); > `static` **build**(`runner`): `Promise`\<`KVStoreClient`\> -Defined in: [kvstore.ts:126](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L126) +Defined in: [kvstore.ts:126](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L126) Creates an instance of KVStoreClient from a runner. diff --git a/docs/sdk/typescript/kvstore/classes/KVStoreUtils.md b/docs/sdk/typescript/kvstore/classes/KVStoreUtils.md index 812c4cb182..6625411212 100644 --- a/docs/sdk/typescript/kvstore/classes/KVStoreUtils.md +++ b/docs/sdk/typescript/kvstore/classes/KVStoreUtils.md @@ -6,7 +6,7 @@ # Class: KVStoreUtils -Defined in: [kvstore.ts:362](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L362) +Defined in: [kvstore.ts:362](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L362) ## Introduction @@ -55,7 +55,7 @@ const KVStoreAddresses = await KVStoreUtils.getKVStoreData( > `static` **get**(`chainId`, `address`, `key`): `Promise`\<`string`\> -Defined in: [kvstore.ts:433](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L433) +Defined in: [kvstore.ts:433](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L433) Gets the value of a key-value pair in the KVStore using the subgraph. @@ -116,7 +116,7 @@ console.log(value); > `static` **getFileUrlAndVerifyHash**(`chainId`, `address`, `urlKey`): `Promise`\<`string`\> -Defined in: [kvstore.ts:480](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L480) +Defined in: [kvstore.ts:480](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L480) Gets the URL value of the given entity, and verifies its hash. @@ -164,7 +164,7 @@ console.log(url); > `static` **getKVStoreData**(`chainId`, `address`): `Promise`\<[`IKVStore`](../../interfaces/interfaces/IKVStore.md)[]\> -Defined in: [kvstore.ts:381](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L381) +Defined in: [kvstore.ts:381](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L381) This function returns the KVStore data for a given address. @@ -211,7 +211,7 @@ console.log(kvStoreData); > `static` **getPublicKey**(`chainId`, `address`): `Promise`\<`string`\> -Defined in: [kvstore.ts:540](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L540) +Defined in: [kvstore.ts:540](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/kvstore.ts#L540) Gets the public key of the given entity, and verifies its hash. diff --git a/docs/sdk/typescript/operator/classes/OperatorUtils.md b/docs/sdk/typescript/operator/classes/OperatorUtils.md index f3ea91a01b..60644bd19d 100644 --- a/docs/sdk/typescript/operator/classes/OperatorUtils.md +++ b/docs/sdk/typescript/operator/classes/OperatorUtils.md @@ -6,7 +6,7 @@ # Class: OperatorUtils -Defined in: [operator.ts:27](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/operator.ts#L27) +Defined in: [operator.ts:25](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/operator.ts#L25) ## Constructors @@ -22,9 +22,9 @@ Defined in: [operator.ts:27](https://github.com/humanprotocol/human-protocol/blo ### getOperator() -> `static` **getOperator**(`chainId`, `address`): `Promise`\<`null` \| [`IOperator`](../../interfaces/interfaces/IOperator.md)\> +> `static` **getOperator**(`chainId`, `address`): `Promise`\<[`IOperator`](../../interfaces/interfaces/IOperator.md) \| `null`\> -Defined in: [operator.ts:43](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/operator.ts#L43) +Defined in: [operator.ts:41](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/operator.ts#L41) This function returns the operator data for the given address. @@ -44,7 +44,7 @@ Operator address. #### Returns -`Promise`\<`null` \| [`IOperator`](../../interfaces/interfaces/IOperator.md)\> +`Promise`\<[`IOperator`](../../interfaces/interfaces/IOperator.md) \| `null`\> - Returns the operator details or null if not found. @@ -62,7 +62,7 @@ const operator = await OperatorUtils.getOperator(ChainId.POLYGON_AMOY, '0x62dD51 > `static` **getOperators**(`filter`): `Promise`\<[`IOperator`](../../interfaces/interfaces/IOperator.md)[]\> -Defined in: [operator.ts:109](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/operator.ts#L109) +Defined in: [operator.ts:84](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/operator.ts#L84) This function returns all the operator details of the protocol. @@ -97,7 +97,7 @@ const operators = await OperatorUtils.getOperators(filter); > `static` **getReputationNetworkOperators**(`chainId`, `address`, `role?`): `Promise`\<[`IOperator`](../../interfaces/interfaces/IOperator.md)[]\> -Defined in: [operator.ts:190](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/operator.ts#L190) +Defined in: [operator.ts:144](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/operator.ts#L144) Retrieves the reputation network operators of the specified address. @@ -141,7 +141,7 @@ const operators = await OperatorUtils.getReputationNetworkOperators(ChainId.POLY > `static` **getRewards**(`chainId`, `slasherAddress`): `Promise`\<[`IReward`](../../interfaces/interfaces/IReward.md)[]\> -Defined in: [operator.ts:244](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/operator.ts#L244) +Defined in: [operator.ts:183](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/operator.ts#L183) This function returns information about the rewards for a given slasher address. diff --git a/docs/sdk/typescript/staking/README.md b/docs/sdk/typescript/staking/README.md index 78084c2f17..025e67e4d6 100644 --- a/docs/sdk/typescript/staking/README.md +++ b/docs/sdk/typescript/staking/README.md @@ -9,3 +9,4 @@ ## Classes - [StakingClient](classes/StakingClient.md) +- [StakingUtils](classes/StakingUtils.md) diff --git a/docs/sdk/typescript/staking/classes/StakingClient.md b/docs/sdk/typescript/staking/classes/StakingClient.md index 462eb8c3ca..042b3fe248 100644 --- a/docs/sdk/typescript/staking/classes/StakingClient.md +++ b/docs/sdk/typescript/staking/classes/StakingClient.md @@ -6,7 +6,7 @@ # Class: StakingClient -Defined in: [staking.ts:97](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L97) +Defined in: [staking.ts:104](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L104) ## Introduction @@ -86,7 +86,7 @@ const stakingClient = await StakingClient.build(provider); > **new StakingClient**(`runner`, `networkData`): `StakingClient` -Defined in: [staking.ts:108](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L108) +Defined in: [staking.ts:115](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L115) **StakingClient constructor** @@ -118,7 +118,7 @@ The network information required to connect to the Staking contract > **escrowFactoryContract**: `EscrowFactory` -Defined in: [staking.ts:100](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L100) +Defined in: [staking.ts:107](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L107) *** @@ -126,7 +126,7 @@ Defined in: [staking.ts:100](https://github.com/humanprotocol/human-protocol/blo > **networkData**: [`NetworkData`](../../types/type-aliases/NetworkData.md) -Defined in: [base.ts:14](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L14) +Defined in: [base.ts:14](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L14) #### Inherited from @@ -138,7 +138,7 @@ Defined in: [base.ts:14](https://github.com/humanprotocol/human-protocol/blob/2f > `protected` **runner**: `ContractRunner` -Defined in: [base.ts:13](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L13) +Defined in: [base.ts:13](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L13) #### Inherited from @@ -150,7 +150,7 @@ Defined in: [base.ts:13](https://github.com/humanprotocol/human-protocol/blob/2f > **stakingContract**: `Staking` -Defined in: [staking.ts:99](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L99) +Defined in: [staking.ts:106](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L106) *** @@ -158,7 +158,7 @@ Defined in: [staking.ts:99](https://github.com/humanprotocol/human-protocol/blob > **tokenContract**: `HMToken` -Defined in: [staking.ts:98](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L98) +Defined in: [staking.ts:105](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L105) ## Methods @@ -166,7 +166,7 @@ Defined in: [staking.ts:98](https://github.com/humanprotocol/human-protocol/blob > `protected` **applyTxDefaults**(`txOptions`): `Overrides` -Defined in: [base.ts:35](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L35) +Defined in: [base.ts:35](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/base.ts#L35) Internal helper to enrich transaction overrides with network specific defaults. @@ -195,7 +195,7 @@ supplied fee parameters are left untouched. > **approveStake**(`amount`, `txOptions?`): `Promise`\<`void`\> -Defined in: [staking.ts:193](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L193) +Defined in: [staking.ts:200](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L200) This function approves the staking contract to transfer a specified amount of tokens when the user stakes. It increases the allowance for the staking contract. @@ -242,7 +242,7 @@ await stakingClient.approveStake(amount); > **getStakerInfo**(`stakerAddress`): `Promise`\<[`StakerInfo`](../../interfaces/interfaces/StakerInfo.md)\> -Defined in: [staking.ts:447](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L447) +Defined in: [staking.ts:454](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L454) Retrieves comprehensive staking information for a staker. @@ -278,7 +278,7 @@ console.log(stakingInfo.tokensStaked); > **slash**(`slasher`, `staker`, `escrowAddress`, `amount`, `txOptions?`): `Promise`\<`void`\> -Defined in: [staking.ts:385](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L385) +Defined in: [staking.ts:392](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L392) This function reduces the allocated amount by a staker in an escrow and transfers those tokens to the reward pool. This allows the slasher to claim them later. @@ -343,7 +343,7 @@ await stakingClient.slash('0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', '0xf39Fd > **stake**(`amount`, `txOptions?`): `Promise`\<`void`\> -Defined in: [staking.ts:247](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L247) +Defined in: [staking.ts:254](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L254) This function stakes a specified amount of tokens on a specific network. @@ -393,7 +393,7 @@ await stakingClient.stake(amount); > **unstake**(`amount`, `txOptions?`): `Promise`\<`void`\> -Defined in: [staking.ts:296](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L296) +Defined in: [staking.ts:303](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L303) This function unstakes tokens from staking contract. The unstaked tokens stay locked for a period of time. @@ -442,7 +442,7 @@ await stakingClient.unstake(amount); > **withdraw**(`txOptions?`): `Promise`\<`void`\> -Defined in: [staking.ts:346](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L346) +Defined in: [staking.ts:353](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L353) This function withdraws unstaked and non-locked tokens from staking contract to the user wallet. @@ -484,7 +484,7 @@ await stakingClient.withdraw(); > `static` **build**(`runner`): `Promise`\<`StakingClient`\> -Defined in: [staking.ts:136](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L136) +Defined in: [staking.ts:143](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L143) Creates an instance of StakingClient from a Runner. diff --git a/docs/sdk/typescript/staking/classes/StakingUtils.md b/docs/sdk/typescript/staking/classes/StakingUtils.md new file mode 100644 index 0000000000..8e072fd858 --- /dev/null +++ b/docs/sdk/typescript/staking/classes/StakingUtils.md @@ -0,0 +1,73 @@ +[**@human-protocol/sdk**](../../README.md) + +*** + +[@human-protocol/sdk](../../modules.md) / [staking](../README.md) / StakingUtils + +# Class: StakingUtils + +Defined in: [staking.ts:492](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L492) + +Utility class for Staking-related subgraph queries. + +## Constructors + +### Constructor + +> **new StakingUtils**(): `StakingUtils` + +#### Returns + +`StakingUtils` + +## Methods + +### getStaker() + +> `static` **getStaker**(`chainId`, `stakerAddress`): `Promise`\<[`IStaker`](../../interfaces/interfaces/IStaker.md)\> + +Defined in: [staking.ts:500](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L500) + +Gets staking info for a staker from the subgraph. + +#### Parameters + +##### chainId + +[`ChainId`](../../enums/enumerations/ChainId.md) + +Network in which the staking contract is deployed + +##### stakerAddress + +`string` + +Address of the staker + +#### Returns + +`Promise`\<[`IStaker`](../../interfaces/interfaces/IStaker.md)\> + +Staker info from subgraph + +*** + +### getStakers() + +> `static` **getStakers**(`filter`): `Promise`\<[`IStaker`](../../interfaces/interfaces/IStaker.md)[]\> + +Defined in: [staking.ts:531](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/staking.ts#L531) + +Gets all stakers from the subgraph with filters, pagination and ordering. + +#### Parameters + +##### filter + +[`IStakersFilter`](../../interfaces/interfaces/IStakersFilter.md) + +#### Returns + +`Promise`\<[`IStaker`](../../interfaces/interfaces/IStaker.md)[]\> + +Array of stakers diff --git a/docs/sdk/typescript/statistics/classes/StatisticsClient.md b/docs/sdk/typescript/statistics/classes/StatisticsClient.md index 6d5c421a0d..87322f62c2 100644 --- a/docs/sdk/typescript/statistics/classes/StatisticsClient.md +++ b/docs/sdk/typescript/statistics/classes/StatisticsClient.md @@ -6,7 +6,7 @@ # Class: StatisticsClient -Defined in: [statistics.ts:58](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L58) +Defined in: [statistics.ts:60](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L60) ## Introduction @@ -45,7 +45,7 @@ const statisticsClient = new StatisticsClient(NETWORKS[ChainId.POLYGON_AMOY]); > **new StatisticsClient**(`networkData`): `StatisticsClient` -Defined in: [statistics.ts:67](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L67) +Defined in: [statistics.ts:69](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L69) **StatisticsClient constructor** @@ -67,7 +67,7 @@ The network information required to connect to the Statistics contract > **networkData**: [`NetworkData`](../../types/type-aliases/NetworkData.md) -Defined in: [statistics.ts:59](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L59) +Defined in: [statistics.ts:61](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L61) *** @@ -75,15 +75,15 @@ Defined in: [statistics.ts:59](https://github.com/humanprotocol/human-protocol/b > **subgraphUrl**: `string` -Defined in: [statistics.ts:60](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L60) +Defined in: [statistics.ts:62](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L62) ## Methods ### getEscrowStatistics() -> **getEscrowStatistics**(`filter`): `Promise`\<[`EscrowStatistics`](../../graphql/types/type-aliases/EscrowStatistics.md)\> +> **getEscrowStatistics**(`filter`): `Promise`\<[`IEscrowStatistics`](../../interfaces/interfaces/IEscrowStatistics.md)\> -Defined in: [statistics.ts:120](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L120) +Defined in: [statistics.ts:122](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L122) This function returns the statistical data of escrows. @@ -100,8 +100,8 @@ interface IStatisticsFilter { ``` ```ts -type DailyEscrowsData = { - timestamp: Date; +interface IDailyEscrow { + timestamp: number; escrowsTotal: number; escrowsPending: number; escrowsSolved: number; @@ -109,9 +109,9 @@ type DailyEscrowsData = { escrowsCancelled: number; }; -type EscrowStatistics = { +interface IEscrowStatistics { totalEscrows: number; - dailyEscrowsData: DailyEscrowsData[]; + dailyEscrowsData: IDailyEscrow[]; }; ``` @@ -125,7 +125,7 @@ Statistics params with duration data #### Returns -`Promise`\<[`EscrowStatistics`](../../graphql/types/type-aliases/EscrowStatistics.md)\> +`Promise`\<[`IEscrowStatistics`](../../interfaces/interfaces/IEscrowStatistics.md)\> Escrow statistics data. @@ -147,9 +147,9 @@ const escrowStatisticsApril = await statisticsClient.getEscrowStatistics({ ### getHMTDailyData() -> **getHMTDailyData**(`filter`): `Promise`\<[`DailyHMTData`](../../graphql/types/type-aliases/DailyHMTData.md)[]\> +> **getHMTDailyData**(`filter`): `Promise`\<[`IDailyHMT`](../../interfaces/interfaces/IDailyHMT.md)[]\> -Defined in: [statistics.ts:478](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L478) +Defined in: [statistics.ts:478](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L478) This function returns the statistical data of HMToken day by day. @@ -166,8 +166,8 @@ interface IStatisticsFilter { ``` ```ts -type DailyHMTData = { - timestamp: Date; +interface IDailyHMT { + timestamp: number; totalTransactionAmount: bigint; totalTransactionCount: number; dailyUniqueSenders: number; @@ -185,7 +185,7 @@ Statistics params with duration data #### Returns -`Promise`\<[`DailyHMTData`](../../graphql/types/type-aliases/DailyHMTData.md)[]\> +`Promise`\<[`IDailyHMT`](../../interfaces/interfaces/IDailyHMT.md)[]\> Daily HMToken statistics data. @@ -212,9 +212,9 @@ console.log('HMT statistics from 5/8 - 6/8:', hmtStatisticsRange); ### getHMTHolders() -> **getHMTHolders**(`params`): `Promise`\<[`HMTHolder`](../../graphql/types/type-aliases/HMTHolder.md)[]\> +> **getHMTHolders**(`params`): `Promise`\<[`IHMTHolder`](../../interfaces/interfaces/IHMTHolder.md)[]\> -Defined in: [statistics.ts:407](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L407) +Defined in: [statistics.ts:407](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L407) This function returns the holders of the HMToken with optional filters and ordering. @@ -230,7 +230,7 @@ HMT Holders params with filters and ordering #### Returns -`Promise`\<[`HMTHolder`](../../graphql/types/type-aliases/HMTHolder.md)[]\> +`Promise`\<[`IHMTHolder`](../../interfaces/interfaces/IHMTHolder.md)[]\> List of HMToken holders. @@ -255,23 +255,23 @@ console.log('HMT holders:', hmtHolders.map((h) => ({ ### getHMTStatistics() -> **getHMTStatistics**(): `Promise`\<[`HMTStatistics`](../../graphql/types/type-aliases/HMTStatistics.md)\> +> **getHMTStatistics**(): `Promise`\<[`IHMTStatistics`](../../interfaces/interfaces/IHMTStatistics.md)\> -Defined in: [statistics.ts:364](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L364) +Defined in: [statistics.ts:366](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L366) This function returns the statistical data of HMToken. ```ts -type HMTStatistics = { - totalTransferAmount: BigNumber; - totalTransferCount: BigNumber; +interface IHMTStatistics { + totalTransferAmount: bigint; + totalTransferCount: number; totalHolders: number; }; ``` #### Returns -`Promise`\<[`HMTStatistics`](../../graphql/types/type-aliases/HMTStatistics.md)\> +`Promise`\<[`IHMTStatistics`](../../interfaces/interfaces/IHMTStatistics.md)\> HMToken statistics data. @@ -294,9 +294,9 @@ console.log('HMT statistics:', { ### getPaymentStatistics() -> **getPaymentStatistics**(`filter`): `Promise`\<[`PaymentStatistics`](../../graphql/types/type-aliases/PaymentStatistics.md)\> +> **getPaymentStatistics**(`filter`): `Promise`\<[`IPaymentStatistics`](../../interfaces/interfaces/IPaymentStatistics.md)\> -Defined in: [statistics.ts:300](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L300) +Defined in: [statistics.ts:302](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L302) This function returns the statistical data of payments. @@ -313,15 +313,15 @@ interface IStatisticsFilter { ``` ```ts -type DailyPaymentData = { - timestamp: Date; - totalAmountPaid: BigNumber; +interface IDailyPayment { + timestamp: number; + totalAmountPaid: bigint; totalCount: number; - averageAmountPerWorker: BigNumber; + averageAmountPerWorker: bigint; }; -type PaymentStatistics = { - dailyPaymentsData: DailyPaymentData[]; +interface IPaymentStatistics { + dailyPaymentsData: IDailyPayment[]; }; ``` @@ -335,7 +335,7 @@ Statistics params with duration data #### Returns -`Promise`\<[`PaymentStatistics`](../../graphql/types/type-aliases/PaymentStatistics.md)\> +`Promise`\<[`IPaymentStatistics`](../../interfaces/interfaces/IPaymentStatistics.md)\> Payment statistics data. @@ -378,9 +378,9 @@ console.log( ### getWorkerStatistics() -> **getWorkerStatistics**(`filter`): `Promise`\<[`WorkerStatistics`](../../graphql/types/type-aliases/WorkerStatistics.md)\> +> **getWorkerStatistics**(`filter`): `Promise`\<[`IWorkerStatistics`](../../interfaces/interfaces/IWorkerStatistics.md)\> -Defined in: [statistics.ts:204](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L204) +Defined in: [statistics.ts:206](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts#L206) This function returns the statistical data of workers. @@ -397,13 +397,13 @@ interface IStatisticsFilter { ``` ```ts -type DailyWorkerData = { - timestamp: Date; +interface IDailyWorker { + timestamp: number; activeWorkers: number; }; -type WorkerStatistics = { - dailyWorkersData: DailyWorkerData[]; +interface IWorkerStatistics { + dailyWorkersData: IDailyWorker[]; }; ``` @@ -417,7 +417,7 @@ Statistics params with duration data #### Returns -`Promise`\<[`WorkerStatistics`](../../graphql/types/type-aliases/WorkerStatistics.md)\> +`Promise`\<[`IWorkerStatistics`](../../interfaces/interfaces/IWorkerStatistics.md)\> Worker statistics data. diff --git a/docs/sdk/typescript/storage/classes/StorageClient.md b/docs/sdk/typescript/storage/classes/StorageClient.md index 6387abbaac..91b0828126 100644 --- a/docs/sdk/typescript/storage/classes/StorageClient.md +++ b/docs/sdk/typescript/storage/classes/StorageClient.md @@ -4,9 +4,9 @@ [@human-protocol/sdk](../../modules.md) / [storage](../README.md) / StorageClient -# Class: ~~StorageClient~~ +# ~~Class: StorageClient~~ -Defined in: [storage.ts:63](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/storage.ts#L63) +Defined in: [storage.ts:63](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/storage.ts#L63) ## Deprecated @@ -61,7 +61,7 @@ const storageClient = new StorageClient(params, credentials); > **new StorageClient**(`params`, `credentials?`): `StorageClient` -Defined in: [storage.ts:73](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/storage.ts#L73) +Defined in: [storage.ts:73](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/storage.ts#L73) **Storage client constructor** @@ -89,7 +89,7 @@ Optional. Cloud storage access data. If credentials are not provided - use anony > **bucketExists**(`bucket`): `Promise`\<`boolean`\> -Defined in: [storage.ts:262](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/storage.ts#L262) +Defined in: [storage.ts:262](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/storage.ts#L262) This function checks if a bucket exists. @@ -133,7 +133,7 @@ const exists = await storageClient.bucketExists('bucket-name'); > **downloadFiles**(`keys`, `bucket`): `Promise`\<`any`[]\> -Defined in: [storage.ts:112](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/storage.ts#L112) +Defined in: [storage.ts:112](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/storage.ts#L112) This function downloads files from a bucket. @@ -181,7 +181,7 @@ const files = await storageClient.downloadFiles(keys, 'bucket-name'); > **listObjects**(`bucket`): `Promise`\<`string`[]\> -Defined in: [storage.ts:292](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/storage.ts#L292) +Defined in: [storage.ts:292](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/storage.ts#L292) This function lists all file names contained in the bucket. @@ -225,7 +225,7 @@ const fileNames = await storageClient.listObjects('bucket-name'); > **uploadFiles**(`files`, `bucket`): `Promise`\<[`UploadFile`](../../types/type-aliases/UploadFile.md)[]\> -Defined in: [storage.ts:198](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/storage.ts#L198) +Defined in: [storage.ts:198](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/storage.ts#L198) This function uploads files to a bucket. @@ -278,7 +278,7 @@ const uploadedFiles = await storageClient.uploadFiles(files, 'bucket-name'); > `static` **downloadFileFromUrl**(`url`): `Promise`\<`any`\> -Defined in: [storage.ts:146](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/storage.ts#L146) +Defined in: [storage.ts:146](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/storage.ts#L146) This function downloads files from a URL. diff --git a/docs/sdk/typescript/transaction/classes/TransactionUtils.md b/docs/sdk/typescript/transaction/classes/TransactionUtils.md index a48fcc1eea..67155f2b20 100644 --- a/docs/sdk/typescript/transaction/classes/TransactionUtils.md +++ b/docs/sdk/typescript/transaction/classes/TransactionUtils.md @@ -6,7 +6,7 @@ # Class: TransactionUtils -Defined in: [transaction.ts:18](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/transaction.ts#L18) +Defined in: [transaction.ts:23](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/transaction.ts#L23) ## Constructors @@ -22,9 +22,9 @@ Defined in: [transaction.ts:18](https://github.com/humanprotocol/human-protocol/ ### getTransaction() -> `static` **getTransaction**(`chainId`, `hash`): `Promise`\<`null` \| [`ITransaction`](../../interfaces/interfaces/ITransaction.md)\> +> `static` **getTransaction**(`chainId`, `hash`): `Promise`\<[`ITransaction`](../../interfaces/interfaces/ITransaction.md) \| `null`\> -Defined in: [transaction.ts:50](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/transaction.ts#L50) +Defined in: [transaction.ts:67](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/transaction.ts#L67) This function returns the transaction data for the given hash. @@ -35,7 +35,7 @@ type ITransaction = { from: string; to: string; timestamp: bigint; - value: string; + value: bigint; method: string; receiver?: string; escrow?: string; @@ -44,6 +44,18 @@ type ITransaction = { }; ``` +```ts +type InternalTransaction = { + from: string; + to: string; + value: bigint; + method: string; + receiver?: string; + escrow?: string; + token?: string; +}; +``` + #### Parameters ##### chainId @@ -60,7 +72,7 @@ The transaction hash. #### Returns -`Promise`\<`null` \| [`ITransaction`](../../interfaces/interfaces/ITransaction.md)\> +`Promise`\<[`ITransaction`](../../interfaces/interfaces/ITransaction.md) \| `null`\> - Returns the transaction details or null if not found. @@ -78,7 +90,7 @@ const transaction = await TransactionUtils.getTransaction(ChainId.POLYGON, '0x62 > `static` **getTransactions**(`filter`): `Promise`\<[`ITransaction`](../../interfaces/interfaces/ITransaction.md)[]\> -Defined in: [transaction.ts:132](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/transaction.ts#L132) +Defined in: [transaction.ts:162](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/transaction.ts#L162) This function returns all transaction details based on the provided filter. @@ -102,6 +114,17 @@ interface ITransactionsFilter { skip?: number; // (Optional) Number of transactions to skip. Default is 0. orderDirection?: OrderDirection; // (Optional) Order of the results. Default is DESC. } + +```ts +type InternalTransaction = { + from: string; + to: string; + value: bigint; + method: string; + receiver?: string; + escrow?: string; + token?: string; +}; ``` ```ts @@ -111,7 +134,7 @@ type ITransaction = { from: string; to: string; timestamp: bigint; - value: string; + value: bigint; method: string; receiver?: string; escrow?: string; @@ -120,19 +143,8 @@ type ITransaction = { }; ``` -#### Parameters - -##### filter - -[`ITransactionsFilter`](../../interfaces/interfaces/ITransactionsFilter.md) - -Filter for the transactions. - -#### Returns - -`Promise`\<[`ITransaction`](../../interfaces/interfaces/ITransaction.md)[]\> - -Returns an array with all the transaction details. +@param {ITransactionsFilter} filter Filter for the transactions. +@returns {Promise} Returns an array with all the transaction details. **Code example** @@ -149,3 +161,13 @@ const filter: ITransactionsFilter = { }; const transactions = await TransactionUtils.getTransactions(filter); ``` + +#### Parameters + +##### filter + +[`ITransactionsFilter`](../../interfaces/interfaces/ITransactionsFilter.md) + +#### Returns + +`Promise`\<[`ITransaction`](../../interfaces/interfaces/ITransaction.md)[]\> diff --git a/docs/sdk/typescript/types/README.md b/docs/sdk/typescript/types/README.md index 19291e4dc2..aad778dd0b 100644 --- a/docs/sdk/typescript/types/README.md +++ b/docs/sdk/typescript/types/README.md @@ -12,10 +12,7 @@ ## Type Aliases -- [EscrowCancel](type-aliases/EscrowCancel.md) -- [EscrowWithdraw](type-aliases/EscrowWithdraw.md) - [NetworkData](type-aliases/NetworkData.md) -- [Payout](type-aliases/Payout.md) - [~~StorageCredentials~~](type-aliases/StorageCredentials.md) - [~~StorageParams~~](type-aliases/StorageParams.md) - [TransactionLikeWithNonce](type-aliases/TransactionLikeWithNonce.md) diff --git a/docs/sdk/typescript/types/enumerations/EscrowStatus.md b/docs/sdk/typescript/types/enumerations/EscrowStatus.md index d6ae028ac4..2b08467171 100644 --- a/docs/sdk/typescript/types/enumerations/EscrowStatus.md +++ b/docs/sdk/typescript/types/enumerations/EscrowStatus.md @@ -6,7 +6,7 @@ # Enumeration: EscrowStatus -Defined in: [types.ts:8](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L8) +Defined in: [types.ts:8](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L8) Enum for escrow statuses. @@ -16,7 +16,7 @@ Enum for escrow statuses. > **Cancelled**: `5` -Defined in: [types.ts:32](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L32) +Defined in: [types.ts:32](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L32) Escrow is cancelled. @@ -26,7 +26,7 @@ Escrow is cancelled. > **Complete**: `4` -Defined in: [types.ts:28](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L28) +Defined in: [types.ts:28](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L28) Escrow is finished. @@ -36,7 +36,7 @@ Escrow is finished. > **Launched**: `0` -Defined in: [types.ts:12](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L12) +Defined in: [types.ts:12](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L12) Escrow is launched. @@ -46,7 +46,7 @@ Escrow is launched. > **Paid**: `3` -Defined in: [types.ts:24](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L24) +Defined in: [types.ts:24](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L24) Escrow is fully paid. @@ -56,7 +56,7 @@ Escrow is fully paid. > **Partial**: `2` -Defined in: [types.ts:20](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L20) +Defined in: [types.ts:20](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L20) Escrow is partially paid out. @@ -66,6 +66,16 @@ Escrow is partially paid out. > **Pending**: `1` -Defined in: [types.ts:16](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L16) +Defined in: [types.ts:16](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L16) Escrow is funded, and waiting for the results to be submitted. + +*** + +### ToCancel + +> **ToCancel**: `6` + +Defined in: [types.ts:36](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L36) + +Escrow is cancelled. diff --git a/docs/sdk/typescript/types/type-aliases/EscrowCancel.md b/docs/sdk/typescript/types/type-aliases/EscrowCancel.md deleted file mode 100644 index 9ccf6d8979..0000000000 --- a/docs/sdk/typescript/types/type-aliases/EscrowCancel.md +++ /dev/null @@ -1,33 +0,0 @@ -[**@human-protocol/sdk**](../../README.md) - -*** - -[@human-protocol/sdk](../../modules.md) / [types](../README.md) / EscrowCancel - -# Type Alias: EscrowCancel - -> **EscrowCancel** = `object` - -Defined in: [types.ts:145](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L145) - -Represents the response data for an escrow cancellation. - -## Properties - -### amountRefunded - -> **amountRefunded**: `bigint` - -Defined in: [types.ts:153](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L153) - -The amount refunded in the escrow cancellation. - -*** - -### txHash - -> **txHash**: `string` - -Defined in: [types.ts:149](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L149) - -The hash of the transaction associated with the escrow cancellation. diff --git a/docs/sdk/typescript/types/type-aliases/EscrowWithdraw.md b/docs/sdk/typescript/types/type-aliases/EscrowWithdraw.md deleted file mode 100644 index b21d19fb49..0000000000 --- a/docs/sdk/typescript/types/type-aliases/EscrowWithdraw.md +++ /dev/null @@ -1,43 +0,0 @@ -[**@human-protocol/sdk**](../../README.md) - -*** - -[@human-protocol/sdk](../../modules.md) / [types](../README.md) / EscrowWithdraw - -# Type Alias: EscrowWithdraw - -> **EscrowWithdraw** = `object` - -Defined in: [types.ts:159](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L159) - -Represents the response data for an escrow withdrawal. - -## Properties - -### amountWithdrawn - -> **amountWithdrawn**: `bigint` - -Defined in: [types.ts:171](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L171) - -The amount withdrawn from the escrow. - -*** - -### tokenAddress - -> **tokenAddress**: `string` - -Defined in: [types.ts:167](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L167) - -The address of the token used for the withdrawal. - -*** - -### txHash - -> **txHash**: `string` - -Defined in: [types.ts:163](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L163) - -The hash of the transaction associated with the escrow withdrawal. diff --git a/docs/sdk/typescript/types/type-aliases/NetworkData.md b/docs/sdk/typescript/types/type-aliases/NetworkData.md index 69bb23f7e2..babf71cda4 100644 --- a/docs/sdk/typescript/types/type-aliases/NetworkData.md +++ b/docs/sdk/typescript/types/type-aliases/NetworkData.md @@ -8,7 +8,7 @@ > **NetworkData** = `object` -Defined in: [types.ts:95](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L95) +Defined in: [types.ts:99](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L99) Network data @@ -18,7 +18,7 @@ Network data > **chainId**: `number` -Defined in: [types.ts:99](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L99) +Defined in: [types.ts:103](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L103) Network chain id @@ -28,7 +28,7 @@ Network chain id > **factoryAddress**: `string` -Defined in: [types.ts:115](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L115) +Defined in: [types.ts:119](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L119) Escrow Factory contract address @@ -38,7 +38,7 @@ Escrow Factory contract address > **hmtAddress**: `string` -Defined in: [types.ts:111](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L111) +Defined in: [types.ts:115](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L115) HMT Token contract address @@ -48,7 +48,7 @@ HMT Token contract address > **kvstoreAddress**: `string` -Defined in: [types.ts:123](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L123) +Defined in: [types.ts:127](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L127) KVStore contract address @@ -58,7 +58,7 @@ KVStore contract address > **oldFactoryAddress**: `string` -Defined in: [types.ts:139](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L139) +Defined in: [types.ts:143](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L143) Old Escrow Factory contract address @@ -68,7 +68,7 @@ Old Escrow Factory contract address > **oldSubgraphUrl**: `string` -Defined in: [types.ts:135](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L135) +Defined in: [types.ts:139](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L139) Old subgraph URL @@ -78,7 +78,7 @@ Old subgraph URL > **scanUrl**: `string` -Defined in: [types.ts:107](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L107) +Defined in: [types.ts:111](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L111) Network scanner URL @@ -88,7 +88,7 @@ Network scanner URL > **stakingAddress**: `string` -Defined in: [types.ts:119](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L119) +Defined in: [types.ts:123](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L123) Staking contract address @@ -98,7 +98,7 @@ Staking contract address > **subgraphUrl**: `string` -Defined in: [types.ts:127](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L127) +Defined in: [types.ts:131](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L131) Subgraph URL @@ -108,7 +108,7 @@ Subgraph URL > **subgraphUrlApiKey**: `string` -Defined in: [types.ts:131](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L131) +Defined in: [types.ts:135](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L135) Subgraph URL API key @@ -118,6 +118,6 @@ Subgraph URL API key > **title**: `string` -Defined in: [types.ts:103](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L103) +Defined in: [types.ts:107](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L107) Network title diff --git a/docs/sdk/typescript/types/type-aliases/Payout.md b/docs/sdk/typescript/types/type-aliases/Payout.md deleted file mode 100644 index 98f6c386c9..0000000000 --- a/docs/sdk/typescript/types/type-aliases/Payout.md +++ /dev/null @@ -1,63 +0,0 @@ -[**@human-protocol/sdk**](../../README.md) - -*** - -[@human-protocol/sdk](../../modules.md) / [types](../README.md) / Payout - -# Type Alias: Payout - -> **Payout** = `object` - -Defined in: [types.ts:177](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L177) - -Represents a payout from an escrow. - -## Properties - -### amount - -> **amount**: `bigint` - -Defined in: [types.ts:193](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L193) - -The amount paid to the recipient. - -*** - -### createdAt - -> **createdAt**: `number` - -Defined in: [types.ts:197](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L197) - -The timestamp when the payout was created (in UNIX format). - -*** - -### escrowAddress - -> **escrowAddress**: `string` - -Defined in: [types.ts:185](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L185) - -The address of the escrow associated with the payout. - -*** - -### id - -> **id**: `string` - -Defined in: [types.ts:181](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L181) - -Unique identifier of the payout. - -*** - -### recipient - -> **recipient**: `string` - -Defined in: [types.ts:189](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L189) - -The address of the recipient who received the payout. diff --git a/docs/sdk/typescript/types/type-aliases/StorageCredentials.md b/docs/sdk/typescript/types/type-aliases/StorageCredentials.md index 9c9a748a96..3ccc4d4af9 100644 --- a/docs/sdk/typescript/types/type-aliases/StorageCredentials.md +++ b/docs/sdk/typescript/types/type-aliases/StorageCredentials.md @@ -4,11 +4,11 @@ [@human-protocol/sdk](../../modules.md) / [types](../README.md) / StorageCredentials -# Type Alias: ~~StorageCredentials~~ +# ~~Type Alias: StorageCredentials~~ > `readonly` **StorageCredentials** = `object` -Defined in: [types.ts:40](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L40) +Defined in: [types.ts:44](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L44) AWS/GCP cloud storage access data @@ -22,7 +22,7 @@ StorageClient is deprecated. Use Minio.Client directly. > **accessKey**: `string` -Defined in: [types.ts:44](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L44) +Defined in: [types.ts:48](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L48) Access Key @@ -32,6 +32,6 @@ Access Key > **secretKey**: `string` -Defined in: [types.ts:48](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L48) +Defined in: [types.ts:52](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L52) Secret Key diff --git a/docs/sdk/typescript/types/type-aliases/StorageParams.md b/docs/sdk/typescript/types/type-aliases/StorageParams.md index b6829b76a5..7ac7fbd2fe 100644 --- a/docs/sdk/typescript/types/type-aliases/StorageParams.md +++ b/docs/sdk/typescript/types/type-aliases/StorageParams.md @@ -4,11 +4,11 @@ [@human-protocol/sdk](../../modules.md) / [types](../README.md) / StorageParams -# Type Alias: ~~StorageParams~~ +# ~~Type Alias: StorageParams~~ > **StorageParams** = `object` -Defined in: [types.ts:54](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L54) +Defined in: [types.ts:58](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L58) ## Deprecated @@ -20,7 +20,7 @@ StorageClient is deprecated. Use Minio.Client directly. > **endPoint**: `string` -Defined in: [types.ts:58](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L58) +Defined in: [types.ts:62](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L62) Request endPoint @@ -30,7 +30,7 @@ Request endPoint > `optional` **port**: `number` -Defined in: [types.ts:70](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L70) +Defined in: [types.ts:74](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L74) TCP/IP port number. Default value set to 80 for HTTP and 443 for HTTPs @@ -40,7 +40,7 @@ TCP/IP port number. Default value set to 80 for HTTP and 443 for HTTPs > `optional` **region**: `string` -Defined in: [types.ts:66](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L66) +Defined in: [types.ts:70](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L70) Region @@ -50,6 +50,6 @@ Region > **useSSL**: `boolean` -Defined in: [types.ts:62](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L62) +Defined in: [types.ts:66](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L66) Enable secure (HTTPS) access. Default value set to false diff --git a/docs/sdk/typescript/types/type-aliases/TransactionLikeWithNonce.md b/docs/sdk/typescript/types/type-aliases/TransactionLikeWithNonce.md index 9725bea494..01ebde8c54 100644 --- a/docs/sdk/typescript/types/type-aliases/TransactionLikeWithNonce.md +++ b/docs/sdk/typescript/types/type-aliases/TransactionLikeWithNonce.md @@ -8,9 +8,9 @@ > **TransactionLikeWithNonce** = `TransactionLike` & `object` -Defined in: [types.ts:200](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L200) +Defined in: [types.ts:146](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L146) -## Type declaration +## Type Declaration ### nonce diff --git a/docs/sdk/typescript/types/type-aliases/UploadFile.md b/docs/sdk/typescript/types/type-aliases/UploadFile.md index ef021a7efc..32d41fcac1 100644 --- a/docs/sdk/typescript/types/type-aliases/UploadFile.md +++ b/docs/sdk/typescript/types/type-aliases/UploadFile.md @@ -8,7 +8,7 @@ > `readonly` **UploadFile** = `object` -Defined in: [types.ts:77](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L77) +Defined in: [types.ts:81](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L81) Upload file data @@ -18,7 +18,7 @@ Upload file data > **hash**: `string` -Defined in: [types.ts:89](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L89) +Defined in: [types.ts:93](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L93) Hash of uploaded object key @@ -28,7 +28,7 @@ Hash of uploaded object key > **key**: `string` -Defined in: [types.ts:81](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L81) +Defined in: [types.ts:85](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L85) Uploaded object key @@ -38,6 +38,6 @@ Uploaded object key > **url**: `string` -Defined in: [types.ts:85](https://github.com/humanprotocol/human-protocol/blob/2f541eb9f61d23b64321ff5b999971550d47e843/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L85) +Defined in: [types.ts:89](https://github.com/humanprotocol/human-protocol/blob/d055cfd598260e2e29b8b12885f1ee350eef64a4/packages/sdk/typescript/human-protocol-sdk/src/types.ts#L89) Uploaded object URL diff --git a/packages/apps/dashboard/client/src/features/leaderboard/model/leaderboardSchema.ts b/packages/apps/dashboard/client/src/features/leaderboard/model/leaderboardSchema.ts index 9d66199cda..9531afeaa2 100644 --- a/packages/apps/dashboard/client/src/features/leaderboard/model/leaderboardSchema.ts +++ b/packages/apps/dashboard/client/src/features/leaderboard/model/leaderboardSchema.ts @@ -5,14 +5,14 @@ import { reputationSchema } from '@/shared/model/reputationSchema'; const leaderboardEntity = z.object({ address: z.string(), role: z.string(), - amountStaked: z + stakedAmount: z .string() .transform((value, ctx) => { const valueAsNumber = Number(value); if (Number.isNaN(valueAsNumber)) { ctx.addIssue({ - path: ['amountStaked'], + path: ['stakedAmount'], code: z.ZodIssueCode.custom, }); } diff --git a/packages/apps/dashboard/client/src/features/leaderboard/ui/useDataGrid.tsx b/packages/apps/dashboard/client/src/features/leaderboard/ui/useDataGrid.tsx index 1f9930e059..61a5d8653d 100644 --- a/packages/apps/dashboard/client/src/features/leaderboard/ui/useDataGrid.tsx +++ b/packages/apps/dashboard/client/src/features/leaderboard/ui/useDataGrid.tsx @@ -83,7 +83,7 @@ const useDataGrid = (data: LeaderboardData) => { ), }, { - field: 'amountStaked', + field: 'stakedAmount', sortable: false, flex: 1, minWidth: isMobile ? 130 : 260, diff --git a/packages/apps/dashboard/client/src/features/searchResults/model/addressDetailsSchema.ts b/packages/apps/dashboard/client/src/features/searchResults/model/addressDetailsSchema.ts index 8c035e1a3f..fe9c339c49 100644 --- a/packages/apps/dashboard/client/src/features/searchResults/model/addressDetailsSchema.ts +++ b/packages/apps/dashboard/client/src/features/searchResults/model/addressDetailsSchema.ts @@ -7,9 +7,9 @@ const walletSchema = z.object({ chainId: z.number(), address: z.string(), balance: z.string(), - amountStaked: z.string(), - amountLocked: z.string(), - amountWithdrawable: z.string(), + stakedAmount: z.string(), + lockedAmount: z.string(), + withdrawableAmount: z.string(), reputation: reputationSchema, totalHMTAmountReceived: z.string(), payoutCount: z.number().or(z.string()), @@ -50,16 +50,16 @@ const operatorSchema = z.object({ Role.ReputationOracle, ]) .nullable(), - amountStaked: z.string().optional(), - amountLocked: z.string().optional(), - amountWithdrawable: z.string().optional(), + stakedAmount: z.string().optional(), + lockedAmount: z.string().optional(), + withdrawableAmount: z.string().optional(), lockedUntilTimestamp: z.string().optional(), reputation: reputationSchema, - fee: z.number(), + fee: z.number().optional().nullable(), jobTypes: z.array(z.string()).optional().nullable(), url: z.string().optional().nullable(), reward: z.string().optional(), - amountJobsProcessed: z.string(), + amountJobsProcessed: z.number(), }); export type AddressDetailsOperator = z.infer; diff --git a/packages/apps/dashboard/client/src/features/searchResults/ui/OperatorAddress.tsx b/packages/apps/dashboard/client/src/features/searchResults/ui/OperatorAddress.tsx index 4054a82cf9..9948d1ac45 100644 --- a/packages/apps/dashboard/client/src/features/searchResults/ui/OperatorAddress.tsx +++ b/packages/apps/dashboard/client/src/features/searchResults/ui/OperatorAddress.tsx @@ -113,9 +113,9 @@ const OperatorAddress = ({ data }: { data: AddressDetailsOperator }) => { role, reputation, amountJobsProcessed, - amountStaked, - amountLocked, - amountWithdrawable, + stakedAmount, + lockedAmount, + withdrawableAmount, url, fee, jobTypes, @@ -203,9 +203,9 @@ const OperatorAddress = ({ data }: { data: AddressDetailsOperator }) => { diff --git a/packages/apps/dashboard/client/src/features/searchResults/ui/StakeInfo.tsx b/packages/apps/dashboard/client/src/features/searchResults/ui/StakeInfo.tsx index b8b7c08ebc..78b2bef88e 100644 --- a/packages/apps/dashboard/client/src/features/searchResults/ui/StakeInfo.tsx +++ b/packages/apps/dashboard/client/src/features/searchResults/ui/StakeInfo.tsx @@ -8,17 +8,17 @@ import SectionWrapper from '@/shared/ui/SectionWrapper'; import TokenAmount from './TokenAmount'; type Props = { - amountStaked?: string | number | null; - amountLocked?: string | number | null; - amountWithdrawable?: string | number | null; + stakedAmount?: string | number | null; + lockedAmount?: string | number | null; + withdrawableAmount?: string | number | null; }; const StakeInfo: FC = ({ - amountStaked, - amountLocked, - amountWithdrawable, + stakedAmount, + lockedAmount, + withdrawableAmount, }) => { - if (!amountStaked && !amountLocked && !amountWithdrawable) return null; + if (!stakedAmount && !lockedAmount && !withdrawableAmount) return null; return ( @@ -26,28 +26,28 @@ const StakeInfo: FC = ({ Stake Info - {Number.isFinite(Number(amountStaked)) && ( + {Number.isFinite(Number(stakedAmount)) && ( Staked Tokens - + )} - {Number.isFinite(Number(amountLocked)) && ( + {Number.isFinite(Number(lockedAmount)) && ( Locked Tokens - + )} - {Number.isFinite(Number(amountWithdrawable)) && ( + {Number.isFinite(Number(withdrawableAmount)) && ( Withdrawable Tokens - + )} diff --git a/packages/apps/dashboard/client/src/features/searchResults/ui/WalletAddress.tsx b/packages/apps/dashboard/client/src/features/searchResults/ui/WalletAddress.tsx index 254e6fecac..29b551a00e 100644 --- a/packages/apps/dashboard/client/src/features/searchResults/ui/WalletAddress.tsx +++ b/packages/apps/dashboard/client/src/features/searchResults/ui/WalletAddress.tsx @@ -25,10 +25,10 @@ type Props = { const WalletAddress: FC = ({ data }) => { const { balance, - amountStaked, - amountLocked, + stakedAmount, + lockedAmount, reputation, - amountWithdrawable, + withdrawableAmount, } = data; const isWallet = 'totalHMTAmountReceived' in data; @@ -60,9 +60,9 @@ const WalletAddress: FC = ({ data }) => { diff --git a/packages/apps/dashboard/server/src/common/constants/operator.ts b/packages/apps/dashboard/server/src/common/constants/operator.ts index e385f086cc..210518f943 100644 --- a/packages/apps/dashboard/server/src/common/constants/operator.ts +++ b/packages/apps/dashboard/server/src/common/constants/operator.ts @@ -1,3 +1,3 @@ -export const MIN_AMOUNT_STAKED = 1; +export const MIN_STAKED_AMOUNT = 1; export const MAX_LEADERS_COUNT = 100; export const REPUTATION_PLACEHOLDER = 'Not available'; diff --git a/packages/apps/dashboard/server/src/common/enums/operator.ts b/packages/apps/dashboard/server/src/common/enums/operator.ts index 19adba29dd..e56ce9a2fa 100644 --- a/packages/apps/dashboard/server/src/common/enums/operator.ts +++ b/packages/apps/dashboard/server/src/common/enums/operator.ts @@ -1,6 +1,6 @@ export enum OperatorsOrderBy { ROLE = 'role', - AMOUNT_STAKED = 'amountStaked', + STAKED_AMOUNT = 'stakedAmount', REPUTATION = 'reputation', FEE = 'fee', } diff --git a/packages/apps/dashboard/server/src/modules/details/details.service.ts b/packages/apps/dashboard/server/src/modules/details/details.service.ts index 3fa5945529..1982a272a8 100644 --- a/packages/apps/dashboard/server/src/modules/details/details.service.ts +++ b/packages/apps/dashboard/server/src/modules/details/details.service.ts @@ -25,7 +25,7 @@ import { EnvironmentConfigService } from '../../common/config/env-config.service import { NetworkConfigService } from '../../common/config/network-config.service'; import { MAX_LEADERS_COUNT, - MIN_AMOUNT_STAKED, + MIN_STAKED_AMOUNT, REPUTATION_PLACEHOLDER, } from '../../common/constants/operator'; import * as httpUtils from '../../common/utils/http'; @@ -99,9 +99,9 @@ export class DetailsService { operatorDto.chainId = chainId; operatorDto.balance = await this.getHmtBalance(chainId, address); - operatorDto.amountStaked = ethers.formatEther(stakingData.stakedAmount); - operatorDto.amountLocked = ethers.formatEther(stakingData.lockedAmount); - operatorDto.amountWithdrawable = ethers.formatEther( + operatorDto.stakedAmount = ethers.formatEther(stakingData.stakedAmount); + operatorDto.lockedAmount = ethers.formatEther(stakingData.lockedAmount); + operatorDto.withdrawableAmount = ethers.formatEther( stakingData.withdrawableAmount, ); @@ -121,9 +121,9 @@ export class DetailsService { chainId, address, balance: await this.getHmtBalance(chainId, address), - amountStaked: ethers.formatEther(stakingData.stakedAmount), - amountLocked: ethers.formatEther(stakingData.lockedAmount), - amountWithdrawable: ethers.formatEther(stakingData.withdrawableAmount), + stakedAmount: ethers.formatEther(stakingData.stakedAmount), + lockedAmount: ethers.formatEther(stakingData.lockedAmount), + withdrawableAmount: ethers.formatEther(stakingData.withdrawableAmount), reputation: (await this.fetchOperatorReputation(chainId, address)) .reputation, totalHMTAmountReceived: ethers.formatEther( @@ -272,7 +272,7 @@ export class DetailsService { ): IOperatorsFilter { const operatorsFilter: IOperatorsFilter = { chainId, - minAmountStaked: MIN_AMOUNT_STAKED, + minStakedAmount: MIN_STAKED_AMOUNT, roles: [ Role.JobLauncher, Role.ExchangeOracle, diff --git a/packages/apps/dashboard/server/src/modules/details/dto/details-pagination.dto.ts b/packages/apps/dashboard/server/src/modules/details/dto/details-pagination.dto.ts index 912e55a17a..6f6fdf8f0e 100644 --- a/packages/apps/dashboard/server/src/modules/details/dto/details-pagination.dto.ts +++ b/packages/apps/dashboard/server/src/modules/details/dto/details-pagination.dto.ts @@ -23,12 +23,12 @@ export class OperatorsPaginationDto { @ApiPropertyOptional({ enum: OperatorsOrderBy, - default: OperatorsOrderBy.AMOUNT_STAKED, + default: OperatorsOrderBy.STAKED_AMOUNT, }) @IsEnum(OperatorsOrderBy) @IsIn(Object.values(OperatorsOrderBy)) @IsOptional() - public orderBy?: OperatorsOrderBy = OperatorsOrderBy.AMOUNT_STAKED; + public orderBy?: OperatorsOrderBy = OperatorsOrderBy.STAKED_AMOUNT; @ApiPropertyOptional({ enum: OrderDirection, diff --git a/packages/apps/dashboard/server/src/modules/details/dto/operator.dto.ts b/packages/apps/dashboard/server/src/modules/details/dto/operator.dto.ts index 2a89e84065..d4bb4fd93a 100644 --- a/packages/apps/dashboard/server/src/modules/details/dto/operator.dto.ts +++ b/packages/apps/dashboard/server/src/modules/details/dto/operator.dto.ts @@ -36,19 +36,19 @@ export class OperatorDto { @Transform(({ value }) => value?.toString()) @IsString() @Expose() - public amountStaked: string; + public stakedAmount: string; @ApiProperty({ example: '0.07007358932392' }) @Transform(({ value }) => value?.toString()) @IsString() @Expose() - public amountLocked: string; + public lockedAmount: string; @ApiProperty({ example: '0.07007358932392' }) @Transform(({ value }) => value?.toString()) @IsString() @Expose() - public amountWithdrawable: string; + public withdrawableAmount: string; @ApiProperty({ example: 'High' }) @Transform(({ value }) => value?.toString()) @@ -84,6 +84,7 @@ export class OperatorDto { public website?: string; @ApiProperty({ example: 1 }) + @Transform(({ value }) => Number(value)) @IsNumber() @Expose() public amountJobsProcessed: number; diff --git a/packages/apps/dashboard/server/src/modules/details/dto/wallet.dto.ts b/packages/apps/dashboard/server/src/modules/details/dto/wallet.dto.ts index cb18d6fee3..51aff04d41 100644 --- a/packages/apps/dashboard/server/src/modules/details/dto/wallet.dto.ts +++ b/packages/apps/dashboard/server/src/modules/details/dto/wallet.dto.ts @@ -19,12 +19,12 @@ export class WalletDto { @ApiProperty({ example: '0.07007358932392' }) @Transform(({ value }) => value?.toString()) @IsString() - public amountLocked: string; + public lockedAmount: string; @ApiProperty({ example: '0.07007358932392' }) @Transform(({ value }) => value?.toString()) @IsString() - public amountWithdrawable: string; + public withdrawableAmount: string; @ApiProperty({ example: 'High' }) @Transform(({ value }) => value?.toString()) diff --git a/packages/apps/dashboard/server/src/modules/stats/stats.service.ts b/packages/apps/dashboard/server/src/modules/stats/stats.service.ts index 10440c770f..b878ca1375 100644 --- a/packages/apps/dashboard/server/src/modules/stats/stats.service.ts +++ b/packages/apps/dashboard/server/src/modules/stats/stats.service.ts @@ -1,5 +1,4 @@ -import { NETWORKS, StatisticsClient } from '@human-protocol/sdk'; -import { DailyHMTData } from '@human-protocol/sdk/dist/graphql'; +import { IDailyHMT, NETWORKS, StatisticsClient } from '@human-protocol/sdk'; import { HttpService } from '@nestjs/axios'; import { Cache, CACHE_MANAGER } from '@nestjs/cache-manager'; import { Inject, Injectable, OnModuleInit } from '@nestjs/common'; @@ -265,7 +264,7 @@ export class StatsService implements OnModuleInit { } private async isHmtDailyStatsFetched(): Promise { - const data = await this.cacheManager.get( + const data = await this.cacheManager.get( `${HMT_PREFIX}${HMT_STATS_START_DATE}`, ); return !!data; @@ -298,7 +297,7 @@ export class StatsService implements OnModuleInit { operatingNetworks.map(async (network) => { const statisticsClient = new StatisticsClient(NETWORKS[network]); let skip = 0; - let fetchedRecords: DailyHMTData[] = []; + let fetchedRecords: IDailyHMT[] = []; do { fetchedRecords = await statisticsClient.getHMTDailyData({ @@ -310,7 +309,7 @@ export class StatsService implements OnModuleInit { for (const record of fetchedRecords) { const dailyCacheKey = `${HMT_PREFIX}${ - record.timestamp.toISOString().split('T')[0] + new Date(record.timestamp).toISOString().split('T')[0] }`; // Sum daily values diff --git a/packages/apps/fortune/exchange-oracle/server/scripts/setup-kv-store.ts b/packages/apps/fortune/exchange-oracle/server/scripts/setup-kv-store.ts index 8a96dfc4c9..d28014975b 100644 --- a/packages/apps/fortune/exchange-oracle/server/scripts/setup-kv-store.ts +++ b/packages/apps/fortune/exchange-oracle/server/scripts/setup-kv-store.ts @@ -1,6 +1,6 @@ import { KVStoreClient, KVStoreKeys, Role } from '@human-protocol/sdk'; import * as dotenv from 'dotenv'; -import { Wallet, ethers } from 'ethers'; +import { Wallet, ethers, NonceManager } from 'ethers'; import * as Minio from 'minio'; const isLocalEnv = process.env.LOCAL === 'true'; @@ -98,7 +98,8 @@ async function setup(): Promise { } const provider = new ethers.JsonRpcProvider(RPC_URL); - const wallet = new Wallet(WEB3_PRIVATE_KEY, provider); + const baseWallet = new Wallet(WEB3_PRIVATE_KEY, provider); + const wallet = new NonceManager(baseWallet); const kvStoreClient = await KVStoreClient.build(wallet); diff --git a/packages/apps/fortune/exchange-oracle/server/scripts/setup-staking.ts b/packages/apps/fortune/exchange-oracle/server/scripts/setup-staking.ts index 8d266da004..95e5baacca 100644 --- a/packages/apps/fortune/exchange-oracle/server/scripts/setup-staking.ts +++ b/packages/apps/fortune/exchange-oracle/server/scripts/setup-staking.ts @@ -6,7 +6,7 @@ import { } from '@human-protocol/sdk'; import { HMToken__factory } from '@human-protocol/core/typechain-types'; import * as dotenv from 'dotenv'; -import { Wallet, ethers } from 'ethers'; +import { Wallet, ethers, NonceManager } from 'ethers'; dotenv.config({ path: '.env.local' }); @@ -26,7 +26,8 @@ export async function setup(): Promise { const { hmtAddress: hmtTokenAddress, stakingAddress } = NETWORKS[ ChainId.LOCALHOST ] as NetworkData; - const wallet = new Wallet(WEB3_PRIVATE_KEY, provider); + const baseWallet = new Wallet(WEB3_PRIVATE_KEY, provider); + const wallet = new NonceManager(baseWallet); const hmtContract = HMToken__factory.connect(hmtTokenAddress, wallet); const hmtTx = await hmtContract.approve(stakingAddress, 1); diff --git a/packages/apps/fortune/exchange-oracle/server/src/common/enums/webhook.ts b/packages/apps/fortune/exchange-oracle/server/src/common/enums/webhook.ts index b87d0e0475..d75672c8ca 100644 --- a/packages/apps/fortune/exchange-oracle/server/src/common/enums/webhook.ts +++ b/packages/apps/fortune/exchange-oracle/server/src/common/enums/webhook.ts @@ -6,7 +6,7 @@ export enum EventType { SUBMISSION_REJECTED = 'submission_rejected', SUBMISSION_IN_REVIEW = 'submission_in_review', ABUSE_DETECTED = 'abuse_detected', - ABUSE_DISMISSED = 'abuse_dismissed', + CANCELLATION_REQUESTED = 'cancellation_requested', } export enum WebhookStatus { diff --git a/packages/apps/fortune/exchange-oracle/server/src/database/migrations/1754660427175-EscrowCancellation.ts b/packages/apps/fortune/exchange-oracle/server/src/database/migrations/1754660427175-EscrowCancellation.ts new file mode 100644 index 0000000000..01c6c9b031 --- /dev/null +++ b/packages/apps/fortune/exchange-oracle/server/src/database/migrations/1754660427175-EscrowCancellation.ts @@ -0,0 +1,58 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class EscrowCancellation1754660427175 implements MigrationInterface { + name = 'EscrowCancellation1754660427175'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + ALTER TYPE "hmt"."webhooks_event_type_enum" + RENAME TO "webhooks_event_type_enum_old" + `); + await queryRunner.query(` + CREATE TYPE "hmt"."webhooks_event_type_enum" AS ENUM( + 'escrow_created', + 'escrow_completed', + 'escrow_canceled', + 'escrow_failed', + 'submission_rejected', + 'submission_in_review', + 'abuse_detected', + 'abuse_dismissed', + 'cancellation_requested' + ) + `); + await queryRunner.query(` + ALTER TABLE "hmt"."webhooks" + ALTER COLUMN "event_type" TYPE "hmt"."webhooks_event_type_enum" USING "event_type"::"text"::"hmt"."webhooks_event_type_enum" + `); + await queryRunner.query(` + DROP TYPE "hmt"."webhooks_event_type_enum_old" + `); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + CREATE TYPE "hmt"."webhooks_event_type_enum_old" AS ENUM( + 'escrow_created', + 'escrow_completed', + 'escrow_canceled', + 'escrow_failed', + 'submission_rejected', + 'submission_in_review', + 'abuse_detected', + 'abuse_dismissed' + ) + `); + await queryRunner.query(` + ALTER TABLE "hmt"."webhooks" + ALTER COLUMN "event_type" TYPE "hmt"."webhooks_event_type_enum_old" USING "event_type"::"text"::"hmt"."webhooks_event_type_enum_old" + `); + await queryRunner.query(` + DROP TYPE "hmt"."webhooks_event_type_enum" + `); + await queryRunner.query(` + ALTER TYPE "hmt"."webhooks_event_type_enum_old" + RENAME TO "webhooks_event_type_enum" + `); + } +} diff --git a/packages/apps/fortune/exchange-oracle/server/src/modules/webhook/webhook.service.spec.ts b/packages/apps/fortune/exchange-oracle/server/src/modules/webhook/webhook.service.spec.ts index dc445214b6..fd0565bdb7 100644 --- a/packages/apps/fortune/exchange-oracle/server/src/modules/webhook/webhook.service.spec.ts +++ b/packages/apps/fortune/exchange-oracle/server/src/modules/webhook/webhook.service.spec.ts @@ -143,12 +143,12 @@ describe('WebhookService', () => { expect(jobService.createJob).toHaveBeenCalledWith(webhook); }); - it('should handle an incoming escrow canceled webhook', async () => { + it('should handle an incoming cancellation request webhook', async () => { jest.spyOn(jobService, 'cancelJob').mockResolvedValue(); const webhook: WebhookDto = { chainId, escrowAddress, - eventType: EventType.ESCROW_CANCELED, + eventType: EventType.CANCELLATION_REQUESTED, }; expect(await webhookService.handleWebhook(webhook)).toBe(undefined); expect(jobService.cancelJob).toHaveBeenCalledWith(webhook); @@ -313,6 +313,24 @@ describe('WebhookService', () => { ), ).rejects.toThrow(new NotFoundError('Oracle not found')); }); + + it('should throw NotFoundError if webhook url is not found', async () => { + (EscrowClient.build as any).mockImplementation(() => ({ + getJobLauncherAddress: jest.fn().mockResolvedValue(MOCK_ADDRESS), + })); + + (OperatorUtils.getOperator as any).mockResolvedValue({ + webhookUrl: null, + }); + + await expect( + (webhookService as any).getOracleWebhookUrl( + JOB_LAUNCHER_WEBHOOK_URL, + ChainId.LOCALHOST, + EventType.ESCROW_FAILED, + ), + ).rejects.toThrow(new NotFoundError('Oracle webhook URL not found')); + }); }); describe('handleWebhookError', () => { diff --git a/packages/apps/fortune/exchange-oracle/server/src/modules/webhook/webhook.service.ts b/packages/apps/fortune/exchange-oracle/server/src/modules/webhook/webhook.service.ts index c751ffd89e..e0017a0ef0 100644 --- a/packages/apps/fortune/exchange-oracle/server/src/modules/webhook/webhook.service.ts +++ b/packages/apps/fortune/exchange-oracle/server/src/modules/webhook/webhook.service.ts @@ -45,7 +45,7 @@ export class WebhookService { await this.jobService.completeJob(webhook); break; - case EventType.ESCROW_CANCELED: + case EventType.CANCELLATION_REQUESTED: await this.jobService.cancelJob(webhook); break; @@ -56,6 +56,10 @@ export class WebhookService { case EventType.ABUSE_DETECTED: await this.jobService.cancelJob(webhook); break; + + case EventType.ESCROW_CANCELED: + return; + default: throw new ValidationError( `Invalid webhook event type: ${webhook.eventType}`, @@ -176,8 +180,10 @@ export class WebhookService { if (!oracle) { throw new NotFoundError('Oracle not found'); } - const oracleWebhookUrl = oracle.webhookUrl; + if (!oracle.webhookUrl) { + throw new NotFoundError('Oracle webhook URL not found'); + } - return oracleWebhookUrl; + return oracle.webhookUrl; } } diff --git a/packages/apps/fortune/recording-oracle/scripts/setup-kv-store.ts b/packages/apps/fortune/recording-oracle/scripts/setup-kv-store.ts index 832a23589d..870810aeeb 100644 --- a/packages/apps/fortune/recording-oracle/scripts/setup-kv-store.ts +++ b/packages/apps/fortune/recording-oracle/scripts/setup-kv-store.ts @@ -1,7 +1,7 @@ /* eslint-disable no-console */ import { KVStoreClient, KVStoreKeys, Role } from '@human-protocol/sdk'; import * as dotenv from 'dotenv'; -import { Wallet, ethers } from 'ethers'; +import { Wallet, ethers, NonceManager } from 'ethers'; import * as Minio from 'minio'; const isLocalEnv = process.env.LOCAL === 'true'; @@ -99,7 +99,8 @@ async function setup(): Promise { } const provider = new ethers.JsonRpcProvider(RPC_URL); - const wallet = new Wallet(WEB3_PRIVATE_KEY, provider); + const baseWallet = new Wallet(WEB3_PRIVATE_KEY, provider); + const wallet = new NonceManager(baseWallet); const kvStoreClient = await KVStoreClient.build(wallet); diff --git a/packages/apps/fortune/recording-oracle/scripts/setup-staking.ts b/packages/apps/fortune/recording-oracle/scripts/setup-staking.ts index 8d266da004..95e5baacca 100644 --- a/packages/apps/fortune/recording-oracle/scripts/setup-staking.ts +++ b/packages/apps/fortune/recording-oracle/scripts/setup-staking.ts @@ -6,7 +6,7 @@ import { } from '@human-protocol/sdk'; import { HMToken__factory } from '@human-protocol/core/typechain-types'; import * as dotenv from 'dotenv'; -import { Wallet, ethers } from 'ethers'; +import { Wallet, ethers, NonceManager } from 'ethers'; dotenv.config({ path: '.env.local' }); @@ -26,7 +26,8 @@ export async function setup(): Promise { const { hmtAddress: hmtTokenAddress, stakingAddress } = NETWORKS[ ChainId.LOCALHOST ] as NetworkData; - const wallet = new Wallet(WEB3_PRIVATE_KEY, provider); + const baseWallet = new Wallet(WEB3_PRIVATE_KEY, provider); + const wallet = new NonceManager(baseWallet); const hmtContract = HMToken__factory.connect(hmtTokenAddress, wallet); const hmtTx = await hmtContract.approve(stakingAddress, 1); diff --git a/packages/apps/fortune/recording-oracle/src/common/config/network-config.service.ts b/packages/apps/fortune/recording-oracle/src/common/config/network-config.service.ts index 798271b61c..ca9d322456 100644 --- a/packages/apps/fortune/recording-oracle/src/common/config/network-config.service.ts +++ b/packages/apps/fortune/recording-oracle/src/common/config/network-config.service.ts @@ -63,7 +63,7 @@ export class NetworkConfigService { }, }), ...(this.configService.get('RPC_URL_AURORA_TESTNET') && { - bsctest: { + auroratest: { chainId: ChainId.AURORA_TESTNET, /** * The RPC URL for the AURORA Testnet network. diff --git a/packages/apps/fortune/recording-oracle/src/common/enums/webhook.ts b/packages/apps/fortune/recording-oracle/src/common/enums/webhook.ts index b2167213f0..fe660431da 100644 --- a/packages/apps/fortune/recording-oracle/src/common/enums/webhook.ts +++ b/packages/apps/fortune/recording-oracle/src/common/enums/webhook.ts @@ -1,6 +1,8 @@ export enum EventType { ESCROW_COMPLETED = 'escrow_completed', + CANCELLATION_REQUESTED = 'cancellation_requested', JOB_COMPLETED = 'job_completed', + JOB_CANCELED = 'job_canceled', SUBMISSION_REJECTED = 'submission_rejected', SUBMISSION_IN_REVIEW = 'submission_in_review', } diff --git a/packages/apps/fortune/recording-oracle/src/modules/job/job.service.spec.ts b/packages/apps/fortune/recording-oracle/src/modules/job/job.service.spec.ts index f425cb9ab5..6f36cd7353 100644 --- a/packages/apps/fortune/recording-oracle/src/modules/job/job.service.spec.ts +++ b/packages/apps/fortune/recording-oracle/src/modules/job/job.service.spec.ts @@ -35,6 +35,7 @@ import { StorageService } from '../storage/storage.service'; import { Web3Service } from '../web3/web3.service'; import { WebhookDto } from '../webhook/webhook.dto'; import { JobService } from './job.service'; +import { HMToken__factory } from '@human-protocol/core/typechain-types'; jest.mock('minio', () => { class Client { @@ -131,6 +132,13 @@ describe('JobService', () => { }); describe('processJobSolution', () => { + beforeAll(() => { + const decimalsMock = jest.fn().mockResolvedValue(18); + const tokenContractMock = { decimals: decimalsMock }; + jest + .spyOn(HMToken__factory, 'connect') + .mockReturnValue(tokenContractMock as any); + }); afterEach(() => { jest.clearAllMocks(); }); @@ -311,6 +319,7 @@ describe('JobService', () => { .fn() .mockResolvedValue('http://example.com/results'), storeResults: jest.fn().mockResolvedValue(true), + getTokenAddress: jest.fn().mockResolvedValue(MOCK_ADDRESS), }; (EscrowClient.build as jest.Mock).mockResolvedValue(escrowClient); @@ -365,6 +374,7 @@ describe('JobService', () => { getManifest: jest.fn().mockResolvedValue('http://example.com/manifest'), getIntermediateResultsUrl: jest.fn().mockResolvedValue(''), storeResults: jest.fn().mockResolvedValue(true), + getTokenAddress: jest.fn().mockResolvedValue(MOCK_ADDRESS), }; (EscrowClient.build as jest.Mock).mockResolvedValue(escrowClient); @@ -421,6 +431,7 @@ describe('JobService', () => { .fn() .mockResolvedValue('http://existing-solutions'), storeResults: jest.fn().mockResolvedValue(true), + getTokenAddress: jest.fn().mockResolvedValue(MOCK_ADDRESS), }; (EscrowClient.build as jest.Mock).mockResolvedValue(escrowClient); @@ -499,6 +510,7 @@ describe('JobService', () => { .fn() .mockResolvedValue('http://existing-solutions'), storeResults: jest.fn().mockResolvedValue(true), + getTokenAddress: jest.fn().mockResolvedValue(MOCK_ADDRESS), }; (EscrowClient.build as jest.Mock).mockResolvedValue(escrowClient); @@ -589,6 +601,7 @@ describe('JobService', () => { .fn() .mockResolvedValue('http://existing-solutions'), storeResults: jest.fn().mockResolvedValue(true), + getTokenAddress: jest.fn().mockResolvedValue(MOCK_ADDRESS), }; (EscrowClient.build as jest.Mock).mockResolvedValue(escrowClient); KVStoreUtils.get = jest @@ -671,6 +684,7 @@ describe('JobService', () => { .fn() .mockResolvedValue('http://existing-solutions'), storeResults: jest.fn().mockResolvedValue(true), + getTokenAddress: jest.fn().mockResolvedValue(MOCK_ADDRESS), }; (EscrowClient.build as jest.Mock).mockResolvedValue(escrowClient); KVStoreUtils.get = jest diff --git a/packages/apps/fortune/recording-oracle/src/modules/job/job.service.ts b/packages/apps/fortune/recording-oracle/src/modules/job/job.service.ts index 687dc91c89..830703c2c2 100644 --- a/packages/apps/fortune/recording-oracle/src/modules/job/job.service.ts +++ b/packages/apps/fortune/recording-oracle/src/modules/job/job.service.ts @@ -25,6 +25,7 @@ import { SolutionEventData, WebhookDto, } from '../webhook/webhook.dto'; +import { HMToken__factory } from '@human-protocol/core/typechain-types'; @Injectable() export class JobService { @@ -120,7 +121,7 @@ export class JobService { } const manifestUrl = await escrowClient.getManifest(webhook.escrowAddress); - const { submissionsRequired, requestType }: IManifest = + const { submissionsRequired, requestType, fundAmount }: IManifest = await this.storageService.download(manifestUrl); if (!submissionsRequired || !requestType) { @@ -177,10 +178,30 @@ export class JobService { recordingOracleSolutions, ); + const lastExchangeSolution = + exchangeJobSolutions[exchangeJobSolutions.length - 1]; + const lastProcessedSolution = recordingOracleSolutions.find( + (s) => + s.workerAddress === lastExchangeSolution.workerAddress && + s.solution === lastExchangeSolution.solution, + ); + + const tokenAddress = await escrowClient.getTokenAddress( + webhook.escrowAddress, + ); + const tokenContract = HMToken__factory.connect( + tokenAddress, + this.web3Service.getSigner(webhook.chainId), + ); + const decimals = await tokenContract.decimals(); + const fundAmountInWei = ethers.parseUnits(fundAmount.toString(), decimals); + const amountToReserve = fundAmountInWei / BigInt(submissionsRequired); + await escrowClient.storeResults( webhook.escrowAddress, jobSolutionUploaded.url, jobSolutionUploaded.hash, + !lastProcessedSolution?.error ? amountToReserve : 0n, ); if ( @@ -254,4 +275,65 @@ export class JobService { return 'Solutions recorded.'; } + + public async cancelJob(webhook: WebhookDto): Promise { + const signer = this.web3Service.getSigner(webhook.chainId); + const escrowClient = await EscrowClient.build(signer); + + const recordingOracleAddress = await escrowClient.getRecordingOracleAddress( + webhook.escrowAddress, + ); + if ( + ethers.getAddress(recordingOracleAddress) !== (await signer.getAddress()) + ) { + this.logger.error(ErrorJob.AddressMismatches, JobService.name); + throw new ValidationError(ErrorJob.AddressMismatches); + } + + const escrowStatus = await escrowClient.getStatus(webhook.escrowAddress); + if (escrowStatus !== EscrowStatus.ToCancel) { + this.logger.error(ErrorJob.InvalidStatus, JobService.name); + throw new ConflictError(ErrorJob.InvalidStatus); + } + + const intermediateResultsURL = await escrowClient.getIntermediateResultsUrl( + webhook.escrowAddress, + ); + const intermediateResultsHash = + await escrowClient.getIntermediateResultsHash(webhook.escrowAddress); + + await escrowClient.storeResults( + webhook.escrowAddress, + intermediateResultsURL, + intermediateResultsHash, + 0n, + ); + + let reputationOracleWebhook: string | null = null; + try { + const reputationOracleAddress = + await escrowClient.getReputationOracleAddress(webhook.escrowAddress); + reputationOracleWebhook = (await KVStoreUtils.get( + webhook.chainId, + reputationOracleAddress, + KVStoreKeys.webhookUrl, + )) as string; + } catch (e) { + //Ignore the error + } + + if (reputationOracleWebhook) { + await sendWebhook( + this.httpService, + reputationOracleWebhook, + { + chainId: webhook.chainId, + escrowAddress: webhook.escrowAddress, + eventType: EventType.JOB_CANCELED, + }, + this.web3ConfigService.privateKey, + ); + return 'The requested job is canceled.'; + } + } } diff --git a/packages/apps/fortune/recording-oracle/src/modules/webhook/webhook.service.ts b/packages/apps/fortune/recording-oracle/src/modules/webhook/webhook.service.ts index 7c8a72dce2..488639a806 100644 --- a/packages/apps/fortune/recording-oracle/src/modules/webhook/webhook.service.ts +++ b/packages/apps/fortune/recording-oracle/src/modules/webhook/webhook.service.ts @@ -18,6 +18,10 @@ export class WebhookService { await this.jobService.processJobSolution(wehbook); break; + case EventType.CANCELLATION_REQUESTED: + await this.jobService.cancelJob(wehbook); + break; + default: throw new ValidationError( `Invalid webhook event type: ${wehbook.eventType}`, diff --git a/packages/apps/human-app/frontend/src/shared/components/data-entry/multi-select.tsx b/packages/apps/human-app/frontend/src/shared/components/data-entry/multi-select.tsx index b3c64d370b..eec4cc663d 100644 --- a/packages/apps/human-app/frontend/src/shared/components/data-entry/multi-select.tsx +++ b/packages/apps/human-app/frontend/src/shared/components/data-entry/multi-select.tsx @@ -115,7 +115,6 @@ export function MultiSelect({ return ( { return ( diff --git a/packages/apps/human-app/server/src/modules/oracle-discovery/model/oracle-discovery.model.ts b/packages/apps/human-app/server/src/modules/oracle-discovery/model/oracle-discovery.model.ts index e7269b49f0..5d5ad71871 100644 --- a/packages/apps/human-app/server/src/modules/oracle-discovery/model/oracle-discovery.model.ts +++ b/packages/apps/human-app/server/src/modules/oracle-discovery/model/oracle-discovery.model.ts @@ -1,4 +1,4 @@ -import { ChainId, IOperator } from '@human-protocol/sdk'; +import { ChainId } from '@human-protocol/sdk'; import { AutoMap } from '@automapper/classes'; import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { IsArray, IsOptional } from 'class-validator'; @@ -8,28 +8,27 @@ type DiscoveredOracleCreateProps = { id: string; address: string; chainId: ChainId; - amountStaked: bigint; - amountLocked: bigint; - lockedUntilTimestamp: bigint; - amountWithdrawn: bigint; - amountSlashed: bigint; - reward: bigint; - amountJobsProcessed: bigint; - role?: string; - fee?: bigint; - publicKey?: string; - webhookUrl?: string; - website?: string; + stakedAmount: bigint | null; + lockedAmount: bigint | null; + lockedUntilTimestamp: number | null; + withdrawnAmount: bigint | null; + slashedAmount: bigint | null; + amountJobsProcessed: bigint | null; + role: string; + fee: bigint | null; + publicKey: string | null; + webhookUrl: string | null; + website: string | null; url: string; - jobTypes: string[]; - registrationNeeded?: boolean; - registrationInstructions?: string; - reputationNetworks?: string[]; - name?: string; - category?: string; + jobTypes: string[] | null; + registrationNeeded: boolean | null; + registrationInstructions: string | null; + reputationNetworks: string[]; + name: string; + category: string | null; }; -export class DiscoveredOracle implements IOperator { +export class DiscoveredOracle { @ApiProperty({ description: 'Unique identifier of the oracle operator' }) id: string; @@ -39,26 +38,31 @@ export class DiscoveredOracle implements IOperator { @ApiProperty({ description: 'Chain ID where the oracle is registered' }) chainId: ChainId; - @ApiProperty({ description: 'Amount staked by the operator' }) - amountStaked: bigint; + @ApiPropertyOptional({ description: 'Amount staked by the operator' }) + stakedAmount?: string; - @ApiProperty({ description: 'Amount currently locked by the operator' }) - amountLocked: bigint; - - @ApiProperty({ description: 'Timestamp until funds are locked' }) - lockedUntilTimestamp: bigint; + @ApiPropertyOptional({ + description: 'Amount currently locked by the operator', + }) + lockedAmount?: string; - @ApiProperty({ description: 'Total amount withdrawn by the operator' }) - amountWithdrawn: bigint; + @ApiPropertyOptional({ description: 'Timestamp until funds are locked' }) + lockedUntilTimestamp?: string; - @ApiProperty({ description: 'Total amount slashed from the operator' }) - amountSlashed: bigint; + @ApiPropertyOptional({ + description: 'Total amount withdrawn by the operator', + }) + withdrawnAmount?: string; - @ApiProperty({ description: 'Total reward earned by the operator' }) - reward: bigint; + @ApiPropertyOptional({ + description: 'Total amount slashed from the operator', + }) + slashedAmount?: string; - @ApiProperty({ description: 'Number of jobs processed by the operator' }) - amountJobsProcessed: bigint; + @ApiPropertyOptional({ + description: 'Number of jobs processed by the operator', + }) + amountJobsProcessed?: string; @ApiPropertyOptional({ description: 'Fee charged by the operator' }) fee?: bigint; @@ -85,7 +89,7 @@ export class DiscoveredOracle implements IOperator { jobTypes: string[]; @ApiPropertyOptional({ description: 'Indicates if registration is needed' }) - registrationNeeded: boolean; + registrationNeeded?: boolean; @ApiPropertyOptional({ description: 'Instructions for registration, if needed', @@ -111,8 +115,27 @@ export class DiscoveredOracle implements IOperator { executionsToSkip = 0; constructor(props: DiscoveredOracleCreateProps) { - Object.assign(this, props); - this.registrationNeeded = props.registrationNeeded || false; + this.id = props.id; + this.address = props.address; + this.chainId = props.chainId; + this.registrationNeeded = props.registrationNeeded ?? undefined; + this.role = props.role; + this.url = props.url; + this.name = props.name; + this.fee = props.fee ?? undefined; + this.publicKey = props.publicKey ?? undefined; + this.webhookUrl = props.webhookUrl ?? undefined; + this.website = props.website ?? undefined; + this.category = props.category ?? undefined; + this.registrationInstructions = props.registrationInstructions ?? undefined; + this.jobTypes = props.jobTypes ?? []; + this.reputationNetworks = props.reputationNetworks ?? undefined; + this.stakedAmount = props.stakedAmount?.toString(); + this.lockedAmount = props.lockedAmount?.toString(); + this.withdrawnAmount = props.withdrawnAmount?.toString(); + this.slashedAmount = props.slashedAmount?.toString(); + this.amountJobsProcessed = props.amountJobsProcessed?.toString(); + this.lockedUntilTimestamp = props.lockedUntilTimestamp?.toString(); } } diff --git a/packages/apps/human-app/server/src/modules/oracle-discovery/oracle-discovery.controller.ts b/packages/apps/human-app/server/src/modules/oracle-discovery/oracle-discovery.controller.ts index d0584d2635..64a8b169c3 100644 --- a/packages/apps/human-app/server/src/modules/oracle-discovery/oracle-discovery.controller.ts +++ b/packages/apps/human-app/server/src/modules/oracle-discovery/oracle-discovery.controller.ts @@ -55,19 +55,24 @@ export class OracleDiscoveryController { id: 'thisrty-oracle', address: process.env.THIRSTYFI_ORACLE_ADDRESS ?? '', chainId: ChainId.POLYGON, - amountStaked: '0' as any, - amountLocked: '0' as any, - lockedUntilTimestamp: '0' as any, - amountWithdrawn: '0' as any, - amountSlashed: '0' as any, - reward: '0' as any, - amountJobsProcessed: '0' as any, + stakedAmount: 0n, + lockedAmount: 0n, + lockedUntilTimestamp: 0, + withdrawnAmount: 0n, + slashedAmount: 0n, + amountJobsProcessed: 0n, role: 'exchange_oracle', url: ' ', jobTypes: ['thirstyfi'], name: 'ThirstyFi', registrationNeeded: false, - // registrationInstructions: 'https://www.thisrty.com/', + registrationInstructions: null, + publicKey: null, + webhookUrl: null, + website: null, + fee: null, + reputationNetworks: [], + category: null, }); oracles.push(thisrtyOracle); diff --git a/packages/apps/human-app/server/src/modules/oracle-discovery/oracle-discovery.service.ts b/packages/apps/human-app/server/src/modules/oracle-discovery/oracle-discovery.service.ts index b8fdc0b6d7..c7e93ee143 100644 --- a/packages/apps/human-app/server/src/modules/oracle-discovery/oracle-discovery.service.ts +++ b/packages/apps/human-app/server/src/modules/oracle-discovery/oracle-discovery.service.ts @@ -93,20 +93,25 @@ export class OracleDiscoveryService { new DiscoveredOracle({ id: exchangeOracle.id, address: exchangeOracle.address, - name: exchangeOracle.name, - role: exchangeOracle.role, - url: exchangeOracle.url, - jobTypes: exchangeOracle.jobTypes, + name: exchangeOracle.name as string, + role: exchangeOracle.role as string, + url: exchangeOracle.url as string, + jobTypes: exchangeOracle.jobTypes as string[], registrationNeeded: exchangeOracle.registrationNeeded, registrationInstructions: exchangeOracle.registrationInstructions, chainId, - amountStaked: exchangeOracle.amountStaked, - amountLocked: exchangeOracle.amountLocked, - amountWithdrawn: exchangeOracle.amountWithdrawn, - amountSlashed: exchangeOracle.amountSlashed, + stakedAmount: exchangeOracle.stakedAmount, + lockedAmount: exchangeOracle.lockedAmount, + withdrawnAmount: exchangeOracle.withdrawnAmount, + slashedAmount: exchangeOracle.slashedAmount, amountJobsProcessed: exchangeOracle.amountJobsProcessed, - reward: exchangeOracle.reward, lockedUntilTimestamp: exchangeOracle.lockedUntilTimestamp, + fee: exchangeOracle.fee, + publicKey: exchangeOracle.publicKey, + webhookUrl: exchangeOracle.webhookUrl, + website: exchangeOracle.website, + reputationNetworks: exchangeOracle.reputationNetworks, + category: exchangeOracle.category, }), ); } @@ -131,7 +136,7 @@ export class OracleDiscoveryService { static checkExpectationsOfDiscoveredOracle( operator: IOperator, possibleJobTypes: string[], - ): operator is DiscoveredOracle { + ): boolean { if (!operator.url || !operator.name || !operator.role) { return false; } diff --git a/packages/apps/human-app/server/src/modules/oracle-discovery/spec/oracle-discovery.fixture.ts b/packages/apps/human-app/server/src/modules/oracle-discovery/spec/oracle-discovery.fixture.ts index 61aa375ee6..de9ca168c8 100644 --- a/packages/apps/human-app/server/src/modules/oracle-discovery/spec/oracle-discovery.fixture.ts +++ b/packages/apps/human-app/server/src/modules/oracle-discovery/spec/oracle-discovery.fixture.ts @@ -16,13 +16,12 @@ export const response1: DiscoveredOracle = { executionsToSkip: 0, registrationNeeded: true, registrationInstructions: 'https://instructions.com', - amountStaked: BigInt(0), - amountLocked: BigInt(0), - lockedUntilTimestamp: BigInt(0), - amountWithdrawn: BigInt(0), - amountSlashed: BigInt(0), - reward: BigInt(0), - amountJobsProcessed: BigInt(0), + stakedAmount: '0', + lockedAmount: '0', + lockedUntilTimestamp: '0', + withdrawnAmount: '0', + slashedAmount: '0', + amountJobsProcessed: '0', }; export const response2: DiscoveredOracle = { @@ -37,13 +36,12 @@ export const response2: DiscoveredOracle = { executionsToSkip: 0, registrationNeeded: false, registrationInstructions: undefined, - amountStaked: BigInt(0), - amountLocked: BigInt(0), - lockedUntilTimestamp: BigInt(0), - amountWithdrawn: BigInt(0), - amountSlashed: BigInt(0), - reward: BigInt(0), - amountJobsProcessed: BigInt(0), + stakedAmount: '0', + lockedAmount: '0', + lockedUntilTimestamp: '0', + withdrawnAmount: '0', + slashedAmount: '0', + amountJobsProcessed: '0', }; export const response3: DiscoveredOracle = { @@ -58,13 +56,12 @@ export const response3: DiscoveredOracle = { executionsToSkip: 0, registrationNeeded: false, registrationInstructions: undefined, - amountStaked: BigInt(0), - amountLocked: BigInt(0), - lockedUntilTimestamp: BigInt(0), - amountWithdrawn: BigInt(0), - amountSlashed: BigInt(0), - reward: BigInt(0), - amountJobsProcessed: BigInt(0), + stakedAmount: '0', + lockedAmount: '0', + lockedUntilTimestamp: '0', + withdrawnAmount: '0', + slashedAmount: '0', + amountJobsProcessed: '0', }; export const response4: DiscoveredOracle = { @@ -79,13 +76,12 @@ export const response4: DiscoveredOracle = { executionsToSkip: 0, registrationNeeded: false, registrationInstructions: undefined, - amountStaked: BigInt(0), - amountLocked: BigInt(0), - lockedUntilTimestamp: BigInt(0), - amountWithdrawn: BigInt(0), - amountSlashed: BigInt(0), - reward: BigInt(0), - amountJobsProcessed: BigInt(0), + stakedAmount: '0', + lockedAmount: '0', + lockedUntilTimestamp: '0', + withdrawnAmount: '0', + slashedAmount: '0', + amountJobsProcessed: '0', }; export function generateGetReputationNetworkOperatorsResponseByChainId( diff --git a/packages/apps/human-app/server/src/modules/oracle-discovery/spec/oracle-discovery.service.spec.ts b/packages/apps/human-app/server/src/modules/oracle-discovery/spec/oracle-discovery.service.spec.ts index 8817fb1f22..e9f80836e7 100644 --- a/packages/apps/human-app/server/src/modules/oracle-discovery/spec/oracle-discovery.service.spec.ts +++ b/packages/apps/human-app/server/src/modules/oracle-discovery/spec/oracle-discovery.service.spec.ts @@ -110,7 +110,9 @@ describe('OracleDiscoveryService', () => { jest .spyOn(OperatorUtils, 'getReputationNetworkOperators') .mockResolvedValueOnce( - generateGetReputationNetworkOperatorsResponseByChainId(chainId), + generateGetReputationNetworkOperatorsResponseByChainId( + chainId, + ) as any, ); }); @@ -137,7 +139,9 @@ describe('OracleDiscoveryService', () => { jest .spyOn(OperatorUtils, 'getReputationNetworkOperators') .mockResolvedValueOnce( - generateGetReputationNetworkOperatorsResponseByChainId(chainId), + generateGetReputationNetworkOperatorsResponseByChainId( + chainId, + ) as any, ); }); @@ -154,7 +158,9 @@ describe('OracleDiscoveryService', () => { jest .spyOn(OperatorUtils, 'getReputationNetworkOperators') .mockResolvedValueOnce( - generateGetReputationNetworkOperatorsResponseByChainId(chainId), + generateGetReputationNetworkOperatorsResponseByChainId( + chainId, + ) as any, ); }); @@ -210,7 +216,9 @@ describe('OracleDiscoveryService', () => { jest .spyOn(OperatorUtils, 'getReputationNetworkOperators') .mockResolvedValueOnce( - generateGetReputationNetworkOperatorsResponseByChainId(chainId), + generateGetReputationNetworkOperatorsResponseByChainId( + chainId, + ) as any, ); }); diff --git a/packages/apps/job-launcher/client/src/components/Jobs/Create/CreateJob.tsx b/packages/apps/job-launcher/client/src/components/Jobs/Create/CreateJob.tsx index 9907c08ee1..508b617fca 100644 --- a/packages/apps/job-launcher/client/src/components/Jobs/Create/CreateJob.tsx +++ b/packages/apps/job-launcher/client/src/components/Jobs/Create/CreateJob.tsx @@ -65,7 +65,7 @@ export const CreateJob = () => { {!IS_MAINNET && ( Fortune )} - CVAT + {!IS_MAINNET && CVAT} {/* {!IS_MAINNET && ( hCaptcha )} */} diff --git a/packages/apps/job-launcher/server/package.json b/packages/apps/job-launcher/server/package.json index d573b27d0c..ba9d0fba31 100644 --- a/packages/apps/job-launcher/server/package.json +++ b/packages/apps/job-launcher/server/package.json @@ -74,7 +74,7 @@ "zxcvbn": "^4.4.2" }, "devDependencies": { - "@faker-js/faker": "^9.5.0", + "@faker-js/faker": "^9.8.0", "@golevelup/ts-jest": "^0.6.1", "@nestjs/cli": "^10.3.2", "@nestjs/schematics": "^11.0.2", diff --git a/packages/apps/job-launcher/server/scripts/setup-kv-store.ts b/packages/apps/job-launcher/server/scripts/setup-kv-store.ts index c2e0a89434..63a790a62c 100644 --- a/packages/apps/job-launcher/server/scripts/setup-kv-store.ts +++ b/packages/apps/job-launcher/server/scripts/setup-kv-store.ts @@ -1,6 +1,6 @@ import { KVStoreClient, KVStoreKeys, Role } from '@human-protocol/sdk'; import * as dotenv from 'dotenv'; -import { Wallet, ethers } from 'ethers'; +import { Wallet, ethers, NonceManager } from 'ethers'; import * as Minio from 'minio'; const isLocalEnv = process.env.LOCAL === 'true'; @@ -105,7 +105,8 @@ async function setup(): Promise { } const provider = new ethers.JsonRpcProvider(RPC_URL); - const wallet = new Wallet(WEB3_PRIVATE_KEY, provider); + const baseWallet = new Wallet(WEB3_PRIVATE_KEY, provider); + const wallet = new NonceManager(baseWallet); const kvStoreClient = await KVStoreClient.build(wallet); diff --git a/packages/apps/job-launcher/server/scripts/setup-staking.ts b/packages/apps/job-launcher/server/scripts/setup-staking.ts index 8d266da004..bd22c8c3ef 100644 --- a/packages/apps/job-launcher/server/scripts/setup-staking.ts +++ b/packages/apps/job-launcher/server/scripts/setup-staking.ts @@ -6,7 +6,7 @@ import { } from '@human-protocol/sdk'; import { HMToken__factory } from '@human-protocol/core/typechain-types'; import * as dotenv from 'dotenv'; -import { Wallet, ethers } from 'ethers'; +import { Wallet, ethers, NonceManager } from 'ethers'; dotenv.config({ path: '.env.local' }); @@ -26,11 +26,12 @@ export async function setup(): Promise { const { hmtAddress: hmtTokenAddress, stakingAddress } = NETWORKS[ ChainId.LOCALHOST ] as NetworkData; - const wallet = new Wallet(WEB3_PRIVATE_KEY, provider); + const baseWallet = new Wallet(WEB3_PRIVATE_KEY, provider); + const wallet = new NonceManager(baseWallet); const hmtContract = HMToken__factory.connect(hmtTokenAddress, wallet); const hmtTx = await hmtContract.approve(stakingAddress, 1); - await hmtTx.wait(); + await hmtTx.wait(1); const stakingClient = await StakingClient.build(wallet); await stakingClient.stake(BigInt(1)); diff --git a/packages/apps/job-launcher/server/src/common/constants/errors.ts b/packages/apps/job-launcher/server/src/common/constants/errors.ts index efe67a530a..a12a28d52a 100644 --- a/packages/apps/job-launcher/server/src/common/constants/errors.ts +++ b/packages/apps/job-launcher/server/src/common/constants/errors.ts @@ -23,6 +23,7 @@ export enum ErrorJob { DataNotExist = 'Data does not exist', ImageConsistency = 'Ground Truth images not found in dataset', CancelWhileProcessing = 'Your job is being processed and cannot be canceled at this moment. Please, wait a few seconds and try again.', + NoRefundFound = 'No refund found for this escrow', } /** @@ -51,6 +52,7 @@ export enum ErrorWebhook { UrlNotFound = 'Webhook URL not found', NotCreated = 'Webhook has not been created', InvalidEscrow = 'Invalid escrow data provided', + InvalidOracleAddress = 'Invalid oracle address', } /** diff --git a/packages/apps/job-launcher/server/src/common/enums/job.ts b/packages/apps/job-launcher/server/src/common/enums/job.ts index 0f01dd2ece..7a700cbb59 100644 --- a/packages/apps/job-launcher/server/src/common/enums/job.ts +++ b/packages/apps/job-launcher/server/src/common/enums/job.ts @@ -10,6 +10,7 @@ export enum JobStatus { COMPLETED = 'completed', FAILED = 'failed', TO_CANCEL = 'to_cancel', + CANCELING = 'canceling', CANCELED = 'canceled', } diff --git a/packages/apps/job-launcher/server/src/common/enums/webhook.ts b/packages/apps/job-launcher/server/src/common/enums/webhook.ts index df966a7dff..10313b8830 100644 --- a/packages/apps/job-launcher/server/src/common/enums/webhook.ts +++ b/packages/apps/job-launcher/server/src/common/enums/webhook.ts @@ -4,6 +4,7 @@ export enum EventType { ESCROW_COMPLETED = 'escrow_completed', ESCROW_FAILED = 'escrow_failed', ABUSE_DETECTED = 'abuse_detected', + CANCELLATION_REQUESTED = 'cancellation_requested', } export enum OracleType { diff --git a/packages/apps/job-launcher/server/src/common/utils/tokens.ts b/packages/apps/job-launcher/server/src/common/utils/tokens.ts index 0fb85f03a8..3b7b02fc1f 100644 --- a/packages/apps/job-launcher/server/src/common/utils/tokens.ts +++ b/packages/apps/job-launcher/server/src/common/utils/tokens.ts @@ -2,6 +2,10 @@ import { ChainId } from '@human-protocol/sdk'; import { TOKEN_ADDRESSES } from '../constants/tokens'; import { EscrowFundToken } from '../enums/job'; +/** + * Returns decimals for a token, clamped to defaultDecimals (internal default = 6). + * Pass a higher defaultDecimals (e.g. 18) when full on-chain precision is required. + */ export function getTokenDecimals( chainId: ChainId, symbol: EscrowFundToken, diff --git a/packages/apps/job-launcher/server/src/database/base.repository.ts b/packages/apps/job-launcher/server/src/database/base.repository.ts index 758525d8b4..3ebe7b805e 100644 --- a/packages/apps/job-launcher/server/src/database/base.repository.ts +++ b/packages/apps/job-launcher/server/src/database/base.repository.ts @@ -63,4 +63,17 @@ export class BaseRepository extends Repository { await queryRunner.release(); } } + + async createMany(items: T[]): Promise { + try { + await this.insert(items); + } catch (error) { + if (error instanceof QueryFailedError) { + throw handleQueryFailedError(error); + } else { + throw error; + } + } + return items; + } } diff --git a/packages/apps/job-launcher/server/src/database/migrations/1754660014999-EscrowCancellation.ts b/packages/apps/job-launcher/server/src/database/migrations/1754660014999-EscrowCancellation.ts new file mode 100644 index 0000000000..8939525383 --- /dev/null +++ b/packages/apps/job-launcher/server/src/database/migrations/1754660014999-EscrowCancellation.ts @@ -0,0 +1,131 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class EscrowCancellation1754660014999 implements MigrationInterface { + name = 'EscrowCancellation1754660014999'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + DROP INDEX "hmt"."IDX_012a8481fc9980fcc49f3f0dc2" + `); + await queryRunner.query(` + ALTER TABLE "hmt"."webhook" + ADD "oracle_address" character varying + `); + await queryRunner.query(` + ALTER TYPE "hmt"."jobs_status_enum" + RENAME TO "jobs_status_enum_old" + `); + await queryRunner.query(` + CREATE TYPE "hmt"."jobs_status_enum" AS ENUM( + 'paid', + 'under_moderation', + 'moderation_passed', + 'possible_abuse_in_review', + 'created', + 'funded', + 'launched', + 'partial', + 'completed', + 'failed', + 'to_cancel', + 'canceling', + 'canceled' + ) + `); + await queryRunner.query(` + ALTER TABLE "hmt"."jobs" + ALTER COLUMN "status" TYPE "hmt"."jobs_status_enum" USING "status"::"text"::"hmt"."jobs_status_enum" + `); + await queryRunner.query(` + DROP TYPE "hmt"."jobs_status_enum_old" + `); + await queryRunner.query(` + ALTER TYPE "hmt"."webhook_event_type_enum" + RENAME TO "webhook_event_type_enum_old" + `); + await queryRunner.query(` + CREATE TYPE "hmt"."webhook_event_type_enum" AS ENUM( + 'escrow_created', + 'escrow_canceled', + 'escrow_completed', + 'escrow_failed', + 'abuse_detected', + 'cancellation_requested' + ) + `); + await queryRunner.query(` + ALTER TABLE "hmt"."webhook" + ALTER COLUMN "event_type" TYPE "hmt"."webhook_event_type_enum" USING "event_type"::"text"::"hmt"."webhook_event_type_enum" + `); + await queryRunner.query(` + DROP TYPE "hmt"."webhook_event_type_enum_old" + `); + await queryRunner.query(` + CREATE UNIQUE INDEX "IDX_e834f9a1d4dc20775e2cb2319e" ON "hmt"."webhook" ( + "chain_id", + "escrow_address", + "event_type", + "oracle_address" + ) + `); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + DROP INDEX "hmt"."IDX_e834f9a1d4dc20775e2cb2319e" + `); + await queryRunner.query(` + CREATE TYPE "hmt"."webhook_event_type_enum_old" AS ENUM( + 'escrow_created', + 'escrow_canceled', + 'escrow_completed', + 'escrow_failed', + 'abuse_detected' + ) + `); + await queryRunner.query(` + ALTER TABLE "hmt"."webhook" + ALTER COLUMN "event_type" TYPE "hmt"."webhook_event_type_enum_old" USING "event_type"::"text"::"hmt"."webhook_event_type_enum_old" + `); + await queryRunner.query(` + DROP TYPE "hmt"."webhook_event_type_enum" + `); + await queryRunner.query(` + ALTER TYPE "hmt"."webhook_event_type_enum_old" + RENAME TO "webhook_event_type_enum" + `); + await queryRunner.query(` + CREATE TYPE "hmt"."jobs_status_enum_old" AS ENUM( + 'paid', + 'under_moderation', + 'moderation_passed', + 'possible_abuse_in_review', + 'created', + 'funded', + 'launched', + 'partial', + 'completed', + 'failed', + 'to_cancel', + 'canceled' + ) + `); + await queryRunner.query(` + ALTER TABLE "hmt"."jobs" + ALTER COLUMN "status" TYPE "hmt"."jobs_status_enum_old" USING "status"::"text"::"hmt"."jobs_status_enum_old" + `); + await queryRunner.query(` + DROP TYPE "hmt"."jobs_status_enum" + `); + await queryRunner.query(` + ALTER TYPE "hmt"."jobs_status_enum_old" + RENAME TO "jobs_status_enum" + `); + await queryRunner.query(` + ALTER TABLE "hmt"."webhook" DROP COLUMN "oracle_address" + `); + await queryRunner.query(` + CREATE UNIQUE INDEX "IDX_012a8481fc9980fcc49f3f0dc2" ON "hmt"."webhook" ("chain_id", "escrow_address", "event_type") + `); + } +} diff --git a/packages/apps/job-launcher/server/src/modules/cron-job/cron-job.service.spec.ts b/packages/apps/job-launcher/server/src/modules/cron-job/cron-job.service.spec.ts index 24580e408e..e7121a703a 100644 --- a/packages/apps/job-launcher/server/src/modules/cron-job/cron-job.service.spec.ts +++ b/packages/apps/job-launcher/server/src/modules/cron-job/cron-job.service.spec.ts @@ -1,19 +1,4 @@ -jest.mock('@human-protocol/sdk', () => ({ - ...jest.requireActual('@human-protocol/sdk'), - EscrowClient: { - build: jest.fn().mockImplementation(() => ({ - createEscrow: jest.fn().mockResolvedValue(MOCK_ADDRESS), - setup: jest.fn().mockResolvedValue(null), - fund: jest.fn().mockResolvedValue(null), - })), - }, - KVStoreUtils: { - get: jest.fn(), - }, - EscrowUtils: { - getStatusEvents: jest.fn(), - }, -})); +jest.mock('@human-protocol/sdk'); import { faker } from '@faker-js/faker'; import { createMock } from '@golevelup/ts-jest'; @@ -23,10 +8,10 @@ import { EscrowClient, EscrowStatus, EscrowUtils, + IStatusEvent, KVStoreUtils, NETWORKS, } from '@human-protocol/sdk'; -import { StatusEvent } from '@human-protocol/sdk/dist/graphql'; import { HttpService } from '@nestjs/axios'; import { ConfigService } from '@nestjs/config'; import { Test, TestingModule } from '@nestjs/testing'; @@ -39,7 +24,6 @@ import { MOCK_FILE_HASH, MOCK_FILE_URL, MOCK_MAX_RETRY_COUNT, - MOCK_TRANSACTION_HASH, } from '../../../test/constants'; import { NetworkConfigService } from '../../common/config/network-config.service'; import { ServerConfigService } from '../../common/config/server-config.service'; @@ -81,6 +65,10 @@ import { CronJobEntity } from './cron-job.entity'; import { CronJobRepository } from './cron-job.repository'; import { CronJobService } from './cron-job.service'; +const mockedEscrowClient = jest.mocked(EscrowClient); +const mockedEscrowUtils = jest.mocked(EscrowUtils); +const mockedKVStoreUtils = jest.mocked(KVStoreUtils); + describe('CronJobService', () => { let service: CronJobService, repository: CronJobRepository, @@ -694,7 +682,8 @@ describe('CronJobService', () => { let findJobMock: any, cronJobEntityMock: Partial, jobEntityMock1: Partial, - jobEntityMock2: Partial; + jobEntityMock2: Partial, + escrowInstance: Partial; beforeEach(() => { cronJobEntityMock = { @@ -734,20 +723,21 @@ describe('CronJobService', () => { jest.spyOn(service, 'isCronJobRunning').mockResolvedValue(false); - jest.spyOn(jobService, 'processEscrowCancellation').mockResolvedValue({ - txHash: MOCK_TRANSACTION_HASH, - amountRefunded: 1n, - }); + jest.spyOn(jobService, 'processEscrowCancellation').mockResolvedValue(); - (EscrowClient.build as any).mockImplementation(() => ({ + escrowInstance = { getExchangeOracleAddress: jest .fn() .mockResolvedValue(MOCK_EXCHANGE_ORACLE_ADDRESS), - })); + getStatus: jest.fn().mockResolvedValue(EscrowStatus.ToCancel), + } as Partial; + mockedEscrowClient.build.mockResolvedValue( + escrowInstance as EscrowClient, + ); - KVStoreUtils.get = jest - .fn() - .mockResolvedValue(MOCK_EXCHANGE_ORACLE_WEBHOOK_URL); + mockedKVStoreUtils.get.mockResolvedValue( + MOCK_EXCHANGE_ORACLE_WEBHOOK_URL, + ); const manifestMock = { requestType: FortuneJobType.FORTUNE, @@ -787,8 +777,7 @@ describe('CronJobService', () => { }); it('should cancel all of the jobs with status TO_CANCEL', async () => { - jest.spyOn(webhookRepository, 'createUnique'); - jest.spyOn(jobService, 'isEscrowFunded').mockResolvedValue(true); + jest.spyOn(webhookRepository, 'createMany'); const result = await service.cancelCronJob(); @@ -800,12 +789,10 @@ describe('CronJobService', () => { expect(jobService.processEscrowCancellation).toHaveBeenCalledWith( jobEntityMock2, ); - expect(webhookRepository.createUnique).toHaveBeenCalledTimes(2); + expect(webhookRepository.createMany).toHaveBeenCalledTimes(2); }); it('should not call process escrow cancellation when escrowAddress is not present', async () => { - jest.spyOn(jobService, 'isEscrowFunded').mockResolvedValue(false); - const jobEntityWithoutEscrow = { ...jobEntityMock1, escrowAddress: undefined, @@ -823,7 +810,12 @@ describe('CronJobService', () => { }); it('should increase retriesCount by 1 if the job cancellation fails', async () => { - jest.spyOn(jobService, 'isEscrowFunded').mockResolvedValue(true); + mockedEscrowClient.build.mockResolvedValue({ + getExchangeOracleAddress: jest + .fn() + .mockResolvedValue(MOCK_EXCHANGE_ORACLE_ADDRESS), + getStatus: jest.fn().mockReturnValue(EscrowStatus.ToCancel), + } as unknown as EscrowClient); jest .spyOn(jobService, 'processEscrowCancellation') .mockRejectedValueOnce(new Error('cancellation failed')); @@ -838,7 +830,12 @@ describe('CronJobService', () => { }); it('should mark job as failed if the job cancellation fails more than max retries count', async () => { - jest.spyOn(jobService, 'isEscrowFunded').mockResolvedValue(true); + mockedEscrowClient.build.mockResolvedValue({ + getExchangeOracleAddress: jest + .fn() + .mockResolvedValue(MOCK_EXCHANGE_ORACLE_ADDRESS), + getStatus: jest.fn().mockResolvedValue(EscrowStatus.ToCancel), + } as unknown as EscrowClient); jest .spyOn(jobService, 'processEscrowCancellation') .mockRejectedValueOnce(new Error('cancellation failed')); @@ -849,7 +846,7 @@ describe('CronJobService', () => { expect(jobService.processEscrowCancellation).toHaveBeenCalledTimes(2); expect(jobEntityMock1.status).toBe(JobStatus.FAILED); - expect(jobEntityMock2.status).toBe(JobStatus.CANCELED); + expect(jobEntityMock2.status).toBe(JobStatus.CANCELING); }); it('should complete the cron job entity on database to unlock', async () => { @@ -862,6 +859,26 @@ describe('CronJobService', () => { createdAt: expect.any(Date), }); }); + + it('should not call webhooks if escrow status is Launched', async () => { + jest.spyOn(webhookRepository, 'createMany'); + + (escrowInstance.getStatus as jest.Mock) + .mockResolvedValueOnce(EscrowStatus.Cancelled) + .mockResolvedValueOnce(EscrowStatus.ToCancel); + + const result = await service.cancelCronJob(); + + expect(result).toBeTruthy(); + expect(jobService.processEscrowCancellation).toHaveBeenCalledWith( + jobEntityMock1, + ); + expect(jobRepository.updateOne).toHaveBeenCalledTimes(2); + expect(jobService.processEscrowCancellation).toHaveBeenCalledWith( + jobEntityMock2, + ); + expect(webhookRepository.createMany).toHaveBeenCalledTimes(1); + }); }); describe('processPendingCronJob', () => { @@ -1090,7 +1107,7 @@ describe('CronJobService', () => { describe('syncJobStatuses Cron Job', () => { let cronJobEntityMock: Partial; let jobEntityMock: Partial; - let escrowEventMock: Partial; + let escrowEventMock: Partial; beforeEach(() => { cronJobEntityMock = { @@ -1108,7 +1125,7 @@ describe('CronJobService', () => { escrowEventMock = { chainId: ChainId.LOCALHOST, escrowAddress: MOCK_ADDRESS, - status: EscrowStatus[EscrowStatus.Partial], + status: EscrowStatus.Partial, }; jest.spyOn(repository, 'findOneByType').mockResolvedValue(null); @@ -1121,7 +1138,7 @@ describe('CronJobService', () => { .spyOn(jobRepository, 'findOneByChainIdAndEscrowAddress') .mockResolvedValue(jobEntityMock as any); - (EscrowUtils.getStatusEvents as any).mockResolvedValue([ + mockedEscrowUtils.getStatusEvents.mockResolvedValue([ escrowEventMock as any, ]); }); @@ -1162,7 +1179,7 @@ describe('CronJobService', () => { await service.syncJobStatuses(); - expect(EscrowUtils.getStatusEvents).toHaveBeenCalled(); + expect(mockedEscrowUtils.getStatusEvents).toHaveBeenCalled(); expect( jobRepository.findManyByChainIdsAndEscrowAddresses, ).toHaveBeenCalledWith( @@ -1252,6 +1269,7 @@ describe('CronJobService', () => { chainId: ChainId.LOCALHOST, escrowAddress: webhookEntity.escrowAddress, status: JobStatus.PAID, + requestType: FortuneJobType.FORTUNE, }; const cronJobEntityMock = { @@ -1290,7 +1308,7 @@ describe('CronJobService', () => { expect(jobRepository.updateOne).toHaveBeenCalledWith({ ...jobEntity, - status: JobStatus.CANCELED, + status: JobStatus.CANCELING, }); expect(webhookRepository.updateOne).toHaveBeenCalledWith({ ...webhookEntity, diff --git a/packages/apps/job-launcher/server/src/modules/cron-job/cron-job.service.ts b/packages/apps/job-launcher/server/src/modules/cron-job/cron-job.service.ts index 83e532b8f3..33e2552034 100644 --- a/packages/apps/job-launcher/server/src/modules/cron-job/cron-job.service.ts +++ b/packages/apps/job-launcher/server/src/modules/cron-job/cron-job.service.ts @@ -4,21 +4,21 @@ import { ErrorCronJob, ErrorEscrow, ErrorJob, - ErrorPayment, } from '../../common/constants/errors'; import { CronJobType } from '../../common/enums/cron-job'; -import { ChainId, EscrowStatus, EscrowUtils } from '@human-protocol/sdk'; +import { EscrowClient, EscrowStatus, EscrowUtils } from '@human-protocol/sdk'; import { Cron } from '@nestjs/schedule'; import { ethers } from 'ethers'; import { NetworkConfigService } from '../../common/config/network-config.service'; -import { EscrowFundToken, JobStatus } from '../../common/enums/job'; +import { JobStatus } from '../../common/enums/job'; import { EventType, OracleType, WebhookStatus, } from '../../common/enums/webhook'; import { ConflictError, NotFoundError } from '../../common/errors'; +import logger from '../../logger'; import { GCVContentModerationService } from '../content-moderation/gcv-content-moderation.service'; import { JobEntity } from '../job/job.entity'; import { JobRepository } from '../job/job.repository'; @@ -30,8 +30,6 @@ import { WebhookRepository } from '../webhook/webhook.repository'; import { WebhookService } from '../webhook/webhook.service'; import { CronJobEntity } from './cron-job.entity'; import { CronJobRepository } from './cron-job.repository'; -import logger from '../../logger'; -import { TOKEN_ADDRESSES } from '../../common/constants/tokens'; @Injectable() export class CronJobService { @@ -262,55 +260,41 @@ export class CronJobService { for (const jobEntity of jobEntities) { try { - if ( - jobEntity.escrowAddress && - (await this.jobService.isEscrowFunded( - jobEntity.chainId, - jobEntity.escrowAddress, - )) - ) { - const { amountRefunded } = - await this.jobService.processEscrowCancellation(jobEntity); - const token = (TOKEN_ADDRESSES[jobEntity.chainId as ChainId] ?? {})[ - jobEntity.token as EscrowFundToken - ]; + let escrowStatus: EscrowStatus | null = null; + if (jobEntity.escrowAddress) { + const signer = this.web3Service.getSigner(jobEntity.chainId); + const escrowClient = await EscrowClient.build(signer); - if (!token) { - throw new Error(ErrorPayment.UnsupportedToken); - } + await this.jobService.processEscrowCancellation(jobEntity); - await this.paymentService.createRefundPayment({ - refundAmount: Number( - ethers.formatUnits(amountRefunded, token.decimals), - ), - refundCurrency: jobEntity.token, - userId: jobEntity.userId, - jobId: jobEntity.id, - }); - } else { + escrowStatus = await escrowClient.getStatus( + jobEntity.escrowAddress, + ); + } + if ( + !jobEntity.escrowAddress || + escrowStatus === EscrowStatus.Cancelled + ) { await this.paymentService.createRefundPayment({ refundAmount: jobEntity.fundAmount, refundCurrency: jobEntity.token, userId: jobEntity.userId, jobId: jobEntity.id, }); + + jobEntity.status = JobStatus.CANCELED; + await this.jobRepository.updateOne(jobEntity); + continue; } - jobEntity.status = JobStatus.CANCELED; + + jobEntity.status = JobStatus.CANCELING; await this.jobRepository.updateOne(jobEntity); const oracleType = this.jobService.getOracleType( jobEntity.requestType, ); if (oracleType !== OracleType.HCAPTCHA) { - const webhookEntity = new WebhookEntity(); - Object.assign(webhookEntity, { - escrowAddress: jobEntity.escrowAddress, - chainId: jobEntity.chainId, - eventType: EventType.ESCROW_CANCELED, - oracleType, - hasSignature: true, - }); - await this.webhookRepository.createUnique(webhookEntity); + await this.createCancellationWebhooks(jobEntity, oracleType); } } catch (error) { this.logger.error('Error canceling escrow', { @@ -351,7 +335,7 @@ export class CronJobService { try { const webhookEntities = await this.webhookRepository.findByStatusAndType( WebhookStatus.PENDING, - [EventType.ESCROW_CREATED, EventType.ESCROW_CANCELED], + [EventType.ESCROW_CREATED, EventType.CANCELLATION_REQUESTED], ); for (const webhookEntity of webhookEntities) { @@ -412,16 +396,26 @@ export class CronJobService { } if ( jobEntity.escrowAddress && + jobEntity.status !== JobStatus.CANCELING && jobEntity.status !== JobStatus.CANCELED ) { await this.jobService.processEscrowCancellation(jobEntity); } - if (jobEntity.status !== JobStatus.CANCELED) { - jobEntity.status = JobStatus.CANCELED; + if ( + jobEntity.status !== JobStatus.CANCELING && + jobEntity.status !== JobStatus.CANCELED + ) { + jobEntity.status = JobStatus.CANCELING; await this.jobRepository.updateOne(jobEntity); } await this.paymentService.createSlash(jobEntity); + const oracleType = this.jobService.getOracleType( + jobEntity.requestType, + ); + if (oracleType !== OracleType.HCAPTCHA) { + await this.createCancellationWebhooks(jobEntity, oracleType); + } } catch (error) { this.logger.error('Error slashing escrow', { escrowAddress: webhookEntity.escrowAddress, @@ -461,7 +455,11 @@ export class CronJobService { try { const events = []; - const statuses = [EscrowStatus.Partial, EscrowStatus.Complete]; + const statuses = [ + EscrowStatus.Partial, + EscrowStatus.Complete, + EscrowStatus.Cancelled, + ]; const from = lastCronJob?.lastSubgraphTime || undefined; for (const network of this.networkConfigService.networks) { @@ -511,21 +509,25 @@ export class CronJobService { const key = `${event.chainId}-${ethers.getAddress(event.escrowAddress)}`; const job = jobMap.get(key); - if ( - !job || - job.status === JobStatus.TO_CANCEL || - job.status === JobStatus.CANCELED - ) + const eventTimestamp = new Date(event.timestamp * 1000).getTime(); + if (eventTimestamp > latestEventTimestamp) { + latestEventTimestamp = eventTimestamp; + } + if (!job || job.status === JobStatus.CANCELED) continue; + + if (event.status === EscrowStatus.Cancelled) { + await this.jobService.cancelJob(job); continue; + } let newStatus: JobStatus | null = null; if ( - event.status === EscrowStatus[EscrowStatus.Partial] && + event.status === EscrowStatus.Partial && job.status !== JobStatus.PARTIAL ) { newStatus = JobStatus.PARTIAL; } else if ( - event.status === EscrowStatus[EscrowStatus.Complete] && + event.status === EscrowStatus.Complete && job.status !== JobStatus.COMPLETED ) { newStatus = JobStatus.COMPLETED; @@ -535,10 +537,6 @@ export class CronJobService { job.status = newStatus; jobsToUpdate.push(job); } - const eventTimestamp = new Date(event.timestamp * 1000).getTime(); - if (eventTimestamp > latestEventTimestamp) { - latestEventTimestamp = eventTimestamp; - } } if (jobsToUpdate.length > 0) { @@ -556,4 +554,27 @@ export class CronJobService { this.logger.debug('Update jobs STOP'); await this.completeCronJob(cronJob); } + private async createCancellationWebhooks( + jobEntity: JobEntity, + oracleType: OracleType, + ) { + const baseWebhook = { + escrowAddress: jobEntity.escrowAddress, + chainId: jobEntity.chainId, + eventType: EventType.CANCELLATION_REQUESTED, + oracleType, + hasSignature: true, + }; + const webhooks = [ + Object.assign(new WebhookEntity(), { + ...baseWebhook, + oracleAddress: jobEntity.exchangeOracle, + }), + Object.assign(new WebhookEntity(), { + ...baseWebhook, + oracleAddress: jobEntity.recordingOracle, + }), + ]; + await this.webhookRepository.createMany(webhooks); + } } diff --git a/packages/apps/job-launcher/server/src/modules/job/fixtures.ts b/packages/apps/job-launcher/server/src/modules/job/fixtures.ts index 967ab71175..6907066b5a 100644 --- a/packages/apps/job-launcher/server/src/modules/job/fixtures.ts +++ b/packages/apps/job-launcher/server/src/modules/job/fixtures.ts @@ -151,9 +151,10 @@ export const createJobEntity = ( max: 1000, fractionDigits: 6, }); - entity.token = faker.helpers.arrayElement( - Object.values(EscrowFundToken), - ) as EscrowFundToken; + entity.token = faker.helpers.arrayElement([ + EscrowFundToken.HMT, + EscrowFundToken.USDC, + ]) as EscrowFundToken; entity.manifestUrl = faker.internet.url(); entity.manifestHash = faker.string.uuid(); entity.failedReason = null; diff --git a/packages/apps/job-launcher/server/src/modules/job/job.controller.spec.ts b/packages/apps/job-launcher/server/src/modules/job/job.controller.spec.ts index 5da324b31f..bc2cb7a1df 100644 --- a/packages/apps/job-launcher/server/src/modules/job/job.controller.spec.ts +++ b/packages/apps/job-launcher/server/src/modules/job/job.controller.spec.ts @@ -11,9 +11,9 @@ import { MUTEX_TIMEOUT } from '../../common/constants'; import { MutexManagerService } from '../mutex/mutex-manager.service'; import { RequestWithUser } from '../../common/types'; import { JwtAuthGuard } from '../../common/guards'; -import { JobCvatDto, JobFortuneDto, JobQuickLaunchDto } from './job.dto'; +import { JobFortuneDto, JobQuickLaunchDto } from './job.dto'; import { - CvatJobType, + // CvatJobType, EscrowFundToken, FortuneJobType, JobRequestType, @@ -24,7 +24,7 @@ import { MOCK_REQUESTER_DESCRIPTION, MOCK_REQUESTER_TITLE, } from '../../../test/constants'; -import { AWSRegions, StorageProviders } from '../../common/enums/storage'; +// import { AWSRegions, StorageProviders } from '../../common/enums/storage'; import { Web3ConfigService } from '../../common/config/web3-config.service'; import { ConfigService } from '@nestjs/config'; import { PaymentCurrency } from '../../common/enums/payment'; @@ -269,107 +269,108 @@ describe('JobController', () => { }); }); - describe('createCvatJob', () => { - const jobCvatDto: JobCvatDto = { - requesterDescription: 'Sample description', - data: { - dataset: { - provider: 'AWS' as StorageProviders, - region: 'us-east-1' as AWSRegions, - bucketName: 'sample-bucket', - path: 'path/to/dataset', - }, - }, - labels: [ - { - name: 'Label 1', - nodes: ['node1', 'node2'], - }, - ], - minQuality: 90, - groundTruth: { - provider: 'AWS' as StorageProviders, - region: 'us-west-1' as AWSRegions, - bucketName: 'ground-truth-bucket', - path: 'path/to/groundtruth', - }, - userGuide: 'https://example.com/user-guide', - type: CvatJobType.IMAGE_BOXES, - paymentCurrency: PaymentCurrency.USDC, - paymentAmount: 500, - escrowFundToken: EscrowFundToken.USDC, - }; - - it('should create a CVAT job successfully', async () => { - mockJobService.createJob.mockResolvedValue(1); - mockMutexManagerService.runExclusive.mockImplementation( - async (_lock, _timeout, fn) => await fn(), - ); - - const result = await jobController.createCvatJob(jobCvatDto, mockRequest); - - expect(result).toBe(1); - expect(mockMutexManagerService.runExclusive).toHaveBeenCalledWith( - `user${mockRequest.user.id}`, - expect.any(Number), - expect.any(Function), - ); - expect(mockJobService.createJob).toHaveBeenCalledWith( - mockRequest.user, - CvatJobType.IMAGE_BOXES, - jobCvatDto, - ); - }); - - it('should throw UnauthorizedException if user is not authorized', async () => { - mockMutexManagerService.runExclusive.mockRejectedValueOnce( - new UnauthorizedException(), - ); - - await expect( - jobController.createCvatJob(jobCvatDto, mockRequest), - ).rejects.toThrow(UnauthorizedException); - - expect(mockMutexManagerService.runExclusive).toHaveBeenCalledWith( - `user${mockRequest.user.id}`, - expect.any(Number), - expect.any(Function), - ); - expect(mockJobService.createJob).not.toHaveBeenCalled(); - }); - - it('should throw ConflictException if there is a conflict', async () => { - mockMutexManagerService.runExclusive.mockRejectedValueOnce( - new ConflictException(), - ); - - await expect( - jobController.createCvatJob(jobCvatDto, mockRequest), - ).rejects.toThrow(ConflictException); - - expect(mockMutexManagerService.runExclusive).toHaveBeenCalledWith( - `user${mockRequest.user.id}`, - expect.any(Number), - expect.any(Function), - ); - expect(mockJobService.createJob).not.toHaveBeenCalled(); - }); - - it('should throw BadRequestException for invalid input', async () => { - mockMutexManagerService.runExclusive.mockRejectedValueOnce( - new BadRequestException(), - ); - - await expect( - jobController.createCvatJob(jobCvatDto, mockRequest), - ).rejects.toThrow(BadRequestException); - - expect(mockMutexManagerService.runExclusive).toHaveBeenCalledWith( - `user${mockRequest.user.id}`, - expect.any(Number), - expect.any(Function), - ); - expect(mockJobService.createJob).not.toHaveBeenCalled(); - }); - }); + //disabled CVAT jobs + // describe('createCvatJob', () => { + // const jobCvatDto: JobCvatDto = { + // requesterDescription: 'Sample description', + // data: { + // dataset: { + // provider: 'AWS' as StorageProviders, + // region: 'us-east-1' as AWSRegions, + // bucketName: 'sample-bucket', + // path: 'path/to/dataset', + // }, + // }, + // labels: [ + // { + // name: 'Label 1', + // nodes: ['node1', 'node2'], + // }, + // ], + // minQuality: 90, + // groundTruth: { + // provider: 'AWS' as StorageProviders, + // region: 'us-west-1' as AWSRegions, + // bucketName: 'ground-truth-bucket', + // path: 'path/to/groundtruth', + // }, + // userGuide: 'https://example.com/user-guide', + // type: CvatJobType.IMAGE_BOXES, + // paymentCurrency: PaymentCurrency.USDC, + // paymentAmount: 500, + // escrowFundToken: EscrowFundToken.USDC, + // }; + + // it('should create a CVAT job successfully', async () => { + // mockJobService.createJob.mockResolvedValue(1); + // mockMutexManagerService.runExclusive.mockImplementation( + // async (_lock, _timeout, fn) => await fn(), + // ); + + // const result = await jobController.createCvatJob(jobCvatDto, mockRequest); + + // expect(result).toBe(1); + // expect(mockMutexManagerService.runExclusive).toHaveBeenCalledWith( + // `user${mockRequest.user.id}`, + // expect.any(Number), + // expect.any(Function), + // ); + // expect(mockJobService.createJob).toHaveBeenCalledWith( + // mockRequest.user, + // CvatJobType.IMAGE_BOXES, + // jobCvatDto, + // ); + // }); + + // it('should throw UnauthorizedException if user is not authorized', async () => { + // mockMutexManagerService.runExclusive.mockRejectedValueOnce( + // new UnauthorizedException(), + // ); + + // await expect( + // jobController.createCvatJob(jobCvatDto, mockRequest), + // ).rejects.toThrow(UnauthorizedException); + + // expect(mockMutexManagerService.runExclusive).toHaveBeenCalledWith( + // `user${mockRequest.user.id}`, + // expect.any(Number), + // expect.any(Function), + // ); + // expect(mockJobService.createJob).not.toHaveBeenCalled(); + // }); + + // it('should throw ConflictException if there is a conflict', async () => { + // mockMutexManagerService.runExclusive.mockRejectedValueOnce( + // new ConflictException(), + // ); + + // await expect( + // jobController.createCvatJob(jobCvatDto, mockRequest), + // ).rejects.toThrow(ConflictException); + + // expect(mockMutexManagerService.runExclusive).toHaveBeenCalledWith( + // `user${mockRequest.user.id}`, + // expect.any(Number), + // expect.any(Function), + // ); + // expect(mockJobService.createJob).not.toHaveBeenCalled(); + // }); + + // it('should throw BadRequestException for invalid input', async () => { + // mockMutexManagerService.runExclusive.mockRejectedValueOnce( + // new BadRequestException(), + // ); + + // await expect( + // jobController.createCvatJob(jobCvatDto, mockRequest), + // ).rejects.toThrow(BadRequestException); + + // expect(mockMutexManagerService.runExclusive).toHaveBeenCalledWith( + // `user${mockRequest.user.id}`, + // expect.any(Number), + // expect.any(Function), + // ); + // expect(mockJobService.createJob).not.toHaveBeenCalled(); + // }); + // }); }); diff --git a/packages/apps/job-launcher/server/src/modules/job/job.controller.ts b/packages/apps/job-launcher/server/src/modules/job/job.controller.ts index c23e19395d..dece39734b 100644 --- a/packages/apps/job-launcher/server/src/modules/job/job.controller.ts +++ b/packages/apps/job-launcher/server/src/modules/job/job.controller.ts @@ -167,6 +167,7 @@ export class JobController { @Body() data: JobCvatDto, @Request() req: RequestWithUser, ): Promise { + throw new ForbiddenError('Disabled'); return await this.mutexManagerService.runExclusive( `user${req.user.id}`, MUTEX_TIMEOUT, diff --git a/packages/apps/job-launcher/server/src/modules/job/job.dto.ts b/packages/apps/job-launcher/server/src/modules/job/job.dto.ts index 02cfad81db..3736cbfd79 100644 --- a/packages/apps/job-launcher/server/src/modules/job/job.dto.ts +++ b/packages/apps/job-launcher/server/src/modules/job/job.dto.ts @@ -429,14 +429,6 @@ export class GetJobsDto extends PageOptionsDto { status?: JobStatusFilter; } -export class EscrowCancelDto { - @ApiProperty() - public txHash: string; - - @ApiProperty() - public amountRefunded: bigint; -} - export class JobCaptchaAdvancedDto { @ApiProperty({ enum: WorkerLanguage, diff --git a/packages/apps/job-launcher/server/src/modules/job/job.repository.ts b/packages/apps/job-launcher/server/src/modules/job/job.repository.ts index 9e9500e4a5..8c3828a48b 100644 --- a/packages/apps/job-launcher/server/src/modules/job/job.repository.ts +++ b/packages/apps/job-launcher/server/src/modules/job/job.repository.ts @@ -118,7 +118,11 @@ export class JobRepository extends BaseRepository { ]; break; case JobStatusFilter.CANCELED: - statusFilter = [JobStatus.TO_CANCEL, JobStatus.CANCELED]; + statusFilter = [ + JobStatus.TO_CANCEL, + JobStatus.CANCELING, + JobStatus.CANCELED, + ]; break; default: statusFilter = [data.status as any]; diff --git a/packages/apps/job-launcher/server/src/modules/job/job.service.spec.ts b/packages/apps/job-launcher/server/src/modules/job/job.service.spec.ts index b10ca4b7c4..f829d0021d 100644 --- a/packages/apps/job-launcher/server/src/modules/job/job.service.spec.ts +++ b/packages/apps/job-launcher/server/src/modules/job/job.service.spec.ts @@ -6,6 +6,7 @@ import { createMock } from '@golevelup/ts-jest'; import { ChainId, EscrowClient, + EscrowStatus, EscrowUtils, IEscrow, KVStoreUtils, @@ -16,6 +17,7 @@ import { ethers, Wallet, ZeroAddress } from 'ethers'; import { createSignerMock } from '../../../test/fixtures/web3'; import { ServerConfigService } from '../../common/config/server-config.service'; import { ErrorEscrow, ErrorJob } from '../../common/constants/errors'; +import { TOKEN_ADDRESSES } from '../../common/constants/tokens'; import { AudinoJobType, CvatJobType, @@ -25,7 +27,7 @@ import { JobStatus, JobStatusFilter, } from '../../common/enums/job'; -import { PaymentCurrency } from '../../common/enums/payment'; +import { PaymentCurrency, PaymentType } from '../../common/enums/payment'; import { EventType, OracleType, @@ -924,6 +926,7 @@ describe('JobService', () => { chainId: jobEntity.chainId, eventType: EventType.ESCROW_CREATED, oracleType: jobEntity.requestType, + oracleAddress: jobEntity.exchangeOracle, hasSignature: true, status: WebhookStatus.PENDING, retriesCount: 0, @@ -947,7 +950,7 @@ describe('JobService', () => { ); mockWeb3Service.calculateGasPrice.mockResolvedValueOnce(1n); - mockedKVStoreUtils.get.mockResolvedValue('1'); + mockedKVStoreUtils.get.mockResolvedValueOnce('1'); await expect(jobService.setupEscrow(jobEntity)).rejects.toThrow( 'Network error', @@ -961,9 +964,9 @@ describe('JobService', () => { status: JobStatus.PAID, token: EscrowFundToken.HMT, }); - mockedKVStoreUtils.get.mockResolvedValue('1'); + mockedKVStoreUtils.get.mockResolvedValueOnce('1'); mockedEscrowClient.build.mockResolvedValueOnce({ - fund: jest.fn().mockResolvedValue(undefined), + fund: jest.fn().mockResolvedValueOnce(undefined), } as unknown as EscrowClient); mockWeb3Service.calculateGasPrice.mockResolvedValueOnce(1n); @@ -992,7 +995,7 @@ describe('JobService', () => { createSignerMock() as unknown as Wallet, ); mockedEscrowClient.build.mockResolvedValueOnce({ - fund: jest.fn().mockRejectedValue(new Error('Network error')), + fund: jest.fn().mockRejectedValueOnce(new Error('Network error')), } as unknown as EscrowClient); mockWeb3Service.calculateGasPrice.mockResolvedValueOnce(1n); @@ -1272,7 +1275,7 @@ describe('JobService', () => { ]; (EscrowClient.build as any).mockImplementation(() => ({ - getResultsUrl: jest.fn().mockResolvedValue(url), + getResultsUrl: jest.fn().mockResolvedValueOnce(url), })); mockStorageService.downloadJsonLikeData.mockResolvedValueOnce( fortuneResult, @@ -1405,17 +1408,54 @@ describe('JobService', () => { it('should process escrow cancellation', async () => { const jobEntity = createJobEntity(); mockWeb3Service.calculateGasPrice.mockResolvedValueOnce(1n); - mockedEscrowClient.build.mockResolvedValue({ - getStatus: jest.fn().mockResolvedValue('Active'), - getBalance: jest.fn().mockResolvedValue(100n), - cancel: jest - .fn() - .mockResolvedValue({ txHash: '0x', amountRefunded: 100n }), + const getStatusMock = jest.fn().mockResolvedValueOnce('Active'); + const requestCancellationMock = jest + .fn() + .mockResolvedValueOnce({ txHash: '0x', amountRefunded: 100n }); + + mockedEscrowClient.build.mockResolvedValueOnce({ + getStatus: getStatusMock, + requestCancellation: requestCancellationMock, } as unknown as EscrowClient); const result = await jobService.processEscrowCancellation(jobEntity); - expect(result).toHaveProperty('txHash'); + expect(result).toBe(undefined); + expect(mockWeb3Service.getSigner).toHaveBeenCalledWith(jobEntity.chainId); + + expect(getStatusMock).toHaveBeenCalled(); + expect(requestCancellationMock).toHaveBeenCalled(); }); + + it('should throw if escrow status is not Active', async () => { + const jobEntity = createJobEntity(); + mockWeb3Service.calculateGasPrice.mockResolvedValueOnce(1n); + mockedEscrowClient.build.mockResolvedValueOnce({ + getStatus: jest.fn().mockResolvedValueOnce(EscrowStatus.Complete), + requestCancellation: jest.fn(), + } as unknown as EscrowClient); + + await expect( + jobService.processEscrowCancellation(jobEntity), + ).rejects.toThrow( + new ConflictError(ErrorEscrow.InvalidStatusCancellation), + ); + }); + + // TODO: Re-enable when cancellation is removed from processEscrowCancellation + // it('should throw if requestCancellation throws an error', async () => { + // const jobEntity = createJobEntity(); + // mockWeb3Service.calculateGasPrice.mockResolvedValueOnce(1n); + // mockedEscrowClient.build.mockResolvedValueOnce({ + // getStatus: jest.fn().mockResolvedValueOnce(EscrowStatus.Pending), + // requestCancellation: jest + // .fn() + // .mockRejectedValueOnce(new Error('Network error')), + // } as unknown as EscrowClient); + + // await expect( + // jobService.processEscrowCancellation(jobEntity), + // ).rejects.toThrow('Network error'); + // }); }); describe('escrowFailedWebhook', () => { @@ -1510,6 +1550,7 @@ describe('JobService', () => { const fundTokenDecimals = getTokenDecimals( jobEntity.chainId, jobEntity.token as EscrowFundToken, + 18, ); const manifestMock = createMockFortuneManifest({ @@ -1619,7 +1660,7 @@ describe('JobService', () => { }); }); - describe('completeJob', () => { + describe('finalizeJob', () => { it('should complete a job', async () => { const jobEntity = createJobEntity({ status: JobStatus.LAUNCHED, @@ -1628,7 +1669,7 @@ describe('JobService', () => { jobEntity, ); await expect( - jobService.completeJob({ + jobService.finalizeJob({ chainId: ChainId.POLYGON_AMOY, escrowAddress: faker.finance.ethereumAddress(), eventType: EventType.ESCROW_COMPLETED, @@ -1640,64 +1681,153 @@ describe('JobService', () => { }); }); - it('should throw an error if job not found', async () => { + it('should do nothing if job is already COMPLETED', async () => { + const jobEntity = createJobEntity({ status: JobStatus.COMPLETED }); mockJobRepository.findOneByChainIdAndEscrowAddress.mockResolvedValueOnce( - null, + jobEntity, ); await expect( - jobService.completeJob({ + jobService.finalizeJob({ chainId: ChainId.POLYGON_AMOY, escrowAddress: faker.finance.ethereumAddress(), eventType: EventType.ESCROW_COMPLETED, }), - ).rejects.toThrow(new NotFoundError(ErrorJob.NotFound)); + ).resolves.toBeUndefined(); + expect(mockJobRepository.updateOne).not.toHaveBeenCalled(); }); - it('should throw an error if job is not in LAUNCHED or PARTIAL status', async () => { - const jobEntity = createJobEntity({ - status: JobStatus.CANCELED, - }); + it('should do nothing if job is already CANCELED', async () => { + const jobEntity = createJobEntity({ status: JobStatus.CANCELED }); mockJobRepository.findOneByChainIdAndEscrowAddress.mockResolvedValueOnce( jobEntity, ); await expect( - jobService.completeJob({ + jobService.finalizeJob({ chainId: ChainId.POLYGON_AMOY, escrowAddress: faker.finance.ethereumAddress(), eventType: EventType.ESCROW_COMPLETED, }), - ).rejects.toThrow(new ValidationError(ErrorJob.InvalidStatusCompletion)); + ).resolves.toBeUndefined(); + expect(mockJobRepository.updateOne).not.toHaveBeenCalled(); + }); + + it('should call cancelJob if eventType is ESCROW_CANCELED and status is LAUNCHED', async () => { + const jobEntity = createJobEntity({ status: JobStatus.LAUNCHED }); + mockJobRepository.findOneByChainIdAndEscrowAddress.mockResolvedValueOnce( + jobEntity, + ); + const cancelJobSpy = jest + .spyOn(jobService, 'cancelJob') + .mockResolvedValueOnce(); + await jobService.finalizeJob({ + chainId: ChainId.POLYGON_AMOY, + escrowAddress: faker.finance.ethereumAddress(), + eventType: EventType.ESCROW_CANCELED, + }); + expect(cancelJobSpy).toHaveBeenCalledWith(jobEntity); + }); + + it('should throw ConflictError if eventType is not ESCROW_COMPLETED or ESCROW_CANCELED', async () => { + const jobEntity = createJobEntity({ status: JobStatus.LAUNCHED }); + mockJobRepository.findOneByChainIdAndEscrowAddress.mockResolvedValueOnce( + jobEntity, + ); + await expect( + jobService.finalizeJob({ + chainId: ChainId.POLYGON_AMOY, + escrowAddress: faker.finance.ethereumAddress(), + eventType: EventType.ESCROW_FAILED, + }), + ).rejects.toThrow(new ConflictError(ErrorJob.InvalidStatusCompletion)); }); }); - describe('isEscrowFunded', () => { - it('should check if escrow is funded', async () => { - mockedEscrowClient.build.mockResolvedValue({ - getBalance: jest - .fn() - .mockResolvedValue(BigInt(faker.number.int({ min: 1, max: 1000 }))), - } as unknown as EscrowClient); - const result = await jobService.isEscrowFunded( - faker.number.int(), - faker.finance.ethereumAddress(), + describe('cancelJob', () => { + it('should create a refund payment and set status to CANCELED', async () => { + const jobEntity = createJobEntity(); + const tokenDecimals = (TOKEN_ADDRESSES[jobEntity.chainId as ChainId] ?? + {})[jobEntity.token as EscrowFundToken]?.decimals; + const refundAmount = faker.number.float({ + min: 1, + max: 10, + fractionDigits: tokenDecimals, + }); + + mockPaymentService.getJobPayments.mockResolvedValueOnce([]); + mockedEscrowUtils.getCancellationRefund.mockResolvedValueOnce({ + amount: ethers.parseUnits(refundAmount.toString(), tokenDecimals), + escrowAddress: jobEntity.escrowAddress!, + } as any); + mockPaymentService.createRefundPayment.mockResolvedValueOnce(undefined); + mockJobRepository.updateOne.mockResolvedValueOnce(jobEntity); + + await jobService.cancelJob(jobEntity); + + expect(mockPaymentService.getJobPayments).toHaveBeenCalledWith( + jobEntity.id, + PaymentType.SLASH, ); - expect(result).toBe(true); + expect(EscrowUtils.getCancellationRefund).toHaveBeenCalledWith( + jobEntity.chainId, + jobEntity.escrowAddress, + ); + expect(mockPaymentService.createRefundPayment).toHaveBeenCalledWith({ + refundAmount: refundAmount, + refundCurrency: jobEntity.token, + userId: jobEntity.userId, + jobId: jobEntity.id, + }); + expect(jobEntity.status).toBe(JobStatus.CANCELED); + expect(mockJobRepository.updateOne).toHaveBeenCalledWith(jobEntity); }); - it('should return false if escrow was not funded', async () => { - mockedEscrowClient.build.mockResolvedValue({ - getBalance: jest.fn().mockResolvedValue(0n), - } as unknown as EscrowClient); - const result = await jobService.isEscrowFunded( - faker.number.int(), - faker.finance.ethereumAddress(), + it('should NOT create a refund if SLASH payment exists, but still set status to CANCELED', async () => { + const jobEntity = createJobEntity(); + mockPaymentService.getJobPayments.mockResolvedValueOnce([ + { + id: faker.number.int(), + jobId: jobEntity.id, + type: PaymentType.SLASH, + amount: 10, + status: 'SUCCEEDED', + createdAt: new Date(), + } as any, + ]); + await jobService.cancelJob(jobEntity); + + expect(mockPaymentService.getJobPayments).toHaveBeenCalledWith( + jobEntity.id, + PaymentType.SLASH, ); - expect(result).toBe(false); + expect(EscrowUtils.getCancellationRefund).not.toHaveBeenCalled(); + expect(mockPaymentService.createRefundPayment).not.toHaveBeenCalled(); + expect(jobEntity.status).toBe(JobStatus.CANCELED); + expect(mockJobRepository.updateOne).toHaveBeenCalledWith(jobEntity); }); - it('should return false if escrowAddress is not provided', async () => { - const result = await jobService.isEscrowFunded(faker.number.int(), ''); - expect(result).toBe(false); + it('should throw ConflictError if no refund is found', async () => { + const jobEntity = createJobEntity(); + mockPaymentService.getJobPayments.mockResolvedValueOnce([]); + mockedEscrowUtils.getCancellationRefund.mockResolvedValueOnce( + null as any, + ); + + await expect(jobService.cancelJob(jobEntity)).rejects.toThrow( + new ConflictError(ErrorJob.NoRefundFound), + ); + }); + + it('should throw ConflictError if refund.amount is empty', async () => { + const jobEntity = createJobEntity(); + mockPaymentService.getJobPayments.mockResolvedValueOnce([]); + mockedEscrowUtils.getCancellationRefund.mockResolvedValueOnce({ + amount: 0, + escrowAddress: jobEntity.escrowAddress!, + } as any); + + await expect(jobService.cancelJob(jobEntity)).rejects.toThrow( + new ConflictError(ErrorJob.NoRefundFound), + ); }); }); }); diff --git a/packages/apps/job-launcher/server/src/modules/job/job.service.ts b/packages/apps/job-launcher/server/src/modules/job/job.service.ts index fabd5f7e74..d2b71a603c 100644 --- a/packages/apps/job-launcher/server/src/modules/job/job.service.ts +++ b/packages/apps/job-launcher/server/src/modules/job/job.service.ts @@ -35,7 +35,11 @@ import { JobRequestType, JobStatus, } from '../../common/enums/job'; -import { FiatCurrency, PaymentCurrency } from '../../common/enums/payment'; +import { + FiatCurrency, + PaymentCurrency, + PaymentType, +} from '../../common/enums/payment'; import { EventType, OracleType } from '../../common/enums/webhook'; import { ConflictError, @@ -47,6 +51,7 @@ import { PageDto } from '../../common/pagination/pagination.dto'; import { parseUrl } from '../../common/utils'; import { add, div, max, mul } from '../../common/utils/decimal'; import { getTokenDecimals } from '../../common/utils/tokens'; +import logger from '../../logger'; import { CronJobRepository } from '../cron-job/cron-job.repository'; import { AudinoManifestDto, @@ -68,7 +73,6 @@ import { WebhookRepository } from '../webhook/webhook.repository'; import { WhitelistService } from '../whitelist/whitelist.service'; import { CreateJob, - EscrowCancelDto, FortuneFinalResultDto, GetJobsDto, JobDetailsDto, @@ -76,9 +80,7 @@ import { JobQuickLaunchDto, } from './job.dto'; import { JobEntity } from './job.entity'; -import { EscrowAction } from './job.interface'; import { JobRepository } from './job.repository'; -import logger from '../../logger'; @Injectable() export class JobService { @@ -109,36 +111,6 @@ export class JobService { }); } - private createEscrowSpecificActions: Record = { - [HCaptchaJobType.HCAPTCHA]: { - getTrustedHandlers: () => [], - }, - [FortuneJobType.FORTUNE]: { - getTrustedHandlers: () => [], - }, - [CvatJobType.IMAGE_POLYGONS]: { - getTrustedHandlers: () => [], - }, - [CvatJobType.IMAGE_BOXES]: { - getTrustedHandlers: () => [], - }, - [CvatJobType.IMAGE_POINTS]: { - getTrustedHandlers: () => [], - }, - [CvatJobType.IMAGE_BOXES_FROM_POINTS]: { - getTrustedHandlers: () => [], - }, - [CvatJobType.IMAGE_SKELETONS_FROM_BOXES]: { - getTrustedHandlers: () => [], - }, - [AudinoJobType.AUDIO_TRANSCRIPTION]: { - getTrustedHandlers: () => [], - }, - [AudinoJobType.AUDIO_ATTRIBUTE_ANNOTATION]: { - getTrustedHandlers: () => [], - }, - }; - public async createJob( user: UserEntity, requestType: JobRequestType, @@ -335,9 +307,6 @@ export class JobService { } public async createEscrow(jobEntity: JobEntity): Promise { - const { getTrustedHandlers } = - this.createEscrowSpecificActions[jobEntity.requestType]; - const signer = this.web3Service.getSigner(jobEntity.chainId); const escrowClient = await EscrowClient.build(signer); @@ -346,7 +315,6 @@ export class JobService { (TOKEN_ADDRESSES[jobEntity.chainId as ChainId] ?? {})[ jobEntity.token as EscrowFundToken ]!.address, - getTrustedHandlers(), jobEntity.userId.toString(), { gasPrice: await this.web3Service.calculateGasPrice(jobEntity.chainId), @@ -404,6 +372,7 @@ export class JobService { eventType: EventType.ESCROW_CREATED, oracleType: oracleType, hasSignature: oracleType !== OracleType.HCAPTCHA ? true : false, + oracleAddress: jobEntity.exchangeOracle, }); await this.webhookRepository.createUnique(webhookEntity); @@ -481,7 +450,7 @@ export class JobService { throw new ConflictError(ErrorJob.InvalidStatusCancellation); } - let status = JobStatus.CANCELED; + let status = JobStatus.TO_CANCEL; switch (jobEntity.status) { case JobStatus.PAID: if (await this.isCronJobRunning(CronJobType.CreateEscrow)) { @@ -489,33 +458,21 @@ export class JobService { } break; case JobStatus.CREATED: - if (await this.isCronJobRunning(CronJobType.SetupEscrow)) { + if (await this.isCronJobRunning(CronJobType.FundEscrow)) { status = JobStatus.FAILED; } break; case JobStatus.FUNDED: - if (await this.isCronJobRunning(CronJobType.FundEscrow)) { + if (await this.isCronJobRunning(CronJobType.SetupEscrow)) { status = JobStatus.FAILED; } break; - default: - status = JobStatus.TO_CANCEL; - break; } if (status === JobStatus.FAILED) { throw new ConflictError(ErrorJob.CancelWhileProcessing); } - if (status === JobStatus.CANCELED) { - await this.paymentService.createRefundPayment({ - refundAmount: jobEntity.fundAmount, - refundCurrency: jobEntity.token, - userId: jobEntity.userId, - jobId: jobEntity.id, - }); - } - jobEntity.status = status; jobEntity.retriesCount = 0; @@ -683,11 +640,8 @@ export class JobService { throw new ConflictError(ErrorJob.InvalidRequestType); } - public async processEscrowCancellation( - jobEntity: JobEntity, - ): Promise { + public async processEscrowCancellation(jobEntity: JobEntity): Promise { const { chainId, escrowAddress } = jobEntity; - const signer = this.web3Service.getSigner(chainId); const escrowClient = await EscrowClient.build(signer); @@ -700,14 +654,26 @@ export class JobService { throw new ConflictError(ErrorEscrow.InvalidStatusCancellation); } - const balance = await escrowClient.getBalance(escrowAddress!); - if (balance === 0n) { - throw new ConflictError(ErrorEscrow.InvalidBalanceCancellation); + // Attempt requestCancellation; on any error attempt direct cancel once. + // TODO: Remove try-catch when requestCancellation is fully supported by all escrows + try { + await (escrowClient as any).requestCancellation(escrowAddress!, { + gasPrice: await this.web3Service.calculateGasPrice(chainId), + }); + } catch (error: any) { + this.logger.warn( + 'requestCancellation failed, attempting cancel fallback', + { + jobId: jobEntity.id, + chainId, + escrowAddress, + error, + }, + ); + await (escrowClient as any).cancel(escrowAddress!, { + gasPrice: await this.web3Service.calculateGasPrice(chainId), + }); } - - return escrowClient.cancel(escrowAddress!, { - gasPrice: await this.web3Service.calculateGasPrice(chainId), - }); } public async escrowFailedWebhook(dto: WebhookDataDto): Promise { @@ -772,6 +738,7 @@ export class JobService { const fundTokenDecimals = getTokenDecimals( chainId, jobEntity.token as EscrowFundToken, + 18, ); const baseManifestDetails = { @@ -895,7 +862,7 @@ export class JobService { return BigInt(feeValue ? feeValue : 1); } - public async completeJob(dto: WebhookDataDto): Promise { + public async finalizeJob(dto: WebhookDataDto): Promise { const jobEntity = await this.jobRepository.findOneByChainIdAndEscrowAddress( dto.chainId, dto.escrowAddress, @@ -905,33 +872,74 @@ export class JobService { throw new NotFoundError(ErrorJob.NotFound); } - // If job status already completed by getDetails do nothing - if (jobEntity.status === JobStatus.COMPLETED) { + // If job status already completed or canceled by getDetails do nothing + if ( + jobEntity.status === JobStatus.COMPLETED || + jobEntity.status === JobStatus.CANCELED + ) { return; } + if ( jobEntity.status !== JobStatus.LAUNCHED && - jobEntity.status !== JobStatus.PARTIAL + jobEntity.status !== JobStatus.PARTIAL && + jobEntity.status !== JobStatus.CANCELING ) { throw new ConflictError(ErrorJob.InvalidStatusCompletion); } - jobEntity.status = JobStatus.COMPLETED; - await this.jobRepository.updateOne(jobEntity); + // Finalize job based on event type + if ( + dto.eventType === EventType.ESCROW_COMPLETED && + (jobEntity.status === JobStatus.LAUNCHED || + jobEntity.status === JobStatus.PARTIAL) + ) { + jobEntity.status = JobStatus.COMPLETED; + await this.jobRepository.updateOne(jobEntity); + } else if ( + dto.eventType === EventType.ESCROW_CANCELED && + (jobEntity.status === JobStatus.LAUNCHED || + jobEntity.status === JobStatus.PARTIAL || + jobEntity.status === JobStatus.CANCELING) + ) { + this.cancelJob(jobEntity); + } else { + throw new ConflictError(ErrorJob.InvalidStatusCompletion); + } } - public async isEscrowFunded( - chainId: ChainId, - escrowAddress: string, - ): Promise { - if (escrowAddress) { - const signer = this.web3Service.getSigner(chainId); - const escrowClient = await EscrowClient.build(signer); - const balance = await escrowClient.getBalance(escrowAddress); + public async cancelJob(jobEntity: JobEntity): Promise { + const token = (TOKEN_ADDRESSES[jobEntity.chainId as ChainId] ?? {})[ + jobEntity.token as EscrowFundToken + ]; - return balance !== 0n; + if (!token) { + throw new Error(ErrorPayment.UnsupportedToken); } - return false; + const slash = await this.paymentService.getJobPayments( + jobEntity.id, + PaymentType.SLASH, + ); + if (!slash?.length) { + const refund = await EscrowUtils.getCancellationRefund( + jobEntity.chainId, + jobEntity.escrowAddress!, + ); + + if (!refund || !refund.amount) { + throw new ConflictError(ErrorJob.NoRefundFound); + } + + await this.paymentService.createRefundPayment({ + refundAmount: Number(ethers.formatUnits(refund.amount, token.decimals)), + refundCurrency: jobEntity.token, + userId: jobEntity.userId, + jobId: jobEntity.id, + }); + } + + jobEntity.status = JobStatus.CANCELED; + await this.jobRepository.updateOne(jobEntity); } } diff --git a/packages/apps/job-launcher/server/src/modules/payment/payment.repository.ts b/packages/apps/job-launcher/server/src/modules/payment/payment.repository.ts index 1753cd296f..ee4075898a 100644 --- a/packages/apps/job-launcher/server/src/modules/payment/payment.repository.ts +++ b/packages/apps/job-launcher/server/src/modules/payment/payment.repository.ts @@ -23,6 +23,15 @@ export class PaymentRepository extends BaseRepository { return this.findOne({ where: whereOptions }); } + public async findByJobIdAndType( + jobId: number, + type?: string, + ): Promise { + const where: any = { jobId }; + if (type) where.type = type; + return this.find({ where }); + } + public async getUserBalancePayments( userId: number, currency?: string, diff --git a/packages/apps/job-launcher/server/src/modules/payment/payment.service.spec.ts b/packages/apps/job-launcher/server/src/modules/payment/payment.service.spec.ts index 40dd87cdf3..14208d45fc 100644 --- a/packages/apps/job-launcher/server/src/modules/payment/payment.service.spec.ts +++ b/packages/apps/job-launcher/server/src/modules/payment/payment.service.spec.ts @@ -1429,4 +1429,60 @@ describe('PaymentService', () => { ).rejects.toThrow(new ServerError(ErrorPayment.NotEnoughFunds)); }); }); + + describe('getJobPayments', () => { + it('should return payments filtered by jobId and type', async () => { + const jobId = faker.number.int(); + const type = PaymentType.REFUND; + const mockPayments = [ + { + id: faker.number.int(), + jobId, + type, + amount: faker.number.int({ min: 1, max: 1000 }), + currency: PaymentCurrency.USD, + status: PaymentStatus.SUCCEEDED, + createdAt: new Date(), + } as PaymentEntity, + { + id: faker.number.int(), + jobId, + type, + amount: faker.number.int({ min: 1, max: 1000 }), + currency: PaymentCurrency.USD, + status: PaymentStatus.SUCCEEDED, + createdAt: new Date(), + } as PaymentEntity, + ]; + + jest + .spyOn(paymentRepository, 'findByJobIdAndType') + .mockResolvedValueOnce(mockPayments); + + const result = await paymentService.getJobPayments(jobId, type); + + expect(paymentRepository.findByJobIdAndType).toHaveBeenCalledWith( + jobId, + type, + ); + expect(result).toEqual(mockPayments); + }); + + it('should return an empty array if no payments are found', async () => { + const jobId = faker.number.int(); + const type = PaymentType.SLASH; + + jest + .spyOn(paymentRepository, 'findByJobIdAndType') + .mockResolvedValueOnce([]); + + const result = await paymentService.getJobPayments(jobId, type); + + expect(paymentRepository.findByJobIdAndType).toHaveBeenCalledWith( + jobId, + type, + ); + expect(result).toEqual([]); + }); + }); }); diff --git a/packages/apps/job-launcher/server/src/modules/payment/payment.service.ts b/packages/apps/job-launcher/server/src/modules/payment/payment.service.ts index 932fd509f7..537113edd7 100644 --- a/packages/apps/job-launcher/server/src/modules/payment/payment.service.ts +++ b/packages/apps/job-launcher/server/src/modules/payment/payment.service.ts @@ -575,4 +575,11 @@ export class PaymentService { totalUsdAmount: totalUSDAmount, }; } + + public async getJobPayments( + jobId: number, + type?: string, + ): Promise { + return this.paymentRepository.findByJobIdAndType(jobId, type); + } } diff --git a/packages/apps/job-launcher/server/src/modules/routing-protocol/routing-protocol.service.spec.ts b/packages/apps/job-launcher/server/src/modules/routing-protocol/routing-protocol.service.spec.ts index 9893a6d342..01d3e64cbd 100644 --- a/packages/apps/job-launcher/server/src/modules/routing-protocol/routing-protocol.service.spec.ts +++ b/packages/apps/job-launcher/server/src/modules/routing-protocol/routing-protocol.service.spec.ts @@ -147,8 +147,8 @@ describe('RoutingProtocolService', () => { it('should select the first available oracle of specified type', async () => { const availableOracles = [ - { role: Role.ExchangeOracle, address: '0xExchangeOracle1' }, - { role: Role.ExchangeOracle, address: '0xExchangeOracle2' }, + { role: Role.ExchangeOracle, address: '0xExchangeOracle1', url: null }, + { role: Role.ExchangeOracle, address: '0xExchangeOracle2', url: null }, ]; const result = routingProtocolService.selectOracleFromAvailable( @@ -163,8 +163,8 @@ describe('RoutingProtocolService', () => { it('should shuffle oracles and return the first oracle from the shuffled list', () => { const availableOracles = [ - { role: Role.ExchangeOracle, address: '0xExchangeOracle1' }, - { role: Role.ExchangeOracle, address: '0xExchangeOracle2' }, + { role: Role.ExchangeOracle, address: '0xExchangeOracle1', url: null }, + { role: Role.ExchangeOracle, address: '0xExchangeOracle2', url: null }, ]; jest @@ -183,8 +183,8 @@ describe('RoutingProtocolService', () => { it('should update oracle order and select from the newly shuffled list if jobType changes', () => { const availableOracles = [ - { role: Role.ExchangeOracle, address: '0xExchangeOracle1' }, - { role: Role.ExchangeOracle, address: '0xExchangeOracle2' }, + { role: Role.ExchangeOracle, address: '0xExchangeOracle1', url: null }, + { role: Role.ExchangeOracle, address: '0xExchangeOracle2', url: null }, ]; routingProtocolService.oracleOrder = { @@ -218,7 +218,7 @@ describe('RoutingProtocolService', () => { it('should not shuffle if the oracle hash has not changed for the same jobType', () => { const availableOracles = [ - { role: Role.ExchangeOracle, address: '0xExchangeOracle1' }, + { role: Role.ExchangeOracle, address: '0xExchangeOracle1', url: null }, ]; const latestOraclesHash = 'hash123'; @@ -257,8 +257,8 @@ describe('RoutingProtocolService', () => { it('should update the oracle order and hash if the list of available oracles changes', () => { const availableOracles = [ - { role: Role.ExchangeOracle, address: '0xExchangeOracle1' }, - { role: Role.ExchangeOracle, address: '0xExchangeOracle2' }, + { role: Role.ExchangeOracle, address: '0xExchangeOracle1', url: null }, + { role: Role.ExchangeOracle, address: '0xExchangeOracle2', url: null }, ]; const previousHash = 'oldHash'; @@ -294,10 +294,18 @@ describe('RoutingProtocolService', () => { it('should select the oracle from available ones and rotate index', async () => { const availableOracles = [ - { role: Role.ExchangeOracle, address: '0xExchangeOracle1' }, - { role: Role.ExchangeOracle, address: '0xExchangeOracle2' }, - { role: Role.RecordingOracle, address: '0xRecordingOracle1' }, - { role: Role.RecordingOracle, address: '0xRecordingOracle2' }, + { role: Role.ExchangeOracle, address: '0xExchangeOracle1', url: null }, + { role: Role.ExchangeOracle, address: '0xExchangeOracle2', url: null }, + { + role: Role.RecordingOracle, + address: '0xRecordingOracle1', + url: null, + }, + { + role: Role.RecordingOracle, + address: '0xRecordingOracle2', + url: null, + }, ]; const result1 = routingProtocolService.selectOracleFromAvailable( @@ -342,8 +350,12 @@ describe('RoutingProtocolService', () => { describe('selectOracles', () => { it('should select reputation oracle and find available oracles', async () => { const mockAvailableOracles = [ - { role: Role.ExchangeOracle, address: '0xExchangeOracle1' }, - { role: Role.RecordingOracle, address: '0xRecordingOracle1' }, + { role: Role.ExchangeOracle, address: '0xExchangeOracle1', url: null }, + { + role: Role.RecordingOracle, + address: '0xRecordingOracle1', + url: null, + }, ]; web3Service.findAvailableOracles = jest @@ -386,8 +398,8 @@ describe('RoutingProtocolService', () => { ) .mockReturnValue(`${reputationOracle},otherOracle`); jest.spyOn(web3Service, 'findAvailableOracles').mockResolvedValue([ - { address: exchangeOracle, role: Role.ExchangeOracle }, - { address: recordingOracle, role: Role.RecordingOracle }, + { address: exchangeOracle, role: Role.ExchangeOracle, url: null }, + { address: recordingOracle, role: Role.RecordingOracle, url: null }, ]); await expect( @@ -438,7 +450,7 @@ describe('RoutingProtocolService', () => { jest .spyOn(web3Service, 'findAvailableOracles') .mockResolvedValue([ - { address: 'anotherOracle', role: Role.ExchangeOracle }, + { address: 'anotherOracle', role: Role.ExchangeOracle, url: null }, ]); await expect( @@ -467,7 +479,7 @@ describe('RoutingProtocolService', () => { jest .spyOn(web3Service, 'findAvailableOracles') .mockResolvedValue([ - { address: 'anotherOracle', role: Role.RecordingOracle }, + { address: 'anotherOracle', role: Role.RecordingOracle, url: null }, ]); await expect( diff --git a/packages/apps/job-launcher/server/src/modules/routing-protocol/routing-protocol.service.ts b/packages/apps/job-launcher/server/src/modules/routing-protocol/routing-protocol.service.ts index c18ea42f55..2a3827a966 100644 --- a/packages/apps/job-launcher/server/src/modules/routing-protocol/routing-protocol.service.ts +++ b/packages/apps/job-launcher/server/src/modules/routing-protocol/routing-protocol.service.ts @@ -17,6 +17,7 @@ import { OracleIndex, OracleOrder, } from './routing-protocol.interface'; +import { OracleDataDto } from '../web3/web3.dto'; type OracleValue = { [reputationOracle: string]: { @@ -112,7 +113,7 @@ export class RoutingProtocolService { } public selectOracleFromAvailable( - availableOracles: any[], + availableOracles: OracleDataDto[], oracleType: string, chainId: ChainId, reputationOracle: string, @@ -124,7 +125,11 @@ export class RoutingProtocolService { if (!oraclesOfType.length) return ''; - const latestOraclesHash = hashString(JSON.stringify(availableOracles)); + const latestOraclesHash = hashString( + JSON.stringify(availableOracles, (_, value) => + typeof value === 'bigint' ? value.toString() : value, + ), + ); if ( !this.oracleOrder[chainId][reputationOracle][oracleType][jobType] || diff --git a/packages/apps/job-launcher/server/src/modules/web3/web3.dto.ts b/packages/apps/job-launcher/server/src/modules/web3/web3.dto.ts index 4766e6641c..ea3b2dc6ce 100644 --- a/packages/apps/job-launcher/server/src/modules/web3/web3.dto.ts +++ b/packages/apps/job-launcher/server/src/modules/web3/web3.dto.ts @@ -4,9 +4,9 @@ import { IsString } from 'class-validator'; export class OracleDataDto implements Partial { address: string; - role?: string; - url?: string; - jobTypes?: string[]; + role: string | null; + url: string | null; + jobTypes?: string[] | null; } export class AvailableOraclesDto { diff --git a/packages/apps/job-launcher/server/src/modules/webhook/webhook.entity.ts b/packages/apps/job-launcher/server/src/modules/webhook/webhook.entity.ts index d376b0e5bf..a567ffa4b8 100644 --- a/packages/apps/job-launcher/server/src/modules/webhook/webhook.entity.ts +++ b/packages/apps/job-launcher/server/src/modules/webhook/webhook.entity.ts @@ -10,7 +10,9 @@ import { import { ChainId } from '@human-protocol/sdk'; @Entity({ schema: NS, name: 'webhook' }) -@Index(['chainId', 'escrowAddress', 'eventType'], { unique: true }) +@Index(['chainId', 'escrowAddress', 'eventType', 'oracleAddress'], { + unique: true, +}) export class WebhookEntity extends BaseEntity { @Column({ type: 'int' }) public chainId: ChainId; @@ -44,4 +46,7 @@ export class WebhookEntity extends BaseEntity { enum: WebhookStatus, }) public status: WebhookStatus = WebhookStatus.PENDING; + + @Column({ type: 'varchar', nullable: true }) + public oracleAddress?: string; } diff --git a/packages/apps/job-launcher/server/src/modules/webhook/webhook.module.ts b/packages/apps/job-launcher/server/src/modules/webhook/webhook.module.ts index 4d3427fc10..f8f70859f0 100644 --- a/packages/apps/job-launcher/server/src/modules/webhook/webhook.module.ts +++ b/packages/apps/job-launcher/server/src/modules/webhook/webhook.module.ts @@ -1,23 +1,21 @@ import { Module } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; import { ConfigModule } from '@nestjs/config'; +import { TypeOrmModule } from '@nestjs/typeorm'; -import { WebhookService } from './webhook.service'; -import { WebhookEntity } from './webhook.entity'; -import { WebhookRepository } from './webhook.repository'; -import { Web3Module } from '../web3/web3.module'; import { HttpModule } from '@nestjs/axios'; -import { JobModule } from '../job/job.module'; -import { WebhookController } from './webhook.controller'; import { JobEntity } from '../job/job.entity'; +import { JobModule } from '../job/job.module'; import { JobRepository } from '../job/job.repository'; +import { WebhookController } from './webhook.controller'; +import { WebhookEntity } from './webhook.entity'; +import { WebhookRepository } from './webhook.repository'; +import { WebhookService } from './webhook.service'; @Module({ imports: [ TypeOrmModule.forFeature([WebhookEntity, JobEntity]), ConfigModule, JobModule, - Web3Module, HttpModule, ], controllers: [WebhookController], diff --git a/packages/apps/job-launcher/server/src/modules/webhook/webhook.service.spec.ts b/packages/apps/job-launcher/server/src/modules/webhook/webhook.service.spec.ts index 5456323842..a8db5e9550 100644 --- a/packages/apps/job-launcher/server/src/modules/webhook/webhook.service.spec.ts +++ b/packages/apps/job-launcher/server/src/modules/webhook/webhook.service.spec.ts @@ -1,13 +1,6 @@ -jest.mock('@human-protocol/sdk', () => ({ - ...jest.requireActual('@human-protocol/sdk'), - EscrowClient: { - build: jest.fn(), - }, -})); - import { faker } from '@faker-js/faker/.'; import { createMock } from '@golevelup/ts-jest'; -import { ChainId, EscrowClient, KVStoreUtils } from '@human-protocol/sdk'; +import { ChainId, KVStoreUtils } from '@human-protocol/sdk'; import { HttpService } from '@nestjs/axios'; import { HttpStatus } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; @@ -15,7 +8,6 @@ import { Test } from '@nestjs/testing'; import { of, throwError } from 'rxjs'; import { MOCK_ADDRESS, - MOCK_EXCHANGE_ORACLE_ADDRESS, MOCK_EXCHANGE_ORACLE_WEBHOOK_URL, MOCK_MAX_RETRY_COUNT, mockConfig, @@ -33,7 +25,6 @@ import { import { ServerError, ValidationError } from '../../common/errors'; import { JobRepository } from '../job/job.repository'; import { JobService } from '../job/job.service'; -import { Web3Service } from '../web3/web3.service'; import { WebhookDataDto } from './webhook.dto'; import { WebhookEntity } from './webhook.entity'; import { WebhookRepository } from './webhook.repository'; @@ -42,16 +33,10 @@ import { WebhookService } from './webhook.service'; describe('WebhookService', () => { let webhookService: WebhookService, webhookRepository: WebhookRepository, - web3Service: Web3Service, jobService: JobService, jobRepository: JobRepository, httpService: HttpService; - const signerMock = { - address: MOCK_ADDRESS, - getNetwork: jest.fn().mockResolvedValue({ chainId: 1 }), - }; - beforeEach(async () => { const moduleRef = await Test.createTestingModule({ providers: [ @@ -70,12 +55,6 @@ describe('WebhookService', () => { WebhookService, ServerConfigService, Web3ConfigService, - { - provide: Web3Service, - useValue: { - getSigner: jest.fn().mockReturnValue(signerMock), - }, - }, { provide: WebhookRepository, useValue: createMock(), @@ -94,7 +73,6 @@ describe('WebhookService', () => { webhookService = moduleRef.get(WebhookService); webhookRepository = moduleRef.get(WebhookRepository); - web3Service = moduleRef.get(Web3Service); httpService = moduleRef.get(HttpService); jobService = moduleRef.get(JobService); jobRepository = moduleRef.get(JobRepository); @@ -114,21 +92,20 @@ describe('WebhookService', () => { hasSignature: false, oracleType: OracleType.FORTUNE, eventType: EventType.ESCROW_CREATED, + oracleAddress: MOCK_ADDRESS, }; it('should throw an error if webhook url is empty', async () => { - jest - .spyOn(webhookService as any, 'getExchangeOracleWebhookUrl') - .mockResolvedValue(''); + KVStoreUtils.get = jest.fn().mockResolvedValueOnce(''); await expect( (webhookService as any).sendWebhook(webhookEntity), ).rejects.toThrow(new ServerError(ErrorWebhook.UrlNotFound)); }); it('should handle error if any exception is thrown', async () => { - jest - .spyOn(webhookService as any, 'getExchangeOracleWebhookUrl') - .mockResolvedValue(MOCK_EXCHANGE_ORACLE_WEBHOOK_URL); + KVStoreUtils.get = jest + .fn() + .mockResolvedValueOnce(MOCK_EXCHANGE_ORACLE_WEBHOOK_URL); jest.spyOn(httpService as any, 'post').mockImplementation(() => { return throwError(() => new Error('HTTP request failed')); }); @@ -138,9 +115,9 @@ describe('WebhookService', () => { }); it('should successfully process a fortune webhook', async () => { - jest - .spyOn(webhookService as any, 'getExchangeOracleWebhookUrl') - .mockResolvedValue(MOCK_EXCHANGE_ORACLE_WEBHOOK_URL); + KVStoreUtils.get = jest + .fn() + .mockResolvedValueOnce(MOCK_EXCHANGE_ORACLE_WEBHOOK_URL); jest.spyOn(httpService as any, 'post').mockImplementation(() => { return of({ status: HttpStatus.CREATED, @@ -163,9 +140,9 @@ describe('WebhookService', () => { it('should successfully process a cvat webhook', async () => { webhookEntity.oracleType = OracleType.CVAT; - jest - .spyOn(webhookService as any, 'getExchangeOracleWebhookUrl') - .mockResolvedValue(MOCK_EXCHANGE_ORACLE_WEBHOOK_URL); + KVStoreUtils.get = jest + .fn() + .mockResolvedValueOnce(MOCK_EXCHANGE_ORACLE_WEBHOOK_URL); jest.spyOn(httpService as any, 'post').mockImplementation(() => { return of({ status: HttpStatus.CREATED, @@ -189,9 +166,9 @@ describe('WebhookService', () => { it('should successfully process a fortune webhook with signature', async () => { webhookEntity.oracleType = OracleType.FORTUNE; webhookEntity.hasSignature = true; - jest - .spyOn(webhookService as any, 'getExchangeOracleWebhookUrl') - .mockResolvedValue(MOCK_EXCHANGE_ORACLE_WEBHOOK_URL); + KVStoreUtils.get = jest + .fn() + .mockResolvedValueOnce(MOCK_EXCHANGE_ORACLE_WEBHOOK_URL); jest.spyOn(httpService as any, 'post').mockImplementation(() => { return of({ status: HttpStatus.CREATED, @@ -215,9 +192,9 @@ describe('WebhookService', () => { it('should successfully process a cvat webhook with signature', async () => { webhookEntity.oracleType = OracleType.CVAT; webhookEntity.hasSignature = true; - jest - .spyOn(webhookService as any, 'getExchangeOracleWebhookUrl') - .mockResolvedValue(MOCK_EXCHANGE_ORACLE_WEBHOOK_URL); + KVStoreUtils.get = jest + .fn() + .mockResolvedValueOnce(MOCK_EXCHANGE_ORACLE_WEBHOOK_URL); jest.spyOn(httpService as any, 'post').mockImplementation(() => { return of({ status: HttpStatus.CREATED, @@ -239,35 +216,6 @@ describe('WebhookService', () => { }); }); - describe('getExchangeOracleWebhookUrl', () => { - it('should get the exchange oracle webhook URL', async () => { - web3Service.getSigner = jest.fn().mockReturnValue({ - ...signerMock, - provider: { - getLogs: jest.fn().mockResolvedValue([{}]), - getBlockNumber: jest.fn().mockResolvedValue(100), - }, - }); - - (EscrowClient.build as any).mockImplementation(() => ({ - getExchangeOracleAddress: jest - .fn() - .mockResolvedValue(MOCK_EXCHANGE_ORACLE_ADDRESS), - })); - - KVStoreUtils.get = jest - .fn() - .mockResolvedValue(MOCK_EXCHANGE_ORACLE_WEBHOOK_URL); - - const result = await (webhookService as any).getExchangeOracleWebhookUrl( - MOCK_EXCHANGE_ORACLE_ADDRESS, - ChainId.LOCALHOST, - ); - - expect(result).toBe(MOCK_EXCHANGE_ORACLE_WEBHOOK_URL); - }); - }); - describe('handleWebhookError', () => { it('should set webhook status to FAILED if retries exceed threshold', async () => { const webhookEntity: Partial = { @@ -315,11 +263,11 @@ describe('WebhookService', () => { eventType: EventType.ESCROW_COMPLETED, }; - jest.spyOn(jobService, 'completeJob'); + jest.spyOn(jobService, 'finalizeJob'); expect(await webhookService.handleWebhook(webhook)).toBe(undefined); - expect(jobService.completeJob).toHaveBeenCalledWith(webhook); + expect(jobService.finalizeJob).toHaveBeenCalledWith(webhook); }); it('should handle an escrow failed webhook', async () => { @@ -372,7 +320,7 @@ describe('WebhookService', () => { const webhook: WebhookDataDto = { chainId, escrowAddress, - eventType: EventType.ESCROW_CANCELED, + eventType: EventType.ESCROW_CREATED, }; await expect(webhookService.handleWebhook(webhook)).rejects.toThrow( diff --git a/packages/apps/job-launcher/server/src/modules/webhook/webhook.service.ts b/packages/apps/job-launcher/server/src/modules/webhook/webhook.service.ts index 146f6c87d0..733859de9f 100644 --- a/packages/apps/job-launcher/server/src/modules/webhook/webhook.service.ts +++ b/packages/apps/job-launcher/server/src/modules/webhook/webhook.service.ts @@ -1,12 +1,7 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ -import { - ChainId, - EscrowClient, - KVStoreKeys, - KVStoreUtils, -} from '@human-protocol/sdk'; +import { KVStoreKeys, KVStoreUtils } from '@human-protocol/sdk'; import { HttpService } from '@nestjs/axios'; -import { Inject, Injectable } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { firstValueFrom } from 'rxjs'; import { ServerConfigService } from '../../common/config/server-config.service'; import { Web3ConfigService } from '../../common/config/web3-config.service'; @@ -17,21 +12,18 @@ import { ServerError, ValidationError } from '../../common/errors'; import { transformKeysFromCamelToSnake } from '../../common/utils/case-converter'; import { formatAxiosError } from '../../common/utils/http'; import { signMessage } from '../../common/utils/signature'; +import logger from '../../logger'; import { JobRepository } from '../job/job.repository'; import { JobService } from '../job/job.service'; -import { Web3Service } from '../web3/web3.service'; import { WebhookDataDto } from './webhook.dto'; import { WebhookEntity } from './webhook.entity'; import { WebhookRepository } from './webhook.repository'; -import logger from '../../logger'; @Injectable() export class WebhookService { private readonly logger = logger.child({ context: WebhookService.name }); constructor( - @Inject(Web3Service) - private readonly web3Service: Web3Service, private readonly webhookRepository: WebhookRepository, private readonly jobService: JobService, private readonly jobRepository: JobRepository, @@ -49,9 +41,14 @@ export class WebhookService { public async sendWebhook(webhook: WebhookEntity): Promise { // Configure the HTTP request object. let config = {}; - const webhookUrl = await this.getExchangeOracleWebhookUrl( - webhook.escrowAddress, + + if (!webhook.oracleAddress) { + throw new ServerError(ErrorWebhook.InvalidOracleAddress); + } + const webhookUrl = await KVStoreUtils.get( webhook.chainId, + webhook.oracleAddress, + KVStoreKeys.webhookUrl, ); // Check if the webhook URL was found. @@ -93,33 +90,6 @@ export class WebhookService { } } - /** - * Get the webhook URL from the exchange oracle. - * @param escrowAddress - Escrow contract address. - * @param chainId - Chain ID. - * @returns {Promise} - Returns the webhook URL. - */ - private async getExchangeOracleWebhookUrl( - escrowAddress: string, - chainId: ChainId, - ): Promise { - // Get the signer for the given chain. - const signer = this.web3Service.getSigner(chainId); - - // Build the escrow client and get the exchange oracle address. - const escrowClient = await EscrowClient.build(signer); - const exchangeAddress = - await escrowClient.getExchangeOracleAddress(escrowAddress); - - const exchangeOracleUrl = await KVStoreUtils.get( - chainId, - exchangeAddress, - KVStoreKeys.webhookUrl, - ); - - return exchangeOracleUrl; - } - /** * Handles errors that occur during webhook processing. * It logs the error and, based on retry count, updates the webhook status accordingly. @@ -140,7 +110,8 @@ export class WebhookService { public async handleWebhook(webhook: WebhookDataDto): Promise { switch (webhook.eventType) { case EventType.ESCROW_COMPLETED: - await this.jobService.completeJob(webhook); + case EventType.ESCROW_CANCELED: + await this.jobService.finalizeJob(webhook); break; case EventType.ESCROW_FAILED: diff --git a/packages/apps/reputation-oracle/server/package.json b/packages/apps/reputation-oracle/server/package.json index 6095e32da8..bbac3dd490 100644 --- a/packages/apps/reputation-oracle/server/package.json +++ b/packages/apps/reputation-oracle/server/package.json @@ -73,7 +73,7 @@ }, "devDependencies": { "@eslint/js": "^9.33.0", - "@faker-js/faker": "^9.4.0", + "@faker-js/faker": "^9.8.0", "@golevelup/ts-jest": "^0.6.1", "@nestjs/cli": "^10.3.2", "@nestjs/schematics": "^11.0.2", diff --git a/packages/apps/reputation-oracle/server/scripts/setup-kv-store.ts b/packages/apps/reputation-oracle/server/scripts/setup-kv-store.ts index e64b8aaf7f..5165db585c 100644 --- a/packages/apps/reputation-oracle/server/scripts/setup-kv-store.ts +++ b/packages/apps/reputation-oracle/server/scripts/setup-kv-store.ts @@ -1,6 +1,6 @@ import { KVStoreClient, KVStoreKeys, Role } from '@human-protocol/sdk'; import * as dotenv from 'dotenv'; -import { Wallet, ethers } from 'ethers'; +import { Wallet, ethers, NonceManager } from 'ethers'; import * as Minio from 'minio'; const isLocalEnv = process.env.LOCAL === 'true'; @@ -105,7 +105,8 @@ async function setup(): Promise { } const provider = new ethers.JsonRpcProvider(RPC_URL); - const wallet = new Wallet(WEB3_PRIVATE_KEY, provider); + const baseWallet = new Wallet(WEB3_PRIVATE_KEY, provider); + const wallet = new NonceManager(baseWallet); const kvStoreClient = await KVStoreClient.build(wallet); diff --git a/packages/apps/reputation-oracle/server/scripts/setup-staking.ts b/packages/apps/reputation-oracle/server/scripts/setup-staking.ts index 8d266da004..71f6c4c57d 100644 --- a/packages/apps/reputation-oracle/server/scripts/setup-staking.ts +++ b/packages/apps/reputation-oracle/server/scripts/setup-staking.ts @@ -1,12 +1,12 @@ +import { HMToken__factory } from '@human-protocol/core/typechain-types'; import { ChainId, NetworkData, NETWORKS, StakingClient, } from '@human-protocol/sdk'; -import { HMToken__factory } from '@human-protocol/core/typechain-types'; import * as dotenv from 'dotenv'; -import { Wallet, ethers } from 'ethers'; +import { ethers, NonceManager, Wallet } from 'ethers'; dotenv.config({ path: '.env.local' }); @@ -26,7 +26,8 @@ export async function setup(): Promise { const { hmtAddress: hmtTokenAddress, stakingAddress } = NETWORKS[ ChainId.LOCALHOST ] as NetworkData; - const wallet = new Wallet(WEB3_PRIVATE_KEY, provider); + const baseWallet = new Wallet(WEB3_PRIVATE_KEY, provider); + const wallet = new NonceManager(baseWallet); const hmtContract = HMToken__factory.connect(hmtTokenAddress, wallet); const hmtTx = await hmtContract.approve(stakingAddress, 1); diff --git a/packages/apps/reputation-oracle/server/src/modules/abuse/abuse.service.spec.ts b/packages/apps/reputation-oracle/server/src/modules/abuse/abuse.service.spec.ts index d428f930fa..acd76b4af1 100644 --- a/packages/apps/reputation-oracle/server/src/modules/abuse/abuse.service.spec.ts +++ b/packages/apps/reputation-oracle/server/src/modules/abuse/abuse.service.spec.ts @@ -118,7 +118,7 @@ describe('AbuseService', () => { } as unknown as IEscrow); const amount = faker.number.int(); mockedOperatorUtils.getOperator.mockResolvedValueOnce({ - amountStaked: BigInt(amount), + stakedAmount: BigInt(amount), } as IOperator); await abuseService.processSlackInteraction( diff --git a/packages/apps/reputation-oracle/server/src/modules/abuse/abuse.service.ts b/packages/apps/reputation-oracle/server/src/modules/abuse/abuse.service.ts index 20ee094117..bec00cc32b 100644 --- a/packages/apps/reputation-oracle/server/src/modules/abuse/abuse.service.ts +++ b/packages/apps/reputation-oracle/server/src/modules/abuse/abuse.service.ts @@ -120,7 +120,7 @@ export class AbuseService { abuseId: abuseEntity.id, escrowAddress: abuseEntity.escrowAddress, chainId: abuseEntity.chainId, - maxAmount: Number(operator.amountStaked), + maxAmount: Number(operator.stakedAmount), triggerId: data.trigger_id, responseUrl: data.response_url, }); diff --git a/packages/apps/reputation-oracle/server/src/modules/escrow-completion/constants.ts b/packages/apps/reputation-oracle/server/src/modules/escrow-completion/constants.ts index 74385a2045..a488360611 100644 --- a/packages/apps/reputation-oracle/server/src/modules/escrow-completion/constants.ts +++ b/packages/apps/reputation-oracle/server/src/modules/escrow-completion/constants.ts @@ -1,5 +1,3 @@ -export const DEFAULT_BULK_PAYOUT_TX_ID = 1; - export enum EscrowCompletionStatus { PENDING = 'pending', AWAITING_PAYOUTS = 'awaiting_payouts', diff --git a/packages/apps/reputation-oracle/server/src/modules/escrow-completion/escrow-completion.service.spec.ts b/packages/apps/reputation-oracle/server/src/modules/escrow-completion/escrow-completion.service.spec.ts index 704b0dc990..ff12d9727c 100644 --- a/packages/apps/reputation-oracle/server/src/modules/escrow-completion/escrow-completion.service.spec.ts +++ b/packages/apps/reputation-oracle/server/src/modules/escrow-completion/escrow-completion.service.spec.ts @@ -285,7 +285,6 @@ describe('EscrowCompletionService', () => { mockGetEscrowStatus.mockResolvedValue( faker.helpers.arrayElement([ EscrowStatus.Launched, - EscrowStatus.Cancelled, EscrowStatus.Complete, EscrowStatus.Paid, EscrowStatus.Partial, @@ -840,6 +839,7 @@ describe('EscrowCompletionService', () => { const mockCompleteEscrow = jest.fn(); let launcherAddress: string; let exchangeOracleAddress: string; + let recordingOracleAddress: string; beforeEach(() => { mockedEscrowClient.build.mockResolvedValue({ @@ -849,6 +849,7 @@ describe('EscrowCompletionService', () => { launcherAddress = faker.finance.ethereumAddress(); exchangeOracleAddress = faker.finance.ethereumAddress(); + recordingOracleAddress = faker.finance.ethereumAddress(); }); describe('handle failures', () => { @@ -859,6 +860,7 @@ describe('EscrowCompletionService', () => { mockedEscrowUtils.getEscrow.mockResolvedValueOnce({ launcher: launcherAddress, exchangeOracle: exchangeOracleAddress, + recordingOracle: recordingOracleAddress, } as unknown as IEscrow); }); @@ -1003,6 +1005,7 @@ describe('EscrowCompletionService', () => { mockedEscrowUtils.getEscrow.mockResolvedValueOnce({ launcher: launcherAddress, exchangeOracle: exchangeOracleAddress, + recordingOracle: recordingOracleAddress, } as unknown as IEscrow); mockGetEscrowStatus.mockResolvedValueOnce(escrowStatus); const mockGasPrice = faker.number.bigInt(); @@ -1057,7 +1060,9 @@ describe('EscrowCompletionService', () => { ); expect(mockReputationService.assessEscrowParties).toHaveBeenCalledWith( paidPayoutsRecord.chainId, - paidPayoutsRecord.escrowAddress, + launcherAddress, + exchangeOracleAddress, + recordingOracleAddress, ); const expectedWebhookData = { @@ -1087,6 +1092,7 @@ describe('EscrowCompletionService', () => { mockedEscrowUtils.getEscrow.mockResolvedValueOnce({ launcher: launcherAddress, exchangeOracle: exchangeOracleAddress, + recordingOracle: recordingOracleAddress, } as unknown as IEscrow); mockGetEscrowStatus.mockResolvedValueOnce(escrowStatus); diff --git a/packages/apps/reputation-oracle/server/src/modules/escrow-completion/escrow-completion.service.ts b/packages/apps/reputation-oracle/server/src/modules/escrow-completion/escrow-completion.service.ts index 2aff7ec4c6..f9bb8049fa 100644 --- a/packages/apps/reputation-oracle/server/src/modules/escrow-completion/escrow-completion.service.ts +++ b/packages/apps/reputation-oracle/server/src/modules/escrow-completion/escrow-completion.service.ts @@ -12,6 +12,7 @@ import { Injectable } from '@nestjs/common'; import { ethers } from 'ethers'; import stringify from 'json-stable-stringify'; import _ from 'lodash'; +import { v4 as uuidv4 } from 'uuid'; import { BACKOFF_INTERVAL_SECONDS } from '@/common/constants'; import { JobManifest, JobRequestType } from '@/common/types'; @@ -29,7 +30,7 @@ import { OutgoingWebhookService } from '@/modules/webhook/webhook-outgoing.servi import { calculateExponentialBackoffMs } from '@/utils/backoff'; import * as manifestUtils from '@/utils/manifest'; -import { DEFAULT_BULK_PAYOUT_TX_ID, EscrowCompletionStatus } from './constants'; +import { EscrowCompletionStatus } from './constants'; import { EscrowCompletionEntity } from './escrow-completion.entity'; import { EscrowCompletionRepository } from './escrow-completion.repository'; import { EscrowPayoutsBatchEntity } from './escrow-payouts-batch.entity'; @@ -123,7 +124,10 @@ export class EscrowCompletionService { const escrowStatus = await escrowClient.getStatus( escrowCompletionEntity.escrowAddress, ); - if (escrowStatus === EscrowStatus.Pending) { + if ( + escrowStatus === EscrowStatus.Pending || + escrowStatus === EscrowStatus.ToCancel + ) { const escrowData = await EscrowUtils.getEscrow( escrowCompletionEntity.chainId, escrowCompletionEntity.escrowAddress, @@ -195,6 +199,9 @@ export class EscrowCompletionService { } escrowCompletionEntity.status = EscrowCompletionStatus.AWAITING_PAYOUTS; + if (escrowStatus === EscrowStatus.Cancelled) { + escrowCompletionEntity.status = EscrowCompletionStatus.PAID; + } await this.escrowCompletionRepository.updateOne(escrowCompletionEntity); } catch (error) { this.logger.error('Failed to process pending escrow completion', { @@ -224,26 +231,40 @@ export class EscrowCompletionService { const signer = this.web3Service.getSigner(chainId); const escrowClient = await EscrowClient.build(signer); - const escrowStatus = await escrowClient.getStatus(escrowAddress); - if ([EscrowStatus.Partial, EscrowStatus.Paid].includes(escrowStatus)) { - await escrowClient.complete(escrowAddress, { - gasPrice: await this.web3Service.calculateGasPrice(chainId), - }); + const escrowData = await EscrowUtils.getEscrow(chainId, escrowAddress); + if (!escrowData) { + throw new Error('Escrow data is missing'); + } + + let escrowStatus = await escrowClient.getStatus(escrowAddress); + if ( + [ + EscrowStatus.Partial, + EscrowStatus.Paid, + EscrowStatus.ToCancel, + ].includes(escrowStatus) + ) { + const gasPrice = await this.web3Service.calculateGasPrice(chainId); + + if (escrowStatus === EscrowStatus.ToCancel) { + await escrowClient.cancel(escrowAddress, { gasPrice }); + escrowStatus = EscrowStatus.Cancelled; + } else { + await escrowClient.complete(escrowAddress, { gasPrice }); + escrowStatus = EscrowStatus.Complete; + } /** * This operation can fail and lost, so it's "at most once" */ await this.reputationService.assessEscrowParties( chainId, - escrowAddress, + escrowData.launcher, + escrowData.exchangeOracle!, + escrowData.recordingOracle!, ); } - const escrowData = await EscrowUtils.getEscrow(chainId, escrowAddress); - if (!escrowData) { - throw new Error('Escrow data is missing'); - } - const oracleAddresses: string[] = [ escrowData.launcher as string, escrowData.exchangeOracle as string, @@ -252,7 +273,10 @@ export class EscrowCompletionService { const webhookPayload = { chainId, escrowAddress, - eventType: OutgoingWebhookEventType.ESCROW_COMPLETED, + eventType: + escrowData.status === EscrowStatus[EscrowStatus.Cancelled] + ? OutgoingWebhookEventType.ESCROW_CANCELED + : OutgoingWebhookEventType.ESCROW_COMPLETED, }; let allWebhooksCreated = true; @@ -416,7 +440,7 @@ export class EscrowCompletionService { Array.from(recipientToAmountMap.values()), escrowCompletionEntity.finalResultsUrl as string, escrowCompletionEntity.finalResultsHash as string, - DEFAULT_BULK_PAYOUT_TX_ID, + uuidv4(), // TODO obtain it from intermediate results false, { gasPrice: await this.web3Service.calculateGasPrice( diff --git a/packages/apps/reputation-oracle/server/src/modules/escrow-completion/payouts-calculation/audino-payouts-calculator.ts b/packages/apps/reputation-oracle/server/src/modules/escrow-completion/payouts-calculation/audino-payouts-calculator.ts index 24adccb2b7..c49adbb412 100644 --- a/packages/apps/reputation-oracle/server/src/modules/escrow-completion/payouts-calculation/audino-payouts-calculator.ts +++ b/packages/apps/reputation-oracle/server/src/modules/escrow-completion/payouts-calculation/audino-payouts-calculator.ts @@ -1,4 +1,4 @@ -import { EscrowClient, EscrowUtils } from '@human-protocol/sdk'; +import { EscrowClient } from '@human-protocol/sdk'; import { Injectable } from '@nestjs/common'; import type { OverrideProperties } from 'type-fest'; @@ -43,13 +43,8 @@ export class AudinoPayoutsCalculator implements EscrowPayoutsCalculator { if (annotations.jobs.length === 0 || annotations.results.length === 0) { throw new Error('Invalid annotation meta'); } - - const escrowData = await EscrowUtils.getEscrow(chainId, escrowAddress); - if (!escrowData) { - throw new Error('Escrow not found'); - } - const jobBountyValue = - BigInt(escrowData.totalFundedAmount) / BigInt(annotations.jobs.length); + const reservedFunds = await escrowClient.getReservedFunds(escrowAddress); + const jobBountyValue = reservedFunds / BigInt(annotations.jobs.length); const workersBounties = new Map(); for (const job of annotations.jobs) { diff --git a/packages/apps/reputation-oracle/server/src/modules/escrow-completion/payouts-calculation/fortune-payouts-calculator.spec.ts b/packages/apps/reputation-oracle/server/src/modules/escrow-completion/payouts-calculation/fortune-payouts-calculator.spec.ts index 955ecbea3f..d44c26dc29 100644 --- a/packages/apps/reputation-oracle/server/src/modules/escrow-completion/payouts-calculation/fortune-payouts-calculator.spec.ts +++ b/packages/apps/reputation-oracle/server/src/modules/escrow-completion/payouts-calculation/fortune-payouts-calculator.spec.ts @@ -4,11 +4,10 @@ import { faker } from '@faker-js/faker'; import { createMock } from '@golevelup/ts-jest'; import { EscrowClient } from '@human-protocol/sdk'; import { Test } from '@nestjs/testing'; -import { ethers } from 'ethers'; -import _ from 'lodash'; import { StorageService } from '@/modules/storage'; import { Web3Service } from '@/modules/web3'; +import { generateTestnetChainId } from '@/modules/web3/fixtures'; import { generateFortuneManifest, generateFortuneSolution } from '../fixtures'; import { FortunePayoutsCalculator } from './fortune-payouts-calculator'; @@ -48,6 +47,16 @@ describe('FortunePayoutsCalculator', () => { }); describe('calculate', () => { + const balance = BigInt(faker.number.int({ min: 1000 }).toString()); + const mockedGetReservedFunds = jest + .fn() + .mockImplementation(async () => balance); + + beforeAll(() => { + mockedEscrowClient.build.mockResolvedValue({ + getReservedFunds: mockedGetReservedFunds, + } as unknown as EscrowClient); + }); it('should properly calculate payouts', async () => { const validSolutions = [ generateFortuneSolution(), @@ -67,7 +76,7 @@ describe('FortunePayoutsCalculator', () => { mockedWeb3Service.getTokenDecimals.mockResolvedValueOnce(tokenDecimals); const payouts = await calculator.calculate({ - chainId: faker.number.int(), + chainId: generateTestnetChainId(), escrowAddress: faker.finance.ethereumAddress(), finalResultsUrl: resultsUrl, manifest, @@ -75,15 +84,18 @@ describe('FortunePayoutsCalculator', () => { const expectedPayouts = validSolutions.map((s) => ({ address: s.workerAddress, - amount: - BigInt( - ethers.parseUnits(manifest.fundAmount.toString(), tokenDecimals), - ) / BigInt(validSolutions.length), + amount: balance / BigInt(validSolutions.length), })); - expect(_.sortBy(payouts, 'address')).toEqual( - _.sortBy(expectedPayouts, 'address'), - ); + const normalize = (arr: { address: string; amount: bigint }[]) => + arr + .map((p) => ({ + address: p.address.toLowerCase(), + amount: p.amount.toString(), + })) + .sort((a, b) => a.address.localeCompare(b.address)); + + expect(normalize(payouts)).toEqual(normalize(expectedPayouts)); expect(mockedStorageService.downloadJsonLikeData).toHaveBeenCalledWith( resultsUrl, diff --git a/packages/apps/reputation-oracle/server/src/modules/escrow-completion/payouts-calculation/fortune-payouts-calculator.ts b/packages/apps/reputation-oracle/server/src/modules/escrow-completion/payouts-calculation/fortune-payouts-calculator.ts index 7aa56e50f1..f2d5221d24 100644 --- a/packages/apps/reputation-oracle/server/src/modules/escrow-completion/payouts-calculation/fortune-payouts-calculator.ts +++ b/packages/apps/reputation-oracle/server/src/modules/escrow-completion/payouts-calculation/fortune-payouts-calculator.ts @@ -1,6 +1,5 @@ import { EscrowClient } from '@human-protocol/sdk'; import { Injectable } from '@nestjs/common'; -import { ethers } from 'ethers'; import type { OverrideProperties } from 'type-fest'; import { FortuneFinalResult, FortuneManifest } from '@/common/types'; @@ -26,11 +25,12 @@ export class FortunePayoutsCalculator implements EscrowPayoutsCalculator { ) {} async calculate({ - manifest, chainId, escrowAddress, finalResultsUrl, }: CalculateFortunePayoutsInput): Promise { + const signer = this.web3Service.getSigner(chainId); + const escrowClient = await EscrowClient.build(signer); const finalResults = await this.storageService.downloadJsonLikeData( finalResultsUrl, @@ -40,16 +40,8 @@ export class FortunePayoutsCalculator implements EscrowPayoutsCalculator { .filter((result) => !result.error) .map((item) => item.workerAddress); - const signer = this.web3Service.getSigner(chainId); - const escrowClient = await EscrowClient.build(signer); - const tokenAddress = await escrowClient.getTokenAddress(escrowAddress); - const tokenDecimals = await this.web3Service.getTokenDecimals( - chainId, - tokenAddress, - ); - const payoutAmount = - ethers.parseUnits(manifest.fundAmount.toString(), tokenDecimals) / - BigInt(recipients.length); + const reservedFunds = await escrowClient.getReservedFunds(escrowAddress); + const payoutAmount = reservedFunds / BigInt(recipients.length); return recipients.map((recipient) => ({ address: recipient, diff --git a/packages/apps/reputation-oracle/server/src/modules/escrow-completion/results-processing/escrow-results-processor.spec.ts b/packages/apps/reputation-oracle/server/src/modules/escrow-completion/results-processing/escrow-results-processor.spec.ts index 94b1f9775e..dd0d332cc5 100644 --- a/packages/apps/reputation-oracle/server/src/modules/escrow-completion/results-processing/escrow-results-processor.spec.ts +++ b/packages/apps/reputation-oracle/server/src/modules/escrow-completion/results-processing/escrow-results-processor.spec.ts @@ -4,16 +4,17 @@ import * as crypto from 'crypto'; import { faker } from '@faker-js/faker'; import { createMock } from '@golevelup/ts-jest'; -import { EscrowClient, EscrowUtils, IEscrow } from '@human-protocol/sdk'; +import { EscrowClient, EscrowStatus, EscrowUtils } from '@human-protocol/sdk'; +import { IEscrow } from '@human-protocol/sdk'; import { Test } from '@nestjs/testing'; import { JobManifest } from '@/common/types'; -import { PgpEncryptionService } from '@/modules/encryption'; -import { StorageService } from '@/modules/storage'; -import { Web3Service } from '@/modules/web3'; -import { generateTestnetChainId } from '@/modules/web3/fixtures'; import { BaseEscrowResultsProcessor } from './escrow-results-processor'; +import { PgpEncryptionService } from '../../encryption'; +import { StorageService } from '../../storage'; +import { Web3Service } from '../../web3'; +import { generateTestnetChainId } from '../../web3/fixtures'; class TestEscrowResultsProcessor extends BaseEscrowResultsProcessor { override constructIntermediateResultsUrl = jest.fn(); @@ -75,6 +76,10 @@ describe('BaseEscrowResultsProcessor', () => { it('should fail if downloaded results not complete', async () => { const testError = new Error(`Error: ${faker.string.ulid()}`); + mockedEscrowUtils.getEscrow.mockResolvedValueOnce({ + status: EscrowStatus[EscrowStatus.Launched], + } as unknown as IEscrow); + processor.assertResultsComplete.mockRejectedValueOnce(testError); await expect( @@ -145,6 +150,90 @@ describe('BaseEscrowResultsProcessor', () => { const jobLauncherAddress = faker.finance.ethereumAddress(); mockedEscrowUtils.getEscrow.mockResolvedValueOnce({ launcher: jobLauncherAddress, + status: EscrowStatus[EscrowStatus.Launched], + } as unknown as IEscrow); + + const encryptedResult = faker.string.ulid(); + mockedPgpEncryptionService.encrypt.mockResolvedValueOnce(encryptedResult); + + const encryptedResultHash = crypto + .createHash('sha256') + .update(encryptedResult) + .digest('hex'); + const storedResultsFileName = `${encryptedResultHash}.${faker.system.fileExt()}`; + processor.getFinalResultsFileName.mockReturnValueOnce( + storedResultsFileName, + ); + + const storedResultsUrl = faker.internet.url(); + mockedStorageService.uploadData.mockResolvedValueOnce(storedResultsUrl); + + /** ACT */ + const manifest = { resultToAssert: jobResult } as unknown as JobManifest; + const storedResultMeta = await processor.storeResults( + chainId, + escrowAddress, + manifest, + ); + + /** ASSERT */ + expect(storedResultMeta.url).toBe(storedResultsUrl); + expect(storedResultMeta.hash).toBe(encryptedResultHash); + + expect(mockedGetIntermediateResultsUrl).toHaveBeenCalledWith( + escrowAddress, + ); + expect(processor.constructIntermediateResultsUrl).toHaveBeenCalledWith( + baseResultsUrl, + ); + expect(mockedStorageService.downloadFile).toHaveBeenCalledWith( + resultsUrl, + ); + expect(mockedEscrowUtils.getEscrow).toHaveBeenCalledWith( + chainId, + escrowAddress, + ); + + expect(mockedPgpEncryptionService.encrypt).toHaveBeenCalledTimes(1); + expect(mockedPgpEncryptionService.encrypt).toHaveBeenCalledWith( + resultsFileContent, + chainId, + [jobLauncherAddress], + ); + + expect(processor.getFinalResultsFileName).toHaveBeenCalledTimes(1); + expect(processor.getFinalResultsFileName).toHaveBeenCalledWith( + encryptedResultHash, + ); + + expect(mockedStorageService.uploadData).toHaveBeenCalledTimes(1); + expect(mockedStorageService.uploadData).toHaveBeenCalledWith( + encryptedResult, + storedResultsFileName, + 'text/plain', + ); + }); + it('should NOT call assertResultsComplete if status is ToCancel', async () => { + /** ARRANGE */ + const chainId = generateTestnetChainId(); + const escrowAddress = faker.finance.ethereumAddress(); + + const baseResultsUrl = faker.internet.url(); + mockedGetIntermediateResultsUrl.mockResolvedValueOnce(baseResultsUrl); + + const resultsUrl = `${baseResultsUrl}/${faker.system.fileName()}`; + processor.constructIntermediateResultsUrl.mockReturnValueOnce(resultsUrl); + + const jobResult = faker.number.int(); + const resultsFileContent = Buffer.from(jobResult.toString()); + mockedStorageService.downloadFile.mockResolvedValueOnce( + resultsFileContent, + ); + + const jobLauncherAddress = faker.finance.ethereumAddress(); + mockedEscrowUtils.getEscrow.mockResolvedValueOnce({ + launcher: jobLauncherAddress, + status: EscrowStatus[EscrowStatus.ToCancel], } as unknown as IEscrow); const encryptedResult = faker.string.ulid(); @@ -177,6 +266,7 @@ describe('BaseEscrowResultsProcessor', () => { expect(mockedGetIntermediateResultsUrl).toHaveBeenCalledWith( escrowAddress, ); + expect(processor.assertResultsComplete).not.toHaveBeenCalled(); expect(processor.constructIntermediateResultsUrl).toHaveBeenCalledWith( baseResultsUrl, ); diff --git a/packages/apps/reputation-oracle/server/src/modules/escrow-completion/results-processing/escrow-results-processor.ts b/packages/apps/reputation-oracle/server/src/modules/escrow-completion/results-processing/escrow-results-processor.ts index 668ba2fbe3..e93938056d 100644 --- a/packages/apps/reputation-oracle/server/src/modules/escrow-completion/results-processing/escrow-results-processor.ts +++ b/packages/apps/reputation-oracle/server/src/modules/escrow-completion/results-processing/escrow-results-processor.ts @@ -1,6 +1,11 @@ import crypto from 'crypto'; -import { ChainId, EscrowClient, EscrowUtils } from '@human-protocol/sdk'; +import { + ChainId, + EscrowClient, + EscrowStatus, + EscrowUtils, +} from '@human-protocol/sdk'; import { Injectable } from '@nestjs/common'; import { ContentType } from '@/common/enums'; @@ -52,13 +57,15 @@ export abstract class BaseEscrowResultsProcessor intermediateResultsUrl, ); - await this.assertResultsComplete(fileContent, manifest); - const escrowData = await EscrowUtils.getEscrow(chainId, escrowAddress); if (!escrowData) { throw new Error('Escrow not found'); } + if (escrowData.status !== EscrowStatus[EscrowStatus.ToCancel]) { + await this.assertResultsComplete(fileContent, manifest); + } + const encryptedResults = await this.pgpEncryptionService.encrypt( fileContent, chainId, diff --git a/packages/apps/reputation-oracle/server/src/modules/reputation/reputation.service.spec.ts b/packages/apps/reputation-oracle/server/src/modules/reputation/reputation.service.spec.ts index cbaa386606..5028487983 100644 --- a/packages/apps/reputation-oracle/server/src/modules/reputation/reputation.service.spec.ts +++ b/packages/apps/reputation-oracle/server/src/modules/reputation/reputation.service.spec.ts @@ -350,9 +350,13 @@ describe('ReputationService', () => { } as unknown as EscrowClient); const chainId = generateTestnetChainId(); - const escrowAddress = faker.finance.ethereumAddress(); - await service.assessEscrowParties(chainId, escrowAddress); + await service.assessEscrowParties( + chainId, + jobLauncherAddress, + exchangeOracleAddress, + recordingOracleAddress, + ); expect(spyOnIncreaseReputation).toHaveBeenCalledTimes(4); expect(spyOnIncreaseReputation).toHaveBeenCalledWith( diff --git a/packages/apps/reputation-oracle/server/src/modules/reputation/reputation.service.ts b/packages/apps/reputation-oracle/server/src/modules/reputation/reputation.service.ts index 3ec19aa471..5da96b30b4 100644 --- a/packages/apps/reputation-oracle/server/src/modules/reputation/reputation.service.ts +++ b/packages/apps/reputation-oracle/server/src/modules/reputation/reputation.service.ts @@ -1,4 +1,4 @@ -import { ChainId, EscrowClient } from '@human-protocol/sdk'; +import { ChainId } from '@human-protocol/sdk'; import { Injectable } from '@nestjs/common'; import { SortDirection } from '@/common/enums'; @@ -181,18 +181,10 @@ export class ReputationService { async assessEscrowParties( chainId: ChainId, - escrowAddress: string, + jobLauncherAddress: string, + exchangeOracleAddress: string, + recordingOracleAddress: string, ): Promise { - const signer = this.web3Service.getSigner(chainId); - const escrowClient = await EscrowClient.build(signer); - - const [jobLauncherAddress, exchangeOracleAddress, recordingOracleAddress] = - await Promise.all([ - escrowClient.getJobLauncherAddress(escrowAddress), - escrowClient.getExchangeOracleAddress(escrowAddress), - escrowClient.getRecordingOracleAddress(escrowAddress), - ]); - const reputationTypeToAddress = new Map([ [ReputationEntityType.JOB_LAUNCHER, jobLauncherAddress], [ReputationEntityType.EXCHANGE_ORACLE, exchangeOracleAddress], diff --git a/packages/apps/reputation-oracle/server/src/modules/webhook/types.ts b/packages/apps/reputation-oracle/server/src/modules/webhook/types.ts index 25c184514a..3032b02d74 100644 --- a/packages/apps/reputation-oracle/server/src/modules/webhook/types.ts +++ b/packages/apps/reputation-oracle/server/src/modules/webhook/types.ts @@ -9,12 +9,14 @@ export type IncomingWebhookData = { export enum IncomingWebhookEventType { JOB_COMPLETED = 'job_completed', + JOB_CANCELED = 'job_canceled', } export enum OutgoingWebhookEventType { ESCROW_COMPLETED = 'escrow_completed', ABUSE_DETECTED = 'abuse_detected', ABUSE_DISMISSED = 'abuse_dismissed', + ESCROW_CANCELED = 'escrow_canceled', } export enum IncomingWebhookStatus { diff --git a/packages/core/.gitignore b/packages/core/.gitignore index cf04de3264..47f9a7719b 100644 --- a/packages/core/.gitignore +++ b/packages/core/.gitignore @@ -34,4 +34,6 @@ deployments_tenderly # xlayer !.openzeppelin/unknown-196.json # xlayer-testnet -!.openzeppelin/unknown-195.json \ No newline at end of file +!.openzeppelin/unknown-195.json +# aurora-testnet +!.openzeppelin/unknown-1313161555.json \ No newline at end of file diff --git a/packages/core/.openzeppelin/bsc-testnet.json b/packages/core/.openzeppelin/bsc-testnet.json index 6c7ae72df7..a4f4a54b95 100644 --- a/packages/core/.openzeppelin/bsc-testnet.json +++ b/packages/core/.openzeppelin/bsc-testnet.json @@ -1,10 +1,6 @@ { "manifestVersion": "3.2", "proxies": [ - { - "address": "0x2bfA592DBDaF434DDcbb893B1916120d181DAD18", - "kind": "uups" - }, { "address": "0x5517fE916Fe9F8dB15B0DDc76ebDf0BdDCd4ed18", "kind": "uups" @@ -16,6 +12,10 @@ { "address": "0xb8F62639aA3DD51A39d6AACD969363e7F87dcc98", "kind": "uups" + }, + { + "address": "0x2bfA592DBDaF434DDcbb893B1916120d181DAD18", + "kind": "uups" } ], "impls": { @@ -1858,6 +1858,1104 @@ }, "namespaces": {} } + }, + "f8e9ac20e2ef662f82dd51c2bdd2f5415bcbfca8fd6b7900007e8208c2b46e29": { + "address": "0x507f1b95E925E2954b46B0Cf4ECDEcfef59564e9", + "txHash": "0x12d03eb1c68cadb39900fce90632e10eb1cf0944dc86ab607d8a9ed870fce84c", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "66da5f3ce04da663eb9aa55e0dbde3419bb476d69c099b4790a0efbe9b7a6bd9": { + "address": "0x19DA25c88EA626a35c7d1c2C72D02d336e07db17", + "txHash": "0x793feb4960b31b48cc74161aa8c4421e7e34cdad3670bba3a298a8775846f73d", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "1b9cc1abc5ad9da9cf7c6c9eed8d9be4f0d3f4dbbb45592a6806f4be793b48d2": { + "address": "0x225483434AF9dB239FdCb56897d5334149078fE7", + "txHash": "0x77db49e15aa877a3fb772bb8728433f1552307921789f07de519e6925269f5a5", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "78b91bbd764b4da787c28797b2b2d0985c5707f3b060d4f093624dcd621f2873": { + "address": "0x3542460C3c9Dc97A923720BF36B58B40CFff4501", + "txHash": "0x5eaf9eb098dfd228a9b25d066815044ef5237eede2b8b881df25b7f92fcbacee", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "61e95adb2141c800da93b707b059f3a476618c1ed0057a8e2d07a31d5bc3c4b3": { + "address": "0x00Fe98c58F54cF1C311611277eBC1c6301d17a0B", + "txHash": "0xb8cd951b38d3a93b9bac4a7871407d0be4c34846ace2441c9c4efb727e140860", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "0b3f3143732508087efac60711ac3095e6c5416a94fdc771b1a6d0182f1fb0f1": { + "address": "0x59dC9A19390c5EA5D56d50D0156dfdf0eEc2BAA9", + "txHash": "0xdb0cdb304f8fdd607e188881691bc27de9fcd7eba856dad6e131d4e9abf802c9", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "2aa185827c72f950a7fd37fc218e513487d9653120cf7513af78e43f2341648b": { + "address": "0x7F3a31DF60C967320A3cc40cEA831Eea5aE20649", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:189" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } } } } diff --git a/packages/core/.openzeppelin/sepolia.json b/packages/core/.openzeppelin/sepolia.json index 9db9f24c42..9666a47f72 100644 --- a/packages/core/.openzeppelin/sepolia.json +++ b/packages/core/.openzeppelin/sepolia.json @@ -6,11 +6,6 @@ "txHash": "0x762bc0aa1b1ce66fe079b31443365d1ab215fc51bc1b0467160dd09f3abc639a", "kind": "uups" }, - { - "address": "0x5987A5558d961ee674efe4A8c8eB7B1b5495D3bf", - "txHash": "0x37e01ad4f1221197996086c2169d1ef1ec2e2874dde8c096dce3f91d82455b5f", - "kind": "uups" - }, { "address": "0xaEf023AdF6D48239E520F69080bC14eCE4fCFBdd", "txHash": "0x6fe2bccee60cd77036ad31d957b1862ee1d9d6726967202a47e3a34facbf5913", @@ -20,6 +15,10 @@ "address": "0xF95541CC8548B9329e6122aeBD006603eB9F3d26", "txHash": "0x026b9c522a535f4da3359265d2d268e038b1f20f0a45715d2ea1fe9a49270e85", "kind": "transparent" + }, + { + "address": "0x5987A5558d961ee674efe4A8c8eB7B1b5495D3bf", + "kind": "uups" } ], "impls": { @@ -1031,9 +1030,9 @@ "namespaces": {} } }, - "997c4276ebd1068cf2fca3ea27c2437e7b4653172694493e47a1b4e2d25bae8e": { - "address": "0x4be4c98F0AB61D0248a09398827aD9Bb693Ee609", - "txHash": "0xa793af2a4e929cb34ab18cc12987d817a206ea7e99417664bf54aa367e5cac8b", + "66da5f3ce04da663eb9aa55e0dbde3419bb476d69c099b4790a0efbe9b7a6bd9": { + "address": "0xa84a452912BE23ac14c4318A006120C9c8A9B853", + "txHash": "0xf100eca213db8ea6754c36c61caef3eaa4b9b268fff6f4386abf868d4ba247b2", "layout": { "solcVersion": "0.8.23", "storage": [ @@ -1063,140 +1062,166 @@ "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" }, { - "label": "__gap", + "label": "_owner", "offset": 0, "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC165Upgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:41" - }, - { - "label": "_hashedName", - "offset": 0, - "slot": "101", - "type": "t_bytes32", - "contract": "EIP712Upgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:40", - "renamedFrom": "_HASHED_NAME" + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" }, { - "label": "_hashedVersion", + "label": "__gap", "offset": 0, - "slot": "102", - "type": "t_bytes32", - "contract": "EIP712Upgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:42", - "renamedFrom": "_HASHED_VERSION" + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" }, { - "label": "_name", + "label": "__gap", "offset": 0, - "slot": "103", - "type": "t_string_storage", - "contract": "EIP712Upgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44" + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" }, { - "label": "_version", + "label": "__gap", "offset": 0, - "slot": "104", - "type": "t_string_storage", - "contract": "EIP712Upgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:45" + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" }, { - "label": "__gap", + "label": "counter", "offset": 0, - "slot": "105", - "type": "t_array(t_uint256)48_storage", - "contract": "EIP712Upgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:204" + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" }, { - "label": "__gap", + "label": "escrowCounters", "offset": 0, - "slot": "153", - "type": "t_array(t_uint256)50_storage", - "contract": "IGovernorUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/governance/IGovernorUpgradeable.sol:325" + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" }, { - "label": "__gap", + "label": "lastEscrow", "offset": 0, "slot": "203", - "type": "t_array(t_uint256)50_storage", - "contract": "IGovernorTimelockUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/governance/extensions/IGovernorTimelockUpgradeable.sol:38" + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" }, { - "label": "_name", + "label": "staking", "offset": 0, - "slot": "253", - "type": "t_string_storage", - "contract": "GovernorUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/governance/GovernorUpgradeable.sol:51" + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" }, { - "label": "_proposals", + "label": "minimumStake", "offset": 0, - "slot": "254", - "type": "t_mapping(t_uint256,t_struct(ProposalCore)600_storage)", - "contract": "GovernorUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/governance/GovernorUpgradeable.sol:54", - "retypedFrom": "mapping(uint256 => Governor.ProposalCore)" + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" }, { - "label": "_governanceCall", + "label": "admin", "offset": 0, - "slot": "255", - "type": "t_struct(Bytes32Deque)10266_storage", - "contract": "GovernorUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/governance/GovernorUpgradeable.sol:60" + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" }, { "label": "__gap", "offset": 0, - "slot": "257", - "type": "t_array(t_uint256)46_storage", - "contract": "GovernorUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/governance/GovernorUpgradeable.sol:735" + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" }, - { - "label": "_votingDelay", - "offset": 0, - "slot": "303", - "type": "t_uint256", - "contract": "GovernorSettingsUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorSettingsUpgradeable.sol:15" + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "1b9cc1abc5ad9da9cf7c6c9eed8d9be4f0d3f4dbbb45592a6806f4be793b48d2": { + "address": "0x704f72b69506A51277c0f0CE99FA1e2e564F5a35", + "txHash": "0xdaae919f4ea6d941e0bd34f674da99c903c56ad5f9f88588d684287c6b144363", + "layout": { + "solcVersion": "0.8.23", + "storage": [ { - "label": "_votingPeriod", + "label": "_initialized", "offset": 0, - "slot": "304", - "type": "t_uint256", - "contract": "GovernorSettingsUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorSettingsUpgradeable.sol:16" + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" }, { - "label": "_proposalThreshold", - "offset": 0, - "slot": "305", - "type": "t_uint256", - "contract": "GovernorSettingsUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorSettingsUpgradeable.sol:17" + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" }, { "label": "__gap", "offset": 0, - "slot": "306", - "type": "t_array(t_uint256)47_storage", - "contract": "GovernorSettingsUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorSettingsUpgradeable.sol:121" + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" }, { "label": "_owner", "offset": 0, - "slot": "353", + "slot": "51", "type": "t_address", "contract": "OwnableUpgradeable", "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" @@ -1204,179 +1229,239 @@ { "label": "__gap", "offset": 0, - "slot": "354", + "slot": "52", "type": "t_array(t_uint256)49_storage", "contract": "OwnableUpgradeable", "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" }, { - "label": "spokeContractsMapping", + "label": "__gap", "offset": 0, - "slot": "403", - "type": "t_mapping(t_bytes32,t_mapping(t_uint16,t_bool))", - "contract": "CrossChainGovernorCountingSimple", - "src": "contracts/governance/CrossChainGovernorCountingSimple.sol:18" + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" }, { - "label": "spokeContracts", + "label": "__gap", "offset": 0, - "slot": "404", - "type": "t_array(t_struct(CrossChainAddress)13605_storage)dyn_storage", - "contract": "CrossChainGovernorCountingSimple", - "src": "contracts/governance/CrossChainGovernorCountingSimple.sol:19" + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" }, { - "label": "spokeContractsMappingSnapshots", + "label": "counter", "offset": 0, - "slot": "405", - "type": "t_mapping(t_uint256,t_mapping(t_bytes32,t_mapping(t_uint16,t_bool)))", - "contract": "CrossChainGovernorCountingSimple", - "src": "contracts/governance/CrossChainGovernorCountingSimple.sol:20" + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" }, { - "label": "spokeContractsSnapshots", + "label": "escrowCounters", "offset": 0, - "slot": "406", - "type": "t_mapping(t_uint256,t_array(t_struct(CrossChainAddress)13605_storage)dyn_storage)", - "contract": "CrossChainGovernorCountingSimple", - "src": "contracts/governance/CrossChainGovernorCountingSimple.sol:22" + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" }, { - "label": "spokeVotes", + "label": "lastEscrow", "offset": 0, - "slot": "407", - "type": "t_mapping(t_uint256,t_mapping(t_bytes32,t_mapping(t_uint16,t_struct(SpokeProposalVote)13614_storage)))", - "contract": "CrossChainGovernorCountingSimple", - "src": "contracts/governance/CrossChainGovernorCountingSimple.sol:23" + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" }, { - "label": "_proposalVotes", + "label": "staking", "offset": 0, - "slot": "408", - "type": "t_mapping(t_uint256,t_struct(ProposalVote)13630_storage)", - "contract": "CrossChainGovernorCountingSimple", - "src": "contracts/governance/CrossChainGovernorCountingSimple.sol:25" + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" }, { - "label": "token", + "label": "minimumStake", "offset": 0, - "slot": "409", - "type": "t_contract(IERC5805Upgradeable)4632", - "contract": "GovernorVotesUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorVotesUpgradeable.sol:18" + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" }, { - "label": "__gap", + "label": "admin", "offset": 0, - "slot": "410", - "type": "t_array(t_uint256)50_storage", - "contract": "GovernorVotesUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorVotesUpgradeable.sol:68" + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" }, { - "label": "_quorumNumerator", + "label": "__gap", "offset": 0, - "slot": "460", - "type": "t_uint256", - "contract": "GovernorVotesQuorumFractionUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorVotesQuorumFractionUpgradeable.sol:20" + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "61e95adb2141c800da93b707b059f3a476618c1ed0057a8e2d07a31d5bc3c4b3": { + "address": "0x2454B0962DE39AF9aB03C887e518b209622CF964", + "txHash": "0xef78c2dd74d940fc37b227862ed2671d8510c5161693160430a1d67cf7dee8ac", + "layout": { + "solcVersion": "0.8.23", + "storage": [ { - "label": "_quorumNumeratorHistory", + "label": "_initialized", "offset": 0, - "slot": "461", - "type": "t_struct(Trace224)5746_storage", - "contract": "GovernorVotesQuorumFractionUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorVotesQuorumFractionUpgradeable.sol:23", - "retypedFrom": "Checkpoints.History" + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" }, { "label": "__gap", "offset": 0, - "slot": "462", - "type": "t_array(t_uint256)48_storage", - "contract": "GovernorVotesQuorumFractionUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorVotesQuorumFractionUpgradeable.sol:132" + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" }, { - "label": "_timelock", + "label": "_owner", "offset": 0, - "slot": "510", - "type": "t_contract(TimelockControllerUpgradeable)3488", - "contract": "GovernorTimelockControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorTimelockControlUpgradeable.sol:28" + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" }, { - "label": "_timelockIds", + "label": "__gap", "offset": 0, - "slot": "511", - "type": "t_mapping(t_uint256,t_bytes32)", - "contract": "GovernorTimelockControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorTimelockControlUpgradeable.sol:29" + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" }, { "label": "__gap", "offset": 0, - "slot": "512", - "type": "t_array(t_uint256)48_storage", - "contract": "GovernorTimelockControlUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorTimelockControlUpgradeable.sol:177" + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" }, { - "label": "_magistrate", + "label": "__gap", "offset": 0, - "slot": "560", - "type": "t_address", - "contract": "Magistrate", - "src": "contracts/governance/magistrate/Magistrate.sol:13" + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" }, { - "label": "wormholeRelayer", + "label": "counter", "offset": 0, - "slot": "561", - "type": "t_contract(IWormholeRelayer)16471", - "contract": "MetaHumanGovernor", - "src": "contracts/governance/MetaHumanGovernor.sol:48" + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" }, { - "label": "secondsPerBlock", + "label": "escrowCounters", "offset": 0, - "slot": "562", - "type": "t_uint256", - "contract": "MetaHumanGovernor", - "src": "contracts/governance/MetaHumanGovernor.sol:50" + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" }, { - "label": "chainId", + "label": "lastEscrow", "offset": 0, - "slot": "563", - "type": "t_uint16", - "contract": "MetaHumanGovernor", - "src": "contracts/governance/MetaHumanGovernor.sol:51" + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" }, { - "label": "processedMessages", + "label": "staking", "offset": 0, - "slot": "564", - "type": "t_mapping(t_bytes32,t_bool)", - "contract": "MetaHumanGovernor", - "src": "contracts/governance/MetaHumanGovernor.sol:53" + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" }, { - "label": "collectionStarted", + "label": "minimumStake", "offset": 0, - "slot": "565", - "type": "t_mapping(t_uint256,t_bool)", - "contract": "MetaHumanGovernor", - "src": "contracts/governance/MetaHumanGovernor.sol:54" + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" }, { - "label": "collectionFinished", + "label": "admin", "offset": 0, - "slot": "566", - "type": "t_mapping(t_uint256,t_bool)", - "contract": "MetaHumanGovernor", - "src": "contracts/governance/MetaHumanGovernor.sol:55" + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" } ], "types": { @@ -1384,25 +1469,9 @@ "label": "address", "numberOfBytes": "20" }, - "t_array(t_struct(Checkpoint224)5751_storage)dyn_storage": { - "label": "struct CheckpointsUpgradeable.Checkpoint224[]", - "numberOfBytes": "32" - }, - "t_array(t_struct(CrossChainAddress)13605_storage)dyn_storage": { - "label": "struct CrossChainGovernorCountingSimple.CrossChainAddress[]", - "numberOfBytes": "32" - }, - "t_array(t_uint256)46_storage": { - "label": "uint256[46]", - "numberOfBytes": "1472" - }, - "t_array(t_uint256)47_storage": { - "label": "uint256[47]", - "numberOfBytes": "1504" - }, - "t_array(t_uint256)48_storage": { - "label": "uint256[48]", - "numberOfBytes": "1536" + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" }, "t_array(t_uint256)49_storage": { "label": "uint256[49]", @@ -1416,294 +1485,14 @@ "label": "bool", "numberOfBytes": "1" }, - "t_bytes24": { - "label": "bytes24", - "numberOfBytes": "24" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_bytes4": { - "label": "bytes4", - "numberOfBytes": "4" - }, - "t_contract(IERC5805Upgradeable)4632": { - "label": "contract IERC5805Upgradeable", - "numberOfBytes": "20" - }, - "t_contract(IWormholeRelayer)16471": { - "label": "contract IWormholeRelayer", - "numberOfBytes": "20" - }, - "t_contract(TimelockControllerUpgradeable)3488": { - "label": "contract TimelockControllerUpgradeable", - "numberOfBytes": "20" - }, - "t_int128": { - "label": "int128", - "numberOfBytes": "16" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_bool)": { - "label": "mapping(bytes32 => bool)", + "t_uint256": { + "label": "uint256", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_mapping(t_uint16,t_bool))": { - "label": "mapping(bytes32 => mapping(uint16 => bool))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_mapping(t_uint16,t_struct(SpokeProposalVote)13614_storage))": { - "label": "mapping(bytes32 => mapping(uint16 => struct CrossChainGovernorCountingSimple.SpokeProposalVote))", - "numberOfBytes": "32" - }, - "t_mapping(t_int128,t_bytes32)": { - "label": "mapping(int128 => bytes32)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint16,t_bool)": { - "label": "mapping(uint16 => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint16,t_struct(SpokeProposalVote)13614_storage)": { - "label": "mapping(uint16 => struct CrossChainGovernorCountingSimple.SpokeProposalVote)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_array(t_struct(CrossChainAddress)13605_storage)dyn_storage)": { - "label": "mapping(uint256 => struct CrossChainGovernorCountingSimple.CrossChainAddress[])", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_bool)": { - "label": "mapping(uint256 => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_bytes32)": { - "label": "mapping(uint256 => bytes32)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_mapping(t_bytes32,t_mapping(t_uint16,t_bool)))": { - "label": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bool)))", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_mapping(t_bytes32,t_mapping(t_uint16,t_struct(SpokeProposalVote)13614_storage)))": { - "label": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => struct CrossChainGovernorCountingSimple.SpokeProposalVote)))", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(ProposalCore)600_storage)": { - "label": "mapping(uint256 => struct GovernorUpgradeable.ProposalCore)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(ProposalVote)13630_storage)": { - "label": "mapping(uint256 => struct CrossChainGovernorCountingSimple.ProposalVote)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(Bytes32Deque)10266_storage": { - "label": "struct DoubleEndedQueueUpgradeable.Bytes32Deque", - "members": [ - { - "label": "_begin", - "type": "t_int128", - "offset": 0, - "slot": "0" - }, - { - "label": "_end", - "type": "t_int128", - "offset": 16, - "slot": "0" - }, - { - "label": "_data", - "type": "t_mapping(t_int128,t_bytes32)", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(Checkpoint224)5751_storage": { - "label": "struct CheckpointsUpgradeable.Checkpoint224", - "members": [ - { - "label": "_key", - "type": "t_uint32", - "offset": 0, - "slot": "0" - }, - { - "label": "_value", - "type": "t_uint224", - "offset": 4, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(CrossChainAddress)13605_storage": { - "label": "struct CrossChainGovernorCountingSimple.CrossChainAddress", - "members": [ - { - "label": "contractAddress", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "chainId", - "type": "t_uint16", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(ProposalCore)600_storage": { - "label": "struct GovernorUpgradeable.ProposalCore", - "members": [ - { - "label": "voteStart", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "proposer", - "type": "t_address", - "offset": 8, - "slot": "0" - }, - { - "label": "__gap_unused0", - "type": "t_bytes4", - "offset": 28, - "slot": "0" - }, - { - "label": "voteEnd", - "type": "t_uint64", - "offset": 0, - "slot": "1" - }, - { - "label": "__gap_unused1", - "type": "t_bytes24", - "offset": 8, - "slot": "1" - }, - { - "label": "executed", - "type": "t_bool", - "offset": 0, - "slot": "2" - }, - { - "label": "canceled", - "type": "t_bool", - "offset": 1, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(ProposalVote)13630_storage": { - "label": "struct CrossChainGovernorCountingSimple.ProposalVote", - "members": [ - { - "label": "againstVotes", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "forVotes", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "abstainVotes", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "hasVoted", - "type": "t_mapping(t_address,t_bool)", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_struct(SpokeProposalVote)13614_storage": { - "label": "struct CrossChainGovernorCountingSimple.SpokeProposalVote", - "members": [ - { - "label": "forVotes", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "againstVotes", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "abstainVotes", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "initialized", - "type": "t_bool", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_struct(Trace224)5746_storage": { - "label": "struct CheckpointsUpgradeable.Trace224", - "members": [ - { - "label": "_checkpoints", - "type": "t_array(t_struct(Checkpoint224)5751_storage)dyn_storage", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_uint16": { - "label": "uint16", - "numberOfBytes": "2" - }, - "t_uint224": { - "label": "uint224", - "numberOfBytes": "28" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint32": { - "label": "uint32", - "numberOfBytes": "4" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, "t_uint8": { "label": "uint8", "numberOfBytes": "1" @@ -1712,9 +1501,9 @@ "namespaces": {} } }, - "fd661d18c38477f9c943739b80bab1bbfa30389ba9656eee838e7a47a12c63db": { - "address": "0x6325FaaB4E829236843373Bb7Ced43ed8F5Ce6ed", - "txHash": "0x19362ac1e0dfff1066092ef5ee7268d8196b1c8df6bde72f97bcf9e59552f8c6", + "997c4276ebd1068cf2fca3ea27c2437e7b4653172694493e47a1b4e2d25bae8e": { + "address": "0x4be4c98F0AB61D0248a09398827aD9Bb693Ee609", + "txHash": "0xa793af2a4e929cb34ab18cc12987d817a206ea7e99417664bf54aa367e5cac8b", "layout": { "solcVersion": "0.8.23", "storage": [ @@ -2015,7 +1804,7 @@ "label": "wormholeRelayer", "offset": 0, "slot": "561", - "type": "t_contract(IWormholeRelayer)16479", + "type": "t_contract(IWormholeRelayer)16471", "contract": "MetaHumanGovernor", "src": "contracts/governance/MetaHumanGovernor.sol:48" }, @@ -2113,7 +1902,7 @@ "label": "contract IERC5805Upgradeable", "numberOfBytes": "20" }, - "t_contract(IWormholeRelayer)16479": { + "t_contract(IWormholeRelayer)16471": { "label": "contract IWormholeRelayer", "numberOfBytes": "20" }, @@ -2393,9 +2182,9 @@ "namespaces": {} } }, - "4ce58128162dd4657e8191cb81f01bcd8d412ac24cacecafa126c9609d51b344": { - "address": "0x855eed71B17052d0DF1786cc47EA35BDFF5Cad43", - "txHash": "0x0389b877ad9087d81bd9604eee14833e2f311c9c24bf2d37f22dd5d1d59a99d1", + "fd661d18c38477f9c943739b80bab1bbfa30389ba9656eee838e7a47a12c63db": { + "address": "0x6325FaaB4E829236843373Bb7Ced43ed8F5Ce6ed", + "txHash": "0x19362ac1e0dfff1066092ef5ee7268d8196b1c8df6bde72f97bcf9e59552f8c6", "layout": { "solcVersion": "0.8.23", "storage": [ @@ -2511,7 +2300,7 @@ "label": "_governanceCall", "offset": 0, "slot": "255", - "type": "t_struct(Bytes32Deque)10879_storage", + "type": "t_struct(Bytes32Deque)10266_storage", "contract": "GovernorUpgradeable", "src": "@openzeppelin/contracts-upgradeable/governance/GovernorUpgradeable.sol:60" }, @@ -2583,7 +2372,7 @@ "label": "spokeContracts", "offset": 0, "slot": "404", - "type": "t_array(t_struct(CrossChainAddress)23540_storage)dyn_storage", + "type": "t_array(t_struct(CrossChainAddress)13605_storage)dyn_storage", "contract": "CrossChainGovernorCountingSimple", "src": "contracts/governance/CrossChainGovernorCountingSimple.sol:19" }, @@ -2599,7 +2388,7 @@ "label": "spokeContractsSnapshots", "offset": 0, "slot": "406", - "type": "t_mapping(t_uint256,t_array(t_struct(CrossChainAddress)23540_storage)dyn_storage)", + "type": "t_mapping(t_uint256,t_array(t_struct(CrossChainAddress)13605_storage)dyn_storage)", "contract": "CrossChainGovernorCountingSimple", "src": "contracts/governance/CrossChainGovernorCountingSimple.sol:22" }, @@ -2607,7 +2396,7 @@ "label": "spokeVotes", "offset": 0, "slot": "407", - "type": "t_mapping(t_uint256,t_mapping(t_bytes32,t_mapping(t_uint16,t_struct(SpokeProposalVote)23549_storage)))", + "type": "t_mapping(t_uint256,t_mapping(t_bytes32,t_mapping(t_uint16,t_struct(SpokeProposalVote)13614_storage)))", "contract": "CrossChainGovernorCountingSimple", "src": "contracts/governance/CrossChainGovernorCountingSimple.sol:23" }, @@ -2615,7 +2404,7 @@ "label": "_proposalVotes", "offset": 0, "slot": "408", - "type": "t_mapping(t_uint256,t_struct(ProposalVote)23565_storage)", + "type": "t_mapping(t_uint256,t_struct(ProposalVote)13630_storage)", "contract": "CrossChainGovernorCountingSimple", "src": "contracts/governance/CrossChainGovernorCountingSimple.sol:25" }, @@ -2623,7 +2412,7 @@ "label": "token", "offset": 0, "slot": "409", - "type": "t_contract(IERC5805Upgradeable)4653", + "type": "t_contract(IERC5805Upgradeable)4632", "contract": "GovernorVotesUpgradeable", "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorVotesUpgradeable.sol:18" }, @@ -2647,7 +2436,7 @@ "label": "_quorumNumeratorHistory", "offset": 0, "slot": "461", - "type": "t_struct(Trace224)6249_storage", + "type": "t_struct(Trace224)5746_storage", "contract": "GovernorVotesQuorumFractionUpgradeable", "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorVotesQuorumFractionUpgradeable.sol:23", "retypedFrom": "Checkpoints.History" @@ -2696,7 +2485,7 @@ "label": "wormholeRelayer", "offset": 0, "slot": "561", - "type": "t_contract(IWormholeRelayer)26845", + "type": "t_contract(IWormholeRelayer)16479", "contract": "MetaHumanGovernor", "src": "contracts/governance/MetaHumanGovernor.sol:48" }, @@ -2739,14 +2528,6 @@ "type": "t_mapping(t_uint256,t_bool)", "contract": "MetaHumanGovernor", "src": "contracts/governance/MetaHumanGovernor.sol:55" - }, - { - "label": "__gap", - "offset": 0, - "slot": "567", - "type": "t_array(t_uint256)50_storage", - "contract": "MetaHumanGovernor", - "src": "contracts/governance/MetaHumanGovernor.sol:57" } ], "types": { @@ -2754,11 +2535,11 @@ "label": "address", "numberOfBytes": "20" }, - "t_array(t_struct(Checkpoint224)6254_storage)dyn_storage": { + "t_array(t_struct(Checkpoint224)5751_storage)dyn_storage": { "label": "struct CheckpointsUpgradeable.Checkpoint224[]", "numberOfBytes": "32" }, - "t_array(t_struct(CrossChainAddress)23540_storage)dyn_storage": { + "t_array(t_struct(CrossChainAddress)13605_storage)dyn_storage": { "label": "struct CrossChainGovernorCountingSimple.CrossChainAddress[]", "numberOfBytes": "32" }, @@ -2798,11 +2579,11 @@ "label": "bytes4", "numberOfBytes": "4" }, - "t_contract(IERC5805Upgradeable)4653": { + "t_contract(IERC5805Upgradeable)4632": { "label": "contract IERC5805Upgradeable", "numberOfBytes": "20" }, - "t_contract(IWormholeRelayer)26845": { + "t_contract(IWormholeRelayer)16479": { "label": "contract IWormholeRelayer", "numberOfBytes": "20" }, @@ -2826,7 +2607,7 @@ "label": "mapping(bytes32 => mapping(uint16 => bool))", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_mapping(t_uint16,t_struct(SpokeProposalVote)23549_storage))": { + "t_mapping(t_bytes32,t_mapping(t_uint16,t_struct(SpokeProposalVote)13614_storage))": { "label": "mapping(bytes32 => mapping(uint16 => struct CrossChainGovernorCountingSimple.SpokeProposalVote))", "numberOfBytes": "32" }, @@ -2838,11 +2619,11 @@ "label": "mapping(uint16 => bool)", "numberOfBytes": "32" }, - "t_mapping(t_uint16,t_struct(SpokeProposalVote)23549_storage)": { + "t_mapping(t_uint16,t_struct(SpokeProposalVote)13614_storage)": { "label": "mapping(uint16 => struct CrossChainGovernorCountingSimple.SpokeProposalVote)", "numberOfBytes": "32" }, - "t_mapping(t_uint256,t_array(t_struct(CrossChainAddress)23540_storage)dyn_storage)": { + "t_mapping(t_uint256,t_array(t_struct(CrossChainAddress)13605_storage)dyn_storage)": { "label": "mapping(uint256 => struct CrossChainGovernorCountingSimple.CrossChainAddress[])", "numberOfBytes": "32" }, @@ -2858,7 +2639,7 @@ "label": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bool)))", "numberOfBytes": "32" }, - "t_mapping(t_uint256,t_mapping(t_bytes32,t_mapping(t_uint16,t_struct(SpokeProposalVote)23549_storage)))": { + "t_mapping(t_uint256,t_mapping(t_bytes32,t_mapping(t_uint16,t_struct(SpokeProposalVote)13614_storage)))": { "label": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => struct CrossChainGovernorCountingSimple.SpokeProposalVote)))", "numberOfBytes": "32" }, @@ -2866,7 +2647,7 @@ "label": "mapping(uint256 => struct GovernorUpgradeable.ProposalCore)", "numberOfBytes": "32" }, - "t_mapping(t_uint256,t_struct(ProposalVote)23565_storage)": { + "t_mapping(t_uint256,t_struct(ProposalVote)13630_storage)": { "label": "mapping(uint256 => struct CrossChainGovernorCountingSimple.ProposalVote)", "numberOfBytes": "32" }, @@ -2874,7 +2655,7 @@ "label": "string", "numberOfBytes": "32" }, - "t_struct(Bytes32Deque)10879_storage": { + "t_struct(Bytes32Deque)10266_storage": { "label": "struct DoubleEndedQueueUpgradeable.Bytes32Deque", "members": [ { @@ -2898,7 +2679,7 @@ ], "numberOfBytes": "64" }, - "t_struct(Checkpoint224)6254_storage": { + "t_struct(Checkpoint224)5751_storage": { "label": "struct CheckpointsUpgradeable.Checkpoint224", "members": [ { @@ -2916,7 +2697,7 @@ ], "numberOfBytes": "32" }, - "t_struct(CrossChainAddress)23540_storage": { + "t_struct(CrossChainAddress)13605_storage": { "label": "struct CrossChainGovernorCountingSimple.CrossChainAddress", "members": [ { @@ -2982,7 +2763,7 @@ ], "numberOfBytes": "96" }, - "t_struct(ProposalVote)23565_storage": { + "t_struct(ProposalVote)13630_storage": { "label": "struct CrossChainGovernorCountingSimple.ProposalVote", "members": [ { @@ -3012,7 +2793,7 @@ ], "numberOfBytes": "128" }, - "t_struct(SpokeProposalVote)23549_storage": { + "t_struct(SpokeProposalVote)13614_storage": { "label": "struct CrossChainGovernorCountingSimple.SpokeProposalVote", "members": [ { @@ -3042,12 +2823,12 @@ ], "numberOfBytes": "128" }, - "t_struct(Trace224)6249_storage": { + "t_struct(Trace224)5746_storage": { "label": "struct CheckpointsUpgradeable.Trace224", "members": [ { "label": "_checkpoints", - "type": "t_array(t_struct(Checkpoint224)6254_storage)dyn_storage", + "type": "t_array(t_struct(Checkpoint224)5751_storage)dyn_storage", "offset": 0, "slot": "0" } @@ -3081,6 +2862,1007 @@ }, "namespaces": {} } + }, + "4ce58128162dd4657e8191cb81f01bcd8d412ac24cacecafa126c9609d51b344": { + "address": "0x855eed71B17052d0DF1786cc47EA35BDFF5Cad43", + "txHash": "0x0389b877ad9087d81bd9604eee14833e2f311c9c24bf2d37f22dd5d1d59a99d1", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC165Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:41" + }, + { + "label": "_hashedName", + "offset": 0, + "slot": "101", + "type": "t_bytes32", + "contract": "EIP712Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:40", + "renamedFrom": "_HASHED_NAME" + }, + { + "label": "_hashedVersion", + "offset": 0, + "slot": "102", + "type": "t_bytes32", + "contract": "EIP712Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:42", + "renamedFrom": "_HASHED_VERSION" + }, + { + "label": "_name", + "offset": 0, + "slot": "103", + "type": "t_string_storage", + "contract": "EIP712Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44" + }, + { + "label": "_version", + "offset": 0, + "slot": "104", + "type": "t_string_storage", + "contract": "EIP712Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:45" + }, + { + "label": "__gap", + "offset": 0, + "slot": "105", + "type": "t_array(t_uint256)48_storage", + "contract": "EIP712Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:204" + }, + { + "label": "__gap", + "offset": 0, + "slot": "153", + "type": "t_array(t_uint256)50_storage", + "contract": "IGovernorUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/governance/IGovernorUpgradeable.sol:325" + }, + { + "label": "__gap", + "offset": 0, + "slot": "203", + "type": "t_array(t_uint256)50_storage", + "contract": "IGovernorTimelockUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/governance/extensions/IGovernorTimelockUpgradeable.sol:38" + }, + { + "label": "_name", + "offset": 0, + "slot": "253", + "type": "t_string_storage", + "contract": "GovernorUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/governance/GovernorUpgradeable.sol:51" + }, + { + "label": "_proposals", + "offset": 0, + "slot": "254", + "type": "t_mapping(t_uint256,t_struct(ProposalCore)600_storage)", + "contract": "GovernorUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/governance/GovernorUpgradeable.sol:54", + "retypedFrom": "mapping(uint256 => Governor.ProposalCore)" + }, + { + "label": "_governanceCall", + "offset": 0, + "slot": "255", + "type": "t_struct(Bytes32Deque)10879_storage", + "contract": "GovernorUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/governance/GovernorUpgradeable.sol:60" + }, + { + "label": "__gap", + "offset": 0, + "slot": "257", + "type": "t_array(t_uint256)46_storage", + "contract": "GovernorUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/governance/GovernorUpgradeable.sol:735" + }, + { + "label": "_votingDelay", + "offset": 0, + "slot": "303", + "type": "t_uint256", + "contract": "GovernorSettingsUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorSettingsUpgradeable.sol:15" + }, + { + "label": "_votingPeriod", + "offset": 0, + "slot": "304", + "type": "t_uint256", + "contract": "GovernorSettingsUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorSettingsUpgradeable.sol:16" + }, + { + "label": "_proposalThreshold", + "offset": 0, + "slot": "305", + "type": "t_uint256", + "contract": "GovernorSettingsUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorSettingsUpgradeable.sol:17" + }, + { + "label": "__gap", + "offset": 0, + "slot": "306", + "type": "t_array(t_uint256)47_storage", + "contract": "GovernorSettingsUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorSettingsUpgradeable.sol:121" + }, + { + "label": "_owner", + "offset": 0, + "slot": "353", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "354", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "spokeContractsMapping", + "offset": 0, + "slot": "403", + "type": "t_mapping(t_bytes32,t_mapping(t_uint16,t_bool))", + "contract": "CrossChainGovernorCountingSimple", + "src": "contracts/governance/CrossChainGovernorCountingSimple.sol:18" + }, + { + "label": "spokeContracts", + "offset": 0, + "slot": "404", + "type": "t_array(t_struct(CrossChainAddress)23540_storage)dyn_storage", + "contract": "CrossChainGovernorCountingSimple", + "src": "contracts/governance/CrossChainGovernorCountingSimple.sol:19" + }, + { + "label": "spokeContractsMappingSnapshots", + "offset": 0, + "slot": "405", + "type": "t_mapping(t_uint256,t_mapping(t_bytes32,t_mapping(t_uint16,t_bool)))", + "contract": "CrossChainGovernorCountingSimple", + "src": "contracts/governance/CrossChainGovernorCountingSimple.sol:20" + }, + { + "label": "spokeContractsSnapshots", + "offset": 0, + "slot": "406", + "type": "t_mapping(t_uint256,t_array(t_struct(CrossChainAddress)23540_storage)dyn_storage)", + "contract": "CrossChainGovernorCountingSimple", + "src": "contracts/governance/CrossChainGovernorCountingSimple.sol:22" + }, + { + "label": "spokeVotes", + "offset": 0, + "slot": "407", + "type": "t_mapping(t_uint256,t_mapping(t_bytes32,t_mapping(t_uint16,t_struct(SpokeProposalVote)23549_storage)))", + "contract": "CrossChainGovernorCountingSimple", + "src": "contracts/governance/CrossChainGovernorCountingSimple.sol:23" + }, + { + "label": "_proposalVotes", + "offset": 0, + "slot": "408", + "type": "t_mapping(t_uint256,t_struct(ProposalVote)23565_storage)", + "contract": "CrossChainGovernorCountingSimple", + "src": "contracts/governance/CrossChainGovernorCountingSimple.sol:25" + }, + { + "label": "token", + "offset": 0, + "slot": "409", + "type": "t_contract(IERC5805Upgradeable)4653", + "contract": "GovernorVotesUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorVotesUpgradeable.sol:18" + }, + { + "label": "__gap", + "offset": 0, + "slot": "410", + "type": "t_array(t_uint256)50_storage", + "contract": "GovernorVotesUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorVotesUpgradeable.sol:68" + }, + { + "label": "_quorumNumerator", + "offset": 0, + "slot": "460", + "type": "t_uint256", + "contract": "GovernorVotesQuorumFractionUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorVotesQuorumFractionUpgradeable.sol:20" + }, + { + "label": "_quorumNumeratorHistory", + "offset": 0, + "slot": "461", + "type": "t_struct(Trace224)6249_storage", + "contract": "GovernorVotesQuorumFractionUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorVotesQuorumFractionUpgradeable.sol:23", + "retypedFrom": "Checkpoints.History" + }, + { + "label": "__gap", + "offset": 0, + "slot": "462", + "type": "t_array(t_uint256)48_storage", + "contract": "GovernorVotesQuorumFractionUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorVotesQuorumFractionUpgradeable.sol:132" + }, + { + "label": "_timelock", + "offset": 0, + "slot": "510", + "type": "t_contract(TimelockControllerUpgradeable)3488", + "contract": "GovernorTimelockControlUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorTimelockControlUpgradeable.sol:28" + }, + { + "label": "_timelockIds", + "offset": 0, + "slot": "511", + "type": "t_mapping(t_uint256,t_bytes32)", + "contract": "GovernorTimelockControlUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorTimelockControlUpgradeable.sol:29" + }, + { + "label": "__gap", + "offset": 0, + "slot": "512", + "type": "t_array(t_uint256)48_storage", + "contract": "GovernorTimelockControlUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorTimelockControlUpgradeable.sol:177" + }, + { + "label": "_magistrate", + "offset": 0, + "slot": "560", + "type": "t_address", + "contract": "Magistrate", + "src": "contracts/governance/magistrate/Magistrate.sol:13" + }, + { + "label": "wormholeRelayer", + "offset": 0, + "slot": "561", + "type": "t_contract(IWormholeRelayer)26845", + "contract": "MetaHumanGovernor", + "src": "contracts/governance/MetaHumanGovernor.sol:48" + }, + { + "label": "secondsPerBlock", + "offset": 0, + "slot": "562", + "type": "t_uint256", + "contract": "MetaHumanGovernor", + "src": "contracts/governance/MetaHumanGovernor.sol:50" + }, + { + "label": "chainId", + "offset": 0, + "slot": "563", + "type": "t_uint16", + "contract": "MetaHumanGovernor", + "src": "contracts/governance/MetaHumanGovernor.sol:51" + }, + { + "label": "processedMessages", + "offset": 0, + "slot": "564", + "type": "t_mapping(t_bytes32,t_bool)", + "contract": "MetaHumanGovernor", + "src": "contracts/governance/MetaHumanGovernor.sol:53" + }, + { + "label": "collectionStarted", + "offset": 0, + "slot": "565", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "MetaHumanGovernor", + "src": "contracts/governance/MetaHumanGovernor.sol:54" + }, + { + "label": "collectionFinished", + "offset": 0, + "slot": "566", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "MetaHumanGovernor", + "src": "contracts/governance/MetaHumanGovernor.sol:55" + }, + { + "label": "__gap", + "offset": 0, + "slot": "567", + "type": "t_array(t_uint256)50_storage", + "contract": "MetaHumanGovernor", + "src": "contracts/governance/MetaHumanGovernor.sol:57" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_struct(Checkpoint224)6254_storage)dyn_storage": { + "label": "struct CheckpointsUpgradeable.Checkpoint224[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(CrossChainAddress)23540_storage)dyn_storage": { + "label": "struct CrossChainGovernorCountingSimple.CrossChainAddress[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)46_storage": { + "label": "uint256[46]", + "numberOfBytes": "1472" + }, + "t_array(t_uint256)47_storage": { + "label": "uint256[47]", + "numberOfBytes": "1504" + }, + "t_array(t_uint256)48_storage": { + "label": "uint256[48]", + "numberOfBytes": "1536" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes24": { + "label": "bytes24", + "numberOfBytes": "24" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_bytes4": { + "label": "bytes4", + "numberOfBytes": "4" + }, + "t_contract(IERC5805Upgradeable)4653": { + "label": "contract IERC5805Upgradeable", + "numberOfBytes": "20" + }, + "t_contract(IWormholeRelayer)26845": { + "label": "contract IWormholeRelayer", + "numberOfBytes": "20" + }, + "t_contract(TimelockControllerUpgradeable)3488": { + "label": "contract TimelockControllerUpgradeable", + "numberOfBytes": "20" + }, + "t_int128": { + "label": "int128", + "numberOfBytes": "16" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_bool)": { + "label": "mapping(bytes32 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_mapping(t_uint16,t_bool))": { + "label": "mapping(bytes32 => mapping(uint16 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_mapping(t_uint16,t_struct(SpokeProposalVote)23549_storage))": { + "label": "mapping(bytes32 => mapping(uint16 => struct CrossChainGovernorCountingSimple.SpokeProposalVote))", + "numberOfBytes": "32" + }, + "t_mapping(t_int128,t_bytes32)": { + "label": "mapping(int128 => bytes32)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint16,t_bool)": { + "label": "mapping(uint16 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint16,t_struct(SpokeProposalVote)23549_storage)": { + "label": "mapping(uint16 => struct CrossChainGovernorCountingSimple.SpokeProposalVote)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_array(t_struct(CrossChainAddress)23540_storage)dyn_storage)": { + "label": "mapping(uint256 => struct CrossChainGovernorCountingSimple.CrossChainAddress[])", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bytes32)": { + "label": "mapping(uint256 => bytes32)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_bytes32,t_mapping(t_uint16,t_bool)))": { + "label": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bool)))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_bytes32,t_mapping(t_uint16,t_struct(SpokeProposalVote)23549_storage)))": { + "label": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => struct CrossChainGovernorCountingSimple.SpokeProposalVote)))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(ProposalCore)600_storage)": { + "label": "mapping(uint256 => struct GovernorUpgradeable.ProposalCore)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(ProposalVote)23565_storage)": { + "label": "mapping(uint256 => struct CrossChainGovernorCountingSimple.ProposalVote)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Bytes32Deque)10879_storage": { + "label": "struct DoubleEndedQueueUpgradeable.Bytes32Deque", + "members": [ + { + "label": "_begin", + "type": "t_int128", + "offset": 0, + "slot": "0" + }, + { + "label": "_end", + "type": "t_int128", + "offset": 16, + "slot": "0" + }, + { + "label": "_data", + "type": "t_mapping(t_int128,t_bytes32)", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(Checkpoint224)6254_storage": { + "label": "struct CheckpointsUpgradeable.Checkpoint224", + "members": [ + { + "label": "_key", + "type": "t_uint32", + "offset": 0, + "slot": "0" + }, + { + "label": "_value", + "type": "t_uint224", + "offset": 4, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(CrossChainAddress)23540_storage": { + "label": "struct CrossChainGovernorCountingSimple.CrossChainAddress", + "members": [ + { + "label": "contractAddress", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "chainId", + "type": "t_uint16", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(ProposalCore)600_storage": { + "label": "struct GovernorUpgradeable.ProposalCore", + "members": [ + { + "label": "voteStart", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "proposer", + "type": "t_address", + "offset": 8, + "slot": "0" + }, + { + "label": "__gap_unused0", + "type": "t_bytes4", + "offset": 28, + "slot": "0" + }, + { + "label": "voteEnd", + "type": "t_uint64", + "offset": 0, + "slot": "1" + }, + { + "label": "__gap_unused1", + "type": "t_bytes24", + "offset": 8, + "slot": "1" + }, + { + "label": "executed", + "type": "t_bool", + "offset": 0, + "slot": "2" + }, + { + "label": "canceled", + "type": "t_bool", + "offset": 1, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(ProposalVote)23565_storage": { + "label": "struct CrossChainGovernorCountingSimple.ProposalVote", + "members": [ + { + "label": "againstVotes", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "forVotes", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "abstainVotes", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "hasVoted", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(SpokeProposalVote)23549_storage": { + "label": "struct CrossChainGovernorCountingSimple.SpokeProposalVote", + "members": [ + { + "label": "forVotes", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "againstVotes", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "abstainVotes", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "initialized", + "type": "t_bool", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(Trace224)6249_storage": { + "label": "struct CheckpointsUpgradeable.Trace224", + "members": [ + { + "label": "_checkpoints", + "type": "t_array(t_struct(Checkpoint224)6254_storage)dyn_storage", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint16": { + "label": "uint16", + "numberOfBytes": "2" + }, + "t_uint224": { + "label": "uint224", + "numberOfBytes": "28" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint32": { + "label": "uint32", + "numberOfBytes": "4" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "a08800e13761e30a7f0402a8a229a6dd35332663bf0186258d2d9af3aa9b8fdc": { + "address": "0x42d5136a8478F97c113DbCEB88Cc32Ba5Df4F085", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "2aa185827c72f950a7fd37fc218e513487d9653120cf7513af78e43f2341648b": { + "address": "0x503C62d0D3B97d0A6A96b8408B74bDA4718c0057", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:189" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } } } } diff --git a/packages/core/.openzeppelin/unknown-1313161555.json b/packages/core/.openzeppelin/unknown-1313161555.json new file mode 100644 index 0000000000..75c29051d0 --- /dev/null +++ b/packages/core/.openzeppelin/unknown-1313161555.json @@ -0,0 +1,795 @@ +{ + "manifestVersion": "3.2", + "proxies": [ + { + "address": "0xbA537fEF2442cD48f60686FE1Bbbe40F964a7940", + "kind": "uups" + } + ], + "impls": { + "66da5f3ce04da663eb9aa55e0dbde3419bb476d69c099b4790a0efbe9b7a6ba9": { + "address": "0x2B9C5EC6220BA8Ad08CB51A60FFdbC6a6235B203", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "66da5f3ce04da663eb9aa55e0dbde3419bb476d69c099b4790a0efbe9b7a6bd9": { + "address": "0xeF9849a904dF0d494D69ac0B0a6860a3A7936114", + "txHash": "0x2039ed707104da9c6519bc8432740c2768373f7b5a522b6cc43cc93d03dca2da", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "1b9cc1abc5ad9da9cf7c6c9eed8d9be4f0d3f4dbbb45592a6806f4be793b48d2": { + "address": "0xdC51B1f4cB17b2306833bef8E179cF72E23ED37c", + "txHash": "0x3357babe22e71e56a95e2e1606640f319d59ce9d771609714ea060a454153c62", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "61e95adb2141c800da93b707b059f3a476618c1ed0057a8e2d07a31d5bc3c4b3": { + "address": "0xDC5Bf9A4918cC8c6706b79E8b27eED202E9031F1", + "txHash": "0x711d73b37a5997661bb2fffb4485e12dc7fb60f1a25375868ce31da18205afe0", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "a08800e13761e30a7f0402a8a229a6dd35332663bf0186258d2d9af3aa9b8fdc": { + "address": "0xe96a12195A8af2f254EF1155e5e7d2D76Cd131E9", + "txHash": "0x7b15519130e60e55097a115237977699374f865437a6e61e6425ef984920d55b", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + } + } +} diff --git a/packages/core/.openzeppelin/unknown-80002.json b/packages/core/.openzeppelin/unknown-80002.json index c23989064e..2664aad429 100644 --- a/packages/core/.openzeppelin/unknown-80002.json +++ b/packages/core/.openzeppelin/unknown-80002.json @@ -7,13 +7,12 @@ "kind": "uups" }, { - "address": "0xAFf5a986A530ff839d49325A5dF69F96627E8D29", - "txHash": "0xe42cf19c15cb4d6755bd11f2625368644848b519f2374868f9408d116d8febf3", + "address": "0xd866bCEFf6D0F77E1c3EAE28230AE6C79b03fDa7", + "txHash": "0xa49b638330e7b55d7e99feaf1b245e98cc17d768ef4ece92ece93d96b0211a4d", "kind": "uups" }, { - "address": "0xd866bCEFf6D0F77E1c3EAE28230AE6C79b03fDa7", - "txHash": "0xa49b638330e7b55d7e99feaf1b245e98cc17d768ef4ece92ece93d96b0211a4d", + "address": "0xAFf5a986A530ff839d49325A5dF69F96627E8D29", "kind": "uups" } ], @@ -1025,6 +1024,947 @@ }, "namespaces": {} } + }, + "66da5f3ce04da663eb9aa55e0dbde3419bb476d69c099b4790a0efbe9b7a6bd9": { + "address": "0x225483434AF9dB239FdCb56897d5334149078fE7", + "txHash": "0x736a62946382e011688856f80dd27fd70f1f4a48e62d40f33e82e06fc214c0ab", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "1b9cc1abc5ad9da9cf7c6c9eed8d9be4f0d3f4dbbb45592a6806f4be793b48d2": { + "address": "0x83004E8400B8648d3e95B0fC26e84E1Af0BA2adb", + "txHash": "0xd1b079a8582067ce654bbbb730f702bf9309b3c1553bbca33442c7d5c28d4f06", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "78b91bbd764b4da787c28797b2b2d0985c5707f3b060d4f093624dcd621f2873": { + "address": "0x8CA838b9fe2CAa47900acB6000e899026B9C3a2F", + "txHash": "0x9d4eb07361e7d75dc1eefecd89f9d70c82644e5bed61347062808e5126708bd7", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "61e95adb2141c800da93b707b059f3a476618c1ed0057a8e2d07a31d5bc3c4b3": { + "address": "0x7F3a31DF60C967320A3cc40cEA831Eea5aE20649", + "txHash": "0xefdb95d0f2e54c04516882f01d1d5345f6d0ce6322f0aa3b372fe07672991386", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "0b3f3143732508087efac60711ac3095e6c5416a94fdc771b1a6d0182f1fb0f1": { + "address": "0xa68c1566f23C2335c142D798f8094F460d487044", + "txHash": "0x6cd54a040e3f224b62f0e1f900b41c1793da2d72085ab07e60ee0039a54a3456", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:16" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:123" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "2aa185827c72f950a7fd37fc218e513487d9653120cf7513af78e43f2341648b": { + "address": "0x2163e3A40032Af1C359ac731deaB48258b317890", + "layout": { + "solcVersion": "0.8.23", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "counter", + "offset": 0, + "slot": "201", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:17" + }, + { + "label": "escrowCounters", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_uint256)", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:18" + }, + { + "label": "lastEscrow", + "offset": 0, + "slot": "203", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:19" + }, + { + "label": "staking", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:20" + }, + { + "label": "minimumStake", + "offset": 0, + "slot": "205", + "type": "t_uint256", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:21" + }, + { + "label": "admin", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)44_storage", + "contract": "EscrowFactory", + "src": "contracts/EscrowFactory.sol:189" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } } } } diff --git a/packages/core/README.md b/packages/core/README.md index 180b21ca8d..efb686e979 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -6,152 +6,17 @@ [circleci-url]: https://circleci.com/gh/nestjs/nest

Human Protocol Core

-

This is the repo of the human protocol smart contracts.

+

This is the package of the human protocol smart contracts.

Core Check - - Core deployment -

-## Contracts - -### Escrow - -Escrow contract represents the entire life cycle of the job on Human Protocol. Escrow status is usually changed as follows. - -`Launched` -> `Pending` -> `Partial` -> `Paid` -> `Completed` - -On the other hand, it can be cancelled anytime. - -- `constructor(token, launcher, canceler, duration, trustedHandlers)` - - Create a new escrow with ERC20 token for payments, launcher who initiated the call to escrow factory, canceler who receives the money back when the job is cancelled, job duration before expiry, and extra trusted handlers that act like super admin of the escrow. Initial escrow status is `Launched`. - -- `setup(reputationOracle, recordingOracle, exchangeOracle, reputationOracleFeePercentage, recordingOracleFeePercentage, exchangeOracleFeePercentage, url, hash)` - - Assigns the reputation, recording, and exchange oracle to the job, with relevant fee percentages. Job manifest url, and hash is also configured at this point. This function should be called after the escrow is funded from the job launcher. The escrow is now in `Pending` status. - - > Only trusted handlers can call this function. - -- `storeResults(url, hash)` - - Stores intermediate results. Can be called when the escrow is in `Pending`, or `Partial` status. - - > Trusted handlers, and recording oracle can call this function. - -- `bulkPayOut(recipients, amounts, url, hash, txId)` - - Pay out the workers. Final result URL is recorded. If the escrow is fully paid out, escrow status is changed to `Paid`, otherwise it's changed to `Partial`. - - > Trusted handlers, and reputation oracle can call this function. - -- `complete()` - - Finishes the job. Escrow is now in `Completed` status. Can be called only if the escrow is in `Paid` status. - - > Only trusted handlers can call this function. - -- `cancel()` - - Cancels the escrow, and sends the remaining funds to the canceler. Escrow status is changed to `Cancelled`. - - > Only trusted handlers can call this function. - -- `addTrustedHandlers(trustedHandlers)` - - Adds more trusted handlers. - - > Only trusted handlers can call this function. - -- `getBalance()` - - Get remaining balance of the escrow. - -### EscrowFactory - -EscrowFactory allows job launchers to create new Escrow contracts. - -- `createEscrow(token, trustedHandlers, jobRequesterId)` - - Create a new escrow, which uses ERC20 token for payment, as well as extra trusted handlers. Job launcher is canceler itself, and the job duration is 100 days. Job Requester Id is passed to keep track of job creators. Here, jobRequesterId is an internal id of the Job Launcher, and it can be used to identify the jobs requested by each Job Requester without crossing data between Subgraph and database. - -- `hasEscrow(escrow)` - - Check if the escrow is created by EscrowFactory - -### HMToken - -ERC20 token for Human Protocol, used for escrow payments by default. It has same interface as ERC20, but some other functions are added for bulk payments. - -- `transferBulk(recipients, amounts, txId)` - - Transfer to all of the recipients with the amount specified for each of them. - -- `increaseApprovalBulk(spenders, amounts, txId)` - - Increase allowance of all spenders with the amount given for each of them. - -### Staking - -To be considered valid operator on Human Protocol, user needs to stake HMT. - -- `stake(amount)` - - Stakes given amount of HMT. - -- `unstake(amount)` - - Unstakes given amount of HMT. Unstaked tokens are locked for a lock period, and can't be withdrawn. - -- `withdraw()` - - Withdraw unstaked HMT after lock period. - -- `slash(slasher, staker, escrow, token)` - - Slash the staker stake allocated to the escrow for abuse contents. - -- `allocate(escrow, amount)` - - Allocates staker's stake to the escrow. It's essential to launch the escrow. - -- `closeAllocation(escrow)` - - Close an allocation and free the staked tokens. - -### Reward Pool - -RewardPool is the reward system of Human Protocol. It keeps track of slashes, and distribute reward to the slashers. - -- `distributeReward(escrow)` - - Distributes token slashes of the escrow after fee. - -- `withdraw(to)` - - Withdraw collected fees to a specific account. - - > Only owner can call this. - -### KVStore - -KVStore is the simple key-value store. - -- `set(key, value)` - - Save `key` -> `value` pair for the user. - -- `setBulk(keys, values)` - - Save multiple `key` -> `value` pairs as bulk for the user. - - - `get(account, key)` +## Documentation - Read the value of the given `key` for the `account`. +For detailed information about the core contracts, please refer to the [Human Protocol Tech Docs](https://docs.humanprotocol.org/hub/human-tech-docs/architecture/components/smart-contracts). ## Deployment diff --git a/packages/core/contracts/Escrow.sol b/packages/core/contracts/Escrow.sol index bf8a6550a2..c6e677d168 100644 --- a/packages/core/contracts/Escrow.sol +++ b/packages/core/contracts/Escrow.sol @@ -8,17 +8,24 @@ import '@openzeppelin/contracts/utils/ReentrancyGuard.sol'; import './interfaces/IEscrow.sol'; -contract Escrow is IEscrow, ReentrancyGuard { - bytes4 private constant FUNC_SELECTOR_BALANCE_OF = - bytes4(keccak256('balanceOf(address)')); +struct Fees { + uint256 reputation; + uint256 recording; + uint256 exchange; +} - string constant ERROR_ZERO_ADDRESS = 'Escrow: zero address'; +/** + * @title Escrow Contract + * @dev This contract manages the lifecycle of an escrow, including funding, + * setup, payouts, and completion. + */ +contract Escrow is IEscrow, ReentrancyGuard { + using SafeERC20 for IERC20; - uint256 private constant BULK_MAX_VALUE = 1e9 * (10 ** 18); + string private constant ERROR_ZERO_ADDRESS = 'Zero address'; uint32 private constant BULK_MAX_COUNT = 100; - event TrustedHandlerAdded(address _handler); - event IntermediateStorage(string _url, string _hash); + event IntermediateStorage(string url, string hash); event Pending(string manifest, string hash); event PendingV2( string manifest, @@ -28,104 +35,112 @@ contract Escrow is IEscrow, ReentrancyGuard { address exchangeOracle ); event BulkTransfer( - uint256 indexed _txId, - address[] _recipients, - uint256[] _amounts, - bool _isPartial + uint256 indexed txId, + address[] recipients, + uint256[] amounts, + bool isPartial ); event BulkTransferV2( - uint256 indexed _txId, - address[] _recipients, - uint256[] _amounts, - bool _isPartial, + uint256 indexed txId, + address[] recipients, + uint256[] amounts, + bool isPartial, string finalResultsUrl ); + event BulkTransferV3( + bytes32 indexed payoutId, + address[] recipients, + uint256[] amounts, + bool isPartial, + string finalResultsUrl, + string finalResultsHash + ); event Cancelled(); event Completed(); - event Fund(uint256 _amount); - event Withdraw(address _token, uint256 _amount); + event Fund(uint256 amount); + event Withdraw(address token, uint256 amount); + event CancellationRequested(); + event CancellationRefund(uint256 amount); EscrowStatuses public override status; address public reputationOracle; address public recordingOracle; address public exchangeOracle; - address public launcher; - address payable public canceler; - address public escrowFactory; + + address public immutable launcher; + address public immutable admin; + address public immutable escrowFactory; + address public immutable token; uint8 public reputationOracleFeePercentage; uint8 public recordingOracleFeePercentage; uint8 public exchangeOracleFeePercentage; - address public token; - string public manifestUrl; string public manifestHash; - string public intermediateResultsUrl; - + string public intermediateResultsHash; string public finalResultsUrl; string public finalResultsHash; uint256 public duration; - - mapping(address => bool) public areTrustedHandlers; - + mapping(bytes32 => bool) private payouts; uint256 public remainingFunds; + uint256 public reservedFunds; + /** + * @param _token Address of the token used in the escrow. + * @param _launcher Creator of the escrow. + * @param _admin Admin address for the escrow. + * @param _duration Escrow lifetime (seconds). + */ constructor( address _token, address _launcher, - address payable _canceler, - uint256 _duration, - address[] memory _handlers + address _admin, + uint256 _duration ) { + require(_launcher != address(0), ERROR_ZERO_ADDRESS); + require(_admin != address(0), ERROR_ZERO_ADDRESS); require(_token != address(0), ERROR_ZERO_ADDRESS); - require(_canceler != address(0), ERROR_ZERO_ADDRESS); + require(_duration > 0, 'Duration is 0'); token = _token; - status = EscrowStatuses.Launched; - duration = _duration + block.timestamp; launcher = _launcher; - canceler = _canceler; + admin = _admin; escrowFactory = msg.sender; - areTrustedHandlers[_launcher] = true; - areTrustedHandlers[_canceler] = true; - _addTrustedHandlers(_handlers); + + status = EscrowStatuses.Launched; + duration = _duration + block.timestamp; } + /** + * @dev Returns the balance of the escrow contract for the main token. + */ function getBalance() public view returns (uint256) { - (bool success, bytes memory returnData) = token.staticcall( - abi.encodeWithSelector(FUNC_SELECTOR_BALANCE_OF, address(this)) - ); - return success ? abi.decode(returnData, (uint256)) : 0; + return getTokenBalance(token); } + /** + * @dev Returns the balance of the escrow contract for a specific token. + * @param _token Address of the token to check the balance for. + */ function getTokenBalance(address _token) public view returns (uint256) { - (bool success, bytes memory returnData) = _token.staticcall( - abi.encodeWithSelector(FUNC_SELECTOR_BALANCE_OF, address(this)) - ); - return success ? abi.decode(returnData, (uint256)) : 0; + return IERC20(_token).balanceOf(address(this)); } - function addTrustedHandlers( - address[] memory _handlers - ) public override trusted { - _addTrustedHandlers(_handlers); - } - - function _addTrustedHandlers(address[] memory _handlers) internal { - for (uint256 i = 0; i < _handlers.length; i++) { - require(_handlers[i] != address(0), ERROR_ZERO_ADDRESS); - areTrustedHandlers[_handlers[i]] = true; - emit TrustedHandlerAdded(_handlers[i]); - } - } - - // The escrower puts the Token in the contract without an agentless - // and assigsn a reputation oracle to payout the bounty of size of the - // amount specified + /** + * @dev Sets up the escrow with oracles, manifest and fees. + * @param _reputationOracle Address of the reputation oracle. + * @param _recordingOracle Address of the recording oracle. + * @param _exchangeOracle Address of the exchange oracle. + * @param _reputationOracleFeePercentage Fee percentage for the reputation oracle. + * @param _recordingOracleFeePercentage Fee percentage for the recording oracle. + * @param _exchangeOracleFeePercentage Fee percentage for the exchange oracle. + * @param _url URL for the escrow manifest. + * @param _hash Hash of the escrow manifest. + */ function setup( address _reputationOracle, address _recordingOracle, @@ -133,30 +148,18 @@ contract Escrow is IEscrow, ReentrancyGuard { uint8 _reputationOracleFeePercentage, uint8 _recordingOracleFeePercentage, uint8 _exchangeOracleFeePercentage, - string memory _url, - string memory _hash - ) external override trusted notExpired { - require( - _reputationOracle != address(0), - 'Invalid reputation oracle address' - ); - require( - _recordingOracle != address(0), - 'Invalid recording oracle address' - ); - require( - _exchangeOracle != address(0), - 'Invalid exchange oracle address' - ); - uint256 _totalFeePercentage = _reputationOracleFeePercentage + + string calldata _url, + string calldata _hash + ) external override adminLauncherOrFactory notExpired { + require(_reputationOracle != address(0), 'Invalid reputation oracle'); + require(_recordingOracle != address(0), 'Invalid recording oracle'); + require(_exchangeOracle != address(0), 'Invalid exchange oracle'); + + uint256 totalFeePercentage = _reputationOracleFeePercentage + _recordingOracleFeePercentage + _exchangeOracleFeePercentage; - require(_totalFeePercentage <= 100, 'Percentage out of bounds'); - - require( - status == EscrowStatuses.Launched, - 'Escrow not in Launched status state' - ); + require(totalFeePercentage <= 100, 'Percentage out of bounds'); + require(status == EscrowStatuses.Launched, 'Wrong status'); reputationOracle = _reputationOracle; recordingOracle = _recordingOracle; @@ -171,283 +174,355 @@ contract Escrow is IEscrow, ReentrancyGuard { status = EscrowStatuses.Pending; remainingFunds = getBalance(); - require(remainingFunds > 0, 'Escrow balance is zero'); + require(remainingFunds > 0, 'Zero balance'); emit PendingV2( - manifestUrl, - manifestHash, - reputationOracle, - recordingOracle, - exchangeOracle + _url, + _hash, + _reputationOracle, + _recordingOracle, + _exchangeOracle ); emit Fund(remainingFunds); } - function cancel() - public + /** + * @dev Initiates a cancellation request. If expired, it finalizes immediately. + */ + function requestCancellation() + external override - trusted - notBroke - notComplete + adminOrLauncher nonReentrant - returns (bool) { - _safeTransfer(token, canceler, remainingFunds); - status = EscrowStatuses.Cancelled; - remainingFunds = 0; - emit Cancelled(); - return true; + require( + remainingFunds != 0 || status == EscrowStatuses.Launched, + 'Invalid status' + ); + + EscrowStatuses previousStatus = status; + status = EscrowStatuses.ToCancel; + emit CancellationRequested(); + + if (duration <= block.timestamp) { + _finalize(); + return; + } + + if (previousStatus == EscrowStatuses.Launched) { + uint256 balance = getBalance(); + if (balance > 0) { + IERC20(token).safeTransfer(launcher, balance); + } + status = EscrowStatuses.Cancelled; + emit Cancelled(); + } } + /** + * @dev Withdraws excess funds from the escrow for a specific token. + * @param _token Address of the token to withdraw. + */ function withdraw( address _token - ) public override trusted nonReentrant returns (bool) { - uint256 _amount; + ) external override adminOrLauncher nonReentrant { + uint256 amount; if (_token == token) { - uint256 _balance = getBalance(); - require(_balance > remainingFunds, 'No funds to withdraw'); - _amount = _balance - remainingFunds; + uint256 balance = getBalance(); + require(balance > remainingFunds, 'No funds'); + amount = balance - remainingFunds; } else { - _amount = getTokenBalance(_token); + amount = getTokenBalance(_token); } - _safeTransfer(_token, canceler, _amount); + require(amount > 0, 'No funds'); + IERC20(_token).safeTransfer(msg.sender, amount); - emit Withdraw(_token, _amount); - return true; + emit Withdraw(_token, amount); } - function complete() external override notExpired trustedOrReputationOracle { + /** + * @dev Finalizes a previously requested cancellation and transfers the remaining funds to the launcher. + */ + function cancel() external override notExpired adminOrReputationOracle { + require(status == EscrowStatuses.ToCancel, 'Invalid status'); + _finalize(); + } + + /** + * @dev Completes the escrow and transfers the remaining funds to the launcher. + */ + function complete() external override notExpired adminOrReputationOracle { require( - status == EscrowStatuses.Paid || status == EscrowStatuses.Partial, - 'Escrow not in Paid or Partial state' + status == EscrowStatuses.Paid || + status == EscrowStatuses.Partial || + (status == EscrowStatuses.Pending && + bytes(intermediateResultsUrl).length > 0 && + reservedFunds == 0), + 'Invalid status' ); - _complete(); + _finalize(); } - function _complete() private { + /** + * @dev Finalizes the escrow, transferring remaining funds to the launcher + * and updating the status to Complete or Cancelled. + */ + function _finalize() private { if (remainingFunds > 0) { - _safeTransfer(token, launcher, remainingFunds); + IERC20(token).safeTransfer(launcher, remainingFunds); remainingFunds = 0; + reservedFunds = 0; } - status = EscrowStatuses.Complete; - emit Completed(); + if (status == EscrowStatuses.ToCancel) { + status = EscrowStatuses.Cancelled; + emit Cancelled(); + } else { + status = EscrowStatuses.Complete; + emit Completed(); + } + } + + /** + * @dev Stores intermediate results in the escrow. + * @param _url URL of the intermediate results. + * @param _hash Hash of the intermediate results. + */ + function storeResults( + string calldata _url, + string calldata _hash + ) external override adminOrRecordingOracle notExpired { + require(false, 'DEPRECATED_SIGNATURE'); } + /** + * @dev Stores intermediate results in the escrow. + * @param _url URL of the intermediate results. + * @param _hash Hash of the intermediate results. + * @param _fundsToReserve Amount of funds to reserve for future payouts. + */ function storeResults( - string memory _url, - string memory _hash - ) external override trustedOrRecordingOracle notExpired { + string calldata _url, + string calldata _hash, + uint256 _fundsToReserve + ) external override adminOrRecordingOracle notExpired { require( status == EscrowStatuses.Pending || - status == EscrowStatuses.Partial, - 'Escrow not in Pending or Partial status state' + status == EscrowStatuses.Partial || + status == EscrowStatuses.ToCancel, + 'Invalid status' + ); + if (_fundsToReserve > 0) { + require(bytes(_url).length != 0, 'Empty URL'); + require(bytes(_hash).length != 0, 'Empty hash'); + } + require( + _fundsToReserve <= remainingFunds - reservedFunds, + 'Insufficient unreserved funds' ); - require(bytes(_url).length != 0, "URL can't be empty"); - require(bytes(_hash).length != 0, "Hash can't be empty"); intermediateResultsUrl = _url; + intermediateResultsHash = _hash; + reservedFunds += _fundsToReserve; emit IntermediateStorage(_url, _hash); + + if (status == EscrowStatuses.ToCancel) { + uint256 unreservedFunds = remainingFunds - reservedFunds; + if (unreservedFunds > 0) { + IERC20(token).safeTransfer(launcher, unreservedFunds); + emit CancellationRefund(unreservedFunds); + remainingFunds = reservedFunds; + } + if (remainingFunds == 0) { + status = EscrowStatuses.Cancelled; + emit Cancelled(); + } + } + } + + function _calculateTotalBulkAmount( + uint256[] calldata amounts + ) internal pure returns (uint256 total) { + uint256 len = amounts.length; + for (uint256 i; i < len; ) { + uint256 amount = amounts[i]; + require(amount > 0, 'Zero amount'); + total += amount; + unchecked { + ++i; + } + } } /** - * @dev Performs bulk payout to multiple workers - * Escrow needs to be completed / cancelled, so that it can be paid out. - * Every recipient is paid with the amount after reputation and recording oracle fees taken out. - * If the amount is less than the fee, the recipient is not paid. - * If the fee is zero, reputation, and recording oracle are not paid. - * Payout will fail if any of the transaction fails. - * If the escrow is fully paid out, meaning that the balance of the escrow is 0, it'll set as Paid. - * If the escrow is partially paid out, meaning that the escrow still has remaining balance, it'll set as Partial. - * This contract is only callable if the contract is not broke, not launched, not paid, not expired, by trusted parties. - * - * @param _recipients Array of recipients - * @param _amounts Array of amounts to be paid to each recipient. - * @param _url URL storing results as transaction details - * @param _hash Hash of the results - * @param _txId Transaction ID - * @param forceComplete Boolean parameter indicating if remaining balance should be transferred to the escrow creator + * @dev Bulk payout to multiple recipients. + * @param _recipients Array of recipient addresses. + * @param _amounts Array of amounts to be transferred to each recipient. + * @param _url URL of the final results. + * @param _hash Hash of the final results. + * @param _txId Transaction ID for tracking. + * @param forceComplete Whether to force completion of the escrow and transfer remaining funds to the launcher. */ function bulkPayOut( - address[] memory _recipients, - uint256[] memory _amounts, - string memory _url, - string memory _hash, + address[] calldata _recipients, + uint256[] calldata _amounts, + string calldata _url, + string calldata _hash, uint256 _txId, bool forceComplete - ) - public - override - trustedOrReputationOracle - notBroke - notLaunched - notExpired - nonReentrant - { - require( - _recipients.length == _amounts.length, - "Amount of recipients and values don't match" - ); - require(_amounts.length > 0, 'Amounts should not be empty'); - require(_recipients.length < BULK_MAX_COUNT, 'Too many recipients'); - require( - status != EscrowStatuses.Complete && - status != EscrowStatuses.Cancelled, - 'Invalid status' - ); - - uint256 aggregatedBulkAmount = 0; - uint256 cachedRemainingFunds = remainingFunds; + ) external override { + require(false, 'DEPRECATED_SIGNATURE'); + } - for (uint256 i = 0; i < _amounts.length; i++) { - uint256 amount = _amounts[i]; - require(amount > 0, 'Amount should be greater than zero'); - aggregatedBulkAmount += amount; - } - require(aggregatedBulkAmount < BULK_MAX_VALUE, 'Bulk value too high'); + /** + * @dev Bulk payout to multiple recipients. + * @param _recipients Array of recipient addresses. + * @param _amounts Array of amounts to be transferred to each recipient. + * @param _url URL of the final results. + * @param _hash Hash of the final results. + * @param _payoutId Payout ID for tracking. + * @param forceComplete Whether to force completion of the escrow and transfer remaining funds to the launcher. + */ + function bulkPayOut( + address[] calldata _recipients, + uint256[] calldata _amounts, + string calldata _url, + string calldata _hash, + string calldata _payoutId, + bool forceComplete + ) external override adminOrReputationOracle notExpired nonReentrant { + bytes32 payoutId = keccak256(bytes(_payoutId)); + require(remainingFunds != 0, 'No funds'); + require(!payouts[payoutId], 'payoutId already exists'); + require(_recipients.length == _amounts.length, 'Length mismatch'); + require(_amounts.length > 0, 'Empty amounts'); + require(_recipients.length <= BULK_MAX_COUNT, 'Too many recipients'); require( - aggregatedBulkAmount <= cachedRemainingFunds, - 'Not enough balance' + bytes(_url).length != 0 && bytes(_hash).length != 0, + 'Empty url/hash' ); - cachedRemainingFunds -= aggregatedBulkAmount; - - require(bytes(_url).length != 0, "URL can't be empty"); - require(bytes(_hash).length != 0, "Hash can't be empty"); + uint256 totalBulkAmount = _calculateTotalBulkAmount(_amounts); + require(totalBulkAmount <= reservedFunds, 'Not enough funds'); - finalResultsUrl = _url; - finalResultsHash = _hash; + uint256 length = _recipients.length; + uint256[] memory netAmounts = new uint256[](length + 3); + address[] memory eventRecipients = new address[](length + 3); - uint256 totalFeePercentage = reputationOracleFeePercentage + - recordingOracleFeePercentage + - exchangeOracleFeePercentage; + IERC20 erc20 = IERC20(token); + Fees memory fees; - for (uint256 i = 0; i < _recipients.length; i++) { + for (uint256 i; i < length; ) { uint256 amount = _amounts[i]; - uint256 amountFee = (totalFeePercentage * amount) / 100; - _safeTransfer(token, _recipients[i], amount - amountFee); + uint256 reputationOracleFee = (reputationOracleFeePercentage * + amount) / 100; + uint256 recordingOracleFee = (recordingOracleFeePercentage * + amount) / 100; + uint256 exchangeOracleFee = (exchangeOracleFeePercentage * amount) / + 100; + + fees.reputation += reputationOracleFee; + fees.recording += recordingOracleFee; + fees.exchange += exchangeOracleFee; + + uint256 net = amount - + reputationOracleFee - + recordingOracleFee - + exchangeOracleFee; + netAmounts[i] = net; + address to = _recipients[i]; + eventRecipients[i] = to; + + erc20.safeTransfer(to, net); + unchecked { + ++i; + } } - // Transfer oracle fees if (reputationOracleFeePercentage > 0) { - _safeTransfer( - token, - reputationOracle, - (reputationOracleFeePercentage * aggregatedBulkAmount) / 100 - ); + erc20.safeTransfer(reputationOracle, fees.reputation); + eventRecipients[length] = reputationOracle; + netAmounts[length] = fees.reputation; + unchecked { + ++length; + } } if (recordingOracleFeePercentage > 0) { - _safeTransfer( - token, - recordingOracle, - (recordingOracleFeePercentage * aggregatedBulkAmount) / 100 - ); + erc20.safeTransfer(recordingOracle, fees.recording); + eventRecipients[length] = recordingOracle; + netAmounts[length] = fees.recording; + unchecked { + ++length; + } } if (exchangeOracleFeePercentage > 0) { - _safeTransfer( - token, - exchangeOracle, - (exchangeOracleFeePercentage * aggregatedBulkAmount) / 100 - ); + erc20.safeTransfer(exchangeOracle, fees.exchange); + eventRecipients[length] = exchangeOracle; + netAmounts[length] = fees.exchange; + unchecked { + ++length; + } } - remainingFunds = cachedRemainingFunds; - - if (cachedRemainingFunds == 0 || forceComplete) { - emit BulkTransferV2( - _txId, - _recipients, - _amounts, - false, - finalResultsUrl - ); - _complete(); - } else { - status = EscrowStatuses.Partial; - emit BulkTransferV2( - _txId, - _recipients, - _amounts, - true, - finalResultsUrl - ); - } - } - - /** - * @dev Overloaded function to perform bulk payout with default forceComplete set to false. - * Calls the main bulkPayout function with forceComplete as false. - * - * @param _recipients Array of recipients - * @param _amounts Array of amounts to be paid to each recipient. - * @param _url URL storing results as transaction details - * @param _hash Hash of the results - * @param _txId Transaction ID - */ - function bulkPayOut( - address[] memory _recipients, - uint256[] memory _amounts, - string memory _url, - string memory _hash, - uint256 _txId - ) external { - bulkPayOut(_recipients, _amounts, _url, _hash, _txId, false); - } + remainingFunds -= totalBulkAmount; + reservedFunds -= totalBulkAmount; - function _safeTransfer(address _token, address to, uint256 value) internal { - SafeERC20.safeTransfer(IERC20(_token), to, value); - } + finalResultsUrl = _url; + finalResultsHash = _hash; + payouts[payoutId] = true; - modifier trusted() { - require(areTrustedHandlers[msg.sender], 'Address calling not trusted'); - _; - } + bool isPartial = remainingFunds != 0 && !forceComplete; - modifier trustedOrReputationOracle() { - require( - areTrustedHandlers[msg.sender] || msg.sender == reputationOracle, - 'Address calling not trusted' + emit BulkTransferV3( + payoutId, + eventRecipients, + netAmounts, + isPartial, + _url, + _hash ); - _; - } - modifier trustedOrRecordingOracle() { - require( - areTrustedHandlers[msg.sender] || msg.sender == recordingOracle, - 'Address calling not trusted' - ); - _; + if (!isPartial) { + _finalize(); + } else if (status != EscrowStatuses.ToCancel) { + status = EscrowStatuses.Partial; + } } - modifier notBroke() { - require(remainingFunds != 0, 'Token contract out of funds'); + modifier adminOrLauncher() { + require(msg.sender == admin || msg.sender == launcher, 'Unauthorised'); _; } - modifier notComplete() { + modifier adminLauncherOrFactory() { require( - status != EscrowStatuses.Complete, - 'Escrow in Complete status state' + msg.sender == admin || + msg.sender == launcher || + msg.sender == escrowFactory, + 'Unauthorised' ); _; } - modifier notPaid() { - require(status != EscrowStatuses.Paid, 'Escrow in Paid status state'); + modifier adminOrReputationOracle() { + require( + msg.sender == admin || msg.sender == reputationOracle, + 'Unauthorised' + ); _; } - modifier notLaunched() { + modifier adminOrRecordingOracle() { require( - status != EscrowStatuses.Launched, - 'Escrow in Launched status state' + msg.sender == admin || msg.sender == recordingOracle, + 'Unauthorised' ); _; } modifier notExpired() { - require(duration > block.timestamp, 'Contract expired'); + require(duration > block.timestamp, 'Expired'); _; } } diff --git a/packages/core/contracts/EscrowFactory.sol b/packages/core/contracts/EscrowFactory.sol index 47c87d82e4..81341b07bb 100644 --- a/packages/core/contracts/EscrowFactory.sol +++ b/packages/core/contracts/EscrowFactory.sol @@ -4,20 +4,24 @@ pragma solidity ^0.8.0; import '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol'; import '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol'; - +import '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol'; +import '@openzeppelin/contracts/token/ERC20/IERC20.sol'; import './interfaces/IStaking.sol'; import './Escrow.sol'; contract EscrowFactory is OwnableUpgradeable, UUPSUpgradeable { // all Escrows will have this duration. uint256 constant STANDARD_DURATION = 8640000; - string constant ERROR_ZERO_ADDRESS = 'EscrowFactory: Zero Address'; + string constant ERROR_ZERO_ADDRESS = 'Zero Address'; uint256 public counter; mapping(address => uint256) public escrowCounters; address public lastEscrow; address public staking; uint256 public minimumStake; + address public admin; + + using SafeERC20 for IERC20; event Launched(address token, address escrow); event LaunchedV2(address token, address escrow, string jobRequesterId); @@ -37,41 +41,96 @@ contract EscrowFactory is OwnableUpgradeable, UUPSUpgradeable { require(_staking != address(0), ERROR_ZERO_ADDRESS); _setStakingAddress(_staking); _setMinimumStake(_minimumStake); + _setEscrowAdmin(msg.sender); + } + + function _launchEscrow( + address _token, + string calldata _jobRequesterId + ) private { + uint256 availableStake = IStaking(staking).getAvailableStake( + msg.sender + ); + require(availableStake >= minimumStake, 'Insufficient stake'); + require(admin != address(0), ERROR_ZERO_ADDRESS); + + Escrow escrow = new Escrow( + _token, + msg.sender, + admin, + STANDARD_DURATION + ); + counter++; + escrowCounters[address(escrow)] = counter; + lastEscrow = address(escrow); + + emit LaunchedV2(_token, lastEscrow, _jobRequesterId); } /** * @dev Creates a new Escrow contract. * - * @param token Token address to be associated with the Escrow contract. - * @param trustedHandlers Array of addresses that will serve as the trusted handlers for the Escrow. - * @param jobRequesterId String identifier for the job requester, used for tracking purposes. + * @param _token Token address to be associated with the Escrow contract. + * @param _jobRequesterId String identifier for the job requester, used for tracking purposes. * * @return The address of the newly created Escrow contract. */ function createEscrow( - address token, - address[] memory trustedHandlers, - string memory jobRequesterId + address _token, + string calldata _jobRequesterId ) external returns (address) { - uint256 availableStake = IStaking(staking).getAvailableStake( - msg.sender - ); - require( - availableStake >= minimumStake, - 'Insufficient stake to create an escrow.' - ); + _launchEscrow(_token, _jobRequesterId); + return lastEscrow; + } - Escrow escrow = new Escrow( - token, + /** + * @dev Creates a new Escrow contract and funds it in one transaction. + * Requires the caller to have approved the factory for the token and amount. + * @param _token Token address to be associated with the Escrow contract. + * @param _amount Amount of tokens to fund the Escrow with. + * @param _jobRequesterId String identifier for the job requester, used for tracking purposes. + * @param _reputationOracle Address of the reputation oracle. + * @param _recordingOracle Address of the recording oracle. + * @param _exchangeOracle Address of the exchange oracle. + * @param _reputationOracleFeePercentage Fee percentage for the reputation oracle. + * @param _recordingOracleFeePercentage Fee percentage for the recording oracle. + * @param _exchangeOracleFeePercentage Fee percentage for the exchange oracle. + * @param _url URL for the escrow manifest. + * @param _hash Hash of the escrow manifest. + * @return The address of the newly created Escrow contract. + */ + function createFundAndSetupEscrow( + address _token, + uint256 _amount, + string calldata _jobRequesterId, + address _reputationOracle, + address _recordingOracle, + address _exchangeOracle, + uint8 _reputationOracleFeePercentage, + uint8 _recordingOracleFeePercentage, + uint8 _exchangeOracleFeePercentage, + string calldata _url, + string calldata _hash + ) external returns (address) { + require(_amount > 0, 'Amount is 0'); + + _launchEscrow(_token, _jobRequesterId); + IERC20(_token).safeTransferFrom( msg.sender, - payable(msg.sender), - STANDARD_DURATION, - trustedHandlers + address(lastEscrow), + _amount ); - counter++; - escrowCounters[address(escrow)] = counter; - lastEscrow = address(escrow); - emit LaunchedV2(token, lastEscrow, jobRequesterId); + Escrow(lastEscrow).setup( + _reputationOracle, + _recordingOracle, + _exchangeOracle, + _reputationOracleFeePercentage, + _recordingOracleFeePercentage, + _exchangeOracleFeePercentage, + _url, + _hash + ); + return lastEscrow; } @@ -107,6 +166,19 @@ contract EscrowFactory is OwnableUpgradeable, UUPSUpgradeable { emit SetMinumumStake(minimumStake); } + /** + * @dev Set the admin address. + * @param _admin Admin address + */ + function setAdmin(address _admin) external onlyOwner { + _setEscrowAdmin(_admin); + } + + function _setEscrowAdmin(address _admin) private { + require(_admin != address(0), ERROR_ZERO_ADDRESS); + admin = _admin; + } + function _authorizeUpgrade(address) internal override onlyOwner {} /** @@ -114,5 +186,5 @@ contract EscrowFactory is OwnableUpgradeable, UUPSUpgradeable { * variables without shifting down storage in the inheritance chain. * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps */ - uint256[45] private __gap; + uint256[44] private __gap; } diff --git a/packages/core/contracts/Staking.sol b/packages/core/contracts/Staking.sol index b4499ceddd..d5dd0d7698 100644 --- a/packages/core/contracts/Staking.sol +++ b/packages/core/contracts/Staking.sol @@ -8,7 +8,6 @@ import '@openzeppelin/contracts/access/Ownable.sol'; import '@openzeppelin/contracts/utils/ReentrancyGuard.sol'; import './interfaces/HMTokenInterface.sol'; -import './interfaces/IEscrow.sol'; import './interfaces/IStaking.sol'; import './libs/Stakes.sol'; diff --git a/packages/core/contracts/interfaces/IEscrow.sol b/packages/core/contracts/interfaces/IEscrow.sol index 3066d9423e..33d61c429c 100644 --- a/packages/core/contracts/interfaces/IEscrow.sol +++ b/packages/core/contracts/interfaces/IEscrow.sol @@ -1,5 +1,4 @@ // SPDX-License-Identifier: MIT - pragma solidity ^0.8.0; interface IEscrow { @@ -9,13 +8,12 @@ interface IEscrow { Partial, Paid, Complete, - Cancelled + Cancelled, + ToCancel } function status() external view returns (EscrowStatuses); - function addTrustedHandlers(address[] memory _handlers) external; - function setup( address _reputationOracle, address _recordingOracle, @@ -23,32 +21,41 @@ interface IEscrow { uint8 _reputationOracleFeePercentage, uint8 _recordingOracleFeePercentage, uint8 _exchangeOracleFeePercentage, - string memory _url, - string memory _hash + string calldata _url, + string calldata _hash ) external; - function cancel() external returns (bool); + function requestCancellation() external; - function withdraw(address _token) external returns (bool); + function withdraw(address _token) external; function complete() external; - function storeResults(string memory _url, string memory _hash) external; + function cancel() external; + + function storeResults(string calldata _url, string calldata _hash) external; + + function storeResults( + string calldata _url, + string calldata _hash, + uint256 _fundsToReserve + ) external; function bulkPayOut( - address[] memory _recipients, - uint256[] memory _amounts, - string memory _url, - string memory _hash, + address[] calldata _recipients, + uint256[] calldata _amounts, + string calldata _url, + string calldata _hash, uint256 _txId, bool forceComplete ) external; function bulkPayOut( - address[] memory _recipients, - uint256[] memory _amounts, - string memory _url, - string memory _hash, - uint256 _txId + address[] calldata _recipients, + uint256[] calldata _amounts, + string calldata _url, + string calldata _hash, + string calldata _payoutId, + bool forceComplete ) external; } diff --git a/packages/core/contracts/test/EscrowFactoryV0.sol b/packages/core/contracts/test/EscrowFactoryV0.sol index 08f87b486c..4d474639b6 100644 --- a/packages/core/contracts/test/EscrowFactoryV0.sol +++ b/packages/core/contracts/test/EscrowFactoryV0.sol @@ -65,8 +65,7 @@ contract EscrowFactoryV0 is OwnableUpgradeable, UUPSUpgradeable { token, msg.sender, payable(msg.sender), - STANDARD_DURATION, - trustedHandlers + STANDARD_DURATION ); counter++; escrowCounters[address(escrow)] = counter; @@ -110,5 +109,5 @@ contract EscrowFactoryV0 is OwnableUpgradeable, UUPSUpgradeable { * variables without shifting down storage in the inheritance chain. * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps */ - uint256[45] private __gap; + uint256[44] private __gap; } diff --git a/packages/core/contracts/test/USDT.sol b/packages/core/contracts/test/USDT.sol deleted file mode 100644 index b35286138e..0000000000 --- a/packages/core/contracts/test/USDT.sol +++ /dev/null @@ -1,11 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity >=0.6.2; - -import '@openzeppelin/contracts/token/ERC20/ERC20.sol'; - -contract USDT is ERC20 { - constructor() ERC20('Tether', 'USDT') { - _mint(msg.sender, 1000000 * 10 ** 18); - } -} diff --git a/packages/core/package.json b/packages/core/package.json index 486b7df2b8..f9656fbf6b 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,7 +1,7 @@ { "name": "@human-protocol/core", "description": "Human Protocol Core Smart Contracts", - "version": "4.2.1", + "version": "5.0.0-beta.2", "files": [ "contracts/**/*.sol", "abis/**/*.json", @@ -54,6 +54,7 @@ ], "license": "MIT", "devDependencies": { + "@faker-js/faker": "^9.9.0", "@nomicfoundation/hardhat-chai-matchers": "^2.0.7", "@nomicfoundation/hardhat-ethers": "^3.1.0", "@nomicfoundation/hardhat-network-helpers": "^1.0.12", diff --git a/packages/core/test/Escrow-USDT.ts b/packages/core/test/Escrow-USDT.ts deleted file mode 100644 index c8cb771f5d..0000000000 --- a/packages/core/test/Escrow-USDT.ts +++ /dev/null @@ -1,1061 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import { anyValue } from '@nomicfoundation/hardhat-chai-matchers/withArgs'; -import { expect } from 'chai'; -import { ethers } from 'hardhat'; -import { EventLog, Signer } from 'ethers'; -import { USDT, Escrow, HMToken } from '../typechain-types'; - -const MOCK_URL = 'http://google.com/fake'; -const MOCK_HASH = 'kGKmnj9BRf'; -const BULK_MAX_COUNT = 100; - -enum Status { - Launched = 0, - Pending = 1, - Partial = 2, - Paid = 3, - Complete = 4, - Cancelled = 5, -} - -let owner: Signer, - launcher: Signer, - reputationOracle: Signer, - recordingOracle: Signer, - exchangeOracle: Signer, - externalAddress: Signer, - restAccounts: Signer[], - trustedHandlers: Signer[]; - -let hmtoken: HMToken, escrow: Escrow; -let usdt: USDT; - -async function deployEscrow() { - // Deploy Escrow Contract - const Escrow = await ethers.getContractFactory('contracts/Escrow.sol:Escrow'); - escrow = (await Escrow.deploy( - await usdt.getAddress(), - await launcher.getAddress(), - await owner.getAddress(), - 100, - await Promise.all( - trustedHandlers.map(async (handler) => await handler.getAddress()) - ) - )) as Escrow; -} - -async function setupEscrow() { - await escrow - .connect(owner) - .setup( - await reputationOracle.getAddress(), - await recordingOracle.getAddress(), - await exchangeOracle.getAddress(), - 10, - 10, - 10, - MOCK_URL, - MOCK_HASH - ); -} - -async function fundEscrow() { - const amount = 100; - await usdt.connect(owner).transfer(escrow.getAddress(), amount); -} - -describe('Escrow with USDT', function () { - this.beforeAll(async () => { - [ - owner, - launcher, - reputationOracle, - recordingOracle, - exchangeOracle, - externalAddress, - ...restAccounts - ] = await ethers.getSigners(); - - trustedHandlers = [restAccounts[0], restAccounts[1]]; - - // Deploy HMTToken Contract - const HMToken = await ethers.getContractFactory( - 'contracts/HMToken.sol:HMToken' - ); - hmtoken = (await HMToken.deploy( - 1000000000, - 'Human Token', - 18, - 'HMT' - )) as HMToken; - - // Deploy USDT Contract - const USDT = await ethers.getContractFactory( - 'contracts/test/USDT.sol:USDT' - ); - usdt = (await USDT.deploy()) as USDT; - }); - - describe('deployment', () => { - before(async () => { - await deployEscrow(); - }); - - it('Should set the right token address', async () => { - const result = await escrow.token(); - expect(result).to.equal(await usdt.getAddress()); - }); - - it('Should set the right launched status', async () => { - const result = await escrow.status(); - expect(result).to.equal(Status.Launched); - }); - - it('Should set the right escrow balance', async () => { - const result = await escrow.connect(launcher).getBalance(); - expect(result.toString()).to.equal('0'); - }); - - it('Should set the right contract creator', async () => { - const result = await escrow.launcher(); - expect(result).to.equal(await launcher.getAddress()); - }); - - it('Should set the right escrow factory contract', async () => { - const result = await escrow.escrowFactory(); - expect(result).to.equal(await owner.getAddress()); - }); - - it('Should topup and return the right escrow balance', async () => { - const amount = 1000; - await usdt.connect(owner).transfer(escrow.getAddress(), amount); - - const result = await escrow.connect(launcher).getBalance(); - expect(result).to.equal(amount.toString()); - }); - }); - - describe('addTrustedHandlers', async () => { - before(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); - }); - - describe('Validations', function () { - it('Should revert with the right error if caller cannot add trusted handlers', async function () { - await expect( - escrow - .connect(externalAddress) - .addTrustedHandlers([await reputationOracle.getAddress()]) - ).to.be.revertedWith('Address calling not trusted'); - }); - - it('Should revert when adding trusted handlers from reputation oracle', async function () { - await expect( - escrow - .connect(reputationOracle) - .addTrustedHandlers([await externalAddress.getAddress()]) - ).to.be.revertedWith('Address calling not trusted'); - }); - - it('Should revert when adding trusted handlers from recording oracle', async function () { - await expect( - escrow - .connect(recordingOracle) - .addTrustedHandlers([await externalAddress.getAddress()]) - ).to.be.revertedWith('Address calling not trusted'); - }); - }); - - describe('Add trusted handlers', async function () { - it('Should succeed when the contract launcher address trusted handlers and a trusted handler stores results', async () => { - await escrow - .connect(owner) - .addTrustedHandlers([await restAccounts[2].getAddress()]); - - const result = await ( - await escrow - .connect(restAccounts[2]) - .storeResults(MOCK_URL, MOCK_HASH) - ).wait(); - - expect((result?.logs[0] as EventLog).args).to.contain(MOCK_URL); - expect((result?.logs[0] as EventLog).args).to.contain(MOCK_HASH); - }); - - it('Should succeed when add a new trusted handler from trusted handler and a trusted handler stores results', async () => { - await escrow - .connect(trustedHandlers[0]) - .addTrustedHandlers([await restAccounts[3].getAddress()]); - - const result = await ( - await escrow - .connect(restAccounts[3]) - .storeResults(MOCK_URL, MOCK_HASH) - ).wait(); - - expect((result?.logs[0] as EventLog).args).to.contain(MOCK_URL); - expect((result?.logs[0] as EventLog).args).to.contain(MOCK_HASH); - }); - }); - }); - - describe('storeResults', async () => { - describe('Validations', function () { - before(async () => { - await deployEscrow(); - }); - it('Should revert with the right error if address calling not trusted', async function () { - await expect( - escrow.connect(externalAddress).storeResults(MOCK_URL, MOCK_HASH) - ).to.be.revertedWith('Address calling not trusted'); - }); - - it('Should revert with the right error if address calling is reputation oracle', async function () { - await expect( - escrow.connect(reputationOracle).storeResults(MOCK_URL, MOCK_HASH) - ).to.be.revertedWith('Address calling not trusted'); - }); - - it('Should revert with the right error if escrow not in Pending or Partial status state', async function () { - await escrow - .connect(owner) - .addTrustedHandlers([await reputationOracle.getAddress()]); - await expect( - escrow.connect(reputationOracle).storeResults(MOCK_URL, MOCK_HASH) - ).to.be.revertedWith('Escrow not in Pending or Partial status state'); - }); - }); - - describe('Events', function () { - before(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); - }); - - it('Should emit an event on intermediate storage', async function () { - await expect( - await escrow.connect(owner).storeResults(MOCK_URL, MOCK_HASH) - ) - .to.emit(escrow, 'IntermediateStorage') - .withArgs(MOCK_URL, MOCK_HASH); - }); - }); - - describe('Store results', async function () { - before(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); - }); - - it('Should succeed when recording oracle stores results', async () => { - const result = await ( - await escrow - .connect(recordingOracle) - .storeResults(MOCK_URL, MOCK_HASH) - ).wait(); - - expect((result?.logs[0] as EventLog).args).to.contain(MOCK_URL); - expect((result?.logs[0] as EventLog).args).to.contain(MOCK_HASH); - }); - - it('Should succeed when a trusted handler stores results', async () => { - const result = await ( - await escrow - .connect(trustedHandlers[0]) - .storeResults(MOCK_URL, MOCK_HASH) - ).wait(); - - expect((result?.logs[0] as EventLog).args).to.contain(MOCK_URL); - expect((result?.logs[0] as EventLog).args).to.contain(MOCK_HASH); - }); - }); - }); - - describe('setup', () => { - describe('Validations', function () { - before(async () => { - await deployEscrow(); - }); - - it('Should revert with the right error if address calling not trusted', async function () { - await expect( - escrow - .connect(externalAddress) - .setup( - await reputationOracle.getAddress(), - await recordingOracle.getAddress(), - await exchangeOracle.getAddress(), - 10, - 10, - 10, - MOCK_URL, - MOCK_HASH - ) - ).to.be.revertedWith('Address calling not trusted'); - }); - - it('Should revert with the right error if set invalid or missing reputation oracle address', async function () { - await expect( - escrow - .connect(owner) - .setup( - ethers.ZeroAddress, - await recordingOracle.getAddress(), - await exchangeOracle.getAddress(), - 10, - 10, - 10, - MOCK_URL, - MOCK_HASH - ) - ).to.be.revertedWith('Invalid reputation oracle address'); - }); - - it('Should revert with the right error if set invalid or missing recording oracle address', async function () { - await expect( - escrow - .connect(owner) - .setup( - await reputationOracle.getAddress(), - ethers.ZeroAddress, - await exchangeOracle.getAddress(), - 10, - 10, - 10, - MOCK_URL, - MOCK_HASH - ) - ).to.be.revertedWith('Invalid recording oracle address'); - }); - - it('Should revert with the right error if set invalid or missing exchange oracle address', async function () { - await expect( - escrow - .connect(owner) - .setup( - await reputationOracle.getAddress(), - await reputationOracle.getAddress(), - ethers.ZeroAddress, - 10, - 10, - 10, - MOCK_URL, - MOCK_HASH - ) - ).to.be.revertedWith('Invalid exchange oracle address'); - }); - - it('Should revert with the right error if fee percentage out of bounds and too high', async function () { - await expect( - escrow - .connect(owner) - .setup( - await reputationOracle.getAddress(), - await recordingOracle.getAddress(), - await exchangeOracle.getAddress(), - 40, - 40, - 40, - MOCK_URL, - MOCK_HASH - ) - ).to.be.revertedWith('Percentage out of bounds'); - }); - }); - - describe('Events', function () { - before(async () => { - await deployEscrow(); - await fundEscrow(); - }); - - it('Should emit an event on pending', async function () { - await expect( - escrow - .connect(owner) - .setup( - await reputationOracle.getAddress(), - await recordingOracle.getAddress(), - await exchangeOracle.getAddress(), - 10, - 10, - 10, - MOCK_URL, - MOCK_HASH - ) - ) - .to.emit(escrow, 'PendingV2') - .withArgs( - MOCK_URL, - MOCK_HASH, - await reputationOracle.getAddress(), - await recordingOracle.getAddress(), - await exchangeOracle.getAddress() - ) - .to.emit(escrow, 'Fund') - .withArgs(100); - }); - }); - - describe('Setup escrow', async function () { - beforeEach(async () => { - await deployEscrow(); - await fundEscrow(); - }); - - it('Should set correct escrow with params', async () => { - await escrow - .connect(owner) - .setup( - await reputationOracle.getAddress(), - await recordingOracle.getAddress(), - await exchangeOracle.getAddress(), - 10, - 10, - 10, - MOCK_URL, - MOCK_HASH - ); - - expect(await escrow.reputationOracle()).to.equal( - await reputationOracle.getAddress() - ); - expect(await escrow.recordingOracle()).to.equal( - await recordingOracle.getAddress() - ); - expect(await escrow.exchangeOracle()).to.equal( - await exchangeOracle.getAddress() - ); - expect(await escrow.manifestUrl()).to.equal(MOCK_URL); - expect(await escrow.manifestHash()).to.equal(MOCK_HASH); - expect(await escrow.status()).to.equal(Status.Pending); - }); - - it('Should set correct escrow with params by trusted handler', async () => { - await escrow - .connect(trustedHandlers[0]) - .setup( - await reputationOracle.getAddress(), - await recordingOracle.getAddress(), - await exchangeOracle.getAddress(), - 10, - 10, - 10, - MOCK_URL, - MOCK_HASH - ); - - expect(await escrow.reputationOracle()).to.equal( - await reputationOracle.getAddress() - ); - expect(await escrow.recordingOracle()).to.equal( - await recordingOracle.getAddress() - ); - expect(await escrow.exchangeOracle()).to.equal( - await exchangeOracle.getAddress() - ); - expect(await escrow.manifestUrl()).to.equal(MOCK_URL); - expect(await escrow.manifestHash()).to.equal(MOCK_HASH); - expect(await escrow.status()).to.equal(Status.Pending); - }); - }); - }); - - describe('cancel', () => { - describe('Validations', function () { - before(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); - - await escrow - .connect(owner) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ]([await restAccounts[0].getAddress()], [100], MOCK_URL, MOCK_HASH, '000'); - }); - - it('Should revert with the right error if address calling not trusted', async function () { - await expect( - escrow.connect(externalAddress).cancel() - ).to.be.revertedWith('Address calling not trusted'); - }); - - it('Should revert with the right error if address calling is reputation oracle', async function () { - await expect( - escrow.connect(reputationOracle).cancel() - ).to.be.revertedWith('Address calling not trusted'); - }); - - it('Should revert with the right error if address calling is recording oracle', async function () { - await expect( - escrow.connect(recordingOracle).cancel() - ).to.be.revertedWith('Address calling not trusted'); - }); - }); - - describe('Cancel escrow', async function () { - beforeEach(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); - }); - - it('Should succeed when the contract was canceled', async () => { - await escrow.connect(owner).cancel(); - const ststus = await escrow.status(); - expect(ststus).to.equal(Status.Cancelled); - - expect( - await usdt.connect(owner).balanceOf(escrow.getAddress()) - ).to.equal('0', 'Escrow has not been properly canceled'); - }); - - it('Should succeed when the contract was canceled by trusted handler', async () => { - await escrow.connect(trustedHandlers[0]).cancel(); - const ststus = await escrow.status(); - expect(ststus).to.equal(Status.Cancelled); - - expect( - await usdt.connect(owner).balanceOf(escrow.getAddress()) - ).to.equal('0', 'Escrow has not been properly canceled'); - }); - }); - }); - - describe('bulkPayOut', () => { - describe('Validations', function () { - before(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); - }); - - it('Should revert with the right error if address calling is not trusted', async function () { - const recepients = [await restAccounts[0].getAddress()]; - const amounts = [10]; - - await expect( - escrow - .connect(externalAddress) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000') - ).to.be.revertedWith('Address calling not trusted'); - }); - - it('Should revert with the right error if address calling is recording oracle', async function () { - const recepients = [await restAccounts[0].getAddress()]; - const amounts = [10]; - - await expect( - escrow - .connect(recordingOracle) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000') - ).to.be.revertedWith('Address calling not trusted'); - }); - - it('Should revert with the right error if amount of recipients more then amount of values', async function () { - const recepients = [ - await restAccounts[0].getAddress(), - await restAccounts[1].getAddress(), - await restAccounts[2].getAddress(), - ]; - const amounts = [10, 20]; - - await expect( - escrow - .connect(reputationOracle) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000') - ).to.be.revertedWith("Amount of recipients and values don't match"); - }); - - it('Should revert with the right error if amount of recipients less then amount of values', async function () { - const recepients = [ - await restAccounts[0].getAddress(), - await restAccounts[1].getAddress(), - ]; - const amounts = [10, 20, 30]; - - await expect( - escrow - .connect(reputationOracle) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000') - ).to.be.revertedWith("Amount of recipients and values don't match"); - }); - - it('Should revert with the right error if too many recipients', async function () { - const recepients = Array.from( - new Array(BULK_MAX_COUNT + 1), - () => ethers.ZeroAddress - ); - const amounts = Array.from({ length: BULK_MAX_COUNT + 1 }, () => 1); - - await expect( - escrow - .connect(reputationOracle) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000') - ).to.be.revertedWith('Too many recipients'); - }); - }); - - describe('Events', function () { - this.beforeEach(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); - }); - - it('Should emit bulkPayOut and Completed events for complete bulkPayOut', async function () { - const recepients = [await restAccounts[0].getAddress()]; - const amounts = [100]; - - const tx = await escrow - .connect(owner) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000'); - - await expect(tx) - .to.emit(escrow, 'BulkTransferV2') - .withArgs(anyValue, recepients, [100], false, MOCK_URL); - - await expect(tx).to.emit(escrow, 'Completed'); - }); - - it('Should emit only bulkPayOut event for partial bulkPayOut', async function () { - const recepients = [await restAccounts[0].getAddress()]; - const amounts = [10]; - - const tx = await escrow - .connect(owner) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000'); - - await expect(tx) - .to.emit(escrow, 'BulkTransferV2') - .withArgs(anyValue, recepients, [10], true, MOCK_URL); - - await expect(tx).not.to.emit(escrow, 'Completed'); - }); - - it('Should emit bulkPayOut and Completed events for partial bulkPayOut with forceComplete option', async function () { - const recepients = [await restAccounts[0].getAddress()]; - const amounts = [10]; - - const tx = await escrow - .connect(owner) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000', true); - - await expect(tx) - .to.emit(escrow, 'BulkTransferV2') - .withArgs(anyValue, recepients, [10], false, MOCK_URL); - - await expect(tx).to.emit(escrow, 'Completed'); - }); - }); - - describe('Bulk payout for recipients', async function () { - beforeEach(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); - }); - - it('Should pays each recipient their corresponding amount', async () => { - const account1 = await restAccounts[0].getAddress(); - const account2 = await restAccounts[1].getAddress(); - const account3 = await restAccounts[2].getAddress(); - - const initialBalanceAccount1 = await usdt - .connect(owner) - .balanceOf(account1); - const initialBalanceAccount2 = await usdt - .connect(owner) - .balanceOf(account2); - const initialBalanceAccount3 = await usdt - .connect(owner) - .balanceOf(account3); - const initialBalanceRecordingOracle = await usdt - .connect(owner) - .balanceOf(await recordingOracle.getAddress()); - const initialBalanceReputationOracle = await usdt - .connect(owner) - .balanceOf(await reputationOracle.getAddress()); - const initialBalanceExchangeOracle = await usdt - .connect(owner) - .balanceOf(await exchangeOracle.getAddress()); - - const recepients = [account1, account2, account3]; - const amounts = [10, 20, 30]; - - await escrow - .connect(reputationOracle) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000'); - - const finalBalanceAccount1 = await usdt - .connect(owner) - .balanceOf(account1); - const finalBalanceAccount2 = await usdt - .connect(owner) - .balanceOf(account2); - const finalBalanceAccount3 = await usdt - .connect(owner) - .balanceOf(account3); - const finalBalanceRecordingOracle = await usdt - .connect(owner) - .balanceOf(await recordingOracle.getAddress()); - const finalBalanceReputationOracle = await usdt - .connect(owner) - .balanceOf(await reputationOracle.getAddress()); - const finalBalanceExchangeOracle = await usdt - .connect(owner) - .balanceOf(await exchangeOracle.getAddress()); - - expect( - (finalBalanceAccount1 - initialBalanceAccount1).toString() - ).to.equal('7'); - expect( - (finalBalanceAccount2 - initialBalanceAccount2).toString() - ).to.equal('14'); - expect( - (finalBalanceAccount3 - initialBalanceAccount3).toString() - ).to.equal('21'); - expect( - ( - finalBalanceRecordingOracle - initialBalanceRecordingOracle - ).toString() - ).to.equal('6'); - expect( - ( - finalBalanceReputationOracle - initialBalanceReputationOracle - ).toString() - ).to.equal('6'); - - expect( - (finalBalanceExchangeOracle - initialBalanceExchangeOracle).toString() - ).to.equal('6'); - - expect(await escrow.remainingFunds()).to.equal('40'); - }); - - it('Should pays each recipient their corresponding amount and return the remaining to launcher with force option', async () => { - const account1 = await restAccounts[0].getAddress(); - const account2 = await restAccounts[1].getAddress(); - const account3 = await restAccounts[2].getAddress(); - - const initialBalanceAccount1 = await usdt - .connect(owner) - .balanceOf(account1); - const initialBalanceAccount2 = await usdt - .connect(owner) - .balanceOf(account2); - const initialBalanceAccount3 = await usdt - .connect(owner) - .balanceOf(account3); - const initialBalanceLauncher = await usdt - .connect(owner) - .balanceOf(await launcher.getAddress()); - const initialBalanceRecordingOracle = await usdt - .connect(owner) - .balanceOf(await recordingOracle.getAddress()); - const initialBalanceReputationOracle = await usdt - .connect(owner) - .balanceOf(await reputationOracle.getAddress()); - const initialBalanceExchangeOracle = await usdt - .connect(owner) - .balanceOf(await exchangeOracle.getAddress()); - - const recepients = [account1, account2, account3]; - const amounts = [10, 20, 30]; - - await escrow - .connect(reputationOracle) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000', true); - - const finalBalanceAccount1 = await usdt - .connect(owner) - .balanceOf(account1); - const finalBalanceAccount2 = await usdt - .connect(owner) - .balanceOf(account2); - const finalBalanceAccount3 = await usdt - .connect(owner) - .balanceOf(account3); - const finalBalanceLauncher = await usdt - .connect(owner) - .balanceOf(await launcher.getAddress()); - const finalBalanceRecordingOracle = await usdt - .connect(owner) - .balanceOf(await recordingOracle.getAddress()); - const finalBalanceReputationOracle = await usdt - .connect(owner) - .balanceOf(await reputationOracle.getAddress()); - const finalBalanceExchangeOracle = await usdt - .connect(owner) - .balanceOf(await exchangeOracle.getAddress()); - - expect( - (finalBalanceAccount1 - initialBalanceAccount1).toString() - ).to.equal('7'); - expect( - (finalBalanceAccount2 - initialBalanceAccount2).toString() - ).to.equal('14'); - expect( - (finalBalanceAccount3 - initialBalanceAccount3).toString() - ).to.equal('21'); - expect( - (finalBalanceLauncher - initialBalanceLauncher).toString() - ).to.equal('40'); - expect( - ( - finalBalanceRecordingOracle - initialBalanceRecordingOracle - ).toString() - ).to.equal('6'); - expect( - ( - finalBalanceReputationOracle - initialBalanceReputationOracle - ).toString() - ).to.equal('6'); - - expect( - (finalBalanceExchangeOracle - initialBalanceExchangeOracle).toString() - ).to.equal('6'); - - expect(await escrow.remainingFunds()).to.equal('0'); - }); - - it('Should runs from setup to bulkPayOut to complete correctly', async () => { - const recepients = [await restAccounts[3].getAddress()]; - const amounts = [100]; - - expect(await escrow.status()).to.equal(Status.Pending); - - await escrow - .connect(reputationOracle) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000'); - expect(await escrow.status()).to.equal(Status.Complete); - }); - - it('Should runs from setup to bulkPayOut to complete correctly with multiple addresses', async () => { - const recepients = [ - await restAccounts[3].getAddress(), - await restAccounts[4].getAddress(), - await restAccounts[5].getAddress(), - ]; - const amounts = [10, 20, 70]; - - expect(await escrow.status()).to.equal(Status.Pending); - - await escrow - .connect(reputationOracle) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000'); - expect(await escrow.status()).to.equal(Status.Complete); - }); - - it('Should runs from setup to bulkPayOut to partial correctly', async () => { - const recepients = [await restAccounts[3].getAddress()]; - const amounts = [80]; - - expect(await escrow.status()).to.equal(Status.Pending); - - await escrow - .connect(reputationOracle) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000'); - expect(await escrow.status()).to.equal(Status.Partial); - }); - - it('Should runs from setup to bulkPayOut to partial correctly with multiple addresses', async () => { - const recepients = [ - await restAccounts[3].getAddress(), - await restAccounts[4].getAddress(), - await restAccounts[5].getAddress(), - ]; - const amounts = [10, 20, 50]; - - expect(await escrow.status()).to.equal(Status.Pending); - - await escrow - .connect(reputationOracle) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000'); - expect(await escrow.status()).to.equal(Status.Partial); - }); - }); - }); - - describe('withdraw', () => { - describe('can fund hmtoken to escrow, and then withdraw', () => { - before(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); - }); - - it('Should fund escrow with HMTokens', async () => { - const amount = 10; - await hmtoken.connect(owner).transfer(escrow.getAddress(), amount); - - const result = await hmtoken - .connect(owner) - .balanceOf(escrow.getAddress()); - expect(result.toString()).to.equal(amount.toString()); - - expect(await escrow.remainingFunds()).to.equal('100'); - }); - - it('Should withdraw HMTokens from escrow', async () => { - await escrow.connect(owner).withdraw(hmtoken.getAddress()); - - const result = await hmtoken - .connect(owner) - .balanceOf(escrow.getAddress()); - expect(result.toString()).to.equal('0'); - - expect(await escrow.remainingFunds()).to.equal('100'); - }); - - it('Should not allow USDT withdrawal from escrow', async () => { - await expect( - escrow.connect(owner).withdraw(usdt.getAddress()) - ).to.be.revertedWith('No funds to withdraw'); - }); - - it('Should allow additional USDT withdrawal from escrow', async () => { - await usdt.connect(owner).transfer(escrow.getAddress(), 100); - - await escrow.connect(owner).withdraw(usdt.getAddress()); - - const result = await usdt.connect(owner).balanceOf(escrow.getAddress()); - expect(result.toString()).to.equal('100'); - - expect(await escrow.remainingFunds()).to.equal('100'); - }); - }); - - describe('Events', function () { - const amount = 10; - before(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); - - await usdt.connect(owner).transfer(escrow.getAddress(), amount); - }); - - it('Should emit an event on withdraw', async function () { - await expect(await escrow.connect(owner).withdraw(usdt.getAddress())) - .to.emit(escrow, 'Withdraw') - .withArgs(usdt.getAddress(), amount); - }); - }); - }); - describe('complete', () => { - describe('Validations', function () { - beforeEach(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); - }); - - it('Should revert with the right error if escrow not in Paid or Partial state', async function () { - await expect(escrow.connect(owner).complete()).to.be.revertedWith( - 'Escrow not in Paid or Partial state' - ); - }); - }); - - describe('Events', function () { - beforeEach(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); - - const recipients = [await restAccounts[0].getAddress()]; - const amounts = [10]; - await escrow - .connect(owner) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' - ](recipients, amounts, MOCK_URL, MOCK_HASH, '000', false); - }); - - it('Should emit a Completed event when escrow is completed', async function () { - await expect(escrow.connect(owner).complete()).to.emit( - escrow, - 'Completed' - ); - }); - }); - - describe('Complete escrow', async function () { - beforeEach(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); - }); - - it('Should succeed if escrow is in Partial state', async function () { - const recipients = [await restAccounts[0].getAddress()]; - const amounts = [10]; - await escrow - .connect(owner) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' - ](recipients, amounts, MOCK_URL, MOCK_HASH, '000', false); - expect(await escrow.status()).to.equal(Status.Partial); - - await escrow.connect(owner).complete(); - expect(await escrow.status()).to.equal(Status.Complete); - expect(await escrow.remainingFunds()).to.equal('0'); - }); - - it('Should transfer remaining funds to launcher on complete', async function () { - const initialLauncherBalance = await usdt - .connect(owner) - .balanceOf(await launcher.getAddress()); - - const recipients = [await restAccounts[0].getAddress()]; - const amounts = [10]; - await escrow - .connect(owner) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' - ](recipients, amounts, MOCK_URL, MOCK_HASH, '000', false); - await escrow.connect(owner).complete(); - - const finalLauncherBalance = await usdt - .connect(owner) - .balanceOf(await launcher.getAddress()); - - expect(finalLauncherBalance - initialLauncherBalance).to.equal('90'); - }); - }); - }); -}); diff --git a/packages/core/test/Escrow.ts b/packages/core/test/Escrow.ts index 85c01fc5a9..2850264373 100644 --- a/packages/core/test/Escrow.ts +++ b/packages/core/test/Escrow.ts @@ -1,13 +1,16 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { anyValue } from '@nomicfoundation/hardhat-chai-matchers/withArgs'; import { expect } from 'chai'; import { ethers } from 'hardhat'; -import { EventLog, Signer } from 'ethers'; +import { Signer, ZeroAddress } from 'ethers'; import { Escrow, HMToken } from '../typechain-types'; +import { faker } from '@faker-js/faker'; -const MOCK_URL = 'http://google.com/fake'; -const MOCK_HASH = 'kGKmnj9BRf'; const BULK_MAX_COUNT = 100; +const STANDARD_DURATION = 100; + +const FIXTURE_URL = faker.internet.url(); +const FIXTURE_HASH = faker.string.alphanumeric(10); +const FIXTURE_FUND_AMOUNT = ethers.parseEther('100'); enum Status { Launched = 0, @@ -16,68 +19,109 @@ enum Status { Paid = 3, Complete = 4, Cancelled = 5, + ToCancel = 6, } -let owner: Signer, - launcher: Signer, - reputationOracle: Signer, - recordingOracle: Signer, - exchangeOracle: Signer, - externalAddress: Signer, - restAccounts: Signer[], - trustedHandlers: Signer[]; - -let token: HMToken, escrow: Escrow; - -async function deployEscrow() { - // Deploy Escrow Contract +let owner: Signer; +let launcher: Signer; +let reputationOracle: Signer; +let recordingOracle: Signer; +let exchangeOracle: Signer; +let external: Signer; +let admin: Signer; +let restAccounts: Signer[]; + +let ownerAddress: string; +let launcherAddress: string; +let reputationOracleAddress: string; +let recordingOracleAddress: string; +let exchangeOracleAddress: string; +let externalAddress: string; +let adminAddress: string; + +let token: HMToken; +let token2: HMToken; +let escrow: Escrow; +let tokenAddress: string; +let tokenAddress2: string; + +async function deployEscrow( + tokenAddr: string = tokenAddress, + launcherAddr: string = launcherAddress, + adminAddr: string = adminAddress, + duration: number = STANDARD_DURATION +) { const Escrow = await ethers.getContractFactory('contracts/Escrow.sol:Escrow'); escrow = (await Escrow.deploy( - await token.getAddress(), - await launcher.getAddress(), - await owner.getAddress(), - 100, - await Promise.all( - trustedHandlers.map(async (handler) => await handler.getAddress()) - ) + tokenAddr, + launcherAddr, + adminAddr, + duration )) as Escrow; } -async function setupEscrow() { - await escrow - .connect(owner) +async function fundEscrow( + amount?: bigint, + fundToken: HMToken = token +): Promise { + const value = amount ?? FIXTURE_FUND_AMOUNT; + await fundToken.connect(owner).transfer(await escrow.getAddress(), value); + return value; +} + +async function setupEscrow( + repFee = 3, + recFee = 3, + excFee = 3, + url: string = FIXTURE_URL, + hash: string = FIXTURE_HASH +) { + return await escrow + .connect(launcher) .setup( - await reputationOracle.getAddress(), - await recordingOracle.getAddress(), - await exchangeOracle.getAddress(), - 10, - 10, - 10, - MOCK_URL, - MOCK_HASH + reputationOracleAddress, + recordingOracleAddress, + exchangeOracleAddress, + repFee, + recFee, + excFee, + url, + hash ); } -async function fundEscrow() { - const amount = 100; - await token.connect(owner).transfer(escrow.getAddress(), amount); +async function storeResults( + url: string = FIXTURE_URL, + hash: string = FIXTURE_HASH, + reserveAmount = ethers.parseEther('0'), + signer: Signer = recordingOracle +) { + return await escrow + .connect(signer) + ['storeResults(string,string,uint256)'](url, hash, reserveAmount); } describe('Escrow', function () { - this.beforeAll(async () => { + before(async () => { [ owner, launcher, reputationOracle, recordingOracle, exchangeOracle, - externalAddress, + external, + admin, ...restAccounts ] = await ethers.getSigners(); - trustedHandlers = [restAccounts[0], restAccounts[1]]; + ownerAddress = await owner.getAddress(); + launcherAddress = await launcher.getAddress(); + reputationOracleAddress = await reputationOracle.getAddress(); + recordingOracleAddress = await recordingOracle.getAddress(); + exchangeOracleAddress = await exchangeOracle.getAddress(); + externalAddress = await external.getAddress(); + adminAddress = await admin.getAddress(); - // Deploy HMTToken Contract const HMToken = await ethers.getContractFactory( 'contracts/HMToken.sol:HMToken' ); @@ -87,900 +131,1578 @@ describe('Escrow', function () { 18, 'HMT' )) as HMToken; + tokenAddress = await token.getAddress(); + token2 = (await HMToken.deploy(1000000000, 'Token2', 18, 'TK2')) as HMToken; + tokenAddress2 = await token2.getAddress(); }); describe('deployment', () => { - before(async () => { - await deployEscrow(); - }); - - it('Should set the right token address', async () => { - const result = await escrow.token(); - expect(result).to.equal(await token.getAddress()); - }); - - it('Should set the right launched status', async () => { - const result = await escrow.status(); - expect(result).to.equal(Status.Launched); - }); - - it('Should set the right escrow balance', async () => { - const result = await escrow.connect(launcher).getBalance(); - expect(result.toString()).to.equal('0'); - }); - - it('Should set the right contract creator', async () => { - const result = await escrow.launcher(); - expect(result).to.equal(await launcher.getAddress()); - }); - - it('Should set the right escrow factory contract', async () => { - const result = await escrow.escrowFactory(); - expect(result).to.equal(await owner.getAddress()); - }); - - it('Should topup and return the right escrow balance', async () => { - const amount = 1000; - await token.connect(owner).transfer(escrow.getAddress(), amount); - - const result = await escrow.connect(launcher).getBalance(); - expect(result).to.equal(amount.toString()); - }); - }); - - describe('addTrustedHandlers', async () => { - before(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); - }); + describe('reverts', () => { + it('reverts when token is zero address', async () => { + await expect(deployEscrow(ZeroAddress)).revertedWith('Zero address'); + }); - describe('Validations', function () { - it('Should revert with the right error if caller cannot add trusted handlers', async function () { - await expect( - escrow - .connect(externalAddress) - .addTrustedHandlers([await reputationOracle.getAddress()]) - ).to.be.revertedWith('Address calling not trusted'); + it('reverts when launcher is zero address', async () => { + await expect(deployEscrow(tokenAddress, ZeroAddress)).revertedWith( + 'Zero address' + ); }); - it('Should revert when adding trusted handlers from reputation oracle', async function () { + it('reverts when admin is zero address', async () => { await expect( - escrow - .connect(reputationOracle) - .addTrustedHandlers([await externalAddress.getAddress()]) - ).to.be.revertedWith('Address calling not trusted'); + deployEscrow(tokenAddress, launcherAddress, ZeroAddress) + ).revertedWith('Zero address'); }); - it('Should revert when adding trusted handlers from recording oracle', async function () { + it('reverts when duration is 0', async () => { await expect( - escrow - .connect(recordingOracle) - .addTrustedHandlers([await externalAddress.getAddress()]) - ).to.be.revertedWith('Address calling not trusted'); + deployEscrow(tokenAddress, launcherAddress, adminAddress, 0) + ).revertedWith('Duration is 0'); }); }); - describe('Add trusted handlers', async function () { - it('Should succeed when the contract launcher address trusted handlers and a trusted handler stores results', async () => { - await escrow - .connect(owner) - .addTrustedHandlers([await restAccounts[2].getAddress()]); - - const result = await ( - await escrow - .connect(restAccounts[2]) - .storeResults(MOCK_URL, MOCK_HASH) - ).wait(); - - expect((result?.logs[0] as EventLog).args).to.contain(MOCK_URL); - expect((result?.logs[0] as EventLog).args).to.contain(MOCK_HASH); - }); - - it('Should succeed when add a new trusted handler from trusted handler and a trusted handler stores results', async () => { - await escrow - .connect(trustedHandlers[0]) - .addTrustedHandlers([await restAccounts[3].getAddress()]); - - const result = await ( - await escrow - .connect(restAccounts[3]) - .storeResults(MOCK_URL, MOCK_HASH) - ).wait(); + describe('succeeds', () => { + it('escrow deployed successfully', async () => { + await deployEscrow(); + const block = await ethers.provider.getBlock( + escrow.deploymentTransaction()?.blockNumber as number + ); - expect((result?.logs[0] as EventLog).args).to.contain(MOCK_URL); - expect((result?.logs[0] as EventLog).args).to.contain(MOCK_HASH); + expect(await escrow.token()).to.equal(tokenAddress); + expect(await escrow.launcher()).to.equal(launcherAddress); + expect(await escrow.admin()).to.equal(adminAddress); + expect(await escrow.status()).to.equal(Status.Launched); + expect(await escrow.duration()).to.equal( + (block?.timestamp as number) + STANDARD_DURATION + ); + expect(await escrow.escrowFactory()).to.equal(ownerAddress); }); }); }); - describe('storeResults', async () => { - describe('Validations', function () { - before(async () => { - await deployEscrow(); - }); - it('Should revert with the right error if address calling not trusted', async function () { - await expect( - escrow.connect(externalAddress).storeResults(MOCK_URL, MOCK_HASH) - ).to.be.revertedWith('Address calling not trusted'); - }); - - it('Should revert with the right error if address calling is reputation oracle', async function () { + describe('setup()', () => { + beforeEach(async () => { + await deployEscrow(); + }); + describe('reverts', () => { + it('reverts when called by unauthorised address', async () => { await expect( - escrow.connect(reputationOracle).storeResults(MOCK_URL, MOCK_HASH) - ).to.be.revertedWith('Address calling not trusted'); - }); - - it('Should revert with the right error if escrow not in Pending or Partial status state', async function () { - await escrow - .connect(owner) - .addTrustedHandlers([await reputationOracle.getAddress()]); + escrow + .connect(external) + .setup( + reputationOracleAddress, + recordingOracleAddress, + exchangeOracleAddress, + 3, + 3, + 3, + FIXTURE_URL, + FIXTURE_HASH + ) + ).to.be.revertedWith('Unauthorised'); await expect( - escrow.connect(reputationOracle).storeResults(MOCK_URL, MOCK_HASH) - ).to.be.revertedWith('Escrow not in Pending or Partial status state'); - }); - }); - - describe('Events', function () { - before(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); - }); - - it('Should emit an event on intermediate storage', async function () { + escrow + .connect(exchangeOracle) + .setup( + reputationOracleAddress, + recordingOracleAddress, + exchangeOracleAddress, + 3, + 3, + 3, + FIXTURE_URL, + FIXTURE_HASH + ) + ).to.be.revertedWith('Unauthorised'); await expect( - await escrow.connect(owner).storeResults(MOCK_URL, MOCK_HASH) - ) - .to.emit(escrow, 'IntermediateStorage') - .withArgs(MOCK_URL, MOCK_HASH); - }); - }); - - describe('Store results', async function () { - before(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); - }); - - it('Should succeed when recording oracle stores results', async () => { - const result = await ( - await escrow + escrow .connect(recordingOracle) - .storeResults(MOCK_URL, MOCK_HASH) - ).wait(); - - expect((result?.logs[0] as EventLog).args).to.contain(MOCK_URL); - expect((result?.logs[0] as EventLog).args).to.contain(MOCK_HASH); - }); - - it('Should succeed when a trusted handler stores results', async () => { - const result = await ( - await escrow - .connect(trustedHandlers[0]) - .storeResults(MOCK_URL, MOCK_HASH) - ).wait(); - - expect((result?.logs[0] as EventLog).args).to.contain(MOCK_URL); - expect((result?.logs[0] as EventLog).args).to.contain(MOCK_HASH); - }); - }); - }); - - describe('setup', () => { - describe('Validations', function () { - before(async () => { - await deployEscrow(); - }); - - it('Should revert with the right error if address calling not trusted', async function () { + .setup( + reputationOracleAddress, + recordingOracleAddress, + exchangeOracleAddress, + 3, + 3, + 3, + FIXTURE_URL, + FIXTURE_HASH + ) + ).to.be.revertedWith('Unauthorised'); await expect( escrow - .connect(externalAddress) + .connect(reputationOracle) .setup( - await reputationOracle.getAddress(), - await recordingOracle.getAddress(), - await exchangeOracle.getAddress(), - 10, - 10, - 10, - MOCK_URL, - MOCK_HASH + reputationOracleAddress, + recordingOracleAddress, + exchangeOracleAddress, + 3, + 3, + 3, + FIXTURE_URL, + FIXTURE_HASH ) - ).to.be.revertedWith('Address calling not trusted'); + ).to.be.revertedWith('Unauthorised'); }); - it('Should revert with the right error if set invalid or missing reputation oracle address', async function () { + it('reverts when reputation oracle is zero address', async () => { await expect( escrow - .connect(owner) + .connect(launcher) .setup( ethers.ZeroAddress, - await recordingOracle.getAddress(), - await exchangeOracle.getAddress(), - 10, - 10, - 10, - MOCK_URL, - MOCK_HASH + recordingOracleAddress, + exchangeOracleAddress, + 3, + 3, + 3, + FIXTURE_URL, + FIXTURE_HASH ) - ).to.be.revertedWith('Invalid reputation oracle address'); + ).to.be.revertedWith('Invalid reputation oracle'); }); - it('Should revert with the right error if set invalid or missing recording oracle address', async function () { + it('reverts when zero recording oracle is zero address', async () => { await expect( escrow - .connect(owner) + .connect(launcher) .setup( - await reputationOracle.getAddress(), + reputationOracleAddress, ethers.ZeroAddress, - await exchangeOracle.getAddress(), - 10, - 10, - 10, - MOCK_URL, - MOCK_HASH + exchangeOracleAddress, + 3, + 3, + 3, + FIXTURE_URL, + FIXTURE_HASH ) - ).to.be.revertedWith('Invalid recording oracle address'); + ).to.be.revertedWith('Invalid recording oracle'); }); - it('Should revert with the right error if set invalid or missing exchange oracle address', async function () { + it('reverts when zero exchange oracle is zero address', async () => { await expect( escrow - .connect(owner) + .connect(launcher) .setup( - await reputationOracle.getAddress(), - await reputationOracle.getAddress(), + reputationOracleAddress, + recordingOracleAddress, ethers.ZeroAddress, - 10, - 10, - 10, - MOCK_URL, - MOCK_HASH + 3, + 3, + 3, + FIXTURE_URL, + FIXTURE_HASH ) - ).to.be.revertedWith('Invalid exchange oracle address'); + ).to.be.revertedWith('Invalid exchange oracle'); }); - it('Should revert with the right error if fee percentage out of bounds and too high', async function () { + it('reverts when total fee > 100', async () => { await expect( escrow - .connect(owner) + .connect(launcher) .setup( - await reputationOracle.getAddress(), - await recordingOracle.getAddress(), - await exchangeOracle.getAddress(), - 40, - 40, - 40, - MOCK_URL, - MOCK_HASH + reputationOracleAddress, + recordingOracleAddress, + exchangeOracleAddress, + 60, + 30, + 20, + FIXTURE_URL, + FIXTURE_HASH ) ).to.be.revertedWith('Percentage out of bounds'); }); }); - - describe('Events', function () { - before(async () => { - await deployEscrow(); - await fundEscrow(); - }); - - it('Should emit an event on pending', async function () { + describe('succeeds', () => { + it('Launcher: sets up successfully', async () => { + const amount = await fundEscrow(); await expect( escrow - .connect(owner) + .connect(launcher) .setup( - await reputationOracle.getAddress(), - await recordingOracle.getAddress(), - await exchangeOracle.getAddress(), - 10, - 10, - 10, - MOCK_URL, - MOCK_HASH + reputationOracleAddress, + recordingOracleAddress, + exchangeOracleAddress, + 5, + 5, + 5, + FIXTURE_URL, + FIXTURE_HASH ) ) .to.emit(escrow, 'PendingV2') .withArgs( - MOCK_URL, - MOCK_HASH, - await reputationOracle.getAddress(), - await recordingOracle.getAddress(), - await exchangeOracle.getAddress() + FIXTURE_URL, + FIXTURE_HASH, + reputationOracleAddress, + recordingOracleAddress, + exchangeOracleAddress ) .to.emit(escrow, 'Fund') - .withArgs(100); - }); - }); - - describe('Setup escrow', async function () { - beforeEach(async () => { - await deployEscrow(); - await fundEscrow(); - }); - - it('Should set correct escrow with params', async () => { - await escrow - .connect(owner) - .setup( - await reputationOracle.getAddress(), - await recordingOracle.getAddress(), - await exchangeOracle.getAddress(), - 10, - 10, - 10, - MOCK_URL, - MOCK_HASH - ); + .withArgs(amount); - expect(await escrow.reputationOracle()).to.equal( - await reputationOracle.getAddress() - ); - expect(await escrow.recordingOracle()).to.equal( - await recordingOracle.getAddress() - ); - expect(await escrow.exchangeOracle()).to.equal( - await exchangeOracle.getAddress() - ); - expect(await escrow.manifestUrl()).to.equal(MOCK_URL); - expect(await escrow.manifestHash()).to.equal(MOCK_HASH); expect(await escrow.status()).to.equal(Status.Pending); + expect(await escrow.manifestUrl()).to.equal(FIXTURE_URL); + expect(await escrow.manifestHash()).to.equal(FIXTURE_HASH); }); - it('Should set correct escrow with params by trusted handler', async () => { - await escrow - .connect(trustedHandlers[0]) - .setup( - await reputationOracle.getAddress(), - await recordingOracle.getAddress(), - await exchangeOracle.getAddress(), - 10, - 10, - 10, - MOCK_URL, - MOCK_HASH - ); + it('Admin: sets up successfully', async () => { + const amount = await fundEscrow(); + await expect( + escrow + .connect(admin) + .setup( + reputationOracleAddress, + recordingOracleAddress, + exchangeOracleAddress, + 5, + 5, + 5, + FIXTURE_URL, + FIXTURE_HASH + ) + ) + .to.emit(escrow, 'PendingV2') + .withArgs( + FIXTURE_URL, + FIXTURE_HASH, + reputationOracleAddress, + recordingOracleAddress, + exchangeOracleAddress + ) + .to.emit(escrow, 'Fund') + .withArgs(amount); - expect(await escrow.reputationOracle()).to.equal( - await reputationOracle.getAddress() - ); - expect(await escrow.recordingOracle()).to.equal( - await recordingOracle.getAddress() - ); - expect(await escrow.exchangeOracle()).to.equal( - await exchangeOracle.getAddress() - ); - expect(await escrow.manifestUrl()).to.equal(MOCK_URL); - expect(await escrow.manifestHash()).to.equal(MOCK_HASH); expect(await escrow.status()).to.equal(Status.Pending); + expect(await escrow.manifestUrl()).to.equal(FIXTURE_URL); + expect(await escrow.manifestHash()).to.equal(FIXTURE_HASH); }); }); }); - describe('cancel', () => { - describe('Validations', function () { - before(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); + describe('storeResults()', () => { + beforeEach(async () => { + await deployEscrow(); + await fundEscrow(); + await setupEscrow(); + }); + describe('reverts', () => { + it('reverts outside Pending/Partial/ToCancel', async () => { + await escrow.connect(launcher).requestCancellation(); + expect(await escrow.status()).to.equal(Status.ToCancel); + await storeResults(); //Set cancelled status + await expect( + storeResults(FIXTURE_URL, FIXTURE_HASH) + ).to.be.revertedWith('Invalid status'); + }); - await escrow - .connect(owner) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ]([await restAccounts[0].getAddress()], [100], MOCK_URL, MOCK_HASH, '000'); + it('reverts with Empty URL', async () => { + await expect( + storeResults('', FIXTURE_HASH, FIXTURE_FUND_AMOUNT) + ).to.be.revertedWith('Empty URL'); }); - it('Should revert with the right error if address calling not trusted', async function () { + it('reverts with Empty hash', async () => { await expect( - escrow.connect(externalAddress).cancel() - ).to.be.revertedWith('Address calling not trusted'); + storeResults(FIXTURE_URL, '', FIXTURE_FUND_AMOUNT) + ).to.be.revertedWith('Empty hash'); }); - it('Should revert with the right error if address calling is reputation oracle', async function () { + it('reverts when called by unauthorised address', async () => { + await expect( + storeResults( + FIXTURE_URL, + FIXTURE_HASH, + ethers.parseEther('0'), + external + ) + ).to.be.revertedWith('Unauthorised'); + await expect( + storeResults( + FIXTURE_URL, + FIXTURE_HASH, + ethers.parseEther('0'), + launcher + ) + ).to.be.revertedWith('Unauthorised'); + await expect( + storeResults( + FIXTURE_URL, + FIXTURE_HASH, + ethers.parseEther('0'), + reputationOracle + ) + ).to.be.revertedWith('Unauthorised'); await expect( - escrow.connect(reputationOracle).cancel() - ).to.be.revertedWith('Address calling not trusted'); + storeResults( + FIXTURE_URL, + FIXTURE_HASH, + ethers.parseEther('0'), + exchangeOracle + ) + ).to.be.revertedWith('Unauthorised'); }); - it('Should revert with the right error if address calling is recording oracle', async function () { + it('reverts with DEPRECATED_SIGNATURE', async () => { await expect( - escrow.connect(recordingOracle).cancel() - ).to.be.revertedWith('Address calling not trusted'); + escrow + .connect(recordingOracle) + ['storeResults(string,string)'](FIXTURE_URL, FIXTURE_HASH) + ).to.be.revertedWith('DEPRECATED_SIGNATURE'); }); }); - - describe('Cancel escrow', async function () { - beforeEach(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); + describe('succeeds', () => { + it('Recording oracle: stores results successfully', async () => { + await expect( + storeResults(FIXTURE_URL, FIXTURE_HASH, FIXTURE_FUND_AMOUNT) + ) + .to.emit(escrow, 'IntermediateStorage') + .withArgs(FIXTURE_URL, FIXTURE_HASH); + expect(await escrow.intermediateResultsUrl()).to.equal(FIXTURE_URL); + expect(await escrow.reservedFunds()).to.equal(FIXTURE_FUND_AMOUNT); }); - it('Should succeed when the contract was canceled', async () => { - await escrow.connect(owner).cancel(); - const ststus = await escrow.status(); - expect(ststus).to.equal(Status.Cancelled); - - expect( - await token.connect(owner).balanceOf(escrow.getAddress()) - ).to.equal('0', 'Escrow has not been properly canceled'); + it('Recording oracle: stores results successfully and cancels the escrow', async () => { + const launcherInitialBalance = await token.balanceOf(launcher); + await escrow.connect(launcher).requestCancellation(); + await expect(storeResults()) + .to.emit(escrow, 'IntermediateStorage') + .withArgs(FIXTURE_URL, FIXTURE_HASH); + expect(await escrow.intermediateResultsUrl()).to.equal(FIXTURE_URL); + expect(await escrow.status()).to.equal(Status.Cancelled); + expect(await escrow.remainingFunds()).to.equal(ethers.parseEther('0')); + expect(await token.balanceOf(launcher)).to.equal( + launcherInitialBalance + FIXTURE_FUND_AMOUNT + ); }); - it('Should succeed when the contract was canceled by trusted handler', async () => { - await escrow.connect(trustedHandlers[0]).cancel(); - const ststus = await escrow.status(); - expect(ststus).to.equal(Status.Cancelled); + it('Admin: stores results successfully', async () => { + await expect( + storeResults(FIXTURE_URL, FIXTURE_HASH, FIXTURE_FUND_AMOUNT, admin) + ) + .to.emit(escrow, 'IntermediateStorage') + .withArgs(FIXTURE_URL, FIXTURE_HASH); + expect(await escrow.intermediateResultsUrl()).to.equal(FIXTURE_URL); + expect(await escrow.reservedFunds()).to.equal(FIXTURE_FUND_AMOUNT); + }); - expect( - await token.connect(owner).balanceOf(escrow.getAddress()) - ).to.equal('0', 'Escrow has not been properly canceled'); + it('Admin: stores results successfully and cancels the escrow', async () => { + const launcherInitialBalance = await token.balanceOf(launcher); + await escrow.connect(launcher).requestCancellation(); + await expect( + storeResults(FIXTURE_URL, FIXTURE_HASH, ethers.parseEther('0'), admin) + ) + .to.emit(escrow, 'IntermediateStorage') + .withArgs(FIXTURE_URL, FIXTURE_HASH); + expect(await escrow.intermediateResultsUrl()).to.equal(FIXTURE_URL); + expect(await escrow.status()).to.equal(Status.Cancelled); + expect(await escrow.remainingFunds()).to.equal(ethers.parseEther('0')); + expect(await token.balanceOf(launcher)).to.equal( + launcherInitialBalance + FIXTURE_FUND_AMOUNT + ); }); }); }); - describe('bulkPayOut', () => { - describe('Validations', function () { - before(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); - }); - - it('Should revert with the right error if address calling is not trusted', async function () { - const recepients = [await restAccounts[0].getAddress()]; - const amounts = [10]; + describe('requestCancellation()', () => { + beforeEach(async () => { + await deployEscrow(); + await fundEscrow(); + await setupEscrow(); + }); + describe('reverts', function () { + it('reverts when called by unauthorised address', async function () { await expect( - escrow - .connect(externalAddress) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000') - ).to.be.revertedWith('Address calling not trusted'); - }); - - it('Should revert with the right error if address calling is recording oracle', async function () { - const recepients = [await restAccounts[0].getAddress()]; - const amounts = [10]; - + escrow.connect(external).requestCancellation() + ).to.be.revertedWith('Unauthorised'); await expect( - escrow - .connect(recordingOracle) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000') - ).to.be.revertedWith('Address calling not trusted'); - }); - - it('Should revert with the right error if amount of recipients more then amount of values', async function () { - const recepients = [ - await restAccounts[0].getAddress(), - await restAccounts[1].getAddress(), - await restAccounts[2].getAddress(), - ]; - const amounts = [10, 20]; - + escrow.connect(recordingOracle).requestCancellation() + ).to.be.revertedWith('Unauthorised'); await expect( - escrow - .connect(reputationOracle) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000') - ).to.be.revertedWith("Amount of recipients and values don't match"); + escrow.connect(exchangeOracle).requestCancellation() + ).to.be.revertedWith('Unauthorised'); + await expect( + escrow.connect(reputationOracle).requestCancellation() + ).to.be.revertedWith('Unauthorised'); }); - it('Should revert with the right error if amount of recipients less then amount of values', async function () { - const recepients = [ - await restAccounts[0].getAddress(), - await restAccounts[1].getAddress(), - ]; - const amounts = [10, 20, 30]; - + it('reverts when escrow has no funds (complete or cancelled)', async function () { + const balance = await token.balanceOf(escrow.getAddress()); + await storeResults(FIXTURE_URL, FIXTURE_HASH, balance); + await escrow + .connect(admin) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ]([externalAddress], [balance], FIXTURE_URL, FIXTURE_HASH, '000', false); await expect( - escrow - .connect(reputationOracle) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000') - ).to.be.revertedWith("Amount of recipients and values don't match"); + escrow.connect(launcher).requestCancellation() + ).to.be.revertedWith('Invalid status'); }); + }); - it('Should revert with the right error if too many recipients', async function () { - const recepients = Array.from( - new Array(BULK_MAX_COUNT + 1), - () => ethers.ZeroAddress + describe('Succeeds', async function () { + it('Launcher: requests escrow cancellation succesfully', async () => { + const balance = await token.balanceOf(escrow.getAddress()); + const launcherBalance = await token.balanceOf(launcherAddress); + await expect(escrow.connect(launcher).requestCancellation()).to.emit( + escrow, + 'CancellationRequested' ); - const amounts = Array.from({ length: BULK_MAX_COUNT + 1 }, () => 1); + expect(await escrow.status()).to.equal(Status.ToCancel); - await expect( - escrow - .connect(reputationOracle) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000') - ).to.be.revertedWith('Too many recipients'); + expect(await token.balanceOf(escrow.getAddress())).to.equal(balance); + expect(await token.balanceOf(launcherAddress)).to.equal( + launcherBalance + ); }); - }); - describe('Events', function () { - this.beforeEach(async () => { - await deployEscrow(); + it('Launcher: cancels escrow succesfully when escrow is expired', async () => { + await deployEscrow(tokenAddress, launcherAddress, adminAddress, 3); await fundEscrow(); await setupEscrow(); + const launcherBalance = await token.balanceOf(launcherAddress); + await expect(escrow.connect(launcher).requestCancellation()).to.emit( + escrow, + 'CancellationRequested' + ); + expect(await escrow.status()).to.equal(Status.Cancelled); + + expect(await token.balanceOf(escrow.getAddress())).to.equal(0); + expect(await token.balanceOf(launcherAddress)).to.equal( + launcherBalance + FIXTURE_FUND_AMOUNT + ); }); - it('Should emit bulkPayOut and Completed events for complete bulkPayOut', async function () { - const recepients = [await restAccounts[0].getAddress()]; - const amounts = [100]; + it('Admin: requests escrow cancellation succesfully', async () => { + const balance = await token.balanceOf(escrow.getAddress()); + const launcherBalance = await token.balanceOf(launcherAddress); + await expect(escrow.connect(admin).requestCancellation()).to.emit( + escrow, + 'CancellationRequested' + ); + expect(await escrow.status()).to.equal(Status.ToCancel); - const tx = await escrow - .connect(owner) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000'); + expect(await token.balanceOf(escrow.getAddress())).to.equal(balance); + expect(await token.balanceOf(launcherAddress)).to.equal( + launcherBalance + ); + }); - await expect(tx) - .to.emit(escrow, 'BulkTransferV2') - .withArgs(anyValue, recepients, [100], false, MOCK_URL); + it('Admin: cancels escrow succesfully when escrow is expired', async () => { + await deployEscrow(tokenAddress, launcherAddress, adminAddress, 3); + await fundEscrow(); + await setupEscrow(); + const launcherBalance = await token.balanceOf(launcherAddress); + await expect(escrow.connect(admin).requestCancellation()).to.emit( + escrow, + 'CancellationRequested' + ); + expect(await escrow.status()).to.equal(Status.Cancelled); - await expect(tx).to.emit(escrow, 'Completed'); + expect(await token.balanceOf(escrow.getAddress())).to.equal(0); + expect(await token.balanceOf(launcherAddress)).to.equal( + launcherBalance + FIXTURE_FUND_AMOUNT + ); }); - it('Should emit only bulkPayOut event for partial bulkPayOut', async function () { - const recepients = [await restAccounts[0].getAddress()]; - const amounts = [10]; + it('Admin: cancels escrow succesfully when escrow has no funds but status is Launched', async function () { + await deployEscrow(tokenAddress, launcherAddress, adminAddress, 3); + await expect(escrow.connect(admin).requestCancellation()).to.emit( + escrow, + 'CancellationRequested' + ); + expect(await escrow.status()).to.equal(Status.Cancelled); + expect(await token.balanceOf(escrow.getAddress())).to.equal(0); + }); - const tx = await escrow - .connect(owner) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000'); + it('Admin: cancels escrow succesfully when escrow has funds and status is Launched', async function () { + await deployEscrow(tokenAddress, launcherAddress, adminAddress, 3); + await fundEscrow(); + const launcherBalance = await token.balanceOf(launcherAddress); + await expect(escrow.connect(admin).requestCancellation()).to.emit( + escrow, + 'CancellationRequested' + ); + expect(await escrow.status()).to.equal(Status.Cancelled); + expect(await token.balanceOf(escrow.getAddress())).to.equal(0); + expect(await token.balanceOf(launcherAddress)).to.equal( + launcherBalance + FIXTURE_FUND_AMOUNT + ); + }); + }); + }); - await expect(tx) - .to.emit(escrow, 'BulkTransferV2') - .withArgs(anyValue, recepients, [10], true, MOCK_URL); + describe('withdraw()', () => { + beforeEach(async () => { + await deployEscrow(); + await fundEscrow(); + await setupEscrow(); + }); - await expect(tx).not.to.emit(escrow, 'Completed'); + describe('reverts', function () { + it('reverts when called by unauthorised address', async function () { + await expect( + escrow.connect(external).withdraw(tokenAddress) + ).to.be.revertedWith('Unauthorised'); + await expect( + escrow.connect(recordingOracle).withdraw(tokenAddress) + ).to.be.revertedWith('Unauthorised'); + await expect( + escrow.connect(exchangeOracle).withdraw(tokenAddress) + ).to.be.revertedWith('Unauthorised'); + await expect( + escrow.connect(reputationOracle).withdraw(tokenAddress) + ).to.be.revertedWith('Unauthorised'); }); - it('Should emit bulkPayOut and Completed events for partial bulkPayOut with forceComplete option', async function () { - const recepients = [await restAccounts[0].getAddress()]; - const amounts = [10]; + it('reverts when escrow has no funds', async function () { + await expect( + escrow.connect(launcher).withdraw(tokenAddress) + ).to.be.revertedWith('No funds'); + }); - const tx = await escrow - .connect(owner) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000', true); + it('reverts when escrow has no funds of token2', async function () { + await expect( + escrow.connect(launcher).withdraw(tokenAddress2) + ).to.be.revertedWith('No funds'); + }); + }); - await expect(tx) - .to.emit(escrow, 'BulkTransferV2') - .withArgs(anyValue, recepients, [10], false, MOCK_URL); + describe('Succeeds', async function () { + const extraAmount = ethers.parseEther('50'); + it('Launcher: withdraws extra funds successfully', async () => { + const initialBalance = await token.balanceOf(launcherAddress); + await fundEscrow(extraAmount); + await expect(escrow.connect(launcher).withdraw(tokenAddress)) + .to.emit(escrow, 'Withdraw') + .withArgs(tokenAddress, extraAmount); + expect(await token.balanceOf(launcherAddress)).to.equal( + initialBalance + extraAmount + ); + }); - await expect(tx).to.emit(escrow, 'Completed'); + it('Launcher: withdraws extra funds of token2 successfully', async () => { + const initialBalance = await token2.balanceOf(launcherAddress); + await fundEscrow(extraAmount, token2); + await expect(escrow.connect(launcher).withdraw(tokenAddress2)) + .to.emit(escrow, 'Withdraw') + .withArgs(tokenAddress2, extraAmount); + expect(await token2.balanceOf(launcherAddress)).to.equal( + initialBalance + extraAmount + ); + }); + + it('Admin: withdraws extra funds successfully', async () => { + const initialBalance = await token.balanceOf(adminAddress); + await fundEscrow(extraAmount); + await expect(escrow.connect(admin).withdraw(tokenAddress)) + .to.emit(escrow, 'Withdraw') + .withArgs(tokenAddress, extraAmount); + expect(await token.balanceOf(adminAddress)).to.equal( + initialBalance + extraAmount + ); + }); + + it('Admin: withdraws extra funds of token2 successfully', async () => { + const initialBalance = await token2.balanceOf(adminAddress); + await fundEscrow(extraAmount, token2); + await expect(escrow.connect(admin).withdraw(tokenAddress2)) + .to.emit(escrow, 'Withdraw') + .withArgs(tokenAddress2, extraAmount); + expect(await token2.balanceOf(adminAddress)).to.equal( + initialBalance + extraAmount + ); }); }); - describe('Bulk payout for recipients', async function () { - beforeEach(async () => { - await deployEscrow(); + }); + + describe('bulkPayOut()', () => { + const recipients: string[] = []; + const amounts: bigint[] = []; + let totalAmount: bigint; + before(async () => { + recipients.push(await restAccounts[0].getAddress()); + recipients.push(await restAccounts[1].getAddress()); + recipients.push(await restAccounts[2].getAddress()); + amounts.push(ethers.parseEther('10')); + amounts.push(ethers.parseEther('20')); + amounts.push(ethers.parseEther('30')); + totalAmount = amounts.reduce((acc, val) => acc + val, 0n); + }); + beforeEach(async () => { + await deployEscrow(); + await fundEscrow(); + await setupEscrow(); + await storeResults(); + }); + describe('reverts', function () { + it('reverts when called by unauthorised address', async function () { + await expect( + escrow + .connect(external) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false) + ).to.be.revertedWith('Unauthorised'); + await expect( + escrow + .connect(exchangeOracle) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false) + ).to.be.revertedWith('Unauthorised'); + await expect( + escrow + .connect(recordingOracle) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false) + ).to.be.revertedWith('Unauthorised'); + await expect( + escrow + .connect(launcher) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false) + ).to.be.revertedWith('Unauthorised'); + }); + + it('reverts when broke', async function () { + await escrow.connect(launcher).requestCancellation(); + await storeResults(); + await expect( + escrow + .connect(reputationOracle) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false) + ).to.be.revertedWith('No funds'); + }); + + it('reverts when escrow is expired', async function () { + await deployEscrow(tokenAddress, launcherAddress, adminAddress, 3); await fundEscrow(); await setupEscrow(); + await expect( + escrow + .connect(reputationOracle) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false) + ).to.be.revertedWith('Expired'); }); - it('Should pays each recipient their corresponding amount', async () => { - const account1 = await restAccounts[0].getAddress(); - const account2 = await restAccounts[1].getAddress(); - const account3 = await restAccounts[2].getAddress(); - - const initialBalanceAccount1 = await token - .connect(owner) - .balanceOf(account1); - const initialBalanceAccount2 = await token - .connect(owner) - .balanceOf(account2); - const initialBalanceAccount3 = await token - .connect(owner) - .balanceOf(account3); - const initialBalanceRecordingOracle = await token - .connect(owner) - .balanceOf(await recordingOracle.getAddress()); - const initialBalanceReputationOracle = await token - .connect(owner) - .balanceOf(await reputationOracle.getAddress()); - const initialBalanceExchangeOracle = await token - .connect(owner) - .balanceOf(await exchangeOracle.getAddress()); - - const recepients = [account1, account2, account3]; - const amounts = [10, 20, 30]; - + it('reverts when payoutId exists', async function () { + await storeResults(FIXTURE_URL, FIXTURE_HASH, FIXTURE_FUND_AMOUNT); await escrow .connect(reputationOracle) [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000'); - - const finalBalanceAccount1 = await token - .connect(owner) - .balanceOf(account1); - const finalBalanceAccount2 = await token - .connect(owner) - .balanceOf(account2); - const finalBalanceAccount3 = await token - .connect(owner) - .balanceOf(account3); - const finalBalanceRecordingOracle = await token - .connect(owner) - .balanceOf(await recordingOracle.getAddress()); - const finalBalanceReputationOracle = await token - .connect(owner) - .balanceOf(await reputationOracle.getAddress()); - const finalBalanceExchangeOracle = await token - .connect(owner) - .balanceOf(await exchangeOracle.getAddress()); - - expect( - (finalBalanceAccount1 - initialBalanceAccount1).toString() - ).to.equal('7'); - expect( - (finalBalanceAccount2 - initialBalanceAccount2).toString() - ).to.equal('14'); - expect( - (finalBalanceAccount3 - initialBalanceAccount3).toString() - ).to.equal('21'); - expect( - ( - finalBalanceRecordingOracle - initialBalanceRecordingOracle - ).toString() - ).to.equal('6'); - expect( - ( - finalBalanceReputationOracle - initialBalanceReputationOracle - ).toString() - ).to.equal('6'); - - expect( - (finalBalanceExchangeOracle - initialBalanceExchangeOracle).toString() - ).to.equal('6'); - - expect(await escrow.remainingFunds()).to.equal('40'); - }); - - it('Should pays each recipient their corresponding amount and return the remaining to launcher with force option', async () => { - const account1 = await restAccounts[0].getAddress(); - const account2 = await restAccounts[1].getAddress(); - const account3 = await restAccounts[2].getAddress(); - - const initialBalanceAccount1 = await token - .connect(owner) - .balanceOf(account1); - const initialBalanceAccount2 = await token - .connect(owner) - .balanceOf(account2); - const initialBalanceAccount3 = await token - .connect(owner) - .balanceOf(account3); - const initialBalanceLauncher = await token - .connect(owner) - .balanceOf(await launcher.getAddress()); - const initialBalanceRecordingOracle = await token - .connect(owner) - .balanceOf(await recordingOracle.getAddress()); - const initialBalanceReputationOracle = await token - .connect(owner) - .balanceOf(await reputationOracle.getAddress()); - const initialBalanceExchangeOracle = await token - .connect(owner) - .balanceOf(await exchangeOracle.getAddress()); - - const recepients = [account1, account2, account3]; - const amounts = [10, 20, 30]; + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false); + await expect( + escrow + .connect(reputationOracle) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false) + ).to.be.revertedWith('payoutId already exists'); + }); - await escrow - .connect(reputationOracle) + it('reverts when recipients length don not match amounts length', async function () { + const recipients = [ + await restAccounts[0].getAddress(), + await restAccounts[1].getAddress(), + await restAccounts[2].getAddress(), + ]; + const amounts = [ethers.parseEther('10'), ethers.parseEther('20')]; + + await expect( + escrow + .connect(reputationOracle) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false) + ).to.be.revertedWith('Length mismatch'); + }); + + it('reverts when amounts length = 0', async function () { + const recipients: string[] = []; + const amounts: number[] = []; + + await expect( + escrow + .connect(reputationOracle) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false) + ).to.be.revertedWith('Empty amounts'); + }); + + it('reverts when recipients length >= 100', async function () { + const recipients = Array.from( + new Array(BULK_MAX_COUNT + 1), + () => ethers.ZeroAddress + ); + const amounts = Array.from({ length: BULK_MAX_COUNT + 1 }, () => 1); + + await expect( + escrow + .connect(reputationOracle) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false) + ).to.be.revertedWith('Too many recipients'); + }); + + it('reverts when the url is empty', async function () { + await expect( + escrow + .connect(reputationOracle) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, '', FIXTURE_HASH, '000', false) + ).to.be.revertedWith('Empty url/hash'); + }); + + it('reverts when the hash is empty', async function () { + await expect( + escrow + .connect(reputationOracle) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, '', '000', false) + ).to.be.revertedWith('Empty url/hash'); + }); + + it('reverts when some amount <= 0', async function () { + const amounts = [ + ethers.parseEther('0'), + ethers.parseEther('20'), + ethers.parseEther('30'), + ]; + await expect( + escrow + .connect(reputationOracle) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false) + ).to.be.revertedWith('Zero amount'); + }); + + it('reverts when the sum of amounts > reservedFunds', async function () { + const amounts = [ + FIXTURE_FUND_AMOUNT, + FIXTURE_FUND_AMOUNT, + FIXTURE_FUND_AMOUNT, + ]; + await expect( + escrow + .connect(reputationOracle) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false) + ).to.be.revertedWith('Not enough funds'); + }); + + it('reverts with DEPRECATED_SIGNATURE', async () => { + await expect( + escrow + .connect(recordingOracle) + [ + 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '1', false) + ).to.be.revertedWith('DEPRECATED_SIGNATURE'); + }); + }); + + describe('succeeds', function () { + it('Reputation oracle: executes partial pay out successfully', async function () { + const initialBalances = await Promise.all( + recipients.map((r) => token.balanceOf(r)) + ); + + const initialOracleBalances = await Promise.all( [ - 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000', true); - - const finalBalanceAccount1 = await token - .connect(owner) - .balanceOf(account1); - const finalBalanceAccount2 = await token - .connect(owner) - .balanceOf(account2); - const finalBalanceAccount3 = await token - .connect(owner) - .balanceOf(account3); - const finalBalanceLauncher = await token - .connect(owner) - .balanceOf(await launcher.getAddress()); - const finalBalanceRecordingOracle = await token - .connect(owner) - .balanceOf(await recordingOracle.getAddress()); - const finalBalanceReputationOracle = await token - .connect(owner) - .balanceOf(await reputationOracle.getAddress()); - const finalBalanceExchangeOracle = await token - .connect(owner) - .balanceOf(await exchangeOracle.getAddress()); - - expect( - (finalBalanceAccount1 - initialBalanceAccount1).toString() - ).to.equal('7'); - expect( - (finalBalanceAccount2 - initialBalanceAccount2).toString() - ).to.equal('14'); - expect( - (finalBalanceAccount3 - initialBalanceAccount3).toString() - ).to.equal('21'); - expect( - (finalBalanceLauncher - initialBalanceLauncher).toString() - ).to.equal('40'); - expect( - ( - finalBalanceRecordingOracle - initialBalanceRecordingOracle - ).toString() - ).to.equal('6'); - expect( - ( - finalBalanceReputationOracle - initialBalanceReputationOracle - ).toString() - ).to.equal('6'); - - expect( - (finalBalanceExchangeOracle - initialBalanceExchangeOracle).toString() - ).to.equal('6'); + recordingOracleAddress, + reputationOracleAddress, + exchangeOracleAddress, + ].map(async (oracle) => token.connect(owner).balanceOf(oracle)) + ); - expect(await escrow.remainingFunds()).to.equal('0'); + await storeResults(FIXTURE_URL, FIXTURE_HASH, totalAmount); + await expect( + escrow + .connect(reputationOracle) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false) + ).to.emit(escrow, 'BulkTransferV3'); + + const finalBalances = await Promise.all( + recipients.map((r) => token.balanceOf(r)) + ); + const finalOracleBalances = await Promise.all( + [ + recordingOracleAddress, + reputationOracleAddress, + exchangeOracleAddress, + ].map(async (oracle) => token.connect(owner).balanceOf(oracle)) + ); + + const oracleExpectedFee = (totalAmount * 3n) / 100n; // 3% fee + + recipients.forEach((_, index) => { + const expectedAmount = (BigInt(amounts[index]) * 91n) / 100n; // 91% after all 3 oracle fees + expect( + (finalBalances[index] - initialBalances[index]).toString() + ).to.equal(expectedAmount.toString()); + }); + + initialOracleBalances.forEach((initialBalance, index) => { + expect( + (finalOracleBalances[index] - initialBalance).toString() + ).to.equal(oracleExpectedFee.toString()); + }); + + expect(await escrow.remainingFunds()).to.equal( + await escrow.getBalance() + ); + expect(await escrow.status()).to.equal(Status.Partial); }); - it('Should runs from setup to bulkPayOut to complete correctly', async () => { - const recepients = [await restAccounts[3].getAddress()]; - const amounts = [100]; + it('Reputation oracle: executes full pay out successfully', async function () { + const amounts = [ + ethers.parseEther('40'), + ethers.parseEther('30'), + ethers.parseEther('30'), + ]; + const initialBalances = await Promise.all( + recipients.map((r) => token.balanceOf(r)) + ); + const initialOracleBalances = await Promise.all( + [ + recordingOracleAddress, + reputationOracleAddress, + exchangeOracleAddress, + ].map(async (oracle) => token.connect(owner).balanceOf(oracle)) + ); - expect(await escrow.status()).to.equal(Status.Pending); + const totalPayout = amounts.reduce( + (acc, amount) => acc + BigInt(amount), + 0n + ); - await escrow - .connect(reputationOracle) + await storeResults(FIXTURE_URL, FIXTURE_HASH, totalPayout); + + await expect( + escrow + .connect(reputationOracle) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false) + ).to.emit(escrow, 'BulkTransferV3'); + + const finalBalances = await Promise.all( + recipients.map((r) => token.balanceOf(r)) + ); + const finalOracleBalances = await Promise.all( [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000'); + recordingOracleAddress, + reputationOracleAddress, + exchangeOracleAddress, + ].map(async (oracle) => token.connect(owner).balanceOf(oracle)) + ); + + const oracleExpectedFee = (totalPayout * 3n) / 100n; // 3% fee + + recipients.forEach((_, index) => { + const expectedAmount = (BigInt(amounts[index]) * 91n) / 100n; // 91% after all 3 oracle fees + expect( + (finalBalances[index] - initialBalances[index]).toString() + ).to.equal(expectedAmount.toString()); + }); + + initialOracleBalances.forEach((initialBalance, index) => { + expect( + (finalOracleBalances[index] - initialBalance).toString() + ).to.equal(oracleExpectedFee.toString()); + }); + + expect(await escrow.remainingFunds()).to.equal( + await escrow.getBalance() + ); expect(await escrow.status()).to.equal(Status.Complete); }); - it('Should runs from setup to bulkPayOut to complete correctly with multiple addresses', async () => { - const recepients = [ - await restAccounts[3].getAddress(), - await restAccounts[4].getAddress(), - await restAccounts[5].getAddress(), - ]; - const amounts = [10, 20, 70]; + it('Reputation oracle: executes pay out successfully and forces complete', async function () { + const initialBalances = await Promise.all( + recipients.map((r) => token.balanceOf(r)) + ); + const initialOracleBalances = await Promise.all( + [ + recordingOracleAddress, + reputationOracleAddress, + exchangeOracleAddress, + ].map(async (oracle) => token.connect(owner).balanceOf(oracle)) + ); + const launcherInitialBalance = await token.balanceOf(launcherAddress); - expect(await escrow.status()).to.equal(Status.Pending); + await storeResults(FIXTURE_URL, FIXTURE_HASH, totalAmount); - await escrow - .connect(reputationOracle) + await expect( + escrow + .connect(reputationOracle) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', true) + ).to.emit(escrow, 'BulkTransferV3'); + + const finalBalances = await Promise.all( + recipients.map((r) => token.balanceOf(r)) + ); + const finalOracleBalances = await Promise.all( [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000'); + recordingOracleAddress, + reputationOracleAddress, + exchangeOracleAddress, + ].map(async (oracle) => token.connect(owner).balanceOf(oracle)) + ); + + const oracleExpectedFee = (totalAmount * 3n) / 100n; // 3% fee + + recipients.forEach((_, index) => { + const expectedAmount = (BigInt(amounts[index]) * 91n) / 100n; // 91% after all 3 oracle fees + expect( + (finalBalances[index] - initialBalances[index]).toString() + ).to.equal(expectedAmount.toString()); + }); + + initialOracleBalances.forEach((initialBalance, index) => { + expect( + (finalOracleBalances[index] - initialBalance).toString() + ).to.equal(oracleExpectedFee.toString()); + }); + + expect(await escrow.remainingFunds()).to.equal( + await escrow.getBalance() + ); expect(await escrow.status()).to.equal(Status.Complete); + + const launcherFinalBalance = await token.balanceOf(launcherAddress); + expect(launcherFinalBalance).to.equal( + launcherInitialBalance + (FIXTURE_FUND_AMOUNT - totalAmount) + ); }); - it('Should runs from setup to bulkPayOut to partial correctly', async () => { - const recepients = [await restAccounts[3].getAddress()]; - const amounts = [80]; + it('Reputation oracle: executes partial pay out and cancels successfully', async function () { + const initialBalances = await Promise.all( + recipients.map((r) => token.balanceOf(r)) + ); - expect(await escrow.status()).to.equal(Status.Pending); + const initialOracleBalances = await Promise.all( + [ + recordingOracleAddress, + reputationOracleAddress, + exchangeOracleAddress, + ].map(async (oracle) => token.connect(owner).balanceOf(oracle)) + ); - await escrow - .connect(reputationOracle) + await escrow.connect(launcher).requestCancellation(); + + await storeResults(FIXTURE_URL, FIXTURE_HASH, totalAmount); + await expect( + escrow + .connect(reputationOracle) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false) + ).to.emit(escrow, 'BulkTransferV3'); + + const finalBalances = await Promise.all( + recipients.map((r) => token.balanceOf(r)) + ); + const finalOracleBalances = await Promise.all( + [ + recordingOracleAddress, + reputationOracleAddress, + exchangeOracleAddress, + ].map(async (oracle) => token.connect(owner).balanceOf(oracle)) + ); + + const oracleExpectedFee = (totalAmount * 3n) / 100n; // 3% fee + + recipients.forEach((_, index) => { + const expectedAmount = (BigInt(amounts[index]) * 91n) / 100n; // 91% after all 3 oracle fees + expect( + (finalBalances[index] - initialBalances[index]).toString() + ).to.equal(expectedAmount.toString()); + }); + + initialOracleBalances.forEach((initialBalance, index) => { + expect( + (finalOracleBalances[index] - initialBalance).toString() + ).to.equal(oracleExpectedFee.toString()); + }); + + expect(await escrow.remainingFunds()).to.equal( + await escrow.getBalance() + ); + expect(await escrow.status()).to.equal(Status.Cancelled); + }); + + it('Admin: executes partial pay out successfully', async function () { + const initialBalances = await Promise.all( + recipients.map((r) => token.balanceOf(r)) + ); + + const initialOracleBalances = await Promise.all( + [ + recordingOracleAddress, + reputationOracleAddress, + exchangeOracleAddress, + ].map(async (oracle) => token.connect(owner).balanceOf(oracle)) + ); + + await storeResults(FIXTURE_URL, FIXTURE_HASH, totalAmount); + + await expect( + escrow + .connect(admin) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false) + ).to.emit(escrow, 'BulkTransferV3'); + + const finalBalances = await Promise.all( + recipients.map((r) => token.balanceOf(r)) + ); + const finalOracleBalances = await Promise.all( [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000'); + recordingOracleAddress, + reputationOracleAddress, + exchangeOracleAddress, + ].map(async (oracle) => token.connect(owner).balanceOf(oracle)) + ); + + const oracleExpectedFee = (totalAmount * 3n) / 100n; // 3% fee + + recipients.forEach((_, index) => { + const expectedAmount = (BigInt(amounts[index]) * 91n) / 100n; // 91% after all 3 oracle fees + expect( + (finalBalances[index] - initialBalances[index]).toString() + ).to.equal(expectedAmount.toString()); + }); + + initialOracleBalances.forEach((initialBalance, index) => { + expect( + (finalOracleBalances[index] - initialBalance).toString() + ).to.equal(oracleExpectedFee.toString()); + }); + + expect(await escrow.remainingFunds()).to.equal( + await escrow.getBalance() + ); expect(await escrow.status()).to.equal(Status.Partial); }); - it('Should runs from setup to bulkPayOut to partial correctly with multiple addresses', async () => { - const recepients = [ - await restAccounts[3].getAddress(), - await restAccounts[4].getAddress(), - await restAccounts[5].getAddress(), + it('Admin: executes full pay out successfully', async function () { + const amounts = [ + ethers.parseEther('40'), + ethers.parseEther('30'), + ethers.parseEther('30'), ]; - const amounts = [10, 20, 50]; + const initialBalances = await Promise.all( + recipients.map((r) => token.balanceOf(r)) + ); + const initialOracleBalances = await Promise.all( + [ + recordingOracleAddress, + reputationOracleAddress, + exchangeOracleAddress, + ].map(async (oracle) => token.connect(owner).balanceOf(oracle)) + ); - expect(await escrow.status()).to.equal(Status.Pending); + const totalPayout = amounts.reduce( + (acc, amount) => acc + BigInt(amount), + 0n + ); - await escrow - .connect(reputationOracle) + await storeResults(FIXTURE_URL, FIXTURE_HASH, totalPayout); + + await expect( + escrow + .connect(admin) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false) + ).to.emit(escrow, 'BulkTransferV3'); + + const finalBalances = await Promise.all( + recipients.map((r) => token.balanceOf(r)) + ); + const finalOracleBalances = await Promise.all( [ - 'bulkPayOut(address[],uint256[],string,string,uint256)' - ](recepients, amounts, MOCK_URL, MOCK_HASH, '000'); - expect(await escrow.status()).to.equal(Status.Partial); + recordingOracleAddress, + reputationOracleAddress, + exchangeOracleAddress, + ].map(async (oracle) => token.connect(owner).balanceOf(oracle)) + ); + + const oracleExpectedFee = (totalPayout * 3n) / 100n; // 3% fee + + recipients.forEach((_, index) => { + const expectedAmount = (BigInt(amounts[index]) * 91n) / 100n; // 91% after all 3 oracle fees + expect( + (finalBalances[index] - initialBalances[index]).toString() + ).to.equal(expectedAmount.toString()); + }); + + initialOracleBalances.forEach((initialBalance, index) => { + expect( + (finalOracleBalances[index] - initialBalance).toString() + ).to.equal(oracleExpectedFee.toString()); + }); + + expect(await escrow.remainingFunds()).to.equal( + await escrow.getBalance() + ); + expect(await escrow.status()).to.equal(Status.Complete); + }); + + it('Admin: executes pay out successfully and forces complete', async function () { + const initialBalances = await Promise.all( + recipients.map((r) => token.balanceOf(r)) + ); + const initialOracleBalances = await Promise.all( + [ + recordingOracleAddress, + reputationOracleAddress, + exchangeOracleAddress, + ].map(async (oracle) => token.connect(owner).balanceOf(oracle)) + ); + const launcherInitialBalance = await token.balanceOf(launcherAddress); + + await storeResults(FIXTURE_URL, FIXTURE_HASH, totalAmount); + + await expect( + escrow + .connect(admin) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', true) + ).to.emit(escrow, 'BulkTransferV3'); + + const finalBalances = await Promise.all( + recipients.map((r) => token.balanceOf(r)) + ); + const finalOracleBalances = await Promise.all( + [ + recordingOracleAddress, + reputationOracleAddress, + exchangeOracleAddress, + ].map(async (oracle) => token.connect(owner).balanceOf(oracle)) + ); + + const oracleExpectedFee = (totalAmount * 3n) / 100n; // 3% fee + + recipients.forEach((_, index) => { + const expectedAmount = (BigInt(amounts[index]) * 91n) / 100n; // 91% after all 3 oracle fees + expect( + (finalBalances[index] - initialBalances[index]).toString() + ).to.equal(expectedAmount.toString()); + }); + + initialOracleBalances.forEach((initialBalance, index) => { + expect( + (finalOracleBalances[index] - initialBalance).toString() + ).to.equal(oracleExpectedFee.toString()); + }); + + expect(await escrow.remainingFunds()).to.equal( + await escrow.getBalance() + ); + expect(await escrow.status()).to.equal(Status.Complete); + + const launcherFinalBalance = await token.balanceOf(launcherAddress); + expect(launcherFinalBalance).to.equal( + launcherInitialBalance + (FIXTURE_FUND_AMOUNT - totalAmount) + ); + }); + + it('Admin: executes partial pay out and cancels successfully', async function () { + const initialBalances = await Promise.all( + recipients.map((r) => token.balanceOf(r)) + ); + + const initialOracleBalances = await Promise.all( + [ + recordingOracleAddress, + reputationOracleAddress, + exchangeOracleAddress, + ].map(async (oracle) => token.connect(owner).balanceOf(oracle)) + ); + + await escrow.connect(launcher).requestCancellation(); + + await storeResults(FIXTURE_URL, FIXTURE_HASH, totalAmount); + await expect( + escrow + .connect(admin) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false) + ).to.emit(escrow, 'BulkTransferV3'); + + const finalBalances = await Promise.all( + recipients.map((r) => token.balanceOf(r)) + ); + const finalOracleBalances = await Promise.all( + [ + recordingOracleAddress, + reputationOracleAddress, + exchangeOracleAddress, + ].map(async (oracle) => token.connect(owner).balanceOf(oracle)) + ); + + const oracleExpectedFee = (totalAmount * 3n) / 100n; // 3% fee + + recipients.forEach((_, index) => { + const expectedAmount = (BigInt(amounts[index]) * 91n) / 100n; // 91% after all 3 oracle fees + expect( + (finalBalances[index] - initialBalances[index]).toString() + ).to.equal(expectedAmount.toString()); + }); + + initialOracleBalances.forEach((initialBalance, index) => { + expect( + (finalOracleBalances[index] - initialBalance).toString() + ).to.equal(oracleExpectedFee.toString()); + }); + + expect(await escrow.remainingFunds()).to.equal( + await escrow.getBalance() + ); + expect(await escrow.status()).to.equal(Status.Cancelled); }); }); }); - describe('complete', () => { - describe('Validations', function () { - beforeEach(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); + + describe('complete()', () => { + beforeEach(async () => { + await deployEscrow(); + await fundEscrow(); + await setupEscrow(); + }); + describe('reverts', function () { + it('reverts when status is not Paid or Partial or intermediate results does not exist', async function () { + await expect( + escrow.connect(reputationOracle).complete() + ).to.be.revertedWith('Invalid status'); }); - it('Should revert with the right error if escrow not in Paid or Partial state', async function () { - await expect(escrow.connect(owner).complete()).to.be.revertedWith( - 'Escrow not in Paid or Partial state' + it('reverts when called by unauthorised address', async function () { + await expect(escrow.connect(launcher).complete()).to.be.revertedWith( + 'Unauthorised' ); + + await expect( + escrow.connect(exchangeOracle).complete() + ).to.be.revertedWith('Unauthorised'); + + await expect( + escrow.connect(recordingOracle).complete() + ).to.be.revertedWith('Unauthorised'); + }); + + it('reverts when intermediate results exist but reserved funds is not 0', async function () { + storeResults(); + await expect( + escrow.connect(reputationOracle).complete() + ).to.be.revertedWith('Invalid status'); }); }); - describe('Events', function () { - beforeEach(async () => { - await deployEscrow(); - await fundEscrow(); - await setupEscrow(); + describe('succeeds', function () { + it('Reputation oracle: completes the escrow successfully', async function () { + const recipients = [await restAccounts[0].getAddress()]; + const amounts = [ethers.parseEther('10')]; + + const initialLauncherBalance = await token.balanceOf(launcherAddress); + const initialEscrowBalance = await token.balanceOf(escrow.getAddress()); + + await storeResults(FIXTURE_URL, FIXTURE_HASH, amounts[0]); + await escrow + .connect(reputationOracle) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false); + + await expect(escrow.connect(reputationOracle).complete()).to.emit( + escrow, + 'Completed' + ); + + expect(await escrow.status()).to.equal(Status.Complete); + expect(await escrow.remainingFunds()).to.equal('0'); + + const finalLauncherBalance = await token.balanceOf(launcherAddress); + + expect(finalLauncherBalance - initialLauncherBalance).to.equal( + initialEscrowBalance - amounts[0] + ); }); - it('Should emit a Completed event when escrow is completed', async function () { + it('Admin: completes the escrow successfully', async function () { const recipients = [await restAccounts[0].getAddress()]; - const amounts = [10]; + const amounts = [ethers.parseEther('10')]; + const initialLauncherBalance = await token.balanceOf(launcherAddress); + const initialEscrowBalance = await token.balanceOf(escrow.getAddress()); + await storeResults(FIXTURE_URL, FIXTURE_HASH, amounts[0]); await escrow - .connect(owner) + .connect(reputationOracle) [ - 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' - ](recipients, amounts, MOCK_URL, MOCK_HASH, '000', false); + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ](recipients, amounts, FIXTURE_URL, FIXTURE_HASH, '000', false); + + await expect(escrow.connect(reputationOracle).complete()).to.emit( + escrow, + 'Completed' + ); + + expect(await escrow.status()).to.equal(Status.Complete); + expect(await escrow.remainingFunds()).to.equal('0'); + + const finalLauncherBalance = await token.balanceOf(launcherAddress); + + expect(finalLauncherBalance - initialLauncherBalance).to.equal( + initialEscrowBalance - amounts[0] + ); + }); + + it('Reputation oracle: completes the escrow successfully without payouts', async function () { + const initialLauncherBalance = await token.balanceOf(launcherAddress); + const initialEscrowBalance = await token.balanceOf(escrow.getAddress()); + + await storeResults(FIXTURE_URL, FIXTURE_HASH, 0n); + + await expect(escrow.connect(reputationOracle).complete()).to.emit( + escrow, + 'Completed' + ); + + expect(await escrow.status()).to.equal(Status.Complete); + expect(await escrow.remainingFunds()).to.equal('0'); + + const finalLauncherBalance = await token.balanceOf(launcherAddress); + + expect(finalLauncherBalance - initialLauncherBalance).to.equal( + initialEscrowBalance + ); + }); + + it('Admin: completes the escrow successfully without payouts', async function () { + const initialLauncherBalance = await token.balanceOf(launcherAddress); + const initialEscrowBalance = await token.balanceOf(escrow.getAddress()); + + await storeResults(FIXTURE_URL, FIXTURE_HASH, 0n); - await expect(escrow.connect(owner).complete()).to.emit( + await expect(escrow.connect(admin).complete()).to.emit( escrow, 'Completed' ); + + expect(await escrow.status()).to.equal(Status.Complete); + expect(await escrow.remainingFunds()).to.equal('0'); + + const finalLauncherBalance = await token.balanceOf(launcherAddress); + + expect(finalLauncherBalance - initialLauncherBalance).to.equal( + initialEscrowBalance + ); }); }); - describe('Complete escrow', async function () { + describe('cancel()', () => { beforeEach(async () => { await deployEscrow(); await fundEscrow(); await setupEscrow(); }); - it('Should succeed if escrow is in Partial state', async function () { - const recipients = [await restAccounts[0].getAddress()]; - const amounts = [10]; - await escrow - .connect(owner) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' - ](recipients, amounts, MOCK_URL, MOCK_HASH, '000', false); - expect(await escrow.status()).to.equal(Status.Partial); + describe('reverts', function () { + it('reverts when called by unauthorised address', async function () { + await escrow.connect(launcher).requestCancellation(); - await escrow.connect(owner).complete(); - expect(await escrow.status()).to.equal(Status.Complete); - expect(await escrow.remainingFunds()).to.equal('0'); + await expect(escrow.connect(external).cancel()).to.be.revertedWith( + 'Unauthorised' + ); + await expect( + escrow.connect(recordingOracle).cancel() + ).to.be.revertedWith('Unauthorised'); + await expect( + escrow.connect(exchangeOracle).cancel() + ).to.be.revertedWith('Unauthorised'); + await expect(escrow.connect(launcher).cancel()).to.be.revertedWith( + 'Unauthorised' + ); + }); + + it('reverts when the status is not ToCancel', async function () { + await expect( + escrow.connect(reputationOracle).cancel() + ).to.be.revertedWith('Invalid status'); + }); }); - it('Should transfer remaining funds to launcher on complete', async function () { - const initialLauncherBalance = await token - .connect(owner) - .balanceOf(await launcher.getAddress()); + describe('Succeeds', async function () { + beforeEach(async () => { + await escrow.connect(launcher).requestCancellation(); + }); - const recipients = [await restAccounts[0].getAddress()]; - const amounts = [10]; - await escrow - .connect(owner) - [ - 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' - ](recipients, amounts, MOCK_URL, MOCK_HASH, '000', false); - await escrow.connect(owner).complete(); + it('Reputation oracle: cancels the escrow succesfully', async () => { + const initialLauncherBalance = await token.balanceOf(launcherAddress); + const initialEscrowBalance = await token.balanceOf( + escrow.getAddress() + ); - const finalLauncherBalance = await token - .connect(owner) - .balanceOf(await launcher.getAddress()); + await expect(escrow.connect(reputationOracle).cancel()).to.emit( + escrow, + 'Cancelled' + ); + expect(await escrow.status()).to.equal(Status.Cancelled); + + expect(await escrow.remainingFunds()).to.equal('0'); + + const finalLauncherBalance = await token.balanceOf(launcherAddress); + + expect(finalLauncherBalance - initialLauncherBalance).to.equal( + initialEscrowBalance + ); + }); + + it('Admin: cancels the escrow succesfully', async () => { + const initialLauncherBalance = await token.balanceOf(launcherAddress); + const initialEscrowBalance = await token.balanceOf( + escrow.getAddress() + ); + + await expect(escrow.connect(admin).cancel()).to.emit( + escrow, + 'Cancelled' + ); + expect(await escrow.status()).to.equal(Status.Cancelled); + + expect(await escrow.remainingFunds()).to.equal('0'); + + const finalLauncherBalance = await token.balanceOf(launcherAddress); + + expect(finalLauncherBalance - initialLauncherBalance).to.equal( + initialEscrowBalance + ); + }); + + it('Reputation oracle: cancels the escrow succesfully after storeResults', async () => { + const initialLauncherBalance = await token.balanceOf(launcherAddress); + const initialEscrowBalance = await token.balanceOf( + escrow.getAddress() + ); + + await storeResults(FIXTURE_URL, FIXTURE_HASH, initialEscrowBalance); + + await expect(escrow.connect(reputationOracle).cancel()).to.emit( + escrow, + 'Cancelled' + ); + expect(await escrow.status()).to.equal(Status.Cancelled); + + expect(await escrow.remainingFunds()).to.equal('0'); + + const finalLauncherBalance = await token.balanceOf(launcherAddress); + + expect(finalLauncherBalance - initialLauncherBalance).to.equal( + initialEscrowBalance + ); + }); + + it('Admin: cancels the escrow succesfully after storeResults', async () => { + const initialLauncherBalance = await token.balanceOf(launcherAddress); + const initialEscrowBalance = await token.balanceOf( + escrow.getAddress() + ); + + await storeResults(FIXTURE_URL, FIXTURE_HASH, initialEscrowBalance); + + await expect(escrow.connect(admin).cancel()).to.emit( + escrow, + 'Cancelled' + ); + expect(await escrow.status()).to.equal(Status.Cancelled); + + expect(await escrow.remainingFunds()).to.equal('0'); + + const finalLauncherBalance = await token.balanceOf(launcherAddress); + + expect(finalLauncherBalance - initialLauncherBalance).to.equal( + initialEscrowBalance + ); + }); + + it('Reputation oracle: cancels the escrow succesfully after payouts', async () => { + const initialLauncherBalance = await token.balanceOf(launcherAddress); + const initialEscrowBalance = await token.balanceOf( + escrow.getAddress() + ); + + await storeResults(FIXTURE_URL, FIXTURE_HASH, initialEscrowBalance); + await escrow + .connect(admin) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ]([externalAddress], [initialEscrowBalance / 2n], FIXTURE_URL, FIXTURE_HASH, '000', false); + + await expect(escrow.connect(reputationOracle).cancel()).to.emit( + escrow, + 'Cancelled' + ); + expect(await escrow.status()).to.equal(Status.Cancelled); + + expect(await escrow.remainingFunds()).to.equal('0'); - expect(finalLauncherBalance - initialLauncherBalance).to.equal('90'); + const finalLauncherBalance = await token.balanceOf(launcherAddress); + + expect(finalLauncherBalance - initialLauncherBalance).to.equal( + initialEscrowBalance / 2n + ); + }); + + it('Admin: cancels the escrow succesfully after payouts', async () => { + const initialLauncherBalance = await token.balanceOf(launcherAddress); + const initialEscrowBalance = await token.balanceOf( + escrow.getAddress() + ); + + await storeResults(FIXTURE_URL, FIXTURE_HASH, initialEscrowBalance); + await escrow + .connect(admin) + [ + 'bulkPayOut(address[],uint256[],string,string,string,bool)' + ]([externalAddress], [initialEscrowBalance / 2n], FIXTURE_URL, FIXTURE_HASH, '000', false); + + await expect(escrow.connect(admin).cancel()).to.emit( + escrow, + 'Cancelled' + ); + expect(await escrow.status()).to.equal(Status.Cancelled); + + expect(await escrow.remainingFunds()).to.equal('0'); + + const finalLauncherBalance = await token.balanceOf(launcherAddress); + + expect(finalLauncherBalance - initialLauncherBalance).to.equal( + initialEscrowBalance / 2n + ); + }); }); }); }); diff --git a/packages/core/test/EscrowFactory.ts b/packages/core/test/EscrowFactory.ts index c70531b7f6..ab4941afb8 100644 --- a/packages/core/test/EscrowFactory.ts +++ b/packages/core/test/EscrowFactory.ts @@ -1,56 +1,51 @@ import { anyValue } from '@nomicfoundation/hardhat-chai-matchers/withArgs'; -import { assert, expect } from 'chai'; -import { EventLog, Signer } from 'ethers'; +import { expect } from 'chai'; +import { EventLog, Signer, ZeroAddress } from 'ethers'; import { ethers, upgrades } from 'hardhat'; import { EscrowFactory, HMToken, Staking } from '../typechain-types'; +import { faker } from '@faker-js/faker'; + +let owner: Signer, + launcher1: Signer, + admin: Signer, + launcher2: Signer, + exchangeOracle: Signer, + recordingOracle: Signer, + reputationOracle: Signer; +let exchangeOracleAddress: string, + recordingOracleAddress: string, + reputationOracleAddress: string; + +let token: HMToken, escrowFactory: EscrowFactory, staking: Staking; +let stakingAddress: string, tokenAddress: string; + +const MINIMUM_STAKE = ethers.parseEther('10'); +const LOCK_PERIOD = 2; +const FEE_PERCENTAGE = 5; + +const FIXTURE_REQUESTER_ID = faker.string.alphanumeric(10); +const FIXTURE_STAKE_AMOUNT = ethers.parseEther('10'); + +async function stake(staker: Signer, amount: bigint = FIXTURE_STAKE_AMOUNT) { + await token.connect(staker).approve(stakingAddress, amount); + await staking.connect(staker).stake(amount); +} describe('EscrowFactory', function () { - let owner: Signer, - operator: Signer, - reputationOracle: Signer, - recordingOracle: Signer, - trustedHandlers: string[]; - - let token: HMToken, escrowFactory: EscrowFactory, staking: Staking; - - const jobRequesterId = 'job-requester-id'; - const minimumStake = 5; - const lockPeriod = 2; - const feePercentage = 2; - - const stakeAmount = 10; - - async function createEscrow() { - const result = await ( - await escrowFactory - .connect(operator) - .createEscrow(await token.getAddress(), trustedHandlers, jobRequesterId) - ).wait(); - const event = ( - result?.logs?.find(({ topics }) => - topics.includes(ethers.id('LaunchedV2(address,address,string)')) - ) as EventLog - )?.args; - - return event; - } - - async function stakeAndCreateEscrow(staking: Staking) { - await staking.connect(operator).stake(stakeAmount); - - return await createEscrow(); - } - - this.beforeAll(async () => { - [owner, operator, reputationOracle, recordingOracle] = - await ethers.getSigners(); - - trustedHandlers = [ - await reputationOracle.getAddress(), - await recordingOracle.getAddress(), - ]; - - // Deploy HMToken Contract + before(async () => { + [ + owner, + launcher1, + admin, + launcher2, + exchangeOracle, + recordingOracle, + reputationOracle, + ] = await ethers.getSigners(); + exchangeOracleAddress = await exchangeOracle.getAddress(); + recordingOracleAddress = await recordingOracle.getAddress(); + reputationOracleAddress = await reputationOracle.getAddress(); + const HMToken = await ethers.getContractFactory( 'contracts/HMToken.sol:HMToken' ); @@ -60,255 +55,332 @@ describe('EscrowFactory', function () { 18, 'HMT' )) as HMToken; + tokenAddress = await token.getAddress(); - // Send HMT tokens to the operator - await token.connect(owner).transfer(await operator.getAddress(), 1000); - }); + await token + .connect(owner) + .transfer(await launcher1.getAddress(), ethers.parseEther('100000')); + await token + .connect(owner) + .transfer(await launcher2.getAddress(), ethers.parseEther('100000')); - this.beforeEach(async () => { - // Deploy Staking Contract const Staking = await ethers.getContractFactory('Staking'); staking = await Staking.deploy( await token.getAddress(), - minimumStake, - lockPeriod, - feePercentage + MINIMUM_STAKE, + LOCK_PERIOD, + FEE_PERCENTAGE ); + stakingAddress = await staking.getAddress(); - // Approve spend HMT tokens staking contract - await token.connect(operator).approve(await staking.getAddress(), 1000); - - // Deploy Escrow Factory Contract const EscrowFactory = await ethers.getContractFactory( 'contracts/EscrowFactory.sol:EscrowFactory' ); escrowFactory = (await upgrades.deployProxy( EscrowFactory, - [await staking.getAddress(), minimumStake], + [await staking.getAddress(), MINIMUM_STAKE], { kind: 'uups', initializer: 'initialize' } )) as unknown as EscrowFactory; }); describe('deployment', () => { - it('Should set the right counter', async () => { - const initialCounter = await escrowFactory.counter(); - expect(initialCounter.toString()).to.equal('0'); - }); - }); - - it('Operator should not be able to create an escrow without meeting minimum stake', async () => { - await expect( - escrowFactory - .connect(operator) - .createEscrow( - await token.getAddress(), - [await reputationOracle.getAddress()], - jobRequesterId - ) - ).to.be.revertedWith('Insufficient stake to create an escrow.'); - }); - - it('Operator should be able to create an escrow after meeting minimum stake', async () => { - const event = await stakeAndCreateEscrow(staking); - - expect(event?.token).to.equal( - await token.getAddress(), - 'token address is correct' - ); - expect(event?.escrow).to.not.be.null; - }); - - it('Should emit an event on launched', async function () { - await staking.connect(operator).stake(stakeAmount); + describe('reverts', () => { + it('reverts when staking address is zero address', async () => { + const EscrowFactory = await ethers.getContractFactory( + 'contracts/EscrowFactory.sol:EscrowFactory' + ); - await expect( - escrowFactory - .connect(operator) - .createEscrow(await token.getAddress(), trustedHandlers, jobRequesterId) - ) - .to.emit(escrowFactory, 'LaunchedV2') - .withArgs(await token.getAddress(), anyValue, jobRequesterId); - }); + await expect( + upgrades.deployProxy(EscrowFactory, [ZeroAddress, MINIMUM_STAKE], { + kind: 'uups', + initializer: 'initialize', + }) as unknown as EscrowFactory + ).revertedWith('Zero Address'); + }); + }); - it('Owner should be able to set minimumStake', async () => { - await escrowFactory.connect(owner).setMinimumStake(15); - const minimumStake = await escrowFactory.minimumStake(); - expect(minimumStake).to.equal(15, 'Minimum stake updated correctly'); - }); + describe('succeeds', () => { + it('factory deployed successfully', async () => { + const EscrowFactory = await ethers.getContractFactory( + 'contracts/EscrowFactory.sol:EscrowFactory' + ); - it('Owner should be able to modify staking address', async () => { - const Staking = await ethers.getContractFactory('Staking'); - const newStaking = await Staking.deploy( - await token.getAddress(), - minimumStake, - lockPeriod, - feePercentage - ); - await escrowFactory - .connect(owner) - .setStakingAddress(await newStaking.getAddress()); - const newStakingAddress = await escrowFactory.staking(); - expect(newStakingAddress).to.equal( - await newStaking.getAddress(), - 'Staking address updated correctly' - ); - expect(newStakingAddress).not.to.equal( - await staking.getAddress(), - 'Staking address is different to the previous one' - ); + const escrowFactory = (await upgrades.deployProxy( + EscrowFactory, + [stakingAddress, MINIMUM_STAKE], + { + kind: 'uups', + initializer: 'initialize', + } + )) as unknown as EscrowFactory; + + expect(await escrowFactory.minimumStake()).to.equal(MINIMUM_STAKE); + }); + }); }); - it('Operator should not create escrow if new minimumStake is not met', async () => { - await escrowFactory.connect(owner).setMinimumStake(15); - await staking.connect(operator).stake(stakeAmount); + describe('setStakingAddress()', () => { + describe('reverts', () => { + it('reverts when staking address is zero address', async () => { + await expect( + escrowFactory.connect(owner).setStakingAddress(ZeroAddress) + ).to.be.revertedWith('Zero Address'); + }); + + it('reverts when caller is not the owner', async () => { + await expect( + escrowFactory.connect(launcher1).setStakingAddress(stakingAddress) + ).to.be.revertedWith('Ownable: caller is not the owner'); + }); + }); - await expect( - escrowFactory - .connect(operator) - .createEscrow( + describe('succeeds', () => { + it('staking address set successfully', async () => { + const Staking = await ethers.getContractFactory('Staking'); + const newStaking = await Staking.deploy( await token.getAddress(), - [await reputationOracle.getAddress()], - jobRequesterId + MINIMUM_STAKE, + LOCK_PERIOD, + FEE_PERCENTAGE + ); + const newStakingAddress = await newStaking.getAddress(); + await expect( + escrowFactory.connect(owner).setStakingAddress(newStakingAddress) ) - ).to.be.revertedWith('Insufficient stake to create an escrow.'); - }); + .to.emit(escrowFactory, 'SetStakingAddress') + .withArgs(newStakingAddress); - it('Operator should be able to create escrow after staking more to meet new minimum', async () => { - await escrowFactory.connect(owner).setMinimumStake(15); - await staking.connect(operator).stake(20); - - const event = await createEscrow(); - - expect(event?.token).to.equal( - await token.getAddress(), - 'token address is correct' - ); - expect(event?.escrow).to.not.be.null; - }); - - it('Should find the newly created escrow from deployed escrow', async () => { - await stakeAndCreateEscrow(staking); - const escrowAddress = await escrowFactory.lastEscrow(); - - const result = await escrowFactory - .connect(operator) - .hasEscrow(escrowAddress); - expect(result).to.equal(true); + expect(await escrowFactory.staking()).to.equal(newStakingAddress); + stakingAddress = newStakingAddress; + staking = newStaking; + }); + }); }); - it('Operator should be able to create another escrow after unstaking some of the stakes', async () => { - await stakeAndCreateEscrow(staking); - - staking.connect(operator).unstake(2); + describe('setMinimumStake()', () => { + describe('reverts', () => { + it('reverts when minimum stake is zero', async () => { + await expect( + escrowFactory.connect(owner).setMinimumStake(0) + ).to.be.revertedWith('Must be a positive number'); + }); + + it('reverts when caller is not the owner', async () => { + await expect( + escrowFactory.connect(launcher1).setMinimumStake(0) + ).to.be.revertedWith('Ownable: caller is not the owner'); + }); + }); - const event = await createEscrow(); + describe('succeeds', () => { + it('minimum stake set successfully', async () => { + const newMinimumStake = ethers.parseEther('5'); + await expect( + escrowFactory.connect(owner).setMinimumStake(newMinimumStake) + ) + .to.emit(escrowFactory, 'SetMinumumStake') + .withArgs(newMinimumStake); - expect(event?.token).to.equal( - await token.getAddress(), - 'token address is correct' - ); - expect(event?.escrow).to.not.be.null; + expect(await escrowFactory.minimumStake()).to.equal(newMinimumStake); + }); + }); }); - it('Operator should not be able to create an escrow after unstaking all of the stakes', async () => { - await stakeAndCreateEscrow(staking); - - staking.connect(operator).unstake(stakeAmount); + describe('setAdmin()', () => { + describe('reverts', () => { + it('reverts when admin address is zero address', async () => { + await expect( + escrowFactory.connect(owner).setAdmin(ZeroAddress) + ).to.be.revertedWith('Zero Address'); + }); + + it('reverts when caller is not the owner', async () => { + await expect( + escrowFactory.connect(launcher1).setAdmin(await admin.getAddress()) + ).to.be.revertedWith('Ownable: caller is not the owner'); + }); + }); - await expect( - escrowFactory - .connect(operator) - .createEscrow( - await token.getAddress(), - [await reputationOracle.getAddress()], - jobRequesterId - ) - ).to.be.revertedWith('Insufficient stake to create an escrow.'); - }); + describe('succeeds', () => { + it('new admin set successfully', async () => { + const adminAddress = await admin.getAddress(); - it('Should find the newly created escrow from deployed escrow', async () => { - await stakeAndCreateEscrow(staking); - const escrowAddress = await escrowFactory.lastEscrow(); + await escrowFactory.connect(owner).setAdmin(adminAddress); - const result = await escrowFactory - .connect(operator) - .hasEscrow(escrowAddress); - expect(result).to.equal(true); + expect(await escrowFactory.admin()).to.equal(adminAddress); + }); + }); }); - describe('proxy implementation', function () { - it('Should reject non-owner upgrades', async () => { - const EscrowFactoryV0 = await ethers.getContractFactory( - 'EscrowFactoryV0', - operator - ); - - await expect( - upgrades.upgradeProxy(await escrowFactory.getAddress(), EscrowFactoryV0) - ).to.be.revertedWith('Ownable: caller is not the owner'); + describe('createEscrow()', () => { + describe('reverts', () => { + it('reverts when launcher has insufficient stake', async () => { + await expect( + escrowFactory + .connect(launcher1) + .createEscrow(tokenAddress, FIXTURE_REQUESTER_ID) + ).to.be.revertedWith('Insufficient stake'); + }); }); - it('Owner should upgrade correctly', async () => { - const EscrowFactoryV0 = - await ethers.getContractFactory('EscrowFactoryV0'); - const oldImplementationAddress = - await upgrades.erc1967.getImplementationAddress( - await escrowFactory.getAddress() - ); - - await upgrades.upgradeProxy( - await escrowFactory.getAddress(), - EscrowFactoryV0 - ); - - expect( - await upgrades.erc1967.getImplementationAddress( - await escrowFactory.getAddress() - ) - ).to.not.be.equal(oldImplementationAddress); - - const event = await stakeAndCreateEscrow(staking); - - expect(event?.token).to.equal( - await token.getAddress(), - 'token address is correct' - ); - expect(event?.escrow).to.not.be.null; - - try { - escrowFactory.hasEscrow(owner.getAddress()); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - } catch (error: any) { - assert( - error.message === 'newEscrowFactory.hasEscrow is not a function' - ); - } + describe('succeeds', () => { + it('creates an escrow successfully', async () => { + await stake(launcher1); + + const tx = await escrowFactory + .connect(launcher1) + .createEscrow(tokenAddress, FIXTURE_REQUESTER_ID); + + await expect(tx) + .to.emit(escrowFactory, 'LaunchedV2') + .withArgs(tokenAddress, anyValue, FIXTURE_REQUESTER_ID); + + const receipt = await tx.wait(); + const event = ( + receipt?.logs?.find(({ topics }) => + topics.includes(ethers.id('LaunchedV2(address,address,string)')) + ) as EventLog + )?.args; + + expect(event).to.not.be.undefined; + const escrowAddress = event[1]; + expect(await escrowFactory.hasEscrow(escrowAddress)).to.be.true; + expect(await escrowFactory.lastEscrow()).to.equal(escrowAddress); + }); }); + }); - it('Should have the same storage', async () => { - await stakeAndCreateEscrow(staking); + describe('createFundAndSetupEscrow()', () => { + const fee = faker.number.int({ min: 1, max: 5 }); + const manifestUrl = faker.internet.url(); + const manifestHash = faker.string.alphanumeric(46); + const fundAmount = ethers.parseEther( + faker.finance.amount({ min: 1, max: 100 }) + ); + describe('reverts', () => { + it('reverts when fund amount is 0', async () => { + await expect( + escrowFactory + .connect(launcher2) + .createFundAndSetupEscrow( + tokenAddress, + 0, + FIXTURE_REQUESTER_ID, + reputationOracleAddress, + recordingOracleAddress, + exchangeOracleAddress, + fee, + fee, + fee, + manifestUrl, + manifestHash + ) + ).to.be.revertedWith('Amount is 0'); + }); + + it('reverts when launcher has insufficient stake', async () => { + await expect( + escrowFactory + .connect(launcher2) + .createFundAndSetupEscrow( + tokenAddress, + fundAmount, + FIXTURE_REQUESTER_ID, + reputationOracleAddress, + recordingOracleAddress, + exchangeOracleAddress, + fee, + fee, + fee, + manifestUrl, + manifestHash + ) + ).to.be.revertedWith('Insufficient stake'); + }); + + it('reverts when allowance is too low', async () => { + await stake(launcher2); + await token + .connect(launcher2) + .approve(await escrowFactory.getAddress(), fundAmount / 2n); + + await expect( + escrowFactory + .connect(launcher2) + .createFundAndSetupEscrow( + tokenAddress, + fundAmount, + FIXTURE_REQUESTER_ID, + reputationOracleAddress, + recordingOracleAddress, + exchangeOracleAddress, + fee, + fee, + fee, + manifestUrl, + manifestHash + ) + ).to.be.revertedWith('Spender allowance too low'); + }); + }); - const oldLastEscrow = await escrowFactory.lastEscrow(); - const oldImplementationAddress = - await upgrades.erc1967.getImplementationAddress( - await escrowFactory.getAddress() + describe('succeeds', () => { + it('creates an escrow successfully', async () => { + await stake(launcher2); + + await token + .connect(launcher2) + .approve(await escrowFactory.getAddress(), fundAmount); + + const tx = await escrowFactory + .connect(launcher2) + .createFundAndSetupEscrow( + tokenAddress, + fundAmount, + FIXTURE_REQUESTER_ID, + reputationOracleAddress, + recordingOracleAddress, + exchangeOracleAddress, + fee, + fee, + fee, + manifestUrl, + manifestHash + ); + + const receipt = await tx.wait(); + const event = ( + receipt?.logs?.find(({ topics }) => + topics.includes(ethers.id('LaunchedV2(address,address,string)')) + ) as EventLog + )?.args; + + expect(event).to.not.be.undefined; + const escrowAddress = event[1]; + + const escrow = await ethers.getContractAt( + 'contracts/Escrow.sol:Escrow', + escrowAddress ); - const EscrowFactoryV0 = - await ethers.getContractFactory('EscrowFactoryV0'); - await upgrades.upgradeProxy( - await escrowFactory.getAddress(), - EscrowFactoryV0 - ); - - expect( - await upgrades.erc1967.getImplementationAddress( - await escrowFactory.getAddress() - ) - ).to.not.be.equal(oldImplementationAddress); - - expect(await escrowFactory.lastEscrow()).to.equal(oldLastEscrow); + await expect(tx) + .to.emit(escrowFactory, 'LaunchedV2') + .withArgs(tokenAddress, escrowAddress, FIXTURE_REQUESTER_ID) + .to.emit(escrow, 'PendingV2') + .withArgs( + manifestUrl, + manifestHash, + reputationOracleAddress, + recordingOracleAddress, + exchangeOracleAddress + ) + .to.emit(escrow, 'Fund') + .withArgs(fundAmount); + + expect(await escrowFactory.hasEscrow(escrowAddress)).to.be.true; + expect(await escrowFactory.lastEscrow()).to.equal(escrowAddress); + }); }); }); }); diff --git a/packages/core/test/Staking.ts b/packages/core/test/Staking.ts index 1ffc77ab27..a012a69d7d 100644 --- a/packages/core/test/Staking.ts +++ b/packages/core/test/Staking.ts @@ -98,6 +98,8 @@ describe('Staking', function () { { kind: 'uups', initializer: 'initialize' } )) as unknown as EscrowFactory; + await escrowFactory.setAdmin(await owner.getAddress()); + // Topup staking address await token.connect(owner).transfer(await staking.getAddress(), 1000); @@ -242,11 +244,7 @@ describe('Staking', function () { const result = await ( await escrowFactory .connect(operator) - .createEscrow( - await token.getAddress(), - [await validator.getAddress()], - jobRequesterId - ) + .createEscrow(await token.getAddress(), jobRequesterId) ).wait(); const event = ( result?.logs?.find(({ topics }) => @@ -421,11 +419,7 @@ describe('Staking', function () { const result = await ( await escrowFactory .connect(operator) - .createEscrow( - await token.getAddress(), - [await validator.getAddress()], - jobRequesterId - ) + .createEscrow(await token.getAddress(), jobRequesterId) ).wait(); const event = ( result?.logs?.find(({ topics }) => @@ -599,11 +593,7 @@ describe('Staking', function () { const result = await ( await escrowFactory .connect(operator) - .createEscrow( - await token.getAddress(), - [await validator.getAddress()], - jobRequesterId - ) + .createEscrow(await token.getAddress(), jobRequesterId) ).wait(); const event = ( result?.logs?.find(({ topics }) => diff --git a/packages/core/test/DAOSpokeContract.ts b/packages/core/test/governance/DAOSpokeContract.ts similarity index 99% rename from packages/core/test/DAOSpokeContract.ts rename to packages/core/test/governance/DAOSpokeContract.ts index baff980948..ad6a68c215 100644 --- a/packages/core/test/DAOSpokeContract.ts +++ b/packages/core/test/governance/DAOSpokeContract.ts @@ -8,7 +8,7 @@ import { TimelockController, DAOSpokeContract, WormholeMock, -} from '../typechain-types'; +} from '../../typechain-types'; import { createMockUserWithVotingPower, mineNBlocks, diff --git a/packages/core/test/GovernanceTypes.ts b/packages/core/test/governance/GovernanceTypes.ts similarity index 100% rename from packages/core/test/GovernanceTypes.ts rename to packages/core/test/governance/GovernanceTypes.ts diff --git a/packages/core/test/GovernanceUtils.ts b/packages/core/test/governance/GovernanceUtils.ts similarity index 99% rename from packages/core/test/GovernanceUtils.ts rename to packages/core/test/governance/GovernanceUtils.ts index ee813dc226..c75104dca8 100644 --- a/packages/core/test/GovernanceUtils.ts +++ b/packages/core/test/governance/GovernanceUtils.ts @@ -7,7 +7,7 @@ import { VHMToken, DAOSpokeContract, WormholeMock, -} from '../typechain-types'; +} from '../../typechain-types'; import { IWormholeVM, IWormholeSignature } from './GovernanceTypes'; let owner: Signer; diff --git a/packages/core/test/MetaHumanGovernor.ts b/packages/core/test/governance/MetaHumanGovernor.ts similarity index 99% rename from packages/core/test/MetaHumanGovernor.ts rename to packages/core/test/governance/MetaHumanGovernor.ts index a5f4e6dd7d..727d68bbc4 100644 --- a/packages/core/test/MetaHumanGovernor.ts +++ b/packages/core/test/governance/MetaHumanGovernor.ts @@ -8,7 +8,7 @@ import { TimelockController, DAOSpokeContract, WormholeMock, -} from '../typechain-types'; +} from '../../typechain-types'; import { createMockUserWithVotingPower, createBasicProposal, diff --git a/packages/core/test/MetaHumanGovernorHubOnly.ts b/packages/core/test/governance/MetaHumanGovernorHubOnly.ts similarity index 99% rename from packages/core/test/MetaHumanGovernorHubOnly.ts rename to packages/core/test/governance/MetaHumanGovernorHubOnly.ts index 97bef56ad0..38f1edbfb0 100644 --- a/packages/core/test/MetaHumanGovernorHubOnly.ts +++ b/packages/core/test/governance/MetaHumanGovernorHubOnly.ts @@ -7,7 +7,7 @@ import { HMToken, TimelockController, WormholeMock, -} from '../typechain-types'; +} from '../../typechain-types'; import { createMockUserWithVotingPower, mineNBlocks, diff --git a/packages/sdk/python/human-protocol-sdk/docs/human_protocol_sdk.staking.rst b/packages/sdk/python/human-protocol-sdk/docs/human_protocol_sdk.staking.rst index 9ffb60739d..b23caacd20 100644 --- a/packages/sdk/python/human-protocol-sdk/docs/human_protocol_sdk.staking.rst +++ b/packages/sdk/python/human-protocol-sdk/docs/human_protocol_sdk.staking.rst @@ -13,3 +13,4 @@ Submodules :maxdepth: 4 human_protocol_sdk.staking.staking_client + human_protocol_sdk.staking.staking_utils diff --git a/packages/sdk/python/human-protocol-sdk/docs/human_protocol_sdk.staking.staking_utils.rst b/packages/sdk/python/human-protocol-sdk/docs/human_protocol_sdk.staking.staking_utils.rst new file mode 100644 index 0000000000..65cbdc1fd0 --- /dev/null +++ b/packages/sdk/python/human-protocol-sdk/docs/human_protocol_sdk.staking.staking_utils.rst @@ -0,0 +1,7 @@ +human\_protocol\_sdk.staking.staking\_utils module +================================================== + +.. automodule:: human_protocol_sdk.staking.staking_utils + :members: + :undoc-members: + :show-inheritance: diff --git a/packages/sdk/python/human-protocol-sdk/example.py b/packages/sdk/python/human-protocol-sdk/example.py index 077bc0b480..ddc2c65264 100644 --- a/packages/sdk/python/human-protocol-sdk/example.py +++ b/packages/sdk/python/human-protocol-sdk/example.py @@ -6,8 +6,10 @@ from human_protocol_sdk.filter import ( EscrowFilter, PayoutFilter, + CancellationRefundFilter, StatisticsFilter, WorkerFilter, + StakersFilter, ) from human_protocol_sdk.statistics import ( StatisticsClient, @@ -15,6 +17,7 @@ ) from human_protocol_sdk.operator import OperatorUtils, OperatorFilter from human_protocol_sdk.agreement import agreement +from human_protocol_sdk.staking.staking_utils import StakingUtils def get_escrow_statistics(statistics_client: StatisticsClient): @@ -105,6 +108,52 @@ def get_payouts(): ) +def get_cancellation_refunds(): + # List recent cancellation refunds + filter = CancellationRefundFilter( + chain_id=ChainId.POLYGON_AMOY, + first=5, + skip=0, + order_direction=OrderDirection.ASC, + ) + + refunds = EscrowUtils.get_cancellation_refunds(filter) + for refund in refunds: + print( + "Refund ID:", + refund.id, + "Escrow:", + refund.escrow_address, + "Amount:", + refund.amount, + "Receiver:", + refund.receiver, + "Tx:", + refund.tx_hash, + ) + + # Fetch a single cancellation refund by escrow address if available + if refunds: + single = EscrowUtils.get_cancellation_refund( + ChainId.POLYGON_AMOY, refunds[0].escrow_address + ) + if single: + print( + "Single refund:", + single.id, + "Escrow:", + single.escrow_address, + "Amount:", + single.amount, + "Receiver:", + single.receiver, + "Tx:", + single.tx_hash, + ) + else: + print("No single refund found for escrow", refunds[0].escrow_address) + + def get_escrows(): print( EscrowUtils.get_escrows( @@ -131,22 +180,23 @@ def get_operators(): OperatorFilter(chain_id=ChainId.POLYGON_AMOY) ) print(operators) + print(vars(operators[0])) print(OperatorUtils.get_operator(ChainId.POLYGON_AMOY, operators[0].address)) print( OperatorUtils.get_operators( - OperatorFilter(chain_id=ChainId.POLYGON_AMOY, roles="Job Launcher") + OperatorFilter(chain_id=ChainId.POLYGON_AMOY, roles="job_launcher") ) ) operators = OperatorUtils.get_operators( - OperatorFilter(chain_id=ChainId.POLYGON_AMOY, roles=["Job Launcher"]) + OperatorFilter(chain_id=ChainId.POLYGON_AMOY, roles=["job_launcher"]) ) print(len(operators)) operators = OperatorUtils.get_operators( OperatorFilter( chain_id=ChainId.POLYGON_AMOY, - min_amount_staked=1, - roles=["Job Launcher", "Reputation Oracle"], + min_staked_amount=1, + roles=["job_launcher", "reputation_oracle"], ) ) print(len(operators)) @@ -176,6 +226,23 @@ def agreement_example(): print(agreement_report) +def get_stakers_example(): + stakers = StakingUtils.get_stakers( + StakersFilter( + chain_id=ChainId.POLYGON_AMOY, + order_by="lastDepositTimestamp", + order_direction=OrderDirection.ASC, + ) + ) + print("Filtered stakers:", len(stakers)) + + if stakers: + staker = StakingUtils.get_staker(ChainId.LOCALHOST, stakers[0].address) + print("Staker info:", staker.address) + else: + print("No stakers found.") + + if __name__ == "__main__": statistics_client = StatisticsClient() @@ -184,6 +251,7 @@ def agreement_example(): get_escrows() get_operators() get_payouts() + get_cancellation_refunds() statistics_client = StatisticsClient(ChainId.POLYGON_AMOY) get_hmt_holders(statistics_client) @@ -195,3 +263,4 @@ def agreement_example(): agreement_example() get_workers() + get_stakers_example() diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/constants.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/constants.py index d705cd49f5..150bae41e2 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/constants.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/constants.py @@ -54,7 +54,7 @@ class OperatorCategory(Enum): "https://api.studio.thegraph.com/query/74256/sepolia/version/latest" ), "subgraph_url_api_key": ( - "https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmURrhnEXimGnRzjeN3B4VMmioUeBHUBg4WJ7KZzJ7em8g" + "https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmT4xNvZh8ymarrk1zdytjLhCW59iuTavsd4JgHS4LbCVB" ), "hmt_address": "0x792abbcC99c01dbDec49c9fa9A828a186Da45C33", "factory_address": "0x5987A5558d961ee674efe4A8c8eB7B1b5495D3bf", @@ -86,7 +86,7 @@ class OperatorCategory(Enum): "https://api.studio.thegraph.com/query/74256/bsc-testnet/version/latest" ), "subgraph_url_api_key": ( - "https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmZHqbiyAAwrmqsVJLhTEdejVGYJpXfJAkJXUw7C2VV1TD" + "https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmZjYMktZe8RAz7W7qL33VZBV6AC57xsLyE1cEfv6NABdZ" ), "hmt_address": "0xE3D74BBFa45B4bCa69FF28891fBE392f4B4d4e4d", "factory_address": "0x2bfA592DBDaF434DDcbb893B1916120d181DAD18", @@ -122,7 +122,7 @@ class OperatorCategory(Enum): "https://api.studio.thegraph.com/query/74256/amoy/version/latest" ), "subgraph_url_api_key": ( - "https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmeeE9bVkat1mkbQg1R6SXLuLadXxoNCY5b7CEQkmu6cQi" + "https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmWRUFWpWoRRUh7Ec1HUJEwxc84DkP4iFTfLLsoVngJAPa" ), "hmt_address": "0x792abbcC99c01dbDec49c9fa9A828a186Da45C33", "factory_address": "0xAFf5a986A530ff839d49325A5dF69F96627E8D29", @@ -138,7 +138,7 @@ class OperatorCategory(Enum): "https://api.studio.thegraph.com/query/74256/amoy/version/aurora-testnet" ), "subgraph_url_api_key": ( - "https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmQiLaFKusXLzKrpZvQDg7vETLhdfPgzWJN3Uxp3bE9K9W" + "https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmVHYvjbsgAroR9EMgqqGTQ7aKPRFMVekY6evU6mFPUU7J" ), "hmt_address": "0x792abbcC99c01dbDec49c9fa9A828a186Da45C33", "factory_address": "0xbA537fEF2442cD48f60686FE1Bbbe40F964a7940", @@ -176,6 +176,7 @@ class Status(Enum): Paid = 3 Complete = 4 Cancelled = 5 + ToCancel = 6 class Role(Enum): diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/escrow/escrow_client.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/escrow/escrow_client.py index d66b42a885..a4ec42ba6b 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/escrow/escrow_client.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/escrow/escrow_client.py @@ -52,9 +52,7 @@ def get_w3_with_priv_key(priv_key: str): """ import logging -import os -from decimal import Decimal -from typing import Dict, List, Optional +from typing import Optional, List, Union from human_protocol_sdk.constants import ( ESCROW_BULK_PAYOUT_MAX_ITEMS, @@ -70,10 +68,8 @@ def get_w3_with_priv_key(priv_key: str): validate_json, ) from web3 import Web3, contract -from web3 import eth from web3.middleware import ExtraDataToPOAMiddleware from web3.types import TxParams -from eth_utils import abi from human_protocol_sdk.utils import validate_url, apply_tx_defaults from human_protocol_sdk.decorators import requires_signer @@ -94,17 +90,17 @@ def __init__(self, tx_hash: str, amount_refunded: any): class EscrowWithdraw: - def __init__(self, tx_hash: str, token_address: str, amount_withdrawn: any): + def __init__(self, tx_hash: str, token_address: str, withdrawn_amount: any): """ Represents the result of an escrow cancellation transaction. :param tx_hash: The hash of the transaction associated with the escrow withdrawal. :param token_address: The address of the token used for the withdrawal. - :param amount_withdrawn: The amount withdrawn from the escrow. + :param withdrawn_amount: The amount withdrawn from the escrow. """ self.txHash = tx_hash - self.tokenAddress = token_address - self.amountWithdrawn = amount_withdrawn + self.token_address = token_address + self.withdrawn_amount = withdrawn_amount class EscrowClientError(Exception): @@ -125,9 +121,9 @@ def __init__( recording_oracle_address: str, reputation_oracle_address: str, exchange_oracle_address: str, - recording_oracle_fee: Decimal, - reputation_oracle_fee: Decimal, - exchange_oracle_fee: Decimal, + recording_oracle_fee: int, + reputation_oracle_fee: int, + exchange_oracle_fee: int, manifest: str, hash: str, ): @@ -217,7 +213,6 @@ def __init__(self, web3: Web3): def create_escrow( self, token_address: str, - trusted_handlers: List[str], job_requester_id: str, tx_options: Optional[TxParams] = None, ) -> str: @@ -225,8 +220,7 @@ def create_escrow( Creates a new escrow contract. :param token_address: Address of the token to be used in the escrow - :param trusted_handlers: List of trusted handler addresses - :param job_requester_id: ID of the job requester + :param job_requester_id: An off-chain identifier for the job requester :param tx_options: (Optional) Transaction options :return: Address of the created escrow contract @@ -257,27 +251,117 @@ def get_w3_with_priv_key(priv_key: str): escrow_client = EscrowClient(w3) token_address = '0x1234567890abcdef1234567890abcdef12345678' - trusted_handlers = [ - '0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef', - '0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef' - ] job_requester_id = 'job-requester' escrow_address = escrow_client.create_escrow( token_address, - trusted_handlers, job_requester_id ) """ if not Web3.is_address(token_address): raise EscrowClientError(f"Invalid token address: {token_address}") - for handler in trusted_handlers: - if not Web3.is_address(handler): - raise EscrowClientError(f"Invalid handler address: {handler}") - try: tx_hash = self.factory_contract.functions.createEscrow( - token_address, trusted_handlers, job_requester_id + token_address, job_requester_id + ).transact(apply_tx_defaults(self.w3, tx_options)) + receipt = self.w3.eth.wait_for_transaction_receipt(tx_hash) + event = next( + ( + self.factory_contract.events.LaunchedV2().process_log(log) + for log in receipt["logs"] + if log["address"] == self.network["factory_address"] + ), + None, + ) + return event.args.escrow if event else None + except Exception as e: + handle_error(e, EscrowClientError) + + @requires_signer + def create_fund_and_setup_escrow( + self, + token_address: str, + amount: int, + job_requester_id: str, + escrow_config: EscrowConfig, + tx_options: Optional[TxParams] = None, + ) -> str: + """ + Creates, funds, and sets up a new escrow contract in a single transaction. + + :param token_address: Address of the token to be used in the escrow + :param amount: The token amount to fund the escrow with + :param job_requester_id: An off-chain identifier for the job requester + :param escrow_config: Configuration parameters for escrow setup + :param tx_options: (Optional) Transaction options + + :return: Address of the created escrow contract + + :example: + .. code-block:: python + + from eth_typing import URI + from web3 import Web3 + from web3.middleware import SignAndSendRawMiddlewareBuilder + from web3.providers.auto import load_provider_from_uri + + from human_protocol_sdk.escrow import EscrowClient + + def get_w3_with_priv_key(priv_key: str): + w3 = Web3(load_provider_from_uri( + URI("http://localhost:8545"))) + gas_payer = w3.eth.account.from_key(priv_key) + w3.eth.default_account = gas_payer.address + w3.middleware_onion.inject( + SignAndSendRawMiddlewareBuilder.build(priv_key), + 'SignAndSendRawMiddlewareBuilder', + layer=0, + ) + return (w3, gas_payer) + + (w3, gas_payer) = get_w3_with_priv_key('YOUR_PRIVATE_KEY') + escrow_client = EscrowClient(w3) + + token_address = '0x1234567890abcdef1234567890abcdef12345678' + job_requester_id = 'job-requester' + amount = Web3.to_wei(5, 'ether') # convert from ETH to WEI + escrow_config = EscrowConfig( + recording_oracle_address='0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef', + reputation_oracle_address='0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef', + exchange_oracle_address='0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef', + recording_oracle_fee=100, + reputation_oracle_fee=100, + exchange_oracle_fee=100, + recording_oracle_url='https://example.com/recording', + reputation_oracle_url='https://example.com/reputation', + exchange_oracle_url='https://example.com/exchange', + manifest_url='https://example.com/manifest', + manifest_hash='0xabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdef' + ) + + escrow_address = escrow_client.create_fund_and_setup_escrow( + token_address, + amount, + job_requester_id, + escrow_config + ) + """ + if not Web3.is_address(token_address): + raise EscrowClientError(f"Invalid token address: {token_address}") + + try: + tx_hash = self.factory_contract.functions.createFundAndSetupEscrow( + token_address, + amount, + job_requester_id, + escrow_config.reputation_oracle_address, + escrow_config.recording_oracle_address, + escrow_config.exchange_oracle_address, + escrow_config.reputation_oracle_fee, + escrow_config.recording_oracle_fee, + escrow_config.exchange_oracle_fee, + escrow_config.manifest, + escrow_config.hash, ).transact(apply_tx_defaults(self.w3, tx_options)) receipt = self.w3.eth.wait_for_transaction_receipt(tx_hash) event = next( @@ -376,7 +460,7 @@ def get_w3_with_priv_key(priv_key: str): def fund( self, escrow_address: str, - amount: Decimal, + amount: int, tx_options: Optional[TxParams] = None, ) -> None: """ @@ -442,14 +526,16 @@ def store_results( escrow_address: str, url: str, hash: str, + funds_to_reserve: Optional[int] = None, tx_options: Optional[TxParams] = None, ) -> None: """ - Stores the results URL. + Stores the results URL and hash, with optional funds to reserve. :param escrow_address: Address of the escrow :param url: Results file URL :param hash: Results file hash + :param funds_to_reserve: (Optional) Funds to reserve for payouts :param tx_options: (Optional) Additional transaction parameters :return: None @@ -488,19 +574,40 @@ def get_w3_with_priv_key(priv_key: str): """ if not Web3.is_address(escrow_address): raise EscrowClientError(f"Invalid escrow address: {escrow_address}") - if not hash: - raise EscrowClientError("Invalid empty hash") - if not validate_url(url): - raise EscrowClientError(f"Invalid URL: {url}") + if funds_to_reserve is not None and funds_to_reserve < 0: + raise EscrowClientError("Amount must be positive") + + allow_empty = funds_to_reserve is not None and funds_to_reserve == 0 + if not allow_empty: + if funds_to_reserve is None and not url: + raise EscrowClientError("URL is empty") + if not validate_url(url): + raise EscrowClientError(f"Invalid URL: {url}") + if not hash: + raise EscrowClientError("Invalid empty hash") + + contract = self._get_escrow_contract(escrow_address) try: - tx_hash = ( - self._get_escrow_contract(escrow_address) - .functions.storeResults(url, hash) - .transact(apply_tx_defaults(self.w3, tx_options)) - ) + if funds_to_reserve is not None: + tx_hash = contract.functions.storeResults( + url, hash, funds_to_reserve + ).transact(apply_tx_defaults(self.w3, tx_options)) + else: + tx_hash = contract.functions.storeResults(url, hash).transact( + apply_tx_defaults(self.w3, tx_options) + ) self.w3.eth.wait_for_transaction_receipt(tx_hash) except Exception as e: + error_text = str(e) or "" + if "DEPRECATED_SIGNATURE" in error_text and funds_to_reserve is None: + raise EscrowClientError( + "Invalid store_results parameters for the contract version of the specified escrow address" + ) from e + + LOG.warning( + "There may be a mismatch between the parameters passed and the expected parameters of the escrow contract version" + ) handle_error(e, EscrowClientError) @requires_signer @@ -561,24 +668,24 @@ def bulk_payout( self, escrow_address: str, recipients: List[str], - amounts: List[Decimal], + amounts: List[int], final_results_url: str, final_results_hash: str, - txId: Decimal, - force_complete: Optional[bool] = False, + payout_id: Union[str, int], + force_complete: bool, tx_options: Optional[TxParams] = None, ) -> None: """ - Pays out the amounts specified to the workers and sets the URL of the final results file. + Pays out to recipients, supporting both payoutId (str) and txId (int) signatures and sets the URL of the final results file. :param escrow_address: Address of the escrow - :param recipients: Array of recipient addresses - :param amounts: Array of amounts the recipients will receive + :param recipients: List of recipient addresses + :param amounts: List of amounts :param final_results_url: Final results file URL :param final_results_hash: Final results file hash - :param txId: Serial number of the bulks - :param force_complete: (Optional) Indicates if remaining balance should be transferred to the escrow creator - :param tx_options: (Optional) Additional transaction parameters + :param payout_id: Payout ID (str) or Transaction ID (int) + :param force_complete: (Optional) Whether to force completion + :param tx_options: (Optional) Transaction options :return: None @@ -631,34 +738,49 @@ def get_w3_with_priv_key(priv_key: str): self.ensure_correct_bulk_payout_input( escrow_address, recipients, amounts, final_results_url, final_results_hash ) + + contract = self._get_escrow_contract(escrow_address) try: - contract_func = ( - self._get_escrow_contract(escrow_address).functions.bulkPayOut( + if isinstance(payout_id, str): + tx_hash = contract.functions.bulkPayOut( recipients, amounts, final_results_url, final_results_hash, - txId, + payout_id, force_complete, - ) - if force_complete - else self._get_escrow_contract(escrow_address).functions.bulkPayOut( - recipients, amounts, final_results_url, final_results_hash, txId - ) - ) - tx_hash = contract_func.transact(apply_tx_defaults(self.w3, tx_options)) + ).transact(apply_tx_defaults(self.w3, tx_options)) + else: + tx_id = payout_id + tx_hash = contract.functions.bulkPayOut( + recipients, + amounts, + final_results_url, + final_results_hash, + tx_id, + force_complete, + ).transact(apply_tx_defaults(self.w3, tx_options)) self.w3.eth.wait_for_transaction_receipt(tx_hash) except Exception as e: + error_text = str(e) or "" + if "DEPRECATED_SIGNATURE" in error_text and not isinstance(payout_id, str): + raise EscrowClientError( + "Invalid bulk_payout parameters for the contract version of the specified escrow address" + ) from e + + LOG.warning( + "There may be a mismatch between the parameters passed and the expected parameters of the escrow contract version" + ) handle_error(e, EscrowClientError) def create_bulk_payout_transaction( self, escrow_address: str, recipients: List[str], - amounts: List[Decimal], + amounts: List[int], final_results_url: str, final_results_hash: str, - txId: Decimal, + payoutId: str, force_complete: Optional[bool] = False, tx_options: Optional[TxParams] = None, ) -> TxParams: @@ -670,7 +792,7 @@ def create_bulk_payout_transaction( :param amounts: Array of amounts the recipients will receive :param final_results_url: Final results file URL :param final_results_hash: Final results file hash - :param txId: Serial number of the bulks + :param payoutId: Unique identifier for the payout :param tx_options: (Optional) Additional transaction parameters :return: A dictionary containing the prepared transaction @@ -745,7 +867,7 @@ def get_w3_with_priv_key(priv_key: str): amounts, final_results_url, final_results_hash, - txId, + payoutId, force_complete, ) .build_transaction(tx_options or {}) @@ -778,7 +900,7 @@ def ensure_correct_bulk_payout_input( self, escrow_address: str, recipients: List[str], - amounts: List[Decimal], + amounts: List[int], final_results_url: str, final_results_hash: str, ) -> None: @@ -822,23 +944,14 @@ def ensure_correct_bulk_payout_input( raise EscrowClientError("Invalid empty final results hash") @requires_signer - def cancel( + def request_cancellation( self, escrow_address: str, tx_options: Optional[TxParams] = None - ) -> EscrowCancel: - """ - Cancels the specified escrow and sends the balance to the canceler. + ) -> None: + """Requests the cancellation of the specified escrow (moves status to ToCancel or finalizes if expired). - :param escrow_address: Address of the escrow to cancel + :param escrow_address: Address of the escrow to request cancellation :param tx_options: (Optional) Additional transaction parameters - :return: EscrowCancel: - An instance of the EscrowCancel class containing details of the cancellation transaction, - including the transaction hash and the amount refunded. - - :raise EscrowClientError: If an error occurs while checking the parameters - :raise EscrowClientError: If the transfer event associated with the cancellation - is not found in the transaction logs - :example: .. code-block:: python @@ -863,7 +976,7 @@ def get_w3_with_priv_key(priv_key: str): (w3, gas_payer) = get_w3_with_priv_key('YOUR_PRIVATE_KEY') escrow_client = EscrowClient(w3) - escrow_cancel_data = escrow_client.cancel( + escrow_client.request_cancellation( "0x62dD51230A30401C455c8398d06F85e4EaB6309f" ) """ @@ -873,55 +986,30 @@ def get_w3_with_priv_key(priv_key: str): try: tx_hash = ( self._get_escrow_contract(escrow_address) - .functions.cancel() + .functions.requestCancellation() .transact(apply_tx_defaults(self.w3, tx_options)) ) - receipt = self.w3.eth.wait_for_transaction_receipt(tx_hash) - - amount_transferred = None - token_address = self.get_token_address(escrow_address) - erc20_interface = get_erc20_interface() - token_contract = self.w3.eth.contract( - token_address, abi=erc20_interface["abi"] - ) - - for log in receipt["logs"]: - if log["address"] == token_address: - processed_log = token_contract.events.Transfer().process_log(log) - if ( - processed_log["event"] == "Transfer" - and processed_log["args"]["from"] == escrow_address - ): - amount_transferred = processed_log["args"]["value"] - break - - if amount_transferred is None: - raise EscrowClientError("Transfer Event Not Found in Transaction Logs") - - return EscrowCancel( - tx_hash=receipt["transactionHash"].hex(), - amount_refunded=amount_transferred, - ) + self.w3.eth.wait_for_transaction_receipt(tx_hash) except Exception as e: handle_error(e, EscrowClientError) @requires_signer - def add_trusted_handlers( - self, - escrow_address: str, - handlers: List[str], - tx_options: Optional[TxParams] = None, - ) -> None: + def cancel( + self, escrow_address: str, tx_options: Optional[TxParams] = None + ) -> EscrowCancel: """ - Adds an array of addresses to the trusted handlers list. + Cancels the specified escrow and sends the balance to the canceler. - :param escrow_address: Address of the escrow - :param handlers: Array of trusted handler addresses + :param escrow_address: Address of the escrow to cancel :param tx_options: (Optional) Additional transaction parameters - :return: None + :return: EscrowCancel: + An instance of the EscrowCancel class containing details of the cancellation transaction, + including the transaction hash and the amount refunded. :raise EscrowClientError: If an error occurs while checking the parameters + :raise EscrowClientError: If the transfer event associated with the cancellation + is not found in the transaction logs :example: .. code-block:: python @@ -947,26 +1035,18 @@ def get_w3_with_priv_key(priv_key: str): (w3, gas_payer) = get_w3_with_priv_key('YOUR_PRIVATE_KEY') escrow_client = EscrowClient(w3) - trusted_handlers = [ - '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', - '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266' - ] - escrow_client.add_trusted_handlers( - "0x62dD51230A30401C455c8398d06F85e4EaB6309f", - trusted_handlers + escrow_cancel_data = escrow_client.cancel( + "0x62dD51230A30401C455c8398d06F85e4EaB6309f" ) """ if not Web3.is_address(escrow_address): raise EscrowClientError(f"Invalid escrow address: {escrow_address}") - for handler in handlers: - if not Web3.is_address(handler): - raise EscrowClientError(f"Invalid handler address: {handler}") try: tx_hash = ( self._get_escrow_contract(escrow_address) - .functions.addTrustedHandlers(handlers) - .transact(tx_options or {}) + .functions.cancel() + .transact(apply_tx_defaults(self.w3, tx_options)) ) self.w3.eth.wait_for_transaction_receipt(tx_hash) except Exception as e: @@ -1034,7 +1114,7 @@ def get_w3_with_priv_key(priv_key: str): tx_hash = ( self._get_escrow_contract(escrow_address) .functions.withdraw(token_address) - .transact(tx_options or {}) + .transact(apply_tx_defaults(self.w3, tx_options)) ) receipt = self.w3.eth.wait_for_transaction_receipt(tx_hash) @@ -1060,12 +1140,12 @@ def get_w3_with_priv_key(priv_key: str): return EscrowWithdraw( tx_hash=receipt["transactionHash"].hex(), token_address=token_address, - amount_withdrawn=amount_transferred, + withdrawn_amount=amount_transferred, ) except Exception as e: handle_error(e, EscrowClientError) - def get_balance(self, escrow_address: str) -> Decimal: + def get_balance(self, escrow_address: str) -> int: """ Gets the balance for a specified escrow address. @@ -1107,6 +1187,40 @@ def get_balance(self, escrow_address: str) -> Decimal: return self._get_escrow_contract(escrow_address).functions.getBalance().call() + def get_reserved_funds(self, escrow_address: str) -> int: + """ + Gets the reserved funds for a specified escrow address. + + :param escrow_address: Address of the escrow + + :return: Value of the reserved funds + + :raise EscrowClientError: If an error occurs while checking the parameters + + :example: + .. code-block:: python + + from eth_typing import URI + from web3 import Web3 + from web3.providers.auto import load_provider_from_uri + + from human_protocol_sdk.escrow import EscrowClient + + w3 = Web3(load_provider_from_uri(URI("http://localhost:8545"))) + escrow_client = EscrowClient(w3) + + reserved_funds = escrow_client.get_reserved_funds( + "0x62dD51230A30401C455c8398d06F85e4EaB6309f" + ) + """ + + if not Web3.is_address(escrow_address): + raise EscrowClientError(f"Invalid escrow address: {escrow_address}") + + return ( + self._get_escrow_contract(escrow_address).functions.reservedFunds().call() + ) + def get_manifest_hash(self, escrow_address: str) -> str: """ Gets the manifest file hash. @@ -1241,6 +1355,42 @@ def get_intermediate_results_url(self, escrow_address: str) -> str: .call() ) + def get_intermediate_results_hash(self, escrow_address: str) -> str: + """ + Gets the intermediate results file hash. + + :param escrow_address: Address of the escrow + + :return: Intermediate results file hash + + :raise EscrowClientError: If an error occurs while checking the parameters + + :example: + .. code-block:: python + + from eth_typing import URI + from web3 import Web3 + from web3.providers.auto import load_provider_from_uri + + from human_protocol_sdk.escrow import EscrowClient + + w3 = Web3(load_provider_from_uri(URI("http://localhost:8545"))) + escrow_client = EscrowClient(w3) + + hash = escrow_client.get_intermediate_results_hash( + "0x62dD51230A30401C455c8398d06F85e4EaB6309f" + ) + """ + + if not Web3.is_address(escrow_address): + raise EscrowClientError(f"Invalid escrow address: {escrow_address}") + + return ( + self._get_escrow_contract(escrow_address) + .functions.intermediateResultsHash() + .call() + ) + def get_token_address(self, escrow_address: str) -> str: """ Gets the address of the token used to fund the escrow. diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/escrow/escrow_utils.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/escrow/escrow_utils.py index ca0a5ac9ed..3d1512a04a 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/escrow/escrow_utils.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/escrow/escrow_utils.py @@ -26,13 +26,17 @@ from datetime import datetime import logging -import os -from typing import Dict, List, Optional +from typing import List, Optional from web3 import Web3 -from human_protocol_sdk.constants import NETWORKS, ChainId, Status, OrderDirection -from human_protocol_sdk.filter import EscrowFilter, StatusEventFilter, PayoutFilter +from human_protocol_sdk.constants import NETWORKS, ChainId +from human_protocol_sdk.filter import ( + CancellationRefundFilter, + EscrowFilter, + StatusEventFilter, + PayoutFilter, +) from human_protocol_sdk.utils import ( get_data_from_subgraph, ) @@ -48,22 +52,28 @@ def __init__( chain_id: ChainId, id: str, address: str, - amount_paid: int, - balance: int, - count: int, + amount_paid: str, + balance: str, + count: str, factory_address: str, launcher: str, + job_requester_id: Optional[str], status: str, token: str, - total_funded_amount: int, - created_at: datetime, + total_funded_amount: str, + created_at: str, final_results_url: Optional[str] = None, + final_results_hash: Optional[str] = None, intermediate_results_url: Optional[str] = None, + intermediate_results_hash: Optional[str] = None, manifest_hash: Optional[str] = None, manifest: Optional[str] = None, recording_oracle: Optional[str] = None, reputation_oracle: Optional[str] = None, exchange_oracle: Optional[str] = None, + recording_oracle_fee: Optional[str] = None, + reputation_oracle_fee: Optional[str] = None, + exchange_oracle_fee: Optional[str] = None, ): """ Initializes an EscrowData instance. @@ -76,37 +86,55 @@ def __init__( :param count: Count :param factory_address: Factory address :param launcher: Launcher + :param job_requester_id: Job requester identifier :param status: Status :param token: Token :param total_funded_amount: Total funded amount - :param created_at: Creation date + :param created_at: Creation timestamp in milliseconds :param final_results_url: URL for final results. + :param final_results_hash: Hash for final results. :param intermediate_results_url: URL for intermediate results. + :param intermediate_results_hash: Hash for intermediate results. :param manifest_hash: Manifest hash. :param manifest: Manifest data (JSON/URL). :param recording_oracle: Recording Oracle address. :param reputation_oracle: Reputation Oracle address. :param exchange_oracle: Exchange Oracle address. + :param recording_oracle_fee: Fee for the Recording Oracle. + :param reputation_oracle_fee: Fee for the Reputation Oracle. + :param exchange_oracle_fee: Fee for the Exchange Oracle. """ self.id = id self.address = address - self.amount_paid = amount_paid - self.balance = balance - self.count = count + self.amount_paid = int(amount_paid) + self.balance = int(balance) + self.count = int(count) self.factory_address = factory_address self.final_results_url = final_results_url + self.final_results_hash = final_results_hash self.intermediate_results_url = intermediate_results_url + self.intermediate_results_hash = intermediate_results_hash self.launcher = launcher + self.job_requester_id = job_requester_id self.manifest_hash = manifest_hash self.manifest = manifest self.recording_oracle = recording_oracle self.reputation_oracle = reputation_oracle self.exchange_oracle = exchange_oracle + self.recording_oracle_fee = ( + int(recording_oracle_fee) if recording_oracle_fee is not None else None + ) + self.reputation_oracle_fee = ( + int(reputation_oracle_fee) if reputation_oracle_fee is not None else None + ) + self.exchange_oracle_fee = ( + int(exchange_oracle_fee) if exchange_oracle_fee is not None else None + ) self.status = status self.token = token - self.total_funded_amount = total_funded_amount - self.created_at = created_at + self.total_funded_amount = int(total_funded_amount) + self.created_at = int(created_at) * 1000 self.chain_id = chain_id @@ -114,7 +142,7 @@ class StatusEvent: """ Initializes a StatusEvent instance. - :param timestamp: The timestamp of the event. + :param timestamp: The timestamp of the event in milliseconds. :param status: The status of the escrow. :param chain_id: The chain identifier where the event occurred. :param escrow_address: The address of the escrow. @@ -123,7 +151,7 @@ class StatusEvent: def __init__( self, timestamp: int, status: str, chain_id: ChainId, escrow_address: str ): - self.timestamp = timestamp + self.timestamp = timestamp * 1000 self.status = status self.chain_id = chain_id self.escrow_address = escrow_address @@ -138,17 +166,49 @@ class Payout: :param escrow_address: The address of the escrow that executed the payout. :param recipient: The address of the recipient. :param amount: The amount of the payout. - :param created_at: The time of creation of the payout. + :param created_at: The time of creation of the payout in milliseconds. """ def __init__( - self, id: str, escrow_address: str, recipient: str, amount: int, created_at: int + self, id: str, escrow_address: str, recipient: str, amount: str, created_at: str ): self.id = id self.escrow_address = escrow_address self.recipient = recipient - self.amount = amount - self.created_at = created_at + self.amount = int(amount) + self.created_at = int(created_at) * 1000 + + +class CancellationRefund: + """ + Represents a cancellation refund event. + + :param id: The unique identifier for the cancellation refund event. + :param escrow_address: The address of the escrow associated with the refund. + :param receiver: The address of the recipient receiving the refund. + :param amount: The amount being refunded. + :param block: The block number in which the refund was processed. + :param timestamp: The timestamp of the refund event in milliseconds. + :param tx_hash: The transaction hash of the refund event. + """ + + def __init__( + self, + id: str, + escrow_address: str, + receiver: str, + amount: str, + block: str, + timestamp: str, + tx_hash: str, + ): + self.id = id + self.escrow_address = escrow_address + self.receiver = receiver + self.amount = int(amount) + self.block = int(block) + self.timestamp = int(timestamp) * 1000 + self.tx_hash = tx_hash class EscrowUtils: @@ -239,24 +299,30 @@ def get_escrows( [ EscrowData( chain_id=chain_id, - id=escrow.get("id", ""), - address=escrow.get("address", ""), - amount_paid=int(escrow.get("amountPaid", 0)), - balance=int(escrow.get("balance", 0)), - count=int(escrow.get("count", 0)), - factory_address=escrow.get("factoryAddress", ""), - launcher=escrow.get("launcher", ""), - status=escrow.get("status", ""), - token=escrow.get("token", ""), - total_funded_amount=int(escrow.get("totalFundedAmount", 0)), - created_at=datetime.fromtimestamp(int(escrow.get("createdAt", 0))), - final_results_url=escrow.get("finalResultsUrl", None), - intermediate_results_url=escrow.get("intermediateResultsUrl", None), - manifest_hash=escrow.get("manifestHash", None), - manifest=escrow.get("manifest", None), - recording_oracle=escrow.get("recordingOracle", None), - reputation_oracle=escrow.get("reputationOracle", None), - exchange_oracle=escrow.get("exchangeOracle", None), + id=escrow.get("id"), + address=escrow.get("address"), + amount_paid=escrow.get("amountPaid"), + balance=escrow.get("balance"), + count=escrow.get("count"), + factory_address=escrow.get("factoryAddress"), + launcher=escrow.get("launcher"), + job_requester_id=escrow.get("jobRequesterId"), + status=escrow.get("status"), + token=escrow.get("token"), + total_funded_amount=escrow.get("totalFundedAmount"), + created_at=escrow.get("createdAt"), + final_results_url=escrow.get("finalResultsUrl"), + final_results_hash=escrow.get("finalResultsHash"), + intermediate_results_url=escrow.get("intermediateResultsUrl"), + intermediate_results_hash=escrow.get("intermediateResultsHash"), + manifest_hash=escrow.get("manifestHash"), + manifest=escrow.get("manifest"), + recording_oracle=escrow.get("recordingOracle"), + reputation_oracle=escrow.get("reputationOracle"), + exchange_oracle=escrow.get("exchangeOracle"), + recording_oracle_fee=escrow.get("recordingOracleFee"), + reputation_oracle_fee=escrow.get("reputationOracleFee"), + exchange_oracle_fee=escrow.get("exchangeOracleFee"), ) for escrow in escrows_raw ] @@ -321,24 +387,30 @@ def get_escrow( return EscrowData( chain_id=chain_id, - id=escrow.get("id", ""), - address=escrow.get("address", ""), - amount_paid=int(escrow.get("amountPaid", 0)), - balance=int(escrow.get("balance", 0)), - count=int(escrow.get("count", 0)), - factory_address=escrow.get("factoryAddress", ""), - launcher=escrow.get("launcher", ""), - status=escrow.get("status", ""), - token=escrow.get("token", ""), - total_funded_amount=int(escrow.get("totalFundedAmount", 0)), - created_at=datetime.fromtimestamp(int(escrow.get("createdAt", 0))), - final_results_url=escrow.get("finalResultsUrl", None), - intermediate_results_url=escrow.get("intermediateResultsUrl", None), - manifest_hash=escrow.get("manifestHash", None), - manifest=escrow.get("manifest", None), - recording_oracle=escrow.get("recordingOracle", None), - reputation_oracle=escrow.get("reputationOracle", None), - exchange_oracle=escrow.get("exchangeOracle", None), + id=escrow.get("id"), + address=escrow.get("address"), + amount_paid=escrow.get("amountPaid"), + balance=escrow.get("balance"), + count=escrow.get("count"), + factory_address=escrow.get("factoryAddress"), + launcher=escrow.get("launcher"), + job_requester_id=escrow.get("jobRequesterId"), + status=escrow.get("status"), + token=escrow.get("token"), + total_funded_amount=escrow.get("totalFundedAmount"), + created_at=escrow.get("createdAt"), + final_results_url=escrow.get("finalResultsUrl"), + final_results_hash=escrow.get("finalResultsHash"), + intermediate_results_url=escrow.get("intermediateResultsUrl"), + intermediate_results_hash=escrow.get("intermediateResultsHash"), + manifest_hash=escrow.get("manifestHash"), + manifest=escrow.get("manifest"), + recording_oracle=escrow.get("recordingOracle"), + reputation_oracle=escrow.get("reputationOracle"), + exchange_oracle=escrow.get("exchangeOracle"), + recording_oracle_fee=escrow.get("recordingOracleFee"), + reputation_oracle_fee=escrow.get("reputationOracleFee"), + exchange_oracle_fee=escrow.get("exchangeOracleFee"), ) @staticmethod @@ -389,7 +461,7 @@ def get_status_events(filter: StatusEventFilter) -> List[StatusEvent]: events_with_chain_id = [ StatusEvent( - timestamp=event["timestamp"], + timestamp=int(event["timestamp"]), escrow_address=event["escrowAddress"], status=event["status"], chain_id=filter.chain_id, @@ -453,10 +525,141 @@ def get_payouts(filter: PayoutFilter) -> List[Payout]: id=payout["id"], escrow_address=payout["escrowAddress"], recipient=payout["recipient"], - amount=int(payout["amount"]), - created_at=int(payout["createdAt"]), + amount=payout["amount"], + created_at=payout["createdAt"], ) for payout in payouts_raw ] return payouts + + @staticmethod + def get_cancellation_refunds( + filter: CancellationRefundFilter, + ) -> List[CancellationRefund]: + """ + Fetch cancellation refunds from the subgraph based on the provided filter. + + :param filter: Object containing all the necessary parameters to filter cancellation refunds. + + :return List[CancellationRefund]: List of cancellation refunds matching the query parameters. + + :raise EscrowClientError: If an unsupported chain ID or invalid addresses are provided. + """ + from human_protocol_sdk.gql.cancel import get_cancellation_refunds_query + + if filter.escrow_address and not Web3.is_address(filter.escrow_address): + raise EscrowClientError("Invalid escrow address") + + if filter.receiver and not Web3.is_address(filter.receiver): + raise EscrowClientError("Invalid receiver address") + + network = NETWORKS.get(filter.chain_id) + if not network: + raise EscrowClientError("Unsupported Chain ID") + + data = get_data_from_subgraph( + network, + get_cancellation_refunds_query(filter), + { + "escrowAddress": ( + filter.escrow_address.lower() if filter.escrow_address else None + ), + "receiver": filter.receiver.lower() if filter.receiver else None, + "from": int(filter.date_from.timestamp()) if filter.date_from else None, + "to": int(filter.date_to.timestamp()) if filter.date_to else None, + "first": min(filter.first, 1000), + "skip": filter.skip, + "orderDirection": filter.order_direction.value, + }, + ) + + if ( + not data + or "data" not in data + or "cancellationRefundEvents" not in data["data"] + or not data["data"]["cancellationRefundEvents"] + ): + return [] + + refunds_raw = data["data"]["cancellationRefundEvents"] + + refunds = [ + CancellationRefund( + id=refund["id"], + escrow_address=refund["escrowAddress"], + receiver=refund["receiver"], + amount=refund["amount"], + block=refund["block"], + timestamp=refund["timestamp"], + tx_hash=refund["txHash"], + ) + for refund in refunds_raw + ] + + return refunds + + @staticmethod + def get_cancellation_refund( + chain_id: ChainId, escrow_address: str + ) -> CancellationRefund: + """ + Returns the cancellation refund for a given escrow address. + + :param chain_id: Network in which the escrow has been deployed + :param escrow_address: Address of the escrow + + :return: CancellationRefund data or None + + :raise EscrowClientError: If an unsupported chain ID or invalid address is provided. + + :example: + .. code-block:: python + + from human_protocol_sdk.constants import ChainId + from human_protocol_sdk.escrow import EscrowUtils + + refund = EscrowUtils.get_cancellation_refund( + ChainId.POLYGON_AMOY, + "0x1234567890123456789012345678901234567890" + ) + """ + from human_protocol_sdk.gql.cancel import ( + get_cancellation_refund_by_escrow_query, + ) + + if not Web3.is_address(escrow_address): + raise EscrowClientError("Invalid escrow address") + + network = NETWORKS.get(chain_id) + if not network: + raise EscrowClientError("Unsupported Chain ID") + + data = get_data_from_subgraph( + network, + get_cancellation_refund_by_escrow_query(), + { + "escrowAddress": escrow_address.lower(), + }, + ) + + if ( + not data + or "data" not in data + or "cancellationRefundEvents" not in data["data"] + or not data["data"]["cancellationRefundEvents"] + or len(data["data"]["cancellationRefundEvents"]) == 0 + ): + return None + + refund = data["data"]["cancellationRefundEvents"][0] + + return CancellationRefund( + id=refund["id"], + escrow_address=refund["escrowAddress"], + receiver=refund["receiver"], + amount=refund["amount"], + block=refund["block"], + timestamp=refund["timestamp"], + tx_hash=refund["txHash"], + ) diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/filter.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/filter.py index c4f2d2bee6..da3f6b9bff 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/filter.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/filter.py @@ -356,3 +356,82 @@ def __init__( self.order_direction = order_direction self.first = min(max(first, 1), 1000) self.skip = max(skip, 0) + + +class StakersFilter: + def __init__( + self, + chain_id: ChainId, + min_staked_amount: Optional[str] = None, + max_staked_amount: Optional[str] = None, + min_locked_amount: Optional[str] = None, + max_locked_amount: Optional[str] = None, + min_withdrawn_amount: Optional[str] = None, + max_withdrawn_amount: Optional[str] = None, + min_slashed_amount: Optional[str] = None, + max_slashed_amount: Optional[str] = None, + order_by: Optional[str] = "lastDepositTimestamp", + order_direction: OrderDirection = OrderDirection.DESC, + first: Optional[int] = 10, + skip: Optional[int] = 0, + ): + self.chain_id = chain_id + self.min_staked_amount = min_staked_amount + self.max_staked_amount = max_staked_amount + self.min_locked_amount = min_locked_amount + self.max_locked_amount = max_locked_amount + self.min_withdrawn_amount = min_withdrawn_amount + self.max_withdrawn_amount = max_withdrawn_amount + self.min_slashed_amount = min_slashed_amount + self.max_slashed_amount = max_slashed_amount + self.order_by = order_by + self.order_direction = order_direction + self.first = first + self.skip = skip + + +class CancellationRefundFilter: + """ + A class used to filter cancellation refunds. + """ + + def __init__( + self, + chain_id: ChainId, + escrow_address: str = None, + receiver: str = None, + date_from: datetime = None, + date_to: datetime = None, + first: int = 10, + skip: int = 0, + order_direction: OrderDirection = OrderDirection.DESC, + ): + """ + Initializes a CancellationRefundFilter instance. + :param chain_id: Chain ID to request data + :param escrow_address: Address of the escrow to filter by + :param receiver: Address of the receiver to filter by + :param date_from: Start date for filtering + :param date_to: End date for filtering + :param first: Number of items per page + :param skip: Number of items to skip (for pagination) + :param order_direction: Order direction of results, "asc" or "desc" + """ + if chain_id.value not in set(chain_id.value for chain_id in ChainId): + raise FilterError(f"Invalid ChainId") + if escrow_address and not Web3.is_address(escrow_address): + raise FilterError(f"Invalid escrow address: {escrow_address}") + if receiver and not Web3.is_address(receiver): + raise FilterError(f"Invalid receiver address: {receiver}") + if date_from and date_to and date_from > date_to: + raise FilterError( + f"Invalid dates: {date_from} must be earlier than {date_to}" + ) + self.chain_id = chain_id + self.escrow_address = escrow_address + self.receiver = receiver + self.date_from = date_from + self.date_to = date_to + self.first = first + self.skip = skip + self.order_direction = order_direction diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/cancel.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/cancel.py new file mode 100644 index 0000000000..6d5ddf36db --- /dev/null +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/cancel.py @@ -0,0 +1,75 @@ +cancellation_refund_fragment = """ +fragment CancellationRefundFields on CancellationRefundEvent { + id + escrowAddress + receiver + amount + block + timestamp + txHash +} +""" + + +def get_cancellation_refunds_query(filter): + return """ +query GetCancellationRefundEvents( + $escrowAddress: String + $receiver: String + $from: Int + $to: Int + $orderDirection: String + $first: Int + $skip: Int +) {{ + cancellationRefundEvents( + where: {{ + {escrow_address_clause} + {receiver_clause} + {from_clause} + {to_clause} + }} + orderBy: timestamp + orderDirection: $orderDirection + first: $first + skip: $skip + ) {{ + ...CancellationRefundFields + }} +}} +{cancellation_refund_fragment} +""".format( + cancellation_refund_fragment=cancellation_refund_fragment, + escrow_address_clause=( + "escrowAddress: $escrowAddress" + if getattr(filter, "escrow_address", None) + else "" + ), + receiver_clause=( + "receiver: $receiver" if getattr(filter, "receiver", None) else "" + ), + from_clause=( + "timestamp_gte: $from" if getattr(filter, "date_from", None) else "" + ), + to_clause="timestamp_lte: $to" if getattr(filter, "date_to", None) else "", + ) + + +def get_cancellation_refund_by_escrow_query(): + return """ +query GetCancellationRefundEventByEscrow( + $escrowAddress: String! +) {{ + cancellationRefundEvents( + where: {{ escrowAddress: $escrowAddress }} + orderBy: timestamp + orderDirection: desc + first: 1 + ) {{ + ...CancellationRefundFields + }} +}} +{cancellation_refund_fragment} +""".format( + cancellation_refund_fragment=cancellation_refund_fragment + ) diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/escrow.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/escrow.py index 5fdff656d8..38a0ca8919 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/escrow.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/escrow.py @@ -9,8 +9,10 @@ count factoryAddress finalResultsUrl + finalResultsHash id - intermediateResultsUrl + intermediateResultsUrl + intermediateResultsHash launcher jobRequesterId manifestHash @@ -18,6 +20,9 @@ recordingOracle reputationOracle exchangeOracle + recordingOracleFee + reputationOracleFee + exchangeOracleFee status token totalFundedAmount diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/operator.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/operator.py index dc5bb549c2..c51544879a 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/operator.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/operator.py @@ -6,12 +6,6 @@ fragment OperatorFields on Operator { id address - amountStaked - amountLocked - lockedUntilTimestamp - amountWithdrawn - amountSlashed - reward amountJobsProcessed role fee @@ -27,6 +21,14 @@ } name category + staker { + stakedAmount + lockedAmount + withdrawnAmount + slashedAmount + lockedUntilTimestamp + lastDepositTimestamp + } } """ @@ -34,7 +36,7 @@ def get_operators_query(filter: OperatorFilter): return """ query GetOperators( - $minAmountStaked: Int, + $minStakedAmount: Int, $roles: [String!] $orderBy: String $orderDirection: String @@ -43,8 +45,8 @@ def get_operators_query(filter: OperatorFilter): ) {{ operators( where: {{ - {amount_staked_clause} - {roles_clause} + {min_staked_amount_clause} + {roles_clause} }}, orderBy: $orderBy orderDirection: $orderDirection @@ -57,8 +59,10 @@ def get_operators_query(filter: OperatorFilter): {operator_fragment} """.format( operator_fragment=operator_fragment, - amount_staked_clause=( - "amountStaked_gte: $minAmountStaked" if filter.min_amount_staked else "" + min_staked_amount_clause=( + "staker_: { stakedAmount_gte: $minStakedAmount }" + if filter.min_staked_amount is not None + else "" ), roles_clause="role_in: $roles" if filter.roles else "", ) diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/staking.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/staking.py new file mode 100644 index 0000000000..1ab6cd7232 --- /dev/null +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/gql/staking.py @@ -0,0 +1,75 @@ +from human_protocol_sdk.filter import StakersFilter + +staker_fragment = """ +fragment StakerFields on Staker { + id + address + stakedAmount + lockedAmount + withdrawnAmount + slashedAmount + lockedUntilTimestamp + lastDepositTimestamp +} +""" + + +def get_stakers_query(filter: StakersFilter) -> str: + where_fields = [] + if filter.min_staked_amount: + where_fields.append("stakedAmount_gte: $minStakedAmount") + if filter.max_staked_amount: + where_fields.append("stakedAmount_lte: $maxStakedAmount") + if filter.min_locked_amount: + where_fields.append("lockedAmount_gte: $minLockedAmount") + if filter.max_locked_amount: + where_fields.append("lockedAmount_lte: $maxLockedAmount") + if filter.min_withdrawn_amount: + where_fields.append("withdrawnAmount_gte: $minWithdrawnAmount") + if filter.max_withdrawn_amount: + where_fields.append("withdrawnAmount_lte: $maxWithdrawnAmount") + if filter.min_slashed_amount: + where_fields.append("slashedAmount_gte: $minSlashedAmount") + if filter.max_slashed_amount: + where_fields.append("slashedAmount_lte: $maxSlashedAmount") + + where_clause = f"where: {{ {', '.join(where_fields)} }}" if where_fields else "" + + return f""" +query GetStakers( + $minStakedAmount: BigInt + $maxStakedAmount: BigInt + $minLockedAmount: BigInt + $maxLockedAmount: BigInt + $minWithdrawnAmount: BigInt + $maxWithdrawnAmount: BigInt + $minSlashedAmount: BigInt + $maxSlashedAmount: BigInt + $orderBy: Staker_orderBy + $orderDirection: OrderDirection + $first: Int + $skip: Int +) {{ + stakers( + {where_clause} + orderBy: $orderBy + orderDirection: $orderDirection + first: $first + skip: $skip + ) {{ + ...StakerFields + }} +}} +{staker_fragment} +""" + + +def get_staker_query() -> str: + return f""" +query GetStaker($id: String!) {{ + staker(id: $id) {{ + ...StakerFields + }} +}} +{staker_fragment} +""" diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/kvstore/kvstore_client.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/kvstore/kvstore_client.py index 8f2f299704..8551a35082 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/kvstore/kvstore_client.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/kvstore/kvstore_client.py @@ -282,16 +282,21 @@ def get_w3_with_priv_key(priv_key: str): handle_error(e, KVStoreClientError) def get(self, address: str, key: str) -> str: - """Gets the value of a key-value pair in the contract. + """ + Gets the value of a key-value pair in the contract. :param address: The Ethereum address associated with the key-value pair :param key: The key of the key-value pair to get + :return: The value of the key-value pair if it exists + :example: .. code-block:: python + from eth_typing import URI from web3 import Web3 from web3.providers.auto import load_provider_from_uri from human_protocol_sdk.kvstore import KVStoreClient + w3 = Web3(load_provider_from_uri(URI("http://localhost:8545"))) kvstore_client = KVStoreClient(w3) role = kvstore_client.get('0x62dD51230A30401C455c8398d06F85e4EaB6309f', 'Role') diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/operator/operator_utils.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/operator/operator_utils.py index 05f4f453a9..9bed4d8fc6 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/operator/operator_utils.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/operator/operator_utils.py @@ -21,7 +21,7 @@ import logging import os -from typing import List, Optional +from typing import List, Optional, Union from human_protocol_sdk.constants import NETWORKS, ChainId, OrderDirection from human_protocol_sdk.gql.reward import get_reward_added_events_query @@ -48,7 +48,7 @@ def __init__( self, chain_id: ChainId, roles: Optional[str] = [], - min_amount_staked: int = None, + min_staked_amount: int = None, order_by: Optional[str] = None, order_direction: OrderDirection = OrderDirection.DESC, first: int = 10, @@ -59,7 +59,7 @@ def __init__( :param chain_id: Chain ID to request data :param roles: Roles to filter by - :param min_amount_staked: Minimum amount staked to filter by + :param min_staked_amount: Minimum amount staked to filter by :param order_by: Property to order by, e.g., "role" :param order_direction: Order direction of results, "asc" or "desc" :param first: Number of items per page @@ -76,7 +76,7 @@ def __init__( self.chain_id = chain_id self.roles = roles - self.min_amount_staked = min_amount_staked + self.min_staked_amount = min_staked_amount self.order_by = order_by self.order_direction = order_direction self.first = min(max(first, 1), 1000) @@ -89,23 +89,22 @@ def __init__( chain_id: ChainId, id: str, address: str, - amount_staked: int, - amount_locked: int, - locked_until_timestamp: int, - amount_withdrawn: int, - amount_slashed: int, - reward: int, - amount_jobs_processed: int, + amount_jobs_processed: str, + reputation_networks: Union[List[str], str], + staked_amount: Optional[str] = None, + locked_amount: Optional[str] = None, + locked_until_timestamp: Optional[str] = None, + withdrawn_amount: Optional[str] = None, + slashed_amount: Optional[str] = None, role: Optional[str] = None, - fee: Optional[int] = None, + fee: Optional[str] = None, public_key: Optional[str] = None, webhook_url: Optional[str] = None, website: Optional[str] = None, url: Optional[str] = None, - job_types: Optional[List[str]] = None, + job_types: Optional[Union[List[str], str]] = None, registration_needed: Optional[bool] = None, registration_instructions: Optional[str] = None, - reputation_networks: Optional[List[str]] = None, name: Optional[str] = None, category: Optional[str] = None, ): @@ -115,12 +114,11 @@ def __init__( :param chain_id: Chain Identifier :param id: Identifier :param address: Address - :param amount_staked: Amount staked - :param amount_locked: Amount locked + :param staked_amount: Amount staked + :param locked_amount: Amount locked :param locked_until_timestamp: Locked until timestamp - :param amount_withdrawn: Amount withdrawn - :param amount_slashed: Amount slashed - :param reward: Reward + :param withdrawn_amount: Amount withdrawn + :param slashed_amount: Amount slashed :param amount_jobs_processed: Amount of jobs launched :param role: Role :param fee: Fee @@ -139,25 +137,42 @@ def __init__( self.chain_id = chain_id self.id = id self.address = address - self.amount_staked = amount_staked - self.amount_locked = amount_locked - self.locked_until_timestamp = locked_until_timestamp - self.amount_withdrawn = amount_withdrawn - self.amount_slashed = amount_slashed - self.reward = reward - self.amount_jobs_processed = amount_jobs_processed + self.staked_amount = int(staked_amount) if staked_amount is not None else None + self.locked_amount = int(locked_amount) if locked_amount is not None else None + self.locked_until_timestamp = ( + int(locked_until_timestamp) * 1000 + if locked_until_timestamp is not None + else None + ) + self.withdrawn_amount = ( + int(withdrawn_amount) if withdrawn_amount is not None else None + ) + self.slashed_amount = ( + int(slashed_amount) if slashed_amount is not None else None + ) + self.amount_jobs_processed = int(amount_jobs_processed) self.role = role - self.fee = fee + self.fee = int(fee) if fee is not None else None self.public_key = public_key self.webhook_url = webhook_url self.website = website self.url = url - self.job_types = job_types self.registration_needed = registration_needed self.registration_instructions = registration_instructions - self.reputation_networks = reputation_networks + vals = reputation_networks if isinstance(reputation_networks, list) else [] + self.reputation_networks = [ + (rn if isinstance(rn, str) else rn.get("address")) + for rn in vals + if (isinstance(rn, str) and rn) + or (isinstance(rn, dict) and rn.get("address")) + ] self.name = name self.category = category + self.job_types = ( + job_types.split(",") + if isinstance(job_types, str) + else (job_types if isinstance(job_types, list) else []) + ) class RewardData: @@ -215,7 +230,7 @@ def get_operators(filter: OperatorFilter) -> List[OperatorData]: network, query=get_operators_query(filter), params={ - "minAmountStaked": filter.min_amount_staked, + "minStakedAmount": filter.min_staked_amount, "roles": filter.roles, "orderBy": filter.order_by, "orderDirection": filter.order_direction.value, @@ -235,55 +250,30 @@ def get_operators(filter: OperatorFilter) -> List[OperatorData]: operators_raw = operators_data["data"]["operators"] for operator in operators_raw: - job_types = [] - reputation_networks = [] - - if isinstance(operator.get("jobTypes"), str): - job_types = operator["jobTypes"].split(",") - elif isinstance(operator.get("jobTypes"), list): - job_types = operator["jobTypes"] - - if operator.get("reputationNetworks") and isinstance( - operator.get("reputationNetworks"), list - ): - reputation_networks = [ - network["address"] for network in operator["reputationNetworks"] - ] - + staker = operator.get("staker") or {} operators.append( OperatorData( chain_id=filter.chain_id, - id=operator.get("id", ""), - address=operator.get("address", ""), - amount_staked=int(operator.get("amountStaked", 0)), - amount_locked=int(operator.get("amountLocked", 0)), - locked_until_timestamp=int(operator.get("lockedUntilTimestamp", 0)), - amount_withdrawn=int(operator.get("amountWithdrawn", 0)), - amount_slashed=int(operator.get("amountSlashed", 0)), - reward=int(operator.get("reward", 0)), - amount_jobs_processed=int(operator.get("amountJobsProcessed", 0)), - role=operator.get("role", None), - fee=int(operator.get("fee")) if operator.get("fee", None) else None, - public_key=operator.get("publicKey", None), - webhook_url=operator.get("webhookUrl", None), - website=operator.get("website", None), - url=operator.get("url", None), - job_types=( - operator.get("jobTypes").split(",") - if isinstance(operator.get("jobTypes"), str) - else ( - operator.get("jobTypes", []) - if isinstance(operator.get("jobTypes"), list) - else [] - ) - ), - registration_needed=operator.get("registrationNeeded", None), - registration_instructions=operator.get( - "registrationInstructions", None - ), - reputation_networks=reputation_networks, - name=operator.get("name", None), - category=operator.get("category", None), + id=operator.get("id"), + address=operator.get("address"), + staked_amount=staker.get("stakedAmount"), + locked_amount=staker.get("lockedAmount"), + locked_until_timestamp=staker.get("lockedUntilTimestamp"), + withdrawn_amount=staker.get("withdrawnAmount"), + slashed_amount=staker.get("slashedAmount"), + amount_jobs_processed=operator.get("amountJobsProcessed"), + role=operator.get("role"), + fee=operator.get("fee"), + public_key=operator.get("publicKey"), + webhook_url=operator.get("webhookUrl"), + website=operator.get("website"), + url=operator.get("url"), + job_types=operator.get("jobTypes"), + registration_needed=operator.get("registrationNeeded"), + registration_instructions=operator.get("registrationInstructions"), + reputation_networks=operator.get("reputationNetworks"), + name=operator.get("name"), + category=operator.get("category"), ) ) @@ -339,53 +329,29 @@ def get_operator( return None operator = operator_data["data"]["operator"] - - job_types = [] - reputation_networks = [] - - if isinstance(operator.get("jobTypes"), str): - job_types = operator["jobTypes"].split(",") - elif isinstance(operator.get("jobTypes"), list): - job_types = operator["jobTypes"] - - if operator.get("reputationNetworks") and isinstance( - operator.get("reputationNetworks"), list - ): - reputation_networks = [ - network["address"] for network in operator["reputationNetworks"] - ] - + staker = operator.get("staker") or {} return OperatorData( chain_id=chain_id, - id=operator.get("id", ""), - address=operator.get("address", ""), - amount_staked=int(operator.get("amountStaked", 0)), - amount_locked=int(operator.get("amountLocked", 0)), - locked_until_timestamp=int(operator.get("lockedUntilTimestamp", 0)), - amount_withdrawn=int(operator.get("amountWithdrawn", 0)), - amount_slashed=int(operator.get("amountSlashed", 0)), - reward=int(operator.get("reward", 0)), - amount_jobs_processed=int(operator.get("amountJobsProcessed", 0)), - role=operator.get("role", None), - fee=int(operator.get("fee")) if operator.get("fee", None) else None, - public_key=operator.get("publicKey", None), - webhook_url=operator.get("webhookUrl", None), - website=operator.get("website", None), - url=operator.get("url", None), - job_types=( - operator.get("jobTypes").split(",") - if isinstance(operator.get("jobTypes"), str) - else ( - operator.get("jobTypes", []) - if isinstance(operator.get("jobTypes"), list) - else [] - ) - ), - registration_needed=operator.get("registrationNeeded", None), - registration_instructions=operator.get("registrationInstructions", None), - reputation_networks=reputation_networks, - name=operator.get("name", None), - category=operator.get("category", None), + id=operator.get("id"), + address=operator.get("address"), + staked_amount=staker.get("stakedAmount"), + locked_amount=staker.get("lockedAmount"), + locked_until_timestamp=staker.get("lockedUntilTimestamp"), + withdrawn_amount=staker.get("withdrawnAmount"), + slashed_amount=staker.get("slashedAmount"), + amount_jobs_processed=operator.get("amountJobsProcessed"), + role=operator.get("role"), + fee=operator.get("fee"), + public_key=operator.get("publicKey"), + webhook_url=operator.get("webhookUrl"), + website=operator.get("website"), + url=operator.get("url"), + job_types=operator.get("jobTypes"), + registration_needed=operator.get("registrationNeeded"), + registration_instructions=operator.get("registrationInstructions"), + reputation_networks=operator.get("reputationNetworks"), + name=operator.get("name"), + category=operator.get("category"), ) @staticmethod @@ -440,48 +406,36 @@ def get_reputation_network_operators( return [] operators = reputation_network_data["data"]["reputationNetwork"]["operators"] - return [ - OperatorData( - chain_id=chain_id, - id=operator.get("id", ""), - address=operator.get("address", ""), - amount_staked=int(operator.get("amountStaked", 0)), - amount_locked=int(operator.get("amountLocked", 0)), - locked_until_timestamp=int(operator.get("lockedUntilTimestamp", 0)), - amount_withdrawn=int(operator.get("amountWithdrawn", 0)), - amount_slashed=int(operator.get("amountSlashed", 0)), - reward=int(operator.get("reward", 0)), - amount_jobs_processed=int(operator.get("amountJobsProcessed", 0)), - role=operator.get("role", None), - fee=int(operator.get("fee")) if operator.get("fee", None) else None, - public_key=operator.get("publicKey", None), - webhook_url=operator.get("webhookUrl", None), - website=operator.get("website", None), - url=operator.get("url", None), - job_types=( - operator.get("jobTypes").split(",") - if isinstance(operator.get("jobTypes"), str) - else ( - operator.get("jobTypes", []) - if isinstance(operator.get("jobTypes"), list) - else [] - ) - ), - registration_needed=operator.get("registrationNeeded", None), - registration_instructions=operator.get( - "registrationInstructions", None - ), - reputation_networks=( - [network["address"] for network in operator["reputationNetworks"]] - if operator.get("reputationNetworks") - and isinstance(operator.get("reputationNetworks"), list) - else [] - ), - name=operator.get("name", None), - category=operator.get("category", None), + result: List[OperatorData] = [] + for operator in operators: + staker = operator.get("staker") or {} + result.append( + OperatorData( + chain_id=chain_id, + id=operator.get("id"), + address=operator.get("address"), + staked_amount=staker.get("stakedAmount"), + locked_amount=staker.get("lockedAmount"), + locked_until_timestamp=staker.get("lockedUntilTimestamp"), + withdrawn_amount=staker.get("withdrawnAmount"), + slashed_amount=staker.get("slashedAmount"), + amount_jobs_processed=operator.get("amountJobsProcessed"), + role=operator.get("role"), + fee=operator.get("fee"), + public_key=operator.get("publicKey"), + webhook_url=operator.get("webhookUrl"), + website=operator.get("website"), + url=operator.get("url"), + job_types=operator.get("jobTypes"), + registration_needed=operator.get("registrationNeeded"), + registration_instructions=operator.get("registrationInstructions"), + reputation_networks=operator.get("reputationNetworks"), + name=operator.get("name"), + category=operator.get("category"), + ) ) - for operator in operators - ] + + return result @staticmethod def get_rewards_info(chain_id: ChainId, slasher: str) -> List[RewardData]: @@ -531,8 +485,8 @@ def get_rewards_info(chain_id: ChainId, slasher: str) -> List[RewardData]: return [ RewardData( - escrow_address=reward_added_event.get("escrowAddress", ""), - amount=int(reward_added_event.get("amount", 0)), + escrow_address=reward_added_event.get("escrowAddress"), + amount=int(reward_added_event.get("amount")), ) for reward_added_event in reward_added_events ] diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/staking/__init__.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/staking/__init__.py index 32cfe61efb..33c5419b5d 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/staking/__init__.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/staking/__init__.py @@ -4,3 +4,5 @@ """ from .staking_client import StakingClient, StakingClientError + +from .staking_utils import StakerData, StakingUtils, StakingUtilsError diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/staking/staking_client.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/staking/staking_client.py index 136266a257..bd1db4d302 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/staking/staking_client.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/staking/staking_client.py @@ -54,7 +54,6 @@ def get_w3_with_priv_key(priv_key: str): import logging import os -from decimal import Decimal from typing import Optional import web3 @@ -133,9 +132,7 @@ def __init__(self, w3: Web3): ) @requires_signer - def approve_stake( - self, amount: Decimal, tx_options: Optional[TxParams] = None - ) -> None: + def approve_stake(self, amount: int, tx_options: Optional[TxParams] = None) -> None: """Approves HMT token for Staking. :param amount: Amount to approve @@ -185,7 +182,7 @@ def get_w3_with_priv_key(priv_key: str): handle_error(e, StakingClientError) @requires_signer - def stake(self, amount: Decimal, tx_options: Optional[TxParams] = None) -> None: + def stake(self, amount: int, tx_options: Optional[TxParams] = None) -> None: """Stakes HMT token. :param amount: Amount to stake @@ -238,7 +235,7 @@ def get_w3_with_priv_key(priv_key: str): handle_error(e, StakingClientError) @requires_signer - def unstake(self, amount: Decimal, tx_options: Optional[TxParams] = None) -> None: + def unstake(self, amount: int, tx_options: Optional[TxParams] = None) -> None: """Unstakes HMT token. :param amount: Amount to unstake @@ -282,7 +279,7 @@ def get_w3_with_priv_key(priv_key: str): raise StakingClientError("Amount to unstake must be greater than 0") try: tx_hash = self.staking_contract.functions.unstake(amount).transact( - tx_options or {} + apply_tx_defaults(self.w3, tx_options) ) self.w3.eth.wait_for_transaction_receipt(tx_hash) except Exception as e: @@ -328,7 +325,7 @@ def get_w3_with_priv_key(priv_key: str): try: tx_hash = self.staking_contract.functions.withdraw().transact( - tx_options or {} + apply_tx_defaults(self.w3, tx_options) ) self.w3.eth.wait_for_transaction_receipt(tx_hash) except Exception as e: @@ -340,7 +337,7 @@ def slash( slasher: str, staker: str, escrow_address: str, - amount: Decimal, + amount: int, tx_options: Optional[TxParams] = None, ) -> None: """Slashes HMT token. @@ -398,7 +395,7 @@ def get_w3_with_priv_key(priv_key: str): try: tx_hash = self.staking_contract.functions.slash( slasher, staker, escrow_address, amount - ).transact(tx_options or {}) + ).transact(apply_tx_defaults(self.w3, tx_options)) self.w3.eth.wait_for_transaction_receipt(tx_hash) except Exception as e: handle_error(e, StakingClientError) diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/staking/staking_utils.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/staking/staking_utils.py new file mode 100644 index 0000000000..2da710d030 --- /dev/null +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/staking/staking_utils.py @@ -0,0 +1,140 @@ +""" +Utility class for staking-related operations. + +Code Example +------------ + +.. code-block:: python + + from human_protocol_sdk.constants import ChainId + from human_protocol_sdk.staking.staking_utils import StakingUtils, StakersFilter + + stakers = StakingUtils.get_stakers( + StakersFilter( + chain_id=ChainId.POLYGON_AMOY, + min_staked_amount="1000000000000000000", + max_locked_amount="5000000000000000000", + order_by="withdrawnAmount", + order_direction="asc", + first=5, + skip=0, + ) + ) + print("Filtered stakers:", stakers) + +Module +------ + +""" + +from typing import List, Optional +from human_protocol_sdk.constants import NETWORKS, ChainId +from human_protocol_sdk.filter import StakersFilter +from human_protocol_sdk.utils import get_data_from_subgraph +from human_protocol_sdk.gql.staking import get_staker_query, get_stakers_query + + +class StakerData: + def __init__( + self, + id: str, + address: str, + staked_amount: str, + locked_amount: str, + withdrawn_amount: str, + slashed_amount: str, + locked_until_timestamp: str, + last_deposit_timestamp: str, + ): + self.id = id + self.address = address + self.staked_amount = int(staked_amount) + self.locked_amount = int(locked_amount) + self.withdrawn_amount = int(withdrawn_amount) + self.slashed_amount = int(slashed_amount) + self.locked_until_timestamp = int(locked_until_timestamp) * 1000 + self.last_deposit_timestamp = int(last_deposit_timestamp) * 1000 + + +class StakingUtilsError(Exception): + pass + + +class StakingUtils: + @staticmethod + def get_staker(chain_id: ChainId, address: str) -> Optional[StakerData]: + network = NETWORKS.get(chain_id) + if not network: + raise StakingUtilsError("Unsupported Chain ID") + + data = get_data_from_subgraph( + network, + query=get_staker_query(), + params={"id": address.lower()}, + ) + if ( + not data + or "data" not in data + or "staker" not in data["data"] + or not data["data"]["staker"] + ): + return None + + staker = data["data"]["staker"] + return StakerData( + id=staker.get("id"), + address=staker.get("address"), + staked_amount=staker.get("stakedAmount"), + locked_amount=staker.get("lockedAmount"), + withdrawn_amount=staker.get("withdrawnAmount"), + slashed_amount=staker.get("slashedAmount"), + locked_until_timestamp=staker.get("lockedUntilTimestamp"), + last_deposit_timestamp=staker.get("lastDepositTimestamp"), + ) + + @staticmethod + def get_stakers(filter: StakersFilter) -> List[StakerData]: + network_data = NETWORKS.get(filter.chain_id) + if not network_data: + raise StakingUtilsError("Unsupported Chain ID") + + data = get_data_from_subgraph( + network_data, + query=get_stakers_query(filter), + params={ + "minStakedAmount": filter.min_staked_amount, + "maxStakedAmount": filter.max_staked_amount, + "minLockedAmount": filter.min_locked_amount, + "maxLockedAmount": filter.max_locked_amount, + "minWithdrawnAmount": filter.min_withdrawn_amount, + "maxWithdrawnAmount": filter.max_withdrawn_amount, + "minSlashedAmount": filter.min_slashed_amount, + "maxSlashedAmount": filter.max_slashed_amount, + "orderBy": filter.order_by, + "orderDirection": filter.order_direction.value, + "first": filter.first, + "skip": filter.skip, + }, + ) + if ( + not data + or "data" not in data + or "stakers" not in data["data"] + or not data["data"]["stakers"] + ): + return [] + + stakers_raw = data["data"]["stakers"] + return [ + StakerData( + id=staker.get("id") or "", + address=staker.get("address") or "", + staked_amount=staker.get("stakedAmount"), + locked_amount=staker.get("lockedAmount"), + withdrawn_amount=staker.get("withdrawnAmount"), + slashed_amount=staker.get("slashedAmount"), + locked_until_timestamp=staker.get("lockedUntilTimestamp"), + last_deposit_timestamp=staker.get("lastDepositTimestamp"), + ) + for staker in stakers_raw + ] diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/transaction/transaction_utils.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/transaction/transaction_utils.py index 54b561fc3c..1b88aa89da 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/transaction/transaction_utils.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/transaction/transaction_utils.py @@ -38,11 +38,11 @@ def __init__( self, from_address: str, to_address: str, - value: str, + value: int, method: str, - receiver: str, - escrow: str, - token: str, + receiver: Optional[str], + escrow: Optional[str], + token: Optional[str], ): self.from_address = from_address self.to_address = to_address @@ -62,11 +62,11 @@ def __init__( from_address: str, to_address: str, timestamp: int, - value: str, + value: int, method: str, - receiver: str, - escrow: str, - token: str, + receiver: Optional[str], + escrow: Optional[str], + token: Optional[str], internal_transactions: List[InternalTransaction], ): self.chain_id = chain_id @@ -74,7 +74,7 @@ def __init__( self.tx_hash = tx_hash self.from_address = from_address self.to_address = to_address - self.timestamp = timestamp + self.timestamp = timestamp * 1000 self.value = value self.method = method self.receiver = receiver @@ -141,25 +141,25 @@ def get_transaction(chain_id: ChainId, hash: str) -> Optional[TransactionData]: return TransactionData( chain_id=chain_id, - block=transaction.get("block", 0), - tx_hash=transaction.get("txHash", ""), - from_address=transaction.get("from", ""), - to_address=transaction.get("to", ""), - timestamp=transaction.get("timestamp", 0), - value=transaction.get("value", ""), - method=transaction.get("method", ""), - receiver=transaction.get("receiver", ""), - escrow=transaction.get("escrow", ""), - token=transaction.get("token", ""), + block=int(transaction.get("block")), + tx_hash=transaction.get("txHash"), + from_address=transaction.get("from"), + to_address=transaction.get("to"), + timestamp=int(transaction.get("timestamp")), + value=int(transaction.get("value")), + method=transaction.get("method"), + receiver=transaction.get("receiver"), + escrow=transaction.get("escrow"), + token=transaction.get("token"), internal_transactions=[ InternalTransaction( - from_address=internal_tx.get("from", ""), - to_address=internal_tx.get("to", ""), - value=internal_tx.get("value", ""), - method=internal_tx.get("method", ""), - receiver=internal_tx.get("receiver", ""), - escrow=internal_tx.get("escrow", ""), - token=internal_tx.get("token", ""), + from_address=internal_tx.get("from"), + to_address=internal_tx.get("to"), + value=int(internal_tx.get("value")), + method=internal_tx.get("method"), + receiver=internal_tx.get("receiver"), + escrow=internal_tx.get("escrow"), + token=internal_tx.get("token"), ) for internal_tx in transaction.get("internalTransactions", []) ], @@ -239,25 +239,25 @@ def get_transactions(filter: TransactionFilter) -> List[TransactionData]: [ TransactionData( chain_id=filter.chain_id, - block=transaction.get("block", 0), - tx_hash=transaction.get("txHash", ""), - from_address=transaction.get("from", ""), - to_address=transaction.get("to", ""), - timestamp=transaction.get("timestamp", 0), - value=transaction.get("value", ""), - method=transaction.get("method", ""), - receiver=transaction.get("receiver", ""), - escrow=transaction.get("escrow", ""), - token=transaction.get("token", ""), + block=int(transaction.get("block")), + tx_hash=transaction.get("txHash"), + from_address=transaction.get("from"), + to_address=transaction.get("to"), + timestamp=int(transaction.get("timestamp")), + value=int(transaction.get("value")), + method=transaction.get("method"), + receiver=transaction.get("receiver"), + escrow=transaction.get("escrow"), + token=transaction.get("token"), internal_transactions=[ InternalTransaction( - from_address=internal_tx.get("from", ""), - to_address=internal_tx.get("to", ""), - value=internal_tx.get("value", ""), - method=internal_tx.get("method", ""), - receiver=internal_tx.get("receiver", ""), - escrow=internal_tx.get("escrow", ""), - token=internal_tx.get("token", ""), + from_address=internal_tx.get("from"), + to_address=internal_tx.get("to"), + value=int(internal_tx.get("value")), + method=internal_tx.get("method"), + receiver=internal_tx.get("receiver"), + escrow=internal_tx.get("escrow"), + token=internal_tx.get("token"), ) for internal_tx in transaction.get("internalTransactions", []) ], diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/utils.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/utils.py index 25db19cbf7..c9dd1c7bf5 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/utils.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/utils.py @@ -76,7 +76,7 @@ def get_hmt_balance(wallet_addr, token_addr, w3): :param token_addr: ERC-20 contract :param w3: Web3 instance - :return: Decimal with HMT balance + :return: HMT balance (wei) """ abi = [ diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/worker/worker_utils.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/worker/worker_utils.py index 2364d8537e..c363898ce6 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/worker/worker_utils.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/worker/worker_utils.py @@ -23,8 +23,8 @@ def __init__( self, id: str, address: str, - total_amount_received: int, - payout_count: int, + total_amount_received: str, + payout_count: str, ): """ Initializes a WorkerData instance. @@ -37,8 +37,8 @@ def __init__( self.id = id self.address = address - self.total_amount_received = total_amount_received - self.payout_count = payout_count + self.total_amount_received = int(total_amount_received) + self.payout_count = int(payout_count) class WorkerUtils: @@ -87,10 +87,10 @@ def get_workers(filter: WorkerFilter) -> List[WorkerData]: for worker in workers_raw: workers.append( WorkerData( - id=worker.get("id", ""), - address=worker.get("address", ""), - total_amount_received=int(worker.get("totalHMTAmountReceived", 0)), - payout_count=int(worker.get("payoutCount", 0)), + id=worker.get("id"), + address=worker.get("address"), + total_amount_received=worker.get("totalHMTAmountReceived"), + payout_count=worker.get("payoutCount"), ) ) @@ -133,8 +133,8 @@ def get_worker(chain_id: ChainId, worker_address: str) -> Optional[WorkerData]: worker = worker_data["data"]["worker"] return WorkerData( - id=worker.get("id", ""), - address=worker.get("address", ""), - total_amount_received=int(worker.get("totalHMTAmountReceived", 0)), - payout_count=int(worker.get("payoutCount", 0)), + id=worker.get("id"), + address=worker.get("address"), + total_amount_received=worker.get("totalHMTAmountReceived"), + payout_count=worker.get("payoutCount"), ) diff --git a/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/escrow/test_escrow_client.py b/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/escrow/test_escrow_client.py index 6ef6e43ebe..cd07585a2c 100644 --- a/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/escrow/test_escrow_client.py +++ b/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/escrow/test_escrow_client.py @@ -361,7 +361,6 @@ def test_create_escrow(self): escrow_address = "0x1234567890123456789012345678901234567890" token_address = "0x1234567890123456789012345678901234567890" job_requester_id = "job-requester" - trusted_handlers = [self.w3.eth.default_account] mock_create = MagicMock() mock_create.transact.return_value = "tx_hash" @@ -380,12 +379,10 @@ def test_create_escrow(self): return_value={"logs": [{"address": self.escrow.network["factory_address"]}]} ) - result = self.escrow.create_escrow( - token_address, trusted_handlers, job_requester_id - ) + result = self.escrow.create_escrow(token_address, job_requester_id) self.escrow.factory_contract.functions.createEscrow.assert_called_once_with( - token_address, trusted_handlers, job_requester_id + token_address, job_requester_id ) mock_create.transact.assert_called_once_with({}) self.escrow.w3.eth.wait_for_transaction_receipt.assert_called_once_with( @@ -395,24 +392,12 @@ def test_create_escrow(self): def test_create_escrow_invalid_token(self): token_address = "invalid_address" - trusted_handlers = [self.w3.eth.default_account] job_requester_id = "job-requester" with self.assertRaises(EscrowClientError) as cm: - self.escrow.create_escrow(token_address, trusted_handlers, job_requester_id) + self.escrow.create_escrow(token_address, job_requester_id) self.assertEqual(f"Invalid token address: {token_address}", str(cm.exception)) - def test_create_escrow_invalid_handler(self): - token_address = "0x1234567890123456789012345678901234567890" - trusted_handlers = ["invalid_address"] - job_requester_id = "job-requester" - - with self.assertRaises(EscrowClientError) as cm: - self.escrow.create_escrow(token_address, trusted_handlers, job_requester_id) - self.assertEqual( - f"Invalid handler address: {trusted_handlers[0]}", str(cm.exception) - ) - def test_create_escrow_without_account(self): mock_provider = MagicMock(spec=HTTPProvider) w3 = Web3(mock_provider) @@ -422,12 +407,9 @@ def test_create_escrow_without_account(self): escrowClient = EscrowClient(w3) token_address = "0x1234567890123456789012345678901234567890" - trusted_handlers = ["0x1234567890123456789012345678901234567890"] job_requester_id = "job-requester" with self.assertRaises(RequiresSignerError) as cm: - escrowClient.create_escrow( - token_address, trusted_handlers, job_requester_id - ) + escrowClient.create_escrow(token_address, job_requester_id) self.assertEqual("You must add an account to Web3 instance", str(cm.exception)) def test_create_escrow_with_tx_options(self): @@ -436,7 +418,6 @@ def test_create_escrow_with_tx_options(self): escrow_address = "0x1234567890123456789012345678901234567890" token_address = "0x1234567890123456789012345678901234567890" job_requester_id = "job-requester" - trusted_handlers = [self.w3.eth.default_account] tx_options = {"gas": 50000} mock_create = MagicMock() @@ -456,12 +437,175 @@ def test_create_escrow_with_tx_options(self): return_value={"logs": [{"address": self.escrow.network["factory_address"]}]} ) - result = self.escrow.create_escrow( - token_address, trusted_handlers, job_requester_id, tx_options - ) + result = self.escrow.create_escrow(token_address, job_requester_id, tx_options) self.escrow.factory_contract.functions.createEscrow.assert_called_once_with( - token_address, trusted_handlers, job_requester_id + token_address, job_requester_id + ) + mock_create.transact.assert_called_once_with(tx_options) + self.escrow.w3.eth.wait_for_transaction_receipt.assert_called_once_with( + "tx_hash" + ) + self.assertEqual(result, escrow_address) + + def test_create_fund_and_setup_escrow(self): + escrow_address = "0x1234567890123456789012345678901234567890" + token_address = "0x1234567890123456789012345678901234567890" + job_requester_id = "job-requester" + amount = 1000 + + mock_create = MagicMock() + mock_create.transact.return_value = "tx_hash" + self.escrow.factory_contract.functions.createFundAndSetupEscrow = MagicMock( + return_value=mock_create + ) + + mock_event = MagicMock() + mock_event.args.escrow = escrow_address + mock_events = MagicMock() + mock_events.LaunchedV2().process_log.return_value = mock_event + self.escrow.factory_contract.events = mock_events + self.escrow.network["factory_address"] = ( + "0x1234567890123456789012345678901234567890" + ) + self.escrow.w3.eth.wait_for_transaction_receipt = MagicMock( + return_value={"logs": [{"address": self.escrow.network["factory_address"]}]} + ) + + escrow_config = EscrowConfig( + "0x1234567890123456789012345678901234567890", + "0x1234567890123456789012345678901234567890", + "0x1234567890123456789012345678901234567890", + 10, + 10, + 10, + "https://www.example.com/manifest", + "hashvalue", + ) + + result = self.escrow.create_fund_and_setup_escrow( + token_address, amount, job_requester_id, escrow_config + ) + + self.escrow.factory_contract.functions.createFundAndSetupEscrow.assert_called_once_with( + token_address, + amount, + job_requester_id, + escrow_config.reputation_oracle_address, + escrow_config.recording_oracle_address, + escrow_config.exchange_oracle_address, + escrow_config.reputation_oracle_fee, + escrow_config.recording_oracle_fee, + escrow_config.exchange_oracle_fee, + escrow_config.manifest, + escrow_config.hash, + ) + mock_create.transact.assert_called_once_with({}) + self.escrow.w3.eth.wait_for_transaction_receipt.assert_called_once_with( + "tx_hash" + ) + self.assertEqual(result, escrow_address) + + def test_create_fund_and_setup_escrow_invalid_token(self): + token_address = "invalid_address" + job_requester_id = "job-requester" + amount = 1000 + + escrow_config = EscrowConfig( + "0x1234567890123456789012345678901234567890", + "0x1234567890123456789012345678901234567890", + "0x1234567890123456789012345678901234567890", + 10, + 10, + 10, + "https://www.example.com/manifest", + "hashvalue", + ) + + with self.assertRaises(EscrowClientError) as cm: + self.escrow.create_fund_and_setup_escrow( + token_address, amount, job_requester_id, escrow_config + ) + self.assertEqual(f"Invalid token address: {token_address}", str(cm.exception)) + + def test_create_fund_and_setup_escrow_without_account(self): + mock_provider = MagicMock(spec=HTTPProvider) + w3 = Web3(mock_provider) + mock_chain_id = ChainId.LOCALHOST.value + type(w3.eth).chain_id = PropertyMock(return_value=mock_chain_id) + + escrowClient = EscrowClient(w3) + + token_address = "0x1234567890123456789012345678901234567890" + job_requester_id = "job-requester" + amount = 1000 + escrow_config = EscrowConfig( + "0x1234567890123456789012345678901234567890", + "0x1234567890123456789012345678901234567890", + "0x1234567890123456789012345678901234567890", + 10, + 10, + 10, + "https://www.example.com/manifest", + "hashvalue", + ) + with self.assertRaises(RequiresSignerError) as cm: + escrowClient.create_fund_and_setup_escrow( + token_address, amount, job_requester_id, escrow_config + ) + self.assertEqual("You must add an account to Web3 instance", str(cm.exception)) + + def test_create_fund_and_setup_escrow_with_tx_options(self): + mock_create = MagicMock() + mock_create.transact.return_value = "tx_hash" + self.escrow.factory_contract.functions.createFundAndSetupEscrow = MagicMock( + return_value=mock_create + ) + escrow_address = "0x1234567890123456789012345678901234567890" + token_address = "0x1234567890123456789012345678901234567890" + job_requester_id = "job-requester" + amount = 1000 + tx_options = {"gas": 50000} + + mock_event = MagicMock() + mock_event.args.escrow = escrow_address + mock_events = MagicMock() + mock_events.LaunchedV2().process_log.return_value = mock_event + self.escrow.factory_contract.events = mock_events + self.escrow.network["factory_address"] = ( + "0x1234567890123456789012345678901234567890" + ) + self.escrow.w3.eth.wait_for_transaction_receipt = MagicMock( + return_value={"logs": [{"address": self.escrow.network["factory_address"]}]} + ) + + escrow_config = EscrowConfig( + "0x1234567890123456789012345678901234567890", + "0x1234567890123456789012345678901234567890", + "0x1234567890123456789012345678901234567890", + 10, + 10, + 10, + "https://www.example.com/manifest", + "hashvalue", + ) + + result = self.escrow.create_fund_and_setup_escrow( + token_address, amount, job_requester_id, escrow_config, tx_options + ) + + self.escrow.factory_contract.functions.createFundAndSetupEscrow.assert_called_once_with( + token_address, + amount, + job_requester_id, + escrow_config.reputation_oracle_address, + escrow_config.recording_oracle_address, + escrow_config.exchange_oracle_address, + escrow_config.reputation_oracle_fee, + escrow_config.recording_oracle_fee, + escrow_config.exchange_oracle_fee, + escrow_config.manifest, + escrow_config.hash, ) mock_create.transact.assert_called_once_with(tx_options) self.escrow.w3.eth.wait_for_transaction_receipt.assert_called_once_with( @@ -863,7 +1007,7 @@ def test_store_results_with_tx_options(self): hash = "test" tx_options = {"gas": 50000} - self.escrow.store_results(escrow_address, url, hash, tx_options) + self.escrow.store_results(escrow_address, url, hash, tx_options=tx_options) self.escrow._get_escrow_contract.assert_called_once_with(escrow_address) mock_contract.functions.storeResults.assert_called_once_with(url, hash) @@ -872,42 +1016,79 @@ def test_store_results_with_tx_options(self): "tx_hash" ) - def test_bulk_payout(self): + def test_store_results_with_funds_to_reserve_positive(self): mock_contract = MagicMock() - mock_bulk = MagicMock() - mock_bulk.transact.return_value = "tx_hash" - mock_contract.functions.bulkPayOut = MagicMock(return_value=mock_bulk) + mock_store = MagicMock() + mock_store.transact.return_value = "tx_hash" + mock_contract.functions.storeResults = MagicMock(return_value=mock_store) self.escrow._get_escrow_contract = MagicMock(return_value=mock_contract) - self.escrow.get_balance = MagicMock(return_value=100) self.escrow.w3.eth.wait_for_transaction_receipt = MagicMock( return_value={"logs": []} ) escrow_address = "0x1234567890123456789012345678901234567890" - recipients = ["0x1234567890123456789012345678901234567890"] - amounts = [100] - final_results_url = "https://www.example.com/result" - final_results_hash = "test" - txId = 1 + url = "https://www.example.com/result" + hash = "hash" + funds_to_reserve = 10 - self.escrow.bulk_payout( - escrow_address, - recipients, - amounts, - final_results_url, - final_results_hash, - txId, + self.escrow.store_results( + escrow_address, url, hash, funds_to_reserve=funds_to_reserve ) self.escrow._get_escrow_contract.assert_called_once_with(escrow_address) - mock_contract.functions.bulkPayOut.assert_called_once_with( - recipients, amounts, final_results_url, final_results_hash, txId + mock_contract.functions.storeResults.assert_called_once_with( + url, hash, funds_to_reserve ) - mock_bulk.transact.assert_called_once_with({}) - self.escrow.w3.eth.wait_for_transaction_receipt.assert_called_once_with( - "tx_hash" + mock_store.transact.assert_called_once_with({}) + + def test_store_results_with_funds_to_reserve_zero_allows_empty(self): + mock_contract = MagicMock() + mock_store = MagicMock() + mock_store.transact.return_value = "tx_hash" + mock_contract.functions.storeResults = MagicMock(return_value=mock_store) + self.escrow._get_escrow_contract = MagicMock(return_value=mock_contract) + self.escrow.w3.eth.wait_for_transaction_receipt = MagicMock( + return_value={"logs": []} ) + escrow_address = "0x1234567890123456789012345678901234567890" + # Intentionally empty / invalid url & hash should PASS when funds_to_reserve == 0 + url = "" # empty + hash = "" # empty + funds_to_reserve = 0 + + # Should not raise + self.escrow.store_results( + escrow_address, url, hash, funds_to_reserve=funds_to_reserve + ) + + mock_contract.functions.storeResults.assert_called_once_with( + url, hash, funds_to_reserve + ) + + def test_store_results_with_funds_to_reserve_positive_invalid_url(self): + escrow_address = "0x1234567890123456789012345678901234567890" + url = "invalid_url" + hash = "hash" + with self.assertRaises(EscrowClientError) as cm: + self.escrow.store_results(escrow_address, url, hash, funds_to_reserve=1) + self.assertEqual(f"Invalid URL: {url}", str(cm.exception)) + + def test_store_results_with_funds_to_reserve_positive_empty_hash(self): + escrow_address = "0x1234567890123456789012345678901234567890" + url = "https://www.example.com/result" + hash = "" + with self.assertRaises(EscrowClientError) as cm: + self.escrow.store_results(escrow_address, url, hash, funds_to_reserve=1) + self.assertEqual("Invalid empty hash", str(cm.exception)) - def test_bulk_payout_with_force_complete(self): + def test_store_results_with_negative_funds_to_reserve(self): + escrow_address = "0x1234567890123456789012345678901234567890" + url = "https://www.example.com/result" + hash = "hash" + with self.assertRaises(EscrowClientError) as cm: + self.escrow.store_results(escrow_address, url, hash, funds_to_reserve=-1) + self.assertEqual("Amount must be positive", str(cm.exception)) + + def test_bulk_payout(self): mock_contract = MagicMock() mock_bulk = MagicMock() mock_bulk.transact.return_value = "tx_hash" @@ -959,6 +1140,7 @@ def test_bulk_payout_invalid_address(self): final_results_url, final_results_hash, txId, + False, ) self.assertEqual(f"Invalid escrow address: invalid_address", str(cm.exception)) @@ -970,6 +1152,7 @@ def test_bulk_payout_invalid_address(self): final_results_url, final_results_hash, txId, + False, ) self.assertEqual( "Invalid recipient address: invalid_address", str(cm.exception) @@ -991,6 +1174,7 @@ def test_bulk_payout_different_length_arrays(self): final_results_url, final_results_hash, txId, + False, ) self.assertEqual("Arrays must have same length", str(cm.exception)) @@ -1010,6 +1194,7 @@ def test_bulk_payout_empty_arrays(self): final_results_url, final_results_hash, txId, + False, ) self.assertEqual("Arrays must have any value", str(cm.exception)) @@ -1029,6 +1214,7 @@ def test_bulk_payout_exceed_max_count(self): final_results_url, final_results_hash, txId, + False, ) self.assertEqual("Too many recipients", str(cm.exception)) @@ -1047,6 +1233,7 @@ def test_bulk_payout_zero_amount(self): final_results_url, final_results_hash, txId, + False, ) self.assertEqual("Amounts cannot be empty", str(cm.exception)) @@ -1065,6 +1252,7 @@ def test_bulk_payout_negative_amount(self): final_results_url, final_results_hash, txId, + False, ) self.assertEqual("Amounts cannot be negative", str(cm.exception)) @@ -1085,6 +1273,7 @@ def test_bulk_payout_not_enough_balance(self): final_results_url, final_results_hash, txId, + False, ) self.assertEqual( "Escrow does not have enough balance. Current balance: 50. Amounts: 100", @@ -1108,6 +1297,7 @@ def test_bulk_payout_invalid_url(self): final_results_url, final_results_hash, txId, + False, ) self.assertEqual( f"Invalid final results URL: {final_results_url}", str(cm.exception) @@ -1130,6 +1320,7 @@ def test_bulk_payout_invalid_hash(self): final_results_url, final_results_hash, txId, + False, ) self.assertEqual("Invalid empty final results hash", str(cm.exception)) @@ -1157,6 +1348,7 @@ def test_bulk_payout_without_account(self): final_results_url, final_results_hash, txId, + False, ) self.assertEqual("You must add an account to Web3 instance", str(cm.exception)) @@ -1185,12 +1377,18 @@ def test_bulk_payout_with_tx_options(self): final_results_url, final_results_hash, txId, + False, tx_options=tx_options, ) self.escrow._get_escrow_contract.assert_called_once_with(escrow_address) mock_contract.functions.bulkPayOut.assert_called_once_with( - recipients, amounts, final_results_url, final_results_hash, txId + recipients, + amounts, + final_results_url, + final_results_hash, + txId, + False, ) mock_bulk.transact.assert_called_once_with(tx_options) self.escrow.w3.eth.wait_for_transaction_receipt.assert_called_once_with( @@ -1460,10 +1658,91 @@ def test_complete_with_tx_options(self): "tx_hash" ) + def test_request_cancellation(self): + escrow_address = "0x1234567890123456789012345678901234567890" + mock_contract = MagicMock() + mock_request = MagicMock() + mock_request.transact.return_value = "tx_hash" + mock_contract.functions.requestCancellation = MagicMock( + return_value=mock_request + ) + self.escrow._get_escrow_contract = MagicMock(return_value=mock_contract) + self.escrow.w3.eth.wait_for_transaction_receipt = MagicMock( + return_value={"logs": []} + ) + + result = self.escrow.request_cancellation(escrow_address) + + self.escrow._get_escrow_contract.assert_called_once_with(escrow_address) + mock_contract.functions.requestCancellation.assert_called_once_with() + mock_request.transact.assert_called_once_with({}) + self.assertIsNone(result) + + def test_request_cancellation_invalid_address(self): + escrow_address = "invalid_address" + with self.assertRaises(EscrowClientError) as cm: + self.escrow.request_cancellation(escrow_address) + self.assertEqual(f"Invalid escrow address: {escrow_address}", str(cm.exception)) + + def test_request_cancellation_without_account(self): + mock_provider = MagicMock(spec=HTTPProvider) + w3 = Web3(mock_provider) + mock_chain_id = ChainId.LOCALHOST.value + type(w3.eth).chain_id = PropertyMock(return_value=mock_chain_id) + escrow_client = EscrowClient(w3) + escrow_address = "0x1234567890123456789012345678901234567890" + with self.assertRaises(RequiresSignerError): + escrow_client.request_cancellation(escrow_address) + + def test_request_cancellation_invalid_status(self): + escrow_address = "0x1234567890123456789012345678901234567890" + mock_contract = MagicMock() + mock_request = MagicMock() + mock_request.transact.side_effect = Exception( + "Error: VM Exception while processing transaction: reverted with reason string 'Invalid status'" + ) + mock_contract.functions.requestCancellation = MagicMock( + return_value=mock_request + ) + self.escrow._get_escrow_contract = MagicMock(return_value=mock_contract) + with self.assertRaises(EscrowClientError) as cm: + self.escrow.request_cancellation(escrow_address) + self.assertEqual("Transaction failed: Invalid status", str(cm.exception)) + + def test_request_cancellation_invalid_caller(self): + escrow_address = "0x1234567890123456789012345678901234567890" + mock_contract = MagicMock() + mock_request = MagicMock() + mock_request.transact.side_effect = Exception( + "Error: VM Exception while processing transaction: reverted with reason string 'Unauthorised'" + ) + mock_contract.functions.requestCancellation = MagicMock( + return_value=mock_request + ) + self.escrow._get_escrow_contract = MagicMock(return_value=mock_contract) + with self.assertRaises(EscrowClientError) as cm: + self.escrow.request_cancellation(escrow_address) + self.assertEqual("Transaction failed: Unauthorised", str(cm.exception)) + + def test_request_cancellation_with_tx_options(self): + escrow_address = "0x1234567890123456789012345678901234567890" + mock_contract = MagicMock() + mock_request = MagicMock() + mock_request.transact.return_value = "tx_hash" + mock_contract.functions.requestCancellation = MagicMock( + return_value=mock_request + ) + self.escrow._get_escrow_contract = MagicMock(return_value=mock_contract) + self.escrow.w3.eth.wait_for_transaction_receipt = MagicMock( + return_value={"logs": []} + ) + tx_options = {"gas": 50000} + result = self.escrow.request_cancellation(escrow_address, tx_options) + mock_request.transact.assert_called_once_with(tx_options) + self.assertIsNone(result) + def test_cancel(self): escrow_address = "0x1234567890123456789012345678901234567890" - token_address = "0x1234567890123456789012345678901234567891" - amount_refunded = 123 # Mock contract and cancel function mock_contract = MagicMock() @@ -1471,32 +1750,19 @@ def test_cancel(self): mock_cancel.transact.return_value = "tx_hash" mock_contract.functions.cancel = MagicMock(return_value=mock_cancel) self.escrow._get_escrow_contract = MagicMock(return_value=mock_contract) - self.escrow.get_token_address = MagicMock(return_value=token_address) - - # Mock token contract and Transfer event - token_contract = MagicMock() - token_contract.events.Transfer().process_log.return_value = { - "event": "Transfer", - "args": {"from": escrow_address, "value": amount_refunded}, - } - self.escrow.w3.eth.contract = MagicMock(return_value=token_contract) - - # Mock receipt with logs - receipt = {"transactionHash": b"tx_hash", "logs": [{"address": token_address}]} self.escrow.w3.eth.wait_for_transaction_receipt = MagicMock( - return_value=receipt + return_value={"logs": []} ) result = self.escrow.cancel(escrow_address) + self.assertIsNone(result) self.escrow._get_escrow_contract.assert_called_once_with(escrow_address) mock_contract.functions.cancel.assert_called_once_with() mock_cancel.transact.assert_called_once_with({}) self.escrow.w3.eth.wait_for_transaction_receipt.assert_called_once_with( "tx_hash" ) - self.assertEqual(result.amountRefunded, amount_refunded) - self.assertEqual(result.txHash, receipt["transactionHash"].hex()) def test_cancel_invalid_address(self): escrow_address = "invalid_address" @@ -1551,8 +1817,6 @@ def test_cancel_invalid_caller(self): def test_cancel_with_tx_options(self): escrow_address = "0x1234567890123456789012345678901234567890" - token_address = "0x1234567890123456789012345678901234567891" - amount_refunded = 123 tx_options = {"gas": 50000} # Mock contract and cancel function @@ -1561,137 +1825,19 @@ def test_cancel_with_tx_options(self): mock_cancel.transact.return_value = "tx_hash" mock_contract.functions.cancel = MagicMock(return_value=mock_cancel) self.escrow._get_escrow_contract = MagicMock(return_value=mock_contract) - self.escrow.get_token_address = MagicMock(return_value=token_address) - - # Mock token contract and Transfer event - token_contract = MagicMock() - token_contract.events.Transfer().process_log.return_value = { - "event": "Transfer", - "args": {"from": escrow_address, "value": amount_refunded}, - } - self.escrow.w3.eth.contract = MagicMock(return_value=token_contract) - - # Mock receipt with logs - receipt = {"transactionHash": b"tx_hash", "logs": [{"address": token_address}]} self.escrow.w3.eth.wait_for_transaction_receipt = MagicMock( - return_value=receipt + return_value={"logs": []} ) result = self.escrow.cancel(escrow_address, tx_options) + self.assertIsNone(result) self.escrow._get_escrow_contract.assert_called_once_with(escrow_address) mock_contract.functions.cancel.assert_called_once_with() mock_cancel.transact.assert_called_once_with(tx_options) self.escrow.w3.eth.wait_for_transaction_receipt.assert_called_once_with( "tx_hash" ) - self.assertEqual(result.amountRefunded, amount_refunded) - self.assertEqual(result.txHash, receipt["transactionHash"].hex()) - - def test_add_trusted_handlers(self): - mock_contract = MagicMock() - mock_add = MagicMock() - mock_add.transact.return_value = "tx_hash" - mock_contract.functions.addTrustedHandlers = MagicMock(return_value=mock_add) - self.escrow._get_escrow_contract = MagicMock(return_value=mock_contract) - self.escrow.w3.eth.wait_for_transaction_receipt = MagicMock( - return_value={"logs": []} - ) - escrow_address = "0x1234567890123456789012345678901234567890" - handlers = [ - "0x1234567890123456789012345678901234567891", - "0x1234567890123456789012345678901234567892", - ] - - self.escrow.add_trusted_handlers(escrow_address, handlers) - - self.escrow._get_escrow_contract.assert_called_once_with(escrow_address) - mock_contract.functions.addTrustedHandlers.assert_called_once_with(handlers) - mock_add.transact.assert_called_once_with({}) - self.escrow.w3.eth.wait_for_transaction_receipt.assert_called_once_with( - "tx_hash" - ) - - def test_add_trusted_handlers_invalid_address(self): - escrow_address = "0x1234567890123456789012345678901234567890" - handlers = [ - "0x1234567890123456789012345678901234567891", - "0x1234567890123456789012345678901234567892", - ] - - with self.assertRaises(EscrowClientError) as cm: - self.escrow.add_trusted_handlers("invalid_address", handlers) - self.assertEqual(f"Invalid escrow address: invalid_address", str(cm.exception)) - - with self.assertRaises(EscrowClientError) as cm: - self.escrow.add_trusted_handlers( - escrow_address, - ["invalid_address", "0x1234567890123456789012345678901234567892"], - ) - self.assertEqual(f"Invalid handler address: invalid_address", str(cm.exception)) - - def test_add_trusted_handlers_without_account(self): - mock_provider = MagicMock(spec=HTTPProvider) - w3 = Web3(mock_provider) - mock_chain_id = ChainId.LOCALHOST.value - type(w3.eth).chain_id = PropertyMock(return_value=mock_chain_id) - - escrowClient = EscrowClient(w3) - - escrow_address = "0x1234567890123456789012345678901234567890" - handlers = [ - "0x1234567890123456789012345678901234567891", - "0x1234567890123456789012345678901234567892", - ] - - with self.assertRaises(RequiresSignerError) as cm: - escrowClient.add_trusted_handlers(escrow_address, handlers) - self.assertEqual("You must add an account to Web3 instance", str(cm.exception)) - - def test_add_trusted_handlers_invalid_caller(self): - mock_contract = MagicMock() - mock_contract.functions.addTrustedHandlers = MagicMock() - mock_contract.functions.addTrustedHandlers.return_value.transact.side_effect = Exception( - "Error: VM Exception while processing transaction: reverted with reason string 'Address calling not trusted'." - ) - self.escrow._get_escrow_contract = MagicMock(return_value=mock_contract) - escrow_address = "0x1234567890123456789012345678901234567890" - handlers = [ - "0x1234567890123456789012345678901234567891", - "0x1234567890123456789012345678901234567892", - ] - - with self.assertRaises(EscrowClientError) as cm: - self.escrow.add_trusted_handlers(escrow_address, handlers) - self.assertEqual( - "Transaction failed: Address calling not trusted", - str(cm.exception), - ) - - def test_add_trusted_handlers_with_tx_options(self): - mock_contract = MagicMock() - mock_add = MagicMock() - mock_add.transact.return_value = "tx_hash" - mock_contract.functions.addTrustedHandlers = MagicMock(return_value=mock_add) - self.escrow._get_escrow_contract = MagicMock(return_value=mock_contract) - self.escrow.w3.eth.wait_for_transaction_receipt = MagicMock( - return_value={"logs": []} - ) - escrow_address = "0x1234567890123456789012345678901234567890" - handlers = [ - "0x1234567890123456789012345678901234567891", - "0x1234567890123456789012345678901234567892", - ] - tx_options = {"gas": 50000} - - self.escrow.add_trusted_handlers(escrow_address, handlers, tx_options) - - self.escrow._get_escrow_contract.assert_called_once_with(escrow_address) - mock_contract.functions.addTrustedHandlers.assert_called_once_with(handlers) - mock_add.transact.assert_called_once_with(tx_options) - self.escrow.w3.eth.wait_for_transaction_receipt.assert_called_once_with( - "tx_hash" - ) def test_withdraw(self): escrow_address = "0x1234567890123456789012345678901234567890" @@ -1727,8 +1873,8 @@ def test_withdraw(self): self.escrow.w3.eth.wait_for_transaction_receipt.assert_called_once_with( "tx_hash" ) - self.assertEqual(result.amountWithdrawn, amount_withdrawn) - self.assertEqual(result.tokenAddress, token_address) + self.assertEqual(result.withdrawn_amount, amount_withdrawn) + self.assertEqual(result.token_address, token_address) self.assertEqual(result.txHash, receipt["transactionHash"].hex()) def test_withdraw_invalid_escrow_address(self): @@ -1831,8 +1977,8 @@ def test_withdraw_with_tx_options(self): self.escrow.w3.eth.wait_for_transaction_receipt.assert_called_once_with( "tx_hash" ) - self.assertEqual(result.amountWithdrawn, amount_withdrawn) - self.assertEqual(result.tokenAddress, token_address) + self.assertEqual(result.withdrawn_amount, amount_withdrawn) + self.assertEqual(result.token_address, token_address) self.assertEqual(result.txHash, receipt["transactionHash"].hex()) def test_get_balance(self): @@ -2068,6 +2214,55 @@ def test_get_intermediate_results_url_invalid_escrow(self): "Escrow address is not provided by the factory", str(cm.exception) ) + def test_get_intermediate_results_hash(self): + mock_contract = MagicMock() + mock_contract.functions.intermediateResultsHash = MagicMock() + mock_contract.functions.intermediateResultsHash.return_value.call.return_value = ( + "mock_hash" + ) + self.escrow._get_escrow_contract = MagicMock(return_value=mock_contract) + escrow_address = "0x1234567890123456789012345678901234567890" + + result = self.escrow.get_intermediate_results_hash(escrow_address) + self.escrow._get_escrow_contract.assert_called_once_with(escrow_address) + mock_contract.functions.intermediateResultsHash.assert_called_once_with() + self.assertEqual(result, "mock_hash") + + def test_get_intermediate_results_hash_invalid_address(self): + with self.assertRaises(EscrowClientError) as cm: + self.escrow.get_intermediate_results_hash("invalid_address") + self.assertEqual(f"Invalid escrow address: invalid_address", str(cm.exception)) + + def test_get_intermediate_results_hash_without_account(self): + mock_provider = MagicMock(spec=HTTPProvider) + w3 = Web3(mock_provider) + mock_chain_id = ChainId.LOCALHOST.value + type(w3.eth).chain_id = PropertyMock(return_value=mock_chain_id) + + escrowClient = EscrowClient(w3) + mock_contract = MagicMock() + mock_contract.functions.intermediateResultsHash = MagicMock() + mock_contract.functions.intermediateResultsHash.return_value.call.return_value = ( + "mock_hash" + ) + escrowClient._get_escrow_contract = MagicMock(return_value=mock_contract) + escrow_address = "0x1234567890123456789012345678901234567890" + + result = escrowClient.get_intermediate_results_hash(escrow_address) + escrowClient._get_escrow_contract.assert_called_once_with(escrow_address) + mock_contract.functions.intermediateResultsHash.assert_called_once_with() + self.assertEqual(result, "mock_hash") + + def test_get_intermediate_results_hash_invalid_escrow(self): + self.escrow.factory_contract.functions.hasEscrow = MagicMock(return_value=False) + with self.assertRaises(EscrowClientError) as cm: + self.escrow.get_intermediate_results_hash( + "0x1234567890123456789012345678901234567890" + ) + self.assertEqual( + "Escrow address is not provided by the factory", str(cm.exception) + ) + def test_get_token_address(self): mock_contract = MagicMock() mock_contract.functions.token = MagicMock() @@ -2482,6 +2677,32 @@ def test_get_factory_address_invalid_escrow(self): "Escrow address is not provided by the factory", str(cm.exception) ) + def test_get_reserved_funds(self): + mock_contract = MagicMock() + mock_contract.functions.reservedFunds = MagicMock() + mock_contract.functions.reservedFunds.return_value.call.return_value = 42 + self.escrow._get_escrow_contract = MagicMock(return_value=mock_contract) + escrow_address = "0x1234567890123456789012345678901234567890" + + result = self.escrow.get_reserved_funds(escrow_address) + + self.escrow._get_escrow_contract.assert_called_once_with(escrow_address) + mock_contract.functions.reservedFunds.assert_called_once_with() + self.assertEqual(result, 42) + + def test_get_reserved_funds_invalid_address(self): + with self.assertRaises(EscrowClientError) as cm: + self.escrow.get_reserved_funds("invalid_address") + self.assertEqual(f"Invalid escrow address: invalid_address", str(cm.exception)) + + def test_get_reserved_funds_invalid_escrow(self): + self.escrow.factory_contract.functions.hasEscrow = MagicMock(return_value=False) + with self.assertRaises(EscrowClientError) as cm: + self.escrow.get_reserved_funds("0x1234567890123456789012345678901234567890") + self.assertEqual( + "Escrow address is not provided by the factory", str(cm.exception) + ) + if __name__ == "__main__": unittest.main(exit=True) diff --git a/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/escrow/test_escrow_utils.py b/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/escrow/test_escrow_utils.py index 5dc910a526..88b52db16e 100644 --- a/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/escrow/test_escrow_utils.py +++ b/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/escrow/test_escrow_utils.py @@ -12,6 +12,7 @@ EscrowUtils, ) from human_protocol_sdk.filter import ( + CancellationRefundFilter, EscrowFilter, FilterError, StatusEventFilter, @@ -32,16 +33,22 @@ def test_get_escrows(self): "count": "1", "factoryAddress": "0x1234567890123456789012345678901234567890", "finalResultsUrl": "https://example.com", + "finalResultsHash": "0x1234567890123456789012345678901234567891", "intermediateResultsUrl": "https://example.com", + "intermediateResultsHash": "0x1234567890123456789012345678901234567891", "launcher": "0x1234567890123456789012345678901234567891", "manifestHash": "0x1234567890123456789012345678901234567891", "manifest": "https://example.com", "recordingOracle": "0x1234567890123456789012345678901234567891", "reputationOracle": "0x1234567890123456789012345678901234567891", "exchangeOracle": "0x1234567890123456789012345678901234567891", + "recordingOracleFee": "1000000000000000000", + "reputationOracleFee": "1000000000000000000", + "exchangeOracleFee": "1000000000000000000", "status": "Pending", "token": "0x1234567890123456789012345678901234567891", "totalFundedAmount": "1000000000000000000", + "createdAt": "1683811973", } def side_effect(subgraph_url, query, params): @@ -79,6 +86,53 @@ def side_effect(subgraph_url, query, params): ) self.assertEqual(len(filtered), 1) self.assertEqual(filtered[0].address, mock_escrow["address"]) + self.assertEqual(filtered[0].id, mock_escrow["id"]) + self.assertEqual(filtered[0].amount_paid, int(mock_escrow["amountPaid"])) + self.assertEqual(filtered[0].balance, int(mock_escrow["balance"])) + self.assertEqual(filtered[0].count, int(mock_escrow["count"])) + self.assertEqual(filtered[0].factory_address, mock_escrow["factoryAddress"]) + self.assertEqual( + filtered[0].final_results_url, mock_escrow["finalResultsUrl"] + ) + self.assertEqual( + filtered[0].final_results_hash, mock_escrow["finalResultsHash"] + ) + self.assertEqual( + filtered[0].intermediate_results_url, + mock_escrow["intermediateResultsUrl"], + ) + self.assertEqual( + filtered[0].intermediate_results_hash, + mock_escrow["intermediateResultsHash"], + ) + self.assertEqual(filtered[0].launcher, mock_escrow["launcher"]) + self.assertEqual(filtered[0].manifest_hash, mock_escrow["manifestHash"]) + self.assertEqual(filtered[0].manifest, mock_escrow["manifest"]) + self.assertEqual( + filtered[0].recording_oracle, mock_escrow["recordingOracle"] + ) + self.assertEqual( + filtered[0].reputation_oracle, mock_escrow["reputationOracle"] + ) + self.assertEqual(filtered[0].exchange_oracle, mock_escrow["exchangeOracle"]) + self.assertEqual( + filtered[0].recording_oracle_fee, int(mock_escrow["recordingOracleFee"]) + ) + self.assertEqual( + filtered[0].reputation_oracle_fee, + int(mock_escrow["reputationOracleFee"]), + ) + self.assertEqual( + filtered[0].exchange_oracle_fee, int(mock_escrow["exchangeOracleFee"]) + ) + self.assertEqual(filtered[0].status, mock_escrow["status"]) + self.assertEqual(filtered[0].token, mock_escrow["token"]) + self.assertEqual( + filtered[0].total_funded_amount, int(mock_escrow["totalFundedAmount"]) + ) + self.assertEqual( + int(filtered[0].created_at), int(mock_escrow["createdAt"]) * 1000 + ) filter = EscrowFilter(chain_id=ChainId.POLYGON_AMOY) @@ -127,6 +181,7 @@ def test_get_escrows_with_status_array(self): "status": "Pending", "token": "0x1234567890123456789012345678901234567891", "totalFundedAmount": "1000000000000000000", + "createdAt": "1672531200000", } mock_escrow_2 = { "id": "0x1234567890123456789012345678901234567891", @@ -146,6 +201,7 @@ def test_get_escrows_with_status_array(self): "status": "Complete", "token": "0x1234567890123456789012345678901234567891", "totalFundedAmount": "1000000000000000000", + "createdAt": "1672531200000", } def side_effect(subgraph_url, query, params): @@ -193,16 +249,22 @@ def test_get_escrow(self): "count": "1", "factoryAddress": "0x1234567890123456789012345678901234567890", "finalResultsUrl": "https://example.com", + "finalResultsHash": "0x1234567890123456789012345678901234567891", "intermediateResultsUrl": "https://example.com", + "intermediateResultsHash": "0x1234567890123456789012345678901234567891", "launcher": "0x1234567890123456789012345678901234567891", "manifestHash": "0x1234567890123456789012345678901234567891", "manifest": "https://example.com", "recordingOracle": "0x1234567890123456789012345678901234567891", "reputationOracle": "0x1234567890123456789012345678901234567891", "exchangeOracle": "0x1234567890123456789012345678901234567891", + "recordingOracleFee": "1000000000000000000", + "reputationOracleFee": "1000000000000000000", + "exchangeOracleFee": "1000000000000000000", "status": "Pending", "token": "0x1234567890123456789012345678901234567891", "totalFundedAmount": "1000000000000000000", + "createdAt": "1683813973", } mock_function.return_value = { @@ -226,6 +288,40 @@ def test_get_escrow(self): self.assertEqual(escrow.chain_id, ChainId.POLYGON_AMOY) self.assertEqual(escrow.address, mock_escrow["address"]) self.assertEqual(escrow.amount_paid, int(mock_escrow["amountPaid"])) + self.assertEqual(escrow.balance, int(mock_escrow["balance"])) + self.assertEqual(escrow.count, int(mock_escrow["count"])) + self.assertEqual(escrow.factory_address, mock_escrow["factoryAddress"]) + self.assertEqual(escrow.final_results_url, mock_escrow["finalResultsUrl"]) + self.assertEqual(escrow.final_results_hash, mock_escrow["finalResultsHash"]) + self.assertEqual( + escrow.intermediate_results_url, mock_escrow["intermediateResultsUrl"] + ) + self.assertEqual( + escrow.intermediate_results_hash, mock_escrow["intermediateResultsHash"] + ) + self.assertEqual(escrow.launcher, mock_escrow["launcher"]) + self.assertEqual(escrow.manifest_hash, mock_escrow["manifestHash"]) + self.assertEqual(escrow.manifest, mock_escrow["manifest"]) + self.assertEqual(escrow.recording_oracle, mock_escrow["recordingOracle"]) + self.assertEqual(escrow.reputation_oracle, mock_escrow["reputationOracle"]) + self.assertEqual(escrow.exchange_oracle, mock_escrow["exchangeOracle"]) + self.assertEqual( + escrow.recording_oracle_fee, int(mock_escrow["recordingOracleFee"]) + ) + self.assertEqual( + escrow.reputation_oracle_fee, int(mock_escrow["reputationOracleFee"]) + ) + self.assertEqual( + escrow.exchange_oracle_fee, int(mock_escrow["exchangeOracleFee"]) + ) + self.assertEqual(escrow.status, mock_escrow["status"]) + self.assertEqual(escrow.token, mock_escrow["token"]) + self.assertEqual( + escrow.total_funded_amount, int(mock_escrow["totalFundedAmount"]) + ) + self.assertEqual( + int(escrow.created_at), int(mock_escrow["createdAt"]) * 1000 + ) def test_get_escrow_empty_data(self): with patch( @@ -250,13 +346,6 @@ def test_get_escrow_empty_data(self): ) self.assertEqual(escrow, None) - def test_get_escrow_invalid_chain_id(self): - with self.assertRaises(ValueError) as cm: - EscrowUtils.get_escrow( - ChainId(123), "0x1234567890123456789012345678901234567890" - ) - self.assertEqual("123 is not a valid ChainId", str(cm.exception)) - def test_get_escrow_invalid_address_launcher(self): with self.assertRaises(EscrowClientError) as cm: EscrowUtils.get_escrow(ChainId.POLYGON_AMOY, "invalid_address") @@ -298,7 +387,7 @@ def test_get_status_events(self): result = EscrowUtils.get_status_events(filter) self.assertEqual(len(result), 1) - self.assertEqual(result[0].timestamp, 1620000000) + self.assertEqual(result[0].timestamp, 1620000000000) self.assertEqual(result[0].escrow_address, "0x123") self.assertEqual(result[0].status, "Pending") self.assertEqual(result[0].chain_id, ChainId.POLYGON_AMOY) @@ -331,7 +420,7 @@ def test_get_status_events_with_date_range(self): result = EscrowUtils.get_status_events(filter) self.assertEqual(len(result), 1) - self.assertEqual(result[0].timestamp, 1620000000) + self.assertEqual(result[0].timestamp, 1620000000000) self.assertEqual(result[0].escrow_address, "0x123") self.assertEqual(result[0].status, "Pending") self.assertEqual(result[0].chain_id, ChainId.POLYGON_AMOY) @@ -373,7 +462,7 @@ def test_get_status_events_with_launcher(self): result = EscrowUtils.get_status_events(filter) self.assertEqual(len(result), 1) - self.assertEqual(result[0].timestamp, 1620000000) + self.assertEqual(result[0].timestamp, 1620000000000) self.assertEqual(result[0].escrow_address, "0x123") self.assertEqual(result[0].status, "Pending") self.assertEqual(result[0].chain_id, ChainId.POLYGON_AMOY) @@ -426,7 +515,7 @@ def test_get_payouts(self): result[0].recipient, "0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef" ) self.assertEqual(result[0].amount, 1000000000000000000) - self.assertEqual(result[0].created_at, 1672531200) + self.assertEqual(result[0].created_at, 1672531200000) def test_get_payouts_with_filters(self): with patch( @@ -464,7 +553,7 @@ def test_get_payouts_with_filters(self): result[0].recipient, "0x1234567890123456789012345678901234567892" ) self.assertEqual(result[0].amount, 1000000000000000000) - self.assertEqual(result[0].created_at, 1672531200) + self.assertEqual(result[0].created_at, 1672531200000) def test_get_payouts_no_data(self): with patch( @@ -511,6 +600,141 @@ def test_get_payouts_with_pagination(self): self.assertEqual(result[0].amount, 1000000000000000000) self.assertEqual(result[1].amount, 2000000000000000000) + def test_get_cancellation_refunds(self): + from human_protocol_sdk.escrow.escrow_utils import CancellationRefundFilter + + with patch( + "human_protocol_sdk.escrow.escrow_utils.get_data_from_subgraph" + ) as mock_function: + mock_refund = { + "id": "1", + "escrowAddress": "0x1234567890123456789012345678901234567890", + "receiver": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef", + "amount": "1000000000000000000", + "block": "123456", + "timestamp": "1672531200", + "txHash": "0xhash1", + } + + def side_effect(subgraph_url, query, params): + if subgraph_url == NETWORKS[ChainId.POLYGON_AMOY]: + return {"data": {"cancellationRefundEvents": [mock_refund]}} + + mock_function.side_effect = side_effect + + filter = CancellationRefundFilter( + chain_id=ChainId.POLYGON_AMOY, + escrow_address="0x1234567890123456789012345678901234567890", + date_from=datetime.fromtimestamp(1672531200), + date_to=datetime.fromtimestamp(1672531300), + first=10, + skip=0, + order_direction=OrderDirection.DESC, + ) + refunds = EscrowUtils.get_cancellation_refunds(filter) + + mock_function.assert_called_once() + self.assertEqual(len(refunds), 1) + self.assertEqual(refunds[0].id, mock_refund["id"]) + self.assertEqual(refunds[0].escrow_address, mock_refund["escrowAddress"]) + self.assertEqual(refunds[0].receiver, mock_refund["receiver"]) + self.assertEqual(refunds[0].amount, int(mock_refund["amount"])) + self.assertEqual(refunds[0].block, int(mock_refund["block"])) + self.assertEqual(refunds[0].timestamp, int(mock_refund["timestamp"]) * 1000) + self.assertEqual(refunds[0].tx_hash, mock_refund["txHash"]) + + def test_get_cancellation_refunds_invalid_escrow_address(self): + with self.assertRaises(FilterError) as context: + CancellationRefundFilter( + chain_id=ChainId.POLYGON_AMOY, escrow_address="invalid_address" + ) + self.assertEqual( + str(context.exception), "Invalid escrow address: invalid_address" + ) + + def test_get_cancellation_refunds_invalid_receiver(self): + with self.assertRaises(FilterError) as context: + CancellationRefundFilter( + chain_id=ChainId.POLYGON_AMOY, receiver="invalid_address" + ) + self.assertEqual( + str(context.exception), "Invalid receiver address: invalid_address" + ) + + def test_get_cancellation_refunds_invalid_dates(self): + with self.assertRaises(FilterError) as context: + CancellationRefundFilter( + chain_id=ChainId.POLYGON_AMOY, + date_from=datetime(2023, 6, 8), + date_to=datetime(2023, 5, 8), + ) + self.assertTrue("must be earlier than" in str(context.exception)) + + def test_get_cancellation_refunds_no_data(self): + from human_protocol_sdk.escrow.escrow_utils import CancellationRefundFilter + + with patch( + "human_protocol_sdk.escrow.escrow_utils.get_data_from_subgraph" + ) as mock_function: + mock_function.return_value = {"data": {"cancellationRefundEvents": []}} + + filter = CancellationRefundFilter(chain_id=ChainId.POLYGON_AMOY) + refunds = EscrowUtils.get_cancellation_refunds(filter) + + self.assertEqual(len(refunds), 0) + + def test_get_cancellation_refund(self): + with patch( + "human_protocol_sdk.escrow.escrow_utils.get_data_from_subgraph" + ) as mock_function: + mock_refund = { + "id": "1", + "escrowAddress": "0x1234567890123456789012345678901234567890", + "receiver": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef", + "amount": "1000000000000000000", + "block": "123456", + "timestamp": "1672531200", + "txHash": "0xhash1", + } + + mock_function.return_value = { + "data": { + "cancellationRefundEvents": [mock_refund], + } + } + + refund = EscrowUtils.get_cancellation_refund( + ChainId.POLYGON_AMOY, + "0x1234567890123456789012345678901234567890", + ) + + mock_function.assert_called_once() + self.assertIsNotNone(refund) + self.assertEqual(refund.id, mock_refund["id"]) + self.assertEqual(refund.escrow_address, mock_refund["escrowAddress"]) + self.assertEqual(refund.receiver, mock_refund["receiver"]) + self.assertEqual(refund.amount, int(mock_refund["amount"])) + self.assertEqual(refund.block, int(mock_refund["block"])) + self.assertEqual(refund.timestamp, int(mock_refund["timestamp"]) * 1000) + self.assertEqual(refund.tx_hash, mock_refund["txHash"]) + + def test_get_cancellation_refund_no_data(self): + with patch( + "human_protocol_sdk.escrow.escrow_utils.get_data_from_subgraph" + ) as mock_function: + mock_function.return_value = {"data": {"cancellationRefundEvents": []}} + + refund = EscrowUtils.get_cancellation_refund( + ChainId.POLYGON_AMOY, + "0x1234567890123456789012345678901234567890", + ) + self.assertIsNone(refund) + + def test_get_cancellation_refund_invalid_address(self): + with self.assertRaises(EscrowClientError) as cm: + EscrowUtils.get_cancellation_refund(ChainId.POLYGON_AMOY, "invalid_address") + self.assertEqual("Invalid escrow address", str(cm.exception)) + if __name__ == "__main__": unittest.main(exit=True) diff --git a/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/operator/test_operator_utils.py b/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/operator/test_operator_utils.py index efff633bfd..b77c23db86 100644 --- a/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/operator/test_operator_utils.py +++ b/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/operator/test_operator_utils.py @@ -27,12 +27,6 @@ def test_get_operators(self): { "id": DEFAULT_GAS_PAYER, "address": DEFAULT_GAS_PAYER, - "amountStaked": "100", - "amountLocked": "25", - "lockedUntilTimestamp": "0", - "amountWithdrawn": "25", - "amountSlashed": "25", - "reward": "25", "amountJobsProcessed": "25", "role": "role", "fee": None, @@ -46,6 +40,14 @@ def test_get_operators(self): "reputationNetworks": [{"address": "0x01"}], "name": "Alice", "category": "machine_learning", + "staker": { + "stakedAmount": "100", + "lockedAmount": "25", + "withdrawnAmount": "25", + "slashedAmount": "25", + "lockedUntilTimestamp": "123456789", + "lastDepositTimestamp": "123456789", + }, } ], } @@ -58,7 +60,7 @@ def test_get_operators(self): NETWORKS[ChainId.POLYGON], query=get_operators_query(filter), params={ - "minAmountStaked": filter.min_amount_staked, + "minStakedAmount": filter.min_staked_amount, "roles": filter.roles, "orderBy": filter.order_by, "orderDirection": filter.order_direction.value, @@ -70,12 +72,11 @@ def test_get_operators(self): self.assertEqual(len(operators), 1) self.assertEqual(operators[0].id, DEFAULT_GAS_PAYER) self.assertEqual(operators[0].address, DEFAULT_GAS_PAYER) - self.assertEqual(operators[0].amount_staked, 100) - self.assertEqual(operators[0].amount_locked, 25) - self.assertEqual(operators[0].locked_until_timestamp, 0) - self.assertEqual(operators[0].amount_withdrawn, 25) - self.assertEqual(operators[0].amount_slashed, 25) - self.assertEqual(operators[0].reward, 25) + self.assertEqual(operators[0].staked_amount, 100) + self.assertEqual(operators[0].locked_amount, 25) + self.assertEqual(operators[0].locked_until_timestamp, 123456789000) + self.assertEqual(operators[0].withdrawn_amount, 25) + self.assertEqual(operators[0].slashed_amount, 25) self.assertEqual(operators[0].amount_jobs_processed, 25) self.assertEqual(operators[0].role, "role") self.assertEqual(operators[0].fee, None) @@ -104,12 +105,6 @@ def test_get_operators_when_job_types_is_none(self): { "id": DEFAULT_GAS_PAYER, "address": DEFAULT_GAS_PAYER, - "amountStaked": "100", - "amountLocked": "25", - "lockedUntilTimestamp": "0", - "amountWithdrawn": "25", - "amountSlashed": "25", - "reward": "25", "amountJobsProcessed": "25", "role": "role", "fee": None, @@ -121,6 +116,14 @@ def test_get_operators_when_job_types_is_none(self): "reputationNetworks": [{"address": "0x01"}], "name": "Alice", "category": "machine_learning", + "staker": { + "stakedAmount": "100", + "lockedAmount": "25", + "withdrawnAmount": "25", + "slashedAmount": "25", + "lockedUntilTimestamp": "123456789", + "lastDepositTimestamp": "123456789", + }, } ], } @@ -133,7 +136,7 @@ def test_get_operators_when_job_types_is_none(self): NETWORKS[ChainId.POLYGON], query=get_operators_query(filter), params={ - "minAmountStaked": filter.min_amount_staked, + "minStakedAmount": filter.min_staked_amount, "roles": filter.roles, "orderBy": filter.order_by, "orderDirection": filter.order_direction.value, @@ -145,12 +148,11 @@ def test_get_operators_when_job_types_is_none(self): self.assertEqual(len(operators), 1) self.assertEqual(operators[0].id, DEFAULT_GAS_PAYER) self.assertEqual(operators[0].address, DEFAULT_GAS_PAYER) - self.assertEqual(operators[0].amount_staked, 100) - self.assertEqual(operators[0].amount_locked, 25) - self.assertEqual(operators[0].locked_until_timestamp, 0) - self.assertEqual(operators[0].amount_withdrawn, 25) - self.assertEqual(operators[0].amount_slashed, 25) - self.assertEqual(operators[0].reward, 25) + self.assertEqual(operators[0].staked_amount, 100) + self.assertEqual(operators[0].locked_amount, 25) + self.assertEqual(operators[0].locked_until_timestamp, 123456789000) + self.assertEqual(operators[0].withdrawn_amount, 25) + self.assertEqual(operators[0].slashed_amount, 25) self.assertEqual(operators[0].amount_jobs_processed, 25) self.assertEqual(operators[0].role, "role") self.assertEqual(operators[0].fee, None) @@ -179,12 +181,6 @@ def test_get_operators_when_job_types_is_array(self): { "id": DEFAULT_GAS_PAYER, "address": DEFAULT_GAS_PAYER, - "amountStaked": "100", - "amountLocked": "25", - "lockedUntilTimestamp": "0", - "amountWithdrawn": "25", - "amountSlashed": "25", - "reward": "25", "amountJobsProcessed": "25", "role": "role", "fee": None, @@ -196,6 +192,14 @@ def test_get_operators_when_job_types_is_array(self): "reputationNetworks": [{"address": "0x01"}], "name": "Alice", "category": "machine_learning", + "staker": { + "stakedAmount": "100", + "lockedAmount": "25", + "withdrawnAmount": "25", + "slashedAmount": "25", + "lockedUntilTimestamp": "123456789", + "lastDepositTimestamp": "123456789", + }, } ], } @@ -208,7 +212,7 @@ def test_get_operators_when_job_types_is_array(self): NETWORKS[ChainId.POLYGON], query=get_operators_query(filter), params={ - "minAmountStaked": filter.min_amount_staked, + "minStakedAmount": filter.min_staked_amount, "roles": filter.roles, "orderBy": filter.order_by, "orderDirection": filter.order_direction.value, @@ -220,12 +224,11 @@ def test_get_operators_when_job_types_is_array(self): self.assertEqual(len(operators), 1) self.assertEqual(operators[0].id, DEFAULT_GAS_PAYER) self.assertEqual(operators[0].address, DEFAULT_GAS_PAYER) - self.assertEqual(operators[0].amount_staked, 100) - self.assertEqual(operators[0].amount_locked, 25) - self.assertEqual(operators[0].locked_until_timestamp, 0) - self.assertEqual(operators[0].amount_withdrawn, 25) - self.assertEqual(operators[0].amount_slashed, 25) - self.assertEqual(operators[0].reward, 25) + self.assertEqual(operators[0].staked_amount, 100) + self.assertEqual(operators[0].locked_amount, 25) + self.assertEqual(operators[0].locked_until_timestamp, 123456789000) + self.assertEqual(operators[0].withdrawn_amount, 25) + self.assertEqual(operators[0].slashed_amount, 25) self.assertEqual(operators[0].amount_jobs_processed, 25) self.assertEqual(operators[0].role, "role") self.assertEqual(operators[0].fee, None) @@ -261,7 +264,7 @@ def test_get_operators_empty_data(self): NETWORKS[ChainId.POLYGON], query=get_operators_query(filter), params={ - "minAmountStaked": filter.min_amount_staked, + "minStakedAmount": filter.min_staked_amount, "roles": filter.roles, "orderBy": filter.order_by, "orderDirection": filter.order_direction.value, @@ -286,12 +289,6 @@ def test_get_operator(self): "operator": { "id": staker_address, "address": staker_address, - "amountStaked": "100", - "amountLocked": "25", - "lockedUntilTimestamp": "0", - "amountWithdrawn": "25", - "amountSlashed": "25", - "reward": "25", "amountJobsProcessed": "25", "role": "role", "fee": None, @@ -305,6 +302,14 @@ def test_get_operator(self): "reputationNetworks": [{"address": "0x01"}], "name": "Alice", "category": "machine_learning", + "staker": { + "stakedAmount": "100", + "lockedAmount": "25", + "withdrawnAmount": "25", + "slashedAmount": "25", + "lockedUntilTimestamp": "123456789", + "lastDepositTimestamp": "123456789", + }, } } } @@ -321,12 +326,11 @@ def test_get_operator(self): self.assertNotEqual(operator, None) self.assertEqual(operator.id, staker_address) self.assertEqual(operator.address, staker_address) - self.assertEqual(operator.amount_staked, 100) - self.assertEqual(operator.amount_locked, 25) - self.assertEqual(operator.locked_until_timestamp, 0) - self.assertEqual(operator.amount_withdrawn, 25) - self.assertEqual(operator.amount_slashed, 25) - self.assertEqual(operator.reward, 25) + self.assertEqual(operator.staked_amount, 100) + self.assertEqual(operator.locked_amount, 25) + self.assertEqual(operator.locked_until_timestamp, 123456789000) + self.assertEqual(operator.withdrawn_amount, 25) + self.assertEqual(operator.slashed_amount, 25) self.assertEqual(operator.amount_jobs_processed, 25) self.assertEqual(operator.role, "role") self.assertEqual(operator.fee, None) @@ -355,12 +359,6 @@ def test_get_operator_when_job_types_is_none(self): "operator": { "id": staker_address, "address": staker_address, - "amountStaked": "100", - "amountLocked": "25", - "lockedUntilTimestamp": "0", - "amountWithdrawn": "25", - "amountSlashed": "25", - "reward": "25", "amountJobsProcessed": "25", "role": "role", "fee": None, @@ -372,6 +370,14 @@ def test_get_operator_when_job_types_is_none(self): "reputationNetworks": [{"address": "0x01"}], "name": "Alice", "category": "machine_learning", + "staker": { + "stakedAmount": "100", + "lockedAmount": "25", + "withdrawnAmount": "25", + "slashedAmount": "25", + "lockedUntilTimestamp": "123456789", + "lastDepositTimestamp": "123456789", + }, } } } @@ -388,12 +394,11 @@ def test_get_operator_when_job_types_is_none(self): self.assertNotEqual(operator, None) self.assertEqual(operator.id, staker_address) self.assertEqual(operator.address, staker_address) - self.assertEqual(operator.amount_staked, 100) - self.assertEqual(operator.amount_locked, 25) - self.assertEqual(operator.locked_until_timestamp, 0) - self.assertEqual(operator.amount_withdrawn, 25) - self.assertEqual(operator.amount_slashed, 25) - self.assertEqual(operator.reward, 25) + self.assertEqual(operator.staked_amount, 100) + self.assertEqual(operator.locked_amount, 25) + self.assertEqual(operator.locked_until_timestamp, 123456789000) + self.assertEqual(operator.withdrawn_amount, 25) + self.assertEqual(operator.slashed_amount, 25) self.assertEqual(operator.amount_jobs_processed, 25) self.assertEqual(operator.role, "role") self.assertEqual(operator.fee, None) @@ -422,12 +427,6 @@ def test_get_operator_when_job_types_is_array(self): "operator": { "id": staker_address, "address": staker_address, - "amountStaked": "100", - "amountLocked": "25", - "lockedUntilTimestamp": "0", - "amountWithdrawn": "25", - "amountSlashed": "25", - "reward": "25", "amountJobsProcessed": "25", "role": "role", "fee": None, @@ -439,6 +438,14 @@ def test_get_operator_when_job_types_is_array(self): "reputationNetworks": [{"address": "0x01"}], "name": "Alice", "category": "machine_learning", + "staker": { + "stakedAmount": "100", + "lockedAmount": "25", + "withdrawnAmount": "25", + "slashedAmount": "25", + "lockedUntilTimestamp": "123456789", + "lastDepositTimestamp": "123456789", + }, } } } @@ -455,12 +462,11 @@ def test_get_operator_when_job_types_is_array(self): self.assertNotEqual(operator, None) self.assertEqual(operator.id, staker_address) self.assertEqual(operator.address, staker_address) - self.assertEqual(operator.amount_staked, 100) - self.assertEqual(operator.amount_locked, 25) - self.assertEqual(operator.locked_until_timestamp, 0) - self.assertEqual(operator.amount_withdrawn, 25) - self.assertEqual(operator.amount_slashed, 25) - self.assertEqual(operator.reward, 25) + self.assertEqual(operator.staked_amount, 100) + self.assertEqual(operator.locked_amount, 25) + self.assertEqual(operator.locked_until_timestamp, 123456789000) + self.assertEqual(operator.withdrawn_amount, 25) + self.assertEqual(operator.slashed_amount, 25) self.assertEqual(operator.amount_jobs_processed, 25) self.assertEqual(operator.role, "role") self.assertEqual(operator.fee, None) @@ -519,6 +525,7 @@ def test_get_reputation_network_operators(self): "jobTypes": job_types, "registrationNeeded": True, "registrationInstructions": url, + "amountJobsProcessed": "25", } ], } @@ -570,6 +577,7 @@ def test_get_reputation_network_operators_when_job_types_is_none(self): "jobTypes": job_types, "registrationNeeded": True, "registrationInstructions": url, + "amountJobsProcessed": "25", } ], } @@ -621,6 +629,7 @@ def test_get_reputation_network_operators_when_job_types_is_array(self): "jobTypes": job_types, "registrationNeeded": True, "registrationInstructions": url, + "amountJobsProcessed": "25", } ], } diff --git a/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/staking/test_staking_utils.py b/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/staking/test_staking_utils.py new file mode 100644 index 0000000000..0f9183eb8b --- /dev/null +++ b/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/staking/test_staking_utils.py @@ -0,0 +1,200 @@ +import unittest +from unittest.mock import patch + +from human_protocol_sdk.constants import NETWORKS, ChainId, OrderDirection +from human_protocol_sdk.filter import StakersFilter +from human_protocol_sdk.staking.staking_utils import ( + StakingUtils, + StakingUtilsError, + StakerData, +) +from human_protocol_sdk.gql.staking import get_staker_query, get_stakers_query + + +class TestStakingUtils(unittest.TestCase): + def test_get_stakers(self): + with patch( + "human_protocol_sdk.staking.staking_utils.get_data_from_subgraph" + ) as mock_function: + mock_staker_1 = { + "id": "1", + "address": "0x123", + "stakedAmount": "1000", + "lockedAmount": "100", + "withdrawnAmount": "900", + "slashedAmount": "0", + "lockedUntilTimestamp": "1234567890", + "lastDepositTimestamp": "1234567891", + } + mock_staker_2 = { + "id": "2", + "address": "0x456", + "stakedAmount": "2000", + "lockedAmount": "200", + "withdrawnAmount": "1800", + "slashedAmount": "0", + "lockedUntilTimestamp": "1234567892", + "lastDepositTimestamp": "1234567893", + } + + mock_function.return_value = { + "data": {"stakers": [mock_staker_1, mock_staker_2]} + } + + filter = StakersFilter( + chain_id=ChainId.POLYGON_AMOY, + min_staked_amount="1000", + order_by="stakedAmount", + order_direction=OrderDirection.ASC, + first=2, + skip=0, + ) + + stakers = StakingUtils.get_stakers(filter) + + mock_function.assert_called_once_with( + NETWORKS[ChainId.POLYGON_AMOY], + query=get_stakers_query(filter), + params={ + "minStakedAmount": "1000", + "maxStakedAmount": None, + "minLockedAmount": None, + "maxLockedAmount": None, + "minWithdrawnAmount": None, + "maxWithdrawnAmount": None, + "minSlashedAmount": None, + "maxSlashedAmount": None, + "orderBy": "stakedAmount", + "orderDirection": "asc", + "first": 2, + "skip": 0, + }, + ) + self.assertEqual(len(stakers), 2) + self.assertIsInstance(stakers[0], StakerData) + self.assertEqual(stakers[0].id, "1") + self.assertEqual(stakers[0].address, mock_staker_1["address"]) + self.assertEqual( + stakers[0].staked_amount, int(mock_staker_1["stakedAmount"]) + ) + self.assertEqual( + stakers[0].locked_amount, int(mock_staker_1["lockedAmount"]) + ) + self.assertEqual( + stakers[0].withdrawn_amount, int(mock_staker_1["withdrawnAmount"]) + ) + self.assertEqual( + stakers[0].slashed_amount, int(mock_staker_1["slashedAmount"]) + ) + self.assertEqual( + stakers[0].locked_until_timestamp, + int(mock_staker_1["lockedUntilTimestamp"]) * 1000, + ) + self.assertEqual( + stakers[0].last_deposit_timestamp, + int(mock_staker_1["lastDepositTimestamp"]) * 1000, + ) + self.assertIsInstance(stakers[1], StakerData) + self.assertEqual(stakers[1].id, "2") + self.assertEqual(stakers[1].address, mock_staker_2["address"]) + self.assertEqual( + stakers[1].staked_amount, int(mock_staker_2["stakedAmount"]) + ) + self.assertEqual( + stakers[1].locked_amount, int(mock_staker_2["lockedAmount"]) + ) + self.assertEqual( + stakers[1].withdrawn_amount, int(mock_staker_2["withdrawnAmount"]) + ) + self.assertEqual( + stakers[1].slashed_amount, int(mock_staker_2["slashedAmount"]) + ) + self.assertEqual( + stakers[1].locked_until_timestamp, + int(mock_staker_2["lockedUntilTimestamp"]) * 1000, + ) + self.assertEqual( + stakers[1].last_deposit_timestamp, + int(mock_staker_2["lastDepositTimestamp"]) * 1000, + ) + + def test_get_stakers_empty_response(self): + with patch( + "human_protocol_sdk.staking.staking_utils.get_data_from_subgraph" + ) as mock_function: + mock_function.return_value = {"data": {"stakers": []}} + + filter = StakersFilter(chain_id=ChainId.POLYGON_AMOY) + + stakers = StakingUtils.get_stakers(filter) + + mock_function.assert_called_once() + self.assertEqual(len(stakers), 0) + + def test_get_stakers_invalid_network(self): + with self.assertRaises(ValueError) as cm: + filter = StakersFilter(chain_id=ChainId(123)) + StakingUtils.get_stakers(filter) + self.assertEqual(str(cm.exception), "123 is not a valid ChainId") + + def test_get_staker(self): + with patch( + "human_protocol_sdk.staking.staking_utils.get_data_from_subgraph" + ) as mock_function: + mock_staker = { + "id": "1", + "address": "0x123", + "stakedAmount": "1000", + "lockedAmount": "100", + "withdrawnAmount": "900", + "slashedAmount": "0", + "lockedUntilTimestamp": "1234567890", + "lastDepositTimestamp": "1234567891", + } + + mock_function.return_value = {"data": {"staker": mock_staker}} + + staker = StakingUtils.get_staker(ChainId.POLYGON_AMOY, "0x123") + + mock_function.assert_called_once_with( + NETWORKS[ChainId.POLYGON_AMOY], + query=get_staker_query(), + params={"id": "0x123"}, + ) + self.assertIsInstance(staker, StakerData) + self.assertEqual(staker.id, "1") + self.assertEqual(staker.address, mock_staker["address"]) + self.assertEqual(staker.staked_amount, int(mock_staker["stakedAmount"])) + self.assertEqual(staker.locked_amount, int(mock_staker["lockedAmount"])) + self.assertEqual( + staker.withdrawn_amount, int(mock_staker["withdrawnAmount"]) + ) + self.assertEqual(staker.slashed_amount, int(mock_staker["slashedAmount"])) + self.assertEqual( + staker.locked_until_timestamp, + int(mock_staker["lockedUntilTimestamp"]) * 1000, + ) + self.assertEqual( + staker.last_deposit_timestamp, + int(mock_staker["lastDepositTimestamp"]) * 1000, + ) + + def test_get_staker_empty_data(self): + with patch( + "human_protocol_sdk.staking.staking_utils.get_data_from_subgraph" + ) as mock_function: + mock_function.return_value = {"data": {"staker": None}} + + staker = StakingUtils.get_staker(ChainId.POLYGON_AMOY, "0x123") + + mock_function.assert_called_once() + self.assertIsNone(staker) + + def test_get_staker_invalid_chain_id(self): + with self.assertRaises(ValueError) as cm: + StakingUtils.get_staker(ChainId(123), "0x123") + self.assertEqual(str(cm.exception), "123 is not a valid ChainId") + + +if __name__ == "__main__": + unittest.main(exit=True) diff --git a/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/transaction/test_transaction_utils.py b/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/transaction/test_transaction_utils.py index 77c812c759..aee4e3914f 100644 --- a/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/transaction/test_transaction_utils.py +++ b/packages/sdk/python/human-protocol-sdk/test/human_protocol_sdk/transaction/test_transaction_utils.py @@ -19,11 +19,11 @@ def test_get_transactions(self): "human_protocol_sdk.transaction.transaction_utils.get_data_from_subgraph" ) as mock_function: mock_transaction_1 = { - "block": 123, + "block": "123", "txHash": "0x1234567890123456789012345678901234567890123456789012345678901234", "from": "0x1234567890123456789012345678901234567890", "to": "0x9876543210987654321098765432109876543210", - "timestamp": 1622700000, + "timestamp": "1622700000", "value": "1000000000000000000", "method": "transfer", "internalTransactions": [ @@ -36,11 +36,11 @@ def test_get_transactions(self): ], } mock_transaction_2 = { - "block": 456, + "block": "456", "txHash": "0x9876543210987654321098765432109876543210987654321098765432109876", "from": "0x9876543210987654321098765432109876543210", "to": "0x1234567890123456789012345678901234567890", - "timestamp": 1622800000, + "timestamp": "1622800000", "value": "2000000000000000000", "method": "transfer", "internalTransactions": [ @@ -151,11 +151,11 @@ def test_get_transaction(self): "human_protocol_sdk.transaction.transaction_utils.get_data_from_subgraph" ) as mock_function: mock_transaction = { - "block": 123, + "block": "123", "txHash": "0x1234567890123456789012345678901234567890123456789012345678901234", "from": "0x1234567890123456789012345678901234567890", "to": "0x9876543210987654321098765432109876543210", - "timestamp": 1622700000, + "timestamp": "1622700000", "value": "1000000000000000000", "method": "transfer", "internalTransactions": [ @@ -184,12 +184,14 @@ def test_get_transaction(self): ) self.assertIsNotNone(transaction) self.assertEqual(transaction.chain_id, ChainId.POLYGON_AMOY) - self.assertEqual(transaction.block, mock_transaction["block"]) + self.assertEqual(transaction.block, int(mock_transaction["block"])) self.assertEqual(transaction.tx_hash, mock_transaction["txHash"]) self.assertEqual(transaction.from_address, mock_transaction["from"]) self.assertEqual(transaction.to_address, mock_transaction["to"]) - self.assertEqual(transaction.timestamp, mock_transaction["timestamp"]) - self.assertEqual(transaction.value, mock_transaction["value"]) + self.assertEqual( + transaction.timestamp, int(mock_transaction["timestamp"]) * 1000 + ) + self.assertEqual(transaction.value, int(mock_transaction["value"])) self.assertEqual(transaction.method, mock_transaction["method"]) def test_get_transaction_empty_data(self): diff --git a/packages/sdk/typescript/human-protocol-sdk/example/staking.ts b/packages/sdk/typescript/human-protocol-sdk/example/staking.ts new file mode 100644 index 0000000000..8c4f66a6a4 --- /dev/null +++ b/packages/sdk/typescript/human-protocol-sdk/example/staking.ts @@ -0,0 +1,30 @@ +/* eslint-disable no-console */ +import { StakingUtils } from '../src/staking'; +import { ChainId, OrderDirection } from '../src/enums'; +import { ethers } from 'ethers'; + +const runStakingExamples = async () => { + const stakers = await StakingUtils.getStakers({ + chainId: ChainId.POLYGON_AMOY, + maxLockedAmount: ethers.parseEther('5').toString(), + orderBy: 'lastDepositTimestamp', + orderDirection: OrderDirection.ASC, + first: 5, + skip: 0, + }); + console.log('Filtered stakers:', stakers); + + try { + const staker = await StakingUtils.getStaker( + ChainId.POLYGON_AMOY, + stakers[0].address + ); + console.log('Staker info:', staker); + } catch (e) { + console.log('Staker not found'); + } +}; + +(async () => { + await runStakingExamples(); +})(); diff --git a/packages/sdk/typescript/human-protocol-sdk/package.json b/packages/sdk/typescript/human-protocol-sdk/package.json index e07378c913..f5b2ad9361 100644 --- a/packages/sdk/typescript/human-protocol-sdk/package.json +++ b/packages/sdk/typescript/human-protocol-sdk/package.json @@ -1,7 +1,7 @@ { "name": "@human-protocol/sdk", "description": "Human Protocol SDK", - "version": "4.4.0", + "version": "5.0.0-beta.3", "files": [ "src", "dist" diff --git a/packages/sdk/typescript/human-protocol-sdk/src/constants.ts b/packages/sdk/typescript/human-protocol-sdk/src/constants.ts index 95610ab7dd..57b854c414 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/constants.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/constants.ts @@ -54,7 +54,7 @@ export const NETWORKS: { subgraphUrl: 'https://api.studio.thegraph.com/query/74256/sepolia/version/latest', subgraphUrlApiKey: - 'https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmURrhnEXimGnRzjeN3B4VMmioUeBHUBg4WJ7KZzJ7em8g', + 'https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmT4xNvZh8ymarrk1zdytjLhCW59iuTavsd4JgHS4LbCVB', oldSubgraphUrl: '', oldFactoryAddress: '', }, @@ -84,7 +84,7 @@ export const NETWORKS: { subgraphUrl: 'https://api.studio.thegraph.com/query/74256/bsc-testnet/version/latest', subgraphUrlApiKey: - 'https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmZHqbiyAAwrmqsVJLhTEdejVGYJpXfJAkJXUw7C2VV1TD', + 'https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmZjYMktZe8RAz7W7qL33VZBV6AC57xsLyE1cEfv6NABdZ', oldSubgraphUrl: 'https://api.thegraph.com/subgraphs/name/humanprotocol/bsctest', oldFactoryAddress: '0xaae6a2646c1f88763e62e0cd08ad050ea66ac46f', @@ -116,7 +116,7 @@ export const NETWORKS: { subgraphUrl: 'https://api.studio.thegraph.com/query/74256/amoy/version/latest', subgraphUrlApiKey: - 'https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmeeE9bVkat1mkbQg1R6SXLuLadXxoNCY5b7CEQkmu6cQi', + 'https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmWRUFWpWoRRUh7Ec1HUJEwxc84DkP4iFTfLLsoVngJAPa', oldSubgraphUrl: '', oldFactoryAddress: '', }, @@ -131,7 +131,7 @@ export const NETWORKS: { subgraphUrl: 'https://api.studio.thegraph.com/query/74256/amoy/version/latest', subgraphUrlApiKey: - 'https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmQiLaFKusXLzKrpZvQDg7vETLhdfPgzWJN3Uxp3bE9K9W', + 'https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmVHYvjbsgAroR9EMgqqGTQ7aKPRFMVekY6evU6mFPUU7J', oldSubgraphUrl: '', oldFactoryAddress: '', }, diff --git a/packages/sdk/typescript/human-protocol-sdk/src/error.ts b/packages/sdk/typescript/human-protocol-sdk/src/error.ts index 729239ee8f..a4c4d9fae7 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/error.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/error.ts @@ -170,6 +170,11 @@ export const ErrorProviderDoesNotExist = new Error('Provider does not exist'); */ export const ErrorUnsupportedChainID = new Error('Unsupported chain ID'); +/** + * @constant {Error} - Staker not found. + */ +export const ErrorStakerNotFound = new Error('Staker not found'); + /** * @constant {Error} - Sending a transaction requires a signer. */ @@ -206,13 +211,6 @@ export const ErrorInvalidUrl = new Error('Invalid URL string'); */ export const ErrorInvalidManifest = new Error('Invalid manifest'); -/** - * @constant {Error} - List of handlers cannot be empty. - */ -export const ErrorListOfHandlersCannotBeEmpty = new Error( - 'List of handlers cannot be empty' -); - /** * @constant {Error} - No URL provided. */ @@ -294,6 +292,26 @@ export const ErrorInvalidHash = new Error('Invalid hash'); */ export const ErrorUnsupportedStatus = new Error('Unsupported status for query'); +/** + * @constant {Error} - Invalid storeResults parameters for the escrow version + */ +export const ErrorStoreResultsVersion = new Error( + 'Invalid storeResults parameters for the contract version of the specified escrow address' +); + +/** + * @constant {Error} - Invalid bulkPayOut parameters for the escrow version + */ +export const ErrorBulkPayOutVersion = new Error( + 'Invalid bulkPayOut parameters for the contract version of the specified escrow address' +); + +/** + * @constant {Warning} - Possible version mismatch. + */ +export const WarnVersionMismatch = + 'There may be a mismatch between the parameters passed and the expected parameters of the escrow contract version'; + /** * @constant {Warning} - The SUBGRAPH_API_KEY is not being provided. */ diff --git a/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts b/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts index 15fcd53a91..cf1f946b96 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/escrow.ts @@ -18,6 +18,7 @@ import { ChainId, OrderDirection } from './enums'; import { ErrorAmountMustBeGreaterThanZero, ErrorAmountsCannotBeEmptyArray, + ErrorBulkPayOutVersion, ErrorEscrowAddressIsNotProvidedByFactory, ErrorEscrowDoesNotHaveEnoughBalance, ErrorHashIsEmptyString, @@ -30,22 +31,27 @@ import { ErrorInvalidTokenAddress, ErrorInvalidUrl, ErrorLaunchedEventIsNotEmitted, - ErrorListOfHandlersCannotBeEmpty, ErrorProviderDoesNotExist, ErrorRecipientAndAmountsMustBeSameLength, ErrorRecipientCannotBeEmptyArray, + ErrorStoreResultsVersion, ErrorTooManyRecipients, ErrorTotalFeeMustBeLessThanHundred, ErrorTransferEventNotFoundInTransactionLogs, ErrorUnsupportedChainID, InvalidEthereumAddressError, + WarnVersionMismatch, } from './error'; import { + CancellationRefundData, EscrowData, + GET_CANCELLATION_REFUNDS_QUERY, + GET_CANCELLATION_REFUND_BY_ADDRESS_QUERY, GET_ESCROWS_QUERY, GET_ESCROW_BY_ADDRESS_QUERY, GET_PAYOUTS_QUERY, GET_STATUS_UPDATES_QUERY, + PayoutData, StatusEvent, } from './graphql'; import { @@ -54,15 +60,12 @@ import { IEscrowsFilter, IPayoutFilter, IStatusEventFilter, + IStatusEvent, + ICancellationRefund, + IPayout, + IEscrowWithdraw, } from './interfaces'; -import { - EscrowCancel, - EscrowStatus, - EscrowWithdraw, - NetworkData, - TransactionLikeWithNonce, - Payout, -} from './types'; +import { EscrowStatus, NetworkData, TransactionLikeWithNonce } from './types'; import { getSubgraphUrl, getUnixTimestamp, @@ -200,9 +203,8 @@ export class EscrowClient extends BaseEthersClient { /** * This function creates an escrow contract that uses the token passed to pay oracle fees and reward workers. * - * @param {string} tokenAddress Token address to use for payouts. - * @param {string[]} trustedHandlers Array of addresses that can perform actions on the contract. - * @param {string} jobRequesterId Job Requester Id + * @param {string} tokenAddress - The address of the token to use for escrow funding. + * @param {string} jobRequesterId - Identifier for the job requester. * @param {Overrides} [txOptions] - Additional transaction parameters (optional, defaults to an empty object). * @returns {Promise} Returns the address of the escrow created. * @@ -223,15 +225,13 @@ export class EscrowClient extends BaseEthersClient { * const escrowClient = await EscrowClient.build(signer); * * const tokenAddress = '0x0376D26246Eb35FF4F9924cF13E6C05fd0bD7Fb4'; - * const trustedHandlers = ['0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266']; * const jobRequesterId = "job-requester-id"; - * const escrowAddress = await escrowClient.createEscrow(tokenAddress, trustedHandlers, jobRequesterId); + * const escrowAddress = await escrowClient.createEscrow(tokenAddress, jobRequesterId); * ``` */ @requiresSigner public async createEscrow( tokenAddress: string, - trustedHandlers: string[], jobRequesterId: string, txOptions: Overrides = {} ): Promise { @@ -239,18 +239,172 @@ export class EscrowClient extends BaseEthersClient { throw ErrorInvalidTokenAddress; } - trustedHandlers.forEach((trustedHandler) => { - if (!ethers.isAddress(trustedHandler)) { - throw new InvalidEthereumAddressError(trustedHandler); + try { + const result = await ( + await this.escrowFactoryContract.createEscrow( + tokenAddress, + jobRequesterId, + this.applyTxDefaults(txOptions) + ) + ).wait(); + + const event = ( + result?.logs?.find(({ topics }) => + topics.includes(ethers.id('LaunchedV2(address,address,string)')) + ) as EventLog + )?.args; + + if (!event) { + throw ErrorLaunchedEventIsNotEmitted; } - }); + + return event.escrow; + } catch (e: any) { + return throwError(e); + } + } + private verifySetupParameters(escrowConfig: IEscrowConfig) { + const { + recordingOracle, + reputationOracle, + exchangeOracle, + recordingOracleFee, + reputationOracleFee, + exchangeOracleFee, + manifest, + manifestHash, + } = escrowConfig; + + if (!ethers.isAddress(recordingOracle)) { + throw ErrorInvalidRecordingOracleAddressProvided; + } + + if (!ethers.isAddress(reputationOracle)) { + throw ErrorInvalidReputationOracleAddressProvided; + } + + if (!ethers.isAddress(exchangeOracle)) { + throw ErrorInvalidExchangeOracleAddressProvided; + } + + if ( + recordingOracleFee <= 0 || + reputationOracleFee <= 0 || + exchangeOracleFee <= 0 + ) { + throw ErrorAmountMustBeGreaterThanZero; + } + + if (recordingOracleFee + reputationOracleFee + exchangeOracleFee > 100) { + throw ErrorTotalFeeMustBeLessThanHundred; + } + + const isManifestValid = isValidUrl(manifest) || isValidJson(manifest); + if (!isManifestValid) { + throw ErrorInvalidManifest; + } + + if (!manifestHash) { + throw ErrorHashIsEmptyString; + } + } + + /** + * Creates, funds, and sets up a new escrow contract in a single transaction. + * + * @param {string} tokenAddress - The ERC-20 token address used to fund the escrow. + * @param {bigint} amount - The token amount to fund the escrow with. + * @param {string} jobRequesterId - An off-chain identifier for the job requester. + * @param {IEscrowConfig} escrowConfig - Configuration parameters for escrow setup: + * - `recordingOracle`: Address of the recording oracle. + * - `reputationOracle`: Address of the reputation oracle. + * - `exchangeOracle`: Address of the exchange oracle. + * - `recordingOracleFee`: Fee (in basis points or percentage * 100) for the recording oracle. + * - `reputationOracleFee`: Fee for the reputation oracle. + * - `exchangeOracleFee`: Fee for the exchange oracle. + * - `manifest`: URL to the manifest file. + * - `manifestHash`: Hash of the manifest content. + * @param {Overrides} [txOptions] - Additional transaction parameters (optional, defaults to an empty object). + * + * @returns {Promise} Returns the address of the escrow created. + * + * @example + * import { Wallet, ethers } from 'ethers'; + * import { EscrowClient, IERC20__factory } from '@human-protocol/sdk'; + * + * const rpcUrl = 'YOUR_RPC_URL'; + * const privateKey = 'YOUR_PRIVATE_KEY'; + * const provider = new ethers.JsonRpcProvider(rpcUrl); + * const signer = new Wallet(privateKey, provider); + * + * const escrowClient = await EscrowClient.build(signer); + * + * const tokenAddress = '0xTokenAddress'; + * const amount = ethers.parseUnits('1000', 18); + * const jobRequesterId = 'requester-123'; + * + * const token = IERC20__factory.connect(tokenAddress, signer); + * await token.approve(escrowClient.escrowFactoryContract.target, amount); + * + * const escrowConfig = { + * recordingOracle: '0xRecordingOracle', + * reputationOracle: '0xReputationOracle', + * exchangeOracle: '0xExchangeOracle', + * recordingOracleFee: 5n, + * reputationOracleFee: 5n, + * exchangeOracleFee: 5n, + * manifest: 'https://example.com/manifest.json', + * manifestHash: 'manifestHash-123', + * } satisfies IEscrowConfig; + * + * const escrowAddress = await escrowClient.createFundAndSetupEscrow( + * tokenAddress, + * amount, + * jobRequesterId, + * escrowConfig + * ); + * + * console.log('Escrow created at:', escrowAddress); + */ + @requiresSigner + public async createFundAndSetupEscrow( + tokenAddress: string, + amount: bigint, + jobRequesterId: string, + escrowConfig: IEscrowConfig, + txOptions: Overrides = {} + ): Promise { + if (!ethers.isAddress(tokenAddress)) { + throw ErrorInvalidTokenAddress; + } + + this.verifySetupParameters(escrowConfig); + + const { + recordingOracle, + reputationOracle, + exchangeOracle, + recordingOracleFee, + reputationOracleFee, + exchangeOracleFee, + manifest, + manifestHash, + } = escrowConfig; try { const result = await ( - await this.escrowFactoryContract.createEscrow( + await this.escrowFactoryContract.createFundAndSetupEscrow( tokenAddress, - trustedHandlers, + amount, jobRequesterId, + reputationOracle, + recordingOracle, + exchangeOracle, + reputationOracleFee, + recordingOracleFee, + exchangeOracleFee, + manifest, + manifestHash, this.applyTxDefaults(txOptions) ) ).wait(); @@ -282,7 +436,7 @@ export class EscrowClient extends BaseEthersClient { * * **Code example** * - * > Only Job Launcher or a trusted handler can call it. + * > Only Job Launcher or admin can call it. * * ```ts * import { Wallet, providers } from 'ethers'; @@ -326,43 +480,12 @@ export class EscrowClient extends BaseEthersClient { manifestHash, } = escrowConfig; - if (!ethers.isAddress(recordingOracle)) { - throw ErrorInvalidRecordingOracleAddressProvided; - } - - if (!ethers.isAddress(reputationOracle)) { - throw ErrorInvalidReputationOracleAddressProvided; - } - - if (!ethers.isAddress(exchangeOracle)) { - throw ErrorInvalidExchangeOracleAddressProvided; - } + this.verifySetupParameters(escrowConfig); if (!ethers.isAddress(escrowAddress)) { throw ErrorInvalidEscrowAddressProvided; } - if ( - recordingOracleFee <= 0 || - reputationOracleFee <= 0 || - exchangeOracleFee <= 0 - ) { - throw ErrorAmountMustBeGreaterThanZero; - } - - if (recordingOracleFee + reputationOracleFee + exchangeOracleFee > 100) { - throw ErrorTotalFeeMustBeLessThanHundred; - } - - const isManifestValid = isValidUrl(manifest) || isValidJson(manifest); - if (!isManifestValid) { - throw ErrorInvalidManifest; - } - - if (!manifestHash) { - throw ErrorHashIsEmptyString; - } - if (!(await this.escrowFactoryContract.hasEscrow(escrowAddress))) { throw ErrorEscrowAddressIsNotProvidedByFactory; } @@ -457,6 +580,44 @@ export class EscrowClient extends BaseEthersClient { } } + /** + * This function stores the results URL and hash. + * + * @param {string} escrowAddress Address of the escrow. + * @param {string} url Results file URL. + * @param {string} hash Results file hash. + * @param {bigint} fundsToReserve Funds to reserve for payouts + * @param {Overrides} [txOptions] - Additional transaction parameters (optional, defaults to an empty object). + * @returns Returns void if successful. Throws error if any. + * + * + * **Code example** + * + * > Only Recording Oracle or admin can call it. + * + * ```ts + * import { ethers, Wallet, providers } from 'ethers'; + * import { EscrowClient } from '@human-protocol/sdk'; + * + * const rpcUrl = 'YOUR_RPC_URL'; + * const privateKey = 'YOUR_PRIVATE_KEY'; + * + * const provider = new providers.JsonRpcProvider(rpcUrl); + * const signer = new Wallet(privateKey, provider); + * const escrowClient = await EscrowClient.build(signer); + * + * await escrowClient.storeResults('0x62dD51230A30401C455c8398d06F85e4EaB6309f', 'http://localhost/results.json', 'b5dad76bf6772c0f07fd5e048f6e75a5f86ee079', ethers.parseEther('10')); + * ``` + */ + + async storeResults( + escrowAddress: string, + url: string, + hash: string, + fundsToReserve: bigint, + txOptions?: Overrides + ): Promise; + /** * This function stores the results URL and hash. * @@ -469,7 +630,7 @@ export class EscrowClient extends BaseEthersClient { * * **Code example** * - * > Only Recording Oracle or a trusted handler can call it. + * > Only Recording Oracle or admin can call it. * * ```ts * import { ethers, Wallet, providers } from 'ethers'; @@ -485,26 +646,38 @@ export class EscrowClient extends BaseEthersClient { * await escrowClient.storeResults('0x62dD51230A30401C455c8398d06F85e4EaB6309f', 'http://localhost/results.json', 'b5dad76bf6772c0f07fd5e048f6e75a5f86ee079'); * ``` */ + async storeResults( + escrowAddress: string, + url: string, + hash: string, + txOptions?: Overrides + ): Promise; + @requiresSigner async storeResults( escrowAddress: string, url: string, hash: string, - txOptions: Overrides = {} + a?: bigint | Overrides, + b?: Overrides ): Promise { + const escrowContract = this.getEscrowContract(escrowAddress); + + const hasFundsToReserveParam = typeof a === 'bigint'; + const fundsToReserve = hasFundsToReserveParam ? (a as bigint) : null; + const txOptions = (hasFundsToReserveParam ? b : a) || {}; + // When fundsToReserve is provided and is 0, allow empty URL. + // In this situation not solutions might have been provided so the escrow can be straight cancelled. + const allowEmptyUrl = hasFundsToReserveParam && fundsToReserve === 0n; + if (!ethers.isAddress(escrowAddress)) { throw ErrorInvalidEscrowAddressProvided; } - - if (!url) { - throw ErrorInvalidUrl; - } - - if (!isValidUrl(url)) { + if (!allowEmptyUrl && !isValidUrl(url)) { throw ErrorInvalidUrl; } - if (!hash) { + if (!hash && !allowEmptyUrl) { throw ErrorHashIsEmptyString; } @@ -513,18 +686,30 @@ export class EscrowClient extends BaseEthersClient { } try { - const escrowContract = this.getEscrowContract(escrowAddress); - - await ( - await escrowContract.storeResults( - url, - hash, - this.applyTxDefaults(txOptions) - ) - ).wait(); - - return; + if (fundsToReserve !== null) { + await ( + await escrowContract['storeResults(string,string,uint256)']( + url, + hash, + fundsToReserve, + this.applyTxDefaults(txOptions) + ) + ).wait(); + } else { + await ( + await escrowContract['storeResults(string,string)']( + url, + hash, + this.applyTxDefaults(txOptions) + ) + ).wait(); + } } catch (e) { + if (!hasFundsToReserveParam && e.reason === 'DEPRECATED_SIGNATURE') { + throw ErrorStoreResultsVersion; + } + // eslint-disable-next-line no-console + console.warn(WarnVersionMismatch); return throwError(e); } } @@ -539,7 +724,7 @@ export class EscrowClient extends BaseEthersClient { * * **Code example** * - * > Only Recording Oracle or a trusted handler can call it. + * > Only Recording Oracle or admin can call it. * * ```ts * import { Wallet, providers } from 'ethers'; @@ -596,7 +781,7 @@ export class EscrowClient extends BaseEthersClient { * * **Code example** * - * > Only Reputation Oracle or a trusted handler can call it. + * > Only Reputation Oracle or admin can call it. * * ```ts * import { ethers, Wallet, providers } from 'ethers'; @@ -615,10 +800,9 @@ export class EscrowClient extends BaseEthersClient { * const resultsHash = 'b5dad76bf6772c0f07fd5e048f6e75a5f86ee079'; * const txId = 1; * - * await escrowClient.bulkPayOut('0x62dD51230A30401C455c8398d06F85e4EaB6309f', recipients, amounts, resultsUrl, resultsHash, txId); + * await escrowClient.bulkPayOut('0x62dD51230A30401C455c8398d06F85e4EaB6309f', recipients, amounts, resultsUrl, resultsHash, txId, true); * ``` */ - @requiresSigner async bulkPayOut( escrowAddress: string, recipients: string[], @@ -626,7 +810,69 @@ export class EscrowClient extends BaseEthersClient { finalResultsUrl: string, finalResultsHash: string, txId: number, - forceComplete = false, + forceComplete: boolean, + txOptions: Overrides + ): Promise; + + /** + * This function pays out the amounts specified to the workers and sets the URL of the final results file. + * + * @param {string} escrowAddress Escrow address to payout. + * @param {string[]} recipients Array of recipient addresses. + * @param {bigint[]} amounts Array of amounts the recipients will receive. + * @param {string} finalResultsUrl Final results file URL. + * @param {string} finalResultsHash Final results file hash. + * @param {string} payoutId Payout ID. + * @param {boolean} forceComplete Indicates if remaining balance should be transferred to the escrow creator (optional, defaults to false). + * @param {Overrides} [txOptions] - Additional transaction parameters (optional, defaults to an empty object). + * @returns Returns void if successful. Throws error if any. + * + * + * **Code example** + * + * > Only Reputation Oracle or admin can call it. + * + * ```ts + * import { ethers, Wallet, providers } from 'ethers'; + * import { EscrowClient } from '@human-protocol/sdk'; + * import { v4 as uuidV4 } from 'uuid'; + * + * const rpcUrl = 'YOUR_RPC_URL'; + * const privateKey = 'YOUR_PRIVATE_KEY'; + * + * const provider = new providers.JsonRpcProvider(rpcUrl); + * const signer = new Wallet(privateKey, provider); + * const escrowClient = await EscrowClient.build(signer); + * + * const recipients = ['0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266']; + * const amounts = [ethers.parseUnits(5, 'ether'), ethers.parseUnits(10, 'ether')]; + * const resultsUrl = 'http://localhost/results.json'; + * const resultsHash = 'b5dad76bf6772c0f07fd5e048f6e75a5f86ee079'; + * const payoutId = uuidV4(); + * + * await escrowClient.bulkPayOut('0x62dD51230A30401C455c8398d06F85e4EaB6309f', recipients, amounts, resultsUrl, resultsHash, payoutId, true); + * ``` + */ + async bulkPayOut( + escrowAddress: string, + recipients: string[], + amounts: bigint[], + finalResultsUrl: string, + finalResultsHash: string, + payoutId: string, + forceComplete: boolean, + txOptions: Overrides + ): Promise; + + @requiresSigner + async bulkPayOut( + escrowAddress: string, + recipients: string[], + amounts: bigint[], + finalResultsUrl: string, + finalResultsHash: string, + id: number | string, + forceComplete: boolean, txOptions: Overrides = {} ): Promise { await this.ensureCorrectBulkPayoutInput( @@ -637,18 +883,20 @@ export class EscrowClient extends BaseEthersClient { finalResultsHash ); + const escrowContract = this.getEscrowContract(escrowAddress); + const idIsString = typeof id === 'string'; + try { - const escrowContract = this.getEscrowContract(escrowAddress); - if (forceComplete) { + if (idIsString) { await ( await escrowContract[ - 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' + 'bulkPayOut(address[],uint256[],string,string,string,bool)' ]( recipients, amounts, finalResultsUrl, finalResultsHash, - txId, + id, forceComplete, this.applyTxDefaults(txOptions) ) @@ -656,19 +904,24 @@ export class EscrowClient extends BaseEthersClient { } else { await ( await escrowContract[ - 'bulkPayOut(address[],uint256[],string,string,uint256)' + 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' ]( recipients, amounts, finalResultsUrl, finalResultsHash, - txId, + id, + forceComplete, this.applyTxDefaults(txOptions) ) ).wait(); } - return; } catch (e) { + if (!idIsString && e.reason === 'DEPRECATED_SIGNATURE') { + throw ErrorBulkPayOutVersion; + } + // eslint-disable-next-line no-console + console.warn(WarnVersionMismatch); return throwError(e); } } @@ -678,12 +931,11 @@ export class EscrowClient extends BaseEthersClient { * * @param {string} escrowAddress Address of the escrow to cancel. * @param {Overrides} [txOptions] - Additional transaction parameters (optional, defaults to an empty object). - * @returns {EscrowCancel} Returns the escrow cancellation data including transaction hash and refunded amount. Throws error if any. * * * **Code example** * - * > Only Job Launcher or a trusted handler can call it. + * > Only Job Launcher or admin can call it. * * ```ts * import { ethers, Wallet, providers } from 'ethers'; @@ -703,7 +955,7 @@ export class EscrowClient extends BaseEthersClient { async cancel( escrowAddress: string, txOptions: Overrides = {} - ): Promise { + ): Promise { if (!ethers.isAddress(escrowAddress)) { throw ErrorInvalidEscrowAddressProvided; } @@ -714,61 +966,24 @@ export class EscrowClient extends BaseEthersClient { try { const escrowContract = this.getEscrowContract(escrowAddress); - - const transactionReceipt = await ( + await ( await escrowContract.cancel(this.applyTxDefaults(txOptions)) ).wait(); - - let amountTransferred: bigint | undefined = undefined; - const tokenAddress = await escrowContract.token(); - - const tokenContract: HMToken = HMToken__factory.connect( - tokenAddress, - this.runner - ); - if (transactionReceipt) - for (const log of transactionReceipt.logs) { - if (log.address === tokenAddress) { - const parsedLog = tokenContract.interface.parseLog({ - topics: log.topics as string[], - data: log.data, - }); - - const from = parsedLog?.args[0]; - if (parsedLog?.name === 'Transfer' && from === escrowAddress) { - amountTransferred = parsedLog?.args[2]; - break; - } - } - } - - if (amountTransferred === undefined) { - throw ErrorTransferEventNotFoundInTransactionLogs; - } - - const escrowCancelData: EscrowCancel = { - txHash: transactionReceipt?.hash || '', - amountRefunded: amountTransferred, - }; - - return escrowCancelData; } catch (e) { return throwError(e); } } /** - * This function adds an array of addresses to the trusted handlers list. + * This function requests the cancellation of the specified escrow (moves status to ToCancel or finalizes if expired). * - * @param {string} escrowAddress Address of the escrow. - * @param {string[]} trustedHandlers Array of addresses of trusted handlers to add. + * @param {string} escrowAddress Address of the escrow to request cancellation. * @param {Overrides} [txOptions] - Additional transaction parameters (optional, defaults to an empty object). * @returns Returns void if successful. Throws error if any. * - * * **Code example** * - * > Only Job Launcher or trusted handler can call it. + * > Only Job Launcher or admin can call it. * * ```ts * import { Wallet, providers } from 'ethers'; @@ -781,44 +996,29 @@ export class EscrowClient extends BaseEthersClient { * const signer = new Wallet(privateKey, provider); * const escrowClient = await EscrowClient.build(signer); * - * const trustedHandlers = ['0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266']; - * await escrowClient.addTrustedHandlers('0x62dD51230A30401C455c8398d06F85e4EaB6309f', trustedHandlers); + * await escrowClient.requestCancellation('0x62dD51230A30401C455c8398d06F85e4EaB6309f'); * ``` */ @requiresSigner - async addTrustedHandlers( + async requestCancellation( escrowAddress: string, - trustedHandlers: string[], txOptions: Overrides = {} ): Promise { if (!ethers.isAddress(escrowAddress)) { throw ErrorInvalidEscrowAddressProvided; } - if (trustedHandlers.length === 0) { - throw ErrorListOfHandlersCannotBeEmpty; - } - - trustedHandlers.forEach((trustedHandler) => { - if (!ethers.isAddress(trustedHandler)) { - throw new InvalidEthereumAddressError(trustedHandler); - } - }); - if (!(await this.escrowFactoryContract.hasEscrow(escrowAddress))) { throw ErrorEscrowAddressIsNotProvidedByFactory; } try { const escrowContract = this.getEscrowContract(escrowAddress); - await ( - await escrowContract.addTrustedHandlers( - trustedHandlers, + await escrowContract.requestCancellation( this.applyTxDefaults(txOptions) ) ).wait(); - return; } catch (e) { return throwError(e); } @@ -830,12 +1030,12 @@ export class EscrowClient extends BaseEthersClient { * @param {string} escrowAddress Address of the escrow to withdraw. * @param {string} tokenAddress Address of the token to withdraw. * @param {Overrides} [txOptions] - Additional transaction parameters (optional, defaults to an empty object). - * @returns {EscrowWithdraw} Returns the escrow withdrawal data including transaction hash and withdrawal amount. Throws error if any. + * @returns {IEscrowWithdraw} Returns the escrow withdrawal data including transaction hash and withdrawal amount. Throws error if any. * * * **Code example** * - * > Only Job Launcher or a trusted handler can call it. + * > Only Job Launcher or admin can call it. * * ```ts * import { ethers, Wallet, providers } from 'ethers'; @@ -859,7 +1059,7 @@ export class EscrowClient extends BaseEthersClient { escrowAddress: string, tokenAddress: string, txOptions: Overrides = {} - ): Promise { + ): Promise { if (!ethers.isAddress(escrowAddress)) { throw ErrorInvalidEscrowAddressProvided; } @@ -898,7 +1098,7 @@ export class EscrowClient extends BaseEthersClient { const from = parsedLog?.args[0]; if (parsedLog?.name === 'Transfer' && from === escrowAddress) { - amountTransferred = parsedLog?.args[2]; + amountTransferred = BigInt(parsedLog?.args[2]); break; } } @@ -908,13 +1108,11 @@ export class EscrowClient extends BaseEthersClient { throw ErrorTransferEventNotFoundInTransactionLogs; } - const escrowWithdrawData: EscrowWithdraw = { + return { txHash: transactionReceipt?.hash || '', tokenAddress, - amountWithdrawn: amountTransferred, + withdrawnAmount: amountTransferred, }; - - return escrowWithdrawData; } catch (e) { return throwError(e); } @@ -927,14 +1125,14 @@ export class EscrowClient extends BaseEthersClient { * @param {bigint[]} amounts Array of amounts the recipients will receive. * @param {string} finalResultsUrl Final results file URL. * @param {string} finalResultsHash Final results file hash. - * @param {number} txId Transaction ID. + * @param {string} payoutId Payout ID to identify the payout. * @param {boolean} forceComplete Indicates if remaining balance should be transferred to the escrow creator (optional, defaults to false). * @param {Overrides} [txOptions] - Additional transaction parameters (optional, defaults to an empty object). * @returns Returns object with raw transaction and signed transaction hash * * **Code example** * - * > Only Reputation Oracle or a trusted handler can call it. + * > Only Reputation Oracle or admin can call it. * * ```ts * import { ethers, Wallet, providers } from 'ethers'; @@ -951,7 +1149,7 @@ export class EscrowClient extends BaseEthersClient { * const amounts = [ethers.parseUnits(5, 'ether'), ethers.parseUnits(10, 'ether')]; * const resultsUrl = 'http://localhost/results.json'; * const resultsHash = 'b5dad76bf6772c0f07fd5e048f6e75a5f86ee079'; - * const txId = 1; + * const payoutId = '372f6916-fe34-4711-b6e3-274f682047de'; * * const rawTransaction = await escrowClient.createBulkPayoutTransaction('0x62dD51230A30401C455c8398d06F85e4EaB6309f', recipients, amounts, resultsUrl, resultsHash, txId); * console.log('Raw transaction:', rawTransaction); @@ -967,7 +1165,7 @@ export class EscrowClient extends BaseEthersClient { amounts: bigint[], finalResultsUrl: string, finalResultsHash: string, - txId: number, + payoutId: string, forceComplete = false, txOptions: Overrides = {} ): Promise { @@ -985,13 +1183,13 @@ export class EscrowClient extends BaseEthersClient { const escrowContract = this.getEscrowContract(escrowAddress); const populatedTransaction = await escrowContract[ - 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' + 'bulkPayOut(address[],uint256[],string,string,string,bool)' ].populateTransaction( recipients, amounts, finalResultsUrl, finalResultsHash, - txId, + payoutId, forceComplete, txOptions ); @@ -1131,6 +1329,43 @@ export class EscrowClient extends BaseEthersClient { } } + /** + * This function returns the reserved funds for a specified escrow address. + * + * @param {string} escrowAddress Address of the escrow. + * @returns {Promise} Reserved funds of the escrow in the token used to fund it. + * + * **Code example** + * + * ```ts + * import { providers } from 'ethers'; + * import { EscrowClient } from '@human-protocol/sdk'; + * + * const rpcUrl = 'YOUR_RPC_URL'; + * + * const provider = new providers.JsonRpcProvider(rpcUrl); + * const escrowClient = await EscrowClient.build(provider); + * + * const reservedFunds = await escrowClient.getReservedFunds('0x62dD51230A30401C455c8398d06F85e4EaB6309f'); + * ``` + */ + async getReservedFunds(escrowAddress: string): Promise { + if (!ethers.isAddress(escrowAddress)) { + throw ErrorInvalidEscrowAddressProvided; + } + + if (!(await this.escrowFactoryContract.hasEscrow(escrowAddress))) { + throw ErrorEscrowAddressIsNotProvidedByFactory; + } + + try { + const escrowContract = this.getEscrowContract(escrowAddress); + return await escrowContract.reservedFunds(); + } catch (e) { + return throwError(e); + } + } + /** * This function returns the manifest file hash. * @@ -1283,6 +1518,44 @@ export class EscrowClient extends BaseEthersClient { } } + /** + * This function returns the intermediate results hash. + * + * @param {string} escrowAddress Address of the escrow. + * @returns {Promise} Hash of the intermediate results file content. + * + * **Code example** + * + * ```ts + * import { providers } from 'ethers'; + * import { EscrowClient } from '@human-protocol/sdk'; + * + * const rpcUrl = 'YOUR_RPC_URL'; + * + * const provider = new providers.JsonRpcProvider(rpcUrl); + * const escrowClient = await EscrowClient.build(provider); + * + * const intermediateResultsHash = await escrowClient.getIntermediateResultsHash('0x62dD51230A30401C455c8398d06F85e4EaB6309f'); + * ``` + */ + async getIntermediateResultsHash(escrowAddress: string): Promise { + if (!ethers.isAddress(escrowAddress)) { + throw ErrorInvalidEscrowAddressProvided; + } + + if (!(await this.escrowFactoryContract.hasEscrow(escrowAddress))) { + throw ErrorEscrowAddressIsNotProvidedByFactory; + } + + try { + const escrowContract = this.getEscrowContract(escrowAddress); + + return escrowContract.intermediateResultsHash(); + } catch (e) { + return throwError(e); + } + } + /** * This function returns the token address used for funding the escrow. * @@ -1639,23 +1912,29 @@ export class EscrowUtils { * interface IEscrow { * id: string; * address: string; - * amountPaid: string; - * balance: string; - * count: string; - * jobRequesterId: string; + * amountPaid: bigint; + * balance: bigint; + * count: bigint; * factoryAddress: string; - * finalResultsUrl?: string; - * intermediateResultsUrl?: string; + * finalResultsUrl: string | null; + * finalResultsHash: string | null; + * intermediateResultsUrl: string | null; + * intermediateResultsHash: string | null; * launcher: string; - * manifestHash?: string; - * manifest?: string; - * recordingOracle?: string; - * reputationOracle?: string; - * exchangeOracle?: string; - * status: EscrowStatus; + * jobRequesterId: string | null; + * manifestHash: string | null; + * manifest: string | null; + * recordingOracle: string | null; + * reputationOracle: string | null; + * exchangeOracle: string | null; + * recordingOracleFee: number | null; + * reputationOracleFee: number | null; + * exchangeOracleFee: number | null; + * status: string; * token: string; - * totalFundedAmount: string; - * createdAt: string; + * totalFundedAmount: bigint; + * createdAt: number; + * chainId: number; * }; * ``` * @@ -1727,13 +2006,7 @@ export class EscrowUtils { skip: skip, } ); - escrows.map((escrow) => (escrow.chainId = networkData.chainId)); - - if (!escrows) { - return []; - } - - return escrows; + return (escrows || []).map((e) => mapEscrow(e, networkData.chainId)); } /** @@ -1760,23 +2033,29 @@ export class EscrowUtils { * interface IEscrow { * id: string; * address: string; - * amountPaid: string; - * balance: string; - * count: string; - * jobRequesterId: string; + * amountPaid: bigint; + * balance: bigint; + * count: bigint; * factoryAddress: string; - * finalResultsUrl?: string; - * intermediateResultsUrl?: string; + * finalResultsUrl: string | null; + * finalResultsHash: string | null; + * intermediateResultsUrl: string | null; + * intermediateResultsHash: string | null; * launcher: string; - * manifestHash?: string; - * manifest?: string; - * recordingOracle?: string; - * reputationOracle?: string; - * exchangeOracle?: string; - * status: EscrowStatus; + * jobRequesterId: string | null; + * manifestHash: string | null; + * manifest: string | null; + * recordingOracle: string | null; + * reputationOracle: string | null; + * exchangeOracle: string | null; + * recordingOracleFee: number | null; + * reputationOracleFee: number | null; + * exchangeOracleFee: number | null; + * status: string; * token: string; - * totalFundedAmount: string; - * createdAt: string; + * totalFundedAmount: bigint; + * createdAt: number; + * chainId: number; * }; * ``` * @@ -1807,14 +2086,14 @@ export class EscrowUtils { throw ErrorInvalidAddress; } - const { escrow } = await gqlFetch<{ escrow: EscrowData }>( + const { escrow } = await gqlFetch<{ escrow: EscrowData | null }>( getSubgraphUrl(networkData), GET_ESCROW_BY_ADDRESS_QUERY(), { escrowAddress: escrowAddress.toLowerCase() } ); - escrow.chainId = networkData.chainId; + if (!escrow) return null; - return escrow || null; + return mapEscrow(escrow, networkData.chainId); } /** @@ -1875,7 +2154,7 @@ export class EscrowUtils { */ public static async getStatusEvents( filter: IStatusEventFilter - ): Promise { + ): Promise { const { chainId, statuses, @@ -1928,14 +2207,12 @@ export class EscrowUtils { return []; } - const statusEvents = data['escrowStatusEvents'] as StatusEvent[]; - - const eventsWithChainId = statusEvents.map((event) => ({ - ...event, + return data['escrowStatusEvents'].map((event) => ({ + timestamp: Number(event.timestamp) * 1000, + escrowAddress: event.escrowAddress, + status: EscrowStatus[event.status as keyof typeof EscrowStatus], chainId, })); - - return eventsWithChainId; } /** @@ -1947,7 +2224,7 @@ export class EscrowUtils { * Fetch payouts from the subgraph. * * @param {IPayoutFilter} filter Filter parameters. - * @returns {Promise} List of payouts matching the filters. + * @returns {Promise} List of payouts matching the filters. * * **Code example** * @@ -1964,7 +2241,7 @@ export class EscrowUtils { * console.log(payouts); * ``` */ - public static async getPayouts(filter: IPayoutFilter): Promise { + public static async getPayouts(filter: IPayoutFilter): Promise { const networkData = NETWORKS[filter.chainId]; if (!networkData) { throw ErrorUnsupportedChainID; @@ -1981,7 +2258,7 @@ export class EscrowUtils { const skip = filter.skip || 0; const orderDirection = filter.orderDirection || OrderDirection.DESC; - const { payouts } = await gqlFetch<{ payouts: Payout[] }>( + const { payouts } = await gqlFetch<{ payouts: PayoutData[] }>( getSubgraphUrl(networkData), GET_PAYOUTS_QUERY(filter), { @@ -1994,7 +2271,228 @@ export class EscrowUtils { orderDirection, } ); + if (!payouts) { + return []; + } + + return payouts.map((payout) => ({ + id: payout.id, + escrowAddress: payout.escrowAddress, + recipient: payout.recipient, + amount: BigInt(payout.amount), + createdAt: Number(payout.createdAt) * 1000, + })); + } + + /** + * This function returns the cancellation refunds for a given set of networks. + * + * > This uses Subgraph + * + * **Input parameters** + * + * ```ts + * enum ChainId { + * ALL = -1, + * MAINNET = 1, + * SEPOLIA = 11155111, + * BSC_MAINNET = 56, + * BSC_TESTNET = 97, + * POLYGON = 137, + * POLYGON_AMOY = 80002, + * LOCALHOST = 1338, + * } + * ``` + * + * ```ts + * interface ICancellationRefund { + * id: string; + * escrowAddress: string; + * receiver: string; + * amount: bigint; + * block: number; + * timestamp: number; + * txHash: string; + * }; + * ``` + * + * + * @param {Object} filter Filter parameters. + * @returns {Promise} List of cancellation refunds matching the filters. + * + * **Code example** + * + * ```ts + * import { ChainId, EscrowUtils } from '@human-protocol/sdk'; + * + * const cancellationRefunds = await EscrowUtils.getCancellationRefunds({ + * chainId: ChainId.POLYGON_AMOY, + * escrowAddress: '0x1234567890123456789012345678901234567890', + * }); + * console.log(cancellationRefunds); + * ``` + */ + public static async getCancellationRefunds(filter: { + chainId: ChainId; + escrowAddress?: string; + receiver?: string; + from?: Date; + to?: Date; + first?: number; + skip?: number; + orderDirection?: OrderDirection; + }): Promise { + const networkData = NETWORKS[filter.chainId]; + if (!networkData) throw ErrorUnsupportedChainID; + if (filter.escrowAddress && !ethers.isAddress(filter.escrowAddress)) { + throw ErrorInvalidEscrowAddressProvided; + } + if (filter.receiver && !ethers.isAddress(filter.receiver)) { + throw ErrorInvalidAddress; + } + + const first = + filter.first !== undefined ? Math.min(filter.first, 1000) : 10; + const skip = filter.skip || 0; + const orderDirection = filter.orderDirection || OrderDirection.DESC; + + const { cancellationRefundEvents } = await gqlFetch<{ + cancellationRefundEvents: CancellationRefundData[]; + }>(getSubgraphUrl(networkData), GET_CANCELLATION_REFUNDS_QUERY(filter), { + escrowAddress: filter.escrowAddress?.toLowerCase(), + receiver: filter.receiver?.toLowerCase(), + from: filter.from ? getUnixTimestamp(filter.from) : undefined, + to: filter.to ? getUnixTimestamp(filter.to) : undefined, + first, + skip, + orderDirection, + }); + + if (!cancellationRefundEvents || cancellationRefundEvents.length === 0) { + return []; + } + + return cancellationRefundEvents.map((event) => ({ + id: event.id, + escrowAddress: event.escrowAddress, + receiver: event.receiver, + amount: BigInt(event.amount), + block: Number(event.block), + timestamp: Number(event.timestamp) * 1000, + txHash: event.txHash, + })); + } + + /** + * This function returns the cancellation refund for a given escrow address. + * + * > This uses Subgraph + * + * **Input parameters** + * + * ```ts + * enum ChainId { + * ALL = -1, + * MAINNET = 1, + * SEPOLIA = 11155111, + * BSC_MAINNET = 56, + * BSC_TESTNET = 97, + * POLYGON = 137, + * POLYGON_AMOY = 80002, + * LOCALHOST = 1338, + * } + * ``` + * + * ```ts + * interface ICancellationRefund { + * id: string; + * escrowAddress: string; + * receiver: string; + * amount: bigint; + * block: number; + * timestamp: number; + * txHash: string; + * }; + * ``` + * + * + * @param {ChainId} chainId Network in which the escrow has been deployed + * @param {string} escrowAddress Address of the escrow + * @returns {Promise} Cancellation refund data + * + * **Code example** + * + * ```ts + * import { ChainId, EscrowUtils } from '@human-protocol/sdk'; + * + * const cancellationRefund = await EscrowUtils.getCancellationRefund(ChainId.POLYGON_AMOY, "0x1234567890123456789012345678901234567890"); + * ``` + */ + public static async getCancellationRefund( + chainId: ChainId, + escrowAddress: string + ): Promise { + const networkData = NETWORKS[chainId]; + if (!networkData) throw ErrorUnsupportedChainID; + + if (!ethers.isAddress(escrowAddress)) { + throw ErrorInvalidEscrowAddressProvided; + } + + const { cancellationRefundEvents } = await gqlFetch<{ + cancellationRefundEvents: CancellationRefundData[]; + }>( + getSubgraphUrl(networkData), + GET_CANCELLATION_REFUND_BY_ADDRESS_QUERY(), + { escrowAddress: escrowAddress.toLowerCase() } + ); - return payouts || []; + if (!cancellationRefundEvents || cancellationRefundEvents.length === 0) { + return null; + } + + return { + id: cancellationRefundEvents[0].id, + escrowAddress: cancellationRefundEvents[0].escrowAddress, + receiver: cancellationRefundEvents[0].receiver, + amount: BigInt(cancellationRefundEvents[0].amount), + block: Number(cancellationRefundEvents[0].block), + timestamp: Number(cancellationRefundEvents[0].timestamp) * 1000, + txHash: cancellationRefundEvents[0].txHash, + }; } } + +function mapEscrow(e: EscrowData, chainId: ChainId | number): IEscrow { + return { + id: e.id, + address: e.address, + amountPaid: BigInt(e.amountPaid), + balance: BigInt(e.balance), + count: Number(e.count), + factoryAddress: e.factoryAddress, + finalResultsUrl: e.finalResultsUrl, + finalResultsHash: e.finalResultsHash, + intermediateResultsUrl: e.intermediateResultsUrl, + intermediateResultsHash: e.intermediateResultsHash, + launcher: e.launcher, + jobRequesterId: e.jobRequesterId, + manifestHash: e.manifestHash, + manifest: e.manifest, + recordingOracle: e.recordingOracle, + reputationOracle: e.reputationOracle, + exchangeOracle: e.exchangeOracle, + recordingOracleFee: e.recordingOracleFee + ? Number(e.recordingOracleFee) + : null, + reputationOracleFee: e.reputationOracleFee + ? Number(e.reputationOracleFee) + : null, + exchangeOracleFee: e.exchangeOracleFee ? Number(e.exchangeOracleFee) : null, + status: e.status, + token: e.token, + totalFundedAmount: BigInt(e.totalFundedAmount), + createdAt: Number(e.createdAt) * 1000, + chainId: Number(chainId), + }; +} diff --git a/packages/sdk/typescript/human-protocol-sdk/src/graphql/queries/escrow.ts b/packages/sdk/typescript/human-protocol-sdk/src/graphql/queries/escrow.ts index accf8f7489..d173298396 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/graphql/queries/escrow.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/graphql/queries/escrow.ts @@ -1,5 +1,5 @@ import gql from 'graphql-tag'; -import { IEscrowsFilter } from '../../interfaces'; +import { ICancellationRefundFilter, IEscrowsFilter } from '../../interfaces'; const ESCROW_FRAGMENT = gql` fragment EscrowFields on Escrow { @@ -9,8 +9,10 @@ const ESCROW_FRAGMENT = gql` count factoryAddress finalResultsUrl + finalResultsHash id intermediateResultsUrl + intermediateResultsHash jobRequesterId launcher manifestHash @@ -18,6 +20,9 @@ const ESCROW_FRAGMENT = gql` recordingOracle reputationOracle exchangeOracle + recordingOracleFee + reputationOracleFee + exchangeOracleFee status token totalFundedAmount @@ -25,6 +30,18 @@ const ESCROW_FRAGMENT = gql` } `; +const CANCELLATION_REFUND_FRAGMENT = gql` + fragment CancellationRefundFields on CancellationRefundEvent { + id + escrowAddress + receiver + amount + block + timestamp + txHash + } +`; + export const GET_ESCROW_BY_ADDRESS_QUERY = () => gql` query getEscrowByAddress($escrowAddress: String!) { escrow(id: $escrowAddress) { @@ -124,3 +141,42 @@ export const GET_STATUS_UPDATES_QUERY = ( } `; }; + +export const GET_CANCELLATION_REFUNDS_QUERY = ( + filter: ICancellationRefundFilter +) => gql` + query CancellationRefundEvents( + $escrowAddress: Bytes + $receiver: Bytes + $from: Int + $to: Int + $first: Int + $skip: Int + $orderDirection: OrderDirection + ) { + cancellationRefundEvents( + where: { + ${filter.escrowAddress ? 'escrowAddress: $escrowAddress' : ''} + ${filter.receiver ? 'receiver: $receiver' : ''} + ${filter.from ? 'timestamp_gte: $from' : ''} + ${filter.to ? 'timestamp_lte: $to' : ''} + } + first: $first + skip: $skip + orderBy: timestamp + orderDirection: $orderDirection + ) { + ...CancellationRefundFields + } + } + ${CANCELLATION_REFUND_FRAGMENT} +`; + +export const GET_CANCELLATION_REFUND_BY_ADDRESS_QUERY = () => gql` + query getCancellationRefundByAddress($escrowAddress: String!) { + cancellationRefundEvents(where: { escrowAddress: $escrowAddress }) { + ...CancellationRefundFields + } + } + ${CANCELLATION_REFUND_FRAGMENT} +`; diff --git a/packages/sdk/typescript/human-protocol-sdk/src/graphql/queries/operator.ts b/packages/sdk/typescript/human-protocol-sdk/src/graphql/queries/operator.ts index 692a7b4f85..0a81b2cbf5 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/graphql/queries/operator.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/graphql/queries/operator.ts @@ -5,12 +5,6 @@ const LEADER_FRAGMENT = gql` fragment OperatorFields on Operator { id address - amountStaked - amountLocked - lockedUntilTimestamp - amountWithdrawn - amountSlashed - reward amountJobsProcessed role fee @@ -24,22 +18,30 @@ const LEADER_FRAGMENT = gql` reputationNetworks name category + staker { + stakedAmount + lockedAmount + withdrawnAmount + slashedAmount + lockedUntilTimestamp + lastDepositTimestamp + } } `; export const GET_LEADERS_QUERY = (filter: IOperatorsFilter) => { - const { roles, minAmountStaked } = filter; + const { roles, minStakedAmount } = filter; const WHERE_CLAUSE = ` where: { - ${minAmountStaked ? `amountStaked_gte: $minAmountStaked` : ''} + ${minStakedAmount ? `staker_: { stakedAmount_gte: $minStakedAmount }` : ''} ${roles ? `role_in: $roles` : ''} } `; return gql` query getOperators( - $minAmountStaked: Int, + $minStakedAmount: Int, $roles: [String!] $first: Int $skip: Int diff --git a/packages/sdk/typescript/human-protocol-sdk/src/graphql/queries/staking.ts b/packages/sdk/typescript/human-protocol-sdk/src/graphql/queries/staking.ts new file mode 100644 index 0000000000..e9b92854c8 --- /dev/null +++ b/packages/sdk/typescript/human-protocol-sdk/src/graphql/queries/staking.ts @@ -0,0 +1,80 @@ +import gql from 'graphql-tag'; +import { IStakersFilter } from '../../interfaces'; + +const STAKER_FRAGMENT = gql` + fragment StakerFields on Staker { + id + address + stakedAmount + lockedAmount + withdrawnAmount + slashedAmount + lockedUntilTimestamp + lastDepositTimestamp + } +`; + +export const GET_STAKERS_QUERY = (filter: IStakersFilter) => { + const { + minStakedAmount, + maxStakedAmount, + minLockedAmount, + maxLockedAmount, + minWithdrawnAmount, + maxWithdrawnAmount, + minSlashedAmount, + maxSlashedAmount, + } = filter; + + const whereFields = [ + minStakedAmount ? `stakedAmount_gte: $minStakedAmount` : '', + maxStakedAmount ? `stakedAmount_lte: $maxStakedAmount` : '', + minLockedAmount ? `lockedAmount_gte: $minLockedAmount` : '', + maxLockedAmount ? `lockedAmount_lte: $maxLockedAmount` : '', + minWithdrawnAmount ? `withdrawnAmount_gte: $minWithdrawnAmount` : '', + maxWithdrawnAmount ? `withdrawnAmount_lte: $maxWithdrawnAmount` : '', + minSlashedAmount ? `slashedAmount_gte: $minSlashedAmount` : '', + maxSlashedAmount ? `slashedAmount_lte: $maxSlashedAmount` : '', + ].filter(Boolean); + + const WHERE_CLAUSE = whereFields.length + ? `where: { ${whereFields.join(', ')} }` + : ''; + + return gql` + query getStakers( + $minStakedAmount: BigInt + $maxStakedAmount: BigInt + $minLockedAmount: BigInt + $maxLockedAmount: BigInt + $minWithdrawnAmount: BigInt + $maxWithdrawnAmount: BigInt + $minSlashedAmount: BigInt + $maxSlashedAmount: BigInt + $orderBy: String + $orderDirection: OrderDirection + $first: Int + $skip: Int + ) { + stakers( + ${WHERE_CLAUSE} + orderBy: $orderBy + orderDirection: $orderDirection + first: $first + skip: $skip + ) { + ...StakerFields + } + } + ${STAKER_FRAGMENT} + `; +}; + +export const GET_STAKER_BY_ADDRESS_QUERY = gql` + query getStaker($id: String!) { + staker(id: $id) { + ...StakerFields + } + } + ${STAKER_FRAGMENT} +`; diff --git a/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts b/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts index 66ba242597..79023a88e4 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/graphql/types.ts @@ -1,4 +1,4 @@ -import { ChainId } from '../enums'; +import { IReputationNetwork } from '../interfaces'; export type EscrowData = { id: string; @@ -7,19 +7,56 @@ export type EscrowData = { balance: string; count: string; factoryAddress: string; - finalResultsUrl?: string; - intermediateResultsUrl?: string; + finalResultsUrl: string | null; + finalResultsHash: string | null; + intermediateResultsUrl: string | null; + intermediateResultsHash: string | null; launcher: string; - manifestHash?: string; - manifestUrl?: string; - recordingOracle?: string; - reputationOracle?: string; - exchangeOracle?: string; + jobRequesterId: string | null; + manifestHash: string | null; + manifest: string | null; + recordingOracle: string | null; + reputationOracle: string | null; + exchangeOracle: string | null; + recordingOracleFee: string | null; + reputationOracleFee: string | null; + exchangeOracleFee: string | null; status: string; token: string; totalFundedAmount: string; createdAt: string; - chainId: number; +}; + +export type WorkerData = { + id: string; + address: string; + totalHMTAmountReceived: string; + payoutCount: string; +}; + +export type InternalTransactionData = { + from: string; + to: string; + value: string; + method: string; + receiver: string | null; + escrow: string | null; + token: string | null; + id: string | null; +}; + +export type TransactionData = { + block: string; + txHash: string; + from: string; + to: string; + timestamp: string; + value: string; + method: string; + receiver: string | null; + escrow: string | null; + token: string | null; + internalTransactions: InternalTransactionData[]; }; export type HMTStatisticsData = { @@ -72,86 +109,15 @@ export type RewardAddedEventData = { amount: string; }; -export type DailyEscrowData = { - timestamp: Date; - escrowsTotal: number; - escrowsPending: number; - escrowsSolved: number; - escrowsPaid: number; - escrowsCancelled: number; -}; - -export type EscrowStatistics = { - totalEscrows: number; - dailyEscrowsData: DailyEscrowData[]; -}; - -export type DailyWorkerData = { - timestamp: Date; - activeWorkers: number; -}; - -export type WorkerStatistics = { - dailyWorkersData: DailyWorkerData[]; -}; - -export type DailyPaymentData = { - timestamp: Date; - totalAmountPaid: bigint; - totalCount: number; - averageAmountPerWorker: bigint; -}; - -export type PaymentStatistics = { - dailyPaymentsData: DailyPaymentData[]; -}; - export type HMTHolderData = { address: string; balance: string; }; -export type HMTHolder = { - address: string; - balance: bigint; -}; - -export type DailyHMTData = { - timestamp: Date; - totalTransactionAmount: bigint; - totalTransactionCount: number; - dailyUniqueSenders: number; - dailyUniqueReceivers: number; -}; - -export type HMTStatistics = { - totalTransferAmount: bigint; - totalTransferCount: number; - totalHolders: number; -}; - -export type IMDataEntity = { - served: number; - solved: number; -}; - -export type IMData = Record; - -export type DailyTaskData = { - timestamp: Date; - tasksTotal: number; - tasksSolved: number; -}; - -export type TaskStatistics = { - dailyTasksData: DailyTaskData[]; -}; - export type StatusEvent = { - timestamp: number; + timestamp: string; escrowAddress: string; status: string; - chainId: ChainId; }; export type KVStoreData = { @@ -160,5 +126,65 @@ export type KVStoreData = { key: string; value: string; timestamp: Date; - block: number; + block: string; +}; + +export type StakerData = { + id: string; + address: string; + stakedAmount: string; + lockedAmount: string; + withdrawnAmount: string; + slashedAmount: string; + lockedUntilTimestamp: string; + lastDepositTimestamp: string; +}; + +export interface IOperatorSubgraph { + id: string; + address: string; + amountJobsProcessed: string; + role: string | null; + fee: string | null; + publicKey: string | null; + webhookUrl: string | null; + website: string | null; + url: string | null; + registrationNeeded: boolean | null; + registrationInstructions: string | null; + name: string | null; + category: string | null; + jobTypes: string | string[] | null; + reputationNetworks: { address: string }[]; + staker: { + stakedAmount: string; + lockedAmount: string; + lockedUntilTimestamp: string; + withdrawnAmount: string; + slashedAmount: string; + lastDepositTimestamp: string; + } | null; +} + +export interface IReputationNetworkSubgraph + extends Omit { + operators: IOperatorSubgraph[]; +} + +export type PayoutData = { + id: string; + escrowAddress: string; + recipient: string; + amount: string; + createdAt: string; +}; + +export type CancellationRefundData = { + id: string; + escrowAddress: string; + receiver: string; + amount: string; + block: string; + timestamp: string; + txHash: string; }; diff --git a/packages/sdk/typescript/human-protocol-sdk/src/index.ts b/packages/sdk/typescript/human-protocol-sdk/src/index.ts index af84c5759d..047bfb6782 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/index.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/index.ts @@ -1,4 +1,4 @@ -import { StakingClient } from './staking'; +import { StakingClient, StakingUtils } from './staking'; import { StorageClient } from './storage'; import { KVStoreClient, KVStoreUtils } from './kvstore'; import { EscrowClient, EscrowUtils } from './escrow'; @@ -38,4 +38,5 @@ export { OperatorUtils, TransactionUtils, WorkerUtils, + StakingUtils, }; diff --git a/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts b/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts index d70fa76c4a..c47656c690 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/interfaces.ts @@ -10,37 +10,30 @@ export interface IOperator { id: string; chainId: ChainId; address: string; - amountStaked: bigint; - amountLocked: bigint; - lockedUntilTimestamp: bigint; - amountWithdrawn: bigint; - amountSlashed: bigint; - reward: bigint; - amountJobsProcessed: bigint; - role?: string; - fee?: bigint; - publicKey?: string; - webhookUrl?: string; - website?: string; - url?: string; - jobTypes?: string[]; - registrationNeeded?: boolean; - registrationInstructions?: string; - reputationNetworks?: string[]; - name?: string; - category?: string; -} - -export interface IOperatorSubgraph - extends Omit { - jobTypes?: string; - reputationNetworks?: { address: string }[]; + stakedAmount: bigint | null; + lockedAmount: bigint | null; + lockedUntilTimestamp: number | null; + withdrawnAmount: bigint | null; + slashedAmount: bigint | null; + amountJobsProcessed: bigint | null; + role: string | null; + fee: bigint | null; + publicKey: string | null; + webhookUrl: string | null; + website: string | null; + url: string | null; + jobTypes: string[] | null; + registrationNeeded: boolean | null; + registrationInstructions: string | null; + reputationNetworks: string[]; + name: string | null; + category: string | null; } export interface IOperatorsFilter extends IPagination { chainId: ChainId; roles?: string[]; - minAmountStaked?: number; + minStakedAmount?: number; orderBy?: string; } @@ -50,39 +43,31 @@ export interface IReputationNetwork { operators: IOperator[]; } -export interface IReputationNetworkSubgraph - extends Omit { - operators: IOperatorSubgraph[]; -} - -export interface IOperator { - address: string; - role?: string; - url?: string; - jobTypes?: string[]; - registrationNeeded?: boolean; - registrationInstructions?: string; -} - export interface IEscrow { id: string; address: string; - amountPaid: string; - balance: string; - count: string; + amountPaid: bigint; + balance: bigint; + count: number; factoryAddress: string; - finalResultsUrl?: string; - intermediateResultsUrl?: string; + finalResultsUrl: string | null; + finalResultsHash: string | null; + intermediateResultsUrl: string | null; + intermediateResultsHash: string | null; launcher: string; - manifestHash?: string; - manifest?: string; - recordingOracle?: string; - reputationOracle?: string; - exchangeOracle?: string; + jobRequesterId: string | null; + manifestHash: string | null; + manifest: string | null; + recordingOracle: string | null; + reputationOracle: string | null; + exchangeOracle: string | null; + recordingOracleFee: number | null; + reputationOracleFee: number | null; + exchangeOracleFee: number | null; status: string; token: string; - totalFundedAmount: string; - createdAt: string; + totalFundedAmount: bigint; + createdAt: number; chainId: number; } @@ -141,11 +126,11 @@ export interface IKVStore { export interface InternalTransaction { from: string; to: string; - value: string; + value: bigint; method: string; - receiver?: string; - escrow?: string; - token?: string; + receiver: string | null; + escrow: string | null; + token: string | null; } export interface ITransaction { @@ -153,12 +138,12 @@ export interface ITransaction { txHash: string; from: string; to: string; - timestamp: bigint; - value: string; + timestamp: number; + value: bigint; method: string; - receiver?: string; - escrow?: string; - token?: string; + receiver: string | null; + escrow: string | null; + token: string | null; internalTransactions: InternalTransaction[]; } @@ -199,7 +184,7 @@ export interface IStatusEventFilter extends IPagination { export interface IWorker { id: string; address: string; - totalHMTAmountReceived: number; + totalHMTAmountReceived: bigint; payoutCount: number; } @@ -208,3 +193,122 @@ export interface IWorkersFilter extends IPagination { address?: string; orderBy?: string; } + +export interface IStaker { + address: string; + stakedAmount: bigint; + lockedAmount: bigint; + withdrawableAmount: bigint; + slashedAmount: bigint; + lockedUntil: number; + lastDepositTimestamp: number; +} + +export interface IStakersFilter extends IPagination { + chainId: ChainId; + minStakedAmount?: string; + maxStakedAmount?: string; + minLockedAmount?: string; + maxLockedAmount?: string; + minWithdrawnAmount?: string; + maxWithdrawnAmount?: string; + minSlashedAmount?: string; + maxSlashedAmount?: string; + orderBy?: + | 'stakedAmount' + | 'lockedAmount' + | 'withdrawnAmount' + | 'slashedAmount' + | 'lastDepositTimestamp'; +} +export interface ICancellationRefundFilter extends IPagination { + chainId: ChainId; + escrowAddress?: string; + receiver?: string; + from?: Date; + to?: Date; +} + +export interface IDailyEscrow { + timestamp: number; + escrowsTotal: number; + escrowsPending: number; + escrowsSolved: number; + escrowsPaid: number; + escrowsCancelled: number; +} + +export interface IEscrowStatistics { + totalEscrows: number; + dailyEscrowsData: IDailyEscrow[]; +} + +export interface IDailyWorker { + timestamp: number; + activeWorkers: number; +} + +export interface IWorkerStatistics { + dailyWorkersData: IDailyWorker[]; +} + +export interface IDailyPayment { + timestamp: number; + totalAmountPaid: bigint; + totalCount: number; + averageAmountPerWorker: bigint; +} + +export interface IPaymentStatistics { + dailyPaymentsData: IDailyPayment[]; +} + +export interface IHMTStatistics { + totalTransferAmount: bigint; + totalTransferCount: number; + totalHolders: number; +} + +export interface IHMTHolder { + address: string; + balance: bigint; +} + +export interface IDailyHMT { + timestamp: number; + totalTransactionAmount: bigint; + totalTransactionCount: number; + dailyUniqueSenders: number; + dailyUniqueReceivers: number; +} + +export interface IStatusEvent { + timestamp: number; + escrowAddress: string; + status: EscrowStatus; + chainId: ChainId; +} + +export interface ICancellationRefund { + id: string; + escrowAddress: string; + receiver: string; + amount: bigint; + block: number; + timestamp: number; + txHash: string; +} + +export interface IPayout { + id: string; + escrowAddress: string; + recipient: string; + amount: bigint; + createdAt: number; +} + +export interface IEscrowWithdraw { + txHash: string; + tokenAddress: string; + withdrawnAmount: bigint; +} diff --git a/packages/sdk/typescript/human-protocol-sdk/src/operator.ts b/packages/sdk/typescript/human-protocol-sdk/src/operator.ts index 0246695990..cbca6e866a 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/operator.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/operator.ts @@ -1,14 +1,12 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import gqlFetch from 'graphql-request'; +import { IOperator, IOperatorsFilter, IReward } from './interfaces'; +import { GET_REWARD_ADDED_EVENTS_QUERY } from './graphql/queries/reward'; import { - IOperator, IOperatorSubgraph, - IOperatorsFilter, IReputationNetworkSubgraph, - IReward, -} from './interfaces'; -import { GET_REWARD_ADDED_EVENTS_QUERY } from './graphql/queries/reward'; -import { RewardAddedEventData } from './graphql'; + RewardAddedEventData, +} from './graphql'; import { GET_LEADER_QUERY, GET_LEADERS_QUERY, @@ -63,30 +61,7 @@ export class OperatorUtils { return null; } - let jobTypes: string[] = []; - let reputationNetworks: string[] = []; - - if (typeof operator.jobTypes === 'string') { - jobTypes = operator.jobTypes.split(','); - } else if (Array.isArray(operator.jobTypes)) { - jobTypes = operator.jobTypes; - } - - if ( - operator.reputationNetworks && - Array.isArray(operator.reputationNetworks) - ) { - reputationNetworks = operator.reputationNetworks.map( - (network) => network.address - ); - } - - return { - ...operator, - jobTypes, - reputationNetworks, - chainId, - }; + return mapOperator(operator, chainId); } /** @@ -109,8 +84,6 @@ export class OperatorUtils { public static async getOperators( filter: IOperatorsFilter ): Promise { - let operators_data: IOperator[] = []; - const first = filter.first !== undefined && filter.first > 0 ? Math.min(filter.first, 1000) @@ -119,6 +92,15 @@ export class OperatorUtils { filter.skip !== undefined && filter.skip >= 0 ? filter.skip : 0; const orderDirection = filter.orderDirection || OrderDirection.DESC; + let orderBy = filter.orderBy; + if (filter.orderBy === 'stakedAmount') orderBy = 'staker__stakedAmount'; + else if (filter.orderBy === 'lockedAmount') + orderBy = 'staker__lockedAmount'; + else if (filter.orderBy === 'withdrawnAmount') + orderBy = 'staker__withdrawnAmount'; + else if (filter.orderBy === 'slashedAmount') + orderBy = 'staker__slashedAmount'; + const networkData = NETWORKS[filter.chainId]; if (!networkData) { @@ -128,9 +110,9 @@ export class OperatorUtils { const { operators } = await gqlFetch<{ operators: IOperatorSubgraph[]; }>(getSubgraphUrl(networkData), GET_LEADERS_QUERY(filter), { - minAmountStaked: filter?.minAmountStaked, + minStakedAmount: filter?.minStakedAmount, roles: filter?.roles, - orderBy: filter?.orderBy, + orderBy: orderBy, orderDirection: orderDirection, first: first, skip: skip, @@ -140,35 +122,7 @@ export class OperatorUtils { return []; } - operators_data = operators_data.concat( - operators.map((operator) => { - let jobTypes: string[] = []; - let reputationNetworks: string[] = []; - - if (typeof operator.jobTypes === 'string') { - jobTypes = operator.jobTypes.split(','); - } else if (Array.isArray(operator.jobTypes)) { - jobTypes = operator.jobTypes; - } - - if ( - operator.reputationNetworks && - Array.isArray(operator.reputationNetworks) - ) { - reputationNetworks = operator.reputationNetworks.map( - (network) => network.address - ); - } - - return { - ...operator, - jobTypes, - reputationNetworks, - chainId: filter.chainId, - }; - }) - ); - return operators_data; + return operators.map((operator) => mapOperator(operator, filter.chainId)); } /** @@ -206,24 +160,9 @@ export class OperatorUtils { if (!reputationNetwork) return []; - return reputationNetwork.operators.map((operator) => { - let jobTypes: string[] = []; - - if (typeof operator.jobTypes === 'string') { - jobTypes = operator.jobTypes.split(','); - } else if (Array.isArray(operator.jobTypes)) { - jobTypes = operator.jobTypes; - } - - return { - chainId, - ...operator, - jobTypes, - reputationNetworks: operator.reputationNetworks?.map( - (network) => network.address - ), - }; - }); + return reputationNetwork.operators.map((operator) => + mapOperator(operator, chainId) + ); } /** @@ -270,3 +209,54 @@ export class OperatorUtils { }); } } + +function mapOperator(operator: IOperatorSubgraph, chainId: ChainId): IOperator { + const staker = operator?.staker; + let jobTypes: string[] = []; + let reputationNetworks: string[] = []; + + if (typeof operator.jobTypes === 'string') { + jobTypes = operator.jobTypes.split(','); + } else if (Array.isArray(operator.jobTypes)) { + jobTypes = operator.jobTypes; + } + + if ( + operator.reputationNetworks && + Array.isArray(operator.reputationNetworks) + ) { + reputationNetworks = operator.reputationNetworks.map( + (network) => network.address + ); + } + + return { + id: operator.id, + chainId, + address: operator.address, + stakedAmount: staker?.stakedAmount ? BigInt(staker?.stakedAmount) : null, + lockedAmount: staker?.lockedAmount ? BigInt(staker?.lockedAmount) : null, + lockedUntilTimestamp: staker?.lockedUntilTimestamp + ? Number(staker.lockedUntilTimestamp) * 1000 + : null, + withdrawnAmount: staker?.withdrawnAmount + ? BigInt(staker?.withdrawnAmount) + : null, + slashedAmount: staker?.slashedAmount ? BigInt(staker?.slashedAmount) : null, + amountJobsProcessed: operator.amountJobsProcessed + ? BigInt(operator.amountJobsProcessed) + : null, + role: operator.role, + fee: operator.fee ? BigInt(operator.fee) : null, + publicKey: operator.publicKey, + webhookUrl: operator.webhookUrl, + website: operator.website, + url: operator.url, + jobTypes, + registrationNeeded: operator.registrationNeeded, + registrationInstructions: operator.registrationInstructions, + reputationNetworks, + name: operator.name, + category: operator.category, + }; +} diff --git a/packages/sdk/typescript/human-protocol-sdk/src/staking.ts b/packages/sdk/typescript/human-protocol-sdk/src/staking.ts index cadf10fc17..1fab0ed1fd 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/staking.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/staking.ts @@ -7,10 +7,11 @@ import { Staking__factory, } from '@human-protocol/core/typechain-types'; import { ContractRunner, Overrides, ethers } from 'ethers'; +import gqlFetch from 'graphql-request'; import { BaseEthersClient } from './base'; import { NETWORKS } from './constants'; import { requiresSigner } from './decorators'; -import { ChainId } from './enums'; +import { ChainId, OrderDirection } from './enums'; import { ErrorEscrowAddressIsNotProvidedByFactory, ErrorInvalidEscrowAddressProvided, @@ -19,11 +20,17 @@ import { ErrorInvalidStakingValueSign, ErrorInvalidStakingValueType, ErrorProviderDoesNotExist, + ErrorStakerNotFound, ErrorUnsupportedChainID, } from './error'; +import { IStaker, IStakersFilter, StakerInfo } from './interfaces'; +import { StakerData } from './graphql'; import { NetworkData } from './types'; -import { throwError } from './utils'; -import { StakerInfo } from './interfaces'; +import { getSubgraphUrl, throwError } from './utils'; +import { + GET_STAKER_BY_ADDRESS_QUERY, + GET_STAKERS_QUERY, +} from './graphql/queries/staking'; /** * ## Introduction @@ -478,3 +485,111 @@ export class StakingClient extends BaseEthersClient { } } } + +/** + * Utility class for Staking-related subgraph queries. + */ +export class StakingUtils { + /** + * Gets staking info for a staker from the subgraph. + * + * @param {ChainId} chainId Network in which the staking contract is deployed + * @param {string} stakerAddress Address of the staker + * @returns {Promise} Staker info from subgraph + */ + public static async getStaker( + chainId: ChainId, + stakerAddress: string + ): Promise { + if (!ethers.isAddress(stakerAddress)) { + throw ErrorInvalidStakerAddressProvided; + } + + const networkData: NetworkData | undefined = NETWORKS[chainId]; + if (!networkData) { + throw ErrorUnsupportedChainID; + } + + const { staker } = await gqlFetch<{ staker: StakerData }>( + getSubgraphUrl(networkData), + GET_STAKER_BY_ADDRESS_QUERY, + { id: stakerAddress.toLowerCase() } + ); + + if (!staker) { + throw ErrorStakerNotFound; + } + + return mapStaker(staker); + } + + /** + * Gets all stakers from the subgraph with filters, pagination and ordering. + * + * @returns {Promise} Array of stakers + */ + public static async getStakers(filter: IStakersFilter): Promise { + const first = + filter.first !== undefined ? Math.min(filter.first, 1000) : 10; + const skip = filter.skip || 0; + const orderDirection = filter.orderDirection || OrderDirection.DESC; + const orderBy = filter.orderBy || 'lastDepositTimestamp'; + + const networkData = NETWORKS[filter.chainId]; + if (!networkData) { + throw ErrorUnsupportedChainID; + } + + const { stakers } = await gqlFetch<{ stakers: StakerData[] }>( + getSubgraphUrl(networkData), + GET_STAKERS_QUERY(filter), + { + minStakedAmount: filter.minStakedAmount + ? filter.minStakedAmount + : undefined, + maxStakedAmount: filter.maxStakedAmount + ? filter.maxStakedAmount + : undefined, + minLockedAmount: filter.minLockedAmount + ? filter.minLockedAmount + : undefined, + maxLockedAmount: filter.maxLockedAmount + ? filter.maxLockedAmount + : undefined, + minWithdrawnAmount: filter.minWithdrawnAmount + ? filter.minWithdrawnAmount + : undefined, + maxWithdrawnAmount: filter.maxWithdrawnAmount + ? filter.maxWithdrawnAmount + : undefined, + minSlashedAmount: filter.minSlashedAmount + ? filter.minSlashedAmount + : undefined, + maxSlashedAmount: filter.maxSlashedAmount + ? filter.maxSlashedAmount + : undefined, + orderBy: orderBy, + orderDirection: orderDirection, + first: first, + skip: skip, + } + ); + if (!stakers) { + return []; + } + + return stakers.map((s) => mapStaker(s)); + } +} + +function mapStaker(s: StakerData): IStaker { + return { + address: s.address, + stakedAmount: BigInt(s.stakedAmount), + lockedAmount: BigInt(s.lockedAmount), + withdrawableAmount: BigInt(s.withdrawnAmount), + slashedAmount: BigInt(s.slashedAmount), + lockedUntil: Number(s.lockedUntilTimestamp) * 1000, + lastDepositTimestamp: Number(s.lastDepositTimestamp) * 1000, + }; +} diff --git a/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts b/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts index b88b228836..715c094621 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/statistics.ts @@ -1,27 +1,29 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { ethers } from 'ethers'; import gqlFetch from 'graphql-request'; +import { OrderDirection } from './enums'; import { + EscrowStatisticsData, + EventDayData, GET_ESCROW_STATISTICS_QUERY, GET_EVENT_DAY_DATA_QUERY, - GET_HOLDERS_QUERY, GET_HMTOKEN_STATISTICS_QUERY, - EscrowStatistics, - EscrowStatisticsData, - EventDayData, - HMTStatistics, - HMTStatisticsData, - PaymentStatistics, - WorkerStatistics, + GET_HOLDERS_QUERY, HMTHolderData, - HMTHolder, - DailyHMTData, + HMTStatisticsData, } from './graphql'; -import { IHMTHoldersParams, IStatisticsFilter } from './interfaces'; +import { + IDailyHMT, + IEscrowStatistics, + IHMTHolder, + IHMTHoldersParams, + IHMTStatistics, + IPaymentStatistics, + IStatisticsFilter, + IWorkerStatistics, +} from './interfaces'; import { NetworkData } from './types'; import { getSubgraphUrl, getUnixTimestamp, throwError } from './utils'; -import { OrderDirection } from './enums'; /** * ## Introduction @@ -85,8 +87,8 @@ export class StatisticsClient { * ``` * * ```ts - * type DailyEscrowsData = { - * timestamp: Date; + * interface IDailyEscrow { + * timestamp: number; * escrowsTotal: number; * escrowsPending: number; * escrowsSolved: number; @@ -94,14 +96,14 @@ export class StatisticsClient { * escrowsCancelled: number; * }; * - * type EscrowStatistics = { + * interface IEscrowStatistics { * totalEscrows: number; - * dailyEscrowsData: DailyEscrowsData[]; + * dailyEscrowsData: IDailyEscrow[]; * }; * ``` * * @param {IStatisticsFilter} filter Statistics params with duration data - * @returns {Promise} Escrow statistics data. + * @returns {Promise} Escrow statistics data. * * **Code example** * @@ -119,7 +121,7 @@ export class StatisticsClient { */ async getEscrowStatistics( filter: IStatisticsFilter = {} - ): Promise { + ): Promise { try { const first = filter.first !== undefined ? Math.min(filter.first, 1000) : 10; @@ -145,7 +147,7 @@ export class StatisticsClient { ? +escrowStatistics.totalEscrowCount : 0, dailyEscrowsData: eventDayDatas.map((eventDayData) => ({ - timestamp: new Date(+eventDayData.timestamp * 1000), + timestamp: +eventDayData.timestamp * 1000, escrowsTotal: +eventDayData.dailyEscrowCount, escrowsPending: +eventDayData.dailyPendingStatusEventCount, escrowsSolved: +eventDayData.dailyCompletedStatusEventCount, @@ -174,18 +176,18 @@ export class StatisticsClient { * ``` * * ```ts - * type DailyWorkerData = { - * timestamp: Date; + * interface IDailyWorker { + * timestamp: number; * activeWorkers: number; * }; * - * type WorkerStatistics = { - * dailyWorkersData: DailyWorkerData[]; + * interface IWorkerStatistics { + * dailyWorkersData: IDailyWorker[]; * }; * ``` * * @param {IStatisticsFilter} filter Statistics params with duration data - * @returns {Promise} Worker statistics data. + * @returns {Promise} Worker statistics data. * * **Code example** * @@ -203,7 +205,7 @@ export class StatisticsClient { */ async getWorkerStatistics( filter: IStatisticsFilter = {} - ): Promise { + ): Promise { try { const first = filter.first !== undefined ? Math.min(filter.first, 1000) : 10; @@ -222,7 +224,7 @@ export class StatisticsClient { return { dailyWorkersData: eventDayDatas.map((eventDayData) => ({ - timestamp: new Date(+eventDayData.timestamp * 1000), + timestamp: +eventDayData.timestamp * 1000, activeWorkers: +eventDayData.dailyWorkerCount, })), }; @@ -247,20 +249,20 @@ export class StatisticsClient { * ``` * * ```ts - * type DailyPaymentData = { - * timestamp: Date; - * totalAmountPaid: BigNumber; + * interface IDailyPayment { + * timestamp: number; + * totalAmountPaid: bigint; * totalCount: number; - * averageAmountPerWorker: BigNumber; + * averageAmountPerWorker: bigint; * }; * - * type PaymentStatistics = { - * dailyPaymentsData: DailyPaymentData[]; + * interface IPaymentStatistics { + * dailyPaymentsData: IDailyPayment[]; * }; * ``` * * @param {IStatisticsFilter} filter Statistics params with duration data - * @returns {Promise} Payment statistics data. + * @returns {Promise} Payment statistics data. * * **Code example** * @@ -299,7 +301,7 @@ export class StatisticsClient { */ async getPaymentStatistics( filter: IStatisticsFilter = {} - ): Promise { + ): Promise { try { const first = filter.first !== undefined ? Math.min(filter.first, 1000) : 10; @@ -318,14 +320,14 @@ export class StatisticsClient { return { dailyPaymentsData: eventDayDatas.map((eventDayData) => ({ - timestamp: new Date(+eventDayData.timestamp * 1000), - totalAmountPaid: ethers.toBigInt(eventDayData.dailyHMTPayoutAmount), + timestamp: +eventDayData.timestamp * 1000, + totalAmountPaid: BigInt(eventDayData.dailyHMTPayoutAmount), totalCount: +eventDayData.dailyPayoutCount, averageAmountPerWorker: eventDayData.dailyWorkerCount === '0' - ? ethers.toBigInt(0) - : ethers.toBigInt(eventDayData.dailyHMTPayoutAmount) / - ethers.toBigInt(eventDayData.dailyWorkerCount), + ? BigInt(0) + : BigInt(eventDayData.dailyHMTPayoutAmount) / + BigInt(eventDayData.dailyWorkerCount), })), }; } catch (e: any) { @@ -337,14 +339,14 @@ export class StatisticsClient { * This function returns the statistical data of HMToken. * * ```ts - * type HMTStatistics = { - * totalTransferAmount: BigNumber; - * totalTransferCount: BigNumber; + * interface IHMTStatistics { + * totalTransferAmount: bigint; + * totalTransferCount: number; * totalHolders: number; * }; * ``` * - * @returns {Promise} HMToken statistics data. + * @returns {Promise} HMToken statistics data. * * **Code example** * @@ -361,17 +363,15 @@ export class StatisticsClient { * }); * ``` */ - async getHMTStatistics(): Promise { + async getHMTStatistics(): Promise { try { const { hmtokenStatistics } = await gqlFetch<{ hmtokenStatistics: HMTStatisticsData; }>(this.subgraphUrl, GET_HMTOKEN_STATISTICS_QUERY); return { - totalTransferAmount: ethers.toBigInt( - hmtokenStatistics.totalValueTransfered - ), - totalTransferCount: Number(hmtokenStatistics.totalTransferEventCount), + totalTransferAmount: BigInt(hmtokenStatistics.totalValueTransfered), + totalTransferCount: +hmtokenStatistics.totalTransferEventCount, totalHolders: +hmtokenStatistics.holders, }; } catch (e: any) { @@ -385,7 +385,7 @@ export class StatisticsClient { * **Input parameters** * * @param {IHMTHoldersParams} params HMT Holders params with filters and ordering - * @returns {Promise} List of HMToken holders. + * @returns {Promise} List of HMToken holders. * * **Code example** * @@ -404,7 +404,7 @@ export class StatisticsClient { * }))); * ``` */ - async getHMTHolders(params: IHMTHoldersParams = {}): Promise { + async getHMTHolders(params: IHMTHoldersParams = {}): Promise { try { const { address, orderDirection } = params; const query = GET_HOLDERS_QUERY(address); @@ -421,7 +421,7 @@ export class StatisticsClient { return holders.map((holder) => ({ address: holder.address, - balance: ethers.toBigInt(holder.balance), + balance: BigInt(holder.balance), })); } catch (e: any) { return throwError(e); @@ -444,8 +444,8 @@ export class StatisticsClient { * ``` * * ```ts - * type DailyHMTData = { - * timestamp: Date; + * interface IDailyHMT { + * timestamp: number; * totalTransactionAmount: bigint; * totalTransactionCount: number; * dailyUniqueSenders: number; @@ -454,7 +454,7 @@ export class StatisticsClient { * ``` * * @param {IStatisticsFilter} filter Statistics params with duration data - * @returns {Promise} Daily HMToken statistics data. + * @returns {Promise} Daily HMToken statistics data. * * **Code example** * @@ -475,9 +475,7 @@ export class StatisticsClient { * console.log('HMT statistics from 5/8 - 6/8:', hmtStatisticsRange); * ``` */ - async getHMTDailyData( - filter: IStatisticsFilter = {} - ): Promise { + async getHMTDailyData(filter: IStatisticsFilter = {}): Promise { try { const first = filter.first !== undefined ? Math.min(filter.first, 1000) : 10; @@ -495,10 +493,8 @@ export class StatisticsClient { }); return eventDayDatas.map((eventDayData) => ({ - timestamp: new Date(+eventDayData.timestamp * 1000), - totalTransactionAmount: ethers.toBigInt( - eventDayData.dailyHMTTransferAmount - ), + timestamp: +eventDayData.timestamp * 1000, + totalTransactionAmount: BigInt(eventDayData.dailyHMTTransferAmount), totalTransactionCount: +eventDayData.dailyHMTTransferCount, dailyUniqueSenders: +eventDayData.dailyUniqueSenders, dailyUniqueReceivers: +eventDayData.dailyUniqueReceivers, diff --git a/packages/sdk/typescript/human-protocol-sdk/src/transaction.ts b/packages/sdk/typescript/human-protocol-sdk/src/transaction.ts index 26f5cce107..fc8cd3e987 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/transaction.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/transaction.ts @@ -8,11 +8,16 @@ import { ErrorInvalidHashProvided, ErrorUnsupportedChainID, } from './error'; +import { TransactionData } from './graphql'; import { - GET_TRANSACTIONS_QUERY, GET_TRANSACTION_QUERY, + GET_TRANSACTIONS_QUERY, } from './graphql/queries/transaction'; -import { ITransaction, ITransactionsFilter } from './interfaces'; +import { + InternalTransaction, + ITransaction, + ITransactionsFilter, +} from './interfaces'; import { getSubgraphUrl, getUnixTimestamp } from './utils'; export class TransactionUtils { @@ -26,7 +31,7 @@ export class TransactionUtils { * from: string; * to: string; * timestamp: bigint; - * value: string; + * value: bigint; * method: string; * receiver?: string; * escrow?: string; @@ -35,6 +40,18 @@ export class TransactionUtils { * }; * ``` * + * ```ts + * type InternalTransaction = { + * from: string; + * to: string; + * value: bigint; + * method: string; + * receiver?: string; + * escrow?: string; + * token?: string; + * }; + * ``` + * * @param {ChainId} chainId The chain ID. * @param {string} hash The transaction hash. * @returns {Promise} - Returns the transaction details or null if not found. @@ -61,12 +78,13 @@ export class TransactionUtils { } const { transaction } = await gqlFetch<{ - transaction: ITransaction; + transaction: TransactionData | null; }>(getSubgraphUrl(networkData), GET_TRANSACTION_QUERY, { hash: hash.toLowerCase(), }); + if (!transaction) return null; - return transaction || null; + return mapTransaction(transaction); } /** @@ -92,6 +110,18 @@ export class TransactionUtils { * skip?: number; // (Optional) Number of transactions to skip. Default is 0. * orderDirection?: OrderDirection; // (Optional) Order of the results. Default is DESC. * } + * + * + * ```ts + * type InternalTransaction = { + * from: string; + * to: string; + * value: bigint; + * method: string; + * receiver?: string; + * escrow?: string; + * token?: string; + * }; * ``` * * ```ts @@ -101,7 +131,7 @@ export class TransactionUtils { * from: string; * to: string; * timestamp: bigint; - * value: string; + * value: bigint; * method: string; * receiver?: string; * escrow?: string; @@ -150,7 +180,7 @@ export class TransactionUtils { } const { transactions } = await gqlFetch<{ - transactions: ITransaction[]; + transactions: TransactionData[]; }>(getSubgraphUrl(networkData), GET_TRANSACTIONS_QUERY(filter), { fromAddress: filter?.fromAddress, toAddress: filter?.toAddress, @@ -172,6 +202,34 @@ export class TransactionUtils { return []; } - return transactions; + return transactions.map((transaction) => mapTransaction(transaction)); } } + +function mapTransaction(t: TransactionData): ITransaction { + const internalTransactions: InternalTransaction[] = ( + t.internalTransactions || [] + ).map((itx) => ({ + from: itx.from, + to: itx.to, + value: BigInt(itx.value), + method: itx.method, + receiver: itx.receiver, + escrow: itx.escrow, + token: itx.token, + })); + + return { + block: BigInt(t.block), + txHash: t.txHash, + from: t.from, + to: t.to, + timestamp: Number(t.timestamp) * 1000, + value: BigInt(t.value), + method: t.method, + receiver: t.receiver, + escrow: t.escrow, + token: t.token, + internalTransactions, + }; +} diff --git a/packages/sdk/typescript/human-protocol-sdk/src/types.ts b/packages/sdk/typescript/human-protocol-sdk/src/types.ts index 17ac94cd92..14497c4bc5 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/types.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/types.ts @@ -30,6 +30,10 @@ export enum EscrowStatus { * Escrow is cancelled. */ Cancelled, + /** + * Escrow is cancelled. + */ + ToCancel, } /** @@ -139,62 +143,4 @@ export type NetworkData = { oldFactoryAddress: string; }; -/** - * Represents the response data for an escrow cancellation. - */ -export type EscrowCancel = { - /** - * The hash of the transaction associated with the escrow cancellation. - */ - txHash: string; - /** - * The amount refunded in the escrow cancellation. - */ - amountRefunded: bigint; -}; - -/** - * Represents the response data for an escrow withdrawal. - */ -export type EscrowWithdraw = { - /** - * The hash of the transaction associated with the escrow withdrawal. - */ - txHash: string; - /** - * The address of the token used for the withdrawal. - */ - tokenAddress: string; - /** - * The amount withdrawn from the escrow. - */ - amountWithdrawn: bigint; -}; - -/** - * Represents a payout from an escrow. - */ -export type Payout = { - /** - * Unique identifier of the payout. - */ - id: string; - /** - * The address of the escrow associated with the payout. - */ - escrowAddress: string; - /** - * The address of the recipient who received the payout. - */ - recipient: string; - /** - * The amount paid to the recipient. - */ - amount: bigint; - /** - * The timestamp when the payout was created (in UNIX format). - */ - createdAt: number; -}; - export type TransactionLikeWithNonce = TransactionLike & { nonce: number }; diff --git a/packages/sdk/typescript/human-protocol-sdk/src/worker.ts b/packages/sdk/typescript/human-protocol-sdk/src/worker.ts index f3d75bac3b..60fa11ed5f 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/worker.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/worker.ts @@ -1,11 +1,12 @@ +import { ethers } from 'ethers'; import gqlFetch from 'graphql-request'; import { NETWORKS } from './constants'; import { ChainId, OrderDirection } from './enums'; import { ErrorInvalidAddress, ErrorUnsupportedChainID } from './error'; +import { WorkerData } from './graphql'; import { GET_WORKER_QUERY, GET_WORKERS_QUERY } from './graphql/queries/worker'; import { IWorker, IWorkersFilter } from './interfaces'; import { getSubgraphUrl } from './utils'; -import { ethers } from 'ethers'; export class WorkerUtils { /** @@ -37,12 +38,14 @@ export class WorkerUtils { } const { worker } = await gqlFetch<{ - worker: IWorker; + worker: WorkerData | null; }>(getSubgraphUrl(networkData), GET_WORKER_QUERY, { address: address.toLowerCase(), }); - return worker || null; + if (!worker) return null; + + return mapWorker(worker); } /** @@ -65,7 +68,7 @@ export class WorkerUtils { * type IWorker = { * id: string; * address: string; - * totalHMTAmountReceived: string; + * totalHMTAmountReceived: bigint; * payoutCount: number; * }; * ``` @@ -102,7 +105,7 @@ export class WorkerUtils { } const { workers } = await gqlFetch<{ - workers: IWorker[]; + workers: WorkerData[]; }>(getSubgraphUrl(networkData), GET_WORKERS_QUERY(filter), { address: filter?.address?.toLowerCase(), first: first, @@ -115,6 +118,15 @@ export class WorkerUtils { return []; } - return workers; + return workers.map((w) => mapWorker(w)); } } + +function mapWorker(w: WorkerData): IWorker { + return { + id: w.id, + address: w.address, + totalHMTAmountReceived: BigInt(w.totalHMTAmountReceived || 0), + payoutCount: Number(w.payoutCount || 0), + }; +} diff --git a/packages/sdk/typescript/human-protocol-sdk/test/escrow.test.ts b/packages/sdk/typescript/human-protocol-sdk/test/escrow.test.ts index 2b402d58b8..012f8a9c77 100644 --- a/packages/sdk/typescript/human-protocol-sdk/test/escrow.test.ts +++ b/packages/sdk/typescript/human-protocol-sdk/test/escrow.test.ts @@ -20,6 +20,7 @@ import { ChainId, OrderDirection } from '../src/enums'; import { ErrorAmountMustBeGreaterThanZero, ErrorAmountsCannotBeEmptyArray, + ErrorBulkPayOutVersion, ErrorEscrowAddressIsNotProvidedByFactory, ErrorEscrowDoesNotHaveEnoughBalance, ErrorHashIsEmptyString, @@ -30,19 +31,21 @@ import { ErrorInvalidReputationOracleAddressProvided, ErrorInvalidTokenAddress, ErrorInvalidUrl, - ErrorListOfHandlersCannotBeEmpty, ErrorProviderDoesNotExist, ErrorRecipientAndAmountsMustBeSameLength, ErrorRecipientCannotBeEmptyArray, ErrorSigner, + ErrorStoreResultsVersion, ErrorTooManyRecipients, ErrorTotalFeeMustBeLessThanHundred, ErrorUnsupportedChainID, ErrorInvalidManifest, InvalidEthereumAddressError, + ContractExecutionError, } from '../src/error'; import { EscrowClient, EscrowUtils } from '../src/escrow'; import { + EscrowData, GET_ESCROWS_QUERY, GET_ESCROW_BY_ADDRESS_QUERY, GET_PAYOUTS_QUERY, @@ -50,12 +53,14 @@ import { import { EscrowStatus } from '../src/types'; import { DEFAULT_GAS_PAYER_PRIVKEY, + DEFAULT_PAYOUT_ID, DEFAULT_TX_ID, FAKE_ADDRESS, FAKE_HASH, FAKE_URL, VALID_URL, } from './utils/constants'; +import { IEscrow, IPayout } from '../src/interfaces'; describe('EscrowClient', () => { let escrowClient: any, @@ -84,23 +89,20 @@ describe('EscrowClient', () => { createEscrow: vi.fn(), setup: vi.fn(), fund: vi.fn(), - storeResults: vi.fn(), complete: vi.fn(), - 'bulkPayOut(address[],uint256[],string,string,uint256)': Object.assign( - vi.fn(), - { - populateTransaction: vi.fn(), - } - ), - 'bulkPayOut(address[],uint256[],string,string,uint256,bool)': + 'storeResults(string,string,uint256)': vi.fn(), + 'storeResults(string,string)': vi.fn(), + 'bulkPayOut(address[],uint256[],string,string,string,bool)': Object.assign(vi.fn(), { populateTransaction: vi.fn(), }), + 'bulkPayOut(address[],uint256[],string,string,uint256,bool)': vi.fn(), cancel: vi.fn(), + requestCancellation: vi.fn(), withdraw: vi.fn(), - addTrustedHandlers: vi.fn(), getBalance: vi.fn(), remainingFunds: vi.fn(), + reservedFunds: vi.fn(), manifestHash: vi.fn(), manifestUrl: vi.fn(), finalResultsUrl: vi.fn(), @@ -114,12 +116,14 @@ describe('EscrowClient', () => { reputationOracle: vi.fn(), exchangeOracle: vi.fn(), intermediateResultsUrl: vi.fn(), + intermediateResultsHash: vi.fn(), launcher: vi.fn(), escrowFactory: vi.fn(), }; mockEscrowFactoryContract = { createEscrow: vi.fn(), + createFundAndSetupEscrow: vi.fn(), hasEscrow: vi.fn(), lastEscrow: vi.fn(), }; @@ -190,27 +194,20 @@ describe('EscrowClient', () => { }); describe('createEscrow', () => { + const jobRequesterId = 'job-requester'; test('should throw an error if tokenAddress is an invalid address', async () => { const invalidAddress = FAKE_ADDRESS; await expect( - escrowClient.createEscrow(invalidAddress, [ethers.ZeroAddress]) + escrowClient.createEscrow(invalidAddress, jobRequesterId) ).rejects.toThrow(ErrorInvalidTokenAddress); }); - test('should throw an error if trustedHandlers contains an invalid address', async () => { - await expect( - escrowClient.createEscrow(ethers.ZeroAddress, [FAKE_ADDRESS]) - ).rejects.toThrow(new InvalidEthereumAddressError(FAKE_ADDRESS)); - }); - test('should create an escrow and return its address', async () => { const tokenAddress = ethers.ZeroAddress; - const trustedHandlers = [ethers.ZeroAddress]; - const jobRequesterId = 'job-requester'; + const expectedEscrowAddress = ethers.ZeroAddress; - // Create a spy object for the createEscrow method const createEscrowSpy = vi .spyOn(escrowClient.escrowFactoryContract, 'createEscrow') .mockImplementation(() => ({ @@ -228,13 +225,11 @@ describe('EscrowClient', () => { const result = await escrowClient.createEscrow( tokenAddress, - trustedHandlers, jobRequesterId ); expect(createEscrowSpy).toHaveBeenCalledWith( tokenAddress, - trustedHandlers, jobRequesterId, {} ); @@ -243,29 +238,32 @@ describe('EscrowClient', () => { test('should throw an error if the create an escrow fails', async () => { const tokenAddress = ethers.ZeroAddress; - const trustedHandlers = [ethers.ZeroAddress]; - const jobRequesterId = 'job-requester'; + + const mockedError = ethers.makeError( + 'Custom error', + 'CALL_EXCEPTION' as any + ); + const expectedError = new ContractExecutionError( + (mockedError as any).reason as string + ); escrowClient.escrowFactoryContract.createEscrow.mockRejectedValueOnce( - new Error() + mockedError ); await expect( - escrowClient.createEscrow(tokenAddress, trustedHandlers, jobRequesterId) - ).rejects.toThrow(); + escrowClient.createEscrow(tokenAddress, jobRequesterId) + ).rejects.toEqual(expectedError); expect( escrowClient.escrowFactoryContract.createEscrow - ).toHaveBeenCalledWith(tokenAddress, trustedHandlers, jobRequesterId, {}); + ).toHaveBeenCalledWith(tokenAddress, jobRequesterId, {}); }); test('should create an escrow and return its address with transaction options', async () => { const tokenAddress = ethers.ZeroAddress; - const trustedHandlers = [ethers.ZeroAddress]; - const jobRequesterId = 'job-requester'; const expectedEscrowAddress = ethers.ZeroAddress; - // Create a spy object for the createEscrow method const createEscrowSpy = vi .spyOn(escrowClient.escrowFactoryContract, 'createEscrow') .mockImplementation(() => ({ @@ -285,14 +283,12 @@ describe('EscrowClient', () => { const result = await escrowClient.createEscrow( tokenAddress, - trustedHandlers, jobRequesterId, txOptions ); expect(createEscrowSpy).toHaveBeenCalledWith( tokenAddress, - trustedHandlers, jobRequesterId, txOptions ); @@ -300,7 +296,34 @@ describe('EscrowClient', () => { }); }); - describe('setup', () => { + describe('createFundAndSetupEscrow', () => { + const jobRequesterId = 'job-requester'; + const escrowConfig = { + recordingOracle: ethers.ZeroAddress, + reputationOracle: ethers.ZeroAddress, + exchangeOracle: ethers.ZeroAddress, + recordingOracleFee: 10n, + reputationOracleFee: 10n, + exchangeOracleFee: 10n, + manifest: VALID_URL, + manifestHash: FAKE_HASH, + }; + const tokenAddress = ethers.ZeroAddress; + const expectedEscrowAddress = ethers.ZeroAddress; + + test('should throw an error if tokenAddress is an invalid address', async () => { + const invalidAddress = FAKE_ADDRESS; + + await expect( + escrowClient.createFundAndSetupEscrow( + invalidAddress, + 10n, + jobRequesterId, + {} as any + ) + ).rejects.toThrow(ErrorInvalidTokenAddress); + }); + test('should throw an error if recordingOracle is an invalid address', async () => { const escrowConfig = { recordingOracle: FAKE_ADDRESS, @@ -310,9 +333,383 @@ describe('EscrowClient', () => { reputationOracleFee: 10n, exchangeOracleFee: 10n, manifest: VALID_URL, + manifestHash: FAKE_HASH, + }; + + await expect( + escrowClient.createFundAndSetupEscrow( + tokenAddress, + 10n, + jobRequesterId, + escrowConfig + ) + ).rejects.toThrow(ErrorInvalidRecordingOracleAddressProvided); + }); + + test('should throw an error if reputationOracle is an invalid address', async () => { + const escrowConfig = { + recordingOracle: ethers.ZeroAddress, + reputationOracle: FAKE_ADDRESS, + exchangeOracle: ethers.ZeroAddress, + recordingOracleFee: 10n, + reputationOracleFee: 10n, + exchangeOracleFee: 10n, + manifest: VALID_URL, + manifestHash: FAKE_HASH, + }; + + await expect( + escrowClient.createFundAndSetupEscrow( + tokenAddress, + 10n, + jobRequesterId, + escrowConfig + ) + ).rejects.toThrow(ErrorInvalidReputationOracleAddressProvided); + }); + + test('should throw an error if exchangeOracle is an invalid address', async () => { + const escrowConfig = { + recordingOracle: ethers.ZeroAddress, + reputationOracle: ethers.ZeroAddress, + exchangeOracle: FAKE_ADDRESS, + recordingOracleFee: 10n, + reputationOracleFee: 10n, + exchangeOracleFee: 10n, + manifest: VALID_URL, + manifestHash: FAKE_HASH, + }; + + await expect( + escrowClient.createFundAndSetupEscrow( + tokenAddress, + 10n, + jobRequesterId, + escrowConfig + ) + ).rejects.toThrow(ErrorInvalidExchangeOracleAddressProvided); + }); + + test('should throw an error if recordingOracleFee <= 0', async () => { + const escrowConfig = { + recordingOracle: ethers.ZeroAddress, + reputationOracle: ethers.ZeroAddress, + exchangeOracle: ethers.ZeroAddress, + recordingOracleFee: 0n, + reputationOracleFee: 10n, + exchangeOracleFee: 10n, + manifest: VALID_URL, + manifestHash: FAKE_HASH, + }; + + await expect( + escrowClient.createFundAndSetupEscrow( + tokenAddress, + 10n, + jobRequesterId, + escrowConfig + ) + ).rejects.toThrow(ErrorAmountMustBeGreaterThanZero); + }); + + test('should throw an error if reputationOracleFee <= 0', async () => { + const escrowConfig = { + recordingOracle: ethers.ZeroAddress, + reputationOracle: ethers.ZeroAddress, + exchangeOracle: ethers.ZeroAddress, + recordingOracleFee: 10n, + reputationOracleFee: 0n, + exchangeOracleFee: 10n, + manifest: VALID_URL, hash: FAKE_HASH, }; + await expect( + escrowClient.createFundAndSetupEscrow( + tokenAddress, + 10n, + jobRequesterId, + escrowConfig + ) + ).rejects.toThrow(ErrorAmountMustBeGreaterThanZero); + }); + + test('should throw an error if exchangeOracleFee <= 0', async () => { + const escrowConfig = { + recordingOracle: ethers.ZeroAddress, + reputationOracle: ethers.ZeroAddress, + exchangeOracle: ethers.ZeroAddress, + recordingOracleFee: 10n, + reputationOracleFee: 10n, + exchangeOracleFee: 0n, + manifest: VALID_URL, + manifestHash: FAKE_HASH, + }; + + await expect( + escrowClient.createFundAndSetupEscrow( + tokenAddress, + 10n, + jobRequesterId, + escrowConfig + ) + ).rejects.toThrow(ErrorAmountMustBeGreaterThanZero); + }); + + test('should throw an error if total fee > 100', async () => { + const escrowConfig = { + recordingOracle: ethers.ZeroAddress, + reputationOracle: ethers.ZeroAddress, + exchangeOracle: ethers.ZeroAddress, + recordingOracleFee: 40n, + reputationOracleFee: 40n, + exchangeOracleFee: 40n, + manifest: VALID_URL, + manifestHash: FAKE_HASH, + }; + + await expect( + escrowClient.createFundAndSetupEscrow( + tokenAddress, + 10n, + jobRequesterId, + escrowConfig + ) + ).rejects.toThrow(ErrorTotalFeeMustBeLessThanHundred); + }); + + test('should throw an error if manifest is an empty string', async () => { + const escrowConfig = { + recordingOracle: ethers.ZeroAddress, + reputationOracle: ethers.ZeroAddress, + exchangeOracle: ethers.ZeroAddress, + recordingOracleFee: 10n, + reputationOracleFee: 10n, + exchangeOracleFee: 10n, + manifest: '', + manifestHash: FAKE_HASH, + }; + + await expect( + escrowClient.createFundAndSetupEscrow( + tokenAddress, + 10n, + jobRequesterId, + escrowConfig + ) + ).rejects.toThrow(ErrorInvalidManifest); + }); + + test('should throw an error if hash is an empty string', async () => { + const escrowConfig = { + recordingOracle: ethers.ZeroAddress, + reputationOracle: ethers.ZeroAddress, + exchangeOracle: ethers.ZeroAddress, + recordingOracleFee: 10n, + reputationOracleFee: 10n, + exchangeOracleFee: 10n, + manifest: VALID_URL, + manifestHash: '', + }; + + await expect( + escrowClient.createFundAndSetupEscrow( + tokenAddress, + 10n, + jobRequesterId, + escrowConfig + ) + ).rejects.toThrow(ErrorHashIsEmptyString); + }); + + test('should throw an error if the createFundAndSetupEscrow fails', async () => { + const jobRequesterId = 'job-requester'; + const mockedError = ethers.makeError( + 'Custom error', + 'CALL_EXCEPTION' as any + ); + const expectedError = new ContractExecutionError( + (mockedError as any).reason as string + ); + + escrowClient.escrowFactoryContract.createFundAndSetupEscrow.mockRejectedValueOnce( + mockedError + ); + + await expect( + escrowClient.createFundAndSetupEscrow( + tokenAddress, + 10n, + jobRequesterId, + escrowConfig + ) + ).rejects.toEqual(expectedError); + + expect( + escrowClient.escrowFactoryContract.createFundAndSetupEscrow + ).toHaveBeenCalledWith( + tokenAddress, + 10n, + jobRequesterId, + escrowConfig.reputationOracle, + escrowConfig.recordingOracle, + escrowConfig.exchangeOracle, + escrowConfig.reputationOracleFee, + escrowConfig.recordingOracleFee, + escrowConfig.exchangeOracleFee, + escrowConfig.manifest, + escrowConfig.manifestHash, + {} + ); + }); + + test('should create, fund and setup an escrow and return its address', async () => { + const createFundAndSetupEscrowSpy = vi + .spyOn(escrowClient.escrowFactoryContract, 'createFundAndSetupEscrow') + .mockImplementation(() => ({ + wait: async () => ({ + logs: [ + { + topics: [ethers.id('LaunchedV2(address,address,string)')], + args: { + escrow: expectedEscrowAddress, + }, + }, + ], + }), + })); + + const result = await escrowClient.createFundAndSetupEscrow( + tokenAddress, + 10n, + jobRequesterId, + escrowConfig + ); + + expect(createFundAndSetupEscrowSpy).toHaveBeenCalledWith( + tokenAddress, + 10n, + jobRequesterId, + escrowConfig.reputationOracle, + escrowConfig.recordingOracle, + escrowConfig.exchangeOracle, + escrowConfig.reputationOracleFee, + escrowConfig.recordingOracleFee, + escrowConfig.exchangeOracleFee, + escrowConfig.manifest, + escrowConfig.manifestHash, + {} + ); + expect(result).toBe(expectedEscrowAddress); + }); + + test('should create, fund and setup an escrow and return its address with transaction options', async () => { + const createFundAndSetupEscrowSpy = vi + .spyOn(escrowClient.escrowFactoryContract, 'createFundAndSetupEscrow') + .mockImplementation(() => ({ + wait: async () => ({ + logs: [ + { + topics: [ethers.id('LaunchedV2(address,address,string)')], + args: { + escrow: expectedEscrowAddress, + }, + }, + ], + }), + })); + + const txOptions: Overrides = { gasLimit: 45000 }; + + const result = await escrowClient.createFundAndSetupEscrow( + tokenAddress, + 10n, + jobRequesterId, + escrowConfig, + txOptions + ); + + expect(createFundAndSetupEscrowSpy).toHaveBeenCalledWith( + tokenAddress, + 10n, + jobRequesterId, + escrowConfig.reputationOracle, + escrowConfig.recordingOracle, + escrowConfig.exchangeOracle, + escrowConfig.reputationOracleFee, + escrowConfig.recordingOracleFee, + escrowConfig.exchangeOracleFee, + escrowConfig.manifest, + escrowConfig.manifestHash, + txOptions + ); + expect(result).toBe(expectedEscrowAddress); + }); + + test('should create, fund and setup an escrow and accept manifest as a JSON string', async () => { + const escrowConfig = { + recordingOracle: ethers.ZeroAddress, + reputationOracle: ethers.ZeroAddress, + exchangeOracle: ethers.ZeroAddress, + recordingOracleFee: 10n, + reputationOracleFee: 10n, + exchangeOracleFee: 10n, + manifest: '{"foo":"bar"}', + manifestHash: FAKE_HASH, + }; + const createFundAndSetupEscrowSpy = vi + .spyOn(escrowClient.escrowFactoryContract, 'createFundAndSetupEscrow') + .mockImplementation(() => ({ + wait: async () => ({ + logs: [ + { + topics: [ethers.id('LaunchedV2(address,address,string)')], + args: { + escrow: expectedEscrowAddress, + }, + }, + ], + }), + })); + + const result = await escrowClient.createFundAndSetupEscrow( + tokenAddress, + 10n, + jobRequesterId, + escrowConfig + ); + + expect(createFundAndSetupEscrowSpy).toHaveBeenCalledWith( + tokenAddress, + 10n, + jobRequesterId, + escrowConfig.reputationOracle, + escrowConfig.recordingOracle, + escrowConfig.exchangeOracle, + escrowConfig.reputationOracleFee, + escrowConfig.recordingOracleFee, + escrowConfig.exchangeOracleFee, + escrowConfig.manifest, + escrowConfig.manifestHash, + {} + ); + expect(result).toBe(expectedEscrowAddress); + }); + }); + + describe('setup', () => { + test('should throw an error if recordingOracle is an invalid address', async () => { + const escrowConfig = { + recordingOracle: FAKE_ADDRESS, + reputationOracle: ethers.ZeroAddress, + exchangeOracle: ethers.ZeroAddress, + recordingOracleFee: 10n, + reputationOracleFee: 10n, + exchangeOracleFee: 10n, + manifest: VALID_URL, + manifestHash: FAKE_HASH, + }; + await expect( escrowClient.setup(ethers.ZeroAddress, escrowConfig) ).rejects.toThrow(ErrorInvalidRecordingOracleAddressProvided); @@ -327,7 +724,7 @@ describe('EscrowClient', () => { reputationOracleFee: 10n, exchangeOracleFee: 10n, manifest: VALID_URL, - hash: FAKE_HASH, + manifestHash: FAKE_HASH, }; await expect( @@ -344,7 +741,7 @@ describe('EscrowClient', () => { reputationOracleFee: 10n, exchangeOracleFee: 10n, manifest: VALID_URL, - hash: FAKE_HASH, + manifestHash: FAKE_HASH, }; await expect( @@ -361,7 +758,7 @@ describe('EscrowClient', () => { reputationOracleFee: 10n, exchangeOracleFee: 10n, manifest: VALID_URL, - hash: FAKE_HASH, + manifestHash: FAKE_HASH, }; await expect( @@ -388,7 +785,7 @@ describe('EscrowClient', () => { ).rejects.toThrow(ErrorEscrowAddressIsNotProvidedByFactory); }); - test('should throw an error if 0 <= recordingOracleFee', async () => { + test('should throw an error if recordingOracleFee <= 0', async () => { const escrowConfig = { recordingOracle: ethers.ZeroAddress, reputationOracle: ethers.ZeroAddress, @@ -397,7 +794,7 @@ describe('EscrowClient', () => { reputationOracleFee: 10n, exchangeOracleFee: 10n, manifest: VALID_URL, - hash: FAKE_HASH, + manifestHash: FAKE_HASH, }; escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); @@ -407,7 +804,7 @@ describe('EscrowClient', () => { ).rejects.toThrow(ErrorAmountMustBeGreaterThanZero); }); - test('should throw an error if 0 <= reputationOracleFee', async () => { + test('should throw an error if reputationOracleFee <= 0', async () => { const escrowConfig = { recordingOracle: ethers.ZeroAddress, reputationOracle: ethers.ZeroAddress, @@ -416,7 +813,7 @@ describe('EscrowClient', () => { reputationOracleFee: 0n, exchangeOracleFee: 10n, manifest: VALID_URL, - hash: FAKE_HASH, + manifestHash: FAKE_HASH, }; escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); @@ -426,7 +823,7 @@ describe('EscrowClient', () => { ).rejects.toThrow(ErrorAmountMustBeGreaterThanZero); }); - test('should throw an error if 0 <= exchangeOracleFee', async () => { + test('should throw an error if exchangeOracleFee <= 0', async () => { const escrowConfig = { recordingOracle: ethers.ZeroAddress, reputationOracle: ethers.ZeroAddress, @@ -435,7 +832,7 @@ describe('EscrowClient', () => { reputationOracleFee: 10n, exchangeOracleFee: 0n, manifest: VALID_URL, - hash: FAKE_HASH, + manifestHash: FAKE_HASH, }; escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); @@ -445,7 +842,7 @@ describe('EscrowClient', () => { ).rejects.toThrow(ErrorAmountMustBeGreaterThanZero); }); - test('should throw an error if total fee is greater than 100', async () => { + test('should throw an error if total fee > 100', async () => { const escrowConfig = { recordingOracle: ethers.ZeroAddress, reputationOracle: ethers.ZeroAddress, @@ -454,7 +851,7 @@ describe('EscrowClient', () => { reputationOracleFee: 40n, exchangeOracleFee: 40n, manifest: VALID_URL, - hash: FAKE_HASH, + manifestHash: FAKE_HASH, }; escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); @@ -526,7 +923,7 @@ describe('EscrowClient', () => { reputationOracleFee: 10n, exchangeOracleFee: 10n, manifest: VALID_URL, - hash: '', + manifestHash: '', }; escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); @@ -788,60 +1185,133 @@ describe('EscrowClient', () => { ).rejects.toThrow(ErrorHashIsEmptyString); }); - test('should successfully store results', async () => { + test('should successfully store results (no fundsToReserve)', async () => { const escrowAddress = ethers.ZeroAddress; const url = VALID_URL; const hash = FAKE_HASH; escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); const storeResultsSpy = vi - .spyOn(escrowClient.escrowContract, 'storeResults') + .spyOn(escrowClient.escrowContract, 'storeResults(string,string)') .mockImplementation(() => ({ wait: vi.fn().mockResolvedValue(true), })); + escrowClient.escrowContract['storeResults(string,string)'] = + storeResultsSpy; await escrowClient.storeResults(escrowAddress, url, hash); expect(storeResultsSpy).toHaveBeenCalledWith(url, hash, {}); }); - test('should throw an error if the store results fails', async () => { + test('should successfully store results with transaction options (no fundsToReserve)', async () => { const escrowAddress = ethers.ZeroAddress; const url = VALID_URL; const hash = FAKE_HASH; + const txOptions: Overrides = { gasLimit: 45000 }; escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); - escrowClient.escrowContract.storeResults.mockRejectedValueOnce( - new Error() - ); + const storeResultsSpy = vi + .spyOn(escrowClient.escrowContract, 'storeResults(string,string)') + .mockImplementation(() => ({ + wait: vi.fn().mockResolvedValue(true), + })); + escrowClient.escrowContract['storeResults(string,string)'] = + storeResultsSpy; - await expect( - escrowClient.storeResults(escrowAddress, url, hash) - ).rejects.toThrow(); + await escrowClient.storeResults(escrowAddress, url, hash, txOptions); + + expect(storeResultsSpy).toHaveBeenCalledWith(url, hash, txOptions); + }); - expect(escrowClient.escrowContract.storeResults).toHaveBeenCalledWith( + test('should successfully store results with fundsToReserve', async () => { + const escrowAddress = ethers.ZeroAddress; + const url = VALID_URL; + const hash = FAKE_HASH; + const fundsToReserve = 123n; + + escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); + const storeResultsWithFundsSpy = vi.fn().mockImplementation(() => ({ + wait: vi.fn().mockResolvedValue(true), + })); + escrowClient.escrowContract['storeResults(string,string,uint256)'] = + storeResultsWithFundsSpy; + + await escrowClient.storeResults(escrowAddress, url, hash, fundsToReserve); + + expect(storeResultsWithFundsSpy).toHaveBeenCalledWith( url, hash, + fundsToReserve, {} ); }); - test('should successfully store results with transaction options', async () => { + test('should successfully store results with fundsToReserve and txOptions', async () => { const escrowAddress = ethers.ZeroAddress; const url = VALID_URL; const hash = FAKE_HASH; + const fundsToReserve = 123n; + const txOptions: Overrides = { gasLimit: 45000 }; escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); - const storeResultsSpy = vi - .spyOn(escrowClient.escrowContract, 'storeResults') - .mockImplementation(() => ({ - wait: vi.fn().mockResolvedValue(true), - })); - const txOptions: Overrides = { gasLimit: 45000 }; + const storeResultsWithFundsSpy = vi.fn().mockImplementation(() => ({ + wait: vi.fn().mockResolvedValue(true), + })); + escrowClient.escrowContract['storeResults(string,string,uint256)'] = + storeResultsWithFundsSpy; - await escrowClient.storeResults(escrowAddress, url, hash, txOptions); + await escrowClient.storeResults( + escrowAddress, + url, + hash, + fundsToReserve, + txOptions + ); - expect(storeResultsSpy).toHaveBeenCalledWith(url, hash, txOptions); + expect(storeResultsWithFundsSpy).toHaveBeenCalledWith( + url, + hash, + fundsToReserve, + txOptions + ); + }); + + test('should successfully store results with fundsToReserve=0 and empty url and hash', async () => { + const escrowAddress = ethers.ZeroAddress; + const fundsToReserve = 0n; + + escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); + const storeResultsWithFundsSpy = vi.fn().mockImplementation(() => ({ + wait: vi.fn().mockResolvedValue(true), + })); + escrowClient.escrowContract['storeResults(string,string,uint256)'] = + storeResultsWithFundsSpy; + + await escrowClient.storeResults(escrowAddress, '', '', fundsToReserve); + + expect(storeResultsWithFundsSpy).toHaveBeenCalledWith( + '', + '', + fundsToReserve, + {} + ); + }); + + test('should throw ErrorStoreResultsVersion if DEPRECATED_SIGNATURE error and no fundsToReserve', async () => { + const escrowAddress = ethers.ZeroAddress; + const url = VALID_URL; + const hash = FAKE_HASH; + + escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); + const error = { reason: 'DEPRECATED_SIGNATURE' }; + const storeResultsSpy = vi.fn().mockRejectedValue(error); + escrowClient.escrowContract['storeResults(string,string)'] = + storeResultsSpy; + + await expect( + escrowClient.storeResults(escrowAddress, url, hash) + ).rejects.toBe(ErrorStoreResultsVersion); }); }); @@ -1129,7 +1599,86 @@ describe('EscrowClient', () => { ).rejects.toThrow(ErrorEscrowDoesNotHaveEnoughBalance); }); - test('should successfully bulkPayOut escrow', async () => { + test('should successfully bulkPayOut escrow', async () => { + const escrowAddress = ethers.ZeroAddress; + const recipients = [ethers.ZeroAddress, ethers.ZeroAddress]; + const amounts = [10n, 10n]; + const finalResultsUrl = VALID_URL; + const finalResultsHash = FAKE_HASH; + const forceComplete = false; + + escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); + + const bulkPayOutSpy = vi + .spyOn( + escrowClient.escrowContract, + 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' + ) + .mockImplementation(() => ({ + wait: vi.fn().mockResolvedValue(true), + })); + + await escrowClient.bulkPayOut( + escrowAddress, + recipients, + amounts, + finalResultsUrl, + finalResultsHash, + DEFAULT_TX_ID, + forceComplete + ); + + expect(bulkPayOutSpy).toHaveBeenCalledWith( + recipients, + amounts, + finalResultsUrl, + finalResultsHash, + DEFAULT_TX_ID, + forceComplete, + {} + ); + }); + + test('should successfully bulkPayOut escrow with forceComplete option', async () => { + const escrowAddress = ethers.ZeroAddress; + const recipients = [ethers.ZeroAddress, ethers.ZeroAddress]; + const amounts = [10n, 10n]; + const finalResultsUrl = VALID_URL; + const finalResultsHash = FAKE_HASH; + + escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); + + const bulkPayOutSpy = vi + .spyOn( + escrowClient.escrowContract, + 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' + ) + .mockImplementation(() => ({ + wait: vi.fn().mockResolvedValue(true), + })); + + await escrowClient.bulkPayOut( + escrowAddress, + recipients, + amounts, + finalResultsUrl, + finalResultsHash, + DEFAULT_TX_ID, + true + ); + + expect(bulkPayOutSpy).toHaveBeenCalledWith( + recipients, + amounts, + finalResultsUrl, + finalResultsHash, + DEFAULT_TX_ID, + true, + {} + ); + }); + + test('should successfully bulkPayOut escrow with transaction options', async () => { const escrowAddress = ethers.ZeroAddress; const recipients = [ethers.ZeroAddress, ethers.ZeroAddress]; const amounts = [10n, 10n]; @@ -1137,15 +1686,17 @@ describe('EscrowClient', () => { const finalResultsHash = FAKE_HASH; escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); + escrowClient.getBalance = vi.fn().mockReturnValue(100n); const bulkPayOutSpy = vi .spyOn( escrowClient.escrowContract, - 'bulkPayOut(address[],uint256[],string,string,uint256)' + 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' ) .mockImplementation(() => ({ wait: vi.fn().mockResolvedValue(true), })); + const txOptions: Overrides = { gasLimit: 45000 }; await escrowClient.bulkPayOut( escrowAddress, @@ -1153,7 +1704,9 @@ describe('EscrowClient', () => { amounts, finalResultsUrl, finalResultsHash, - DEFAULT_TX_ID + DEFAULT_TX_ID, + false, + txOptions ); expect(bulkPayOutSpy).toHaveBeenCalledWith( @@ -1162,23 +1715,24 @@ describe('EscrowClient', () => { finalResultsUrl, finalResultsHash, DEFAULT_TX_ID, - {} + false, + txOptions ); }); - test('should successfully bulkPayOut escrow with forceComplete option', async () => { + test('should successfully bulkPayOut escrow with payoutId (string)', async () => { const escrowAddress = ethers.ZeroAddress; const recipients = [ethers.ZeroAddress, ethers.ZeroAddress]; const amounts = [10n, 10n]; const finalResultsUrl = VALID_URL; const finalResultsHash = FAKE_HASH; + const payoutId = 'uuid-1234'; escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); - - const bulkPayOutSpy = vi + const bulkPayOutStringSpy = vi .spyOn( escrowClient.escrowContract, - 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' + 'bulkPayOut(address[],uint256[],string,string,string,bool)' ) .mockImplementation(() => ({ wait: vi.fn().mockResolvedValue(true), @@ -1190,40 +1744,39 @@ describe('EscrowClient', () => { amounts, finalResultsUrl, finalResultsHash, - DEFAULT_TX_ID, + payoutId, true ); - expect(bulkPayOutSpy).toHaveBeenCalledWith( + expect(bulkPayOutStringSpy).toHaveBeenCalledWith( recipients, amounts, finalResultsUrl, finalResultsHash, - DEFAULT_TX_ID, + payoutId, true, {} ); }); - test('should successfully bulkPayOut escrow with transaction options', async () => { + test('should successfully bulkPayOut escrow with payoutId (string) and txOptions', async () => { const escrowAddress = ethers.ZeroAddress; const recipients = [ethers.ZeroAddress, ethers.ZeroAddress]; const amounts = [10n, 10n]; const finalResultsUrl = VALID_URL; const finalResultsHash = FAKE_HASH; + const payoutId = 'uuid-1234'; + const txOptions: Overrides = { gasLimit: 45000 }; escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); - escrowClient.getBalance = vi.fn().mockReturnValue(100n); - - const bulkPayOutSpy = vi + const bulkPayOutStringSpy = vi .spyOn( escrowClient.escrowContract, - 'bulkPayOut(address[],uint256[],string,string,uint256)' + 'bulkPayOut(address[],uint256[],string,string,string,bool)' ) .mockImplementation(() => ({ wait: vi.fn().mockResolvedValue(true), })); - const txOptions: Overrides = { gasLimit: 45000 }; await escrowClient.bulkPayOut( escrowAddress, @@ -1231,20 +1784,49 @@ describe('EscrowClient', () => { amounts, finalResultsUrl, finalResultsHash, - DEFAULT_TX_ID, + payoutId, false, txOptions ); - expect(bulkPayOutSpy).toHaveBeenCalledWith( + expect(bulkPayOutStringSpy).toHaveBeenCalledWith( recipients, amounts, finalResultsUrl, finalResultsHash, - DEFAULT_TX_ID, + payoutId, + false, txOptions ); }); + + test('should throw ErrorBulkPayOutVersion if DEPRECATED_SIGNATURE error and id is number', async () => { + const escrowAddress = ethers.ZeroAddress; + const recipients = [ethers.ZeroAddress, ethers.ZeroAddress]; + const amounts = [10n, 10n]; + const finalResultsUrl = VALID_URL; + const finalResultsHash = FAKE_HASH; + const txId = 1; + + escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); + const error = { reason: 'DEPRECATED_SIGNATURE' }; + vi.spyOn( + escrowClient.escrowContract, + 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' + ).mockRejectedValue(error); + + await expect( + escrowClient.bulkPayOut( + escrowAddress, + recipients, + amounts, + finalResultsUrl, + finalResultsHash, + txId, + false + ) + ).rejects.toBe(ErrorBulkPayOutVersion); + }); }); describe('createBulkPayoutTransaction', () => { @@ -1489,11 +2071,12 @@ describe('EscrowClient', () => { const amounts = [10n, 10n]; const finalResultsUrl = VALID_URL; const finalResultsHash = FAKE_HASH; + const payoutId = DEFAULT_PAYOUT_ID; const signerAddress = ethers.ZeroAddress; const encodedMethodData = '0xbulkPayOut-call-encoded-data'; escrowClient.escrowContract[ - 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' + 'bulkPayOut(address[],uint256[],string,string,string,bool)' ].populateTransaction.mockResolvedValueOnce({ from: signerAddress, to: escrowAddress, @@ -1509,7 +2092,7 @@ describe('EscrowClient', () => { amounts, finalResultsUrl, finalResultsHash, - DEFAULT_TX_ID, + payoutId, false ); @@ -1527,11 +2110,12 @@ describe('EscrowClient', () => { const amounts = [10n, 10n]; const finalResultsUrl = VALID_URL; const finalResultsHash = FAKE_HASH; + const payoutId = DEFAULT_PAYOUT_ID; const signerAddress = ethers.ZeroAddress; const encodedMethodData = '0xbulkPayOut-call-encoded-data'; escrowClient.escrowContract[ - 'bulkPayOut(address[],uint256[],string,string,uint256,bool)' + 'bulkPayOut(address[],uint256[],string,string,string,bool)' ].populateTransaction.mockResolvedValueOnce({ from: signerAddress, to: escrowAddress, @@ -1547,7 +2131,7 @@ describe('EscrowClient', () => { amounts, finalResultsUrl, finalResultsHash, - DEFAULT_TX_ID, + payoutId, false, { nonce, @@ -1584,41 +2168,16 @@ describe('EscrowClient', () => { test('should successfully cancel escrow', async () => { const escrowAddress = ethers.ZeroAddress; - const amountRefunded = 1n; escrowClient.escrowContract.token.mockResolvedValueOnce( ethers.ZeroAddress ); - - const log = { - address: ethers.ZeroAddress, - name: 'Transfer', - args: [ethers.ZeroAddress, ethers.ZeroAddress, amountRefunded], - }; - mockTx.wait.mockResolvedValueOnce({ - hash: FAKE_HASH, - logs: [log], - }); - - const mockHMTokenFactoryContract = { - interface: { - parseLog: vi.fn().mockReturnValueOnce(log), - }, - }; - - vi.spyOn(HMToken__factory, 'connect').mockReturnValue( - mockHMTokenFactoryContract as any - ); - escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); escrowClient.escrowContract.cancel.mockResolvedValueOnce(mockTx); const result = await escrowClient.cancel(escrowAddress); - expect(result).toStrictEqual({ - amountRefunded, - txHash: FAKE_HASH, - }); + expect(result).toBe(undefined); expect(escrowClient.escrowContract.cancel).toHaveBeenCalledWith({}); }); @@ -1633,190 +2192,95 @@ describe('EscrowClient', () => { expect(escrowClient.escrowContract.cancel).toHaveBeenCalledWith({}); }); - test('should throw an error if the wait fails', async () => { - const escrowAddress = ethers.ZeroAddress; - mockTx.wait.mockRejectedValueOnce(new Error()); - escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); - escrowClient.escrowContract.cancel.mockResolvedValueOnce(mockTx); - - await expect(escrowClient.cancel(escrowAddress)).rejects.toThrow(); - - expect(escrowClient.escrowContract.cancel).toHaveBeenCalledWith({}); - }); - - test('should throw an error if transfer event not found in transaction logs', async () => { - const escrowAddress = ethers.ZeroAddress; - mockTx.wait.mockResolvedValueOnce({ - transactionHash: FAKE_HASH, - logs: [ - { - address: ethers.ZeroAddress, - name: 'NotTransfer', - args: [ethers.ZeroAddress, ethers.ZeroAddress, undefined], - }, - ], - }); - escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); - escrowClient.escrowContract.cancel.mockResolvedValueOnce(mockTx); - - const mockHMTokenFactoryContract = { - interface: { - parseLog: vi.fn(), - }, - }; - - vi.spyOn(HMToken__factory, 'connect').mockReturnValue( - mockHMTokenFactoryContract as any - ); - - await expect(escrowClient.cancel(escrowAddress)).rejects.toThrow(); - - expect(escrowClient.escrowContract.cancel).toHaveBeenCalledWith({}); - }); - test('should successfully cancel escrow with transaction options', async () => { const escrowAddress = ethers.ZeroAddress; - const amountRefunded = 1n; escrowClient.escrowContract.token.mockResolvedValueOnce( ethers.ZeroAddress ); - - const log = { - address: ethers.ZeroAddress, - name: 'Transfer', - args: [ethers.ZeroAddress, ethers.ZeroAddress, amountRefunded], - }; - mockTx.wait.mockResolvedValueOnce({ - hash: FAKE_HASH, - logs: [log], - }); - - const mockHMTokenFactoryContract = { - interface: { - parseLog: vi.fn().mockReturnValueOnce(log), - }, - }; - - vi.spyOn(HMToken__factory, 'connect').mockReturnValue( - mockHMTokenFactoryContract as any - ); - escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); escrowClient.escrowContract.cancel.mockResolvedValueOnce(mockTx); const txOptions: Overrides = { gasLimit: 45000 }; const result = await escrowClient.cancel(escrowAddress, txOptions); - expect(result).toStrictEqual({ - amountRefunded, - txHash: FAKE_HASH, - }); + expect(result).toBe(undefined); expect(escrowClient.escrowContract.cancel).toHaveBeenCalledWith( txOptions ); }); }); - describe('addTrustedHandlers', () => { + describe('requestCancellation', () => { test('should throw an error if escrowAddress is an invalid address', async () => { - const escrowAddress = FAKE_ADDRESS; - const trustedHandlers = [ethers.ZeroAddress]; + const invalidAddress = FAKE_ADDRESS; await expect( - escrowClient.addTrustedHandlers(escrowAddress, trustedHandlers) + escrowClient.requestCancellation(invalidAddress) ).rejects.toThrow(ErrorInvalidEscrowAddressProvided); }); test('should throw an error if hasEscrow returns false', async () => { const escrowAddress = ethers.ZeroAddress; - const trustedHandlers = [ethers.ZeroAddress]; escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(false); await expect( - escrowClient.addTrustedHandlers(escrowAddress, trustedHandlers) + escrowClient.requestCancellation(escrowAddress) ).rejects.toThrow(ErrorEscrowAddressIsNotProvidedByFactory); }); - test('should throw an error if trusted handlers length is equal to 0', async () => { - const escrowAddress = ethers.ZeroAddress; - const trustedHandlers: string[] = []; - - escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); - - await expect( - escrowClient.addTrustedHandlers(escrowAddress, trustedHandlers) - ).rejects.toThrow(ErrorListOfHandlersCannotBeEmpty); - }); - - test('should throw an error if trusted handlers contains invalid addresses', async () => { - const escrowAddress = ethers.ZeroAddress; - const trustedHandlers = [FAKE_ADDRESS]; - - escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); - - await expect( - escrowClient.addTrustedHandlers(escrowAddress, trustedHandlers) - ).rejects.toThrow(new InvalidEthereumAddressError(FAKE_ADDRESS)); - }); - - test('should successfully addTrustedHandlers', async () => { + test('should successfully request cancellation', async () => { const escrowAddress = ethers.ZeroAddress; - const trustedHandlers = [ethers.ZeroAddress]; escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); - const addTrustedHandlersSpy = vi - .spyOn(escrowClient.escrowContract, 'addTrustedHandlers') - .mockImplementation(() => ({ - wait: vi.fn().mockResolvedValue(true), - })); + escrowClient.escrowContract.requestCancellation.mockResolvedValueOnce( + mockTx + ); - await escrowClient.addTrustedHandlers(escrowAddress, trustedHandlers); + const result = await escrowClient.requestCancellation(escrowAddress); - expect(addTrustedHandlersSpy).toHaveBeenCalledWith(trustedHandlers, {}); + expect(result).toBe(undefined); + expect( + escrowClient.escrowContract.requestCancellation + ).toHaveBeenCalledWith({}); }); - test('should throw an error if addTrustedHandlers fails', async () => { + test('should throw an error if the requestCancellation fails', async () => { const escrowAddress = ethers.ZeroAddress; - const trustedHandlers = [ethers.ZeroAddress]; escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); - escrowClient.escrowContract.addTrustedHandlers.mockRejectedValueOnce( + escrowClient.escrowContract.requestCancellation.mockRejectedValueOnce( new Error() ); await expect( - escrowClient.addTrustedHandlers(escrowAddress, trustedHandlers) + escrowClient.requestCancellation(escrowAddress) ).rejects.toThrow(); expect( - escrowClient.escrowContract.addTrustedHandlers - ).toHaveBeenCalledWith(trustedHandlers, {}); + escrowClient.escrowContract.requestCancellation + ).toHaveBeenCalledWith({}); }); - test('should successfully addTrustedHandlers with transaction options', async () => { + test('should successfully request cancellation with transaction options', async () => { const escrowAddress = ethers.ZeroAddress; - const trustedHandlers = [ethers.ZeroAddress]; escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); - const addTrustedHandlersSpy = vi - .spyOn(escrowClient.escrowContract, 'addTrustedHandlers') - .mockImplementation(() => ({ - wait: vi.fn().mockResolvedValue(true), - })); + escrowClient.escrowContract.requestCancellation.mockResolvedValueOnce( + mockTx + ); const txOptions: Overrides = { gasLimit: 45000 }; - await escrowClient.addTrustedHandlers( + const result = await escrowClient.requestCancellation( escrowAddress, - trustedHandlers, txOptions ); - expect(addTrustedHandlersSpy).toHaveBeenCalledWith( - trustedHandlers, - txOptions - ); + expect(result).toBe(undefined); + expect( + escrowClient.escrowContract.requestCancellation + ).toHaveBeenCalledWith(txOptions); }); }); @@ -1849,12 +2313,12 @@ describe('EscrowClient', () => { }); test('should successfully withdraw from escrow', async () => { - const amountWithdrawn = 1n; + const withdrawnAmount = 1n; const log = { address: ethers.ZeroAddress, name: 'Transfer', - args: [ethers.ZeroAddress, ethers.ZeroAddress, amountWithdrawn], + args: [ethers.ZeroAddress, ethers.ZeroAddress, withdrawnAmount], }; mockTx.wait.mockResolvedValueOnce({ hash: FAKE_HASH, @@ -1877,7 +2341,7 @@ describe('EscrowClient', () => { const result = await escrowClient.withdraw(escrowAddress, tokenAddress); expect(result).toStrictEqual({ - amountWithdrawn, + withdrawnAmount, tokenAddress, txHash: FAKE_HASH, }); @@ -1953,12 +2417,12 @@ describe('EscrowClient', () => { test('should successfully withdraw from escrow with transaction options', async () => { const escrowAddress = ethers.ZeroAddress; - const amountWithdrawn = 1n; + const withdrawnAmount = 1n; const log = { address: ethers.ZeroAddress, name: 'Transfer', - args: [ethers.ZeroAddress, ethers.ZeroAddress, amountWithdrawn], + args: [ethers.ZeroAddress, ethers.ZeroAddress, withdrawnAmount], }; mockTx.wait.mockResolvedValueOnce({ hash: FAKE_HASH, @@ -1986,7 +2450,7 @@ describe('EscrowClient', () => { ); expect(result).toStrictEqual({ - amountWithdrawn, + withdrawnAmount, tokenAddress, txHash: FAKE_HASH, }); @@ -2060,6 +2524,56 @@ describe('EscrowClient', () => { }); }); + describe('getReservedFunds', () => { + test('should throw an error if escrowAddress is an invalid address', async () => { + const escrowAddress = FAKE_ADDRESS; + + await expect( + escrowClient.getReservedFunds(escrowAddress) + ).rejects.toThrow(ErrorInvalidEscrowAddressProvided); + }); + + test('should throw an error if hasEscrow returns false', async () => { + const escrowAddress = ethers.ZeroAddress; + + escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(false); + + await expect( + escrowClient.getReservedFunds(escrowAddress) + ).rejects.toThrow(ErrorEscrowAddressIsNotProvidedByFactory); + }); + + test('should successfully getReservedFunds', async () => { + const escrowAddress = ethers.ZeroAddress; + const reservedAmount = 123n; + + escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); + escrowClient.escrowContract.reservedFunds.mockResolvedValueOnce( + reservedAmount + ); + + const result = await escrowClient.getReservedFunds(escrowAddress); + + expect(result).toEqual(reservedAmount); + expect(escrowClient.escrowContract.reservedFunds).toHaveBeenCalledWith(); + }); + + test('should throw an error if getReservedFunds fails', async () => { + const escrowAddress = ethers.ZeroAddress; + + escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); + escrowClient.escrowContract.reservedFunds.mockRejectedValueOnce( + new Error() + ); + + await expect( + escrowClient.getReservedFunds(escrowAddress) + ).rejects.toThrow(); + + expect(escrowClient.escrowContract.reservedFunds).toHaveBeenCalledWith(); + }); + }); + describe('getManifestHash', () => { test('should throw an error if escrowAddress is an invalid address', async () => { const escrowAddress = FAKE_ADDRESS; @@ -2084,7 +2598,7 @@ describe('EscrowClient', () => { const hash = FAKE_HASH; escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); - escrowClient.escrowContract.manifestHash.mockReturnValue(hash); + escrowClient.escrowContract.manifestHash.mockReturnValueOnce(hash); const manifestHash = await escrowClient.getManifestHash(escrowAddress); @@ -2095,7 +2609,7 @@ describe('EscrowClient', () => { test('should throw an error if getManifestHash fails', async () => { const escrowAddress = ethers.ZeroAddress; - escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(true); + escrowClient.escrowFactoryContract.hasEscrow.mockReturnValueOnce(true); escrowClient.escrowContract.manifestHash.mockRejectedValueOnce( new Error() ); @@ -2268,6 +2782,61 @@ describe('EscrowClient', () => { }); }); + describe('getIntermediateResultsHash', () => { + test('should throw an error if escrowAddress is an invalid address', async () => { + const escrowAddress = FAKE_ADDRESS; + + await expect( + escrowClient.getIntermediateResultsHash(escrowAddress) + ).rejects.toThrow(ErrorInvalidEscrowAddressProvided); + }); + + test('should throw an error if hasEscrow returns false', async () => { + const escrowAddress = ethers.ZeroAddress; + + escrowClient.escrowFactoryContract.hasEscrow.mockReturnValue(false); + + await expect( + escrowClient.getIntermediateResultsHash(escrowAddress) + ).rejects.toThrow(ErrorEscrowAddressIsNotProvidedByFactory); + }); + + test('should successfully getIntermediateResultsHash', async () => { + const escrowAddress = ethers.ZeroAddress; + const hash = FAKE_HASH; + + escrowClient.escrowFactoryContract.hasEscrow.mockReturnValueOnce(true); + escrowClient.escrowContract.intermediateResultsHash.mockReturnValueOnce( + hash + ); + + const intermediateResultsHash = + await escrowClient.getIntermediateResultsHash(escrowAddress); + + expect(intermediateResultsHash).toEqual(hash); + expect( + escrowClient.escrowContract.intermediateResultsHash + ).toHaveBeenCalledWith(); + }); + + test('should throw an error if getIntermediateResultsHash fails', async () => { + const escrowAddress = ethers.ZeroAddress; + + escrowClient.escrowFactoryContract.hasEscrow.mockReturnValueOnce(true); + escrowClient.escrowContract.intermediateResultsHash.mockRejectedValueOnce( + new Error() + ); + + await expect( + escrowClient.getIntermediateResultsHash(escrowAddress) + ).rejects.toThrow(); + + expect( + escrowClient.escrowContract.intermediateResultsHash + ).toHaveBeenCalledWith(); + }); + }); + describe('getTokenAddress', () => { test('should throw an error if escrowAddress is an invalid address', async () => { const escrowAddress = FAKE_ADDRESS; @@ -2649,19 +3218,32 @@ describe('EscrowUtils', () => { }); test('should successfully getEscrows', async () => { - const escrows = [ + const escrows: EscrowData[] = [ { id: '1', address: '0x0', amountPaid: '3', balance: '0', count: '1', - jobRequesterId: '1', factoryAddress: '0x0', launcher: '0x0', status: 'Completed', token: '0x0', totalFundedAmount: '3', + createdAt: '1', + finalResultsHash: null, + finalResultsUrl: null, + intermediateResultsHash: null, + intermediateResultsUrl: null, + manifestHash: null, + manifest: null, + recordingOracle: null, + recordingOracleFee: null, + reputationOracle: null, + reputationOracleFee: null, + exchangeOracle: null, + exchangeOracleFee: null, + jobRequesterId: null, }, { id: '2', @@ -2669,12 +3251,25 @@ describe('EscrowUtils', () => { amountPaid: '0', balance: '3', count: '2', - jobRequesterId: '1', factoryAddress: '0x0', launcher: '0x0', status: 'Pending', token: '0x0', totalFundedAmount: '3', + createdAt: '1', + finalResultsHash: null, + finalResultsUrl: null, + intermediateResultsHash: null, + intermediateResultsUrl: null, + manifestHash: null, + manifest: null, + recordingOracle: null, + recordingOracleFee: null, + reputationOracle: null, + reputationOracleFee: null, + exchangeOracle: null, + exchangeOracleFee: null, + jobRequesterId: null, }, ]; const gqlFetchSpy = vi @@ -2686,7 +3281,25 @@ describe('EscrowUtils', () => { }; const result = await EscrowUtils.getEscrows(filter); - expect(result).toEqual(escrows); + const expected = escrows.map((e) => ({ + ...e, + amountPaid: BigInt(e.amountPaid), + balance: BigInt(e.balance), + count: Number(e.count), + totalFundedAmount: BigInt(e.totalFundedAmount), + createdAt: Number(e.createdAt) * 1000, + recordingOracleFee: e.recordingOracleFee + ? Number(e.recordingOracleFee) + : null, + reputationOracleFee: e.reputationOracleFee + ? Number(e.reputationOracleFee) + : null, + exchangeOracleFee: e.exchangeOracleFee + ? Number(e.exchangeOracleFee) + : null, + chainId: ChainId.POLYGON_AMOY, + })); + expect(result).toEqual(expected); expect(gqlFetchSpy).toHaveBeenCalledWith( 'https://api.studio.thegraph.com/query/74256/amoy/version/latest', GET_ESCROWS_QUERY(filter), @@ -2707,19 +3320,32 @@ describe('EscrowUtils', () => { }); test('should successfully getEscrows for the filter with status array', async () => { - const escrows = [ + const escrows: EscrowData[] = [ { id: '1', address: '0x0', amountPaid: '3', balance: '0', count: '1', - jobRequesterId: '1', + createdAt: '1', factoryAddress: '0x0', launcher: '0x0', status: 'Pending', token: '0x0', totalFundedAmount: '3', + finalResultsHash: null, + finalResultsUrl: null, + intermediateResultsHash: null, + intermediateResultsUrl: null, + manifestHash: null, + manifest: null, + recordingOracle: null, + recordingOracleFee: null, + reputationOracle: null, + reputationOracleFee: null, + exchangeOracle: null, + exchangeOracleFee: null, + jobRequesterId: null, }, { id: '2', @@ -2727,12 +3353,25 @@ describe('EscrowUtils', () => { amountPaid: '3', balance: '0', count: '1', - jobRequesterId: '1', + createdAt: '1', factoryAddress: '0x0', launcher: '0x0', status: 'Complete', token: '0x0', totalFundedAmount: '3', + finalResultsHash: null, + finalResultsUrl: null, + intermediateResultsHash: null, + intermediateResultsUrl: null, + manifestHash: null, + manifest: null, + recordingOracle: null, + recordingOracleFee: null, + reputationOracle: null, + reputationOracleFee: null, + exchangeOracle: null, + exchangeOracleFee: null, + jobRequesterId: null, }, ]; const gqlFetchSpy = vi @@ -2744,24 +3383,55 @@ describe('EscrowUtils', () => { status: [EscrowStatus.Pending, EscrowStatus.Complete], }); - expect(result).toEqual(escrows); + const expected = escrows.map((e) => ({ + ...e, + amountPaid: BigInt(e.amountPaid), + balance: BigInt(e.balance), + count: Number(e.count), + totalFundedAmount: BigInt(e.totalFundedAmount), + createdAt: Number(e.createdAt) * 1000, + recordingOracleFee: e.recordingOracleFee + ? Number(e.recordingOracleFee) + : null, + reputationOracleFee: e.reputationOracleFee + ? Number(e.reputationOracleFee) + : null, + exchangeOracleFee: e.exchangeOracleFee + ? Number(e.exchangeOracleFee) + : null, + chainId: ChainId.POLYGON_AMOY, + })); + expect(result).toEqual(expected); expect(gqlFetchSpy).toHaveBeenCalled(); }); test('should successfully getEscrows for the filter', async () => { - const escrows = [ + const escrows: EscrowData[] = [ { id: '1', address: '0x0', amountPaid: '3', balance: '0', count: '1', - jobRequesterId: '1', + createdAt: '1', factoryAddress: '0x0', launcher: '0x0', status: 'Completed', token: '0x0', totalFundedAmount: '3', + finalResultsHash: null, + finalResultsUrl: null, + intermediateResultsHash: null, + intermediateResultsUrl: null, + manifestHash: null, + manifest: null, + recordingOracle: null, + recordingOracleFee: null, + reputationOracle: null, + reputationOracleFee: null, + exchangeOracle: null, + exchangeOracleFee: null, + jobRequesterId: null, }, ]; const gqlFetchSpy = vi @@ -2773,12 +3443,30 @@ describe('EscrowUtils', () => { launcher: ethers.ZeroAddress, }); - expect(result).toEqual(escrows); + const expected = escrows.map((e) => ({ + ...e, + amountPaid: BigInt(e.amountPaid), + balance: BigInt(e.balance), + count: Number(e.count), + totalFundedAmount: BigInt(e.totalFundedAmount), + createdAt: Number(e.createdAt) * 1000, + recordingOracleFee: e.recordingOracleFee + ? Number(e.recordingOracleFee) + : null, + reputationOracleFee: e.reputationOracleFee + ? Number(e.reputationOracleFee) + : null, + exchangeOracleFee: e.exchangeOracleFee + ? Number(e.exchangeOracleFee) + : null, + chainId: ChainId.POLYGON_AMOY, + })); + expect(result).toEqual(expected); expect(gqlFetchSpy).toHaveBeenCalled(); }); test('should successfully getEscrows created by a specific job requester', async () => { - const escrows = [ + const escrows: EscrowData[] = [ { id: '1', address: '0x0', @@ -2786,11 +3474,24 @@ describe('EscrowUtils', () => { balance: '0', count: '1', jobRequesterId: '1', + createdAt: '1', factoryAddress: '0x0', launcher: '0x0', status: 'Completed', token: '0x0', totalFundedAmount: '3', + finalResultsHash: null, + finalResultsUrl: null, + intermediateResultsHash: null, + intermediateResultsUrl: null, + manifestHash: null, + manifest: null, + recordingOracle: null, + recordingOracleFee: null, + reputationOracle: null, + reputationOracleFee: null, + exchangeOracle: null, + exchangeOracleFee: null, }, ]; const gqlFetchSpy = vi @@ -2802,24 +3503,55 @@ describe('EscrowUtils', () => { jobRequesterId: '1', }); - expect(result).toEqual(escrows); + const expected = escrows.map((e) => ({ + ...e, + amountPaid: BigInt(e.amountPaid), + balance: BigInt(e.balance), + count: Number(e.count), + totalFundedAmount: BigInt(e.totalFundedAmount), + createdAt: Number(e.createdAt) * 1000, + recordingOracleFee: e.recordingOracleFee + ? Number(e.recordingOracleFee) + : null, + reputationOracleFee: e.reputationOracleFee + ? Number(e.reputationOracleFee) + : null, + exchangeOracleFee: e.exchangeOracleFee + ? Number(e.exchangeOracleFee) + : null, + chainId: ChainId.POLYGON_AMOY, + })); + expect(result).toEqual(expected); expect(gqlFetchSpy).toHaveBeenCalled(); }); test('should successfully getEscrows with pagination', async () => { - const escrows = [ + const escrows: EscrowData[] = [ { id: '1', address: '0x0', amountPaid: '3', balance: '0', count: '1', - jobRequesterId: '1', + createdAt: '1', factoryAddress: '0x0', launcher: '0x0', status: 'Completed', token: '0x0', totalFundedAmount: '3', + finalResultsHash: null, + finalResultsUrl: null, + intermediateResultsHash: null, + intermediateResultsUrl: null, + manifestHash: null, + manifest: null, + recordingOracle: null, + recordingOracleFee: null, + reputationOracle: null, + reputationOracleFee: null, + exchangeOracle: null, + exchangeOracleFee: null, + jobRequesterId: null, }, { id: '2', @@ -2827,12 +3559,25 @@ describe('EscrowUtils', () => { amountPaid: '0', balance: '3', count: '2', - jobRequesterId: '1', + createdAt: '1', factoryAddress: '0x0', launcher: '0x0', status: 'Pending', token: '0x0', totalFundedAmount: '3', + finalResultsHash: null, + finalResultsUrl: null, + intermediateResultsHash: null, + intermediateResultsUrl: null, + manifestHash: null, + manifest: null, + recordingOracle: null, + recordingOracleFee: null, + reputationOracle: null, + reputationOracleFee: null, + exchangeOracle: null, + exchangeOracleFee: null, + jobRequesterId: null, }, ]; const gqlFetchSpy = vi @@ -2846,7 +3591,25 @@ describe('EscrowUtils', () => { }; const result = await EscrowUtils.getEscrows(filter); - expect(result).toEqual(escrows); + const expected = escrows.map((e) => ({ + ...e, + amountPaid: BigInt(e.amountPaid), + balance: BigInt(e.balance), + count: Number(e.count), + totalFundedAmount: BigInt(e.totalFundedAmount), + createdAt: Number(e.createdAt) * 1000, + recordingOracleFee: e.recordingOracleFee + ? Number(e.recordingOracleFee) + : null, + reputationOracleFee: e.reputationOracleFee + ? Number(e.reputationOracleFee) + : null, + exchangeOracleFee: e.exchangeOracleFee + ? Number(e.exchangeOracleFee) + : null, + chainId: ChainId.POLYGON_AMOY, + })); + expect(result).toEqual(expected); expect(gqlFetchSpy).toHaveBeenCalledWith( 'https://api.studio.thegraph.com/query/74256/amoy/version/latest', GET_ESCROWS_QUERY(filter), @@ -2867,19 +3630,32 @@ describe('EscrowUtils', () => { }); test('should successfully getEscrows with pagination over limits', async () => { - const escrows = [ + const escrows: EscrowData[] = [ { id: '1', address: '0x0', amountPaid: '3', balance: '0', count: '1', - jobRequesterId: '1', + createdAt: '1', factoryAddress: '0x0', launcher: '0x0', status: 'Completed', token: '0x0', totalFundedAmount: '3', + intermediateResultsUrl: 'http://test.com', + intermediateResultsHash: 'QmTestHash', + finalResultsUrl: 'http://test.com', + finalResultsHash: 'QmTestHash', + exchangeOracle: '0x0', + recordingOracle: '0x0', + reputationOracle: '0x0', + exchangeOracleFee: '1', + recordingOracleFee: '1', + reputationOracleFee: '1', + jobRequesterId: '1', + manifest: null, + manifestHash: null, }, { id: '2', @@ -2887,12 +3663,25 @@ describe('EscrowUtils', () => { amountPaid: '0', balance: '3', count: '2', - jobRequesterId: '1', + createdAt: '1', factoryAddress: '0x0', launcher: '0x0', status: 'Pending', token: '0x0', totalFundedAmount: '3', + intermediateResultsUrl: 'http://test.com', + intermediateResultsHash: 'QmTestHash', + finalResultsUrl: 'http://test.com', + finalResultsHash: 'QmTestHash', + exchangeOracle: '0x0', + recordingOracle: '0x0', + reputationOracle: '0x0', + exchangeOracleFee: '1', + recordingOracleFee: '1', + reputationOracleFee: '1', + jobRequesterId: '1', + manifest: null, + manifestHash: null, }, ]; const gqlFetchSpy = vi @@ -2906,7 +3695,26 @@ describe('EscrowUtils', () => { }; const result = await EscrowUtils.getEscrows(filter); - expect(result).toEqual(escrows); + + const expected = escrows.map((e) => ({ + ...e, + amountPaid: BigInt(e.amountPaid), + balance: BigInt(e.balance), + count: Number(e.count), + totalFundedAmount: BigInt(e.totalFundedAmount), + createdAt: Number(e.createdAt) * 1000, + recordingOracleFee: e.recordingOracleFee + ? Number(e.recordingOracleFee) + : undefined, + reputationOracleFee: e.reputationOracleFee + ? Number(e.reputationOracleFee) + : undefined, + exchangeOracleFee: e.exchangeOracleFee + ? Number(e.exchangeOracleFee) + : undefined, + chainId: ChainId.POLYGON_AMOY, + })); + expect(result).toEqual(expected); expect(gqlFetchSpy).toHaveBeenCalledWith( 'https://api.studio.thegraph.com/query/74256/amoy/version/latest', GET_ESCROWS_QUERY(filter), @@ -2959,6 +3767,20 @@ describe('EscrowUtils', () => { status: 'Completed', token: '0x0', totalFundedAmount: '3', + intermediateResultsUrl: 'http://test.com', + intermediateResultsHash: 'QmTestHash', + finalResultsUrl: 'http://test.com', + finalResultsHash: 'QmTestHash', + exchangeOracle: '0x0', + recordingOracle: '0x0', + reputationOracle: '0x0', + exchangeOracleFee: '1', + recordingOracleFee: '1', + reputationOracleFee: '1', + jobRequesterId: null, + manifest: null, + manifestHash: null, + createdAt: '0', }; const gqlFetchSpy = vi .spyOn(gqlFetch, 'default') @@ -2966,7 +3788,22 @@ describe('EscrowUtils', () => { const result = await EscrowUtils.getEscrow(chainId, ethers.ZeroAddress); - expect(result).toEqual({ ...escrow, chainId }); + const expected: IEscrow = { + ...escrow, + amountPaid: 3n, + balance: 0n, + count: 1, + totalFundedAmount: 3n, + recordingOracleFee: 1, + reputationOracleFee: 1, + exchangeOracleFee: 1, + createdAt: 0, + chainId, + jobRequesterId: null, + manifest: null, + manifestHash: null, + }; + expect(result).toEqual(expected); expect(gqlFetchSpy).toHaveBeenCalledWith( NETWORKS[ChainId.LOCALHOST]?.subgraphUrl, GET_ESCROW_BY_ADDRESS_QUERY(), @@ -3018,7 +3855,12 @@ describe('EscrowUtils', () => { const result = await EscrowUtils.getStatusEvents({ chainId: ChainId.LOCALHOST, }); - expect(result).toEqual(pendingEvents); + const expectedResults = pendingEvents.map((event) => ({ + ...event, + status: EscrowStatus.Pending, + timestamp: +event.timestamp * 1000, + })); + expect(result).toEqual(expectedResults); expect(gqlFetchSpy).toHaveBeenCalled(); }); @@ -3051,7 +3893,12 @@ describe('EscrowUtils', () => { to: toDate, }); - expect(result).toEqual(pendingEvents); + const expectedResults = pendingEvents.map((event) => ({ + ...event, + status: EscrowStatus.Pending, + timestamp: +event.timestamp * 1000, + })); + expect(result).toEqual(expectedResults); expect(gqlFetchSpy).toHaveBeenCalled(); }); @@ -3085,7 +3932,12 @@ describe('EscrowUtils', () => { to: toDate, }); - expect(result).toEqual(partialEvents); + const expectedResults = partialEvents.map((event) => ({ + ...event, + status: EscrowStatus.Partial, + timestamp: +event.timestamp * 1000, + })); + expect(result).toEqual(expectedResults); expect(gqlFetchSpy).toHaveBeenCalled(); }); @@ -3118,7 +3970,12 @@ describe('EscrowUtils', () => { to: toDate, }); - expect(result).toEqual(pendingEvents); + const expectedResults = pendingEvents.map((event) => ({ + ...event, + status: EscrowStatus.Pending, + timestamp: +event.timestamp * 1000, + })); + expect(result).toEqual(expectedResults); expect(gqlFetchSpy).toHaveBeenCalled(); }); }); @@ -3183,7 +4040,15 @@ describe('EscrowUtils', () => { }; const result = await EscrowUtils.getPayouts(filter); - expect(result).toEqual(payouts); + + const expected: IPayout[] = payouts.map((payout) => ({ + id: payout.id, + escrowAddress: payout.escrowAddress, + recipient: payout.recipient, + amount: BigInt(payout.amount), + createdAt: Number(payout.createdAt) * 1000, + })); + expect(result).toEqual(expected); expect(gqlFetchSpy).toHaveBeenCalledWith( 'https://api.studio.thegraph.com/query/74256/amoy/version/latest', GET_PAYOUTS_QUERY(filter), @@ -3223,7 +4088,15 @@ describe('EscrowUtils', () => { }; const result = await EscrowUtils.getPayouts(filter); - expect(result).toEqual(payouts); + + const expected: IPayout[] = payouts.map((payout) => ({ + id: payout.id, + escrowAddress: payout.escrowAddress, + recipient: payout.recipient, + amount: BigInt(payout.amount), + createdAt: Number(payout.createdAt) * 1000, + })); + expect(result).toEqual(expected); expect(gqlFetchSpy).toHaveBeenCalledWith( 'https://api.studio.thegraph.com/query/74256/amoy/version/latest', GET_PAYOUTS_QUERY(filter), @@ -3268,7 +4141,15 @@ describe('EscrowUtils', () => { }; const result = await EscrowUtils.getPayouts(filter); - expect(result).toEqual(payouts); + + const expected: IPayout[] = payouts.map((payout) => ({ + id: payout.id, + escrowAddress: payout.escrowAddress, + recipient: payout.recipient, + amount: BigInt(payout.amount), + createdAt: Number(payout.createdAt) * 1000, + })); + expect(result).toEqual(expected); expect(gqlFetchSpy).toHaveBeenCalledWith( 'https://api.studio.thegraph.com/query/74256/amoy/version/latest', GET_PAYOUTS_QUERY(filter), @@ -3313,7 +4194,15 @@ describe('EscrowUtils', () => { }; const result = await EscrowUtils.getPayouts(filter); - expect(result).toEqual(payouts); + + const expected: IPayout[] = payouts.map((payout) => ({ + id: payout.id, + escrowAddress: payout.escrowAddress, + recipient: payout.recipient, + amount: BigInt(payout.amount), + createdAt: Number(payout.createdAt) * 1000, + })); + expect(result).toEqual(expected); expect(gqlFetchSpy).toHaveBeenCalledWith( 'https://api.studio.thegraph.com/query/74256/amoy/version/latest', GET_PAYOUTS_QUERY(filter), diff --git a/packages/sdk/typescript/human-protocol-sdk/test/operator.test.ts b/packages/sdk/typescript/human-protocol-sdk/test/operator.test.ts index 1c580260aa..690c700b55 100644 --- a/packages/sdk/typescript/human-protocol-sdk/test/operator.test.ts +++ b/packages/sdk/typescript/human-protocol-sdk/test/operator.test.ts @@ -10,58 +10,84 @@ import { ethers } from 'ethers'; import * as gqlFetch from 'graphql-request'; import { describe, expect, test, vi } from 'vitest'; import { NETWORKS, Role } from '../src/constants'; +import { ChainId, OrderDirection } from '../src/enums'; import { ErrorInvalidSlasherAddressProvided, ErrorInvalidStakerAddressProvided, } from '../src/error'; import { - GET_LEADERS_QUERY, GET_LEADER_QUERY, + GET_LEADERS_QUERY, GET_REPUTATION_NETWORK_QUERY, } from '../src/graphql/queries/operator'; -import { - IOperator, - IOperatorsFilter, - IOperatorSubgraph, - IReputationNetworkSubgraph, - IReward, -} from '../src/interfaces'; +import { IOperator, IOperatorsFilter, IReward } from '../src/interfaces'; import { OperatorUtils } from '../src/operator'; -import { ChainId, OrderDirection } from '../src/enums'; +import { IOperatorSubgraph, IReputationNetworkSubgraph } from '../src/graphql'; -describe('OperatorUtils', () => { - describe('getOperator', () => { - const stakerAddress = ethers.ZeroAddress; - const invalidAddress = 'InvalidAddress'; +vi.mock('graphql-request', () => { + return { + default: vi.fn(), + }; +}); - const mockOperatorSubgraph: IOperatorSubgraph = { - id: stakerAddress, - address: stakerAddress, - amountStaked: ethers.parseEther('100'), - amountLocked: ethers.parseEther('25'), - lockedUntilTimestamp: ethers.toBigInt(0), - amountWithdrawn: ethers.parseEther('25'), - amountSlashed: ethers.parseEther('25'), - reward: ethers.parseEther('25'), - amountJobsProcessed: ethers.parseEther('25'), - jobTypes: 'type1,type2', - registrationNeeded: true, - registrationInstructions: 'www.google.com', - website: 'www.google.com', - reputationNetworks: [ - { - address: '0x01', - }, - ], - }; +const stakerAddress = ethers.ZeroAddress; +const invalidAddress = 'InvalidAddress'; - const mockOperator: IOperator = { - ...mockOperatorSubgraph, - jobTypes: ['type1', 'type2'], - reputationNetworks: ['0x01'], - chainId: ChainId.LOCALHOST, - }; +describe('OperatorUtils', () => { + const mockOperatorSubgraph: IOperatorSubgraph = { + id: stakerAddress, + address: stakerAddress, + amountJobsProcessed: ethers.parseEther('25').toString(), + jobTypes: ['type1', 'type2'], + registrationNeeded: true, + registrationInstructions: 'www.google.com', + website: 'www.google.com', + reputationNetworks: [ + { + address: '0x01', + }, + ], + staker: { + stakedAmount: ethers.parseEther('100').toString(), + lockedAmount: ethers.parseEther('25').toString(), + lockedUntilTimestamp: '0', + withdrawnAmount: ethers.parseEther('25').toString(), + slashedAmount: ethers.parseEther('25').toString(), + lastDepositTimestamp: '0', + }, + category: null, + fee: null, + name: null, + publicKey: null, + role: null, + url: null, + webhookUrl: null, + }; + const operator: IOperator = { + id: stakerAddress, + address: stakerAddress, + amountJobsProcessed: ethers.parseEther('25'), + registrationNeeded: true, + registrationInstructions: 'www.google.com', + website: 'www.google.com', + jobTypes: ['type1', 'type2'], + reputationNetworks: ['0x01'], + chainId: ChainId.LOCALHOST, + stakedAmount: ethers.parseEther('100'), + lockedAmount: ethers.parseEther('25'), + lockedUntilTimestamp: 0, + withdrawnAmount: ethers.parseEther('25'), + slashedAmount: ethers.parseEther('25'), + role: null, + fee: null, + publicKey: null, + webhookUrl: null, + url: null, + name: null, + category: null, + }; + describe('getOperator', () => { test('should return staker information', async () => { const gqlFetchSpy = vi.spyOn(gqlFetch, 'default').mockResolvedValueOnce({ operator: mockOperatorSubgraph, @@ -79,20 +105,12 @@ describe('OperatorUtils', () => { address: stakerAddress, } ); - expect(result).toEqual(mockOperator); + expect(result).toEqual(operator); }); test('should return staker information when jobTypes is undefined', async () => { - mockOperatorSubgraph.jobTypes = undefined; - const mockOperator: IOperator = { - ...mockOperatorSubgraph, - jobTypes: [], - reputationNetworks: ['0x01'], - chainId: ChainId.LOCALHOST, - }; - const gqlFetchSpy = vi.spyOn(gqlFetch, 'default').mockResolvedValueOnce({ - operator: mockOperatorSubgraph, + operator: { ...mockOperatorSubgraph, jobTypes: undefined }, }); const result = await OperatorUtils.getOperator( @@ -107,20 +125,12 @@ describe('OperatorUtils', () => { address: stakerAddress, } ); - expect(result).toEqual(mockOperator); + expect(result).toEqual({ ...operator, jobTypes: [] }); }); - test('should return staker information when jobTypes is array', async () => { - mockOperatorSubgraph.jobTypes = ['type1', 'type2', 'type3'] as any; - const mockOperator: IOperator = { - ...mockOperatorSubgraph, - jobTypes: ['type1', 'type2', 'type3'], - reputationNetworks: ['0x01'], - chainId: ChainId.LOCALHOST, - }; - + test('should return staker information when jobTypes is a string', async () => { const gqlFetchSpy = vi.spyOn(gqlFetch, 'default').mockResolvedValueOnce({ - operator: mockOperatorSubgraph, + operator: { ...mockOperatorSubgraph, jobTypes: 'type1,type2,type3' }, }); const result = await OperatorUtils.getOperator( @@ -135,7 +145,10 @@ describe('OperatorUtils', () => { address: stakerAddress, } ); - expect(result).toEqual(mockOperator); + expect(result).toEqual({ + ...operator, + jobTypes: ['type1', 'type2', 'type3'], + }); }); test('should throw an error for an invalid staker address', async () => { @@ -177,38 +190,6 @@ describe('OperatorUtils', () => { }); describe('getOperators', () => { - const stakerAddress = ethers.ZeroAddress; - - const mockOperatorSubgraph: IOperatorSubgraph = { - id: stakerAddress, - address: stakerAddress, - amountStaked: ethers.parseEther('100'), - amountLocked: ethers.parseEther('25'), - lockedUntilTimestamp: ethers.toBigInt(0), - amountWithdrawn: ethers.parseEther('25'), - amountSlashed: ethers.parseEther('25'), - reward: ethers.parseEther('25'), - amountJobsProcessed: ethers.parseEther('25'), - jobTypes: 'type1,type2', - registrationNeeded: true, - registrationInstructions: 'www.google.com', - website: 'www.google.com', - reputationNetworks: [ - { - address: '0x01', - }, - ], - name: 'Alice', - category: 'machine_learning', - }; - - const mockOperator: IOperator = { - ...mockOperatorSubgraph, - jobTypes: ['type1', 'type2'], - reputationNetworks: ['0x01'], - chainId: ChainId.LOCALHOST, - }; - test('should return an array of stakers', async () => { const gqlFetchSpy = vi.spyOn(gqlFetch, 'default').mockResolvedValueOnce({ operators: [mockOperatorSubgraph, mockOperatorSubgraph], @@ -223,7 +204,7 @@ describe('OperatorUtils', () => { NETWORKS[ChainId.LOCALHOST]?.subgraphUrl, GET_LEADERS_QUERY(filter), { - minAmountStaked: filter?.minAmountStaked, + minStakedAmount: filter?.minStakedAmount, roles: filter?.roles, orderBy: filter?.orderBy, orderDirection: OrderDirection.DESC, @@ -231,7 +212,7 @@ describe('OperatorUtils', () => { skip: 0, } ); - expect(result).toEqual([mockOperator, mockOperator]); + expect(result).toEqual([operator, operator]); }); test('should apply default values when first is negative', async () => { @@ -251,7 +232,7 @@ describe('OperatorUtils', () => { NETWORKS[ChainId.LOCALHOST]?.subgraphUrl, GET_LEADERS_QUERY(filter), { - minAmountStaked: filter?.minAmountStaked, + minStakedAmount: filter?.minStakedAmount, roles: filter?.roles, orderBy: filter?.orderBy, orderDirection: OrderDirection.DESC, @@ -259,7 +240,7 @@ describe('OperatorUtils', () => { skip: 0, } ); - expect(result).toEqual([mockOperator]); + expect(result).toEqual([operator]); }); test('should apply default values when skip is negative', async () => { @@ -279,7 +260,7 @@ describe('OperatorUtils', () => { NETWORKS[ChainId.LOCALHOST]?.subgraphUrl, GET_LEADERS_QUERY(filter), { - minAmountStaked: filter?.minAmountStaked, + minStakedAmount: filter?.minStakedAmount, roles: filter?.roles, orderBy: filter?.orderBy, orderDirection: OrderDirection.DESC, @@ -287,7 +268,7 @@ describe('OperatorUtils', () => { skip: 0, // Default value } ); - expect(result).toEqual([mockOperator]); + expect(result).toEqual([operator]); }); test('should apply default values when first and skip are undefined', async () => { @@ -305,7 +286,7 @@ describe('OperatorUtils', () => { NETWORKS[ChainId.LOCALHOST]?.subgraphUrl, GET_LEADERS_QUERY(filter), { - minAmountStaked: filter?.minAmountStaked, + minStakedAmount: filter?.minStakedAmount, roles: filter?.roles, orderBy: filter?.orderBy, orderDirection: OrderDirection.DESC, @@ -313,32 +294,29 @@ describe('OperatorUtils', () => { skip: 0, // Default value } ); - expect(result).toEqual([mockOperator]); + expect(result).toEqual([operator]); }); - test('should return an array of stakers when jobTypes is undefined', async () => { - mockOperatorSubgraph.jobTypes = undefined; - const mockOperator: IOperator = { - ...mockOperatorSubgraph, - jobTypes: [], - reputationNetworks: ['0x01'], - chainId: ChainId.LOCALHOST, - }; - + test('should return an array of stakers when jobTypes is a string', async () => { const gqlFetchSpy = vi.spyOn(gqlFetch, 'default').mockResolvedValueOnce({ - operators: [mockOperatorSubgraph, mockOperatorSubgraph], + operators: [ + { ...mockOperatorSubgraph, jobTypes: 'type1,type2,type3' }, + { ...mockOperatorSubgraph, jobTypes: 'type1,type2,type3' }, + ], }); + const filter: IOperatorsFilter = { chainId: ChainId.LOCALHOST, roles: [Role.ExchangeOracle], }; + const result = await OperatorUtils.getOperators(filter); expect(gqlFetchSpy).toHaveBeenCalledWith( NETWORKS[ChainId.LOCALHOST]?.subgraphUrl, GET_LEADERS_QUERY(filter), { - minAmountStaked: filter?.minAmountStaked, + minStakedAmount: filter?.minStakedAmount, roles: filter?.roles, orderBy: filter?.orderBy, orderDirection: OrderDirection.DESC, @@ -346,35 +324,30 @@ describe('OperatorUtils', () => { skip: 0, } ); - - expect(result).toEqual([mockOperator, mockOperator]); + expect(result).toEqual([ + { ...operator, jobTypes: ['type1', 'type2', 'type3'] }, + { ...operator, jobTypes: ['type1', 'type2', 'type3'] }, + ]); }); - test('should return an array of stakers when jobTypes is array', async () => { - mockOperatorSubgraph.jobTypes = ['type1', 'type2', 'type3'] as any; - const mockOperator: IOperator = { - ...mockOperatorSubgraph, - jobTypes: ['type1', 'type2', 'type3'], - reputationNetworks: ['0x01'], - chainId: ChainId.LOCALHOST, - }; - + test('should return an array of stakers when jobTypes is undefined', async () => { const gqlFetchSpy = vi.spyOn(gqlFetch, 'default').mockResolvedValueOnce({ - operators: [mockOperatorSubgraph, mockOperatorSubgraph], + operators: [ + { ...mockOperatorSubgraph, jobTypes: undefined }, + { ...mockOperatorSubgraph, jobTypes: undefined }, + ], }); - const filter: IOperatorsFilter = { chainId: ChainId.LOCALHOST, roles: [Role.ExchangeOracle], }; - const result = await OperatorUtils.getOperators(filter); expect(gqlFetchSpy).toHaveBeenCalledWith( NETWORKS[ChainId.LOCALHOST]?.subgraphUrl, GET_LEADERS_QUERY(filter), { - minAmountStaked: filter?.minAmountStaked, + minStakedAmount: filter?.minStakedAmount, roles: filter?.roles, orderBy: filter?.orderBy, orderDirection: OrderDirection.DESC, @@ -382,7 +355,11 @@ describe('OperatorUtils', () => { skip: 0, } ); - expect(result).toEqual([mockOperator, mockOperator]); + + expect(result).toEqual([ + { ...operator, jobTypes: [] }, + { ...operator, jobTypes: [] }, + ]); }); test('should throw an error if gql fetch fails', async () => { @@ -415,30 +392,6 @@ describe('OperatorUtils', () => { }); describe('getReputationNetworkOperators', () => { - const stakerAddress = ethers.ZeroAddress; - const mockOperatorSubgraph: IOperatorSubgraph = { - address: '0x0000000000000000000000000000000000000001', - role: Role.JobLauncher, - url: 'www.google.com', - jobTypes: 'type1,type2', - registrationNeeded: true, - registrationInstructions: 'www.google.com', - reputationNetworks: [{ address: stakerAddress }], - id: '', - amountStaked: 0n, - amountLocked: 0n, - lockedUntilTimestamp: 0n, - amountWithdrawn: 0n, - amountSlashed: 0n, - reward: 0n, - amountJobsProcessed: 0n, - }; - const mockOperator: IOperator = { - ...mockOperatorSubgraph, - jobTypes: ['type1', 'type2'], - chainId: ChainId.LOCALHOST, - reputationNetworks: [stakerAddress], - }; const mockReputationNetwork: IReputationNetworkSubgraph = { id: stakerAddress, address: stakerAddress, @@ -463,7 +416,7 @@ describe('OperatorUtils', () => { role: undefined, } ); - expect(result).toEqual([mockOperator]); + expect(result).toEqual([operator]); }); test('should return empty data ', async () => { @@ -488,16 +441,11 @@ describe('OperatorUtils', () => { }); test('should return reputation network operators when jobTypes is undefined', async () => { - mockOperatorSubgraph.jobTypes = undefined; - const mockOperator: IOperator = { - ...mockOperatorSubgraph, - jobTypes: [], - chainId: ChainId.LOCALHOST, - reputationNetworks: [stakerAddress], - }; - const gqlFetchSpy = vi.spyOn(gqlFetch, 'default').mockResolvedValueOnce({ - reputationNetwork: mockReputationNetwork, + reputationNetwork: { + ...mockReputationNetwork, + operators: [{ ...mockOperatorSubgraph, jobTypes: undefined }], + }, }); const result = await OperatorUtils.getReputationNetworkOperators( @@ -513,27 +461,23 @@ describe('OperatorUtils', () => { role: undefined, } ); - expect(result).toEqual([mockOperator]); + expect(result).toEqual([{ ...operator, jobTypes: [] }]); }); - test('should return reputation network operators when jobTypes is array', async () => { - mockOperatorSubgraph.jobTypes = ['type1', 'type2', 'type3'] as any; - const mockOperator: IOperator = { - ...mockOperatorSubgraph, - jobTypes: ['type1', 'type2', 'type3'], - chainId: ChainId.LOCALHOST, - reputationNetworks: [stakerAddress], - }; - + test('should return reputation network operators when jobTypes is a string', async () => { const gqlFetchSpy = vi.spyOn(gqlFetch, 'default').mockResolvedValueOnce({ - reputationNetwork: mockReputationNetwork, + reputationNetwork: { + ...mockReputationNetwork, + operators: [ + { ...mockOperatorSubgraph, jobTypes: 'type1,type2,type3' }, + ], + }, }); const result = await OperatorUtils.getReputationNetworkOperators( ChainId.LOCALHOST, stakerAddress ); - expect(gqlFetchSpy).toHaveBeenCalledWith( NETWORKS[ChainId.LOCALHOST]?.subgraphUrl, GET_REPUTATION_NETWORK_QUERY(), @@ -542,7 +486,9 @@ describe('OperatorUtils', () => { role: undefined, } ); - expect(result).toEqual([mockOperator]); + expect(result).toEqual([ + { ...operator, jobTypes: ['type1', 'type2', 'type3'] }, + ]); }); test('should throw an error if gql fetch fails', async () => { diff --git a/packages/sdk/typescript/human-protocol-sdk/test/staking.test.ts b/packages/sdk/typescript/human-protocol-sdk/test/staking.test.ts index 33f346aa83..a3e85fa70e 100644 --- a/packages/sdk/typescript/human-protocol-sdk/test/staking.test.ts +++ b/packages/sdk/typescript/human-protocol-sdk/test/staking.test.ts @@ -1,7 +1,8 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ +import * as gqlFetch from 'graphql-request'; import { Overrides, Signer, ethers } from 'ethers'; import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'; -import { ChainId } from '../src/enums'; +import { ChainId, OrderDirection } from '../src/enums'; import { ErrorInvalidEscrowAddressProvided, ErrorInvalidSlasherAddressProvided, @@ -9,14 +10,25 @@ import { ErrorInvalidStakingValueSign, ErrorInvalidStakingValueType, ErrorProviderDoesNotExist, + ErrorStakerNotFound, ErrorUnsupportedChainID, } from '../src/error'; +import { NETWORKS } from '../src/constants'; import { StakingClient } from '../src/staking'; import { DEFAULT_GAS_PAYER_PRIVKEY, FAKE_AMOUNT, FAKE_NEGATIVE_AMOUNT, } from './utils/constants'; +import { IStaker, IStakersFilter } from '../src/interfaces'; +import { StakingUtils } from '../src/staking'; +import { StakerData } from '../src/graphql'; + +vi.mock('graphql-request', () => { + return { + default: vi.fn(), + }; +}); describe('StakingClient', () => { let stakingClient: any, @@ -281,7 +293,6 @@ describe('StakingClient', () => { describe('withdraw', () => { test('should call the withdraw method with the correct parameters', async () => { - mockStakingContract.withdraw.mockResolvedValueOnce(); const withdrawSpy = vi .spyOn(mockStakingContract, 'withdraw') .mockImplementation(() => ({ @@ -296,7 +307,6 @@ describe('StakingClient', () => { expect(withdrawSpy).toHaveBeenCalledTimes(1); }); test('should call the withdraw method with transaction options', async () => { - mockStakingContract.withdraw.mockResolvedValueOnce(); const withdrawSpy = vi .spyOn(mockStakingContract, 'withdraw') .mockImplementation(() => ({ @@ -549,3 +559,183 @@ describe('StakingClient', () => { }); }); }); + +describe('StakingUtils', () => { + const stakerAddress = '0x1234567890123456789012345678901234567890'; + const invalidAddress = 'InvalidAddress'; + + describe('getStaker', () => { + const mockStaker: StakerData = { + id: '0x0987654321098765432109876543210987654320', + address: stakerAddress, + stakedAmount: '1000', + lockedAmount: '100', + lockedUntilTimestamp: '1234567890', + withdrawnAmount: '900', + slashedAmount: '0', + lastDepositTimestamp: '1234567890', + }; + + test('should return staker information', async () => { + const gqlFetchSpy = vi.spyOn(gqlFetch, 'default').mockResolvedValueOnce({ + staker: mockStaker, + }); + + const result = await StakingUtils.getStaker( + ChainId.LOCALHOST, + stakerAddress + ); + + expect(gqlFetchSpy).toHaveBeenCalledWith( + NETWORKS[ChainId.LOCALHOST]?.subgraphUrl, + expect.anything(), + { id: stakerAddress.toLowerCase() } + ); + const expectedStaker: IStaker = { + address: mockStaker.address, + stakedAmount: BigInt(mockStaker.stakedAmount), + lockedAmount: BigInt(mockStaker.lockedAmount), + withdrawableAmount: BigInt(mockStaker.withdrawnAmount), + slashedAmount: BigInt(mockStaker.slashedAmount), + lockedUntil: Number(mockStaker.lockedUntilTimestamp) * 1000, + lastDepositTimestamp: Number(mockStaker.lastDepositTimestamp) * 1000, + }; + expect(result).toEqual(expectedStaker); + }); + + test('should throw an error for an invalid staker address', async () => { + await expect( + StakingUtils.getStaker(ChainId.LOCALHOST, invalidAddress) + ).rejects.toThrow(ErrorInvalidStakerAddressProvided); + }); + + test('should throw an error if the gql fetch fails', async () => { + const gqlFetchSpy = vi + .spyOn(gqlFetch, 'default') + .mockRejectedValueOnce(new Error('Error')); + + await expect( + StakingUtils.getStaker(ChainId.LOCALHOST, stakerAddress) + ).rejects.toThrow(); + expect(gqlFetchSpy).toHaveBeenCalledTimes(1); + }); + + test('should throw an error if staker is not found', async () => { + vi.spyOn(gqlFetch, 'default').mockResolvedValueOnce({ + staker: undefined, + }); + + await expect( + StakingUtils.getStaker(ChainId.LOCALHOST, stakerAddress) + ).rejects.toThrow(ErrorStakerNotFound); + }); + }); + + describe('getStakers', () => { + const mockStakers: StakerData[] = [ + { + id: '0x0987654321098765432109876543210987654320', + address: stakerAddress, + stakedAmount: '1000', + lockedAmount: '100', + lockedUntilTimestamp: '1234567890', + withdrawnAmount: '900', + slashedAmount: '0', + lastDepositTimestamp: '1234567890', + }, + { + id: '0x0987654321098765432109876543210987654321', + address: '0x0987654321098765432109876543210987654321', + stakedAmount: '2000', + lockedAmount: '200', + lockedUntilTimestamp: '1234567891', + withdrawnAmount: '1800', + slashedAmount: '0', + lastDepositTimestamp: '1234567890', + }, + ]; + + test('should return an array of stakers', async () => { + const gqlFetchSpy = vi.spyOn(gqlFetch, 'default').mockResolvedValueOnce({ + stakers: mockStakers, + }); + const filter: IStakersFilter = { + chainId: ChainId.LOCALHOST, + first: 10, + skip: 0, + }; + + const result = await StakingUtils.getStakers(filter); + + expect(gqlFetchSpy).toHaveBeenCalledWith( + NETWORKS[ChainId.LOCALHOST]?.subgraphUrl, + expect.anything(), + expect.objectContaining({ + minStakedAmount: undefined, + maxStakedAmount: undefined, + minLockedAmount: undefined, + maxLockedAmount: undefined, + minWithdrawnAmount: undefined, + maxWithdrawnAmount: undefined, + minSlashedAmount: undefined, + maxSlashedAmount: undefined, + orderBy: 'lastDepositTimestamp', + orderDirection: OrderDirection.DESC, + first: 10, + skip: 0, + }) + ); + const expectedStakers = mockStakers.map((s) => ({ + address: s.address, + stakedAmount: BigInt(s.stakedAmount), + lockedAmount: BigInt(s.lockedAmount), + withdrawableAmount: BigInt(s.withdrawnAmount), + slashedAmount: BigInt(s.slashedAmount), + lockedUntil: Number(s.lockedUntilTimestamp) * 1000, + lastDepositTimestamp: Number(s.lastDepositTimestamp) * 1000, + })); + expect(result).toEqual(expectedStakers); + }); + + test('should return an empty array if no stakers found', async () => { + vi.spyOn(gqlFetch, 'default').mockResolvedValueOnce({ + stakers: undefined, + }); + const filter: IStakersFilter = { + chainId: ChainId.LOCALHOST, + first: 10, + skip: 0, + }; + + const result = await StakingUtils.getStakers(filter); + expect(result).toEqual([]); + }); + + test('should throw an error if the gql fetch fails', async () => { + const filter: IStakersFilter = { + chainId: ChainId.LOCALHOST, + first: 10, + skip: 0, + }; + + const gqlFetchSpy = vi + .spyOn(gqlFetch, 'default') + .mockRejectedValueOnce(new Error('Error')); + + await expect(StakingUtils.getStakers(filter)).rejects.toThrow(); + expect(gqlFetchSpy).toHaveBeenCalledTimes(1); + }); + + test('should throw an error if the chain ID is unsupported', async () => { + const filter: IStakersFilter = { + chainId: 999999 as ChainId, + first: 10, + skip: 0, + }; + + await expect(StakingUtils.getStakers(filter)).rejects.toThrow( + ErrorUnsupportedChainID + ); + }); + }); +}); diff --git a/packages/sdk/typescript/human-protocol-sdk/test/statistics.test.ts b/packages/sdk/typescript/human-protocol-sdk/test/statistics.test.ts index 2201383242..8d6a741df2 100644 --- a/packages/sdk/typescript/human-protocol-sdk/test/statistics.test.ts +++ b/packages/sdk/typescript/human-protocol-sdk/test/statistics.test.ts @@ -80,7 +80,7 @@ describe('StatisticsClient', () => { totalEscrows: 1, dailyEscrowsData: [ { - timestamp: new Date(1000), + timestamp: 1000, escrowsTotal: 1, escrowsPending: 1, escrowsSolved: 1, @@ -141,7 +141,7 @@ describe('StatisticsClient', () => { expect(result).toEqual({ dailyWorkersData: [ { - timestamp: new Date(1000), + timestamp: 1000, activeWorkers: 4, }, ], @@ -200,7 +200,7 @@ describe('StatisticsClient', () => { expect(result).toEqual({ dailyPaymentsData: [ { - timestamp: new Date(1000), + timestamp: 1000, totalAmountPaid: ethers.toBigInt(100), totalCount: 4, averageAmountPerWorker: ethers.toBigInt(25), @@ -453,7 +453,7 @@ describe('StatisticsClient', () => { expect(result).toEqual([ { - timestamp: new Date(1000), + timestamp: 1000, totalTransactionAmount: ethers.toBigInt(100), totalTransactionCount: 4, dailyUniqueSenders: 100, diff --git a/packages/sdk/typescript/human-protocol-sdk/test/transaction.test.ts b/packages/sdk/typescript/human-protocol-sdk/test/transaction.test.ts index 31b015d41c..3cbea573dc 100644 --- a/packages/sdk/typescript/human-protocol-sdk/test/transaction.test.ts +++ b/packages/sdk/typescript/human-protocol-sdk/test/transaction.test.ts @@ -15,6 +15,7 @@ import { ErrorCannotUseDateAndBlockSimultaneously, ErrorInvalidHashProvided, } from '../src/error'; +import { TransactionData } from '../src/graphql'; import { GET_TRANSACTION_QUERY } from '../src/graphql/queries/transaction'; import { ITransaction, ITransactionsFilter } from '../src/interfaces'; import { TransactionUtils } from '../src/transaction'; @@ -24,20 +25,26 @@ describe('TransactionUtils', () => { const txHash = '0x62dD51230A30401C455c8398d06F85e4EaB6309f'; const invalidHash = 'InvalidHash'; - const mockTransaction: ITransaction = { - block: 12345n, + const mockTransaction = { + block: '12345', txHash: txHash, from: '0x1234567890123456789012345678901234567890', to: '0x0987654321098765432109876543210987654321', - timestamp: 1625247600n, + timestamp: '1625247600', value: '1000000000000000000', method: 'transfer', + receiver: null, + escrow: null, + token: null, internalTransactions: [ { from: '0x1234567890123456789012345678901234567890', to: '0x1234567890123456789012345678901234567891', value: '1000000000000000000', method: 'transfer', + receiver: null, + escrow: null, + token: null, }, ], }; @@ -59,7 +66,30 @@ describe('TransactionUtils', () => { hash: txHash.toLowerCase(), } ); - expect(result).toEqual(mockTransaction); + const expected: ITransaction = { + block: 12345n, + txHash, + from: mockTransaction.from, + to: mockTransaction.to, + timestamp: 1625247600000, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + internalTransactions: [ + { + from: mockTransaction.internalTransactions[0].from, + to: mockTransaction.internalTransactions[0].to, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + }, + ], + }; + expect(result).toEqual(expected); }); test('should throw an error for an invalid transaction hash', async () => { @@ -81,20 +111,27 @@ describe('TransactionUtils', () => { }); describe('getTransactions', () => { - const mockTransaction: ITransaction = { - block: 12345n, + const mockTransaction: TransactionData = { + block: '12345', txHash: '0x62dD51230A30401C455c8398d06F85e4EaB6309f', from: '0x1234567890123456789012345678901234567890', to: '0x0987654321098765432109876543210987654321', - timestamp: 1625247600n, + timestamp: '1625247600', value: '1000000000000000000', method: 'transfer', + receiver: null, + escrow: null, + token: null, internalTransactions: [ { from: '0x1234567890123456789012345678901234567890', to: '0x1234567890123456789012345678901234567891', value: '1000000000000000000', method: 'transfer', + receiver: null, + escrow: null, + token: null, + id: null, }, ], }; @@ -129,7 +166,31 @@ describe('TransactionUtils', () => { skip: 0, } ); - expect(result).toEqual([mockTransaction, mockTransaction]); + const expected: ITransaction = { + block: 12345n, + txHash: mockTransaction.txHash, + from: mockTransaction.from, + to: mockTransaction.to, + timestamp: 1625247600000, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + internalTransactions: [ + { + from: mockTransaction.internalTransactions[0].from, + to: mockTransaction.internalTransactions[0].to, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + }, + ], + }; + expect(result).toEqual([expected, expected]); + // type assertions (bigint fields) }); test('should return an array of transactions with date filter', async () => { @@ -164,7 +225,30 @@ describe('TransactionUtils', () => { skip: 0, } ); - expect(result).toEqual([mockTransaction, mockTransaction]); + const expected: ITransaction = { + block: 12345n, + txHash: mockTransaction.txHash, + from: mockTransaction.from, + to: mockTransaction.to, + timestamp: 1625247600000, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + internalTransactions: [ + { + from: mockTransaction.internalTransactions[0].from, + to: mockTransaction.internalTransactions[0].to, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + }, + ], + }; + expect(result).toEqual([expected, expected]); }); test('should return an array of transactions with address filter', async () => { @@ -198,7 +282,30 @@ describe('TransactionUtils', () => { skip: 0, } ); - expect(result).toEqual([mockTransaction, mockTransaction]); + const expected: ITransaction = { + block: 12345n, + txHash: mockTransaction.txHash, + from: mockTransaction.from, + to: mockTransaction.to, + timestamp: 1625247600000, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + internalTransactions: [ + { + from: mockTransaction.internalTransactions[0].from, + to: mockTransaction.internalTransactions[0].to, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + }, + ], + }; + expect(result).toEqual([expected, expected]); }); test('should return an array of transactions filtered by method', async () => { @@ -232,7 +339,30 @@ describe('TransactionUtils', () => { skip: 0, } ); - expect(result).toEqual([mockTransaction]); + const expected: ITransaction = { + block: 12345n, + txHash: mockTransaction.txHash, + from: mockTransaction.from, + to: mockTransaction.to, + timestamp: 1625247600000, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + internalTransactions: [ + { + from: mockTransaction.internalTransactions[0].from, + to: mockTransaction.internalTransactions[0].to, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + }, + ], + }; + expect(result).toEqual([expected]); }); test('should return an array of transactions filtered by escrow', async () => { @@ -266,7 +396,30 @@ describe('TransactionUtils', () => { skip: 0, } ); - expect(result).toEqual([mockTransaction]); + const expected: ITransaction = { + block: 12345n, + txHash: mockTransaction.txHash, + from: mockTransaction.from, + to: mockTransaction.to, + timestamp: 1625247600000, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + internalTransactions: [ + { + from: mockTransaction.internalTransactions[0].from, + to: mockTransaction.internalTransactions[0].to, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + }, + ], + }; + expect(result).toEqual([expected]); }); test('should return an array of transactions filtered by token', async () => { @@ -300,7 +453,30 @@ describe('TransactionUtils', () => { skip: 0, } ); - expect(result).toEqual([mockTransaction]); + const expected: ITransaction = { + block: 12345n, + txHash: mockTransaction.txHash, + from: mockTransaction.from, + to: mockTransaction.to, + timestamp: 1625247600000, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + internalTransactions: [ + { + from: mockTransaction.internalTransactions[0].from, + to: mockTransaction.internalTransactions[0].to, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + }, + ], + }; + expect(result).toEqual([expected]); }); test('should throw an error if both date and block filters are used', async () => { @@ -362,7 +538,30 @@ describe('TransactionUtils', () => { skip: 10, } ); - expect(result).toEqual([mockTransaction, mockTransaction]); + const expected: ITransaction = { + block: 12345n, + txHash: mockTransaction.txHash, + from: mockTransaction.from, + to: mockTransaction.to, + timestamp: 1625247600000, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + internalTransactions: [ + { + from: mockTransaction.internalTransactions[0].from, + to: mockTransaction.internalTransactions[0].to, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + }, + ], + }; + expect(result).toEqual([expected, expected]); }); test('should return an array of transactions with pagination over limits', async () => { @@ -395,7 +594,30 @@ describe('TransactionUtils', () => { skip: 10, } ); - expect(result).toEqual([mockTransaction, mockTransaction]); + const expected: ITransaction = { + block: 12345n, + txHash: mockTransaction.txHash, + from: mockTransaction.from, + to: mockTransaction.to, + timestamp: 1625247600000, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + internalTransactions: [ + { + from: mockTransaction.internalTransactions[0].from, + to: mockTransaction.internalTransactions[0].to, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + }, + ], + }; + expect(result).toEqual([expected, expected]); }); test('should return an array of transactions with pagination and filters', async () => { @@ -431,7 +653,30 @@ describe('TransactionUtils', () => { skip: 5, } ); - expect(result).toEqual([mockTransaction, mockTransaction]); + const expected: ITransaction = { + block: 12345n, + txHash: mockTransaction.txHash, + from: mockTransaction.from, + to: mockTransaction.to, + timestamp: 1625247600000, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + internalTransactions: [ + { + from: mockTransaction.internalTransactions[0].from, + to: mockTransaction.internalTransactions[0].to, + value: 1000000000000000000n, + method: 'transfer', + receiver: null, + escrow: null, + token: null, + }, + ], + }; + expect(result).toEqual([expected, expected]); }); }); }); diff --git a/packages/sdk/typescript/human-protocol-sdk/test/utils/constants.ts b/packages/sdk/typescript/human-protocol-sdk/test/utils/constants.ts index 8847adc6ab..1df7e6c384 100644 --- a/packages/sdk/typescript/human-protocol-sdk/test/utils/constants.ts +++ b/packages/sdk/typescript/human-protocol-sdk/test/utils/constants.ts @@ -214,3 +214,4 @@ a4M5ieM80J/k+DaMAmHMsTjwAqQGBWTeqe7w6aHgRvU= -----END PGP MESSAGE-----`; export const DEFAULT_TX_ID = 1; +export const DEFAULT_PAYOUT_ID = 'test'; diff --git a/packages/sdk/typescript/human-protocol-sdk/test/worker.test.ts b/packages/sdk/typescript/human-protocol-sdk/test/worker.test.ts index f9a2b7d04e..e306650345 100644 --- a/packages/sdk/typescript/human-protocol-sdk/test/worker.test.ts +++ b/packages/sdk/typescript/human-protocol-sdk/test/worker.test.ts @@ -9,6 +9,7 @@ import { } from '../src/graphql/queries/worker'; import { IWorker, IWorkersFilter } from '../src/interfaces'; import { WorkerUtils } from '../src/worker'; +import { WorkerData } from '../src/graphql'; vi.mock('graphql-request', () => { return { @@ -19,10 +20,10 @@ vi.mock('graphql-request', () => { describe('WorkerUtils', () => { describe('getWorker', () => { const workerAddress = '0x1234567890abcdef1234567890abcdef12345678'; - const mockWorker: IWorker = { + const mockWorker: WorkerData = { id: workerAddress, address: workerAddress, - totalHMTAmountReceived: 1000, + totalHMTAmountReceived: '1000', payoutCount: 10, }; @@ -43,7 +44,11 @@ describe('WorkerUtils', () => { address: workerAddress.toLowerCase(), } ); - expect(result).toEqual(mockWorker); + const expected: IWorker = { + ...mockWorker, + totalHMTAmountReceived: BigInt(mockWorker.totalHMTAmountReceived || 0), + }; + expect(result).toEqual(expected); }); test('should return null if worker is not found', async () => { @@ -85,17 +90,17 @@ describe('WorkerUtils', () => { }); describe('getWorkers', () => { - const mockWorkers: IWorker[] = [ + const mockWorkers: WorkerData[] = [ { id: '0x1234567890abcdef1234567890abcdef12345678', address: '0x1234567890abcdef1234567890abcdef12345678', - totalHMTAmountReceived: 1000, + totalHMTAmountReceived: '1000', payoutCount: 10, }, { id: '0xabcdefabcdefabcdefabcdefabcdefabcdef', address: '0xabcdefabcdefabcdefabcdefabcdefabcdef', - totalHMTAmountReceived: 2000, + totalHMTAmountReceived: '2000', payoutCount: 20, }, ]; @@ -126,7 +131,11 @@ describe('WorkerUtils', () => { orderDirection: 'asc', } ); - expect(result).toEqual(mockWorkers); + const expected: IWorker[] = mockWorkers.map((mockWorker) => ({ + ...mockWorker, + totalHMTAmountReceived: BigInt(mockWorker.totalHMTAmountReceived || 0), + })); + expect(result).toEqual(expected); }); test('should return an empty list if no workers are found', async () => { @@ -194,7 +203,12 @@ describe('WorkerUtils', () => { orderDirection: 'desc', } ); - expect(result).toEqual(mockWorkers); + + const expected: IWorker[] = mockWorkers.map((mockWorker) => ({ + ...mockWorker, + totalHMTAmountReceived: BigInt(mockWorker.totalHMTAmountReceived || 0), + })); + expect(result).toEqual(expected); }); }); }); diff --git a/packages/sdk/typescript/subgraph/config/localhost.json b/packages/sdk/typescript/subgraph/config/localhost.json index 5061d4f78e..0f617bae82 100644 --- a/packages/sdk/typescript/subgraph/config/localhost.json +++ b/packages/sdk/typescript/subgraph/config/localhost.json @@ -7,7 +7,7 @@ "abi": "../../../../node_modules/@human-protocol/core/abis/EscrowFactory.json" }, "HMToken": { - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", "startBlock": 1, "abi": "../../../../node_modules/@human-protocol/core/abis/HMToken.json", "totalSupply": "1000000000000000000000000000", diff --git a/packages/sdk/typescript/subgraph/package.json b/packages/sdk/typescript/subgraph/package.json index c5fbfadde4..f7a180b316 100644 --- a/packages/sdk/typescript/subgraph/package.json +++ b/packages/sdk/typescript/subgraph/package.json @@ -14,7 +14,7 @@ "generate-staking": "mustache ./config/$NETWORK.json src/mapping/StakingTemplate.ts > src/mapping/Staking.ts", "codegen": "graph codegen", "build": "graph build", - "test": "graph test", + "test": "NETWORK=polygon yarn generate && graph test", "create-local": "graph create --node http://localhost:8020/ humanprotocol/localhost", "remove-local": "graph remove --node http://localhost:8020/ humanprotocol/localhost", "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5010 humanprotocol/localhost -l 0", @@ -37,7 +37,7 @@ ], "license": "MIT", "devDependencies": { - "@graphprotocol/graph-cli": "^0.95.0", + "@graphprotocol/graph-cli": "^0.97.1", "@graphprotocol/graph-ts": "^0.38.0", "@graphql-eslint/eslint-plugin": "^3.19.1", "@human-protocol/core": "workspace:*", diff --git a/packages/sdk/typescript/subgraph/schema.graphql b/packages/sdk/typescript/subgraph/schema.graphql index cbe5b5b86a..e4d122605c 100644 --- a/packages/sdk/typescript/subgraph/schema.graphql +++ b/packages/sdk/typescript/subgraph/schema.graphql @@ -2,44 +2,37 @@ # Entities # ################################################## -type Holder @entity { +type Holder @entity(immutable: false) { id: Bytes! address: Bytes! # address balance: BigInt! } -type Worker @entity { +type Worker @entity(immutable: false) { id: Bytes! address: Bytes! totalHMTAmountReceived: BigInt! payoutCount: BigInt! } -type UniqueSender @entity { +type UniqueSender @entity(immutable: false) { id: Bytes! address: Bytes! transferCount: BigInt! timestamp: BigInt! } -type UniqueReceiver @entity { +type UniqueReceiver @entity(immutable: false) { id: Bytes! address: Bytes! receiveCount: BigInt! timestamp: BigInt! } -type Operator @entity { +type Operator @entity(immutable: false) { id: Bytes! address: Bytes! - amountStaked: BigInt! - amountLocked: BigInt! - lockedUntilTimestamp: BigInt! - amountWithdrawn: BigInt! - amountSlashed: BigInt! - reward: BigInt! amountJobsProcessed: BigInt! - role: String fee: BigInt publicKey: String @@ -54,22 +47,24 @@ type Operator @entity { name: String category: String + + staker: Staker @derivedFrom(field: "operator") } -type OperatorURL @entity { +type OperatorURL @entity(immutable: false) { id: Bytes! key: String url: String operator: Operator! } -type ReputationNetwork @entity { +type ReputationNetwork @entity(immutable: false) { id: Bytes! address: Bytes! operators: [Operator!]! @derivedFrom(field: "reputationNetworks") } -type Escrow @entity { +type Escrow @entity(immutable: false) { id: Bytes! address: Bytes! # address token: Bytes! # address @@ -86,8 +81,13 @@ type Escrow @entity { reputationOracle: Bytes # address recordingOracle: Bytes # address exchangeOracle: Bytes # address + reputationOracleFee: BigInt + recordingOracleFee: BigInt + exchangeOracleFee: BigInt intermediateResultsUrl: String # string + intermediateResultsHash: String # string finalResultsUrl: String # string + finalResultsHash: String # string jobRequesterId: String # string createdAt: BigInt! } @@ -185,6 +185,7 @@ type StoreResultsEvent @entity(immutable: true) { escrowAddress: Bytes! # address sender: Bytes! # address intermediateResultsUrl: String! # string + intermediateResultsHash: String! # string } type BulkPayoutEvent @entity(immutable: true) { @@ -192,10 +193,9 @@ type BulkPayoutEvent @entity(immutable: true) { block: BigInt! timestamp: BigInt! txHash: Bytes! - - escrowAddress: Bytes! # address - sender: Bytes! # address - bulkPayoutTxId: BigInt! + escrowAddress: Bytes! + sender: Bytes! + payoutId: String! bulkCount: BigInt! } @@ -224,6 +224,16 @@ type WithdrawEvent @entity(immutable: true) { amount: BigInt! } +type CancellationRefundEvent @entity(immutable: true) { + id: Bytes! + block: BigInt! + timestamp: BigInt! + txHash: Bytes! + escrowAddress: Bytes! + receiver: Bytes! + amount: BigInt! +} + # KVStore type KVStoreSetEvent @entity(immutable: true) { id: Bytes! @@ -236,7 +246,7 @@ type KVStoreSetEvent @entity(immutable: true) { value: String! } -type KVStore @entity { +type KVStore @entity(immutable: false) { id: Bytes! block: BigInt! timestamp: BigInt! @@ -246,6 +256,19 @@ type KVStore @entity { } # Staking +type Staker @entity(immutable: false) { + id: Bytes! + address: Bytes! # address + stakedAmount: BigInt! + lockedAmount: BigInt! + withdrawnAmount: BigInt! + slashedAmount: BigInt! + lockedUntilTimestamp: BigInt! + lastDepositTimestamp: BigInt! + + operator: Operator +} + type StakeDepositedEvent @entity(immutable: true) { id: Bytes! block: BigInt! @@ -293,7 +316,7 @@ type StakeSlashedEvent @entity(immutable: true) { # Statistics # ################################################## -type HMTokenStatistics @entity { +type HMTokenStatistics @entity(immutable: false) { id: Bytes! totalTransferEventCount: BigInt! totalBulkTransferEventCount: BigInt! @@ -303,12 +326,13 @@ type HMTokenStatistics @entity { holders: BigInt! } -type EscrowStatistics @entity { +type EscrowStatistics @entity(immutable: false) { id: Bytes! fundEventCount: BigInt! storeResultsEventCount: BigInt! bulkPayoutEventCount: BigInt! pendingStatusEventCount: BigInt! + toCancelStatusEventCount: BigInt! cancelledStatusEventCount: BigInt! partialStatusEventCount: BigInt! paidStatusEventCount: BigInt! @@ -317,13 +341,14 @@ type EscrowStatistics @entity { totalEscrowCount: BigInt! } -type EventDayData @entity { +type EventDayData @entity(immutable: false) { id: Bytes! timestamp: Int! dailyFundEventCount: BigInt! dailyStoreResultsEventCount: BigInt! dailyBulkPayoutEventCount: BigInt! dailyPendingStatusEventCount: BigInt! + dailyToCancelStatusEventCount: BigInt! dailyCancelledStatusEventCount: BigInt! dailyPartialStatusEventCount: BigInt! dailyPaidStatusEventCount: BigInt! @@ -339,12 +364,11 @@ type EventDayData @entity { dailyUniqueReceivers: BigInt! } -type OperatorStatistics @entity { - id: Bytes! - operators: BigInt! -} +################################################## +# Transactions # +################################################## -type Transaction @entity { +type Transaction @entity(immutable: false) { id: Bytes! block: BigInt! timestamp: BigInt! @@ -360,7 +384,7 @@ type Transaction @entity { @derivedFrom(field: "transaction") } -type InternalTransaction @entity { +type InternalTransaction @entity(immutable: false) { id: Bytes! from: Bytes! to: Bytes! diff --git a/packages/sdk/typescript/subgraph/src/mapping/EscrowFactory.ts b/packages/sdk/typescript/subgraph/src/mapping/EscrowFactory.ts index 5a27cf805f..20014574b0 100644 --- a/packages/sdk/typescript/subgraph/src/mapping/EscrowFactory.ts +++ b/packages/sdk/typescript/subgraph/src/mapping/EscrowFactory.ts @@ -5,7 +5,7 @@ import { import { Escrow, EscrowStatusEvent } from '../../generated/schema'; import { Escrow as EscrowTemplate } from '../../generated/templates'; import { createOrLoadEscrowStatistics } from './Escrow'; -import { createOrLoadOperator } from './Staking'; +import { createOrLoadOperator } from './KVStore'; import { createTransaction } from './utils/transaction'; import { getEventDayData } from './utils/dayUpdates'; import { toEventId } from './utils/event'; diff --git a/packages/sdk/typescript/subgraph/src/mapping/EscrowTemplate.ts b/packages/sdk/typescript/subgraph/src/mapping/EscrowTemplate.ts index d5ccea18b6..7c2b5c24e1 100644 --- a/packages/sdk/typescript/subgraph/src/mapping/EscrowTemplate.ts +++ b/packages/sdk/typescript/subgraph/src/mapping/EscrowTemplate.ts @@ -1,6 +1,7 @@ import { BulkTransfer, BulkTransferV2, + BulkTransferV3, Cancelled, Completed, Escrow as EscrowContract, @@ -9,9 +10,12 @@ import { Fund, PendingV2, Withdraw, + CancellationRequested, + CancellationRefund, } from '../../generated/templates/Escrow/Escrow'; import { BulkPayoutEvent, + CancellationRefundEvent, Escrow, EscrowStatistics, EscrowStatusEvent, @@ -23,6 +27,7 @@ import { DailyWorker, InternalTransaction, WithdrawEvent, + Operator, } from '../../generated/schema'; import { Address, @@ -36,7 +41,7 @@ import { toEventDayId, toEventId } from './utils/event'; import { getEventDayData } from './utils/dayUpdates'; import { createTransaction } from './utils/transaction'; import { toBytes } from './utils/string'; -import { createOrLoadOperator } from './Staking'; +import { createOrLoadOperator } from './KVStore'; // eslint-disable-next-line prettier/prettier export const HMT_ADDRESS = Address.fromString('{{ HMToken.address }}'); @@ -49,6 +54,7 @@ function constructStatsEntity(): EscrowStatistics { entity.storeResultsEventCount = ZERO_BI; entity.bulkPayoutEventCount = ZERO_BI; entity.pendingStatusEventCount = ZERO_BI; + entity.toCancelStatusEventCount = ZERO_BI; entity.cancelledStatusEventCount = ZERO_BI; entity.partialStatusEventCount = ZERO_BI; entity.paidStatusEventCount = ZERO_BI; @@ -148,14 +154,26 @@ function updateEscrowEntityForPending( // Update oracles if provided if (reputationOracle) { escrowEntity.reputationOracle = reputationOracle; + const reputationOracleEntity = Operator.load(reputationOracle); + if (reputationOracleEntity) { + escrowEntity.reputationOracleFee = reputationOracleEntity.fee; + } } if (recordingOracle) { escrowEntity.recordingOracle = recordingOracle; + const recordingOracleEntity = Operator.load(recordingOracle); + if (recordingOracleEntity) { + escrowEntity.recordingOracleFee = recordingOracleEntity.fee; + } } if (exchangeOracle) { escrowEntity.exchangeOracle = exchangeOracle; + const exchangeOracleEntity = Operator.load(exchangeOracle); + if (exchangeOracleEntity) { + escrowEntity.exchangeOracleFee = exchangeOracleEntity.fee; + } } escrowEntity.save(); @@ -274,7 +292,8 @@ export function handleIntermediateStorage(event: IntermediateStorage): void { eventEntity.txHash = event.transaction.hash; eventEntity.escrowAddress = event.address; eventEntity.sender = event.transaction.from; - eventEntity.intermediateResultsUrl = event.params._url; + eventEntity.intermediateResultsUrl = event.params.url; + eventEntity.intermediateResultsHash = event.params.hash; eventEntity.save(); // Updates escrow statistics @@ -295,7 +314,8 @@ export function handleIntermediateStorage(event: IntermediateStorage): void { // Update escrow entity const escrowEntity = Escrow.load(dataSource.address()); if (escrowEntity) { - escrowEntity.intermediateResultsUrl = event.params._url; + escrowEntity.intermediateResultsUrl = event.params.url; + escrowEntity.intermediateResultsHash = event.params.hash; escrowEntity.save(); createTransaction( event, @@ -311,7 +331,7 @@ export function handleIntermediateStorage(event: IntermediateStorage): void { // Create BulkPayoutEvent entity function createBulkPayoutEvent( event: ethereum.Event, - txId: BigInt, + payoutId: string, recipientsLength: number ): void { const eventEntity = new BulkPayoutEvent(toEventId(event)); @@ -320,7 +340,7 @@ function createBulkPayoutEvent( eventEntity.txHash = event.transaction.hash; eventEntity.escrowAddress = event.address; eventEntity.sender = event.transaction.from; - eventEntity.bulkPayoutTxId = txId; + eventEntity.payoutId = payoutId; eventEntity.bulkCount = BigInt.fromI32(recipientsLength); eventEntity.save(); } @@ -393,7 +413,8 @@ function createAndSaveStatusEventForBulkTransfer( function updateEscrowEntityForBulkTransfer( escrowEntity: Escrow, isPartial: boolean, - finalResultsUrl: string | null + finalResultsUrl: string | null, + finalResultsHash: string | null ): void { escrowEntity.status = isPartial ? 'Partial' : 'Paid'; @@ -401,6 +422,10 @@ function updateEscrowEntityForBulkTransfer( escrowEntity.finalResultsUrl = finalResultsUrl; } + if (finalResultsHash) { + escrowEntity.finalResultsHash = finalResultsHash; + } + escrowEntity.save(); } @@ -408,15 +433,15 @@ export function handleBulkTransfer(event: BulkTransfer): void { // Create BulkPayoutEvent entity createBulkPayoutEvent( event, - event.params._txId, - event.params._recipients.length + event.params.txId.toString(), + event.params.recipients.length ); // Update escrow statistics - updateEscrowStatisticsForBulkTransfer(event.params._isPartial); + updateEscrowStatisticsForBulkTransfer(event.params.isPartial); // Update event day data - updateEventDayDataForBulkTransfer(event, event.params._isPartial); + updateEventDayDataForBulkTransfer(event, event.params.isPartial); // Update escrow entity const escrowEntity = Escrow.load(dataSource.address()); @@ -427,8 +452,9 @@ export function handleBulkTransfer(event: BulkTransfer): void { updateEscrowEntityForBulkTransfer( escrowEntity, - event.params._isPartial, - !finalResultsUrl.reverted ? finalResultsUrl.value : null + event.params.isPartial, + !finalResultsUrl.reverted ? finalResultsUrl.value : null, + null ); // Create and save EscrowStatusEvent entity @@ -449,19 +475,23 @@ export function handleBulkTransfer(event: BulkTransfer): void { } } -export function handleBulkTransferV2(event: BulkTransferV2): void { +function handleBulkTransferCommon( + event: ethereum.Event, + payoutId: string, + recipients: Address[], + amounts: BigInt[], + isPartial: boolean, + finalResultsUrl: string, + finalResultsHash: string | null +): void { // Create BulkPayoutEvent entity - createBulkPayoutEvent( - event, - event.params._txId, - event.params._recipients.length - ); + createBulkPayoutEvent(event, payoutId, recipients.length); // Update escrow statistics - updateEscrowStatisticsForBulkTransfer(event.params._isPartial); + updateEscrowStatisticsForBulkTransfer(isPartial); // Update event day data - updateEventDayDataForBulkTransfer(event, event.params._isPartial); + updateEventDayDataForBulkTransfer(event, isPartial); // Update escrow entity const escrowEntity = Escrow.load(dataSource.address()); @@ -477,50 +507,49 @@ export function handleBulkTransferV2(event: BulkTransferV2): void { Address.fromBytes(escrowEntity.token) ); - // If the escrow is non-HMT, track the balance data - if (Address.fromBytes(escrowEntity.token) != HMT_ADDRESS) { - for (let i = 0; i < event.params._recipients.length; i++) { - const recipient = event.params._recipients[i]; - const amount = event.params._amounts[i]; - - escrowEntity.amountPaid = escrowEntity.amountPaid.plus(amount); - escrowEntity.balance = escrowEntity.balance.minus(amount); - - // Update worker, and create payout object - const worker = createOrLoadWorker(recipient); - worker.payoutCount = worker.payoutCount.plus(ONE_BI); - worker.save(); - - const payoutId = event.transaction.hash.concat(recipient); - const payment = new Payout(payoutId); - payment.escrowAddress = event.address; - payment.recipient = recipient; - payment.amount = amount; - payment.createdAt = event.block.timestamp; - payment.save(); - - // Update event day data and daily worker - const eventDayData = getEventDayData(event); - eventDayData.dailyPayoutCount = - eventDayData.dailyPayoutCount.plus(ONE_BI); - - const eventDayId = toEventDayId(event); - const dailyWorkerId = Bytes.fromI32(eventDayId.toI32()).concat( - recipient - ); - - let dailyWorker = DailyWorker.load(dailyWorkerId); - if (!dailyWorker) { - dailyWorker = new DailyWorker(dailyWorkerId); - dailyWorker.timestamp = eventDayId; - dailyWorker.address = recipient; - dailyWorker.escrowAddress = event.address; - dailyWorker.save(); - - eventDayData.dailyWorkerCount = - eventDayData.dailyWorkerCount.plus(ONE_BI); - } + for (let i = 0; i < recipients.length; i++) { + const recipient = recipients[i]; + const amount = amounts[i]; + + escrowEntity.amountPaid = escrowEntity.amountPaid.plus(amount); + escrowEntity.balance = escrowEntity.balance.minus(amount); + + // Update worker, and create payout object + const worker = createOrLoadWorker(recipient); + worker.payoutCount = worker.payoutCount.plus(ONE_BI); + worker.save(); + + const payoutId = event.transaction.hash.concat(recipient); + const payment = new Payout(payoutId); + payment.escrowAddress = event.address; + payment.recipient = recipient; + payment.amount = amount; + payment.createdAt = event.block.timestamp; + payment.save(); + + // Update event day data and daily worker + const eventDayData = getEventDayData(event); + eventDayData.dailyPayoutCount = + eventDayData.dailyPayoutCount.plus(ONE_BI); + + const eventDayId = toEventDayId(event); + const dailyWorkerId = Bytes.fromI32(eventDayId.toI32()).concat(recipient); + + let dailyWorker = DailyWorker.load(dailyWorkerId); + if (!dailyWorker) { + dailyWorker = new DailyWorker(dailyWorkerId); + dailyWorker.timestamp = eventDayId; + dailyWorker.address = recipient; + dailyWorker.escrowAddress = event.address; + dailyWorker.save(); + + eventDayData.dailyWorkerCount = + eventDayData.dailyWorkerCount.plus(ONE_BI); + } + eventDayData.save(); + // If the escrow is non-HMT, create the internal transaction + if (Address.fromBytes(escrowEntity.token) != HMT_ADDRESS) { const internalTransaction = new InternalTransaction( event.transaction.hash .concatI32(i) @@ -533,16 +562,15 @@ export function handleBulkTransferV2(event: BulkTransferV2): void { internalTransaction.method = 'transfer'; internalTransaction.escrow = Address.fromBytes(escrowEntity.address); internalTransaction.save(); - - eventDayData.save(); } } // Assign finalResultsUrl directly from the event updateEscrowEntityForBulkTransfer( escrowEntity, - event.params._isPartial, - event.params.finalResultsUrl + isPartial, + finalResultsUrl, + finalResultsHash ); // Create and save EscrowStatusEvent entity @@ -554,6 +582,30 @@ export function handleBulkTransferV2(event: BulkTransferV2): void { } } +export function handleBulkTransferV2(event: BulkTransferV2): void { + handleBulkTransferCommon( + event, + event.params.txId.toString(), + event.params.recipients, + event.params.amounts, + event.params.isPartial, + event.params.finalResultsUrl, + null + ); +} + +export function handleBulkTransferV3(event: BulkTransferV3): void { + handleBulkTransferCommon( + event, + event.params.payoutId.toHex(), + event.params.recipients, + event.params.amounts, + event.params.isPartial, + event.params.finalResultsUrl, + event.params.finalResultsHash + ); +} + export function handleCancelled(event: Cancelled): void { // Create EscrowStatusEvent entity const eventEntity = new EscrowStatusEvent(toEventId(event)); @@ -583,7 +635,7 @@ export function handleCancelled(event: Cancelled): void { const escrowEntity = Escrow.load(dataSource.address()); if (escrowEntity) { - const transaction = createTransaction( + createTransaction( event, 'cancel', event.transaction.from, @@ -591,19 +643,6 @@ export function handleCancelled(event: Cancelled): void { null, Address.fromBytes(escrowEntity.address) ); - if (Address.fromBytes(escrowEntity.token) != HMT_ADDRESS) { - // If escrow is funded with HMT, balance is already tracked by HMT transfer - const internalTransaction = new InternalTransaction(toEventId(event)); - internalTransaction.from = escrowEntity.address; - internalTransaction.to = Address.fromBytes(escrowEntity.token); - internalTransaction.receiver = escrowEntity.canceler; - internalTransaction.value = escrowEntity.balance; - internalTransaction.transaction = transaction.id; - internalTransaction.method = 'transfer'; - internalTransaction.token = Address.fromBytes(escrowEntity.token); - internalTransaction.save(); - escrowEntity.balance = ZERO_BI; - } escrowEntity.status = 'Cancelled'; escrowEntity.save(); eventEntity.launcher = escrowEntity.launcher; @@ -685,7 +724,7 @@ export function handleFund(event: Fund): void { fundEventEntity.txHash = event.transaction.hash; fundEventEntity.escrowAddress = event.address; fundEventEntity.sender = event.transaction.from; - fundEventEntity.amount = event.params._amount; + fundEventEntity.amount = event.params.amount; fundEventEntity.save(); // Update escrow statistics @@ -703,10 +742,10 @@ export function handleFund(event: Fund): void { eventDayData.save(); // Update escrow entity - escrowEntity.totalFundedAmount = event.params._amount; + escrowEntity.totalFundedAmount = event.params.amount; if (escrowEntity.token != HMT_ADDRESS) { - escrowEntity.balance = event.params._amount; + escrowEntity.balance = event.params.amount; } escrowEntity.save(); @@ -726,11 +765,11 @@ export function handleWithdraw(event: Withdraw): void { Address.fromBytes(escrowEntity.address), event.transaction.from, Address.fromBytes(escrowEntity.address), - event.params._amount, - event.params._token + event.params.amount, + event.params.token ); - // Crear entidad WithdrawEvent similar a FundEvent + // Create WithdrawEvent entity const withdrawEventEntity = new WithdrawEvent(toEventId(event)); withdrawEventEntity.block = event.block.number; withdrawEventEntity.timestamp = event.block.timestamp; @@ -738,7 +777,92 @@ export function handleWithdraw(event: Withdraw): void { withdrawEventEntity.escrowAddress = event.address; withdrawEventEntity.sender = event.transaction.from; withdrawEventEntity.receiver = escrowEntity.canceler; - withdrawEventEntity.amount = event.params._amount; - withdrawEventEntity.token = event.params._token; + withdrawEventEntity.amount = event.params.amount; + withdrawEventEntity.token = event.params.token; withdrawEventEntity.save(); } + +export function handleCancellationRequested( + event: CancellationRequested +): void { + // Create EscrowStatus entity + const statusEventEntity = new EscrowStatusEvent(toEventId(event)); + statusEventEntity.block = event.block.number; + statusEventEntity.timestamp = event.block.timestamp; + statusEventEntity.txHash = event.transaction.hash; + statusEventEntity.escrowAddress = event.address; + statusEventEntity.sender = event.transaction.from; + statusEventEntity.status = 'ToCancel'; + statusEventEntity.save(); + + // Update global statistics + const statsEntity = createOrLoadEscrowStatistics(); + statsEntity.toCancelStatusEventCount = + statsEntity.toCancelStatusEventCount.plus(ONE_BI); + statsEntity.totalEventCount = statsEntity.totalEventCount.plus(ONE_BI); + statsEntity.save(); + + // Update event day statistics + const eventDayData = getEventDayData(event); + eventDayData.dailyToCancelStatusEventCount = + eventDayData.dailyToCancelStatusEventCount.plus(ONE_BI); + eventDayData.dailyTotalEventCount = + eventDayData.dailyTotalEventCount.plus(ONE_BI); + eventDayData.save(); + + //Update escrow entity + const escrowEntity = Escrow.load(dataSource.address()); + if (escrowEntity) { + createTransaction( + event, + 'requestCancellation', + event.transaction.from, + Address.fromBytes(escrowEntity.address), + null, + Address.fromBytes(escrowEntity.address) + ); + escrowEntity.status = 'ToCancel'; + escrowEntity.save(); + statusEventEntity.launcher = escrowEntity.launcher; + statusEventEntity.save(); + } +} + +export function handleCancellationRefund(event: CancellationRefund): void { + const escrowEntity = Escrow.load(dataSource.address()); + if (!escrowEntity) return; + + const transaction = createTransaction( + event, + 'cancellationRefund', + event.transaction.from, + Address.fromBytes(escrowEntity.address), + Address.fromBytes(escrowEntity.launcher), + Address.fromBytes(escrowEntity.address), + event.params.amount, + Address.fromBytes(escrowEntity.token) + ); + if (Address.fromBytes(escrowEntity.token) != HMT_ADDRESS) { + // If escrow is funded with HMT, balance is already tracked by HMT transfer + const internalTransaction = new InternalTransaction(toEventId(event)); + internalTransaction.from = escrowEntity.address; + internalTransaction.to = Address.fromBytes(escrowEntity.token); + internalTransaction.receiver = escrowEntity.canceler; + internalTransaction.value = escrowEntity.balance; + internalTransaction.transaction = transaction.id; + internalTransaction.method = 'transfer'; + internalTransaction.token = Address.fromBytes(escrowEntity.token); + internalTransaction.save(); + } + escrowEntity.balance = escrowEntity.balance.minus(event.params.amount); + escrowEntity.save(); + + const entity = new CancellationRefundEvent(toEventId(event)); + entity.block = event.block.number; + entity.timestamp = event.block.timestamp; + entity.txHash = event.transaction.hash; + entity.escrowAddress = event.address; + entity.receiver = escrowEntity.launcher; + entity.amount = event.params.amount; + entity.save(); +} diff --git a/packages/sdk/typescript/subgraph/src/mapping/HMTokenTemplate.ts b/packages/sdk/typescript/subgraph/src/mapping/HMTokenTemplate.ts index 169ac33e6a..967db90f2b 100644 --- a/packages/sdk/typescript/subgraph/src/mapping/HMTokenTemplate.ts +++ b/packages/sdk/typescript/subgraph/src/mapping/HMTokenTemplate.ts @@ -1,4 +1,10 @@ -import { Address, BigInt, Bytes, dataSource } from '@graphprotocol/graph-ts'; +import { + Address, + BigInt, + Bytes, + dataSource, + log, +} from '@graphprotocol/graph-ts'; import { Approval, @@ -7,7 +13,6 @@ import { Transfer, } from '../../generated/HMToken/HMToken'; import { - DailyWorker, Escrow, HMTApprovalEvent, HMTBulkApprovalEvent, @@ -15,7 +20,6 @@ import { HMTTransferEvent, HMTokenStatistics, Holder, - Payout, UniqueReceiver, UniqueSender, } from '../../generated/schema'; @@ -229,53 +233,6 @@ export function handleTransfer(event: Transfer): void { ); uniqueReceiver.save(); - // Track HMT transfer from Escrow for paidAmount, balance, and payout items - const fromEscrow = Escrow.load(event.params._from); - if (fromEscrow) { - fromEscrow.amountPaid = fromEscrow.amountPaid.plus(event.params._value); - fromEscrow.balance = fromEscrow.balance.minus(event.params._value); - fromEscrow.save(); - - // Update worker, and create payout object - const worker = createOrLoadWorker(event.params._to); - worker.totalHMTAmountReceived = worker.totalHMTAmountReceived.plus( - event.params._value - ); - worker.payoutCount = worker.payoutCount.plus(ONE_BI); - worker.save(); - - const payoutId = event.transaction.hash.concat(event.params._to); - const payment = new Payout(payoutId); - payment.escrowAddress = event.params._from; - payment.recipient = event.params._to; - payment.amount = event.params._value; - payment.createdAt = event.block.timestamp; - payment.save(); - - // Update worker and payout day data - eventDayData.dailyPayoutCount = eventDayData.dailyPayoutCount.plus(ONE_BI); - eventDayData.dailyHMTPayoutAmount = eventDayData.dailyHMTPayoutAmount.plus( - event.params._value - ); - - const eventDayId = toEventDayId(event); - const dailyWorkerId = Bytes.fromI32(eventDayId.toI32()).concat( - event.params._to - ); - - let dailyWorker = DailyWorker.load(dailyWorkerId); - if (!dailyWorker) { - dailyWorker = new DailyWorker(dailyWorkerId); - dailyWorker.timestamp = eventDayId; - dailyWorker.address = event.params._to; - dailyWorker.escrowAddress = event.params._from; - dailyWorker.save(); - - eventDayData.dailyWorkerCount = - eventDayData.dailyWorkerCount.plus(ONE_BI); - } - } - eventDayData.save(); statsEntity.save(); } diff --git a/packages/sdk/typescript/subgraph/src/mapping/KVStore.ts b/packages/sdk/typescript/subgraph/src/mapping/KVStore.ts index 77e742dfcd..7cf03a445d 100644 --- a/packages/sdk/typescript/subgraph/src/mapping/KVStore.ts +++ b/packages/sdk/typescript/subgraph/src/mapping/KVStore.ts @@ -12,13 +12,32 @@ import { Operator, OperatorURL, ReputationNetwork, + Staker, } from '../../generated/schema'; -import { createOrLoadOperator } from './Staking'; import { isValidEthAddress } from './utils/ethAdrress'; import { toEventId } from './utils/event'; import { toBytes } from './utils/string'; import { createTransaction } from './utils/transaction'; import { store } from '@graphprotocol/graph-ts'; +import { ZERO_BI } from './utils/number'; + +export function createOrLoadOperator(address: Address): Operator { + let operator = Operator.load(address); + if (!operator) { + operator = new Operator(address); + operator.address = address; + operator.amountJobsProcessed = ZERO_BI; + + const staker = Staker.load(address); + if (staker) { + staker.operator = operator.id; + staker.save(); + } + operator.save(); + } + + return operator; +} export function createOrLoadOperatorURL( operator: Operator, @@ -120,9 +139,9 @@ export function handleDataSaved(event: DataSaved): void { event.params.sender ); - const operator = createOrLoadOperator(ethAddress); + const targetOperator = createOrLoadOperator(ethAddress); - let reputationNetworks = operator.reputationNetworks; + let reputationNetworks = targetOperator.reputationNetworks; if (reputationNetworks === null) { reputationNetworks = []; } @@ -139,9 +158,8 @@ export function handleDataSaved(event: DataSaved): void { reputationNetworks = filteredNetworks; } - operator.reputationNetworks = reputationNetworks; - - operator.save(); + targetOperator.reputationNetworks = reputationNetworks; + targetOperator.save(); } else if (key == 'registration_needed') { operator.registrationNeeded = event.params.value.toLowerCase() == 'true'; } else if (key == 'registration_instructions') { diff --git a/packages/sdk/typescript/subgraph/src/mapping/StakingTemplate.ts b/packages/sdk/typescript/subgraph/src/mapping/StakingTemplate.ts index 20dee90d7d..6cd2e82dc7 100644 --- a/packages/sdk/typescript/subgraph/src/mapping/StakingTemplate.ts +++ b/packages/sdk/typescript/subgraph/src/mapping/StakingTemplate.ts @@ -7,57 +7,42 @@ import { } from '../../generated/Staking/Staking'; import { Operator, - OperatorStatistics, StakeDepositedEvent, StakeLockedEvent, + Staker, StakeSlashedEvent, StakeWithdrawnEvent, } from '../../generated/schema'; import { Address, dataSource } from '@graphprotocol/graph-ts'; -import { ONE_BI, ZERO_BI } from './utils/number'; +import { ZERO_BI } from './utils/number'; import { toEventId } from './utils/event'; import { createTransaction } from './utils/transaction'; -import { toBytes } from './utils/string'; // eslint-disable-next-line prettier/prettier export const TOKEN_ADDRESS = Address.fromString('{{ HMToken.address }}'); -export const STATISTICS_ENTITY_ID = toBytes('operator-statistics-id'); -function constructStatsEntity(): OperatorStatistics { - const entity = new OperatorStatistics(STATISTICS_ENTITY_ID); - - entity.operators = ZERO_BI; - - return entity; -} - -export function createOrLoadOperatorStatistics(): OperatorStatistics { - let statsEntity = OperatorStatistics.load(STATISTICS_ENTITY_ID); - - if (!statsEntity) { - statsEntity = constructStatsEntity(); +export function createOrLoadStaker(address: Address): Staker { + let staker = Staker.load(address); + + if (!staker) { + staker = new Staker(address); + + staker.address = address; + staker.stakedAmount = ZERO_BI; + staker.lockedAmount = ZERO_BI; + staker.withdrawnAmount = ZERO_BI; + staker.slashedAmount = ZERO_BI; + staker.lockedUntilTimestamp = ZERO_BI; + staker.lastDepositTimestamp = ZERO_BI; + + const operator = Operator.load(address); + if (operator) { + staker.operator = operator.id; + } + staker.save(); } - return statsEntity; -} - -export function createOrLoadOperator(address: Address): Operator { - let operator = Operator.load(address); - - if (!operator) { - operator = new Operator(address); - - operator.address = address; - operator.amountStaked = ZERO_BI; - operator.amountLocked = ZERO_BI; - operator.lockedUntilTimestamp = ZERO_BI; - operator.amountSlashed = ZERO_BI; - operator.amountWithdrawn = ZERO_BI; - operator.reward = ZERO_BI; - operator.amountJobsProcessed = ZERO_BI; - } - - return operator; + return staker; } export function handleStakeDeposited(event: StakeDeposited): void { @@ -80,23 +65,13 @@ export function handleStakeDeposited(event: StakeDeposited): void { eventEntity.amount = event.params.tokens; eventEntity.save(); - // Update operator - const operator = createOrLoadOperator(event.params.staker); - - // Increase operator count for new operator - if ( - operator.amountStaked.equals(ZERO_BI) && - operator.amountLocked.equals(ZERO_BI) && - operator.amountWithdrawn.equals(ZERO_BI) - ) { - // Update Operator Statistics - const statsEntity = createOrLoadOperatorStatistics(); - statsEntity.operators = statsEntity.operators.plus(ONE_BI); - statsEntity.save(); - } + // Update staker + const staker = createOrLoadStaker(event.params.staker); + + staker.stakedAmount = staker.stakedAmount.plus(eventEntity.amount); + staker.lastDepositTimestamp = event.block.timestamp; - operator.amountStaked = operator.amountStaked.plus(eventEntity.amount); - operator.save(); + staker.save(); } export function handleStakeLocked(event: StakeLocked): void { @@ -120,11 +95,11 @@ export function handleStakeLocked(event: StakeLocked): void { eventEntity.lockedUntilTimestamp = event.params.until; eventEntity.save(); - // Update operator - const operator = createOrLoadOperator(event.params.staker); - operator.amountLocked = eventEntity.amount; - operator.lockedUntilTimestamp = eventEntity.lockedUntilTimestamp; - operator.save(); + // Update staker + const staker = createOrLoadStaker(event.params.staker); + staker.lockedAmount = eventEntity.amount; + staker.lockedUntilTimestamp = eventEntity.lockedUntilTimestamp; + staker.save(); } export function handleStakeWithdrawn(event: StakeWithdrawn): void { @@ -147,15 +122,15 @@ export function handleStakeWithdrawn(event: StakeWithdrawn): void { eventEntity.amount = event.params.tokens; eventEntity.save(); - // Update operator - const operator = createOrLoadOperator(event.params.staker); - operator.amountLocked = operator.amountLocked.minus(eventEntity.amount); - if (operator.amountLocked.equals(ZERO_BI)) { - operator.lockedUntilTimestamp = ZERO_BI; + // Update staker + const staker = createOrLoadStaker(event.params.staker); + staker.lockedAmount = staker.lockedAmount.minus(eventEntity.amount); + if (staker.lockedAmount.equals(ZERO_BI)) { + staker.lockedUntilTimestamp = ZERO_BI; } - operator.amountStaked = operator.amountStaked.minus(eventEntity.amount); - operator.amountWithdrawn = operator.amountWithdrawn.plus(eventEntity.amount); - operator.save(); + staker.stakedAmount = staker.stakedAmount.minus(eventEntity.amount); + staker.withdrawnAmount = staker.withdrawnAmount.plus(eventEntity.amount); + staker.save(); } export function handleStakeSlashed(event: StakeSlashed): void { @@ -180,11 +155,11 @@ export function handleStakeSlashed(event: StakeSlashed): void { eventEntity.slashRequester = event.params.slashRequester; eventEntity.save(); - // Update operator - const operator = createOrLoadOperator(event.params.staker); - operator.amountSlashed = operator.amountSlashed.plus(eventEntity.amount); - operator.amountStaked = operator.amountStaked.minus(eventEntity.amount); - operator.save(); + // Update staker + const staker = createOrLoadStaker(event.params.staker); + staker.slashedAmount = staker.slashedAmount.plus(eventEntity.amount); + staker.stakedAmount = staker.stakedAmount.minus(eventEntity.amount); + staker.save(); } export function handleFeeWithdrawn(event: FeeWithdrawn): void { diff --git a/packages/sdk/typescript/subgraph/src/mapping/legacy/Escrow.ts b/packages/sdk/typescript/subgraph/src/mapping/legacy/Escrow.ts index e1cafcc7bc..7e39c4ae6a 100644 --- a/packages/sdk/typescript/subgraph/src/mapping/legacy/Escrow.ts +++ b/packages/sdk/typescript/subgraph/src/mapping/legacy/Escrow.ts @@ -96,6 +96,7 @@ export function handleIntermediateStorage(event: IntermediateStorage): void { eventEntity.escrowAddress = event.address; eventEntity.sender = event.transaction.from; eventEntity.intermediateResultsUrl = event.params._url; + eventEntity.intermediateResultsHash = event.params._hash; eventEntity.save(); // Updates escrow statistics @@ -117,6 +118,7 @@ export function handleIntermediateStorage(event: IntermediateStorage): void { const escrowEntity = Escrow.load(dataSource.address()); if (escrowEntity) { escrowEntity.intermediateResultsUrl = event.params._url; + escrowEntity.intermediateResultsHash = event.params._hash; escrowEntity.save(); createTransaction( @@ -138,7 +140,7 @@ export function handleBulkTransfer(event: BulkTransfer): void { eventEntity.txHash = event.transaction.hash; eventEntity.escrowAddress = event.address; eventEntity.sender = event.transaction.from; - eventEntity.bulkPayoutTxId = event.params._txId; + eventEntity.payoutId = event.params._txId.toString(); eventEntity.bulkCount = event.params._bulkCount; eventEntity.save(); diff --git a/packages/sdk/typescript/subgraph/src/mapping/legacy/EscrowFactory.ts b/packages/sdk/typescript/subgraph/src/mapping/legacy/EscrowFactory.ts index 97c653158d..b5442fbd16 100644 --- a/packages/sdk/typescript/subgraph/src/mapping/legacy/EscrowFactory.ts +++ b/packages/sdk/typescript/subgraph/src/mapping/legacy/EscrowFactory.ts @@ -4,7 +4,7 @@ import { LegacyEscrow as EscrowTemplate } from '../../../generated/templates'; import { ONE_BI, ZERO_BI } from '../utils/number'; import { getEventDayData } from '../utils/dayUpdates'; import { createOrLoadEscrowStatistics } from '../Escrow'; -import { createOrLoadOperator } from '../Staking'; +import { createOrLoadOperator } from '../KVStore'; import { createTransaction } from '../utils/transaction'; import { dataSource } from '@graphprotocol/graph-ts'; diff --git a/packages/sdk/typescript/subgraph/src/mapping/utils/dayUpdates.ts b/packages/sdk/typescript/subgraph/src/mapping/utils/dayUpdates.ts index 3ab99de947..6d615b15a5 100644 --- a/packages/sdk/typescript/subgraph/src/mapping/utils/dayUpdates.ts +++ b/packages/sdk/typescript/subgraph/src/mapping/utils/dayUpdates.ts @@ -17,6 +17,7 @@ export function getEventDayData(event: ethereum.Event): EventDayData { eventDayData.dailyStoreResultsEventCount = ZERO_BI; eventDayData.dailyBulkPayoutEventCount = ZERO_BI; eventDayData.dailyPendingStatusEventCount = ZERO_BI; + eventDayData.dailyToCancelStatusEventCount = ZERO_BI; eventDayData.dailyCancelledStatusEventCount = ZERO_BI; eventDayData.dailyPartialStatusEventCount = ZERO_BI; eventDayData.dailyPaidStatusEventCount = ZERO_BI; diff --git a/packages/sdk/typescript/subgraph/src/mapping/utils/transaction.ts b/packages/sdk/typescript/subgraph/src/mapping/utils/transaction.ts index 7a1cc7571f..5bf2fbd13f 100644 --- a/packages/sdk/typescript/subgraph/src/mapping/utils/transaction.ts +++ b/packages/sdk/typescript/subgraph/src/mapping/utils/transaction.ts @@ -10,6 +10,7 @@ const mainMethods: string[] = [ 'bulkTransfer', 'storeResults', 'withdraw', + 'requestCancellation', 'cancel', 'stake', 'unstake', diff --git a/packages/sdk/typescript/subgraph/template.yaml b/packages/sdk/typescript/subgraph/template.yaml index 0c16513d2d..5fb758cd8b 100644 --- a/packages/sdk/typescript/subgraph/template.yaml +++ b/packages/sdk/typescript/subgraph/template.yaml @@ -198,6 +198,12 @@ templates: handler: handleBulkTransfer - event: BulkTransferV2(indexed uint256,address[],uint256[],bool,string) handler: handleBulkTransferV2 + - event: BulkTransferV3(indexed bytes32,address[],uint256[],bool,string,string) + handler: handleBulkTransferV3 + - event: CancellationRequested() + handler: handleCancellationRequested + - event: CancellationRefund(uint256) + handler: handleCancellationRefund - event: Cancelled() handler: handleCancelled - event: Completed() diff --git a/packages/sdk/typescript/subgraph/tests/escrow/escrow.test.ts b/packages/sdk/typescript/subgraph/tests/escrow/escrow.test.ts index 100c7cbcda..b59bd85249 100644 --- a/packages/sdk/typescript/subgraph/tests/escrow/escrow.test.ts +++ b/packages/sdk/typescript/subgraph/tests/escrow/escrow.test.ts @@ -1,45 +1,53 @@ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ import { Address, BigInt, + Bytes, DataSourceContext, ethereum, + store, } from '@graphprotocol/graph-ts'; import { afterAll, - beforeAll, - describe, - test, assert, - clearStore, - dataSourceMock, + beforeAll, beforeEach, + clearStore, createMockedFunction, + dataSourceMock, + describe, + test, } from 'matchstick-as/assembly'; - -import { Escrow } from '../../generated/schema'; +import { Escrow, Operator } from '../../generated/schema'; import { STATISTICS_ENTITY_ID, - handleIntermediateStorage, - handlePending, handleBulkTransfer, + handleBulkTransferV2, + handleBulkTransferV3, + handleCancellationRefund, + handleCancellationRequested, handleCancelled, handleCompleted, handleFund, + handleIntermediateStorage, + handlePending, handlePendingV2, - handleBulkTransferV2, handleWithdraw, } from '../../src/mapping/Escrow'; import { toEventId } from '../../src/mapping/utils/event'; import { ZERO_BI } from '../../src/mapping/utils/number'; import { - createISEvent, - createPendingEvent, createBulkTransferEvent, + createBulkTransferV2Event, + createBulkTransferV3Event, + createCancellationRefundEvent, + createCancellationRequestedEvent, createCancelledEvent, createCompletedEvent, createFundEvent, + createISEvent, + createPendingEvent, createPendingV2Event, - createBulkTransferV2Event, createWithdrawEvent, } from './fixtures'; @@ -93,7 +101,7 @@ describe('Escrow', () => { const escrow = new Escrow(escrowAddress); escrow.address = escrowAddress; - escrow.token = tokenAddress; + escrow.token = Address.zero(); escrow.factoryAddress = Address.zero(); escrow.launcher = launcherAddress; escrow.canceler = launcherAddress; @@ -105,6 +113,24 @@ describe('Escrow', () => { escrow.createdAt = ZERO_BI; escrow.save(); + + const reputationOperator = new Operator(reputationOracleAddress); + reputationOperator.address = reputationOracleAddress; + reputationOperator.amountJobsProcessed = ZERO_BI; + reputationOperator.fee = BigInt.fromI32(11); + reputationOperator.save(); + + const recordingOperator = new Operator(recordingOracleAddress); + recordingOperator.address = recordingOracleAddress; + recordingOperator.amountJobsProcessed = ZERO_BI; + recordingOperator.fee = BigInt.fromI32(22); + recordingOperator.save(); + + const exchangeOperator = new Operator(exchangeOracleAddress); + exchangeOperator.address = exchangeOracleAddress; + exchangeOperator.amountJobsProcessed = ZERO_BI; + exchangeOperator.fee = BigInt.fromI32(33); + exchangeOperator.save(); }); afterAll(() => { @@ -121,7 +147,12 @@ describe('Escrow', () => { 'exchangeOracle():(address)' ).reverts(); - const newPending1 = createPendingEvent(operatorAddress, URL, HASH); + const newPending1 = createPendingEvent( + operatorAddress, + URL, + HASH, + BigInt.fromI32(1) + ); handlePending(newPending1); @@ -209,6 +240,22 @@ describe('Escrow', () => { 'recordingOracle', recordingOracleAddressString ); + assert.fieldEquals( + 'Escrow', + escrowAddress.toHex(), + 'reputationOracleFee', + '11' + ); + assert.fieldEquals( + 'Escrow', + escrowAddress.toHex(), + 'recordingOracleFee', + '22' + ); + const escrowRaw = store.get('Escrow', escrowAddress.toHex()); + assert.assertTrue(escrowRaw != null); + assert.assertTrue(escrowRaw!.get('exchangeOracleFee') == null); + assert.fieldEquals( 'Transaction', newPending1.transaction.hash.toHex(), @@ -251,7 +298,12 @@ describe('Escrow', () => { 'exchangeOracle():(address)' ).reverts(); - const newPending1 = createPendingEvent(operatorAddress, URL, HASH); + const newPending1 = createPendingEvent( + operatorAddress, + URL, + HASH, + BigInt.fromI32(2) + ); handlePending(newPending1); @@ -333,13 +385,27 @@ describe('Escrow', () => { 'reputationOracle', reputationOracleAddressString ); - assert.fieldEquals( 'Escrow', escrowAddress.toHex(), 'recordingOracle', recordingOracleAddressString ); + assert.fieldEquals( + 'Escrow', + escrowAddress.toHex(), + 'reputationOracleFee', + '11' + ); + assert.fieldEquals( + 'Escrow', + escrowAddress.toHex(), + 'recordingOracleFee', + '22' + ); + const escrowRaw = store.get('Escrow', escrowAddress.toHex()); + assert.assertTrue(escrowRaw != null); + assert.assertTrue(escrowRaw!.get('exchangeOracleFee') == null); assert.fieldEquals( 'Transaction', @@ -398,7 +464,12 @@ describe('Escrow', () => { 'exchangeOracle():(address)' ).returns([ethereum.Value.fromAddress(exchangeOracleAddress)]); - const newPending1 = createPendingEvent(operatorAddress, URL, HASH); + const newPending1 = createPendingEvent( + operatorAddress, + URL, + HASH, + BigInt.fromI32(3) + ); handlePending(newPending1); @@ -492,6 +563,25 @@ describe('Escrow', () => { 'exchangeOracle', exchangeOracleAddressString ); + assert.fieldEquals( + 'Escrow', + escrowAddress.toHex(), + 'reputationOracleFee', + '11' + ); + assert.fieldEquals( + 'Escrow', + escrowAddress.toHex(), + 'recordingOracleFee', + '22' + ); + assert.fieldEquals( + 'Escrow', + escrowAddress.toHex(), + 'exchangeOracleFee', + '33' + ); + assert.fieldEquals( 'Transaction', newPending1.transaction.hash.toHex(), @@ -547,7 +637,7 @@ describe('Escrow', () => { }); test('Should properly handle Fund event', () => { - const fund = createFundEvent(operatorAddress, 100, BigInt.fromI32(10)); + const fund = createFundEvent(operatorAddress, 100, BigInt.fromI32(4)); handleFund(fund); @@ -606,7 +696,8 @@ describe('Escrow', () => { HASH, reputationOracleAddress, recordingOracleAddress, - exchangeOracleAddress + exchangeOracleAddress, + BigInt.fromI32(5) ); handlePendingV2(newPending1); @@ -689,13 +780,30 @@ describe('Escrow', () => { 'reputationOracle', reputationOracleAddressString ); - assert.fieldEquals( 'Escrow', escrowAddress.toHex(), 'recordingOracle', recordingOracleAddressString ); + assert.fieldEquals( + 'Escrow', + escrowAddress.toHex(), + 'reputationOracleFee', + '11' + ); + assert.fieldEquals( + 'Escrow', + escrowAddress.toHex(), + 'recordingOracleFee', + '22' + ); + assert.fieldEquals( + 'Escrow', + escrowAddress.toHex(), + 'exchangeOracleFee', + '33' + ); assert.fieldEquals( 'Transaction', @@ -753,7 +861,8 @@ describe('Escrow', () => { test('should properly handle IntermediateStorage event', () => { const URL = 'test.com'; - const newIS = createISEvent(workerAddress, URL, 'is_hash_1'); + const HASH = 'is_hash_1'; + const newIS = createISEvent(workerAddress, URL, HASH, BigInt.fromI32(6)); handleIntermediateStorage(newIS); const id = toEventId(newIS).toHex(); @@ -785,6 +894,13 @@ describe('Escrow', () => { ); assert.fieldEquals('StoreResultsEvent', id, 'sender', workerAddressString); assert.fieldEquals('StoreResultsEvent', id, 'intermediateResultsUrl', URL); + assert.fieldEquals( + 'StoreResultsEvent', + id, + 'intermediateResultsHash', + HASH + ); + assert.fieldEquals( 'Transaction', newIS.transaction.hash.toHex(), @@ -825,7 +941,7 @@ describe('Escrow', () => { [workerAddress, workerAddress], [1, 1], true, - BigInt.fromI32(10) + BigInt.fromI32(7) ); handleBulkTransfer(bulk1); @@ -858,7 +974,7 @@ describe('Escrow', () => { escrowAddressString ); assert.fieldEquals('BulkPayoutEvent', id1, 'sender', operatorAddressString); - assert.fieldEquals('BulkPayoutEvent', id1, 'bulkPayoutTxId', '1'); + assert.fieldEquals('BulkPayoutEvent', id1, 'payoutId', '1'); assert.fieldEquals('BulkPayoutEvent', id1, 'bulkCount', '2'); // EscrowStatusEvent @@ -910,7 +1026,7 @@ describe('Escrow', () => { [workerAddress, workerAddress, workerAddress, worker2Address], [1, 1, 1, 95], false, - BigInt.fromI32(11) + BigInt.fromI32(8) ); handleBulkTransfer(bulk2); @@ -942,7 +1058,7 @@ describe('Escrow', () => { escrowAddressString ); assert.fieldEquals('BulkPayoutEvent', id2, 'sender', operatorAddressString); - assert.fieldEquals('BulkPayoutEvent', id2, 'bulkPayoutTxId', '3'); + assert.fieldEquals('BulkPayoutEvent', id2, 'payoutId', '3'); assert.fieldEquals('BulkPayoutEvent', id2, 'bulkCount', '4'); // EscrowStatusEvent @@ -1030,11 +1146,11 @@ describe('Escrow', () => { const bulk1 = createBulkTransferV2Event( operatorAddress, 1, - [workerAddress, workerAddress], + [workerAddress, worker2Address], [1, 1], true, 'test.com', - BigInt.fromI32(10) + BigInt.fromI32(8) ); handleBulkTransferV2(bulk1); @@ -1067,7 +1183,7 @@ describe('Escrow', () => { escrowAddressString ); assert.fieldEquals('BulkPayoutEvent', id1, 'sender', operatorAddressString); - assert.fieldEquals('BulkPayoutEvent', id1, 'bulkPayoutTxId', '1'); + assert.fieldEquals('BulkPayoutEvent', id1, 'payoutId', '1'); assert.fieldEquals('BulkPayoutEvent', id1, 'bulkCount', '2'); // EscrowStatusEvent @@ -1112,85 +1228,173 @@ describe('Escrow', () => { // Escrow assert.fieldEquals('Escrow', escrowAddress.toHex(), 'status', 'Partial'); assert.fieldEquals('Escrow', escrowAddress.toHex(), 'balance', '98'); + assert.fieldEquals( + 'Escrow', + escrowAddress.toHex(), + 'finalResultsUrl', + 'test.com' + ); - // Bulk 2 - const bulk2 = createBulkTransferV2Event( + assert.fieldEquals( + 'Transaction', + bulk1.transaction.hash.toHex(), + 'txHash', + bulk1.transaction.hash.toHex() + ); + assert.fieldEquals( + 'Transaction', + bulk1.transaction.hash.toHex(), + 'method', + 'bulkTransfer' + ); + assert.fieldEquals( + 'Transaction', + bulk1.transaction.hash.toHex(), + 'block', + bulk1.block.number.toString() + ); + assert.fieldEquals( + 'Transaction', + bulk1.transaction.hash.toHex(), + 'from', + bulk1.transaction.from.toHex() + ); + assert.fieldEquals( + 'Transaction', + bulk1.transaction.hash.toHex(), + 'to', + escrowAddressString + ); + + assert.fieldEquals( + 'Transaction', + bulk1.transaction.hash.toHex(), + 'txHash', + bulk1.transaction.hash.toHex() + ); + assert.fieldEquals( + 'Transaction', + bulk1.transaction.hash.toHex(), + 'method', + 'bulkTransfer' + ); + assert.fieldEquals( + 'Transaction', + bulk1.transaction.hash.toHex(), + 'block', + bulk1.block.number.toString() + ); + assert.fieldEquals( + 'Transaction', + bulk1.transaction.hash.toHex(), + 'from', + bulk1.transaction.from.toHex() + ); + assert.fieldEquals( + 'Transaction', + bulk1.transaction.hash.toHex(), + 'to', + escrowAddressString + ); + + // Payout + const payoutId = bulk1.transaction.hash.concat(workerAddress).toHex(); + assert.fieldEquals( + 'Payout', + payoutId, + 'escrowAddress', + escrowAddressString + ); + assert.fieldEquals('Payout', payoutId, 'recipient', workerAddressString); + assert.fieldEquals('Payout', payoutId, 'amount', '1'); + }); + + test('Should properly handle BulkTransferV3 events', () => { + // Bulk 1 + const bulk1 = createBulkTransferV3Event( operatorAddress, - 3, - [workerAddress, workerAddress, workerAddress, worker2Address], - [1, 1, 1, 95], + Bytes.fromHexString('test-1'), + [workerAddress, worker2Address], + [49, 49], false, 'test.com', - BigInt.fromI32(11) + 'test-hash', + BigInt.fromI32(9) ); - handleBulkTransferV2(bulk2); + handleBulkTransferV3(bulk1); - const id2 = toEventId(bulk2).toHex(); + const id1 = toEventId(bulk1).toHex(); + // BulkPayoutEvent assert.fieldEquals( 'BulkPayoutEvent', - id2, + id1, 'block', - bulk2.block.number.toString() + bulk1.block.number.toString() ); assert.fieldEquals( 'BulkPayoutEvent', - id2, + id1, 'timestamp', - bulk2.block.timestamp.toString() + bulk1.block.timestamp.toString() ); assert.fieldEquals( 'BulkPayoutEvent', - id2, + id1, 'txHash', - bulk2.transaction.hash.toHex() + bulk1.transaction.hash.toHex() ); assert.fieldEquals( 'BulkPayoutEvent', - id2, + id1, 'escrowAddress', escrowAddressString ); - assert.fieldEquals('BulkPayoutEvent', id2, 'sender', operatorAddressString); - assert.fieldEquals('BulkPayoutEvent', id2, 'bulkPayoutTxId', '3'); - assert.fieldEquals('BulkPayoutEvent', id2, 'bulkCount', '4'); + assert.fieldEquals('BulkPayoutEvent', id1, 'sender', operatorAddressString); + assert.fieldEquals( + 'BulkPayoutEvent', + id1, + 'payoutId', + Bytes.fromHexString('test-1').toHex() + ); + assert.fieldEquals('BulkPayoutEvent', id1, 'bulkCount', '2'); // EscrowStatusEvent assert.fieldEquals( 'EscrowStatusEvent', - id2, + id1, 'block', - bulk2.block.number.toString() + bulk1.block.number.toString() ); assert.fieldEquals( 'EscrowStatusEvent', - id2, + id1, 'timestamp', - bulk2.block.timestamp.toString() + bulk1.block.timestamp.toString() ); assert.fieldEquals( 'EscrowStatusEvent', - id2, + id1, 'txHash', - bulk2.transaction.hash.toHex() + bulk1.transaction.hash.toHex() ); assert.fieldEquals( 'EscrowStatusEvent', - id2, + id1, 'escrowAddress', escrowAddressString ); assert.fieldEquals( 'EscrowStatusEvent', - id2, + id1, 'sender', operatorAddressString ); - assert.fieldEquals('EscrowStatusEvent', id2, 'status', 'Paid'); + assert.fieldEquals('EscrowStatusEvent', id1, 'status', 'Paid'); assert.fieldEquals( 'EscrowStatusEvent', - id2, + id1, 'launcher', launcherAddressString ); @@ -1203,6 +1407,12 @@ describe('Escrow', () => { 'finalResultsUrl', 'test.com' ); + assert.fieldEquals( + 'Escrow', + escrowAddress.toHex(), + 'finalResultsHash', + 'test-hash' + ); assert.fieldEquals('Escrow', escrowAddress.toHex(), 'balance', '0'); assert.fieldEquals( @@ -1235,33 +1445,47 @@ describe('Escrow', () => { 'to', escrowAddressString ); + + // Payout + const payoutId = bulk1.transaction.hash.concat(workerAddress).toHex(); + assert.fieldEquals( + 'Payout', + payoutId, + 'escrowAddress', + escrowAddressString + ); + assert.fieldEquals('Payout', payoutId, 'recipient', workerAddressString); + assert.fieldEquals('Payout', payoutId, 'amount', '49'); }); - test('Should properly handle Cancelled event', () => { - const newCancelled = createCancelledEvent(operatorAddress); + test('Should properly handle CancellationRequested event', () => { + const cancellationRequested = createCancellationRequestedEvent( + operatorAddress, + BigInt.fromI32(10) + ); - handleCancelled(newCancelled); + handleCancellationRequested(cancellationRequested); - const id = toEventId(newCancelled).toHex(); + const id = toEventId(cancellationRequested).toHex(); // EscrowStatusEvent assert.fieldEquals( 'EscrowStatusEvent', id, 'block', - newCancelled.block.number.toString() + cancellationRequested.block.number.toString() ); assert.fieldEquals( 'EscrowStatusEvent', id, 'timestamp', - newCancelled.block.timestamp.toString() + cancellationRequested.block.timestamp.toString() ); assert.fieldEquals( 'EscrowStatusEvent', id, 'txHash', - newCancelled.transaction.hash.toHex() + cancellationRequested.transaction.hash.toHex() ); assert.fieldEquals( 'EscrowStatusEvent', @@ -1275,76 +1499,126 @@ describe('Escrow', () => { 'sender', operatorAddressString ); - assert.fieldEquals('EscrowStatusEvent', id, 'status', 'Cancelled'); - assert.fieldEquals( - 'EscrowStatusEvent', - id, - 'launcher', - launcherAddressString - ); + assert.fieldEquals('EscrowStatusEvent', id, 'status', 'ToCancel'); // Escrow - assert.fieldEquals('Escrow', escrowAddress.toHex(), 'status', 'Cancelled'); + assert.fieldEquals('Escrow', escrowAddress.toHex(), 'status', 'ToCancel'); assert.fieldEquals( 'Transaction', - newCancelled.transaction.hash.toHex(), + cancellationRequested.transaction.hash.toHex(), 'txHash', - newCancelled.transaction.hash.toHex() + cancellationRequested.transaction.hash.toHex() ); assert.fieldEquals( 'Transaction', - newCancelled.transaction.hash.toHex(), + cancellationRequested.transaction.hash.toHex(), 'method', - 'cancel' + 'requestCancellation' ); assert.fieldEquals( 'Transaction', - newCancelled.transaction.hash.toHex(), + cancellationRequested.transaction.hash.toHex(), 'block', - newCancelled.block.number.toString() + cancellationRequested.block.number.toString() ); assert.fieldEquals( 'Transaction', - newCancelled.transaction.hash.toHex(), + cancellationRequested.transaction.hash.toHex(), 'from', - newCancelled.transaction.from.toHex() + cancellationRequested.transaction.from.toHex() ); assert.fieldEquals( 'Transaction', - newCancelled.transaction.hash.toHex(), + cancellationRequested.transaction.hash.toHex(), 'to', escrowAddressString ); }); - test('Should properly handle Completed event', () => { - const newCompleted = createCompletedEvent( + test('Should properly handle CancellationRefund event', () => { + const amount = 1000; + + const cancellationRefund = createCancellationRefundEvent( + escrowAddress, operatorAddress, - BigInt.fromI32(12) + amount, + BigInt.fromI32(11) ); + handleCancellationRefund(cancellationRefund); - handleCompleted(newCompleted); + // CancellationRefundEvent + const id = toEventId(cancellationRefund).toHex(); + assert.fieldEquals( + 'CancellationRefundEvent', + id, + 'escrowAddress', + escrowAddress.toHex() + ); + assert.fieldEquals( + 'CancellationRefundEvent', + id, + 'receiver', + launcherAddress.toHex() + ); + assert.fieldEquals( + 'CancellationRefundEvent', + id, + 'amount', + amount.toString() + ); - const id = toEventId(newCompleted).toHex(); + // Transaction + assert.fieldEquals( + 'Transaction', + cancellationRefund.transaction.hash.toHex(), + 'method', + 'cancellationRefund' + ); + assert.fieldEquals( + 'Transaction', + cancellationRefund.transaction.hash.toHex(), + 'to', + escrowAddress.toHex() + ); + assert.fieldEquals( + 'Transaction', + cancellationRefund.transaction.hash.toHex(), + 'receiver', + launcherAddress.toHex() + ); + assert.fieldEquals( + 'Transaction', + cancellationRefund.transaction.hash.toHex(), + 'value', + amount.toString() + ); + }); + + test('Should properly handle Cancelled event', () => { + const newCancelled = createCancelledEvent(operatorAddress); + + handleCancelled(newCancelled); + + const id = toEventId(newCancelled).toHex(); // EscrowStatusEvent assert.fieldEquals( 'EscrowStatusEvent', id, 'block', - newCompleted.block.number.toString() + newCancelled.block.number.toString() ); assert.fieldEquals( 'EscrowStatusEvent', id, 'timestamp', - newCompleted.block.timestamp.toString() + newCancelled.block.timestamp.toString() ); assert.fieldEquals( 'EscrowStatusEvent', id, 'txHash', - newCompleted.transaction.hash.toHex() + newCancelled.transaction.hash.toHex() ); assert.fieldEquals( 'EscrowStatusEvent', @@ -1358,7 +1632,7 @@ describe('Escrow', () => { 'sender', operatorAddressString ); - assert.fieldEquals('EscrowStatusEvent', id, 'status', 'Complete'); + assert.fieldEquals('EscrowStatusEvent', id, 'status', 'Cancelled'); assert.fieldEquals( 'EscrowStatusEvent', id, @@ -1367,56 +1641,13 @@ describe('Escrow', () => { ); // Escrow - assert.fieldEquals('Escrow', escrowAddress.toHex(), 'status', 'Complete'); - assert.fieldEquals( - 'Transaction', - newCompleted.transaction.hash.toHex(), - 'txHash', - newCompleted.transaction.hash.toHex() - ); - assert.fieldEquals( - 'Transaction', - newCompleted.transaction.hash.toHex(), - 'method', - 'complete' - ); - assert.fieldEquals( - 'Transaction', - newCompleted.transaction.hash.toHex(), - 'block', - newCompleted.block.number.toString() - ); - assert.fieldEquals( - 'Transaction', - newCompleted.transaction.hash.toHex(), - 'from', - newCompleted.transaction.from.toHex() - ); - assert.fieldEquals( - 'Transaction', - newCompleted.transaction.hash.toHex(), - 'to', - escrowAddressString - ); - - // InternalTransaction - const internalTxId = toEventId(newCompleted).toHex(); - assert.notInStore('InternalTransaction', internalTxId); - - // Escrow balance should be 0 after completion - assert.fieldEquals('Escrow', escrowAddress.toHex(), 'balance', '0'); + assert.fieldEquals('Escrow', escrowAddress.toHex(), 'status', 'Cancelled'); }); - test('Should properly handle Completed event and create InternalTransaction if escrow has balance', () => { - const escrow = Escrow.load(escrowAddress); - if (escrow) { - escrow.balance = BigInt.fromI32(1234); - escrow.save(); - } - + test('Should properly handle Completed event', () => { const newCompleted = createCompletedEvent( operatorAddress, - BigInt.fromI32(13) + BigInt.fromI32(12) ); handleCompleted(newCompleted); @@ -1494,44 +1725,6 @@ describe('Escrow', () => { 'to', escrowAddressString ); - - // InternalTransaction - const internalTxId = toEventId(newCompleted).toHex(); - - assert.fieldEquals( - 'InternalTransaction', - internalTxId, - 'from', - escrowAddressString - ); - assert.fieldEquals( - 'InternalTransaction', - internalTxId, - 'to', - launcherAddressString - ); - assert.fieldEquals('InternalTransaction', internalTxId, 'value', '1234'); - assert.fieldEquals( - 'InternalTransaction', - internalTxId, - 'method', - 'transfer' - ); - assert.fieldEquals( - 'InternalTransaction', - internalTxId, - 'escrow', - escrowAddressString - ); - assert.fieldEquals( - 'InternalTransaction', - internalTxId, - 'transaction', - newCompleted.transaction.hash.toHex() - ); - - // Escrow balance should be 0 after completion - assert.fieldEquals('Escrow', escrowAddress.toHex(), 'balance', '0'); }); test('Should properly handle Withdraw event', () => { @@ -1539,7 +1732,7 @@ describe('Escrow', () => { operatorAddress, tokenAddress, 100, - BigInt.fromI32(10) + BigInt.fromI32(13) ); handleWithdraw(withdraw); @@ -1620,7 +1813,8 @@ describe('Escrow', () => { 'is_hash_1', reputationOracleAddress, recordingOracleAddress, - exchangeOracleAddress + exchangeOracleAddress, + BigInt.fromI32(1) ); const newPending2 = createPendingV2Event( operatorAddress, @@ -1628,7 +1822,8 @@ describe('Escrow', () => { 'is_hash_1', reputationOracleAddress, recordingOracleAddress, - exchangeOracleAddress + exchangeOracleAddress, + BigInt.fromI32(2) ); handlePendingV2(newPending1); @@ -1645,6 +1840,7 @@ describe('Escrow', () => { 'fundEventCount', 'storeResultsEventCount', 'bulkPayoutEventCount', + 'toCancelStatusEventCount', 'cancelledStatusEventCount', 'partialStatusEventCount', 'paidStatusEventCount', @@ -1667,8 +1863,18 @@ describe('Escrow', () => { }); test('Should properly calculate StoreResults event in statistics', () => { - const newIS = createISEvent(workerAddress, 'test.com', 'is_hash_1'); - const newIS1 = createISEvent(workerAddress, 'test.com', 'is_hash_1'); + const newIS = createISEvent( + workerAddress, + 'test.com', + 'is_hash_1', + BigInt.fromI32(1) + ); + const newIS1 = createISEvent( + workerAddress, + 'test.com', + 'is_hash_1', + BigInt.fromI32(2) + ); handleIntermediateStorage(newIS); handleIntermediateStorage(newIS1); @@ -1684,6 +1890,7 @@ describe('Escrow', () => { 'fundEventCount', 'bulkPayoutEventCount', 'pendingStatusEventCount', + 'toCancelStatusEventCount', 'cancelledStatusEventCount', 'partialStatusEventCount', 'paidStatusEventCount', @@ -1720,7 +1927,7 @@ describe('Escrow', () => { [1, 1, 1, 1, 1], true, 'test.com', - BigInt.fromI32(11) + BigInt.fromI32(1) ) ); handleBulkTransferV2( @@ -1731,7 +1938,7 @@ describe('Escrow', () => { [1, 1, 1, 1], false, 'test.com', - BigInt.fromI32(11) + BigInt.fromI32(2) ) ); @@ -1758,6 +1965,7 @@ describe('Escrow', () => { 'fundEventCount', 'storeResultsEventCount', 'pendingStatusEventCount', + 'toCancelStatusEventCount', 'cancelledStatusEventCount', 'completedStatusEventCount', ].forEach((field) => { @@ -1795,6 +2003,7 @@ describe('Escrow', () => { 'fundEventCount', 'storeResultsEventCount', 'bulkPayoutEventCount', + 'toCancelStatusEventCount', 'pendingStatusEventCount', 'partialStatusEventCount', 'paidStatusEventCount', @@ -1819,11 +2028,11 @@ describe('Escrow', () => { test('Should properly calculate completed event in statstics', () => { const newCompleted1 = createCompletedEvent( operatorAddress, - BigInt.fromI32(12) + BigInt.fromI32(1) ); const newCompleted2 = createCompletedEvent( operatorAddress, - BigInt.fromI32(13) + BigInt.fromI32(2) ); handleCompleted(newCompleted1); @@ -1841,6 +2050,7 @@ describe('Escrow', () => { 'storeResultsEventCount', 'bulkPayoutEventCount', 'pendingStatusEventCount', + 'toCancelStatusEventCount', 'cancelledStatusEventCount', 'partialStatusEventCount', 'paidStatusEventCount', @@ -1899,7 +2109,7 @@ describe('Escrow', () => { escrow.save(); - const newFund1 = createFundEvent(operatorAddress, 1, BigInt.fromI32(10)); + const newFund1 = createFundEvent(operatorAddress, 1, BigInt.fromI32(1)); handleFund(newFund1); @@ -1914,6 +2124,7 @@ describe('Escrow', () => { 'storeResultsEventCount', 'bulkPayoutEventCount', 'pendingStatusEventCount', + 'toCancelStatusEventCount', 'cancelledStatusEventCount', 'partialStatusEventCount', 'paidStatusEventCount', @@ -1934,5 +2145,51 @@ describe('Escrow', () => { '1' ); }); + + test('Should properly calculate toCancel event in statistics', () => { + const newCancellationRequested1 = createCancellationRequestedEvent( + operatorAddress, + BigInt.fromI32(1) + ); + const newCancellationRequested2 = createCancellationRequestedEvent( + operatorAddress, + BigInt.fromI32(2) + ); + + handleCancellationRequested(newCancellationRequested1); + handleCancellationRequested(newCancellationRequested2); + + assert.fieldEquals( + 'EscrowStatistics', + STATISTICS_ENTITY_ID.toHex(), + 'toCancelStatusEventCount', + '2' + ); + + [ + 'fundEventCount', + 'storeResultsEventCount', + 'bulkPayoutEventCount', + 'pendingStatusEventCount', + 'partialStatusEventCount', + 'paidStatusEventCount', + 'cancelledStatusEventCount', + 'completedStatusEventCount', + ].forEach((field) => { + assert.fieldEquals( + 'EscrowStatistics', + STATISTICS_ENTITY_ID.toHex(), + field, + '0' + ); + }); + + assert.fieldEquals( + 'EscrowStatistics', + STATISTICS_ENTITY_ID.toHex(), + 'totalEventCount', + '2' + ); + }); }); }); diff --git a/packages/sdk/typescript/subgraph/tests/escrow/fixtures.ts b/packages/sdk/typescript/subgraph/tests/escrow/fixtures.ts index dbc765a4a7..77d0b2020f 100644 --- a/packages/sdk/typescript/subgraph/tests/escrow/fixtures.ts +++ b/packages/sdk/typescript/subgraph/tests/escrow/fixtures.ts @@ -1,15 +1,17 @@ +import { Address, BigInt, Bytes, ethereum } from '@graphprotocol/graph-ts'; import { newMockEvent } from 'matchstick-as/assembly/index'; -import { ethereum, BigInt, Address } from '@graphprotocol/graph-ts'; - import { - IntermediateStorage, - Pending, BulkTransfer, + BulkTransferV2, + BulkTransferV3, + CancellationRefund, + CancellationRequested, Cancelled, Completed, Fund, + IntermediateStorage, + Pending, PendingV2, - BulkTransferV2, Withdraw, } from '../../generated/templates/Escrow/Escrow'; import { generateUniqueHash } from '../../tests/utils'; @@ -17,12 +19,13 @@ import { generateUniqueHash } from '../../tests/utils'; export function createPendingEvent( sender: Address, manifest: string, - hash: string + hash: string, + timestamp: BigInt ): Pending { const newPendingEvent = changetype(newMockEvent()); newPendingEvent.transaction.hash = generateUniqueHash( sender.toString(), - newPendingEvent.transaction.nonce, + timestamp, newPendingEvent.transaction.nonce ); @@ -51,12 +54,13 @@ export function createPendingV2Event( hash: string, reputationOracleAddress: Address, recordingOracleAddress: Address, - exchangeOracleAddress: Address + exchangeOracleAddress: Address, + timestamp: BigInt ): PendingV2 { const newPendingEvent = changetype(newMockEvent()); newPendingEvent.transaction.hash = generateUniqueHash( sender.toString(), - newPendingEvent.transaction.nonce, + timestamp, newPendingEvent.transaction.nonce ); @@ -97,13 +101,14 @@ export function createPendingV2Event( export function createISEvent( sender: Address, url: string, - hash: string + hash: string, + timestamp: BigInt ): IntermediateStorage { const newIntermediateStorageEvent = changetype(newMockEvent()); newIntermediateStorageEvent.transaction.hash = generateUniqueHash( sender.toString(), - newIntermediateStorageEvent.transaction.nonce, + timestamp, newIntermediateStorageEvent.transaction.nonce ); @@ -112,11 +117,11 @@ export function createISEvent( newIntermediateStorageEvent.parameters = []; const urlParam = new ethereum.EventParam( - '_url', + 'url', ethereum.Value.fromString(url) ); const hashParam = new ethereum.EventParam( - '_hash', + 'hash', ethereum.Value.fromString(hash) ); @@ -147,19 +152,19 @@ export function createBulkTransferEvent( newBTEvent.parameters = []; const txIdParam = new ethereum.EventParam( - '_txId', + 'txId', ethereum.Value.fromI32(txId) ); const recipientsParam = new ethereum.EventParam( - '_recipients', + 'recipients', ethereum.Value.fromAddressArray(recipients) ); const amountsParam = new ethereum.EventParam( - '_amounts', + 'amounts', ethereum.Value.fromI32Array(amounts) ); const isPartialParam = new ethereum.EventParam( - '_isPartial', + 'isPartial', ethereum.Value.fromBoolean(isPartial) ); @@ -193,23 +198,23 @@ export function createBulkTransferV2Event( newBTEvent.parameters = []; const txIdParam = new ethereum.EventParam( - '_txId', + 'txId', ethereum.Value.fromI32(txId) ); const recipientsParam = new ethereum.EventParam( - '_recipients', + 'recipients', ethereum.Value.fromAddressArray(recipients) ); const amountsParam = new ethereum.EventParam( - '_amounts', + 'amounts', ethereum.Value.fromI32Array(amounts) ); const isPartialParam = new ethereum.EventParam( - '_isPartial', + 'isPartial', ethereum.Value.fromBoolean(isPartial) ); const finalResultsUrlParam = new ethereum.EventParam( - '_finalResultsUrl', + 'finalResultsUrl', ethereum.Value.fromString(finalResultsUrl) ); @@ -222,6 +227,63 @@ export function createBulkTransferV2Event( return newBTEvent; } +export function createBulkTransferV3Event( + sender: Address, + payoutId: Bytes, + recipients: Address[], + amounts: i32[], + isPartial: boolean, + finalResultsUrl: string, + finalResultsHash: string, + timestamp: BigInt +): BulkTransferV3 { + const newBTEvent = changetype(newMockEvent()); + newBTEvent.transaction.hash = generateUniqueHash( + sender.toString(), + timestamp, + newBTEvent.transaction.nonce + ); + + newBTEvent.block.timestamp = timestamp; + newBTEvent.transaction.from = sender; + + newBTEvent.parameters = []; + + const payoutIdParam = new ethereum.EventParam( + 'payoutId', + ethereum.Value.fromBytes(payoutId) + ); + const recipientsParam = new ethereum.EventParam( + 'recipients', + ethereum.Value.fromAddressArray(recipients) + ); + const amountsParam = new ethereum.EventParam( + 'amounts', + ethereum.Value.fromI32Array(amounts) + ); + const isPartialParam = new ethereum.EventParam( + 'isPartial', + ethereum.Value.fromBoolean(isPartial) + ); + const finalResultsUrlParam = new ethereum.EventParam( + 'finalResultsUrl', + ethereum.Value.fromString(finalResultsUrl) + ); + const finalResultsHashParam = new ethereum.EventParam( + 'finalResultsHash', + ethereum.Value.fromString(finalResultsHash) + ); + + newBTEvent.parameters.push(payoutIdParam); + newBTEvent.parameters.push(recipientsParam); + newBTEvent.parameters.push(amountsParam); + newBTEvent.parameters.push(isPartialParam); + newBTEvent.parameters.push(finalResultsUrlParam); + newBTEvent.parameters.push(finalResultsHashParam); + + return newBTEvent; +} + export function createCancelledEvent(sender: Address): Cancelled { const newCancelledEvent = changetype(newMockEvent()); newCancelledEvent.transaction.hash = generateUniqueHash( @@ -274,7 +336,7 @@ export function createFundEvent( newFundEvent.parameters = []; const amountParam = new ethereum.EventParam( - '_amount', + 'amount', ethereum.Value.fromI32(amount) ); @@ -303,12 +365,12 @@ export function createWithdrawEvent( newWithdrawEvent.parameters = []; const tokenParam = new ethereum.EventParam( - '_token', + 'token', ethereum.Value.fromAddress(token) ); const amountParam = new ethereum.EventParam( - '_amount', + 'amount', ethereum.Value.fromI32(amount) ); @@ -317,3 +379,44 @@ export function createWithdrawEvent( return newWithdrawEvent; } + +export function createCancellationRequestedEvent( + sender: Address, + timestamp: BigInt +): CancellationRequested { + const event = changetype(newMockEvent()); + event.transaction.hash = generateUniqueHash( + sender.toString(), + timestamp, + event.transaction.nonce + ); + event.transaction.from = sender; + event.parameters = []; + return event; +} + +export function createCancellationRefundEvent( + escrowAddress: Address, + sender: Address, + amount: i32, + timestamp: BigInt +): CancellationRefund { + const event = changetype(newMockEvent()); + event.address = escrowAddress; + event.transaction.from = sender; + event.transaction.hash = generateUniqueHash( + sender.toString(), + timestamp, + event.transaction.nonce + ); + + event.parameters = []; + + const amountParam = new ethereum.EventParam( + 'amount', + ethereum.Value.fromI32(amount) + ); + + event.parameters.push(amountParam); + return event; +} diff --git a/packages/sdk/typescript/subgraph/tests/hmt/hmt.test.ts b/packages/sdk/typescript/subgraph/tests/hmt/hmt.test.ts index 091d00e99d..a6b94966c8 100644 --- a/packages/sdk/typescript/subgraph/tests/hmt/hmt.test.ts +++ b/packages/sdk/typescript/subgraph/tests/hmt/hmt.test.ts @@ -257,123 +257,6 @@ describe('HMToken', () => { '1' ); }); - - test('Should properly handle Transfer event from Escrow', () => { - const transfer = createTransferEvent( - escrowAddressString, - operatorAddressString, - 1, - BigInt.fromI32(10) - ); - - handleTransfer(transfer); - - const id = toEventId(transfer).toHex(); - - // HMTTransferEvent - assert.fieldEquals( - 'HMTTransferEvent', - id, - 'block', - transfer.block.number.toString() - ); - assert.fieldEquals( - 'HMTTransferEvent', - id, - 'timestamp', - transfer.block.timestamp.toString() - ); - assert.fieldEquals( - 'HMTTransferEvent', - id, - 'txHash', - transfer.transaction.hash.toHex() - ); - assert.fieldEquals('HMTTransferEvent', id, 'from', escrowAddressString); - assert.fieldEquals('HMTTransferEvent', id, 'to', operatorAddressString); - assert.fieldEquals('HMTTransferEvent', id, 'amount', '1'); - - // Escrow - assert.fieldEquals('Escrow', escrowAddressString, 'balance', '100'); - assert.fieldEquals('Escrow', escrowAddressString, 'amountPaid', '1'); - - // Worker - assert.fieldEquals( - 'Worker', - operatorAddressString, - 'totalHMTAmountReceived', - '1' - ); - assert.fieldEquals('Worker', operatorAddressString, 'payoutCount', '1'); - - // Payout - const payoutId = transfer.transaction.hash - .concat(operatorAddress) - .toHex(); - assert.fieldEquals( - 'Payout', - payoutId, - 'escrowAddress', - escrowAddressString - ); - assert.fieldEquals( - 'Payout', - payoutId, - 'recipient', - operatorAddressString - ); - assert.fieldEquals('Payout', payoutId, 'amount', '1'); - - // Transaction - assert.fieldEquals( - 'Transaction', - transfer.transaction.hash.toHex(), - 'txHash', - transfer.transaction.hash.toHex() - ); - assert.fieldEquals( - 'Transaction', - transfer.transaction.hash.toHex(), - 'method', - 'transfer' - ); - assert.fieldEquals( - 'Transaction', - transfer.transaction.hash.toHex(), - 'block', - transfer.block.number.toString() - ); - assert.fieldEquals( - 'Transaction', - transfer.transaction.hash.toHex(), - 'from', - escrowAddressString - ); - assert.fieldEquals( - 'Transaction', - transfer.transaction.hash.toHex(), - 'to', - tokenAddressString - ); - assert.fieldEquals( - 'Transaction', - transfer.transaction.hash.toHex(), - 'receiver', - operatorAddressString - ); - assert.fieldEquals( - 'Transaction', - transfer.transaction.hash.toHex(), - 'token', - tokenAddressString - ); - assert.fieldEquals( - 'Transaction', - transfer.transaction.hash.toHex(), - 'value', - '1' - ); - }); }); test('Should properly handle BulkTransfer event', () => { diff --git a/packages/sdk/typescript/subgraph/tests/kvstore/kvstore.test.ts b/packages/sdk/typescript/subgraph/tests/kvstore/kvstore.test.ts index 6ea5886744..5a2df8a98d 100644 --- a/packages/sdk/typescript/subgraph/tests/kvstore/kvstore.test.ts +++ b/packages/sdk/typescript/subgraph/tests/kvstore/kvstore.test.ts @@ -1,4 +1,4 @@ -import { BigInt, DataSourceContext } from '@graphprotocol/graph-ts'; +import { Address, BigInt, DataSourceContext } from '@graphprotocol/graph-ts'; import { afterEach, assert, @@ -11,6 +11,7 @@ import { import { Operator } from '../../generated/schema'; import { handleDataSaved } from '../../src/mapping/KVStore'; +import { createOrLoadStaker } from '../../src/mapping/Staking'; import { toEventId } from '../../src/mapping/utils/event'; import { toBytes } from '../../src/mapping/utils/string'; import { createDataSavedEvent } from './fixtures'; @@ -793,4 +794,25 @@ describe('KVStore', () => { 'market_making' ); }); + + test('Should assign operator to Staker if Staker exists before Operator (KVStore)', () => { + const stakerAddress = '0xD979105297fB0eee83F7433fC09279cb5B94fFC7'; + + const staker = createOrLoadStaker(Address.fromString(stakerAddress)); + + const operatorEvent = createDataSavedEvent( + stakerAddress, + 'role', + 'Operator', + BigInt.fromI32(11) + ); + handleDataSaved(operatorEvent); + + assert.fieldEquals( + 'Staker', + staker.address.toHex(), + 'operator', + staker.address.toHex() + ); + }); }); diff --git a/packages/sdk/typescript/subgraph/tests/legacy/escrow/escrow.test.ts b/packages/sdk/typescript/subgraph/tests/legacy/escrow/escrow.test.ts index a7e7b37a2e..e1f50864fa 100644 --- a/packages/sdk/typescript/subgraph/tests/legacy/escrow/escrow.test.ts +++ b/packages/sdk/typescript/subgraph/tests/legacy/escrow/escrow.test.ts @@ -298,7 +298,7 @@ describe('Escrow', () => { escrowAddressString ); assert.fieldEquals('BulkPayoutEvent', id1, 'sender', operatorAddressString); - assert.fieldEquals('BulkPayoutEvent', id1, 'bulkPayoutTxId', '1'); + assert.fieldEquals('BulkPayoutEvent', id1, 'payoutId', '1'); assert.fieldEquals('BulkPayoutEvent', id1, 'bulkCount', '2'); // Escrow @@ -383,7 +383,7 @@ describe('Escrow', () => { escrowAddressString ); assert.fieldEquals('BulkPayoutEvent', id1, 'sender', operatorAddressString); - assert.fieldEquals('BulkPayoutEvent', id1, 'bulkPayoutTxId', '1'); + assert.fieldEquals('BulkPayoutEvent', id1, 'payoutId', '1'); assert.fieldEquals('BulkPayoutEvent', id1, 'bulkCount', '2'); // Escrow diff --git a/packages/sdk/typescript/subgraph/tests/staking/staking.test.ts b/packages/sdk/typescript/subgraph/tests/staking/staking.test.ts index f01f645978..a935e329b6 100644 --- a/packages/sdk/typescript/subgraph/tests/staking/staking.test.ts +++ b/packages/sdk/typescript/subgraph/tests/staking/staking.test.ts @@ -16,7 +16,6 @@ import { handleStakeSlashed, handleStakeWithdrawn, handleFeeWithdrawn, - STATISTICS_ENTITY_ID, TOKEN_ADDRESS, } from '../../src/mapping/Staking'; import { toEventId } from '../../src/mapping/utils/event'; @@ -28,6 +27,7 @@ import { createStakeSlashedEvent, createStakeWithdrawnEvent, } from './fixtures'; +import { createOrLoadOperator } from '../../src/mapping/KVStore'; const stakingAddressString = '0xa16081f360e3847006db660bae1c6d1b2e17ffaa'; const escrow1AddressString = '0xD979105297fB0eee83F7433fC09279cb5B94fFC7'; @@ -147,25 +147,17 @@ describe('Staking', () => { ); assert.fieldEquals('StakeDepositedEvent', id2, 'amount', '200'); - // Operator statistics - assert.fieldEquals( - 'OperatorStatistics', - STATISTICS_ENTITY_ID.toHex(), - 'operators', - '2' - ); - // Operator assert.fieldEquals( - 'Operator', + 'Staker', data1.params.staker.toHex(), - 'amountStaked', + 'stakedAmount', '100' ); assert.fieldEquals( - 'Operator', + 'Staker', data2.params.staker.toHex(), - 'amountStaked', + 'stakedAmount', '200' ); @@ -206,6 +198,14 @@ describe('Staking', () => { 'token', TOKEN_ADDRESS.toHexString() ); + + assert.fieldEquals( + 'Staker', + data1.params.staker.toHex(), + 'address', + data1.params.staker.toHex() + ); + assert.notInStore('Operator', data1.params.staker.toHex()); }); test('Should properly index StakeLocked events', () => { @@ -284,48 +284,40 @@ describe('Staking', () => { assert.fieldEquals('StakeLockedEvent', id2, 'amount', '100'); assert.fieldEquals('StakeLockedEvent', id2, 'lockedUntilTimestamp', '31'); - // Operator statistics - assert.fieldEquals( - 'OperatorStatistics', - STATISTICS_ENTITY_ID.toHex(), - 'operators', - '2' - ); - // Operator assert.fieldEquals( - 'Operator', + 'Staker', data1.params.staker.toHex(), - 'amountStaked', + 'stakedAmount', '100' ); assert.fieldEquals( - 'Operator', + 'Staker', data1.params.staker.toHex(), - 'amountLocked', + 'lockedAmount', '50' ); assert.fieldEquals( - 'Operator', + 'Staker', data1.params.staker.toHex(), 'lockedUntilTimestamp', '30' ); assert.fieldEquals( - 'Operator', + 'Staker', data2.params.staker.toHex(), - 'amountStaked', + 'stakedAmount', '200' ); assert.fieldEquals( - 'Operator', + 'Staker', data2.params.staker.toHex(), - 'amountLocked', + 'lockedAmount', '100' ); assert.fieldEquals( - 'Operator', + 'Staker', data2.params.staker.toHex(), 'lockedUntilTimestamp', '31' @@ -442,62 +434,54 @@ describe('Staking', () => { ); assert.fieldEquals('StakeWithdrawnEvent', id2, 'amount', '100'); - // Operator statistics - assert.fieldEquals( - 'OperatorStatistics', - STATISTICS_ENTITY_ID.toHex(), - 'operators', - '2' - ); - // Operator assert.fieldEquals( - 'Operator', + 'Staker', data1.params.staker.toHex(), - 'amountStaked', + 'stakedAmount', '70' ); assert.fieldEquals( - 'Operator', + 'Staker', data1.params.staker.toHex(), - 'amountLocked', + 'lockedAmount', '20' ); assert.fieldEquals( - 'Operator', + 'Staker', data1.params.staker.toHex(), 'lockedUntilTimestamp', '30' ); assert.fieldEquals( - 'Operator', + 'Staker', data1.params.staker.toHex(), - 'amountWithdrawn', + 'withdrawnAmount', '30' ); assert.fieldEquals( - 'Operator', + 'Staker', data2.params.staker.toHex(), - 'amountStaked', + 'stakedAmount', '100' ); assert.fieldEquals( - 'Operator', + 'Staker', data2.params.staker.toHex(), - 'amountLocked', + 'lockedAmount', '0' ); assert.fieldEquals( - 'Operator', + 'Staker', data2.params.staker.toHex(), 'lockedUntilTimestamp', '0' ); assert.fieldEquals( - 'Operator', + 'Staker', data2.params.staker.toHex(), - 'amountWithdrawn', + 'withdrawnAmount', '100' ); @@ -640,74 +624,66 @@ describe('Staking', () => { data2.params.slashRequester.toHex() ); - // Operator statistics - assert.fieldEquals( - 'OperatorStatistics', - STATISTICS_ENTITY_ID.toHex(), - 'operators', - '2' - ); - // Operator assert.fieldEquals( - 'Operator', + 'Staker', data1.params.staker.toHex(), - 'amountStaked', + 'stakedAmount', '60' ); assert.fieldEquals( - 'Operator', + 'Staker', data1.params.staker.toHex(), - 'amountLocked', + 'lockedAmount', '20' ); assert.fieldEquals( - 'Operator', + 'Staker', data1.params.staker.toHex(), 'lockedUntilTimestamp', '30' ); assert.fieldEquals( - 'Operator', + 'Staker', data1.params.staker.toHex(), - 'amountWithdrawn', + 'withdrawnAmount', '30' ); assert.fieldEquals( - 'Operator', + 'Staker', data1.params.staker.toHex(), - 'amountSlashed', + 'slashedAmount', '10' ); assert.fieldEquals( - 'Operator', + 'Staker', data2.params.staker.toHex(), - 'amountStaked', + 'stakedAmount', '90' ); assert.fieldEquals( - 'Operator', + 'Staker', data2.params.staker.toHex(), - 'amountLocked', + 'lockedAmount', '0' ); assert.fieldEquals( - 'Operator', + 'Staker', data2.params.staker.toHex(), 'lockedUntilTimestamp', '0' ); assert.fieldEquals( - 'Operator', + 'Staker', data2.params.staker.toHex(), - 'amountWithdrawn', + 'withdrawnAmount', '100' ); assert.fieldEquals( - 'Operator', + 'Staker', data2.params.staker.toHex(), - 'amountSlashed', + 'slashedAmount', '10' ); @@ -799,4 +775,23 @@ describe('Staking', () => { TOKEN_ADDRESS.toHexString() ); }); + + test('Should associate Staker with Operator if Operator exists before staking', () => { + const stakerAddress = '0xD979105297fB0eee83F7433fC09279cb5B94fFC8'; + const data = createStakeDepositedEvent( + stakerAddress, + 100, + BigInt.fromI32(12) + ); + createOrLoadOperator(Address.fromString(stakerAddress)); + + handleStakeDeposited(data); + + assert.fieldEquals( + 'Staker', + data.params.staker.toHex(), + 'operator', + data.params.staker.toHex() + ); + }); }); diff --git a/yarn.lock b/yarn.lock index d1ba2d151f..3dd69e86c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13,19 +13,9 @@ __metadata: linkType: hard "@adraffy/ens-normalize@npm:^1.10.1, @adraffy/ens-normalize@npm:^1.11.0, @adraffy/ens-normalize@npm:^1.8.8": - version: 1.11.0 - resolution: "@adraffy/ens-normalize@npm:1.11.0" - checksum: 10c0/5111d0f1a273468cb5661ed3cf46ee58de8f32f84e2ebc2365652e66c1ead82649df94c736804e2b9cfa831d30ef24e1cc3575d970dbda583416d3a98d8870a6 - languageName: node - linkType: hard - -"@ampproject/remapping@npm:^2.2.0": - version: 2.3.0 - resolution: "@ampproject/remapping@npm:2.3.0" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10c0/81d63cca5443e0f0c72ae18b544cc28c7c0ec2cea46e7cb888bb0e0f411a1191d0d6b7af798d54e30777d8d1488b2ec0732aac2be342d3d7d3ffd271c6f489ed + version: 1.11.1 + resolution: "@adraffy/ens-normalize@npm:1.11.1" + checksum: 10c0/b364e2a57131db278ebf2f22d1a1ac6d8aea95c49dd2bbbc1825870b38aa91fd8816aba580a1f84edc50a45eb6389213dacfd1889f32893afc8549a82d304767 languageName: node linkType: hard @@ -48,9 +38,9 @@ __metadata: languageName: node linkType: hard -"@angular-devkit/core@npm:19.2.6": - version: 19.2.6 - resolution: "@angular-devkit/core@npm:19.2.6" +"@angular-devkit/core@npm:19.2.17": + version: 19.2.17 + resolution: "@angular-devkit/core@npm:19.2.17" dependencies: ajv: "npm:8.17.1" ajv-formats: "npm:3.0.1" @@ -63,7 +53,7 @@ __metadata: peerDependenciesMeta: chokidar: optional: true - checksum: 10c0/0f15217b48beda566e5d050b1ac704cbcf180e1e99c66d51d79bbbc4f67e62bd0311c64ab8f6c843427d316c817f2ff27d6531212015985dd4d7dc96578ff5ff + checksum: 10c0/721c34da992e7060156c1e523703f754b64524d0212efbbdf9a88ef794ef3c9ebb8e8994743f013c3b99c0a9201362ed2a8ecc2979a1bb72a02b2a6cd4887699 languageName: node linkType: hard @@ -96,16 +86,16 @@ __metadata: languageName: node linkType: hard -"@angular-devkit/schematics@npm:19.2.6": - version: 19.2.6 - resolution: "@angular-devkit/schematics@npm:19.2.6" +"@angular-devkit/schematics@npm:19.2.17": + version: 19.2.17 + resolution: "@angular-devkit/schematics@npm:19.2.17" dependencies: - "@angular-devkit/core": "npm:19.2.6" + "@angular-devkit/core": "npm:19.2.17" jsonc-parser: "npm:3.3.1" magic-string: "npm:0.30.17" ora: "npm:5.4.1" rxjs: "npm:7.8.1" - checksum: 10c0/17a5a8fac6fd1a17c2f4772233c048f4fd952d65b5372f7a42b31b6b5432dc5398272ae2f1299b451d3bfce2c3ef9088d0a045358f39eb661bb944ee75efd943 + checksum: 10c0/393d2148f2a75efdeeadad7cb47bb55cf490c56928cec5f9acb18cd8098aa7a8de48e6e8f5063431a6fd7df569e0fb75bb0cfeb8a9a6e7924e6be625e1779b6f languageName: node linkType: hard @@ -594,7 +584,7 @@ __metadata: version: 0.0.0-use.local resolution: "@apps/job-launcher-server@workspace:packages/apps/job-launcher/server" dependencies: - "@faker-js/faker": "npm:^9.5.0" + "@faker-js/faker": "npm:^9.8.0" "@golevelup/ts-jest": "npm:^0.6.1" "@google-cloud/storage": "npm:^7.15.0" "@google-cloud/vision": "npm:^4.3.2" @@ -668,7 +658,7 @@ __metadata: resolution: "@apps/reputation-oracle@workspace:packages/apps/reputation-oracle/server" dependencies: "@eslint/js": "npm:^9.33.0" - "@faker-js/faker": "npm:^9.4.0" + "@faker-js/faker": "npm:^9.8.0" "@golevelup/ts-jest": "npm:^0.6.1" "@human-protocol/core": "workspace:*" "@human-protocol/logger": "workspace:*" @@ -784,16 +774,16 @@ __metadata: languageName: node linkType: hard -"@asamuzakjp/css-color@npm:^3.1.2": - version: 3.1.7 - resolution: "@asamuzakjp/css-color@npm:3.1.7" +"@asamuzakjp/css-color@npm:^3.2.0": + version: 3.2.0 + resolution: "@asamuzakjp/css-color@npm:3.2.0" dependencies: "@csstools/css-calc": "npm:^2.1.3" "@csstools/css-color-parser": "npm:^3.0.9" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" lru-cache: "npm:^10.4.3" - checksum: 10c0/ac70af38c9b9d972941fe9dbed5221118077bc8f217617edbd534d9c7c281fd2c4023d0f0daa349d57b895cb73430d67d509b722226294bad2910a81d9439e91 + checksum: 10c0/a4bf1c831751b1fae46b437e37e8a38c0b5bd58d23230157ae210bd1e905fe509b89b7c243e63d1522d852668a6292ed730a160e21342772b4e5b7b8ea14c092 languageName: node linkType: hard @@ -905,420 +895,425 @@ __metadata: linkType: hard "@aws-sdk/client-lambda@npm:^3.563.0": - version: 3.804.0 - resolution: "@aws-sdk/client-lambda@npm:3.804.0" + version: 3.922.0 + resolution: "@aws-sdk/client-lambda@npm:3.922.0" dependencies: "@aws-crypto/sha256-browser": "npm:5.2.0" "@aws-crypto/sha256-js": "npm:5.2.0" - "@aws-sdk/core": "npm:3.804.0" - "@aws-sdk/credential-provider-node": "npm:3.804.0" - "@aws-sdk/middleware-host-header": "npm:3.804.0" - "@aws-sdk/middleware-logger": "npm:3.804.0" - "@aws-sdk/middleware-recursion-detection": "npm:3.804.0" - "@aws-sdk/middleware-user-agent": "npm:3.804.0" - "@aws-sdk/region-config-resolver": "npm:3.804.0" - "@aws-sdk/types": "npm:3.804.0" - "@aws-sdk/util-endpoints": "npm:3.804.0" - "@aws-sdk/util-user-agent-browser": "npm:3.804.0" - "@aws-sdk/util-user-agent-node": "npm:3.804.0" - "@smithy/config-resolver": "npm:^4.1.0" - "@smithy/core": "npm:^3.3.1" - "@smithy/eventstream-serde-browser": "npm:^4.0.2" - "@smithy/eventstream-serde-config-resolver": "npm:^4.1.0" - "@smithy/eventstream-serde-node": "npm:^4.0.2" - "@smithy/fetch-http-handler": "npm:^5.0.2" - "@smithy/hash-node": "npm:^4.0.2" - "@smithy/invalid-dependency": "npm:^4.0.2" - "@smithy/middleware-content-length": "npm:^4.0.2" - "@smithy/middleware-endpoint": "npm:^4.1.2" - "@smithy/middleware-retry": "npm:^4.1.3" - "@smithy/middleware-serde": "npm:^4.0.3" - "@smithy/middleware-stack": "npm:^4.0.2" - "@smithy/node-config-provider": "npm:^4.0.2" - "@smithy/node-http-handler": "npm:^4.0.4" - "@smithy/protocol-http": "npm:^5.1.0" - "@smithy/smithy-client": "npm:^4.2.2" - "@smithy/types": "npm:^4.2.0" - "@smithy/url-parser": "npm:^4.0.2" - "@smithy/util-base64": "npm:^4.0.0" - "@smithy/util-body-length-browser": "npm:^4.0.0" - "@smithy/util-body-length-node": "npm:^4.0.0" - "@smithy/util-defaults-mode-browser": "npm:^4.0.10" - "@smithy/util-defaults-mode-node": "npm:^4.0.10" - "@smithy/util-endpoints": "npm:^3.0.2" - "@smithy/util-middleware": "npm:^4.0.2" - "@smithy/util-retry": "npm:^4.0.3" - "@smithy/util-stream": "npm:^4.2.0" - "@smithy/util-utf8": "npm:^4.0.0" - "@smithy/util-waiter": "npm:^4.0.3" + "@aws-sdk/core": "npm:3.922.0" + "@aws-sdk/credential-provider-node": "npm:3.922.0" + "@aws-sdk/middleware-host-header": "npm:3.922.0" + "@aws-sdk/middleware-logger": "npm:3.922.0" + "@aws-sdk/middleware-recursion-detection": "npm:3.922.0" + "@aws-sdk/middleware-user-agent": "npm:3.922.0" + "@aws-sdk/region-config-resolver": "npm:3.922.0" + "@aws-sdk/types": "npm:3.922.0" + "@aws-sdk/util-endpoints": "npm:3.922.0" + "@aws-sdk/util-user-agent-browser": "npm:3.922.0" + "@aws-sdk/util-user-agent-node": "npm:3.922.0" + "@smithy/config-resolver": "npm:^4.4.1" + "@smithy/core": "npm:^3.17.2" + "@smithy/eventstream-serde-browser": "npm:^4.2.4" + "@smithy/eventstream-serde-config-resolver": "npm:^4.3.4" + "@smithy/eventstream-serde-node": "npm:^4.2.4" + "@smithy/fetch-http-handler": "npm:^5.3.5" + "@smithy/hash-node": "npm:^4.2.4" + "@smithy/invalid-dependency": "npm:^4.2.4" + "@smithy/middleware-content-length": "npm:^4.2.4" + "@smithy/middleware-endpoint": "npm:^4.3.6" + "@smithy/middleware-retry": "npm:^4.4.6" + "@smithy/middleware-serde": "npm:^4.2.4" + "@smithy/middleware-stack": "npm:^4.2.4" + "@smithy/node-config-provider": "npm:^4.3.4" + "@smithy/node-http-handler": "npm:^4.4.4" + "@smithy/protocol-http": "npm:^5.3.4" + "@smithy/smithy-client": "npm:^4.9.2" + "@smithy/types": "npm:^4.8.1" + "@smithy/url-parser": "npm:^4.2.4" + "@smithy/util-base64": "npm:^4.3.0" + "@smithy/util-body-length-browser": "npm:^4.2.0" + "@smithy/util-body-length-node": "npm:^4.2.1" + "@smithy/util-defaults-mode-browser": "npm:^4.3.5" + "@smithy/util-defaults-mode-node": "npm:^4.2.7" + "@smithy/util-endpoints": "npm:^3.2.4" + "@smithy/util-middleware": "npm:^4.2.4" + "@smithy/util-retry": "npm:^4.2.4" + "@smithy/util-stream": "npm:^4.5.5" + "@smithy/util-utf8": "npm:^4.2.0" + "@smithy/util-waiter": "npm:^4.2.4" tslib: "npm:^2.6.2" - checksum: 10c0/bf0f607b01ef70dba2ca4a310cb8765d1a0e24630875709ec3006a1cbc92afb7373505fe88b9a9c9a2aab41b2701b496fe7ef6b559ce98caac94174965e3deee + checksum: 10c0/e792dba7f2f2220e528a843c2d29a5c450739b5ea17b6e4b9f8ad2ca1c427f90519b4eaa2fabb73d93777cf5b3c87afa96c48f6033b2b1f633ae01d5d601d038 languageName: node linkType: hard -"@aws-sdk/client-sso@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/client-sso@npm:3.804.0" +"@aws-sdk/client-sso@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/client-sso@npm:3.922.0" dependencies: "@aws-crypto/sha256-browser": "npm:5.2.0" "@aws-crypto/sha256-js": "npm:5.2.0" - "@aws-sdk/core": "npm:3.804.0" - "@aws-sdk/middleware-host-header": "npm:3.804.0" - "@aws-sdk/middleware-logger": "npm:3.804.0" - "@aws-sdk/middleware-recursion-detection": "npm:3.804.0" - "@aws-sdk/middleware-user-agent": "npm:3.804.0" - "@aws-sdk/region-config-resolver": "npm:3.804.0" - "@aws-sdk/types": "npm:3.804.0" - "@aws-sdk/util-endpoints": "npm:3.804.0" - "@aws-sdk/util-user-agent-browser": "npm:3.804.0" - "@aws-sdk/util-user-agent-node": "npm:3.804.0" - "@smithy/config-resolver": "npm:^4.1.0" - "@smithy/core": "npm:^3.3.1" - "@smithy/fetch-http-handler": "npm:^5.0.2" - "@smithy/hash-node": "npm:^4.0.2" - "@smithy/invalid-dependency": "npm:^4.0.2" - "@smithy/middleware-content-length": "npm:^4.0.2" - "@smithy/middleware-endpoint": "npm:^4.1.2" - "@smithy/middleware-retry": "npm:^4.1.3" - "@smithy/middleware-serde": "npm:^4.0.3" - "@smithy/middleware-stack": "npm:^4.0.2" - "@smithy/node-config-provider": "npm:^4.0.2" - "@smithy/node-http-handler": "npm:^4.0.4" - "@smithy/protocol-http": "npm:^5.1.0" - "@smithy/smithy-client": "npm:^4.2.2" - "@smithy/types": "npm:^4.2.0" - "@smithy/url-parser": "npm:^4.0.2" - "@smithy/util-base64": "npm:^4.0.0" - "@smithy/util-body-length-browser": "npm:^4.0.0" - "@smithy/util-body-length-node": "npm:^4.0.0" - "@smithy/util-defaults-mode-browser": "npm:^4.0.10" - "@smithy/util-defaults-mode-node": "npm:^4.0.10" - "@smithy/util-endpoints": "npm:^3.0.2" - "@smithy/util-middleware": "npm:^4.0.2" - "@smithy/util-retry": "npm:^4.0.3" - "@smithy/util-utf8": "npm:^4.0.0" + "@aws-sdk/core": "npm:3.922.0" + "@aws-sdk/middleware-host-header": "npm:3.922.0" + "@aws-sdk/middleware-logger": "npm:3.922.0" + "@aws-sdk/middleware-recursion-detection": "npm:3.922.0" + "@aws-sdk/middleware-user-agent": "npm:3.922.0" + "@aws-sdk/region-config-resolver": "npm:3.922.0" + "@aws-sdk/types": "npm:3.922.0" + "@aws-sdk/util-endpoints": "npm:3.922.0" + "@aws-sdk/util-user-agent-browser": "npm:3.922.0" + "@aws-sdk/util-user-agent-node": "npm:3.922.0" + "@smithy/config-resolver": "npm:^4.4.1" + "@smithy/core": "npm:^3.17.2" + "@smithy/fetch-http-handler": "npm:^5.3.5" + "@smithy/hash-node": "npm:^4.2.4" + "@smithy/invalid-dependency": "npm:^4.2.4" + "@smithy/middleware-content-length": "npm:^4.2.4" + "@smithy/middleware-endpoint": "npm:^4.3.6" + "@smithy/middleware-retry": "npm:^4.4.6" + "@smithy/middleware-serde": "npm:^4.2.4" + "@smithy/middleware-stack": "npm:^4.2.4" + "@smithy/node-config-provider": "npm:^4.3.4" + "@smithy/node-http-handler": "npm:^4.4.4" + "@smithy/protocol-http": "npm:^5.3.4" + "@smithy/smithy-client": "npm:^4.9.2" + "@smithy/types": "npm:^4.8.1" + "@smithy/url-parser": "npm:^4.2.4" + "@smithy/util-base64": "npm:^4.3.0" + "@smithy/util-body-length-browser": "npm:^4.2.0" + "@smithy/util-body-length-node": "npm:^4.2.1" + "@smithy/util-defaults-mode-browser": "npm:^4.3.5" + "@smithy/util-defaults-mode-node": "npm:^4.2.7" + "@smithy/util-endpoints": "npm:^3.2.4" + "@smithy/util-middleware": "npm:^4.2.4" + "@smithy/util-retry": "npm:^4.2.4" + "@smithy/util-utf8": "npm:^4.2.0" tslib: "npm:^2.6.2" - checksum: 10c0/bdca6467b4d8cda794a5e2353c4cefe28630b07b7bf8dd2441275d77195f49765f17cb8154110c562ecb125a890ba6bc129e7a080683fd87205b17e56ad39331 - languageName: node - linkType: hard - -"@aws-sdk/core@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/core@npm:3.804.0" - dependencies: - "@aws-sdk/types": "npm:3.804.0" - "@smithy/core": "npm:^3.3.1" - "@smithy/node-config-provider": "npm:^4.0.2" - "@smithy/property-provider": "npm:^4.0.2" - "@smithy/protocol-http": "npm:^5.1.0" - "@smithy/signature-v4": "npm:^5.1.0" - "@smithy/smithy-client": "npm:^4.2.2" - "@smithy/types": "npm:^4.2.0" - "@smithy/util-middleware": "npm:^4.0.2" - fast-xml-parser: "npm:4.4.1" + checksum: 10c0/32170244bc1569857cc9062c86416eb0b6bab9f8284f357a7abb535bff0865dfd8ed56e0648ef23a4c58e26f4523ba62ee87b3895ee2a053b60f93efa8147cf3 + languageName: node + linkType: hard + +"@aws-sdk/core@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/core@npm:3.922.0" + dependencies: + "@aws-sdk/types": "npm:3.922.0" + "@aws-sdk/xml-builder": "npm:3.921.0" + "@smithy/core": "npm:^3.17.2" + "@smithy/node-config-provider": "npm:^4.3.4" + "@smithy/property-provider": "npm:^4.2.4" + "@smithy/protocol-http": "npm:^5.3.4" + "@smithy/signature-v4": "npm:^5.3.4" + "@smithy/smithy-client": "npm:^4.9.2" + "@smithy/types": "npm:^4.8.1" + "@smithy/util-base64": "npm:^4.3.0" + "@smithy/util-middleware": "npm:^4.2.4" + "@smithy/util-utf8": "npm:^4.2.0" tslib: "npm:^2.6.2" - checksum: 10c0/c20d9cd253bbe214e92f33260f7c52766cfdd21ebf4ee198bbba0e6a1d24ee8dc9e1ed024abf3f2772919d9bfd391f236839e4da07b4330690a0c6a874b0f992 + checksum: 10c0/fdd9fb28853ece26617338630dbaa04c1d9261b6b6977a4db8230fecc177e1ef12ae86833af66b8f325a59bac6ad2451069256ef73595a50af00fe02e52aed01 languageName: node linkType: hard -"@aws-sdk/credential-provider-env@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/credential-provider-env@npm:3.804.0" +"@aws-sdk/credential-provider-env@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/credential-provider-env@npm:3.922.0" dependencies: - "@aws-sdk/core": "npm:3.804.0" - "@aws-sdk/types": "npm:3.804.0" - "@smithy/property-provider": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" + "@aws-sdk/core": "npm:3.922.0" + "@aws-sdk/types": "npm:3.922.0" + "@smithy/property-provider": "npm:^4.2.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/5a8f5ed24c29c1cd0d87f552975b16bb413ac9c3f7c608effb169c6b5b75727eb6200e3eaecb9560783bbb8899655d6ecd2bb5290304945c2b5fb97d35ac19e5 + checksum: 10c0/c3ba63c50814c9922588f5639ac1113364de4c81af4288962b09ba371d366ef5bb97a7667813a44ee17477abac776acaef7d037672453a5fbe105e95d5e227ef languageName: node linkType: hard -"@aws-sdk/credential-provider-http@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/credential-provider-http@npm:3.804.0" +"@aws-sdk/credential-provider-http@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/credential-provider-http@npm:3.922.0" dependencies: - "@aws-sdk/core": "npm:3.804.0" - "@aws-sdk/types": "npm:3.804.0" - "@smithy/fetch-http-handler": "npm:^5.0.2" - "@smithy/node-http-handler": "npm:^4.0.4" - "@smithy/property-provider": "npm:^4.0.2" - "@smithy/protocol-http": "npm:^5.1.0" - "@smithy/smithy-client": "npm:^4.2.2" - "@smithy/types": "npm:^4.2.0" - "@smithy/util-stream": "npm:^4.2.0" + "@aws-sdk/core": "npm:3.922.0" + "@aws-sdk/types": "npm:3.922.0" + "@smithy/fetch-http-handler": "npm:^5.3.5" + "@smithy/node-http-handler": "npm:^4.4.4" + "@smithy/property-provider": "npm:^4.2.4" + "@smithy/protocol-http": "npm:^5.3.4" + "@smithy/smithy-client": "npm:^4.9.2" + "@smithy/types": "npm:^4.8.1" + "@smithy/util-stream": "npm:^4.5.5" tslib: "npm:^2.6.2" - checksum: 10c0/7c290ba3fb5245010f193cd5d6f2c6ed41555c107911ac1a6dc9136ba6f21857a0101cd3f7b226a748a1b407b5e6b90503badde3ff0d6ab7e9900bd3b414786c - languageName: node - linkType: hard - -"@aws-sdk/credential-provider-ini@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/credential-provider-ini@npm:3.804.0" - dependencies: - "@aws-sdk/core": "npm:3.804.0" - "@aws-sdk/credential-provider-env": "npm:3.804.0" - "@aws-sdk/credential-provider-http": "npm:3.804.0" - "@aws-sdk/credential-provider-process": "npm:3.804.0" - "@aws-sdk/credential-provider-sso": "npm:3.804.0" - "@aws-sdk/credential-provider-web-identity": "npm:3.804.0" - "@aws-sdk/nested-clients": "npm:3.804.0" - "@aws-sdk/types": "npm:3.804.0" - "@smithy/credential-provider-imds": "npm:^4.0.2" - "@smithy/property-provider": "npm:^4.0.2" - "@smithy/shared-ini-file-loader": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" + checksum: 10c0/70f3c6315a2cd3ece055d2732a9b4eab2129781aa29d437a59f7e9a153b0b649b43f375692bcda252801bc7c9798cb1f25e9c3cabdcf383021542243c6154287 + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-ini@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.922.0" + dependencies: + "@aws-sdk/core": "npm:3.922.0" + "@aws-sdk/credential-provider-env": "npm:3.922.0" + "@aws-sdk/credential-provider-http": "npm:3.922.0" + "@aws-sdk/credential-provider-process": "npm:3.922.0" + "@aws-sdk/credential-provider-sso": "npm:3.922.0" + "@aws-sdk/credential-provider-web-identity": "npm:3.922.0" + "@aws-sdk/nested-clients": "npm:3.922.0" + "@aws-sdk/types": "npm:3.922.0" + "@smithy/credential-provider-imds": "npm:^4.2.4" + "@smithy/property-provider": "npm:^4.2.4" + "@smithy/shared-ini-file-loader": "npm:^4.3.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/f1e78aef499fcbb4da35385ecc7af52bcd0833446ad1cd041d7912a85096a516e9f96eb3ea984d7559aa6ebb3ae6b1406dc328b5e87d22fbb12ff94d33328695 + checksum: 10c0/7d58cfa719f99b2f30e262147df8d7bdaeb61918d8d913303c52500edffb017c24855123d42c7b9d277bf044e4c0fb6041a5097d686951c5acdcc173a9edfb6b languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/credential-provider-node@npm:3.804.0" +"@aws-sdk/credential-provider-node@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.922.0" dependencies: - "@aws-sdk/credential-provider-env": "npm:3.804.0" - "@aws-sdk/credential-provider-http": "npm:3.804.0" - "@aws-sdk/credential-provider-ini": "npm:3.804.0" - "@aws-sdk/credential-provider-process": "npm:3.804.0" - "@aws-sdk/credential-provider-sso": "npm:3.804.0" - "@aws-sdk/credential-provider-web-identity": "npm:3.804.0" - "@aws-sdk/types": "npm:3.804.0" - "@smithy/credential-provider-imds": "npm:^4.0.2" - "@smithy/property-provider": "npm:^4.0.2" - "@smithy/shared-ini-file-loader": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" + "@aws-sdk/credential-provider-env": "npm:3.922.0" + "@aws-sdk/credential-provider-http": "npm:3.922.0" + "@aws-sdk/credential-provider-ini": "npm:3.922.0" + "@aws-sdk/credential-provider-process": "npm:3.922.0" + "@aws-sdk/credential-provider-sso": "npm:3.922.0" + "@aws-sdk/credential-provider-web-identity": "npm:3.922.0" + "@aws-sdk/types": "npm:3.922.0" + "@smithy/credential-provider-imds": "npm:^4.2.4" + "@smithy/property-provider": "npm:^4.2.4" + "@smithy/shared-ini-file-loader": "npm:^4.3.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/3146becead8deddc7bd0a147a1b6a98b3fed02bb4b833d664c0b950ac7fb7b41c8f3c99b0969eff38d303c527009217f7309a98e3ff1a24b5e618ac1a4aaa8dc + checksum: 10c0/3e303fb04f9a9f27c78270662f96a649157c37dc580608dd1dd16df1a0a56027c7650ef777aeb9297149979dc88efeab58a687b7127573ba73c4b972398e58d2 languageName: node linkType: hard -"@aws-sdk/credential-provider-process@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/credential-provider-process@npm:3.804.0" +"@aws-sdk/credential-provider-process@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/credential-provider-process@npm:3.922.0" dependencies: - "@aws-sdk/core": "npm:3.804.0" - "@aws-sdk/types": "npm:3.804.0" - "@smithy/property-provider": "npm:^4.0.2" - "@smithy/shared-ini-file-loader": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" + "@aws-sdk/core": "npm:3.922.0" + "@aws-sdk/types": "npm:3.922.0" + "@smithy/property-provider": "npm:^4.2.4" + "@smithy/shared-ini-file-loader": "npm:^4.3.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/b1a885940b21bda0c373f3792bb2280b5689032acd81b028dbac66d50c56efe31033c14c074bfcf07f207a8b2cb6f5095972094df8b9618f1e16522e1facf567 + checksum: 10c0/1ea7f7135a9ff5e1b76338be23e71f425a336f38083eb67d82bf94138e7fdb137ea96e512cbab3843f6af2fde4c1f3e9f68a6586688a427e198017292ae38856 languageName: node linkType: hard -"@aws-sdk/credential-provider-sso@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/credential-provider-sso@npm:3.804.0" +"@aws-sdk/credential-provider-sso@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.922.0" dependencies: - "@aws-sdk/client-sso": "npm:3.804.0" - "@aws-sdk/core": "npm:3.804.0" - "@aws-sdk/token-providers": "npm:3.804.0" - "@aws-sdk/types": "npm:3.804.0" - "@smithy/property-provider": "npm:^4.0.2" - "@smithy/shared-ini-file-loader": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" + "@aws-sdk/client-sso": "npm:3.922.0" + "@aws-sdk/core": "npm:3.922.0" + "@aws-sdk/token-providers": "npm:3.922.0" + "@aws-sdk/types": "npm:3.922.0" + "@smithy/property-provider": "npm:^4.2.4" + "@smithy/shared-ini-file-loader": "npm:^4.3.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/61bb9e97988f3c42ad832788231ea77fb6cf631e2906e4740c20549edf369f2b67e470f430b16c63e99749bafff7220947ec1a1fc0c68f7f3c7adcbbe407d429 + checksum: 10c0/277e756a6ac8e4a253822bbcb4065854a649f81f574d220287c224156c423bcbb0238028695ca5c3a4c99fd73a99a5627171bf397dd6a943e700621423bf0842 languageName: node linkType: hard -"@aws-sdk/credential-provider-web-identity@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/credential-provider-web-identity@npm:3.804.0" +"@aws-sdk/credential-provider-web-identity@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/credential-provider-web-identity@npm:3.922.0" dependencies: - "@aws-sdk/core": "npm:3.804.0" - "@aws-sdk/nested-clients": "npm:3.804.0" - "@aws-sdk/types": "npm:3.804.0" - "@smithy/property-provider": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" + "@aws-sdk/core": "npm:3.922.0" + "@aws-sdk/nested-clients": "npm:3.922.0" + "@aws-sdk/types": "npm:3.922.0" + "@smithy/property-provider": "npm:^4.2.4" + "@smithy/shared-ini-file-loader": "npm:^4.3.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/9b4193cd459836aa386c8ef65bcb125774379660b05a1fd42eb9b953976d29bd5c2857720aa595f1c3de9b17b4a9ace8aab07334bd1f637cc454b3b982eeafa7 + checksum: 10c0/f30912be8e568331300c79d308c0bf4e7428e7c5dd93351e9fe1f71d9a0ef899a252d7e372032b296985ccc4768a575e2538b31d3a6d854146a5b96d7681b0b9 languageName: node linkType: hard -"@aws-sdk/middleware-host-header@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/middleware-host-header@npm:3.804.0" +"@aws-sdk/middleware-host-header@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/middleware-host-header@npm:3.922.0" dependencies: - "@aws-sdk/types": "npm:3.804.0" - "@smithy/protocol-http": "npm:^5.1.0" - "@smithy/types": "npm:^4.2.0" + "@aws-sdk/types": "npm:3.922.0" + "@smithy/protocol-http": "npm:^5.3.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/4089d24b70d2d80f4936e4468f69d3ce1dfd80bc84ed0db65c57b25814c7842076e6ab55a80346f2b396b1db967c447370839a2dac836e1db81b01928985ceeb + checksum: 10c0/a3c0664b13bce6274ff67c809bc61553e178879842182064093b0e3628e91ade7555da2e29ca08d058125fc902a33601d0ed46d6a29f49f55d33f7a11166d1ba languageName: node linkType: hard -"@aws-sdk/middleware-logger@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/middleware-logger@npm:3.804.0" +"@aws-sdk/middleware-logger@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/middleware-logger@npm:3.922.0" dependencies: - "@aws-sdk/types": "npm:3.804.0" - "@smithy/types": "npm:^4.2.0" + "@aws-sdk/types": "npm:3.922.0" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/4b7deebb336231e529857673fbba898e578b7ca88049923f3e822e67732262a08bbcaecf388e1cd687102744ad9867ab535b71e8b086602f91e1a4bb43b39a5a + checksum: 10c0/b9e24de778ba03b39e531e485b05d2ea8deaed6e1f69dea3b8e33c133c1fa350821edb1cc12193c799af513897012b6b9bcb449d16d6f847a921a553101896e6 languageName: node linkType: hard -"@aws-sdk/middleware-recursion-detection@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/middleware-recursion-detection@npm:3.804.0" +"@aws-sdk/middleware-recursion-detection@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/middleware-recursion-detection@npm:3.922.0" dependencies: - "@aws-sdk/types": "npm:3.804.0" - "@smithy/protocol-http": "npm:^5.1.0" - "@smithy/types": "npm:^4.2.0" + "@aws-sdk/types": "npm:3.922.0" + "@aws/lambda-invoke-store": "npm:^0.1.1" + "@smithy/protocol-http": "npm:^5.3.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/86e6d2902dd8ec8551d9f66ebc470b21bcf0d3caab457ef3395ee18fcd371d3816e86f17f39cd69a27cc39ee96b6b85d0b179e44fec5a6da11f44a4905d8ac92 + checksum: 10c0/9975b01a3ff28e2fb8cb29b252f2839c59efd72f84f0d50cf69d51617452741feb6d4d1fb7fdee929d1b3791fd7d98cb1cad16362ac35fee33d68e8868ce8ef2 languageName: node linkType: hard -"@aws-sdk/middleware-user-agent@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/middleware-user-agent@npm:3.804.0" +"@aws-sdk/middleware-user-agent@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/middleware-user-agent@npm:3.922.0" dependencies: - "@aws-sdk/core": "npm:3.804.0" - "@aws-sdk/types": "npm:3.804.0" - "@aws-sdk/util-endpoints": "npm:3.804.0" - "@smithy/core": "npm:^3.3.1" - "@smithy/protocol-http": "npm:^5.1.0" - "@smithy/types": "npm:^4.2.0" + "@aws-sdk/core": "npm:3.922.0" + "@aws-sdk/types": "npm:3.922.0" + "@aws-sdk/util-endpoints": "npm:3.922.0" + "@smithy/core": "npm:^3.17.2" + "@smithy/protocol-http": "npm:^5.3.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/5e125dbb220a4ccef454cca673226f3af5306d79016740b71b41c83da9b6ea382301b88f741c500fe3cd72b79ecd22cce591eeb9c2d231773ab52895a84cf183 + checksum: 10c0/be3d38d7082ab003ddb489ccdfe30ebd5e639fe2c6465bcbce11fc64b275ba6aa9fa1f8d39e460a60419dec6a67b7d236023485f9b2aeebdec2404ae2612dabb languageName: node linkType: hard -"@aws-sdk/nested-clients@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/nested-clients@npm:3.804.0" +"@aws-sdk/nested-clients@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/nested-clients@npm:3.922.0" dependencies: "@aws-crypto/sha256-browser": "npm:5.2.0" "@aws-crypto/sha256-js": "npm:5.2.0" - "@aws-sdk/core": "npm:3.804.0" - "@aws-sdk/middleware-host-header": "npm:3.804.0" - "@aws-sdk/middleware-logger": "npm:3.804.0" - "@aws-sdk/middleware-recursion-detection": "npm:3.804.0" - "@aws-sdk/middleware-user-agent": "npm:3.804.0" - "@aws-sdk/region-config-resolver": "npm:3.804.0" - "@aws-sdk/types": "npm:3.804.0" - "@aws-sdk/util-endpoints": "npm:3.804.0" - "@aws-sdk/util-user-agent-browser": "npm:3.804.0" - "@aws-sdk/util-user-agent-node": "npm:3.804.0" - "@smithy/config-resolver": "npm:^4.1.0" - "@smithy/core": "npm:^3.3.1" - "@smithy/fetch-http-handler": "npm:^5.0.2" - "@smithy/hash-node": "npm:^4.0.2" - "@smithy/invalid-dependency": "npm:^4.0.2" - "@smithy/middleware-content-length": "npm:^4.0.2" - "@smithy/middleware-endpoint": "npm:^4.1.2" - "@smithy/middleware-retry": "npm:^4.1.3" - "@smithy/middleware-serde": "npm:^4.0.3" - "@smithy/middleware-stack": "npm:^4.0.2" - "@smithy/node-config-provider": "npm:^4.0.2" - "@smithy/node-http-handler": "npm:^4.0.4" - "@smithy/protocol-http": "npm:^5.1.0" - "@smithy/smithy-client": "npm:^4.2.2" - "@smithy/types": "npm:^4.2.0" - "@smithy/url-parser": "npm:^4.0.2" - "@smithy/util-base64": "npm:^4.0.0" - "@smithy/util-body-length-browser": "npm:^4.0.0" - "@smithy/util-body-length-node": "npm:^4.0.0" - "@smithy/util-defaults-mode-browser": "npm:^4.0.10" - "@smithy/util-defaults-mode-node": "npm:^4.0.10" - "@smithy/util-endpoints": "npm:^3.0.2" - "@smithy/util-middleware": "npm:^4.0.2" - "@smithy/util-retry": "npm:^4.0.3" - "@smithy/util-utf8": "npm:^4.0.0" + "@aws-sdk/core": "npm:3.922.0" + "@aws-sdk/middleware-host-header": "npm:3.922.0" + "@aws-sdk/middleware-logger": "npm:3.922.0" + "@aws-sdk/middleware-recursion-detection": "npm:3.922.0" + "@aws-sdk/middleware-user-agent": "npm:3.922.0" + "@aws-sdk/region-config-resolver": "npm:3.922.0" + "@aws-sdk/types": "npm:3.922.0" + "@aws-sdk/util-endpoints": "npm:3.922.0" + "@aws-sdk/util-user-agent-browser": "npm:3.922.0" + "@aws-sdk/util-user-agent-node": "npm:3.922.0" + "@smithy/config-resolver": "npm:^4.4.1" + "@smithy/core": "npm:^3.17.2" + "@smithy/fetch-http-handler": "npm:^5.3.5" + "@smithy/hash-node": "npm:^4.2.4" + "@smithy/invalid-dependency": "npm:^4.2.4" + "@smithy/middleware-content-length": "npm:^4.2.4" + "@smithy/middleware-endpoint": "npm:^4.3.6" + "@smithy/middleware-retry": "npm:^4.4.6" + "@smithy/middleware-serde": "npm:^4.2.4" + "@smithy/middleware-stack": "npm:^4.2.4" + "@smithy/node-config-provider": "npm:^4.3.4" + "@smithy/node-http-handler": "npm:^4.4.4" + "@smithy/protocol-http": "npm:^5.3.4" + "@smithy/smithy-client": "npm:^4.9.2" + "@smithy/types": "npm:^4.8.1" + "@smithy/url-parser": "npm:^4.2.4" + "@smithy/util-base64": "npm:^4.3.0" + "@smithy/util-body-length-browser": "npm:^4.2.0" + "@smithy/util-body-length-node": "npm:^4.2.1" + "@smithy/util-defaults-mode-browser": "npm:^4.3.5" + "@smithy/util-defaults-mode-node": "npm:^4.2.7" + "@smithy/util-endpoints": "npm:^3.2.4" + "@smithy/util-middleware": "npm:^4.2.4" + "@smithy/util-retry": "npm:^4.2.4" + "@smithy/util-utf8": "npm:^4.2.0" tslib: "npm:^2.6.2" - checksum: 10c0/38517496490d138ad150aedeb8ce0ab4ab660bb6d3ec5d82fb29c08afd495296cba3cd9375e5f5f0f9be4bfecd4f03beef5e0b925f2fb0da7acba3aaa583f6db + checksum: 10c0/87b6d0a0edab2d7c746fe7567d7e9fc95006b5ae5b16d6b3ff7518692f933fbb4ff392a6951cc30b820c602722aef49fde82575ca302a013490cce859c1ffeff languageName: node linkType: hard -"@aws-sdk/region-config-resolver@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/region-config-resolver@npm:3.804.0" +"@aws-sdk/region-config-resolver@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/region-config-resolver@npm:3.922.0" dependencies: - "@aws-sdk/types": "npm:3.804.0" - "@smithy/node-config-provider": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" - "@smithy/util-config-provider": "npm:^4.0.0" - "@smithy/util-middleware": "npm:^4.0.2" + "@aws-sdk/types": "npm:3.922.0" + "@smithy/config-resolver": "npm:^4.4.1" + "@smithy/node-config-provider": "npm:^4.3.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/f4c5b9c3cb75e2c928f71b6d060ed292d408bf6401ae86a29342fe34a5af3eda0e2680848134f909d41e1c0cd1c0c63656c06090f29494fd9699bb11cafd240b + checksum: 10c0/05ade4d91e33c69db35af9bd1da4003a95c02a9e24b862116699db27cc86e719ff2b74df6d8c5960dedbd06ef19a104ec3f734f36eeab7140fb0a69b5870192d languageName: node linkType: hard -"@aws-sdk/token-providers@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/token-providers@npm:3.804.0" +"@aws-sdk/token-providers@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/token-providers@npm:3.922.0" dependencies: - "@aws-sdk/nested-clients": "npm:3.804.0" - "@aws-sdk/types": "npm:3.804.0" - "@smithy/property-provider": "npm:^4.0.2" - "@smithy/shared-ini-file-loader": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" + "@aws-sdk/core": "npm:3.922.0" + "@aws-sdk/nested-clients": "npm:3.922.0" + "@aws-sdk/types": "npm:3.922.0" + "@smithy/property-provider": "npm:^4.2.4" + "@smithy/shared-ini-file-loader": "npm:^4.3.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/ea2c56708b0ea312f14bbaedad1cc0ce8247d9f7a6a881173240479d0a0a22dd566afb9a8fa7dff504813a455f6aab1cd0309b43548a84e6cad9b6fb46507795 + checksum: 10c0/ba5817a75c0b4cd92aab2d88996fb0a622309538e642f137aee102d1b04962e1b4d39256a157c09be23507ab95859d1a6979faa0ae45b6ca1fe13fa6f4e1d7bc languageName: node linkType: hard -"@aws-sdk/types@npm:3.804.0, @aws-sdk/types@npm:^3.1.0, @aws-sdk/types@npm:^3.222.0": - version: 3.804.0 - resolution: "@aws-sdk/types@npm:3.804.0" +"@aws-sdk/types@npm:3.922.0, @aws-sdk/types@npm:^3.1.0, @aws-sdk/types@npm:^3.222.0": + version: 3.922.0 + resolution: "@aws-sdk/types@npm:3.922.0" dependencies: - "@smithy/types": "npm:^4.2.0" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/cdda6d77466ed34de1ca0e23b9df5c576e7d67dc87cfda2a2d024a9c5f4180fe77ebaf57194a4cf034ee5edfbcd8efdeca458e9b61b1f364b261284b4a141ae5 + checksum: 10c0/8a02f3af191d553ed54d30c404ac35c439db71c64ed45a7bcbf53e6200662030df8f28e0559679b14aa0d0afbb91479c11cc4656545a80d0a64567e6959cfca0 languageName: node linkType: hard -"@aws-sdk/util-endpoints@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/util-endpoints@npm:3.804.0" +"@aws-sdk/util-endpoints@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/util-endpoints@npm:3.922.0" dependencies: - "@aws-sdk/types": "npm:3.804.0" - "@smithy/types": "npm:^4.2.0" - "@smithy/util-endpoints": "npm:^3.0.2" + "@aws-sdk/types": "npm:3.922.0" + "@smithy/types": "npm:^4.8.1" + "@smithy/url-parser": "npm:^4.2.4" + "@smithy/util-endpoints": "npm:^3.2.4" tslib: "npm:^2.6.2" - checksum: 10c0/09bd3a9a114b0ebc897275ef75df72b3652af3023405484b86484861455b14f6c51809086598c9395b6381f85abe8f3d11a02b98806b55004c450b9937fcc4b2 + checksum: 10c0/77ef513c32954942f070c5d1c96be537d5f5e55e785af492094177124006f908cd82f1c299a3db37c4b496d5127680d370be1c845a9f1e6ecd8c62e228e43985 languageName: node linkType: hard "@aws-sdk/util-locate-window@npm:^3.0.0": - version: 3.804.0 - resolution: "@aws-sdk/util-locate-window@npm:3.804.0" + version: 3.893.0 + resolution: "@aws-sdk/util-locate-window@npm:3.893.0" dependencies: tslib: "npm:^2.6.2" - checksum: 10c0/a0ceaf6531f188751fea7e829b730650689fa2196e0b3f870dde3888bcb840fe0852e10488699d4d9683db0765cd7f7060ca8ac216348991996b6d794f9957ab + checksum: 10c0/ed2232d1eff567a7fa96bed87d56f03ac183dc20ba0ea262edb35f0b66aea201b987f447a5c383adc5694c80275700345946c0ad3183b30a6f9ec2f89be789d8 languageName: node linkType: hard -"@aws-sdk/util-user-agent-browser@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/util-user-agent-browser@npm:3.804.0" +"@aws-sdk/util-user-agent-browser@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/util-user-agent-browser@npm:3.922.0" dependencies: - "@aws-sdk/types": "npm:3.804.0" - "@smithy/types": "npm:^4.2.0" + "@aws-sdk/types": "npm:3.922.0" + "@smithy/types": "npm:^4.8.1" bowser: "npm:^2.11.0" tslib: "npm:^2.6.2" - checksum: 10c0/d459a94955e7298c72dc97e7e59d276320ff004615b117bd2f63bbacf762159c5476f40a8f24d9b5eb054915bd6ce97ffade3a649d5fad98643f92a9d90a5192 + checksum: 10c0/5a425f27c0b873fe039a3c042710384829d474aba832026d9b082d21d469300b0d6418eddff0d4fd77ba1971a3c526c39917a20fb7531ad0bfae40595f27baa7 languageName: node linkType: hard -"@aws-sdk/util-user-agent-node@npm:3.804.0": - version: 3.804.0 - resolution: "@aws-sdk/util-user-agent-node@npm:3.804.0" +"@aws-sdk/util-user-agent-node@npm:3.922.0": + version: 3.922.0 + resolution: "@aws-sdk/util-user-agent-node@npm:3.922.0" dependencies: - "@aws-sdk/middleware-user-agent": "npm:3.804.0" - "@aws-sdk/types": "npm:3.804.0" - "@smithy/node-config-provider": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" + "@aws-sdk/middleware-user-agent": "npm:3.922.0" + "@aws-sdk/types": "npm:3.922.0" + "@smithy/node-config-provider": "npm:^4.3.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" peerDependencies: aws-crt: ">=1.0.0" peerDependenciesMeta: aws-crt: optional: true - checksum: 10c0/f039f6420b7fe01674f63d5a48733e471ddcd03871d86cbd14d51af2a38da1473ac38f3cd192f0b82ce2bae66c69dd86074e2cf212cb68a183f17430cdf7dc63 + checksum: 10c0/847f32a6ca8a8cea01db59bc9a6df0a456c22b746b7703f2bef3f9827267f6d0fbd93ad083b312e9e602137c12ae9e3abbc2cd54ec1cdf12d4e87dcfbd03b876 languageName: node linkType: hard @@ -1331,6 +1326,24 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/xml-builder@npm:3.921.0": + version: 3.921.0 + resolution: "@aws-sdk/xml-builder@npm:3.921.0" + dependencies: + "@smithy/types": "npm:^4.8.1" + fast-xml-parser: "npm:5.2.5" + tslib: "npm:^2.6.2" + checksum: 10c0/83c1e24e1a81f6e102d55f31373a38eeedd59baf2ee7c9d83287ac5880624b436f1d762757956853f3922980db322d0121c4f6a1b090e94c78c339d39400d9aa + languageName: node + linkType: hard + +"@aws/lambda-invoke-store@npm:^0.1.1": + version: 0.1.1 + resolution: "@aws/lambda-invoke-store@npm:0.1.1" + checksum: 10c0/27c90d9af7cca7ff4870e87dc303516e6d09ebe18f5fa13813397cd6a37fd26cf3ff1715469e3c5323fea0404a55c110f35e21bcc3ea595a4f6ba6406ea1f103 + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.18.6, @babel/code-frame@npm:^7.27.1": version: 7.27.1 resolution: "@babel/code-frame@npm:7.27.1" @@ -1342,39 +1355,39 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.27.2": - version: 7.27.2 - resolution: "@babel/compat-data@npm:7.27.2" - checksum: 10c0/077c9e01af3b90decee384a6a44dcf353898e980cee22ec7941f9074655dbbe97ec317345536cdc7ef7391521e1497930c522a3816af473076dd524be7fccd32 +"@babel/compat-data@npm:^7.27.2, @babel/compat-data@npm:^7.27.7, @babel/compat-data@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/compat-data@npm:7.28.5" + checksum: 10c0/702a25de73087b0eba325c1d10979eed7c9b6662677386ba7b5aa6eace0fc0676f78343bae080a0176ae26f58bd5535d73b9d0fbb547fef377692e8b249353a7 languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.16.0, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.0, @babel/core@npm:^7.26.10": - version: 7.27.1 - resolution: "@babel/core@npm:7.27.1" +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.16.0, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.0, @babel/core@npm:^7.28.0": + version: 7.28.5 + resolution: "@babel/core@npm:7.28.5" dependencies: - "@ampproject/remapping": "npm:^2.2.0" "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.27.1" - "@babel/helper-compilation-targets": "npm:^7.27.1" - "@babel/helper-module-transforms": "npm:^7.27.1" - "@babel/helpers": "npm:^7.27.1" - "@babel/parser": "npm:^7.27.1" - "@babel/template": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" - "@babel/types": "npm:^7.27.1" + "@babel/generator": "npm:^7.28.5" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-module-transforms": "npm:^7.28.3" + "@babel/helpers": "npm:^7.28.4" + "@babel/parser": "npm:^7.28.5" + "@babel/template": "npm:^7.27.2" + "@babel/traverse": "npm:^7.28.5" + "@babel/types": "npm:^7.28.5" + "@jridgewell/remapping": "npm:^2.3.5" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10c0/0fc31f87f5401ac5d375528cb009f4ea5527fc8c5bb5b64b5b22c033b60fd0ad723388933a5f3f5db14e1edd13c958e9dd7e5c68f9b68c767aeb496199c8a4bb + checksum: 10c0/535f82238027621da6bdffbdbe896ebad3558b311d6f8abc680637a9859b96edbf929ab010757055381570b29cf66c4a295b5618318d27a4273c0e2033925e72 languageName: node linkType: hard "@babel/eslint-parser@npm:^7.16.3, @babel/eslint-parser@npm:^7.23.10": - version: 7.27.1 - resolution: "@babel/eslint-parser@npm:7.27.1" + version: 7.28.5 + resolution: "@babel/eslint-parser@npm:7.28.5" dependencies: "@nicolo-ribaudo/eslint-scope-5-internals": "npm:5.1.1-v1" eslint-visitor-keys: "npm:^2.1.0" @@ -1382,33 +1395,33 @@ __metadata: peerDependencies: "@babel/core": ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - checksum: 10c0/dedb2bc7ef00307eaf8e40d5ec7f1e8ae4649838fa2e7ec5e1b47eaf9bd8708949503b05175de922e2431ce69a5f3b5fab1c1202003b1d9457d3c0b2c3bdc4ec + checksum: 10c0/4d13f765434b6be83ab3917f06ad712dedf0d5bfa80fe54cd6cea44adac6a0d2519020ad307d66b4490e46a435874829eac6a9fd3a9cad54d7616c47d288aaed languageName: node linkType: hard -"@babel/generator@npm:^7.27.1, @babel/generator@npm:^7.7.2": - version: 7.27.1 - resolution: "@babel/generator@npm:7.27.1" +"@babel/generator@npm:^7.28.5, @babel/generator@npm:^7.7.2": + version: 7.28.5 + resolution: "@babel/generator@npm:7.28.5" dependencies: - "@babel/parser": "npm:^7.27.1" - "@babel/types": "npm:^7.27.1" - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" + "@babel/parser": "npm:^7.28.5" + "@babel/types": "npm:^7.28.5" + "@jridgewell/gen-mapping": "npm:^0.3.12" + "@jridgewell/trace-mapping": "npm:^0.3.28" jsesc: "npm:^3.0.2" - checksum: 10c0/c4156434b21818f558ebd93ce45f027c53ee570ce55a84fd2d9ba45a79ad204c17e0bff753c886fb6c07df3385445a9e34dc7ccb070d0ac7e80bb91c8b57f423 + checksum: 10c0/9f219fe1d5431b6919f1a5c60db8d5d34fe546c0d8f5a8511b32f847569234ffc8032beb9e7404649a143f54e15224ecb53a3d11b6bb85c3203e573d91fca752 languageName: node linkType: hard -"@babel/helper-annotate-as-pure@npm:^7.18.6, @babel/helper-annotate-as-pure@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-annotate-as-pure@npm:7.27.1" +"@babel/helper-annotate-as-pure@npm:^7.18.6, @babel/helper-annotate-as-pure@npm:^7.27.1, @babel/helper-annotate-as-pure@npm:^7.27.3": + version: 7.27.3 + resolution: "@babel/helper-annotate-as-pure@npm:7.27.3" dependencies: - "@babel/types": "npm:^7.27.1" - checksum: 10c0/fc4751b59c8f5417e1acb0455d6ffce53fa5e79b3aca690299fbbf73b1b65bfaef3d4a18abceb190024c5836bb6cfbc3711e83888648df93df54e18152a1196c + "@babel/types": "npm:^7.27.3" + checksum: 10c0/94996ce0a05b7229f956033e6dcd69393db2b0886d0db6aff41e704390402b8cdcca11f61449cb4f86cfd9e61b5ad3a73e4fa661eeed7846b125bd1c33dbc633 languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2": +"@babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2": version: 7.27.2 resolution: "@babel/helper-compilation-targets@npm:7.27.2" dependencies: @@ -1421,58 +1434,65 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0, @babel/helper-create-class-features-plugin@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-create-class-features-plugin@npm:7.27.1" +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0, @babel/helper-create-class-features-plugin@npm:^7.27.1, @babel/helper-create-class-features-plugin@npm:^7.28.3, @babel/helper-create-class-features-plugin@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/helper-create-class-features-plugin@npm:7.28.5" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.1" - "@babel/helper-member-expression-to-functions": "npm:^7.27.1" + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-member-expression-to-functions": "npm:^7.28.5" "@babel/helper-optimise-call-expression": "npm:^7.27.1" "@babel/helper-replace-supers": "npm:^7.27.1" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.5" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/4ee199671d6b9bdd4988aa2eea4bdced9a73abfc831d81b00c7634f49a8fc271b3ceda01c067af58018eb720c6151322015d463abea7072a368ee13f35adbb4c + checksum: 10c0/786a6514efcf4514aaad85beed419b9184d059f4c9a9a95108f320142764999827252a851f7071de19f29424d369616573ecbaa347f1ce23fb12fc6827d9ff56 languageName: node linkType: hard "@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.27.1" + version: 7.28.5 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.28.5" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.1" - regexpu-core: "npm:^6.2.0" + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + regexpu-core: "npm:^6.3.1" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/591fe8bd3bb39679cc49588889b83bd628d8c4b99c55bafa81e80b1e605a348b64da955e3fd891c4ba3f36fd015367ba2eadea22af6a7de1610fbb5bcc2d3df0 + checksum: 10c0/7af3d604cadecdb2b0d2cedd696507f02a53a58be0523281c2d6766211443b55161dde1e6c0d96ab16ddfd82a2607a2f792390caa24797e9733631f8aa86859f languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.6.3, @babel/helper-define-polyfill-provider@npm:^0.6.4": - version: 0.6.4 - resolution: "@babel/helper-define-polyfill-provider@npm:0.6.4" +"@babel/helper-define-polyfill-provider@npm:^0.6.5": + version: 0.6.5 + resolution: "@babel/helper-define-polyfill-provider@npm:0.6.5" dependencies: - "@babel/helper-compilation-targets": "npm:^7.22.6" - "@babel/helper-plugin-utils": "npm:^7.22.5" - debug: "npm:^4.1.1" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-plugin-utils": "npm:^7.27.1" + debug: "npm:^4.4.1" lodash.debounce: "npm:^4.0.8" - resolve: "npm:^1.14.2" + resolve: "npm:^1.22.10" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10c0/b74f2b46e233a178618d19432bdae16e0137d0a603497ee901155e083c4a61f26fe01d79fb95d5f4c22131ade9d958d8f587088d412cca1302633587f070919d + checksum: 10c0/4886a068d9ca1e70af395340656a9dda33c50502c67eed39ff6451785f370bdfc6e57095b90cb92678adcd4a111ca60909af53d3a741120719c5604346ae409e languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-member-expression-to-functions@npm:7.27.1" +"@babel/helper-globals@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/helper-globals@npm:7.28.0" + checksum: 10c0/5a0cd0c0e8c764b5f27f2095e4243e8af6fa145daea2b41b53c0c1414fe6ff139e3640f4e2207ae2b3d2153a1abd346f901c26c290ee7cb3881dd922d4ee9232 + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.27.1, @babel/helper-member-expression-to-functions@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/helper-member-expression-to-functions@npm:7.28.5" dependencies: - "@babel/traverse": "npm:^7.27.1" - "@babel/types": "npm:^7.27.1" - checksum: 10c0/5762ad009b6a3d8b0e6e79ff6011b3b8fdda0fefad56cfa8bfbe6aa02d5a8a8a9680a45748fe3ac47e735a03d2d88c0a676e3f9f59f20ae9fadcc8d51ccd5a53 + "@babel/traverse": "npm:^7.28.5" + "@babel/types": "npm:^7.28.5" + checksum: 10c0/4e6e05fbf4dffd0bc3e55e28fcaab008850be6de5a7013994ce874ec2beb90619cda4744b11607a60f8aae0227694502908add6188ceb1b5223596e765b44814 languageName: node linkType: hard @@ -1486,16 +1506,16 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-module-transforms@npm:7.27.1" +"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/helper-module-transforms@npm:7.28.3" dependencies: "@babel/helper-module-imports": "npm:^7.27.1" "@babel/helper-validator-identifier": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.3" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/196ab29635fe6eb5ba6ead2972d41b1c0d40f400f99bd8fc109cef21440de24c26c972fabf932585e618694d590379ab8d22def8da65a54459d38ec46112ead7 + checksum: 10c0/549be62515a6d50cd4cfefcab1b005c47f89bd9135a22d602ee6a5e3a01f27571868ada10b75b033569f24dc4a2bb8d04bfa05ee75c16da7ade2d0db1437fcdb languageName: node linkType: hard @@ -1508,7 +1528,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0": version: 7.27.1 resolution: "@babel/helper-plugin-utils@npm:7.27.1" checksum: 10c0/94cf22c81a0c11a09b197b41ab488d416ff62254ce13c57e62912c85700dc2e99e555225787a4099ff6bae7a1812d622c80fbaeda824b79baa10a6c5ac4cf69b @@ -1558,10 +1578,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.22.20, @babel/helper-validator-identifier@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-validator-identifier@npm:7.27.1" - checksum: 10c0/c558f11c4871d526498e49d07a84752d1800bf72ac0d3dad100309a2eaba24efbf56ea59af5137ff15e3a00280ebe588560534b0e894a4750f8b1411d8f78b84 +"@babel/helper-validator-identifier@npm:^7.22.20, @babel/helper-validator-identifier@npm:^7.27.1, @babel/helper-validator-identifier@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/helper-validator-identifier@npm:7.28.5" + checksum: 10c0/42aaebed91f739a41f3d80b72752d1f95fd7c72394e8e4bd7cdd88817e0774d80a432451bcba17c2c642c257c483bf1d409dd4548883429ea9493a3bc4ab0847 languageName: node linkType: hard @@ -1573,46 +1593,46 @@ __metadata: linkType: hard "@babel/helper-wrap-function@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-wrap-function@npm:7.27.1" + version: 7.28.3 + resolution: "@babel/helper-wrap-function@npm:7.28.3" dependencies: - "@babel/template": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" - "@babel/types": "npm:^7.27.1" - checksum: 10c0/c472f75c0951bc657ab0a117538c7c116566ae7579ed47ac3f572c42dc78bd6f1e18f52ebe80d38300c991c3fcaa06979e2f8864ee919369dabd59072288de30 + "@babel/template": "npm:^7.27.2" + "@babel/traverse": "npm:^7.28.3" + "@babel/types": "npm:^7.28.2" + checksum: 10c0/aecb8a457efd893dc3c6378ab9221d06197573fb2fe64afabe7923e7732607d59b07f4c5603909877d69bea3ee87025f4b1d8e4f0403ae0a07b14e9ce0bf355a languageName: node linkType: hard -"@babel/helpers@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helpers@npm:7.27.1" +"@babel/helpers@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/helpers@npm:7.28.4" dependencies: - "@babel/template": "npm:^7.27.1" - "@babel/types": "npm:^7.27.1" - checksum: 10c0/e078257b9342dae2c041ac050276c5a28701434ad09478e6dc6976abd99f721a5a92e4bebddcbca6b1c3a7e8acace56a946340c701aad5e7507d2c87446459ba + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.28.4" + checksum: 10c0/aaa5fb8098926dfed5f223adf2c5e4c7fbba4b911b73dfec2d7d3083f8ba694d201a206db673da2d9b3ae8c01793e795767654558c450c8c14b4c2175b4fcb44 languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.16.8, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.27.1, @babel/parser@npm:^7.27.2": - version: 7.27.2 - resolution: "@babel/parser@npm:7.27.2" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.16.8, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/parser@npm:7.28.5" dependencies: - "@babel/types": "npm:^7.27.1" + "@babel/types": "npm:^7.28.5" bin: parser: ./bin/babel-parser.js - checksum: 10c0/3c06692768885c2f58207fc8c2cbdb4a44df46b7d93135a083f6eaa49310f7ced490ce76043a2a7606cdcc13f27e3d835e141b692f2f6337a2e7f43c1dbb04b4 + checksum: 10c0/5bbe48bf2c79594ac02b490a41ffde7ef5aa22a9a88ad6bcc78432a6ba8a9d638d531d868bd1f104633f1f6bba9905746e15185b8276a3756c42b765d131b1ef languageName: node linkType: hard -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.27.1" +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.28.5" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.5" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/7dfffa978ae1cd179641a7c4b4ad688c6828c2c58ec96b118c2fb10bc3715223de6b88bff1ebff67056bb5fccc568ae773e3b83c592a1b843423319f80c99ebd + checksum: 10c0/844b7c7e9eec6d858262b2f3d5af75d3a6bbd9d3ecc740d95271fbdd84985731674536f5d8ac98f2dc0e8872698b516e406636e4d0cb04b50afe471172095a53 languageName: node linkType: hard @@ -1651,15 +1671,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.27.1" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.28.3" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.3" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/b94e6c3fc019e988b1499490829c327a1067b4ddea8ad402f6d0554793c9124148c2125338c723661b6dff040951abc1f092afbf3f2d234319cd580b68e52445 + checksum: 10c0/3cdc27c4e08a632a58e62c6017369401976edf1cd9ae73fd9f0d6770ddd9accf40b494db15b66bab8db2a8d5dc5bab5ca8c65b19b81fdca955cd8cbbe24daadb languageName: node linkType: hard @@ -1676,15 +1696,15 @@ __metadata: linkType: hard "@babel/plugin-proposal-decorators@npm:^7.16.4": - version: 7.27.1 - resolution: "@babel/plugin-proposal-decorators@npm:7.27.1" + version: 7.28.0 + resolution: "@babel/plugin-proposal-decorators@npm:7.28.0" dependencies: "@babel/helper-create-class-features-plugin": "npm:^7.27.1" "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/plugin-syntax-decorators": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/3af0db6b2468907bcaf62246b2cfd3616ba9239ea1cd26036ec6baff1bc095fe4964853b1d29a79944d36e6e3d331cd130d05b0c41c835266daf7bb9d8e8f87c + checksum: 10c0/e399f3adc4278560d15fd80691c7a9b644f46e50fa90746f9f3b9ac02cf955ef2b6677277d97c97a4bd6d6a777821fdedf1318923632a439cba1c05e8e59246c languageName: node linkType: hard @@ -2003,16 +2023,16 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.27.1" +"@babel/plugin-transform-async-generator-functions@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.28.0" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/helper-remap-async-to-generator": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/772e449c69ee42a466443acefb07083bd89efb1a1d95679a4dc99ea3be9d8a3c43a2b74d2da95d7c818e9dd9e0b72bfa7c03217a1feaf108f21b7e542f0943c0 + checksum: 10c0/739d577e649d7d7b9845dc309e132964327ab3eaea43ad04d04a7dcb977c63f9aa9a423d1ca39baf10939128d02f52e6fda39c834fb9f1753785b1497e72c4dc languageName: node linkType: hard @@ -2040,14 +2060,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-block-scoping@npm:7.27.1" +"@babel/plugin-transform-block-scoping@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-block-scoping@npm:7.28.5" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/d3f357beeb92fbdf3045aea2ba286a60dafc9c2d2a9f89065bb3c4bea9cc48934ee6689df3db0439d9ec518eda5e684f3156cab792b7c38c33ece2f8204ddee8 + checksum: 10c0/6b098887b375c23813ccee7a00179501fc5f709b4ee5a4b2a5c5c9ef3b44cee49e240214b1a9b4ad2bd1911fab3335eac2f0a3c5f014938a1b61bec84cec4845 languageName: node linkType: hard @@ -2063,31 +2083,31 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-class-static-block@npm:7.27.1" +"@babel/plugin-transform-class-static-block@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/plugin-transform-class-static-block@npm:7.28.3" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.28.3" "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.12.0 - checksum: 10c0/396997dd81fc1cf242b921e337d25089d6b9dc3596e81322ff11a6359326dc44f2f8b82dcc279c2e514cafaf8964dc7ed39e9fab4b8af1308b57387d111f6a20 + checksum: 10c0/8c922a64f6f5b359f7515c89ef0037bad583b4484dfebc1f6bc1cf13462547aaceb19788827c57ec9a2d62495f34c4b471ca636bf61af00fdaea5e9642c82b60 languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-classes@npm:7.27.1" +"@babel/plugin-transform-classes@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/plugin-transform-classes@npm:7.28.4" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.1" - "@babel/helper-compilation-targets": "npm:^7.27.1" + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-globals": "npm:^7.28.0" "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/helper-replace-supers": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" - globals: "npm:^11.1.0" + "@babel/traverse": "npm:^7.28.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/1071f4cb1ed5deb5e6f8d0442f2293a540cac5caa5ab3c25ad0571aadcbf961f61e26d367a67894976165a543e02f3a19e40b63b909afbed6e710801a590635c + checksum: 10c0/76687ed37216ff012c599870dc00183fb716f22e1a02fe9481943664c0e4d0d88c3da347dc3fe290d4728f4d47cd594ffa621d23845e2bb8ab446e586308e066 languageName: node linkType: hard @@ -2103,14 +2123,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-destructuring@npm:7.27.1" +"@babel/plugin-transform-destructuring@npm:^7.28.0, @babel/plugin-transform-destructuring@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-destructuring@npm:7.28.5" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/56afda7a0b205f8d1af727daef4c529fc2e756887408affd39033ae4476e54d586d3d9dc1e72cfb15c74a2a5ca0653ab13dbaa8cbf79fbb2a3a746d0f107cb86 + checksum: 10c0/288207f488412b23bb206c7c01ba143714e2506b72a9ec09e993f28366cc8188d121bde714659b3437984a86d2881d9b1b06de3089d5582823ccf2f3b3eaa2c4 languageName: node linkType: hard @@ -2160,14 +2181,26 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.27.1" +"@babel/plugin-transform-explicit-resource-management@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-explicit-resource-management@npm:7.28.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.28.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3baa706af3112adf2ae0c7ec0dc61b63dd02695eb5582f3c3a2b2d05399c6aa7756f55e7bbbd5412e613a6ba1dd6b6736904074b4d7ebd6b45a1e3f9145e4094 + languageName: node + linkType: hard + +"@babel/plugin-transform-exponentiation-operator@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.28.5" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/953d21e01fed76da8e08fb5094cade7bf8927c1bb79301916bec2db0593b41dbcfbca1024ad5db886b72208a93ada8f57a219525aad048cf15814eeb65cf760d + checksum: 10c0/006566e003c2a8175346cc4b3260fcd9f719b912ceae8a4e930ce02ee3cf0b2841d5c21795ba71790871783d3c0c1c3d22ce441b8819c37975844bfba027d3f7 languageName: node linkType: hard @@ -2241,14 +2274,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-logical-assignment-operators@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.27.1" +"@babel/plugin-transform-logical-assignment-operators@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.28.5" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/5b0abc7c0d09d562bf555c646dce63a30288e5db46fd2ce809a61d064415da6efc3b2b3c59b8e4fe98accd072c89a2f7c3765b400e4bf488651735d314d9feeb + checksum: 10c0/fba4faa96d86fa745b0539bb631deee3f2296f0643c087a50ad0fac2e5f0a787fa885e9bdd90ae3e7832803f3c08e7cd3f1e830e7079dbdc023704923589bb23 languageName: node linkType: hard @@ -2287,17 +2320,17 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.27.1" +"@babel/plugin-transform-modules-systemjs@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.28.5" dependencies: - "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-module-transforms": "npm:^7.28.3" "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.28.5" + "@babel/traverse": "npm:^7.28.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/f16fca62d144d9cbf558e7b5f83e13bb6d0f21fdeff3024b0cecd42ffdec0b4151461da42bd0963512783ece31aafa5ffe03446b4869220ddd095b24d414e2b5 + checksum: 10c0/7e8c0bcff79689702b974f6a0fedb5d0c6eeb5a5e3384deb7028e7cfe92a5242cc80e981e9c1817aad29f2ecc01841753365dd38d877aa0b91737ceec2acfd07 languageName: node linkType: hard @@ -2358,17 +2391,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.27.2": - version: 7.27.2 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.27.2" +"@babel/plugin-transform-object-rest-spread@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.4" dependencies: "@babel/helper-compilation-targets": "npm:^7.27.2" "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/plugin-transform-destructuring": "npm:^7.27.1" - "@babel/plugin-transform-parameters": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.28.0" + "@babel/plugin-transform-parameters": "npm:^7.27.7" + "@babel/traverse": "npm:^7.28.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/5e255b262dd65c8700078d9f6ed87bd45f951a905dda6b3414be28d7b2781b18e6b812e9d71421e61360c9cf51e1e619c1d48348593bb7399496f61f5f221446 + checksum: 10c0/81725c8d6349957899975f3f789b1d4fb050ee8b04468ebfaccd5b59e0bda15cbfdef09aee8b4359f322b6715149d680361f11c1a420c4bdbac095537ecf7a90 languageName: node linkType: hard @@ -2395,26 +2429,26 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.27.1" +"@babel/plugin-transform-optional-chaining@npm:^7.27.1, @babel/plugin-transform-optional-chaining@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.28.5" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/5b18ff5124e503f0a25d6b195be7351a028b3992d6f2a91fb4037e2a2c386400d66bc1df8f6df0a94c708524f318729e81a95c41906e5a7919a06a43e573a525 + checksum: 10c0/adf5f70b1f9eb0dd6ff3d159a714683af3c910775653e667bd9f864c3dc2dc9872aba95f6c1e5f2a9675067241942f4fd0d641147ef4bf2bd8bc15f1fa0f2ed5 languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-parameters@npm:7.27.1" +"@babel/plugin-transform-parameters@npm:^7.27.7": + version: 7.27.7 + resolution: "@babel/plugin-transform-parameters@npm:7.27.7" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/453a9618735eeff5551d4c7f02c250606586fe1dd210ec9f69a4f15629ace180cd944339ebff2b0f11e1a40567d83a229ba1c567620e70b2ebedea576e12196a + checksum: 10c0/f2da3804e047d9f1cfb27be6c014e2c7f6cf5e1e38290d1cb3cb2607859e3d6facb4ee8c8c1e336e9fbb440091a174ce95ce156582d7e8bf9c0e735d11681f0f languageName: node linkType: hard @@ -2454,14 +2488,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-display-name@npm:^7.16.0, @babel/plugin-transform-react-display-name@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-react-display-name@npm:7.27.1" +"@babel/plugin-transform-react-display-name@npm:^7.16.0, @babel/plugin-transform-react-display-name@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-react-display-name@npm:7.28.0" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/6cd474b5fb30a2255027d8fc19975aee1c1da54dd8bc8b79802676096182ca4136302ce65a24fbb277f8fe30f266006bbf327ef6be2846d3681eb57509744125 + checksum: 10c0/f5f86d2ad92be3e962158f344c2e385e23e2dfae7c8c7dc32138fb2cc46f63f5e50386c9f6c6fc16dbf1792c7bb650ad92c18203d0c2c0bd875bc28b0b80ef30 languageName: node linkType: hard @@ -2476,7 +2510,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-self@npm:^7.25.9": +"@babel/plugin-transform-react-jsx-self@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-react-jsx-self@npm:7.27.1" dependencies: @@ -2487,7 +2521,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-source@npm:^7.25.9": +"@babel/plugin-transform-react-jsx-source@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-react-jsx-source@npm:7.27.1" dependencies: @@ -2525,14 +2559,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-regenerator@npm:7.27.1" +"@babel/plugin-transform-regenerator@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/plugin-transform-regenerator@npm:7.28.4" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/42395908899310bb107d9ca31ebd4c302e14c582e3ad3ebfe1498fabafc43155c8f10850265c1e686a2afcf50d1f402cc5c5218fba72e167852607a4d8d6492e + checksum: 10c0/5ad14647ffaac63c920e28df1b580ee2e932586bbdc71f61ec264398f68a5406c71a7f921de397a41b954a69316c5ab90e5d789ffa2bb34c5e6feb3727cfefb8 languageName: node linkType: hard @@ -2560,18 +2594,18 @@ __metadata: linkType: hard "@babel/plugin-transform-runtime@npm:^7.16.4": - version: 7.27.1 - resolution: "@babel/plugin-transform-runtime@npm:7.27.1" + version: 7.28.5 + resolution: "@babel/plugin-transform-runtime@npm:7.28.5" dependencies: "@babel/helper-module-imports": "npm:^7.27.1" "@babel/helper-plugin-utils": "npm:^7.27.1" - babel-plugin-polyfill-corejs2: "npm:^0.4.10" - babel-plugin-polyfill-corejs3: "npm:^0.11.0" - babel-plugin-polyfill-regenerator: "npm:^0.6.1" + babel-plugin-polyfill-corejs2: "npm:^0.4.14" + babel-plugin-polyfill-corejs3: "npm:^0.13.0" + babel-plugin-polyfill-regenerator: "npm:^0.6.5" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/7abbae60a6441ba8546dee3fcbc00b38038304250ba2419adaf0c76267bff43420ff75b7049003a24a829e01d9fde2ac8a422352af6d88aebd31996a83f04c2f + checksum: 10c0/d20901d179a7044327dec7b37dd4fadbc4c1c0dc1cb6a3dd69e67166b43b06c262dd0f2e70aedf1c0dab42044c0c063468d99019ae1c9290312b6b8802c502f9 languageName: node linkType: hard @@ -2631,18 +2665,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-typescript@npm:7.27.1" +"@babel/plugin-transform-typescript@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-typescript@npm:7.28.5" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.1" - "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-create-class-features-plugin": "npm:^7.28.5" "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" "@babel/plugin-syntax-typescript": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/48f1db5de17a0f9fc365ff4fb046010aedc7aad813a7aa42fb73fcdab6442f9e700dde2cc0481086e01b0dae662ae4d3e965a52cde154f0f146d243a8ac68e93 + checksum: 10c0/09e574ba5462e56452b4ceecae65e53c8e697a2d3559ce5d210bed10ac28a18aa69377e7550c30520eb29b40c417ee61997d5d58112657f22983244b78915a7c languageName: node linkType: hard @@ -2694,61 +2728,62 @@ __metadata: linkType: hard "@babel/preset-env@npm:^7.16.4": - version: 7.27.2 - resolution: "@babel/preset-env@npm:7.27.2" + version: 7.28.5 + resolution: "@babel/preset-env@npm:7.28.5" dependencies: - "@babel/compat-data": "npm:^7.27.2" + "@babel/compat-data": "npm:^7.28.5" "@babel/helper-compilation-targets": "npm:^7.27.2" "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/helper-validator-option": "npm:^7.27.1" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.27.1" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.28.5" "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.27.1" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.27.1" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.27.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.27.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.28.3" "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-import-assertions": "npm:^7.27.1" "@babel/plugin-syntax-import-attributes": "npm:^7.27.1" "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" "@babel/plugin-transform-arrow-functions": "npm:^7.27.1" - "@babel/plugin-transform-async-generator-functions": "npm:^7.27.1" + "@babel/plugin-transform-async-generator-functions": "npm:^7.28.0" "@babel/plugin-transform-async-to-generator": "npm:^7.27.1" "@babel/plugin-transform-block-scoped-functions": "npm:^7.27.1" - "@babel/plugin-transform-block-scoping": "npm:^7.27.1" + "@babel/plugin-transform-block-scoping": "npm:^7.28.5" "@babel/plugin-transform-class-properties": "npm:^7.27.1" - "@babel/plugin-transform-class-static-block": "npm:^7.27.1" - "@babel/plugin-transform-classes": "npm:^7.27.1" + "@babel/plugin-transform-class-static-block": "npm:^7.28.3" + "@babel/plugin-transform-classes": "npm:^7.28.4" "@babel/plugin-transform-computed-properties": "npm:^7.27.1" - "@babel/plugin-transform-destructuring": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.28.5" "@babel/plugin-transform-dotall-regex": "npm:^7.27.1" "@babel/plugin-transform-duplicate-keys": "npm:^7.27.1" "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.27.1" "@babel/plugin-transform-dynamic-import": "npm:^7.27.1" - "@babel/plugin-transform-exponentiation-operator": "npm:^7.27.1" + "@babel/plugin-transform-explicit-resource-management": "npm:^7.28.0" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.28.5" "@babel/plugin-transform-export-namespace-from": "npm:^7.27.1" "@babel/plugin-transform-for-of": "npm:^7.27.1" "@babel/plugin-transform-function-name": "npm:^7.27.1" "@babel/plugin-transform-json-strings": "npm:^7.27.1" "@babel/plugin-transform-literals": "npm:^7.27.1" - "@babel/plugin-transform-logical-assignment-operators": "npm:^7.27.1" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.28.5" "@babel/plugin-transform-member-expression-literals": "npm:^7.27.1" "@babel/plugin-transform-modules-amd": "npm:^7.27.1" "@babel/plugin-transform-modules-commonjs": "npm:^7.27.1" - "@babel/plugin-transform-modules-systemjs": "npm:^7.27.1" + "@babel/plugin-transform-modules-systemjs": "npm:^7.28.5" "@babel/plugin-transform-modules-umd": "npm:^7.27.1" "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.27.1" "@babel/plugin-transform-new-target": "npm:^7.27.1" "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.27.1" "@babel/plugin-transform-numeric-separator": "npm:^7.27.1" - "@babel/plugin-transform-object-rest-spread": "npm:^7.27.2" + "@babel/plugin-transform-object-rest-spread": "npm:^7.28.4" "@babel/plugin-transform-object-super": "npm:^7.27.1" "@babel/plugin-transform-optional-catch-binding": "npm:^7.27.1" - "@babel/plugin-transform-optional-chaining": "npm:^7.27.1" - "@babel/plugin-transform-parameters": "npm:^7.27.1" + "@babel/plugin-transform-optional-chaining": "npm:^7.28.5" + "@babel/plugin-transform-parameters": "npm:^7.27.7" "@babel/plugin-transform-private-methods": "npm:^7.27.1" "@babel/plugin-transform-private-property-in-object": "npm:^7.27.1" "@babel/plugin-transform-property-literals": "npm:^7.27.1" - "@babel/plugin-transform-regenerator": "npm:^7.27.1" + "@babel/plugin-transform-regenerator": "npm:^7.28.4" "@babel/plugin-transform-regexp-modifiers": "npm:^7.27.1" "@babel/plugin-transform-reserved-words": "npm:^7.27.1" "@babel/plugin-transform-shorthand-properties": "npm:^7.27.1" @@ -2761,14 +2796,14 @@ __metadata: "@babel/plugin-transform-unicode-regex": "npm:^7.27.1" "@babel/plugin-transform-unicode-sets-regex": "npm:^7.27.1" "@babel/preset-modules": "npm:0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2: "npm:^0.4.10" - babel-plugin-polyfill-corejs3: "npm:^0.11.0" - babel-plugin-polyfill-regenerator: "npm:^0.6.1" - core-js-compat: "npm:^3.40.0" + babel-plugin-polyfill-corejs2: "npm:^0.4.14" + babel-plugin-polyfill-corejs3: "npm:^0.13.0" + babel-plugin-polyfill-regenerator: "npm:^0.6.5" + core-js-compat: "npm:^3.43.0" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/fd7ec310832a9ff26ed8d56bc0832cdbdb3a188e022050b74790796650649fb8373568af05b320b58b3ff922507979bad50ff95a4d504ab0081134480103504e + checksum: 10c0/d1b730158de290f1c54ed7db0f4fed3f82db5f868ab0a4cb3fc2ea76ed683b986ae136f6e7eb0b44b91bc9a99039a2559851656b4fd50193af1a815a3e32e524 languageName: node linkType: hard @@ -2786,60 +2821,53 @@ __metadata: linkType: hard "@babel/preset-react@npm:^7.16.0": - version: 7.27.1 - resolution: "@babel/preset-react@npm:7.27.1" + version: 7.28.5 + resolution: "@babel/preset-react@npm:7.28.5" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/helper-validator-option": "npm:^7.27.1" - "@babel/plugin-transform-react-display-name": "npm:^7.27.1" + "@babel/plugin-transform-react-display-name": "npm:^7.28.0" "@babel/plugin-transform-react-jsx": "npm:^7.27.1" "@babel/plugin-transform-react-jsx-development": "npm:^7.27.1" "@babel/plugin-transform-react-pure-annotations": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/a80b02ef08b026cb9830d6512d08c7cd378eef4c0631dacba4aa1106240d9bb76af6373463f0255f4bbdbfcce40375a61e92735375906ba5871629b0c314bc45 + checksum: 10c0/0d785e708ff301f4102bd4738b77e550e32f981e54dfd3de1191b4d68306bbb934d2d465fc78a6bc22fff0a6b3ce3195a53984f52755c4349e7264c7e01e8c7c languageName: node linkType: hard "@babel/preset-typescript@npm:^7.16.0": - version: 7.27.1 - resolution: "@babel/preset-typescript@npm:7.27.1" + version: 7.28.5 + resolution: "@babel/preset-typescript@npm:7.28.5" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/helper-validator-option": "npm:^7.27.1" "@babel/plugin-syntax-jsx": "npm:^7.27.1" "@babel/plugin-transform-modules-commonjs": "npm:^7.27.1" - "@babel/plugin-transform-typescript": "npm:^7.27.1" + "@babel/plugin-transform-typescript": "npm:^7.28.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/cba6ca793d915f8aff9fe2f13b0dfbf5fd3f2e9a17f17478ec9878e9af0d206dcfe93154b9fd353727f16c1dca7c7a3ceb4943f8d28b216235f106bc0fbbcaa3 + checksum: 10c0/b3d55548854c105085dd80f638147aa8295bc186d70492289242d6c857cb03a6c61ec15186440ea10ed4a71cdde7d495f5eb3feda46273f36b0ac926e8409629 languageName: node linkType: hard "@babel/runtime-corejs3@npm:^7.24.4": - version: 7.27.1 - resolution: "@babel/runtime-corejs3@npm:7.27.1" + version: 7.28.4 + resolution: "@babel/runtime-corejs3@npm:7.28.4" dependencies: - core-js-pure: "npm:^3.30.2" - checksum: 10c0/81b46b6c73b590842abca14024a6b7c8751eaf0b519794f129b7c971043e13967e4d370933dbd7d0fdc78872ae45971b36013e0fa13c6d5c0130bfe971be0ac1 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.17.9, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.25.0, @babel/runtime@npm:^7.25.7, @babel/runtime@npm:^7.26.0, @babel/runtime@npm:^7.27.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.7": - version: 7.27.1 - resolution: "@babel/runtime@npm:7.27.1" - checksum: 10c0/530a7332f86ac5a7442250456823a930906911d895c0b743bf1852efc88a20a016ed4cd26d442d0ca40ae6d5448111e02a08dd638a4f1064b47d080e2875dc05 + core-js-pure: "npm:^3.43.0" + checksum: 10c0/0a7fe2d4e36d345acf090dd685b5c6ed55af3ead69a84e2cfca56631815dd757f3a362031b376cc746f63f0fd856e7a5280807833f7fa9a5b7f1febd97f8c0da languageName: node linkType: hard -"@babel/runtime@npm:^7.27.6": - version: 7.27.6 - resolution: "@babel/runtime@npm:7.27.6" - checksum: 10c0/89726be83f356f511dcdb74d3ea4d873a5f0cf0017d4530cb53aa27380c01ca102d573eff8b8b77815e624b1f8c24e7f0311834ad4fb632c90a770fda00bd4c8 +"@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.17.9, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.25.0, @babel/runtime@npm:^7.25.7, @babel/runtime@npm:^7.26.0, @babel/runtime@npm:^7.27.6, @babel/runtime@npm:^7.28.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.7": + version: 7.28.4 + resolution: "@babel/runtime@npm:7.28.4" + checksum: 10c0/792ce7af9750fb9b93879cc9d1db175701c4689da890e6ced242ea0207c9da411ccf16dc04e689cc01158b28d7898c40d75598f4559109f761c12ce01e959bf7 languageName: node linkType: hard -"@babel/template@npm:^7.27.1, @babel/template@npm:^7.3.3": +"@babel/template@npm:^7.27.1, @babel/template@npm:^7.27.2, @babel/template@npm:^7.3.3": version: 7.27.2 resolution: "@babel/template@npm:7.27.2" dependencies: @@ -2850,28 +2878,45 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/traverse@npm:7.27.1" +"@babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.0, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.4, @babel/traverse@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/traverse@npm:7.28.5" dependencies: "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.27.1" - "@babel/parser": "npm:^7.27.1" - "@babel/template": "npm:^7.27.1" - "@babel/types": "npm:^7.27.1" + "@babel/generator": "npm:^7.28.5" + "@babel/helper-globals": "npm:^7.28.0" + "@babel/parser": "npm:^7.28.5" + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.28.5" debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: 10c0/d912110037b03b1d70a2436cfd51316d930366a5f54252da2bced1ba38642f644f848240a951e5caf12f1ef6c40d3d96baa92ea6e84800f2e891c15e97b25d50 + checksum: 10c0/f6c4a595993ae2b73f2d4cd9c062f2e232174d293edd4abe1d715bd6281da8d99e47c65857e8d0917d9384c65972f4acdebc6749a7c40a8fcc38b3c7fb3e706f languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.16.8, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.27.1, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": - version: 7.27.1 - resolution: "@babel/types@npm:7.27.1" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.16.8, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4, @babel/types@npm:^7.28.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": + version: 7.28.5 + resolution: "@babel/types@npm:7.28.5" dependencies: "@babel/helper-string-parser": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.27.1" - checksum: 10c0/ed736f14db2fdf0d36c539c8e06b6bb5e8f9649a12b5c0e1c516fed827f27ef35085abe08bf4d1302a4e20c9a254e762eed453bce659786d4a6e01ba26a91377 + "@babel/helper-validator-identifier": "npm:^7.28.5" + checksum: 10c0/a5a483d2100befbf125793640dec26b90b95fd233a94c19573325898a5ce1e52cdfa96e495c7dcc31b5eca5b66ce3e6d4a0f5a4a62daec271455959f208ab08a + languageName: node + linkType: hard + +"@base-org/account@npm:2.4.0": + version: 2.4.0 + resolution: "@base-org/account@npm:2.4.0" + dependencies: + "@coinbase/cdp-sdk": "npm:^1.0.0" + "@noble/hashes": "npm:1.4.0" + clsx: "npm:1.2.1" + eventemitter3: "npm:5.0.1" + idb-keyval: "npm:6.2.1" + ox: "npm:0.6.9" + preact: "npm:10.24.2" + viem: "npm:^2.31.7" + zustand: "npm:5.0.3" + checksum: 10c0/570a3134b81389f13a24c64e9b30b8e786dd34dfcfd59d56717352dfd892d484d49f7c57120d936f14f2e438ea11a2af543d985c90ceb3934c0e5b3deebab1f7 languageName: node linkType: hard @@ -2882,6 +2927,13 @@ __metadata: languageName: node linkType: hard +"@borewit/text-codec@npm:^0.1.0": + version: 0.1.1 + resolution: "@borewit/text-codec@npm:0.1.1" + checksum: 10c0/c92606b355111053f9db47d485c8679cc09a5be0eb2738aad5b922d3744465f2fce47144ffb27d5106fa431d1d2e5a2e0140d0a22351dccf49693098702c0274 + languageName: node + linkType: hard + "@bytecodealliance/preview2-shim@npm:0.17.0": version: 0.17.0 resolution: "@bytecodealliance/preview2-shim@npm:0.17.0" @@ -2905,9 +2957,9 @@ __metadata: languageName: node linkType: hard -"@changesets/apply-release-plan@npm:^7.0.12": - version: 7.0.12 - resolution: "@changesets/apply-release-plan@npm:7.0.12" +"@changesets/apply-release-plan@npm:^7.0.13": + version: 7.0.13 + resolution: "@changesets/apply-release-plan@npm:7.0.13" dependencies: "@changesets/config": "npm:^3.1.1" "@changesets/get-version-range-type": "npm:^0.4.0" @@ -2922,7 +2974,7 @@ __metadata: prettier: "npm:^2.7.1" resolve-from: "npm:^5.0.0" semver: "npm:^7.5.3" - checksum: 10c0/3211e6e75fc50275647fa023ca2187a23b6b2406788f7ef39b38c3486ccf1d068a78b026ec488e46a2e3d135084ba8c152323e8df314cdd6ffbe188bf73bd238 + checksum: 10c0/940f13bc09816f534f912559471af77c29eb31fcfa10a255bdc772573def9fb3ee24e3db710ac1ebbd70a90b03b667d63e535a13c580a150f3730c3798827a01 languageName: node linkType: hard @@ -2950,10 +3002,10 @@ __metadata: linkType: hard "@changesets/cli@npm:^2.29.6": - version: 2.29.6 - resolution: "@changesets/cli@npm:2.29.6" + version: 2.29.7 + resolution: "@changesets/cli@npm:2.29.7" dependencies: - "@changesets/apply-release-plan": "npm:^7.0.12" + "@changesets/apply-release-plan": "npm:^7.0.13" "@changesets/assemble-release-plan": "npm:^6.0.9" "@changesets/changelog-git": "npm:^0.2.1" "@changesets/config": "npm:^3.1.1" @@ -2983,7 +3035,7 @@ __metadata: term-size: "npm:^2.1.0" bin: changeset: bin.js - checksum: 10c0/6e09201df1bc83f45526f7ab3d77b1171c2c74e89639993367acf183b9d0809d02845b9d900f34a5febcd1a963cdad7246e2b9c444da2440760d297aad3aff32 + checksum: 10c0/a868fd39ace25993714f8b80ebb08529e0aba5446266e18edee9e5fd34d529ef6f8fcb7f53fc5831ab99c5721762fe06198aade304799792f1f79b9d37600d04 languageName: node linkType: hard @@ -3139,27 +3191,39 @@ __metadata: languageName: node linkType: hard -"@coinbase/wallet-sdk@npm:4.3.0": - version: 4.3.0 - resolution: "@coinbase/wallet-sdk@npm:4.3.0" +"@coinbase/cdp-sdk@npm:^1.0.0": + version: 1.38.4 + resolution: "@coinbase/cdp-sdk@npm:1.38.4" dependencies: - "@noble/hashes": "npm:^1.4.0" - clsx: "npm:^1.2.1" - eventemitter3: "npm:^5.0.1" - preact: "npm:^10.24.2" - checksum: 10c0/39e38ab6f84e34d8a61b9baf3fb69ad20b497d6844fe3f0cb1496e89bbb990066a6e8d68446f90054394eee840f3a452330ffbb015adabc34400f36a3ef03364 + "@solana-program/system": "npm:^0.8.0" + "@solana-program/token": "npm:^0.6.0" + "@solana/kit": "npm:^3.0.3" + "@solana/web3.js": "npm:^1.98.1" + abitype: "npm:1.0.6" + axios: "npm:^1.12.2" + axios-retry: "npm:^4.5.0" + jose: "npm:^6.0.8" + md5: "npm:^2.3.0" + uncrypto: "npm:^0.1.3" + viem: "npm:^2.21.26" + zod: "npm:^3.24.4" + checksum: 10c0/876f9bdcd79eb1ac177a5c5c9508db3e15668f2c9a747fac28b20c34ce03ed856287a5d016c46d40fd91553eccd22d7cf00349912401abc0d35e095a5e01821c languageName: node linkType: hard -"@coinbase/wallet-sdk@npm:4.3.3": - version: 4.3.3 - resolution: "@coinbase/wallet-sdk@npm:4.3.3" +"@coinbase/wallet-sdk@npm:4.3.6": + version: 4.3.6 + resolution: "@coinbase/wallet-sdk@npm:4.3.6" dependencies: - "@noble/hashes": "npm:^1.4.0" - clsx: "npm:^1.2.1" - eventemitter3: "npm:^5.0.1" - preact: "npm:^10.24.2" - checksum: 10c0/528cbc62f42c151c45c61c4c73e120d6b98d88f5858edbc8cf50f3d96030103b5b0ae53415e2aa80d455a1be660d1f0dc73672aa64636359bd55aa25b0faea60 + "@noble/hashes": "npm:1.4.0" + clsx: "npm:1.2.1" + eventemitter3: "npm:5.0.1" + idb-keyval: "npm:6.2.1" + ox: "npm:0.6.9" + preact: "npm:10.24.2" + viem: "npm:^2.27.2" + zustand: "npm:5.0.3" + checksum: 10c0/ad5c7b124217ef191950c8c485d709d806f4a17eb039b1b8f325510cbc751b48c1e68acf8b44c3b24bb35682e44a6e3140eaba2d623166bf5a4e9dd4c4aef2e1 languageName: node linkType: hard @@ -3179,86 +3243,86 @@ __metadata: languageName: node linkType: hard -"@csstools/color-helpers@npm:^5.0.2": - version: 5.0.2 - resolution: "@csstools/color-helpers@npm:5.0.2" - checksum: 10c0/bebaddb28b9eb58b0449edd5d0c0318fa88f3cb079602ee27e88c9118070d666dcc4e09a5aa936aba2fde6ba419922ade07b7b506af97dd7051abd08dfb2959b +"@csstools/color-helpers@npm:^5.1.0": + version: 5.1.0 + resolution: "@csstools/color-helpers@npm:5.1.0" + checksum: 10c0/b7f99d2e455cf1c9b41a67a5327d5d02888cd5c8802a68b1887dffef537d9d4bc66b3c10c1e62b40bbed638b6c1d60b85a232f904ed7b39809c4029cb36567db languageName: node linkType: hard -"@csstools/css-calc@npm:^2.1.3": - version: 2.1.3 - resolution: "@csstools/css-calc@npm:2.1.3" +"@csstools/css-calc@npm:^2.1.3, @csstools/css-calc@npm:^2.1.4": + version: 2.1.4 + resolution: "@csstools/css-calc@npm:2.1.4" peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.4 - "@csstools/css-tokenizer": ^3.0.3 - checksum: 10c0/85f5b4f96d60f395d5f0108056b0ddee037b22d6deba448d74324b50f1c554de284f84715ebfac7b2888b78e09d20d02a7cd213ee7bdaa71011ea9b4eee3a251 + "@csstools/css-parser-algorithms": ^3.0.5 + "@csstools/css-tokenizer": ^3.0.4 + checksum: 10c0/42ce5793e55ec4d772083808a11e9fb2dfe36db3ec168713069a276b4c3882205b3507c4680224c28a5d35fe0bc2d308c77f8f2c39c7c09aad8747708eb8ddd8 languageName: node linkType: hard "@csstools/css-color-parser@npm:^3.0.9": - version: 3.0.9 - resolution: "@csstools/css-color-parser@npm:3.0.9" + version: 3.1.0 + resolution: "@csstools/css-color-parser@npm:3.1.0" dependencies: - "@csstools/color-helpers": "npm:^5.0.2" - "@csstools/css-calc": "npm:^2.1.3" + "@csstools/color-helpers": "npm:^5.1.0" + "@csstools/css-calc": "npm:^2.1.4" peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.4 - "@csstools/css-tokenizer": ^3.0.3 - checksum: 10c0/acc026a6bd6d8c4c641fa5f9b4d77cd5dfa54c57c3278ae52329d96b5837723428dcb93c34db4062bbea2f45a98451119df06eaf39fd196aaf6368c59d799f20 + "@csstools/css-parser-algorithms": ^3.0.5 + "@csstools/css-tokenizer": ^3.0.4 + checksum: 10c0/0e0c670ad54ec8ec4d9b07568b80defd83b9482191f5e8ca84ab546b7be6db5d7cc2ba7ac9fae54488b129a4be235d6183d3aab4416fec5e89351f73af4222c5 languageName: node linkType: hard "@csstools/css-parser-algorithms@npm:^3.0.4": - version: 3.0.4 - resolution: "@csstools/css-parser-algorithms@npm:3.0.4" + version: 3.0.5 + resolution: "@csstools/css-parser-algorithms@npm:3.0.5" peerDependencies: - "@csstools/css-tokenizer": ^3.0.3 - checksum: 10c0/d411f07765e14eede17bccc6bd4f90ff303694df09aabfede3fd104b2dfacfd4fe3697cd25ddad14684c850328f3f9420ebfa9f78380892492974db24ae47dbd + "@csstools/css-tokenizer": ^3.0.4 + checksum: 10c0/d9a1c888bd43849ae3437ca39251d5c95d2c8fd6b5ccdb7c45491dfd2c1cbdc3075645e80901d120e4d2c1993db9a5b2d83793b779dbbabcfb132adb142eb7f7 languageName: node linkType: hard "@csstools/css-tokenizer@npm:^3.0.3": - version: 3.0.3 - resolution: "@csstools/css-tokenizer@npm:3.0.3" - checksum: 10c0/c31bf410e1244b942e71798e37c54639d040cb59e0121b21712b40015fced2b0fb1ffe588434c5f8923c9cd0017cfc1c1c8f3921abc94c96edf471aac2eba5e5 + version: 3.0.4 + resolution: "@csstools/css-tokenizer@npm:3.0.4" + checksum: 10c0/3b589f8e9942075a642213b389bab75a2d50d05d203727fcdac6827648a5572674caff07907eff3f9a2389d86a4ee47308fafe4f8588f4a77b7167c588d2559f languageName: node linkType: hard -"@ecies/ciphers@npm:^0.2.2": - version: 0.2.3 - resolution: "@ecies/ciphers@npm:0.2.3" +"@ecies/ciphers@npm:^0.2.4": + version: 0.2.4 + resolution: "@ecies/ciphers@npm:0.2.4" peerDependencies: "@noble/ciphers": ^1.0.0 - checksum: 10c0/a01bf75b1db89d34688d2784531bf4f8734e50f953ed8921383c04416a7e7eb8b5fb3ba6defddf55b46b0fb6722cec5c6462bdccbb64d31ef00468e9733a208e + checksum: 10c0/fc9a1be681b3509e6a828269d8c08dfe156276b5378a1f5fe85cd389fe43c46d6efad0438219b08a99951e918c32a9e07ce7b6d72adfd71b42dcae92a613286b languageName: node linkType: hard -"@emnapi/core@npm:^1.4.0, @emnapi/core@npm:^1.4.3": - version: 1.4.3 - resolution: "@emnapi/core@npm:1.4.3" +"@emnapi/core@npm:^1.4.3": + version: 1.7.0 + resolution: "@emnapi/core@npm:1.7.0" dependencies: - "@emnapi/wasi-threads": "npm:1.0.2" + "@emnapi/wasi-threads": "npm:1.1.0" tslib: "npm:^2.4.0" - checksum: 10c0/e30101d16d37ef3283538a35cad60e22095aff2403fb9226a35330b932eb6740b81364d525537a94eb4fb51355e48ae9b10d779c0dd1cdcd55d71461fe4b45c7 + checksum: 10c0/ea57802079fda31f87506bba63f1299f0fa60546c1a1a424d2d5926f98f1ffc4a94ae3c885155f4a60114c19d314addb45d94dc0e427ac1594cbfca7cd910a31 languageName: node linkType: hard -"@emnapi/runtime@npm:^1.4.0, @emnapi/runtime@npm:^1.4.3": - version: 1.4.3 - resolution: "@emnapi/runtime@npm:1.4.3" +"@emnapi/runtime@npm:^1.4.3": + version: 1.7.0 + resolution: "@emnapi/runtime@npm:1.7.0" dependencies: tslib: "npm:^2.4.0" - checksum: 10c0/3b7ab72d21cb4e034f07df80165265f85f445ef3f581d1bc87b67e5239428baa00200b68a7d5e37a0425c3a78320b541b07f76c5530f6f6f95336a6294ebf30b + checksum: 10c0/b99334582effe146e9fb5cd9e7f866c6c7047a8576f642456d56984b574b40b2ba14e4aede26217fcefa1372ddd1e098a19912f17033a9ae469928b0dc65a682 languageName: node linkType: hard -"@emnapi/wasi-threads@npm:1.0.2": - version: 1.0.2 - resolution: "@emnapi/wasi-threads@npm:1.0.2" +"@emnapi/wasi-threads@npm:1.1.0": + version: 1.1.0 + resolution: "@emnapi/wasi-threads@npm:1.1.0" dependencies: tslib: "npm:^2.4.0" - checksum: 10c0/f0621b1fc715221bd2d8332c0ca922617bcd77cdb3050eae50a124eb8923c54fa425d23982dc8f29d505c8798a62d1049bace8b0686098ff9dd82270e06d772e + checksum: 10c0/e6d54bf2b1e64cdd83d2916411e44e579b6ae35d5def0dea61a3c452d9921373044dff32a8b8473ae60c80692bdc39323e98b96a3f3d87ba6886b24dd0ef7ca1 languageName: node linkType: hard @@ -3311,11 +3375,11 @@ __metadata: linkType: hard "@emotion/is-prop-valid@npm:^1.3.0": - version: 1.3.1 - resolution: "@emotion/is-prop-valid@npm:1.3.1" + version: 1.4.0 + resolution: "@emotion/is-prop-valid@npm:1.4.0" dependencies: "@emotion/memoize": "npm:^0.9.0" - checksum: 10c0/123215540c816ff510737ec68dcc499c53ea4deb0bb6c2c27c03ed21046e2e69f6ad07a7a174d271c6cfcbcc9ea44e1763e0cf3875c92192f7689216174803cd + checksum: 10c0/5f857814ec7d8c7e727727346dfb001af6b1fb31d621a3ce9c3edf944a484d8b0d619546c30899ae3ade2f317c76390ba4394449728e9bf628312defc2c41ac3 languageName: node linkType: hard @@ -3375,8 +3439,8 @@ __metadata: linkType: hard "@emotion/styled@npm:^11.10.5, @emotion/styled@npm:^11.11.0, @emotion/styled@npm:^11.11.5": - version: 11.14.0 - resolution: "@emotion/styled@npm:11.14.0" + version: 11.14.1 + resolution: "@emotion/styled@npm:11.14.1" dependencies: "@babel/runtime": "npm:^7.18.3" "@emotion/babel-plugin": "npm:^11.13.5" @@ -3390,7 +3454,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/20aa5c488e4edecf63659212fc5ba1ccff2d3a66593fc8461de7cd5fe9192a741db357ffcd270a455bd61898d7f37cd5c84b4fd2b7974dade712badf7860ca9c + checksum: 10c0/2bbf8451df49c967e41fbcf8111a7f6dafe6757f0cc113f2f6e287206c45ac1d54dc8a95a483b7c0cee8614b8a8d08155bded6453d6721de1f8cc8d5b9216963 languageName: node linkType: hard @@ -3431,257 +3495,232 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/aix-ppc64@npm:0.25.4" +"@esbuild/aix-ppc64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/aix-ppc64@npm:0.25.12" conditions: os=aix & cpu=ppc64 languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/android-arm64@npm:0.25.4" +"@esbuild/android-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/android-arm64@npm:0.25.12" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/android-arm@npm:0.25.4" +"@esbuild/android-arm@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/android-arm@npm:0.25.12" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/android-x64@npm:0.25.4" +"@esbuild/android-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/android-x64@npm:0.25.12" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/darwin-arm64@npm:0.25.4" +"@esbuild/darwin-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/darwin-arm64@npm:0.25.12" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/darwin-x64@npm:0.25.4" +"@esbuild/darwin-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/darwin-x64@npm:0.25.12" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/freebsd-arm64@npm:0.25.4" +"@esbuild/freebsd-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/freebsd-arm64@npm:0.25.12" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/freebsd-x64@npm:0.25.4" +"@esbuild/freebsd-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/freebsd-x64@npm:0.25.12" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/linux-arm64@npm:0.25.4" +"@esbuild/linux-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-arm64@npm:0.25.12" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/linux-arm@npm:0.25.4" +"@esbuild/linux-arm@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-arm@npm:0.25.12" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/linux-ia32@npm:0.25.4" +"@esbuild/linux-ia32@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-ia32@npm:0.25.12" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/linux-loong64@npm:0.25.4" +"@esbuild/linux-loong64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-loong64@npm:0.25.12" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/linux-mips64el@npm:0.25.4" +"@esbuild/linux-mips64el@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-mips64el@npm:0.25.12" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/linux-ppc64@npm:0.25.4" +"@esbuild/linux-ppc64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-ppc64@npm:0.25.12" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/linux-riscv64@npm:0.25.4" +"@esbuild/linux-riscv64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-riscv64@npm:0.25.12" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/linux-s390x@npm:0.25.4" +"@esbuild/linux-s390x@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-s390x@npm:0.25.12" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/linux-x64@npm:0.25.4" +"@esbuild/linux-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-x64@npm:0.25.12" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-arm64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/netbsd-arm64@npm:0.25.4" +"@esbuild/netbsd-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/netbsd-arm64@npm:0.25.12" conditions: os=netbsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/netbsd-x64@npm:0.25.4" +"@esbuild/netbsd-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/netbsd-x64@npm:0.25.12" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/openbsd-arm64@npm:0.25.4" +"@esbuild/openbsd-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/openbsd-arm64@npm:0.25.12" conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/openbsd-x64@npm:0.25.4" +"@esbuild/openbsd-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/openbsd-x64@npm:0.25.12" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/sunos-x64@npm:0.25.4" +"@esbuild/openharmony-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/openharmony-arm64@npm:0.25.12" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/sunos-x64@npm:0.25.12" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/win32-arm64@npm:0.25.4" +"@esbuild/win32-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/win32-arm64@npm:0.25.12" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/win32-ia32@npm:0.25.4" +"@esbuild/win32-ia32@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/win32-ia32@npm:0.25.12" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.25.4": - version: 0.25.4 - resolution: "@esbuild/win32-x64@npm:0.25.4" +"@esbuild/win32-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/win32-x64@npm:0.25.12" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.7.0": - version: 4.7.0 - resolution: "@eslint-community/eslint-utils@npm:4.7.0" +"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.7.0, @eslint-community/eslint-utils@npm:^4.8.0": + version: 4.9.0 + resolution: "@eslint-community/eslint-utils@npm:4.9.0" dependencies: eslint-visitor-keys: "npm:^3.4.3" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10c0/c0f4f2bd73b7b7a9de74b716a664873d08ab71ab439e51befe77d61915af41a81ecec93b408778b3a7856185244c34c2c8ee28912072ec14def84ba2dec70adf + checksum: 10c0/8881e22d519326e7dba85ea915ac7a143367c805e6ba1374c987aa2fbdd09195cc51183d2da72c0e2ff388f84363e1b220fd0d19bef10c272c63455162176817 languageName: node linkType: hard "@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1, @eslint-community/regexpp@npm:^4.4.0, @eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": - version: 4.12.1 - resolution: "@eslint-community/regexpp@npm:4.12.1" - checksum: 10c0/a03d98c246bcb9109aec2c08e4d10c8d010256538dcb3f56610191607214523d4fb1b00aa81df830b6dffb74c5fa0be03642513a289c567949d3e550ca11cdf6 - languageName: node - linkType: hard - -"@eslint/config-array@npm:^0.20.0": - version: 0.20.0 - resolution: "@eslint/config-array@npm:0.20.0" - dependencies: - "@eslint/object-schema": "npm:^2.1.6" - debug: "npm:^4.3.1" - minimatch: "npm:^3.1.2" - checksum: 10c0/94bc5d0abb96dc5295ff559925242ff75a54eacfb3576677e95917e42f7175e1c4b87bf039aa2a872f949b4852ad9724bf2f7529aaea6b98f28bb3fca7f1d659 + version: 4.12.2 + resolution: "@eslint-community/regexpp@npm:4.12.2" + checksum: 10c0/fddcbc66851b308478d04e302a4d771d6917a0b3740dc351513c0da9ca2eab8a1adf99f5e0aa7ab8b13fa0df005c81adeee7e63a92f3effd7d367a163b721c2d languageName: node linkType: hard -"@eslint/config-array@npm:^0.21.0": - version: 0.21.0 - resolution: "@eslint/config-array@npm:0.21.0" +"@eslint/config-array@npm:^0.21.1": + version: 0.21.1 + resolution: "@eslint/config-array@npm:0.21.1" dependencies: - "@eslint/object-schema": "npm:^2.1.6" + "@eslint/object-schema": "npm:^2.1.7" debug: "npm:^4.3.1" minimatch: "npm:^3.1.2" - checksum: 10c0/0ea801139166c4aa56465b309af512ef9b2d3c68f9198751bbc3e21894fe70f25fbf26e1b0e9fffff41857bc21bfddeee58649ae6d79aadcd747db0c5dca771f - languageName: node - linkType: hard - -"@eslint/config-helpers@npm:^0.2.1": - version: 0.2.2 - resolution: "@eslint/config-helpers@npm:0.2.2" - checksum: 10c0/98f7cefe484bb754674585d9e73cf1414a3ab4fd0783c385465288d13eb1a8d8e7d7b0611259fc52b76b396c11a13517be5036d1f48eeb877f6f0a6b9c4f03ad - languageName: node - linkType: hard - -"@eslint/config-helpers@npm:^0.3.0": - version: 0.3.0 - resolution: "@eslint/config-helpers@npm:0.3.0" - checksum: 10c0/013ae7b189eeae8b30cc2ee87bc5c9c091a9cd615579003290eb28bebad5d78806a478e74ba10b3fe08ed66975b52af7d2cd4b4b43990376412b14e5664878c8 - languageName: node - linkType: hard - -"@eslint/config-helpers@npm:^0.3.1": - version: 0.3.1 - resolution: "@eslint/config-helpers@npm:0.3.1" - checksum: 10c0/f6c5b3a0b76a0d7d84cc93e310c259e6c3e0792ddd0a62c5fc0027796ffae44183432cb74b2c2b1162801ee1b1b34a6beb5d90a151632b4df7349f994146a856 + checksum: 10c0/2f657d4edd6ddcb920579b72e7a5b127865d4c3fb4dda24f11d5c4f445a93ca481aebdbd6bf3291c536f5d034458dbcbb298ee3b698bc6c9dd02900fe87eec3c languageName: node linkType: hard -"@eslint/core@npm:^0.14.0": - version: 0.14.0 - resolution: "@eslint/core@npm:0.14.0" +"@eslint/config-helpers@npm:^0.4.2": + version: 0.4.2 + resolution: "@eslint/config-helpers@npm:0.4.2" dependencies: - "@types/json-schema": "npm:^7.0.15" - checksum: 10c0/259f279445834ba2d2cbcc18e9d43202a4011fde22f29d5fb802181d66e0f6f0bd1f6b4b4b46663451f545d35134498231bd5e656e18d9034a457824b92b7741 + "@eslint/core": "npm:^0.17.0" + checksum: 10c0/92efd7a527b2d17eb1a148409d71d80f9ac160b565ac73ee092252e8bf08ecd08670699f46b306b94f13d22e88ac88a612120e7847570dd7cdc72f234d50dcb4 languageName: node linkType: hard -"@eslint/core@npm:^0.15.2": - version: 0.15.2 - resolution: "@eslint/core@npm:0.15.2" +"@eslint/core@npm:^0.17.0": + version: 0.17.0 + resolution: "@eslint/core@npm:0.17.0" dependencies: "@types/json-schema": "npm:^7.0.15" - checksum: 10c0/c17a6dc4f5a6006ecb60165cc38bcd21fefb4a10c7a2578a0cfe5813bbd442531a87ed741da5adab5eb678e8e693fda2e2b14555b035355537e32bcec367ea17 + checksum: 10c0/9a580f2246633bc752298e7440dd942ec421860d1946d0801f0423830e67887e4aeba10ab9a23d281727a978eb93d053d1922a587d502942a713607f40ed704e languageName: node linkType: hard @@ -3726,51 +3765,27 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:9.28.0, @eslint/js@npm:^9.27.0": - version: 9.28.0 - resolution: "@eslint/js@npm:9.28.0" - checksum: 10c0/5a6759542490dd9f778993edfbc8d2f55168fd0f7336ceed20fe3870c65499d72fc0bca8d1ae00ea246b0923ea4cba2e0758a8a5507a3506ddcf41c92282abb8 - languageName: node - linkType: hard - -"@eslint/js@npm:9.30.1, @eslint/js@npm:^9.30.1": - version: 9.30.1 - resolution: "@eslint/js@npm:9.30.1" - checksum: 10c0/17fc382a0deafdb1cadac1269d9c2f2464f025bde6e4d12fc4f4775eb9886b41340d4650b72e85a53423644fdc89bf59c987a852f27379ad25feecf2c5bbc1c9 - languageName: node - linkType: hard - -"@eslint/js@npm:9.33.0, @eslint/js@npm:^9.33.0": - version: 9.33.0 - resolution: "@eslint/js@npm:9.33.0" - checksum: 10c0/4c42c9abde76a183b8e47205fd6c3116b058f82f07b6ad4de40de56cdb30a36e9ecd40efbea1b63a84d08c206aadbb0aa39a890197e1ad6455a8e542df98f186 - languageName: node - linkType: hard - -"@eslint/object-schema@npm:^2.1.6": - version: 2.1.6 - resolution: "@eslint/object-schema@npm:2.1.6" - checksum: 10c0/b8cdb7edea5bc5f6a96173f8d768d3554a628327af536da2fc6967a93b040f2557114d98dbcdbf389d5a7b290985ad6a9ce5babc547f36fc1fde42e674d11a56 +"@eslint/js@npm:9.39.0, @eslint/js@npm:^9.27.0, @eslint/js@npm:^9.30.1, @eslint/js@npm:^9.33.0": + version: 9.39.0 + resolution: "@eslint/js@npm:9.39.0" + checksum: 10c0/f0ac65784932f1a5d3b9c0db12eb1ff9dcb480dbd03da1045e5da820bd97a35875fb7790f1fbe652763270b1327b770c79a9ba0396e2ad91fbd97822493e67eb languageName: node linkType: hard -"@eslint/plugin-kit@npm:^0.3.1": - version: 0.3.1 - resolution: "@eslint/plugin-kit@npm:0.3.1" - dependencies: - "@eslint/core": "npm:^0.14.0" - levn: "npm:^0.4.1" - checksum: 10c0/a75f0b5d38430318a551b83e27bee570747eb50beeb76b03f64b0e78c2c27ef3d284cfda3443134df028db3251719bc0850c105f778122f6ad762d5270ec8063 +"@eslint/object-schema@npm:^2.1.7": + version: 2.1.7 + resolution: "@eslint/object-schema@npm:2.1.7" + checksum: 10c0/936b6e499853d1335803f556d526c86f5fe2259ed241bc665000e1d6353828edd913feed43120d150adb75570cae162cf000b5b0dfc9596726761c36b82f4e87 languageName: node linkType: hard -"@eslint/plugin-kit@npm:^0.3.5": - version: 0.3.5 - resolution: "@eslint/plugin-kit@npm:0.3.5" +"@eslint/plugin-kit@npm:^0.4.1": + version: 0.4.1 + resolution: "@eslint/plugin-kit@npm:0.4.1" dependencies: - "@eslint/core": "npm:^0.15.2" + "@eslint/core": "npm:^0.17.0" levn: "npm:^0.4.1" - checksum: 10c0/c178c1b58c574200c0fd125af3e4bc775daba7ce434ba6d1eeaf9bcb64b2e9fea75efabffb3ed3ab28858e55a016a5efa95f509994ee4341b341199ca630b89e + checksum: 10c0/51600f78b798f172a9915dffb295e2ffb44840d583427bc732baf12ecb963eb841b253300e657da91d890f4b323d10a1bd12934bf293e3018d8bb66fdce5217b languageName: node linkType: hard @@ -4250,10 +4265,10 @@ __metadata: languageName: node linkType: hard -"@faker-js/faker@npm:^9.4.0, @faker-js/faker@npm:^9.5.0, @faker-js/faker@npm:^9.7.0": - version: 9.7.0 - resolution: "@faker-js/faker@npm:9.7.0" - checksum: 10c0/5a95147cbf0ae52909aea18346edb159efefe5e9800048d906317f1ec872c657256b43140f194d1308cb58074e57c619140ee96d26f57623b2957e5e74bbb3b8 +"@faker-js/faker@npm:^9.7.0, @faker-js/faker@npm:^9.8.0, @faker-js/faker@npm:^9.9.0": + version: 9.9.0 + resolution: "@faker-js/faker@npm:9.9.0" + checksum: 10c0/02107cb6915217b4831fa4b261603165972eb7f09d2ab2e1d4b75807df2d425a2bac8621cddbfdcc158c2c447c2bce2e14939d51c4a63fbd832df55452e7f73c languageName: node linkType: hard @@ -4265,9 +4280,9 @@ __metadata: linkType: hard "@fastify/busboy@npm:^3.1.1": - version: 3.1.1 - resolution: "@fastify/busboy@npm:3.1.1" - checksum: 10c0/d34b3640bc331f9951e27426769bdf90b1a5c238a22e4df39f9b18ec4cf793100a929ac0339f6643a4086f780f49177a528936d918dfd6c9dfe5a12566303215 + version: 3.2.0 + resolution: "@fastify/busboy@npm:3.2.0" + checksum: 10c0/3e4fb00a27e3149d1c68de8ff14007d2bbcbbc171a9d050d0a8772e836727329d4d3f130995ebaa19cf537d5d2f5ce2a88000366e6192e751457bfcc2125f351 languageName: node linkType: hard @@ -4285,68 +4300,80 @@ __metadata: languageName: node linkType: hard -"@floating-ui/core@npm:^1.7.0": - version: 1.7.0 - resolution: "@floating-ui/core@npm:1.7.0" +"@floating-ui/core@npm:^1.7.3": + version: 1.7.3 + resolution: "@floating-ui/core@npm:1.7.3" dependencies: - "@floating-ui/utils": "npm:^0.2.9" - checksum: 10c0/f7e66a650ad8c73765edb39a7530d81fa990c08c172f03b6129030234d32bccd4401c29ded9c8a4e4135e9beac349c5608d94962fa08c2a2ae2dab7a6530550c + "@floating-ui/utils": "npm:^0.2.10" + checksum: 10c0/edfc23800122d81df0df0fb780b7328ae6c5f00efbb55bd48ea340f4af8c5b3b121ceb4bb81220966ab0f87b443204d37105abdd93d94846468be3243984144c languageName: node linkType: hard -"@floating-ui/dom@npm:^1.0.0": - version: 1.7.0 - resolution: "@floating-ui/dom@npm:1.7.0" +"@floating-ui/dom@npm:^1.7.4": + version: 1.7.4 + resolution: "@floating-ui/dom@npm:1.7.4" dependencies: - "@floating-ui/core": "npm:^1.7.0" - "@floating-ui/utils": "npm:^0.2.9" - checksum: 10c0/49a7f0fbef82ba2c2f0bde7bb4812b276ae431b59e6a81427283a55cfb36c0af9cc459cbeb0bb1a5cc3efca1a332f584e123e7b1a8f0a9c94a21989b09b8c060 + "@floating-ui/core": "npm:^1.7.3" + "@floating-ui/utils": "npm:^0.2.10" + checksum: 10c0/da6166c25f9b0729caa9f498685a73a0e28251613b35d27db8de8014bc9d045158a23c092b405321a3d67c2064909b6e2a7e6c1c9cc0f62967dca5779f5aef30 languageName: node linkType: hard "@floating-ui/react-dom@npm:^2.0.8": - version: 2.1.2 - resolution: "@floating-ui/react-dom@npm:2.1.2" + version: 2.1.6 + resolution: "@floating-ui/react-dom@npm:2.1.6" dependencies: - "@floating-ui/dom": "npm:^1.0.0" + "@floating-ui/dom": "npm:^1.7.4" peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 10c0/e855131c74e68cab505f7f44f92cd4e2efab1c125796db3116c54c0859323adae4bf697bf292ee83ac77b9335a41ad67852193d7aeace90aa2e1c4a640cafa60 + checksum: 10c0/6654834a8e73ecbdbc6cad2ad8f7abc698ac7c1800ded4d61113525c591c03d2e3b59d3cf9205859221465ea38c87af4f9e6e204703c5b7a7e85332d1eef2e18 languageName: node linkType: hard -"@floating-ui/utils@npm:^0.2.9": - version: 0.2.9 - resolution: "@floating-ui/utils@npm:0.2.9" - checksum: 10c0/48bbed10f91cb7863a796cc0d0e917c78d11aeb89f98d03fc38d79e7eb792224a79f538ed8a2d5d5584511d4ca6354ef35f1712659fd569868e342df4398ad6f +"@floating-ui/utils@npm:^0.2.10": + version: 0.2.10 + resolution: "@floating-ui/utils@npm:0.2.10" + checksum: 10c0/e9bc2a1730ede1ee25843937e911ab6e846a733a4488623cd353f94721b05ec2c9ec6437613a2ac9379a94c2fd40c797a2ba6fa1df2716f5ce4aa6ddb1cf9ea4 languageName: node linkType: hard "@fontsource/inter@npm:^5.0.17": - version: 5.2.5 - resolution: "@fontsource/inter@npm:5.2.5" - checksum: 10c0/071e12a6a9c8cf6e95da43ba532e80eb8e35c1ffd2384c9c6555d7f222e306e22968f7c4fff5065b9f81503db622cf3de8a688fbc1cb0c04aa3803c797f6f6a0 + version: 5.2.8 + resolution: "@fontsource/inter@npm:5.2.8" + checksum: 10c0/f737dd50005e4809887ba55ae0c9b7174216d6d14875d17a4fbb9a0ad75dec4265928b805a43fe16a23f14a878f1974a398bbfc84ad65c79fc4d4b9c3ea154e1 languageName: node linkType: hard "@fontsource/roboto@npm:^5.2.6": - version: 5.2.6 - resolution: "@fontsource/roboto@npm:5.2.6" - checksum: 10c0/a2fbadf2f3b8ebb859e7b13ad82d25e8b43901c30ad93b08095c201617fcfded279d99e64a7b110614d2a1b5bca77631df7d009abf1ad6c6a4df301ceb330a51 + version: 5.2.8 + resolution: "@fontsource/roboto@npm:5.2.8" + checksum: 10c0/b215a7e08d65063e9e1714e39c023f0a1f2d33f0d48f06edf4e0d09a8945f682dd39ca7089efb83a48ceffa20d92d65392297831198e9a694b5be8a96b1a40cd + languageName: node + linkType: hard + +"@gemini-wallet/core@npm:0.3.1": + version: 0.3.1 + resolution: "@gemini-wallet/core@npm:0.3.1" + dependencies: + "@metamask/rpc-errors": "npm:7.0.2" + eventemitter3: "npm:5.0.1" + peerDependencies: + viem: ">=2.0.0" + checksum: 10c0/9df388baa7c948700ac8914ccf844eb874e86cffde59716b81180cec8dfaf8e4388e0177c727974d0d0cc48c14367b6da9956470ec1fcbda20657947eb58f9ef languageName: node linkType: hard -"@gerrit0/mini-shiki@npm:^3.7.0": - version: 3.7.0 - resolution: "@gerrit0/mini-shiki@npm:3.7.0" +"@gerrit0/mini-shiki@npm:^3.12.0": + version: 3.14.0 + resolution: "@gerrit0/mini-shiki@npm:3.14.0" dependencies: - "@shikijs/engine-oniguruma": "npm:^3.7.0" - "@shikijs/langs": "npm:^3.7.0" - "@shikijs/themes": "npm:^3.7.0" - "@shikijs/types": "npm:^3.7.0" + "@shikijs/engine-oniguruma": "npm:^3.14.0" + "@shikijs/langs": "npm:^3.14.0" + "@shikijs/themes": "npm:^3.14.0" + "@shikijs/types": "npm:^3.14.0" "@shikijs/vscode-textmate": "npm:^10.0.2" - checksum: 10c0/eb3f4900d841338077d839ebbc7f8722b13876a586cff7abc73295e956683724dd3371a9f990900184a2d069461965951b2604d677991badf3474262e7811384 + checksum: 10c0/9539688aec140f2167203b424078d34deec016c8418c497146c6c24920d0590d10b2cd5eec721668a56cb5d42fb278f6f0502bc340274398bb690317ded563b2 languageName: node linkType: hard @@ -4389,8 +4416,8 @@ __metadata: linkType: hard "@google-cloud/storage@npm:^7.15.0": - version: 7.16.0 - resolution: "@google-cloud/storage@npm:7.16.0" + version: 7.17.2 + resolution: "@google-cloud/storage@npm:7.17.2" dependencies: "@google-cloud/paginator": "npm:^5.0.0" "@google-cloud/projectify": "npm:^4.0.0" @@ -4407,7 +4434,7 @@ __metadata: retry-request: "npm:^7.0.0" teeny-request: "npm:^9.0.0" uuid: "npm:^8.0.0" - checksum: 10c0/a2a3f341232415d702c8fb054ec2eecbb6908a613848d7279f0b36db9b556ad93444a77a2f2a4c4c6b3f8901b3e7b2350120408c89b17c0ee17b31867a261462 + checksum: 10c0/0f178d5936818e6e1d90cfdad87a5ca955cbef5f28a206b3722f3c5b5b8b63b89278e7590f7468a0d7057c64d36883fa5372c91cb254d124a32a16127104645e languageName: node linkType: hard @@ -4422,48 +4449,48 @@ __metadata: languageName: node linkType: hard -"@graphprotocol/graph-cli@npm:^0.95.0": - version: 0.95.0 - resolution: "@graphprotocol/graph-cli@npm:0.95.0" +"@graphprotocol/graph-cli@npm:^0.97.1": + version: 0.97.1 + resolution: "@graphprotocol/graph-cli@npm:0.97.1" dependencies: "@float-capital/float-subgraph-uncrashable": "npm:0.0.0-internal-testing.5" - "@oclif/core": "npm:4.0.34" + "@oclif/core": "npm:4.3.0" "@oclif/plugin-autocomplete": "npm:^3.2.11" "@oclif/plugin-not-found": "npm:^3.2.29" "@oclif/plugin-warn-if-update-available": "npm:^3.1.24" "@pinax/graph-networks-registry": "npm:^0.6.5" "@whatwg-node/fetch": "npm:^0.10.1" assemblyscript: "npm:0.19.23" - chokidar: "npm:4.0.1" - debug: "npm:4.3.7" - docker-compose: "npm:1.1.0" - fs-extra: "npm:11.2.0" - glob: "npm:11.0.0" + chokidar: "npm:4.0.3" + debug: "npm:4.4.1" + docker-compose: "npm:1.2.0" + fs-extra: "npm:11.3.0" + glob: "npm:11.0.2" gluegun: "npm:5.2.0" - graphql: "npm:16.9.0" - immutable: "npm:5.0.3" - jayson: "npm:4.1.3" + graphql: "npm:16.11.0" + immutable: "npm:5.1.2" + jayson: "npm:4.2.0" js-yaml: "npm:4.1.0" kubo-rpc-client: "npm:^5.0.2" - open: "npm:10.1.0" - prettier: "npm:3.4.2" - semver: "npm:7.6.3" + open: "npm:10.1.2" + prettier: "npm:3.5.3" + semver: "npm:7.7.2" tmp-promise: "npm:3.0.3" - undici: "npm:7.2.3" + undici: "npm:7.9.0" web3-eth-abi: "npm:4.4.1" - yaml: "npm:2.6.1" + yaml: "npm:2.8.0" bin: graph: bin/run.js - checksum: 10c0/0a5b0d9ba8ed97986f4877d1f53d8b94afd958a0864dbd52eab17913383f855723c69d93347d921216c0ad7453247470ad2d4543383376926c6d1e001c265a0b + checksum: 10c0/0148ff075cd88599be22886c3718159d8b8b3bf0acc614d331ae1510f9281d549bbb13719041003d2a5c6db5621e8f29a6586cf51f1e082e6fdcef0f44c647f0 languageName: node linkType: hard "@graphprotocol/graph-ts@npm:^0.38.0": - version: 0.38.0 - resolution: "@graphprotocol/graph-ts@npm:0.38.0" + version: 0.38.2 + resolution: "@graphprotocol/graph-ts@npm:0.38.2" dependencies: assemblyscript: "npm:0.27.31" - checksum: 10c0/ab19712281db7ed4a1fe46bf294e1fd8aca2a39f5eff4db904fb9f068b4f1883aa253e5f27447fac35e8ae708a70f5c0d6ee6202d1540b126645fafa9a39afa4 + checksum: 10c0/7edd69067354bfc29eabf5a235255eca50e7658bf277f1b34072ee530cd9bed20b7f1babfac37bd661db3c891de7e611c6fb657259d240bc4663998b2db3cb7b languageName: node linkType: hard @@ -4757,12 +4784,12 @@ __metadata: linkType: hard "@grpc/grpc-js@npm:^1.10.9": - version: 1.13.3 - resolution: "@grpc/grpc-js@npm:1.13.3" + version: 1.14.0 + resolution: "@grpc/grpc-js@npm:1.14.0" dependencies: - "@grpc/proto-loader": "npm:^0.7.13" + "@grpc/proto-loader": "npm:^0.8.0" "@js-sdsl/ordered-map": "npm:^4.4.2" - checksum: 10c0/1d4e5504a62c5d65be783f6edce24d5fdd101b1d204813e07e6f512e5ca3485138c57caffe4c3cd237e4ed107168ad29237c2629a52e4639b0b2d2947c02bf01 + checksum: 10c0/51e0eb32f6dac68c49502b227e565c4244f53983d2efab8ef3fd2cc923999751c059f6c77fec4941a93c44eaa58cbc321ce1e9868e1ec226fba5a6c93722c3b1 languageName: node linkType: hard @@ -4780,6 +4807,20 @@ __metadata: languageName: node linkType: hard +"@grpc/proto-loader@npm:^0.8.0": + version: 0.8.0 + resolution: "@grpc/proto-loader@npm:0.8.0" + dependencies: + lodash.camelcase: "npm:^4.3.0" + long: "npm:^5.0.0" + protobufjs: "npm:^7.5.3" + yargs: "npm:^17.7.2" + bin: + proto-loader-gen-types: build/bin/proto-loader-gen-types.js + checksum: 10c0/a27da3b85d5d17bab956d536786c717287eae46ca264ea9ec774db90ff571955bae2705809f431b4622fbf3be9951d7c7bbb1360b2015ee88abe1587cf3d6fe0 + languageName: node + linkType: hard + "@hapi/hoek@npm:^9.0.0, @hapi/hoek@npm:^9.3.0": version: 9.3.0 resolution: "@hapi/hoek@npm:9.3.0" @@ -4796,10 +4837,10 @@ __metadata: languageName: node linkType: hard -"@hcaptcha/loader@npm:^2.0.0": - version: 2.0.0 - resolution: "@hcaptcha/loader@npm:2.0.0" - checksum: 10c0/c69c8e62ccf41cc5cce8f25721b9bd8284e201da608022476dc6d69afbd70512a6f272dd2bfe558c4b5fdbc0ee20fb5f062033c4d556e6d523ecb2448203298f +"@hcaptcha/loader@npm:^2.2.0": + version: 2.2.0 + resolution: "@hcaptcha/loader@npm:2.2.0" + checksum: 10c0/f7e85a730844c095bdcc62b5199d129cf70195ff213b6202f81e6e4bd48da81110fcd5b5e9ad7d336493762d952620047eb7e5224c5f4f181dedee47d5e196a1 languageName: node linkType: hard @@ -4814,26 +4855,35 @@ __metadata: linkType: hard "@hcaptcha/react-hcaptcha@npm:^1.10.1": - version: 1.12.0 - resolution: "@hcaptcha/react-hcaptcha@npm:1.12.0" + version: 1.14.0 + resolution: "@hcaptcha/react-hcaptcha@npm:1.14.0" dependencies: "@babel/runtime": "npm:^7.17.9" - "@hcaptcha/loader": "npm:^2.0.0" + "@hcaptcha/loader": "npm:^2.2.0" peerDependencies: react: ">= 16.3.0" react-dom: ">= 16.3.0" - checksum: 10c0/58fddf7cbbeb1c9d784a90a4ee76604efd8d0c968d1d256f72d112d95c8d68bbb1255dd4184148e7e43e38491c5614b3747f4d17393a17d320e28935da47f8e8 + checksum: 10c0/76182756003208e8c2771f58f7cb0e8da196835872d09859e45a8592eeebff741ad071319c7075e7aeee4ba73dd8c2cab9c412c6214469d883b6a53b4b894744 languageName: node linkType: hard "@hookform/resolvers@npm:^5.1.0": - version: 5.2.1 - resolution: "@hookform/resolvers@npm:5.2.1" + version: 5.2.2 + resolution: "@hookform/resolvers@npm:5.2.2" dependencies: "@standard-schema/utils": "npm:^0.3.0" peerDependencies: react-hook-form: ^7.55.0 - checksum: 10c0/e8e48abc188b5139bc444e4495e2fb1680c6aafa31d79c5d7fa4d7d690b0fc2bac1dfbd99213cbc0c6c53c5c3c4e8c4dc28278dd87a3fa0176540795a6f2edde + checksum: 10c0/0692cd61dcc2a70cbb27b88a37f733c39e97f555c036ba04a81bd42b0467461cfb6bafacb46c16f173672f9c8a216bd7928a2330d4e49c700d130622bf1defaf + languageName: node + linkType: hard + +"@human-protocol/core@npm:4.2.1": + version: 4.2.1 + resolution: "@human-protocol/core@npm:4.2.1" + peerDependencies: + ethers: ~6.15.0 + checksum: 10c0/f2e3f97040063a7b1264c35d969f8b241f919fcd012c05d9c687c9d7b407b9250c0cfc63cd1a0e7ccdd993e40a8633832ae5389b8e2128e4deec3ddb749367fc languageName: node linkType: hard @@ -4841,6 +4891,7 @@ __metadata: version: 0.0.0-use.local resolution: "@human-protocol/core@workspace:packages/core" dependencies: + "@faker-js/faker": "npm:^9.9.0" "@nomicfoundation/hardhat-chai-matchers": "npm:^2.0.7" "@nomicfoundation/hardhat-ethers": "npm:^3.1.0" "@nomicfoundation/hardhat-network-helpers": "npm:^1.0.12" @@ -4906,13 +4957,32 @@ __metadata: languageName: unknown linkType: soft -"@human-protocol/sdk@npm:*, @human-protocol/sdk@workspace:*, @human-protocol/sdk@workspace:^, @human-protocol/sdk@workspace:packages/sdk/typescript/human-protocol-sdk": - version: 0.0.0-use.local - resolution: "@human-protocol/sdk@workspace:packages/sdk/typescript/human-protocol-sdk" +"@human-protocol/sdk@npm:*": + version: 4.4.0 + resolution: "@human-protocol/sdk@npm:4.4.0" dependencies: - "@human-protocol/core": "workspace:*" + "@human-protocol/core": "npm:4.2.1" axios: "npm:^1.4.0" - eslint: "npm:^8.55.0" + ethers: "npm:~6.15.0" + graphql: "npm:^16.8.1" + graphql-request: "npm:^6.1.0" + graphql-tag: "npm:^2.12.6" + minio: "npm:7.1.3" + openpgp: "npm:^5.11.2" + secp256k1: "npm:^5.0.1" + validator: "npm:^13.12.0" + vitest: "npm:^3.0.9" + checksum: 10c0/6a0f64c1f652c22154cadf1ff86db27703a5f5007c520e12cd657512f7b3a57280837a74ffebac2a97485522393ede633878617b302fee3dfd09478a846f583f + languageName: node + linkType: hard + +"@human-protocol/sdk@workspace:*, @human-protocol/sdk@workspace:^, @human-protocol/sdk@workspace:packages/sdk/typescript/human-protocol-sdk": + version: 0.0.0-use.local + resolution: "@human-protocol/sdk@workspace:packages/sdk/typescript/human-protocol-sdk" + dependencies: + "@human-protocol/core": "workspace:*" + axios: "npm:^1.4.0" + eslint: "npm:^8.55.0" ethers: "npm:~6.15.0" graphql: "npm:^16.8.1" graphql-request: "npm:^6.1.0" @@ -4938,12 +5008,12 @@ __metadata: linkType: hard "@humanfs/node@npm:^0.16.6": - version: 0.16.6 - resolution: "@humanfs/node@npm:0.16.6" + version: 0.16.7 + resolution: "@humanfs/node@npm:0.16.7" dependencies: "@humanfs/core": "npm:^0.19.1" - "@humanwhocodes/retry": "npm:^0.3.0" - checksum: 10c0/8356359c9f60108ec204cbd249ecd0356667359b2524886b357617c4a7c3b6aace0fd5a369f63747b926a762a88f8a25bc066fa1778508d110195ce7686243e1 + "@humanwhocodes/retry": "npm:^0.4.0" + checksum: 10c0/9f83d3cf2cfa37383e01e3cdaead11cd426208e04c44adcdd291aa983aaf72d7d3598844d2fe9ce54896bb1bf8bd4b56883376611c8905a19c44684642823f30 languageName: node linkType: hard @@ -4972,60 +5042,60 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/retry@npm:^0.3.0": - version: 0.3.1 - resolution: "@humanwhocodes/retry@npm:0.3.1" - checksum: 10c0/f0da1282dfb45e8120480b9e2e275e2ac9bbe1cf016d046fdad8e27cc1285c45bb9e711681237944445157b430093412b4446c1ab3fc4bb037861b5904101d3b - languageName: node - linkType: hard - -"@humanwhocodes/retry@npm:^0.4.2": +"@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2": version: 0.4.3 resolution: "@humanwhocodes/retry@npm:0.4.3" checksum: 10c0/3775bb30087d4440b3f7406d5a057777d90e4b9f435af488a4923ef249e93615fb78565a85f173a186a076c7706a81d0d57d563a2624e4de2c5c9c66c486ce42 languageName: node linkType: hard -"@inquirer/checkbox@npm:^4.1.5": - version: 4.1.5 - resolution: "@inquirer/checkbox@npm:4.1.5" +"@inquirer/ansi@npm:^1.0.1": + version: 1.0.1 + resolution: "@inquirer/ansi@npm:1.0.1" + checksum: 10c0/b0da2f25bbbe197946e717603f95ad0eacb098fcab1c9296cdf21f7c68fca830f589bf3e1b6803ada8dae8ce5e67fd7bb0e00909185e905333a84daacb81b473 + languageName: node + linkType: hard + +"@inquirer/checkbox@npm:^4.3.0": + version: 4.3.0 + resolution: "@inquirer/checkbox@npm:4.3.0" dependencies: - "@inquirer/core": "npm:^10.1.10" - "@inquirer/figures": "npm:^1.0.11" - "@inquirer/type": "npm:^3.0.6" - ansi-escapes: "npm:^4.3.2" + "@inquirer/ansi": "npm:^1.0.1" + "@inquirer/core": "npm:^10.3.0" + "@inquirer/figures": "npm:^1.0.14" + "@inquirer/type": "npm:^3.0.9" yoctocolors-cjs: "npm:^2.1.2" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c0/b984fb3ce8af34c327f3a85adcfe9fbd9eaac0c689bb9af79a5d55d508acb01de329747e8c923c9f4962e4006c353ed2dbe79e3fc9ae0f85f5851427dbed75ed + checksum: 10c0/d17b72063bf7b9b24a9bba530d6e1b553b8b8d84b9c221cec33480dfb11000554e041d9d1467248926844a91efd6cd07e753d1954ea9f80f2546543ae80161ff languageName: node linkType: hard -"@inquirer/confirm@npm:^5.1.9": - version: 5.1.9 - resolution: "@inquirer/confirm@npm:5.1.9" +"@inquirer/confirm@npm:^5.1.19": + version: 5.1.19 + resolution: "@inquirer/confirm@npm:5.1.19" dependencies: - "@inquirer/core": "npm:^10.1.10" - "@inquirer/type": "npm:^3.0.6" + "@inquirer/core": "npm:^10.3.0" + "@inquirer/type": "npm:^3.0.9" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c0/e35c134303f8151074479d6704c048676b2684debfde18a46ff0fb7585a3ee31dea551899ddcb48169fbef5dfe64c1948d2d8ac17a6939bedd31bb54c39bbea4 + checksum: 10c0/bfd6a6caf8192d8d1a815ddfeae46629369477e1b3bf7092b7ba2706b1285c8760d7ad86e7b2e68a5fa49d8735b83a50642b21026e8fe284ffc5d2b36666fab7 languageName: node linkType: hard -"@inquirer/core@npm:^10.1.10": - version: 10.1.10 - resolution: "@inquirer/core@npm:10.1.10" +"@inquirer/core@npm:^10.3.0": + version: 10.3.0 + resolution: "@inquirer/core@npm:10.3.0" dependencies: - "@inquirer/figures": "npm:^1.0.11" - "@inquirer/type": "npm:^3.0.6" - ansi-escapes: "npm:^4.3.2" + "@inquirer/ansi": "npm:^1.0.1" + "@inquirer/figures": "npm:^1.0.14" + "@inquirer/type": "npm:^3.0.9" cli-width: "npm:^4.1.0" mute-stream: "npm:^2.0.0" signal-exit: "npm:^4.1.0" @@ -5036,222 +5106,238 @@ __metadata: peerDependenciesMeta: "@types/node": optional: true - checksum: 10c0/8d0a3b725e42e40efbdc6ed087283795f1e36e642b119dd7dd3cbf31fce74bdbdb1b987da16159cd2475f45b2ede7e33293ae92bad3ac481832889c230df3fc0 + checksum: 10c0/174baa46ba9b4239a8e20d01d7ab890fd5d3d535c5473c864b0863d18d56b63a5dd0d657d646c0cb260965f4ed12089484f99d8abeaf0fa0961b619d708d8d7a languageName: node linkType: hard -"@inquirer/editor@npm:^4.2.10": - version: 4.2.10 - resolution: "@inquirer/editor@npm:4.2.10" +"@inquirer/editor@npm:^4.2.21": + version: 4.2.21 + resolution: "@inquirer/editor@npm:4.2.21" dependencies: - "@inquirer/core": "npm:^10.1.10" - "@inquirer/type": "npm:^3.0.6" - external-editor: "npm:^3.1.0" + "@inquirer/core": "npm:^10.3.0" + "@inquirer/external-editor": "npm:^1.0.2" + "@inquirer/type": "npm:^3.0.9" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c0/b0213ad3ef45bc30427def4742db22126a1e6a59923033d21cae216276d8cf85d2af8abe432e5567ea24a7f6a31e23e7014e31308405cde684060b974e454a22 + checksum: 10c0/ea3d75b03a8558df424914999970961e3ee78aae84ce5629f172054c83f03aefe03c50ba18be41b11909ebbe97251f8c3aadd0c8264637d4f59b245ac0cf5275 languageName: node linkType: hard -"@inquirer/expand@npm:^4.0.12": - version: 4.0.12 - resolution: "@inquirer/expand@npm:4.0.12" +"@inquirer/expand@npm:^4.0.21": + version: 4.0.21 + resolution: "@inquirer/expand@npm:4.0.21" dependencies: - "@inquirer/core": "npm:^10.1.10" - "@inquirer/type": "npm:^3.0.6" + "@inquirer/core": "npm:^10.3.0" + "@inquirer/type": "npm:^3.0.9" yoctocolors-cjs: "npm:^2.1.2" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c0/f7abfc09ef942b63504677be5cf6fc443fb8090b5d43f7d2fe09983215cc01c6d82351cd1b596e90723b382a0931c9344d3280d54acf47d898782f4af2030b2e + checksum: 10c0/906272572e5ec4accda2eb6ce99265d1507253dae4c0416d45ac5900c012dba642c954fe7bddfd2743a0f921f4232a07a9f9eb291cb4a60a11f0026e07eadffd languageName: node linkType: hard -"@inquirer/external-editor@npm:^1.0.0": - version: 1.0.1 - resolution: "@inquirer/external-editor@npm:1.0.1" +"@inquirer/external-editor@npm:^1.0.0, @inquirer/external-editor@npm:^1.0.2": + version: 1.0.2 + resolution: "@inquirer/external-editor@npm:1.0.2" dependencies: chardet: "npm:^2.1.0" - iconv-lite: "npm:^0.6.3" + iconv-lite: "npm:^0.7.0" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c0/bdac4395e0bba7065d39b141d618bfc06369f246c402c511396a5238baf2657f3038ccba8438521a49e5cb602f4302b9d1f46b52b647b27af2c9911720022118 + checksum: 10c0/414a3a2a9733459c57452d84ef19ff002222303d19041580685681153132d2a30af8f90f269b3967c30c670fa689dbb7d4fc25a86dc66f029eebe90dc7467b0a languageName: node linkType: hard -"@inquirer/figures@npm:^1.0.11": - version: 1.0.11 - resolution: "@inquirer/figures@npm:1.0.11" - checksum: 10c0/6270e24eebbe42bbc4e7f8e761e906be66b4896787f31ab3e7484ad271c8edc90bce4ec20e232a5da447aee4fc73803397b2dda8cf645f4f7eea83e773b44e1e +"@inquirer/figures@npm:^1.0.14": + version: 1.0.14 + resolution: "@inquirer/figures@npm:1.0.14" + checksum: 10c0/e19487d1d54db4ee9de2bd60792fa04c422b81ccfcf8307c8a8d385364c18622373e08a7f124d8c92383ef74edd20c3e3be1d7c2fdf31beccd5819c0d7809532 languageName: node linkType: hard -"@inquirer/input@npm:^4.1.9": - version: 4.1.9 - resolution: "@inquirer/input@npm:4.1.9" +"@inquirer/input@npm:^4.2.5": + version: 4.2.5 + resolution: "@inquirer/input@npm:4.2.5" dependencies: - "@inquirer/core": "npm:^10.1.10" - "@inquirer/type": "npm:^3.0.6" + "@inquirer/core": "npm:^10.3.0" + "@inquirer/type": "npm:^3.0.9" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c0/db2e661ee482f3f27bf8cb77f054f99aba30291bd24d63b28db62204c4c5efc496199a9ddc03d01e0f6e6455d6967efb3ef92d2cd91e672905948c8c978c67a1 + checksum: 10c0/d12e92fde89c400059e614cb4649b5186bd084571958ac226e70a3337954350a565211bb76783daab20854cd1912c6dea4683038183c5bde0dbf126ff5dbc078 languageName: node linkType: hard -"@inquirer/number@npm:^3.0.12": - version: 3.0.12 - resolution: "@inquirer/number@npm:3.0.12" +"@inquirer/number@npm:^3.0.21": + version: 3.0.21 + resolution: "@inquirer/number@npm:3.0.21" dependencies: - "@inquirer/core": "npm:^10.1.10" - "@inquirer/type": "npm:^3.0.6" + "@inquirer/core": "npm:^10.3.0" + "@inquirer/type": "npm:^3.0.9" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c0/e40726e1c60ba48a374b4867d212bd5e14cb12daae97a6536095906246ba6af91ec7fa68e347ba52607ba5bd84f9e804768d12fbc1250b2cac814187fb5e9628 + checksum: 10c0/657209f8760db656f485005d92702f5cc798e64b45daa3f6791206448fe0156997165877a02cfa202c1c877dc361f97f4c993979335f1107f94734ff31b4b774 languageName: node linkType: hard -"@inquirer/password@npm:^4.0.12": - version: 4.0.12 - resolution: "@inquirer/password@npm:4.0.12" +"@inquirer/password@npm:^4.0.21": + version: 4.0.21 + resolution: "@inquirer/password@npm:4.0.21" dependencies: - "@inquirer/core": "npm:^10.1.10" - "@inquirer/type": "npm:^3.0.6" - ansi-escapes: "npm:^4.3.2" + "@inquirer/ansi": "npm:^1.0.1" + "@inquirer/core": "npm:^10.3.0" + "@inquirer/type": "npm:^3.0.9" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c0/03257985bbbd813c4f0c412effb691737517e348ca2590558864fe09877080daf90eb9910a60d097048fce9cf0c56a900e8f099854a9ae21512ceaadbd986e01 + checksum: 10c0/0d30c7e500fc611eea8e84db5688159221e1f4e4d8346b85b9d1d0a8b4b1f0bae7ee656bc05eec7cdadc271898a46ac634955c09c8c9605440c27d72d3502d45 languageName: node linkType: hard -"@inquirer/prompts@npm:^7.5.0": - version: 7.5.0 - resolution: "@inquirer/prompts@npm:7.5.0" +"@inquirer/prompts@npm:^7.9.0": + version: 7.9.0 + resolution: "@inquirer/prompts@npm:7.9.0" dependencies: - "@inquirer/checkbox": "npm:^4.1.5" - "@inquirer/confirm": "npm:^5.1.9" - "@inquirer/editor": "npm:^4.2.10" - "@inquirer/expand": "npm:^4.0.12" - "@inquirer/input": "npm:^4.1.9" - "@inquirer/number": "npm:^3.0.12" - "@inquirer/password": "npm:^4.0.12" - "@inquirer/rawlist": "npm:^4.1.0" - "@inquirer/search": "npm:^3.0.12" - "@inquirer/select": "npm:^4.2.0" + "@inquirer/checkbox": "npm:^4.3.0" + "@inquirer/confirm": "npm:^5.1.19" + "@inquirer/editor": "npm:^4.2.21" + "@inquirer/expand": "npm:^4.0.21" + "@inquirer/input": "npm:^4.2.5" + "@inquirer/number": "npm:^3.0.21" + "@inquirer/password": "npm:^4.0.21" + "@inquirer/rawlist": "npm:^4.1.9" + "@inquirer/search": "npm:^3.2.0" + "@inquirer/select": "npm:^4.4.0" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c0/40faf282ec35a2b89258c65f8e55f1e9193a0f8bdfbb724641ce7c7036b4e995a84f685d311807ed18885b8e0231c278a40e90469d829eb165b4993b8edf101b + checksum: 10c0/e10a62b75a660a5dd272f322fd366a526393752f183bddbd485806a5cd0efb715917b16d9a6f661c81d13ee8ccd3c96bb663814808806b9ff7539ee46d479d87 languageName: node linkType: hard -"@inquirer/rawlist@npm:^4.1.0": - version: 4.1.0 - resolution: "@inquirer/rawlist@npm:4.1.0" +"@inquirer/rawlist@npm:^4.1.9": + version: 4.1.9 + resolution: "@inquirer/rawlist@npm:4.1.9" dependencies: - "@inquirer/core": "npm:^10.1.10" - "@inquirer/type": "npm:^3.0.6" + "@inquirer/core": "npm:^10.3.0" + "@inquirer/type": "npm:^3.0.9" yoctocolors-cjs: "npm:^2.1.2" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c0/0e92e8ee7eebd6b6ba7a81d968701f398dd372638f51dd8e3cb1fd3a03520bc0f713e112488d37fdb813f18928f338d82527c575e18a9bebde7ac3273045898c + checksum: 10c0/ad7f9fd123b89960d500b1755ab2f6783f5a605ff4aeeb10d6eee765be41debde31b40067d03e814e2c382a198eb0b1c00eb7ebefa13088059b29eeafce7e924 languageName: node linkType: hard -"@inquirer/search@npm:^3.0.12": - version: 3.0.12 - resolution: "@inquirer/search@npm:3.0.12" +"@inquirer/search@npm:^3.2.0": + version: 3.2.0 + resolution: "@inquirer/search@npm:3.2.0" dependencies: - "@inquirer/core": "npm:^10.1.10" - "@inquirer/figures": "npm:^1.0.11" - "@inquirer/type": "npm:^3.0.6" + "@inquirer/core": "npm:^10.3.0" + "@inquirer/figures": "npm:^1.0.14" + "@inquirer/type": "npm:^3.0.9" yoctocolors-cjs: "npm:^2.1.2" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c0/ef764f96b561b48e4d9a99716789d1fc0941d40884d1c9fea715c304360b46ec8c6e3edf603f7425a27d7743915564f405a3ccd1a72f0379a714be22887fe6ff + checksum: 10c0/623eb5f53984d87a7f66fef73913d3129f09a4d0fb6a311f3020cb3559ad9d006d66c532f99010d1448518be38c9a1fbb5617d906ec9e361c7959bd7360173d9 languageName: node linkType: hard -"@inquirer/select@npm:^4.2.0": - version: 4.2.0 - resolution: "@inquirer/select@npm:4.2.0" +"@inquirer/select@npm:^4.4.0": + version: 4.4.0 + resolution: "@inquirer/select@npm:4.4.0" dependencies: - "@inquirer/core": "npm:^10.1.10" - "@inquirer/figures": "npm:^1.0.11" - "@inquirer/type": "npm:^3.0.6" - ansi-escapes: "npm:^4.3.2" + "@inquirer/ansi": "npm:^1.0.1" + "@inquirer/core": "npm:^10.3.0" + "@inquirer/figures": "npm:^1.0.14" + "@inquirer/type": "npm:^3.0.9" yoctocolors-cjs: "npm:^2.1.2" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c0/b3cfab393d54e48012336710b8e9267a0dd5551878a7727800da3d78602398720aab8777d5687b2138261fb731b0079d1c3ec0f4d0fee194bb1c4496c97b340b + checksum: 10c0/9ab3811342f293e49eff60c85117612226c54aebda09db7f2354eabb95df55e02a8a4a674cb3514c12cf7c3dc6df4ef1addc4e41e006f52c17d9cee50208643a languageName: node linkType: hard -"@inquirer/type@npm:^3.0.6": - version: 3.0.6 - resolution: "@inquirer/type@npm:3.0.6" +"@inquirer/type@npm:^3.0.9": + version: 3.0.9 + resolution: "@inquirer/type@npm:3.0.9" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c0/92382c1b046559ddb16c53e1353a900a43266566a0d73902e5325433c640b6aaeaf3e34cc5b2a68fd089ff5d8add914d0b9875cdec64f7a09313f9c4420b021d + checksum: 10c0/bf036f9fac2519e7f710507ef1fab7c1149242a1e6490600fc18498175c0c0bc4a8f121592ab4eeb6b7b5acbc7cc6aedb0ad461bf4a12bc329e49168bbe7b61f languageName: node linkType: hard "@ipld/dag-cbor@npm:^9.0.0": - version: 9.2.2 - resolution: "@ipld/dag-cbor@npm:9.2.2" + version: 9.2.5 + resolution: "@ipld/dag-cbor@npm:9.2.5" dependencies: cborg: "npm:^4.0.0" multiformats: "npm:^13.1.0" - checksum: 10c0/de554379adf27d6c3dc5ed706cbceb319ef7c54646c53dca6f85a840eeb4d08895c722ee08c92022b396090050f275a44ce5b07c7bdb87e105ebb0f84ad3e2ca + checksum: 10c0/0e4b30f1118a716485c4fcde38d62d812f580cf35b7054027417e539b3fdcc0caa8db05f05163c54a040742d089418fcdea8080d7b34676775421cb18b99c706 languageName: node linkType: hard "@ipld/dag-json@npm:^10.0.0": - version: 10.2.3 - resolution: "@ipld/dag-json@npm:10.2.3" + version: 10.2.5 + resolution: "@ipld/dag-json@npm:10.2.5" dependencies: cborg: "npm:^4.0.0" multiformats: "npm:^13.1.0" - checksum: 10c0/0ea69085fb1733b36f52c48428465a20105bc37b5398ff85348b397dee966a6bf243f14322c1d6efd4172ff028acee06d5390dca350f450273db177302b812c5 + checksum: 10c0/5b807691fc78c01106389f621f54a2293bdaac2b90d5b997310731e368b0c37c9f9b5dc44abca50f6e45ffeacc1f07f91a763adc7339333990d1d5e1b941a58f languageName: node linkType: hard "@ipld/dag-pb@npm:^4.0.0": - version: 4.1.3 - resolution: "@ipld/dag-pb@npm:4.1.3" + version: 4.1.5 + resolution: "@ipld/dag-pb@npm:4.1.5" dependencies: multiformats: "npm:^13.1.0" - checksum: 10c0/c785c8e291c7c417618b43381a57672feda61e1fed8aaf3365e306f29b31d4770cf54f68a4de4fac03775a768d93c2be11690a008e0856851a5b64a4b7d27efc + checksum: 10c0/be650b3f13239802191a0ff3f41908e4ec9acaa59c3f15f48b3a81c6eb49597f7531308d098518bb3aec7ceb60f43bde675258db422dbcb6b62f3d17f121e408 + languageName: node + linkType: hard + +"@isaacs/balanced-match@npm:^4.0.1": + version: 4.0.1 + resolution: "@isaacs/balanced-match@npm:4.0.1" + checksum: 10c0/7da011805b259ec5c955f01cee903da72ad97c5e6f01ca96197267d3f33103d5b2f8a1af192140f3aa64526c593c8d098ae366c2b11f7f17645d12387c2fd420 + languageName: node + linkType: hard + +"@isaacs/brace-expansion@npm:^5.0.0": + version: 5.0.0 + resolution: "@isaacs/brace-expansion@npm:5.0.0" + dependencies: + "@isaacs/balanced-match": "npm:^4.0.1" + checksum: 10c0/b4d4812f4be53afc2c5b6c545001ff7a4659af68d4484804e9d514e183d20269bb81def8682c01a22b17c4d6aed14292c8494f7d2ac664e547101c1a905aa977 languageName: node linkType: hard @@ -5528,14 +5614,23 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.5": - version: 0.3.8 - resolution: "@jridgewell/gen-mapping@npm:0.3.8" +"@jridgewell/gen-mapping@npm:^0.3.12, @jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.13 + resolution: "@jridgewell/gen-mapping@npm:0.3.13" dependencies: - "@jridgewell/set-array": "npm:^1.2.1" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/sourcemap-codec": "npm:^1.5.0" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/9a7d65fb13bd9aec1fbab74cda08496839b7e2ceb31f5ab922b323e94d7c481ce0fc4fd7e12e2610915ed8af51178bdc61e168e92a8c8b8303b030b03489b13b + languageName: node + linkType: hard + +"@jridgewell/remapping@npm:^2.3.5": + version: 2.3.5 + resolution: "@jridgewell/remapping@npm:2.3.5" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10c0/c668feaf86c501d7c804904a61c23c67447b2137b813b9ce03eca82cb9d65ac7006d766c218685d76e3d72828279b6ee26c347aa1119dab23fbaf36aed51585a + checksum: 10c0/3de494219ffeb2c5c38711d0d7bb128097edf91893090a2dbc8ee0b55d092bb7347b1fd0f478486c5eab010e855c73927b1666f2107516d472d24a73017d1194 languageName: node linkType: hard @@ -5546,27 +5641,20 @@ __metadata: languageName: node linkType: hard -"@jridgewell/set-array@npm:^1.2.1": - version: 1.2.1 - resolution: "@jridgewell/set-array@npm:1.2.1" - checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4 - languageName: node - linkType: hard - "@jridgewell/source-map@npm:^0.3.3": - version: 0.3.6 - resolution: "@jridgewell/source-map@npm:0.3.6" + version: 0.3.11 + resolution: "@jridgewell/source-map@npm:0.3.11" dependencies: "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.25" - checksum: 10c0/6a4ecc713ed246ff8e5bdcc1ef7c49aaa93f7463d948ba5054dda18b02dcc6a055e2828c577bcceee058f302ce1fc95595713d44f5c45e43d459f88d267f2f04 + checksum: 10c0/50a4fdafe0b8f655cb2877e59fe81320272eaa4ccdbe6b9b87f10614b2220399ae3e05c16137a59db1f189523b42c7f88bd097ee991dbd7bc0e01113c583e844 languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15, @jridgewell/sourcemap-codec@npm:^1.5.0": - version: 1.5.0 - resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" - checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18 +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15, @jridgewell/sourcemap-codec@npm:^1.5.0, @jridgewell/sourcemap-codec@npm:^1.5.5": + version: 1.5.5 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" + checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 languageName: node linkType: hard @@ -5580,13 +5668,13 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": - version: 0.3.25 - resolution: "@jridgewell/trace-mapping@npm:0.3.25" +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.28": + version: 0.3.31 + resolution: "@jridgewell/trace-mapping@npm:0.3.31" dependencies: "@jridgewell/resolve-uri": "npm:^3.1.0" "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 10c0/3d1ce6ebc69df9682a5a8896b414c6537e428a1d68b02fcc8363b04284a8ca0df04d0ee3013132252ab14f2527bc13bea6526a912ecb5658f0e39fd2860b4df4 + checksum: 10c0/4b30ec8cd56c5fd9a661f088230af01e0c1a3888d11ffb6b47639700f71225be21d1f7e168048d6d4f9449207b978a235c07c8f15c07705685d16dc06280e9d9 languageName: node linkType: hard @@ -5604,73 +5692,98 @@ __metadata: languageName: node linkType: hard -"@libp2p/crypto@npm:^5.0.0, @libp2p/crypto@npm:^5.1.1": - version: 5.1.1 - resolution: "@libp2p/crypto@npm:5.1.1" +"@libp2p/crypto@npm:^5.0.0, @libp2p/crypto@npm:^5.1.8": + version: 5.1.13 + resolution: "@libp2p/crypto@npm:5.1.13" dependencies: - "@libp2p/interface": "npm:^2.9.0" - "@noble/curves": "npm:^1.7.0" - "@noble/hashes": "npm:^1.6.1" - multiformats: "npm:^13.3.1" - protons-runtime: "npm:^5.5.0" + "@libp2p/interface": "npm:^3.1.0" + "@noble/curves": "npm:^2.0.1" + "@noble/hashes": "npm:^2.0.1" + multiformats: "npm:^13.4.0" + protons-runtime: "npm:^5.6.0" uint8arraylist: "npm:^2.4.8" uint8arrays: "npm:^5.1.0" - checksum: 10c0/8f2eccd1ff54b9832a78280b556dac2bb129f5c964e86ccbb75fe5b5973031d8b7be89bf590780d2196d5c5828af96bdd9580d5e9869a8dd26e800a7496ba344 + checksum: 10c0/18a3b5ec62e435b21fd3ff446e50e2f8711c43d9e5ffb4ca36b77da8de22e3a30a5cc914728b33f7f117bfe9af4c9a1fe74d32a7f6d85f91a241fea506a04992 languageName: node linkType: hard -"@libp2p/interface@npm:^2.0.0, @libp2p/interface@npm:^2.9.0": - version: 2.9.0 - resolution: "@libp2p/interface@npm:2.9.0" +"@libp2p/interface@npm:^2.0.0, @libp2p/interface@npm:^2.11.0": + version: 2.11.0 + resolution: "@libp2p/interface@npm:2.11.0" dependencies: - "@multiformats/multiaddr": "npm:^12.3.3" + "@multiformats/dns": "npm:^1.0.6" + "@multiformats/multiaddr": "npm:^12.4.4" it-pushable: "npm:^3.2.3" it-stream-types: "npm:^2.0.2" - multiformats: "npm:^13.3.1" + main-event: "npm:^1.0.1" + multiformats: "npm:^13.3.6" + progress-events: "npm:^1.0.1" + uint8arraylist: "npm:^2.4.8" + checksum: 10c0/d156bf82182bf2ec9eeba0041cfbfeb86f9d7ac6f362f5b331fc7463c9b21704938d38a2f37e8a56202540c56cdeb36309f598ba62406267bb933572228d6c1b + languageName: node + linkType: hard + +"@libp2p/interface@npm:^3.1.0": + version: 3.1.0 + resolution: "@libp2p/interface@npm:3.1.0" + dependencies: + "@multiformats/dns": "npm:^1.0.6" + "@multiformats/multiaddr": "npm:^13.0.1" + main-event: "npm:^1.0.1" + multiformats: "npm:^13.4.0" progress-events: "npm:^1.0.1" uint8arraylist: "npm:^2.4.8" - checksum: 10c0/943c8eaabea51e47c6455894808a17b1f5eaf756fe03e9b51ad6cdb1c572f08f827d18982124ee436b8addeddec978089be7cbf502346a44787e962279197230 + checksum: 10c0/b0c922bca5b8676d3d6edae3335850aaea9a76d5d9520d5e46109d94aa2bb998f63b0e9e1378e896f0a5e379eede29a96752e114bea8dd7e42277068cbd46071 languageName: node linkType: hard "@libp2p/logger@npm:^5.0.0": - version: 5.1.15 - resolution: "@libp2p/logger@npm:5.1.15" + version: 5.2.0 + resolution: "@libp2p/logger@npm:5.2.0" dependencies: - "@libp2p/interface": "npm:^2.9.0" - "@multiformats/multiaddr": "npm:^12.3.3" + "@libp2p/interface": "npm:^2.11.0" + "@multiformats/multiaddr": "npm:^12.4.4" interface-datastore: "npm:^8.3.1" - multiformats: "npm:^13.3.1" + multiformats: "npm:^13.3.6" weald: "npm:^1.0.4" - checksum: 10c0/7ad649aa496baaa12827a127805349b2dd92f16410d5e113bfbfafb9684c824e27b7398c33044aa0d53c4004fe79e4ef4de1a87d082a3b7f5bca71f5167286c8 + checksum: 10c0/ef72bbfda83fbca61c012da981ed42975cc3bbe77b8d48f803837721e8cb59ca894c922a8fb48ea40ad19d6e5712418482907a98d0639b8ee44b53139a377e0f languageName: node linkType: hard "@libp2p/peer-id@npm:^5.0.0": - version: 5.1.2 - resolution: "@libp2p/peer-id@npm:5.1.2" + version: 5.1.9 + resolution: "@libp2p/peer-id@npm:5.1.9" dependencies: - "@libp2p/crypto": "npm:^5.1.1" - "@libp2p/interface": "npm:^2.9.0" - multiformats: "npm:^13.3.1" + "@libp2p/crypto": "npm:^5.1.8" + "@libp2p/interface": "npm:^2.11.0" + multiformats: "npm:^13.3.6" uint8arrays: "npm:^5.1.0" - checksum: 10c0/6654afec15357890a2f0745f2abc5eb009e244ff7af3d5280631093fd5491837e82d759e0c79067ecd538d80584378012d188f7686a72cce42799ee67b3f3b5d + checksum: 10c0/5b4da2b53970ed646003a5d223fff608bc1d1b42e6f3d9397f3f0c9c78f3f10798f7def8dc8bafc1b5025b9c712cbd1f78d590dba64e29e34b9640a565c525b8 languageName: node linkType: hard -"@lit-labs/ssr-dom-shim@npm:^1.2.0": - version: 1.3.0 - resolution: "@lit-labs/ssr-dom-shim@npm:1.3.0" - checksum: 10c0/743a9b295ef2f186712f08883da553c9990be291409615309c99aa4946cfe440a184e4213c790c24505c80beb86b9cfecf10b5fb30ce17c83698f8424f48678d +"@lit-labs/ssr-dom-shim@npm:^1.4.0": + version: 1.4.0 + resolution: "@lit-labs/ssr-dom-shim@npm:1.4.0" + checksum: 10c0/eb8b4c6ed83db48e2f2c8c038f88e0ac302214918e5c1209458cb82a35ce27ce586100c5692885b2c5520f6941b2c3512f26c4d7b7dd48f13f17f1668553395a languageName: node linkType: hard -"@lit/reactive-element@npm:^2.0.0, @lit/reactive-element@npm:^2.1.0": - version: 2.1.0 - resolution: "@lit/reactive-element@npm:2.1.0" +"@lit/react@npm:1.0.8": + version: 1.0.8 + resolution: "@lit/react@npm:1.0.8" + peerDependencies: + "@types/react": 17 || 18 || 19 + checksum: 10c0/18bf3eb6584fa989e0ad40988b349a4401da1cecd5bf1c6edfc1c5caed80037852a4ebe5685b04941e5b28ccf93e740676dae32773d7ae44b1479b96538392b1 + languageName: node + linkType: hard + +"@lit/reactive-element@npm:^2.1.0": + version: 2.1.1 + resolution: "@lit/reactive-element@npm:2.1.1" dependencies: - "@lit-labs/ssr-dom-shim": "npm:^1.2.0" - checksum: 10c0/3cd61c4e7cc8effeb2c246d5dada8fbe0a730e9e0dd488eb38c91a4f63b773e3b7f86f8384051677298e73de470c7ca6b5634df3ca190b307f8bb8e0d51bb91c + "@lit-labs/ssr-dom-shim": "npm:^1.4.0" + checksum: 10c0/200d72c3d1bb8babc88123f3684e52cf490ec20cc7974002d666b092afa18e4a7c1ca15883c84c0b8671361a9875905eb18c1f03d20ecbbbaefdaec6e0c7c4eb languageName: node linkType: hard @@ -5819,6 +5932,16 @@ __metadata: languageName: node linkType: hard +"@metamask/rpc-errors@npm:7.0.2": + version: 7.0.2 + resolution: "@metamask/rpc-errors@npm:7.0.2" + dependencies: + "@metamask/utils": "npm:^11.0.1" + fast-safe-stringify: "npm:^2.0.6" + checksum: 10c0/ff9f96ea89fdd4f9bbb4c04efb24a47051c5ba3763fe570b0abce5a74726b0991aeb5c7baae09ec4555ccb2415c53858a5e40e641cf2e4e8f01dc1886291c062 + languageName: node + linkType: hard + "@metamask/rpc-errors@npm:^6.2.1": version: 6.4.0 resolution: "@metamask/rpc-errors@npm:6.4.0" @@ -5843,13 +5966,23 @@ __metadata: languageName: node linkType: hard -"@metamask/sdk-communication-layer@npm:0.32.0": - version: 0.32.0 - resolution: "@metamask/sdk-communication-layer@npm:0.32.0" +"@metamask/sdk-analytics@npm:0.0.5": + version: 0.0.5 + resolution: "@metamask/sdk-analytics@npm:0.0.5" + dependencies: + openapi-fetch: "npm:^0.13.5" + checksum: 10c0/4beaac3a5fb6c741ee10e9bc6882ccdec8cb6224d702c3d3b3ee52f66d2f47647090c6d6d3b2fdd27b0b507d7077b9d78d559e6a57094aeca4ec9d7be4f86899 + languageName: node + linkType: hard + +"@metamask/sdk-communication-layer@npm:0.33.1": + version: 0.33.1 + resolution: "@metamask/sdk-communication-layer@npm:0.33.1" dependencies: + "@metamask/sdk-analytics": "npm:0.0.5" bufferutil: "npm:^4.0.8" date-fns: "npm:^2.29.3" - debug: "npm:^4.3.4" + debug: "npm:4.3.4" utf-8-validate: "npm:^5.0.2" uuid: "npm:^8.3.2" peerDependencies: @@ -5858,32 +5991,33 @@ __metadata: eventemitter2: ^6.4.9 readable-stream: ^3.6.2 socket.io-client: ^4.5.1 - checksum: 10c0/f13defc09ff46839e4d5429deb327306b5c0c49378fdb2ccb3acaa89a61cc44e7f7e49bbeb56be88dd25c529c902dac0860091829893e730335094194c906ce4 + checksum: 10c0/fefe55cd144c2bbfac45b3b59c5946f4e1afb2edb9a2047b45dba7449f4d8029f83a7eaa789d921b5cb9fb678a886e11a516b6d1bd46c7f8a6ee9a216e8b5e3c languageName: node linkType: hard -"@metamask/sdk-install-modal-web@npm:0.32.0": - version: 0.32.0 - resolution: "@metamask/sdk-install-modal-web@npm:0.32.0" +"@metamask/sdk-install-modal-web@npm:0.32.1": + version: 0.32.1 + resolution: "@metamask/sdk-install-modal-web@npm:0.32.1" dependencies: "@paulmillr/qr": "npm:^0.2.1" - checksum: 10c0/e28b12924bc26f15c62d7489e07a0201a02105b6d52babbca30d86c8488ec8e0e13fceb088aa76713eea4022957cf507053d06dea6cb35c091dcb3345e2fa435 + checksum: 10c0/7684610424850f9e4bd084ca4788baf2de0a0897355ab4b39dd4acbb00d41a4e0f92956499d824e71bb9d004cd7a128fbabe84b63a6d81d57a922ab29395bcc0 languageName: node linkType: hard -"@metamask/sdk@npm:0.32.0": - version: 0.32.0 - resolution: "@metamask/sdk@npm:0.32.0" +"@metamask/sdk@npm:0.33.1": + version: 0.33.1 + resolution: "@metamask/sdk@npm:0.33.1" dependencies: "@babel/runtime": "npm:^7.26.0" "@metamask/onboarding": "npm:^1.0.1" "@metamask/providers": "npm:16.1.0" - "@metamask/sdk-communication-layer": "npm:0.32.0" - "@metamask/sdk-install-modal-web": "npm:0.32.0" + "@metamask/sdk-analytics": "npm:0.0.5" + "@metamask/sdk-communication-layer": "npm:0.33.1" + "@metamask/sdk-install-modal-web": "npm:0.32.1" "@paulmillr/qr": "npm:^0.2.1" bowser: "npm:^2.9.0" cross-fetch: "npm:^4.0.0" - debug: "npm:^4.3.4" + debug: "npm:4.3.4" eciesjs: "npm:^0.4.11" eth-rpc-errors: "npm:^4.0.3" eventemitter2: "npm:^6.4.9" @@ -5894,7 +6028,7 @@ __metadata: tslib: "npm:^2.6.0" util: "npm:^0.12.4" uuid: "npm:^8.3.2" - checksum: 10c0/7038015fd6b516d17325b383650ec97ffe2ade3d9959c8af8d568a8742ea55bbb8a54c0ae4cbe256074d4e791c60888100ce8173624b805febdf4a707db29204 + checksum: 10c0/a2676a354f30440d55a61a29e5aeea8a36b6a6c21fa0b35283a1a0332220b00f75c0e7c78814ff5dcbbfdf61d9253a1ae8e105d2824a7a93daa549b5da21a356 languageName: node linkType: hard @@ -5905,6 +6039,25 @@ __metadata: languageName: node linkType: hard +"@metamask/utils@npm:^11.0.1": + version: 11.8.1 + resolution: "@metamask/utils@npm:11.8.1" + dependencies: + "@ethereumjs/tx": "npm:^4.2.0" + "@metamask/superstruct": "npm:^3.1.0" + "@noble/hashes": "npm:^1.3.1" + "@scure/base": "npm:^1.1.3" + "@types/debug": "npm:^4.1.7" + "@types/lodash": "npm:^4.17.20" + debug: "npm:^4.3.4" + lodash: "npm:^4.17.21" + pony-cause: "npm:^2.1.10" + semver: "npm:^7.5.4" + uuid: "npm:^9.0.1" + checksum: 10c0/71af490e071e7a6d3c31e0fbcb0e25d8f4b7b7409f94e81adcaa31e67bd1dcd71c3789ab404d038ab6f780ed9a202d1f2994067f8ca399b4971d7c69733fbaae + languageName: node + linkType: hard + "@metamask/utils@npm:^5.0.1": version: 5.0.2 resolution: "@metamask/utils@npm:5.0.2" @@ -5985,9 +6138,9 @@ __metadata: languageName: node linkType: hard -"@mswjs/interceptors@npm:^0.38.5": - version: 0.38.6 - resolution: "@mswjs/interceptors@npm:0.38.6" +"@mswjs/interceptors@npm:^0.39.5": + version: 0.39.8 + resolution: "@mswjs/interceptors@npm:0.39.8" dependencies: "@open-draft/deferred-promise": "npm:^2.2.0" "@open-draft/logger": "npm:^0.3.0" @@ -5995,7 +6148,7 @@ __metadata: is-node-process: "npm:^1.2.0" outvariant: "npm:^1.4.3" strict-event-emitter: "npm:^0.5.1" - checksum: 10c0/86aada6b0fb1ca2d7359cac89e5962db2be5978b9cd3e6fa48d428fad5c4c962eff1ed9edfa5cb4881e929369eeaf6a09c337e8880a9324c9703283cf9b1a137 + checksum: 10c0/0d07625ff1bbbf4b5ea702e164914490e26cc3754323f544429f843f5ad8b157194f6a650259cfd1bbdeb6003e1354f63be1d9bf483816aaa17d93ef4b321aaf languageName: node linkType: hard @@ -6021,59 +6174,43 @@ __metadata: languageName: node linkType: hard -"@mui/core-downloads-tracker@npm:^5.17.1": - version: 5.17.1 - resolution: "@mui/core-downloads-tracker@npm:5.17.1" - checksum: 10c0/c36641e274a27cdef8a75218021a5ebef0ce588cd0aec004802d56e8d59ac9d8603b8b4840df480de40ce2c3af8898d49929a8564ed5a784ff2b3100dce31366 - languageName: node - linkType: hard - -"@mui/core-downloads-tracker@npm:^7.2.0": - version: 7.2.0 - resolution: "@mui/core-downloads-tracker@npm:7.2.0" - checksum: 10c0/f9e3dd760de2120bf26d957f2bc186caf03e9bc75e9888290549ee79686dbb650bfbbff4abf42628bdcbb0b40a9b311701bb665052b8956a55a7599349664ddb +"@mui/core-downloads-tracker@npm:^5.18.0": + version: 5.18.0 + resolution: "@mui/core-downloads-tracker@npm:5.18.0" + checksum: 10c0/d82962a1b69878cf6a6785b6600302a943d474af00bba50169e207ce0bb5d072f1ed65783c7d5ca940cbe4228ab86bc95bb57545cf2cd039d588f2571bbefe0c languageName: node linkType: hard -"@mui/icons-material@npm:^7.0.1": - version: 7.1.0 - resolution: "@mui/icons-material@npm:7.1.0" - dependencies: - "@babel/runtime": "npm:^7.27.1" - peerDependencies: - "@mui/material": ^7.1.0 - "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/d83c5a1506526525fa93053b4ecd4ff498236a415f7594e75252fbec7e4584bb8470db3e04198a4924e8bd67af96cbaf93a9dee0f0ef9fa19a999bd6ade01734 +"@mui/core-downloads-tracker@npm:^7.3.4": + version: 7.3.4 + resolution: "@mui/core-downloads-tracker@npm:7.3.4" + checksum: 10c0/938037e8a1141edf9bef744248dcddd91277d08ddf9de0a24d027fd8debea7bf81da22f01902d5979df4f9d3ef4931069131f2ce6e0c0d8e82a286896a1e372c languageName: node linkType: hard -"@mui/icons-material@npm:^7.2.0": - version: 7.2.0 - resolution: "@mui/icons-material@npm:7.2.0" +"@mui/icons-material@npm:^7.0.1, @mui/icons-material@npm:^7.2.0": + version: 7.3.4 + resolution: "@mui/icons-material@npm:7.3.4" dependencies: - "@babel/runtime": "npm:^7.27.6" + "@babel/runtime": "npm:^7.28.4" peerDependencies: - "@mui/material": ^7.2.0 + "@mui/material": ^7.3.4 "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/40943e3c69be132d9c9888388d0624d7d3ab6832a58e31cccbf1d7f2678cdfddf3d876fce7f059f45beaf15fe5f169dd9d2958e68b8b33c62598ba2741b65128 + checksum: 10c0/09c5708f0a96979dafeefdfbaef4950463e987bdc283874831d67ae0ce32cbc946bf408ba5084bd7a8f57af0cb87c3fdfddcf4c21e0946bb5e17c34abfd49d80 languageName: node linkType: hard "@mui/lab@npm:^5.0.0-alpha.141": - version: 5.0.0-alpha.176 - resolution: "@mui/lab@npm:5.0.0-alpha.176" + version: 5.0.0-alpha.177 + resolution: "@mui/lab@npm:5.0.0-alpha.177" dependencies: "@babel/runtime": "npm:^7.23.9" "@mui/base": "npm:5.0.0-beta.40-1" - "@mui/system": "npm:^5.17.1" + "@mui/system": "npm:^5.18.0" "@mui/types": "npm:~7.2.15" "@mui/utils": "npm:^5.17.1" clsx: "npm:^2.1.0" @@ -6092,17 +6229,17 @@ __metadata: optional: true "@types/react": optional: true - checksum: 10c0/2ffe5e538dea5458f3450f1f1622388298826ace0e1adac13e6f7196099c535ba166dd605adb636f18fce4d1618f9b98af7aaf5587a77df2405ce9e653b9196e + checksum: 10c0/ccba45f3379e25dcf7c238e724d244962cdf13b9d6a5d5554af73e3da90ba548ffa300be7844229817a70fcf5d3dbf163300a1967e00a6cb5bf7c4ca80232523 languageName: node linkType: hard "@mui/material@npm:^5.16.7": - version: 5.17.1 - resolution: "@mui/material@npm:5.17.1" + version: 5.18.0 + resolution: "@mui/material@npm:5.18.0" dependencies: "@babel/runtime": "npm:^7.23.9" - "@mui/core-downloads-tracker": "npm:^5.17.1" - "@mui/system": "npm:^5.17.1" + "@mui/core-downloads-tracker": "npm:^5.18.0" + "@mui/system": "npm:^5.18.0" "@mui/types": "npm:~7.2.15" "@mui/utils": "npm:^5.17.1" "@popperjs/core": "npm:^2.11.8" @@ -6125,30 +6262,30 @@ __metadata: optional: true "@types/react": optional: true - checksum: 10c0/55c120879e65833dda16ae1100eb1e2b43d0a7c80a9d1209121c71953c5e7646a1e76d8bd0204382a401af2d8d11b59383e92969525a6cc3f0149a138b25cad7 + checksum: 10c0/a743c9105d08b636d4d9cf0aa276283b9095113771c188c7f5ac6953606dd77a5eb082dbbd889446a9a8573b8676d7249140c29eec55ae8320592e5f02d0f2cb languageName: node linkType: hard "@mui/material@npm:^7.2.0": - version: 7.2.0 - resolution: "@mui/material@npm:7.2.0" - dependencies: - "@babel/runtime": "npm:^7.27.6" - "@mui/core-downloads-tracker": "npm:^7.2.0" - "@mui/system": "npm:^7.2.0" - "@mui/types": "npm:^7.4.4" - "@mui/utils": "npm:^7.2.0" + version: 7.3.4 + resolution: "@mui/material@npm:7.3.4" + dependencies: + "@babel/runtime": "npm:^7.28.4" + "@mui/core-downloads-tracker": "npm:^7.3.4" + "@mui/system": "npm:^7.3.3" + "@mui/types": "npm:^7.4.7" + "@mui/utils": "npm:^7.3.3" "@popperjs/core": "npm:^2.11.8" "@types/react-transition-group": "npm:^4.4.12" clsx: "npm:^2.1.1" csstype: "npm:^3.1.3" prop-types: "npm:^15.8.1" - react-is: "npm:^19.1.0" + react-is: "npm:^19.1.1" react-transition-group: "npm:^4.4.5" peerDependencies: "@emotion/react": ^11.5.0 "@emotion/styled": ^11.3.0 - "@mui/material-pigment-css": ^7.2.0 + "@mui/material-pigment-css": ^7.3.3 "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -6161,7 +6298,7 @@ __metadata: optional: true "@types/react": optional: true - checksum: 10c0/56e1d76356b1a6a25ef2ba80448e117548612ddc796d5eb7704ae6308c1888df6378f4e61a63b7bbc15bf399dac0b85cc545619d0a4907a2a2fcff00361bd166 + checksum: 10c0/bd6ad058c3505bb8b680113ade6ac2cb20b21f7bc6a53c202c89a950b3570586e16646a7a04930ef6ea707a77000440d73b246301ff0d09380b2fb392452b678 languageName: node linkType: hard @@ -6182,12 +6319,12 @@ __metadata: languageName: node linkType: hard -"@mui/private-theming@npm:^7.2.0": - version: 7.2.0 - resolution: "@mui/private-theming@npm:7.2.0" +"@mui/private-theming@npm:^7.3.3": + version: 7.3.3 + resolution: "@mui/private-theming@npm:7.3.3" dependencies: - "@babel/runtime": "npm:^7.27.6" - "@mui/utils": "npm:^7.2.0" + "@babel/runtime": "npm:^7.28.4" + "@mui/utils": "npm:^7.3.3" prop-types: "npm:^15.8.1" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -6195,7 +6332,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/902b34889487c622cf6e67bf102c4b8dbd888c941cbf829150cf81b4145adb50a3bb261a26539b89d5134c24fc5e1e344cfe1782c58085b77b7533889c589c9d + checksum: 10c0/67b9a6c7cfd8f2c3c1236ea67573ca306c1c02075a795d308ef52adcdeefc8fca155e1d7f725ea961dde7c11f7f9961dd3cf4ce9a082128b28abc7666f0b141c languageName: node linkType: hard @@ -6214,12 +6351,13 @@ __metadata: languageName: node linkType: hard -"@mui/styled-engine@npm:^5.16.14": - version: 5.16.14 - resolution: "@mui/styled-engine@npm:5.16.14" +"@mui/styled-engine@npm:^5.18.0": + version: 5.18.0 + resolution: "@mui/styled-engine@npm:5.18.0" dependencies: "@babel/runtime": "npm:^7.23.9" "@emotion/cache": "npm:^11.13.5" + "@emotion/serialize": "npm:^1.3.3" csstype: "npm:^3.1.3" prop-types: "npm:^15.8.1" peerDependencies: @@ -6231,15 +6369,15 @@ __metadata: optional: true "@emotion/styled": optional: true - checksum: 10c0/cd512faea4ad3ff5a9b315e136a518223ea3e4e34462fe70c56d1f166c46bee0a885ed982773d75c1d56ead62b95989cc5907601e8d65bfa75494b3f3288c2ad + checksum: 10c0/68dad75142eea160fc51abf14915d07afd0e7e7791823f6ea6845b2037fde9de6c17b84247a1f283a1437d130857cb97c1a8474c25c161a934671bc48f205418 languageName: node linkType: hard -"@mui/styled-engine@npm:^7.2.0": - version: 7.2.0 - resolution: "@mui/styled-engine@npm:7.2.0" +"@mui/styled-engine@npm:^7.3.3": + version: 7.3.3 + resolution: "@mui/styled-engine@npm:7.3.3" dependencies: - "@babel/runtime": "npm:^7.27.6" + "@babel/runtime": "npm:^7.28.4" "@emotion/cache": "npm:^11.14.0" "@emotion/serialize": "npm:^1.3.3" "@emotion/sheet": "npm:^1.4.0" @@ -6254,17 +6392,17 @@ __metadata: optional: true "@emotion/styled": optional: true - checksum: 10c0/d9b6d688f0505a8b877a16cfd43b6f554d77ed1ec481243a8fe154c042c37ce8edc42449cd5e6509329273450f809a88f8a4b248267e377b87db51fd0c496330 + checksum: 10c0/8e38f3b15b2ed4e736d27d4ea3379b05f2fe9bddcd83f52870a3a055193c52b21ef4a7b6007c108e19bf03f46f04483e803834353fc901ab8d2975b76dc5f930 languageName: node linkType: hard -"@mui/system@npm:^5.15.14, @mui/system@npm:^5.17.1": - version: 5.17.1 - resolution: "@mui/system@npm:5.17.1" +"@mui/system@npm:^5.15.14, @mui/system@npm:^5.18.0": + version: 5.18.0 + resolution: "@mui/system@npm:5.18.0" dependencies: "@babel/runtime": "npm:^7.23.9" "@mui/private-theming": "npm:^5.17.1" - "@mui/styled-engine": "npm:^5.16.14" + "@mui/styled-engine": "npm:^5.18.0" "@mui/types": "npm:~7.2.15" "@mui/utils": "npm:^5.17.1" clsx: "npm:^2.1.0" @@ -6282,19 +6420,19 @@ __metadata: optional: true "@types/react": optional: true - checksum: 10c0/ab74424e536164b720126ddd31ff0ceea4fb51d72f8d18f9be5621b33f8bbdf7fa8c96f8d1d2c4544ddacbaa84df1a197667f10cbe8915e00df103930e40f56e + checksum: 10c0/9f5ad15f08c71560e9723b1f136214a0871079a976285f8b813041081850e1f9e2e9fb00766c15814217852694a521a9a91cde3bed95b8062defa8052f69eabf languageName: node linkType: hard -"@mui/system@npm:^7.2.0": - version: 7.2.0 - resolution: "@mui/system@npm:7.2.0" +"@mui/system@npm:^7.2.0, @mui/system@npm:^7.3.3": + version: 7.3.3 + resolution: "@mui/system@npm:7.3.3" dependencies: - "@babel/runtime": "npm:^7.27.6" - "@mui/private-theming": "npm:^7.2.0" - "@mui/styled-engine": "npm:^7.2.0" - "@mui/types": "npm:^7.4.4" - "@mui/utils": "npm:^7.2.0" + "@babel/runtime": "npm:^7.28.4" + "@mui/private-theming": "npm:^7.3.3" + "@mui/styled-engine": "npm:^7.3.3" + "@mui/types": "npm:^7.4.7" + "@mui/utils": "npm:^7.3.3" clsx: "npm:^2.1.1" csstype: "npm:^3.1.3" prop-types: "npm:^15.8.1" @@ -6310,49 +6448,21 @@ __metadata: optional: true "@types/react": optional: true - checksum: 10c0/5ae7da82dad8a72fe20994d21e949c3d74b9de4158511580a2fde4db4ea4ebc7b12f61a73c0df862b7154714a095b84e51defbb898688e08a46e1702706d5b6d - languageName: node - linkType: hard - -"@mui/types@npm:^7.4.2": - version: 7.4.2 - resolution: "@mui/types@npm:7.4.2" - dependencies: - "@babel/runtime": "npm:^7.27.1" - peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/9401abf306c5c993e7b21136684f80d4aefe28e00d435fccb963611bf009af71dfcf65e509c1db720a0c7d5bf9a364706aa38bd8c0a3b47718aca60f7063aac7 - languageName: node - linkType: hard - -"@mui/types@npm:^7.4.3": - version: 7.4.3 - resolution: "@mui/types@npm:7.4.3" - dependencies: - "@babel/runtime": "npm:^7.27.1" - peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/8078ed0c63211377af4cf244e0b8a94d15748253139a330f6c7b983b755a57fa89bdba5d8b9ca4c30944b1567115eab3cbb9b9869c14489b0ad3249e858c9fa1 + checksum: 10c0/b232a978c88bd51af8809197ead9269b19fcf26a6f7091337b1a5adb0c2f2ca51376b73695d3795a3c80c933e0572843f902aaf2c85e0755112b7e6e78de884a languageName: node linkType: hard -"@mui/types@npm:^7.4.4": - version: 7.4.4 - resolution: "@mui/types@npm:7.4.4" +"@mui/types@npm:^7.4.7": + version: 7.4.7 + resolution: "@mui/types@npm:7.4.7" dependencies: - "@babel/runtime": "npm:^7.27.6" + "@babel/runtime": "npm:^7.28.4" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/50987623c477a55eaccc11bb0fe651df99e14b4a8bc29a53c493bce7d8b41529c7e7c8c8d3f55d2539db5531e7b4eff9feb93c73134947f465fc41efc43556c2 + checksum: 10c0/f2d5104a7169be5b7abe5f51be4d774517486932d8d3d8eac9a90c2f256b36af1cfe7c62ae47ee0e8680eb9b7b561c3b3b4b0dc9156123bf56c6453f8027492d languageName: node linkType: hard @@ -6368,23 +6478,23 @@ __metadata: languageName: node linkType: hard -"@mui/utils@npm:^5.16.6 || ^6.0.0 || ^7.0.0": - version: 7.1.0 - resolution: "@mui/utils@npm:7.1.0" +"@mui/utils@npm:^5.16.6 || ^6.0.0 || ^7.0.0, @mui/utils@npm:^7.3.3": + version: 7.3.3 + resolution: "@mui/utils@npm:7.3.3" dependencies: - "@babel/runtime": "npm:^7.27.1" - "@mui/types": "npm:^7.4.2" - "@types/prop-types": "npm:^15.7.14" + "@babel/runtime": "npm:^7.28.4" + "@mui/types": "npm:^7.4.7" + "@types/prop-types": "npm:^15.7.15" clsx: "npm:^2.1.1" prop-types: "npm:^15.8.1" - react-is: "npm:^19.1.0" + react-is: "npm:^19.1.1" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/1fa21c44c54161b2239207c1900f3960a1cea5c7a3fda5f830308c8a08b05a46c7bc2dbb467baf5c2d3742677b2b19be1508d17a1dff388c9226d3663460ad08 + checksum: 10c0/43a87f8cee97b7f29d30f4f0014148081ad5d56e660d6750fb42b3247b1c9e032a026939966827232f930831512b91b6c94b32e1c1ccd553242fd049b6e8fe80 languageName: node linkType: hard @@ -6408,56 +6518,17 @@ __metadata: languageName: node linkType: hard -"@mui/utils@npm:^7.1.1": - version: 7.1.1 - resolution: "@mui/utils@npm:7.1.1" - dependencies: - "@babel/runtime": "npm:^7.27.1" - "@mui/types": "npm:^7.4.3" - "@types/prop-types": "npm:^15.7.14" - clsx: "npm:^2.1.1" - prop-types: "npm:^15.8.1" - react-is: "npm:^19.1.0" - peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/d2563c4be785a94d55d32df7e51be530bb56a21ffbf4d1ca084c51a8b598ad7ee6d8bb30dd4171691c3b669eea6d8da07280aedd8d96fc539cfd0e0e5b9a48a1 - languageName: node - linkType: hard - -"@mui/utils@npm:^7.2.0": - version: 7.2.0 - resolution: "@mui/utils@npm:7.2.0" - dependencies: - "@babel/runtime": "npm:^7.27.6" - "@mui/types": "npm:^7.4.4" - "@types/prop-types": "npm:^15.7.15" - clsx: "npm:^2.1.1" - prop-types: "npm:^15.8.1" - react-is: "npm:^19.1.0" - peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/e1b49f3c9e822d51ba12c7ba16b4efdf5bcbc59ea5f980da331864330425dace49922206f2ff354c925332fe5cc7bfd8d1bcb9d546a68edc21d7f1e95124ace6 - languageName: node - linkType: hard - "@mui/x-data-grid@npm:^8.7.0": - version: 8.7.0 - resolution: "@mui/x-data-grid@npm:8.7.0" + version: 8.16.0 + resolution: "@mui/x-data-grid@npm:8.16.0" dependencies: - "@babel/runtime": "npm:^7.27.6" - "@mui/utils": "npm:^7.1.1" - "@mui/x-internals": "npm:8.7.0" + "@babel/runtime": "npm:^7.28.4" + "@mui/utils": "npm:^7.3.3" + "@mui/x-internals": "npm:8.16.0" + "@mui/x-virtualizer": "npm:0.2.6" clsx: "npm:^2.1.1" prop-types: "npm:^15.8.1" - use-sync-external-store: "npm:^1.5.0" + use-sync-external-store: "npm:^1.6.0" peerDependencies: "@emotion/react": ^11.9.0 "@emotion/styled": ^11.8.1 @@ -6470,13 +6541,13 @@ __metadata: optional: true "@emotion/styled": optional: true - checksum: 10c0/cb77a88b336a4809dcec2e1f0252700eb8467913eb19adea32b6c65c0a0f3ac68311d82f4f83f8ef6269d2e90ddd83518c378cfcb8f1a45dfc7d59fd2a749fe9 + checksum: 10c0/0999080366b6f24d9216ea0650dc1789896423d7a0c17a3b67f765edd20f731659709f14f5b411feb262a9ac42c7fb5051d678a9c871f467e2124e95d2182536 languageName: node linkType: hard "@mui/x-date-pickers@npm:^7.23.6": - version: 7.29.2 - resolution: "@mui/x-date-pickers@npm:7.29.2" + version: 7.29.4 + resolution: "@mui/x-date-pickers@npm:7.29.4" dependencies: "@babel/runtime": "npm:^7.25.7" "@mui/utils": "npm:^5.16.6 || ^6.0.0 || ^7.0.0" @@ -6518,17 +6589,17 @@ __metadata: optional: true moment-jalaali: optional: true - checksum: 10c0/d5bde109d101a3d7cf5a2a1041fabca2efc35d159bb4ffdb34e0bd30d316716336ebaedee1189dd385e3a3a9d149836d09b27fb4a2035ac53733edf704b1cedc + checksum: 10c0/d56a0749da577979ad88e0f18dbb624a483458f5d8efe75d9d6b1b460edfd50579f7f6d6cde5cc0a7ec662cfa98fbe1865109cbf6cbc49d02606d0e1cc324ed7 languageName: node linkType: hard "@mui/x-date-pickers@npm:^8.7.0": - version: 8.7.0 - resolution: "@mui/x-date-pickers@npm:8.7.0" + version: 8.16.0 + resolution: "@mui/x-date-pickers@npm:8.16.0" dependencies: - "@babel/runtime": "npm:^7.27.6" - "@mui/utils": "npm:^7.1.1" - "@mui/x-internals": "npm:8.7.0" + "@babel/runtime": "npm:^7.28.4" + "@mui/utils": "npm:^7.3.3" + "@mui/x-internals": "npm:8.16.0" "@types/react-transition-group": "npm:^4.4.12" clsx: "npm:^2.1.1" prop-types: "npm:^15.8.1" @@ -6566,7 +6637,7 @@ __metadata: optional: true moment-jalaali: optional: true - checksum: 10c0/964b2ab033b50925536319e67512055ae496631595de3cf488b37cc1d44c7f962645eae7942589c4817d8e82fa35fd819cae62108b4902cb916e8315774ce966 + checksum: 10c0/4865d67fa1609a820c0a79a62b7601ff72741ea4572c410eaf9d241913ea41268c24b86a0ae38e4592ce606fd294559b8ce0426ba60f35755d47d0dbef57e9ef languageName: node linkType: hard @@ -6582,77 +6653,92 @@ __metadata: languageName: node linkType: hard -"@mui/x-internals@npm:8.7.0": - version: 8.7.0 - resolution: "@mui/x-internals@npm:8.7.0" +"@mui/x-internals@npm:8.16.0": + version: 8.16.0 + resolution: "@mui/x-internals@npm:8.16.0" dependencies: - "@babel/runtime": "npm:^7.27.6" - "@mui/utils": "npm:^7.1.1" + "@babel/runtime": "npm:^7.28.4" + "@mui/utils": "npm:^7.3.3" reselect: "npm:^5.1.1" + use-sync-external-store: "npm:^1.6.0" peerDependencies: - "@mui/system": ^5.15.14 || ^6.0.0 || ^7.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10c0/c3fab5603a046db85f739195576de4581cf9afed7c6b299322b6745ad9336534afb1e62e8fa9fc5a37e1e9eee942b51c7bccf2ccecf591efa27650a513071eed + checksum: 10c0/bebc52a1140d707ef0a781bcc15c330e74612ca1733a7109af10adc00db062c0b581b7724cadaa3e407c3f2c71ccfbb145abe5c20e6111db154759afbdc22af1 languageName: node linkType: hard -"@multiformats/dns@npm:^1.0.3": - version: 1.0.6 - resolution: "@multiformats/dns@npm:1.0.6" +"@mui/x-virtualizer@npm:0.2.6": + version: 0.2.6 + resolution: "@mui/x-virtualizer@npm:0.2.6" + dependencies: + "@babel/runtime": "npm:^7.28.4" + "@mui/utils": "npm:^7.3.3" + "@mui/x-internals": "npm:8.16.0" + peerDependencies: + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10c0/39f9823ef5ec6f11ad4a29883f2db5d19750a8881557f5cfa15591a671b99c8eedd872f93543536661981732979fa54e1895bcca7b72983a25e6f04c2500ff21 + languageName: node + linkType: hard + +"@multiformats/dns@npm:^1.0.3, @multiformats/dns@npm:^1.0.6": + version: 1.0.10 + resolution: "@multiformats/dns@npm:1.0.10" dependencies: - "@types/dns-packet": "npm:^5.6.5" buffer: "npm:^6.0.3" dns-packet: "npm:^5.6.1" hashlru: "npm:^2.3.0" - p-queue: "npm:^8.0.1" + p-queue: "npm:^9.0.0" progress-events: "npm:^1.0.0" uint8arrays: "npm:^5.0.2" - checksum: 10c0/ab0323ec9e697fb345a47b68e9e6ee5e2def2f00e99467ac6c53c9b6f613cff2dc2b792e9270cfe385500b6cdcc565a1c6e6e7871c584a6bc49366441bc4fa7f + checksum: 10c0/0de645ac5056d3b9ddef6a974bfb68dd65aff2346e128817f04f041452e92f4b7fe9b6b318b0eaa50a64ad7d8838c2b19d6db90e476825e6caa581615fc538db languageName: node linkType: hard "@multiformats/multiaddr-to-uri@npm:^11.0.0": - version: 11.0.0 - resolution: "@multiformats/multiaddr-to-uri@npm:11.0.0" + version: 11.0.2 + resolution: "@multiformats/multiaddr-to-uri@npm:11.0.2" dependencies: "@multiformats/multiaddr": "npm:^12.3.0" - checksum: 10c0/d5e5f7efc41e82327a22ce9101cb6f479a78779d6e8b54015b90defd2562a939c7582361c7c3e6fbaf8cc857bca1da2a2bdbd4a8243ce98f1029e62758984827 + checksum: 10c0/1c10f9fccba205d018d1c12561bf8dc95b88fde3ce55f94088a245a7a8083b9b2e49252dd69a088536ac354bcaf04de6b458eb4d8541f35a4bfbfe508c277089 languageName: node linkType: hard -"@multiformats/multiaddr@npm:^12.2.1, @multiformats/multiaddr@npm:^12.3.0, @multiformats/multiaddr@npm:^12.3.3": - version: 12.4.0 - resolution: "@multiformats/multiaddr@npm:12.4.0" +"@multiformats/multiaddr@npm:^12.2.1, @multiformats/multiaddr@npm:^12.3.0, @multiformats/multiaddr@npm:^12.4.4": + version: 12.5.1 + resolution: "@multiformats/multiaddr@npm:12.5.1" dependencies: "@chainsafe/is-ip": "npm:^2.0.1" "@chainsafe/netmask": "npm:^2.0.0" "@multiformats/dns": "npm:^1.0.3" + abort-error: "npm:^1.0.1" multiformats: "npm:^13.0.0" uint8-varint: "npm:^2.0.1" uint8arrays: "npm:^5.0.0" - checksum: 10c0/ed623041070328b0c5f09094e647b70ce14b70476560850c63b5ddfe31bba5818f5ee992806154542dafab9b576d69610349db63773f3756769e64523e6415ad + checksum: 10c0/61df1d9d50f3b228c5a8c8c33170a23eff4cb2ea4686e9dc89f640edc2d865907736a18043ec4a05d368911c3f5eaa65643b367b10e529e543629225a7bb9dae languageName: node linkType: hard -"@napi-rs/wasm-runtime@npm:^0.2.11": - version: 0.2.11 - resolution: "@napi-rs/wasm-runtime@npm:0.2.11" +"@multiformats/multiaddr@npm:^13.0.1": + version: 13.0.1 + resolution: "@multiformats/multiaddr@npm:13.0.1" dependencies: - "@emnapi/core": "npm:^1.4.3" - "@emnapi/runtime": "npm:^1.4.3" - "@tybys/wasm-util": "npm:^0.9.0" - checksum: 10c0/049bd14c58b99fbe0967b95e9921c5503df196b59be22948d2155f17652eb305cff6728efd8685338b855da7e476dd2551fbe3a313fc2d810938f0717478441e + "@chainsafe/is-ip": "npm:^2.0.1" + multiformats: "npm:^13.0.0" + uint8-varint: "npm:^2.0.1" + uint8arrays: "npm:^5.0.0" + checksum: 10c0/e5f360c6674cf96010fe7c6875e62c4bf35639e8a8a75e6fad9384a23f1abf35ca689b90446341ba47c242c83a9d529c25d2610bee46fe2ff68f44d19321c138 languageName: node linkType: hard -"@napi-rs/wasm-runtime@npm:^0.2.9": - version: 0.2.9 - resolution: "@napi-rs/wasm-runtime@npm:0.2.9" +"@napi-rs/wasm-runtime@npm:^0.2.11": + version: 0.2.12 + resolution: "@napi-rs/wasm-runtime@npm:0.2.12" dependencies: - "@emnapi/core": "npm:^1.4.0" - "@emnapi/runtime": "npm:^1.4.0" - "@tybys/wasm-util": "npm:^0.9.0" - checksum: 10c0/1cc40b854b255f84e12ade634456ba489f6bf90659ef8164a16823c515c294024c96ee2bb81ab51f35493ba9496f62842b960f915dbdcdc1791f221f989e9e59 + "@emnapi/core": "npm:^1.4.3" + "@emnapi/runtime": "npm:^1.4.3" + "@tybys/wasm-util": "npm:^0.10.0" + checksum: 10c0/6d07922c0613aab30c6a497f4df297ca7c54e5b480e00035e0209b872d5c6aab7162fc49477267556109c2c7ed1eb9c65a174e27e9b87568106a87b0a6e3ca7d languageName: node linkType: hard @@ -6717,8 +6803,8 @@ __metadata: linkType: hard "@nestjs/common@npm:^10.2.7": - version: 10.4.17 - resolution: "@nestjs/common@npm:10.4.17" + version: 10.4.20 + resolution: "@nestjs/common@npm:10.4.20" dependencies: file-type: "npm:20.4.1" iterare: "npm:1.2.1" @@ -6734,7 +6820,7 @@ __metadata: optional: true class-validator: optional: true - checksum: 10c0/dc96bb6d5e68e856d2a18853c5c8b8cebfd32f9193d72089bb71191efde5a5272e87d7005fc1a9587d08755286331e233690bcb7937435e3fc9c2069b64b06c9 + checksum: 10c0/d1a1b3d67798a8a07e5dfe7c55c6d499ac4750531cad0ef5fd5ceef0e2cfc01ae0adcba501d27987e7f4044af0f41fec05d4391d047baa6069419c49daff7e8c languageName: node linkType: hard @@ -6753,8 +6839,8 @@ __metadata: linkType: hard "@nestjs/core@npm:^10.2.8, @nestjs/core@npm:^10.3.10": - version: 10.4.17 - resolution: "@nestjs/core@npm:10.4.17" + version: 10.4.20 + resolution: "@nestjs/core@npm:10.4.20" dependencies: "@nuxtjs/opencollective": "npm:0.3.2" fast-safe-stringify: "npm:2.1.1" @@ -6776,7 +6862,7 @@ __metadata: optional: true "@nestjs/websockets": optional: true - checksum: 10c0/fdc9e5418a3421b1be05d7552e69cc2d226ae4065426c9b0c0769eed1720e35edeb925f92b72ce151ba1ff0ad7be127054dc13fc9d1ded138f3ddeb462dfdadc + checksum: 10c0/cb9f68a35d0e45684989c2ac1402617d2159d45abd49bf986b7a76931d5452d15fdf99ae8ac0fbca3c0f329a07a7802223e9dcaa3f834dfa9e96f2e7514c9aee languageName: node linkType: hard @@ -6837,18 +6923,18 @@ __metadata: linkType: hard "@nestjs/platform-express@npm:^10.3.10": - version: 10.4.17 - resolution: "@nestjs/platform-express@npm:10.4.17" + version: 10.4.20 + resolution: "@nestjs/platform-express@npm:10.4.20" dependencies: body-parser: "npm:1.20.3" cors: "npm:2.8.5" express: "npm:4.21.2" - multer: "npm:1.4.4-lts.1" + multer: "npm:2.0.2" tslib: "npm:2.8.1" peerDependencies: "@nestjs/common": ^10.0.0 "@nestjs/core": ^10.0.0 - checksum: 10c0/cfd5c1e6ca0e3b86a7c2fbc12c5dfa274696ad4fd26952492ff8e68cb5708572bb9a82db9c0ab2c79cfa3ef6f39f04e27f5038065044cb65ec1b250d566ac807 + checksum: 10c0/c6f4b528b8a9419f85d21317d019e4cdc408372ba0d86968d36a13994ee6744a450c81cea16e44b847944320f074696a8d94bc52eab2f31f3a28a629fb2da3c2 languageName: node linkType: hard @@ -6881,17 +6967,17 @@ __metadata: linkType: hard "@nestjs/schematics@npm:^11.0.2": - version: 11.0.5 - resolution: "@nestjs/schematics@npm:11.0.5" + version: 11.0.9 + resolution: "@nestjs/schematics@npm:11.0.9" dependencies: - "@angular-devkit/core": "npm:19.2.6" - "@angular-devkit/schematics": "npm:19.2.6" - comment-json: "npm:4.2.5" + "@angular-devkit/core": "npm:19.2.17" + "@angular-devkit/schematics": "npm:19.2.17" + comment-json: "npm:4.4.1" jsonc-parser: "npm:3.3.1" pluralize: "npm:8.0.0" peerDependencies: typescript: ">=4.8.2" - checksum: 10c0/53973edb5ea508aae25e7f6c2444f42ce285599f3eadc6734e6140680986e244c4aa750bebd02c5881fa3d9d6d93d772bcd2602590a79b55aa2ac81068b8952d + checksum: 10c0/c7a367006335b5b54b170452560adeeacbf5d698d72bb99f8c116870a0fff310ddfa5eda550a50985889435021decad29c81c400ccaaaba06b7fc1efd0b82bff languageName: node linkType: hard @@ -6979,8 +7065,8 @@ __metadata: linkType: hard "@nestjs/testing@npm:^10.4.6": - version: 10.4.17 - resolution: "@nestjs/testing@npm:10.4.17" + version: 10.4.20 + resolution: "@nestjs/testing@npm:10.4.20" dependencies: tslib: "npm:2.8.1" peerDependencies: @@ -6993,7 +7079,7 @@ __metadata: optional: true "@nestjs/platform-express": optional: true - checksum: 10c0/6ddf155db8937fcfd003fa1d24f0675c2dd89daad7c702d841cbdbd8fc1fe59f18e2a4e4f875c059c5569c19e94e43ae276a7d160355798a762ccbf0e93c18ce + checksum: 10c0/128e8608fc54f26fc07db5ff6c8230da50269d4d55a64a4ab3a5018c268b97b8c3d79233cbd36d70e9d872920680375be2650a0dcc6338a190c26e024fe5e2f2 languageName: node linkType: hard @@ -7039,7 +7125,7 @@ __metadata: languageName: node linkType: hard -"@noble/ciphers@npm:1.3.0, @noble/ciphers@npm:^1.0.0, @noble/ciphers@npm:^1.3.0": +"@noble/ciphers@npm:1.3.0, @noble/ciphers@npm:^1.3.0": version: 1.3.0 resolution: "@noble/ciphers@npm:1.3.0" checksum: 10c0/3ba6da645ce45e2f35e3b2e5c87ceba86b21dfa62b9466ede9edfb397f8116dae284f06652c0cd81d99445a2262b606632e868103d54ecc99fd946ae1af8cd37 @@ -7082,15 +7168,6 @@ __metadata: languageName: node linkType: hard -"@noble/curves@npm:1.8.2, @noble/curves@npm:~1.8.1": - version: 1.8.2 - resolution: "@noble/curves@npm:1.8.2" - dependencies: - "@noble/hashes": "npm:1.7.2" - checksum: 10c0/e7ef119b114681d6b7530b29a21f9bbea6fa6973bc369167da2158d05054cc6e6dbfb636ba89fad7707abacc150de30188b33192f94513911b24bdb87af50bbd - languageName: node - linkType: hard - "@noble/curves@npm:1.9.1": version: 1.9.1 resolution: "@noble/curves@npm:1.9.1" @@ -7100,30 +7177,30 @@ __metadata: languageName: node linkType: hard -"@noble/curves@npm:1.9.2, @noble/curves@npm:^1.9.1": - version: 1.9.2 - resolution: "@noble/curves@npm:1.9.2" +"@noble/curves@npm:1.9.7, @noble/curves@npm:^1.4.2, @noble/curves@npm:^1.6.0, @noble/curves@npm:^1.9.7, @noble/curves@npm:~1.9.0": + version: 1.9.7 + resolution: "@noble/curves@npm:1.9.7" dependencies: "@noble/hashes": "npm:1.8.0" - checksum: 10c0/21d049ae4558beedbf5da0004407b72db84360fa29d64822d82dc9e80251e1ecb46023590cc4b20e70eed697d1b87279b4911dc39f8694c51c874289cfc8e9a7 + checksum: 10c0/150014751ebe8ca06a8654ca2525108452ea9ee0be23430332769f06808cddabfe84f248b6dbf836916bc869c27c2092957eec62c7506d68a1ed0a624017c2a3 languageName: node linkType: hard -"@noble/curves@npm:^1.6.0, @noble/curves@npm:^1.7.0, @noble/curves@npm:~1.9.0": - version: 1.9.0 - resolution: "@noble/curves@npm:1.9.0" +"@noble/curves@npm:^2.0.1": + version: 2.0.1 + resolution: "@noble/curves@npm:2.0.1" dependencies: - "@noble/hashes": "npm:1.8.0" - checksum: 10c0/a76d57444b4d136f43363eb19229d990df15a00fb0e2efbf08a7a4cbaee655f73e46eb29b6ad07b8749be5f7b890c0a7a06a19f4324a4b149b06b3da1def8593 + "@noble/hashes": "npm:2.0.1" + checksum: 10c0/e0b329eb9229e862d3b7203e0444bd479e9ecf2d5990181908dad416aab69106717ca696fc7b12ad0eb19d710f58c454646b27ce517a4298ab9abc89a9bdb6ee languageName: node linkType: hard -"@noble/curves@npm:~1.9.2": - version: 1.9.4 - resolution: "@noble/curves@npm:1.9.4" +"@noble/curves@npm:~1.8.1": + version: 1.8.2 + resolution: "@noble/curves@npm:1.8.2" dependencies: - "@noble/hashes": "npm:1.8.0" - checksum: 10c0/c5ac42bf0c4ac822ee7c107f7b5647140a4209bce6929cdf21a38bc575be8aa91c130c4d4bea5a8a3100c53728fc0c6757382f005779cd14b10ea9a00f1a4592 + "@noble/hashes": "npm:1.7.2" + checksum: 10c0/e7ef119b114681d6b7530b29a21f9bbea6fa6973bc369167da2158d05054cc6e6dbfb636ba89fad7707abacc150de30188b33192f94513911b24bdb87af50bbd languageName: node linkType: hard @@ -7169,17 +7246,17 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.4.0, @noble/hashes@npm:^1.5.0, @noble/hashes@npm:^1.6.1, @noble/hashes@npm:^1.8.0, @noble/hashes@npm:~1.8.0": +"@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.4.0, @noble/hashes@npm:^1.5.0, @noble/hashes@npm:^1.8.0, @noble/hashes@npm:~1.8.0": version: 1.8.0 resolution: "@noble/hashes@npm:1.8.0" checksum: 10c0/06a0b52c81a6fa7f04d67762e08b2c476a00285858150caeaaff4037356dd5e119f45b2a530f638b77a5eeca013168ec1b655db41bae3236cb2e9d511484fc77 languageName: node linkType: hard -"@noble/hashes@npm:2.0.0-beta.1": - version: 2.0.0-beta.1 - resolution: "@noble/hashes@npm:2.0.0-beta.1" - checksum: 10c0/dde464e841efb008e40ec2bc8431fec4de11c4778b0491c03247aa05c4e900a8b5212c9c90043b836f47d3d9ff48c22419513ed8219fed380cdaa17e1fc4fddc +"@noble/hashes@npm:2.0.1, @noble/hashes@npm:^2.0.1": + version: 2.0.1 + resolution: "@noble/hashes@npm:2.0.1" + checksum: 10c0/e81769ce21c3b1c80141a3b99bd001f17edea09879aa936692ae39525477386d696101cd573928a304806efb2b9fa751e1dd83241c67d0c84d30091e85c79bdb languageName: node linkType: hard @@ -7296,74 +7373,61 @@ __metadata: linkType: hard "@nomicfoundation/hardhat-chai-matchers@npm:^2.0.7": - version: 2.0.8 - resolution: "@nomicfoundation/hardhat-chai-matchers@npm:2.0.8" + version: 2.1.2 + resolution: "@nomicfoundation/hardhat-chai-matchers@npm:2.1.2" dependencies: "@types/chai-as-promised": "npm:^7.1.3" chai-as-promised: "npm:^7.1.1" deep-eql: "npm:^4.0.1" ordinal: "npm:^1.0.3" peerDependencies: - "@nomicfoundation/hardhat-ethers": ^3.0.0 + "@nomicfoundation/hardhat-ethers": ^3.1.0 chai: ^4.2.0 - ethers: ^6.1.0 - hardhat: ^2.9.4 - checksum: 10c0/51e3ee9ff17319180a5f45108514b33437c004b724c591dc6d7d2e9842e24e2d793aaf94ce5316117475021e67c88228283d20c9f45fb0693dd8f6b61674b4ff - languageName: node - linkType: hard - -"@nomicfoundation/hardhat-ethers@npm:^3.0.0": - version: 3.0.8 - resolution: "@nomicfoundation/hardhat-ethers@npm:3.0.8" - dependencies: - debug: "npm:^4.1.1" - lodash.isequal: "npm:^4.5.0" - peerDependencies: - ethers: ^6.1.0 - hardhat: ^2.0.0 - checksum: 10c0/478b5d9607e7fc50377bec45ecebbf74240719c76aa08c81052d2a2174eee6f422db8cfd3f13fd17a080d8ff1046fac50dfffa3a2e57c9e3ed466932239e4af2 + ethers: ^6.14.0 + hardhat: ^2.26.0 + checksum: 10c0/ed51e9d5e20869fc50f13ee7c8ad65e9531a6222a8b19c1afe21c28d563c8d2361c2f6f36a0c8a7b4e9b6c9c8df9f1878d6512b27919e18ea4e71bf28249bf86 languageName: node linkType: hard -"@nomicfoundation/hardhat-ethers@npm:^3.1.0": - version: 3.1.0 - resolution: "@nomicfoundation/hardhat-ethers@npm:3.1.0" +"@nomicfoundation/hardhat-ethers@npm:^3.0.0, @nomicfoundation/hardhat-ethers@npm:^3.1.0": + version: 3.1.2 + resolution: "@nomicfoundation/hardhat-ethers@npm:3.1.2" dependencies: debug: "npm:^4.1.1" lodash.isequal: "npm:^4.5.0" peerDependencies: ethers: ^6.14.0 hardhat: ^2.26.0 - checksum: 10c0/66c5c9f9dd56f1cea25f5c9890f99251fd3179090bb0ad3f73fc1184e4a8ceaba544b5165d3f67e500cf0047d1550350e80df10e28cbabae3d61a659826163ae + checksum: 10c0/d10f03a392fdf5ddc5f0a8e6e4a857a41ba367f9ba47797b87411038da9f3c4c5a2a89cb16c3015c31dab91ffdba403c6c1d70ca29ee1fa88cee63977c3b65b7 languageName: node linkType: hard "@nomicfoundation/hardhat-ignition@npm:^0.15.5": - version: 0.15.11 - resolution: "@nomicfoundation/hardhat-ignition@npm:0.15.11" + version: 0.15.15 + resolution: "@nomicfoundation/hardhat-ignition@npm:0.15.15" dependencies: - "@nomicfoundation/ignition-core": "npm:^0.15.11" - "@nomicfoundation/ignition-ui": "npm:^0.15.11" + "@nomicfoundation/ignition-core": "npm:^0.15.14" + "@nomicfoundation/ignition-ui": "npm:^0.15.13" chalk: "npm:^4.0.0" debug: "npm:^4.3.2" fs-extra: "npm:^10.0.0" json5: "npm:^2.2.3" prompts: "npm:^2.4.2" peerDependencies: - "@nomicfoundation/hardhat-verify": ^2.0.1 - hardhat: ^2.18.0 - checksum: 10c0/05248edfb96471990290dd4bf894602d003c09a44a1bab4861beac6ff06ced24ecd1656de287698329ca6999feb01ca3c769b4cc344f981b14ca09f3c0b659c8 + "@nomicfoundation/hardhat-verify": ^2.1.0 + hardhat: ^2.26.0 + checksum: 10c0/e3f59e323b1c957b5fac6b5fb8689b58a8505ceed4209253e07ec8347706d4402da772f1c30c95c5358ea6c906b82b248c812360ad423491a06e0c0d2ff1e0b1 languageName: node linkType: hard "@nomicfoundation/hardhat-network-helpers@npm:^1.0.12": - version: 1.0.12 - resolution: "@nomicfoundation/hardhat-network-helpers@npm:1.0.12" + version: 1.1.2 + resolution: "@nomicfoundation/hardhat-network-helpers@npm:1.1.2" dependencies: ethereumjs-util: "npm:^7.1.4" peerDependencies: - hardhat: ^2.9.5 - checksum: 10c0/93df80bb824fb9146c354f71637d6deee4b7ba19527eee94b4f79064ccbb8e4e45e14d8e558f6e5c2be17d64429faaef07ac8fe12ef11395c549f7b5fc540722 + hardhat: ^2.26.0 + checksum: 10c0/00fb7392bc0a0c3df635a52fe350ae5e5a71610f3718e11e6b17753f6723231c81def37a19933cd96174cbc5362c0168c8fa98ea73910d46dd9d4bbba0c7990f languageName: node linkType: hard @@ -7393,8 +7457,8 @@ __metadata: linkType: hard "@nomicfoundation/hardhat-verify@npm:^2.0.11, @nomicfoundation/hardhat-verify@npm:^2.0.8": - version: 2.0.13 - resolution: "@nomicfoundation/hardhat-verify@npm:2.0.13" + version: 2.1.3 + resolution: "@nomicfoundation/hardhat-verify@npm:2.1.3" dependencies: "@ethersproject/abi": "npm:^5.1.2" "@ethersproject/address": "npm:^5.0.2" @@ -7406,32 +7470,32 @@ __metadata: table: "npm:^6.8.0" undici: "npm:^5.14.0" peerDependencies: - hardhat: ^2.0.4 - checksum: 10c0/391b35211646ed9efd91b88229c09c8baaa688caaf4388e077b73230b36cd7f86b04639625b0e8ebdc070166f49494c3bd32834c31ca4800db0936ca6db96ee2 + hardhat: ^2.26.0 + checksum: 10c0/daf420f4fdbbcbfe117077c5950d39ba5126bc57abc360ba2de55756bce4a455fe53f61ad0edcd04c9e2440cc3f8197631c586cfe5ad781efa5da2f79d7ccd19 languageName: node linkType: hard -"@nomicfoundation/ignition-core@npm:^0.15.11": - version: 0.15.11 - resolution: "@nomicfoundation/ignition-core@npm:0.15.11" +"@nomicfoundation/ignition-core@npm:^0.15.14": + version: 0.15.14 + resolution: "@nomicfoundation/ignition-core@npm:0.15.14" dependencies: "@ethersproject/address": "npm:5.6.1" "@nomicfoundation/solidity-analyzer": "npm:^0.1.1" cbor: "npm:^9.0.0" debug: "npm:^4.3.2" - ethers: "npm:^6.7.0" + ethers: "npm:^6.14.0" fs-extra: "npm:^10.0.0" immer: "npm:10.0.2" lodash: "npm:4.17.21" ndjson: "npm:2.0.0" - checksum: 10c0/39a28a39fa7de37aebde771a2dd9ca9c56474238fdb0c2fd1e7b636e22e66c4f94c8f2d2471921b2ddd2fabcb6c880962b0bb6bedc74f378a0ae8c8ced7ad2da + checksum: 10c0/b03fb009f7419a2ea59cb28e12ebc45fdef885dad16c4e47650bf9abec1132b9452e5c37b95949a91ee209c1e5fd92a6d46011245576a51a02c252b937353105 languageName: node linkType: hard -"@nomicfoundation/ignition-ui@npm:^0.15.11": - version: 0.15.11 - resolution: "@nomicfoundation/ignition-ui@npm:0.15.11" - checksum: 10c0/d9eed66965268dd92048aa24ea881513ec9af78d5aea95b670685d6b0ffac0bbb0c6d36e8bc751ca4cf60d7c4d18d94b2a6f5c59ed1253065f59270476d8bf79 +"@nomicfoundation/ignition-ui@npm:^0.15.13": + version: 0.15.13 + resolution: "@nomicfoundation/ignition-ui@npm:0.15.13" + checksum: 10c0/1fd9f8ad772446a4bf65cd5f21688df14eeb15b53315d623ebe654f998b20ec360fafd5b663b8d5f46d3d921bc11ba75c7346162620f201be0d55b82ce893fa0 languageName: node linkType: hard @@ -7587,21 +7651,21 @@ __metadata: languageName: node linkType: hard -"@oclif/core@npm:4.0.34": - version: 4.0.34 - resolution: "@oclif/core@npm:4.0.34" +"@oclif/core@npm:4.3.0": + version: 4.3.0 + resolution: "@oclif/core@npm:4.3.0" dependencies: ansi-escapes: "npm:^4.3.2" - ansis: "npm:^3.3.2" + ansis: "npm:^3.17.0" clean-stack: "npm:^3.0.1" cli-spinners: "npm:^2.9.2" - debug: "npm:^4.3.7" + debug: "npm:^4.4.0" ejs: "npm:^3.1.10" get-package-type: "npm:^0.1.0" globby: "npm:^11.1.0" indent-string: "npm:^4.0.0" is-wsl: "npm:^2.2.0" - lilconfig: "npm:^3.1.2" + lilconfig: "npm:^3.1.3" minimatch: "npm:^9.0.5" semver: "npm:^7.6.3" string-width: "npm:^4.2.3" @@ -7609,71 +7673,71 @@ __metadata: widest-line: "npm:^3.1.0" wordwrap: "npm:^1.0.0" wrap-ansi: "npm:^7.0.0" - checksum: 10c0/2a476bd30cfa5d1bc528a4487a7a9dd3a465f12404b01e267545cd1557f0ddc3e904476554caf5ee0a3eb6cd464224170049a19917e55ab01985739b4c39bf39 + checksum: 10c0/4915039f066b2de769f5199a82b8cc2bf52a345462b1967ec695f91d0a48ceb3d0e99ee9f7930e5003cfca1cb0d4b3194d672d5ddf740b0cc7b9b90db5850baf languageName: node linkType: hard -"@oclif/core@npm:^4": - version: 4.3.0 - resolution: "@oclif/core@npm:4.3.0" +"@oclif/core@npm:^4, @oclif/core@npm:^4.8.0": + version: 4.8.0 + resolution: "@oclif/core@npm:4.8.0" dependencies: ansi-escapes: "npm:^4.3.2" ansis: "npm:^3.17.0" clean-stack: "npm:^3.0.1" cli-spinners: "npm:^2.9.2" - debug: "npm:^4.4.0" + debug: "npm:^4.4.3" ejs: "npm:^3.1.10" get-package-type: "npm:^0.1.0" - globby: "npm:^11.1.0" indent-string: "npm:^4.0.0" is-wsl: "npm:^2.2.0" lilconfig: "npm:^3.1.3" minimatch: "npm:^9.0.5" - semver: "npm:^7.6.3" + semver: "npm:^7.7.3" string-width: "npm:^4.2.3" supports-color: "npm:^8" + tinyglobby: "npm:^0.2.14" widest-line: "npm:^3.1.0" wordwrap: "npm:^1.0.0" wrap-ansi: "npm:^7.0.0" - checksum: 10c0/4915039f066b2de769f5199a82b8cc2bf52a345462b1967ec695f91d0a48ceb3d0e99ee9f7930e5003cfca1cb0d4b3194d672d5ddf740b0cc7b9b90db5850baf + checksum: 10c0/83347c86250390b9c53d7eeb4f85adcc57578827b2de65be606b609290f4101f24b4245bd9c1dbeaca10a5e29c3fc68eaa3b5efa5f801d222e4f8e59691e8a86 languageName: node linkType: hard "@oclif/plugin-autocomplete@npm:^3.2.11": - version: 3.2.28 - resolution: "@oclif/plugin-autocomplete@npm:3.2.28" + version: 3.2.39 + resolution: "@oclif/plugin-autocomplete@npm:3.2.39" dependencies: "@oclif/core": "npm:^4" ansis: "npm:^3.16.0" - debug: "npm:^4.4.0" + debug: "npm:^4.4.1" ejs: "npm:^3.1.10" - checksum: 10c0/39f7c6395ec4772c9b545e76fb7641c1df0a9066c61ec5e758b34339c6b8ace379d2aaf1fbd41ef44482a712c3f65677ceefefe5bcf3f4791a7cc6e19f349c08 + checksum: 10c0/a06419d75b29eb365ea5a24cc5e4a2f0fc14e231eea18f1c7246220845c1004dad8608b80796566ff83f25e89e1688222c8eaa03a7f3aa66af0fb65eac8f8741 languageName: node linkType: hard "@oclif/plugin-not-found@npm:^3.2.29": - version: 3.2.51 - resolution: "@oclif/plugin-not-found@npm:3.2.51" + version: 3.2.72 + resolution: "@oclif/plugin-not-found@npm:3.2.72" dependencies: - "@inquirer/prompts": "npm:^7.5.0" - "@oclif/core": "npm:^4" + "@inquirer/prompts": "npm:^7.9.0" + "@oclif/core": "npm:^4.8.0" ansis: "npm:^3.17.0" fast-levenshtein: "npm:^3.0.0" - checksum: 10c0/8fde46709398e2e475120c36ffb58f1c9a814ec5537b3b4f3c2e2e2005a39bfdbf427eb617a8cbc07d16ebee01b241069f295e03e98db8ed66f8fb728bd6c43a + checksum: 10c0/55e7df93f3060cdb07b1945c7a135d132752d529d8d9cba883703c480fe354aa746acf825a8f3cfe5eaae941bd43f7054352998ff464ab5a193a207c5a7bb1d0 languageName: node linkType: hard "@oclif/plugin-warn-if-update-available@npm:^3.1.24": - version: 3.1.39 - resolution: "@oclif/plugin-warn-if-update-available@npm:3.1.39" + version: 3.1.52 + resolution: "@oclif/plugin-warn-if-update-available@npm:3.1.52" dependencies: "@oclif/core": "npm:^4" ansis: "npm:^3.17.0" - debug: "npm:^4.4.0" + debug: "npm:^4.4.3" http-call: "npm:^5.2.2" lodash: "npm:^4.17.21" registry-auth-token: "npm:^5.1.0" - checksum: 10c0/a428b196ec32df0d785826905ee4c3c979c28dc6241d2e4e0d157d6b495c490c57f960b4d09765e976aa9b89c97c5f777be8ad347631b467abd1989185f0d57c + checksum: 10c0/2c5a7d1c7547cad49cbd01d75575a8eefbdcbe90af797270028c0cb700602c2f5b01fb6d57150b208efd2d215e7132d57ab551d301693589c89711b221de759b languageName: node linkType: hard @@ -7715,67 +7779,40 @@ __metadata: languageName: node linkType: hard -"@openzeppelin/defender-sdk-base-client@npm:^2.1.0, @openzeppelin/defender-sdk-base-client@npm:^2.5.0": - version: 2.5.0 - resolution: "@openzeppelin/defender-sdk-base-client@npm:2.5.0" +"@openzeppelin/defender-sdk-base-client@npm:^2.1.0, @openzeppelin/defender-sdk-base-client@npm:^2.7.0": + version: 2.7.0 + resolution: "@openzeppelin/defender-sdk-base-client@npm:2.7.0" dependencies: "@aws-sdk/client-lambda": "npm:^3.563.0" amazon-cognito-identity-js: "npm:^6.3.6" async-retry: "npm:^1.3.3" - checksum: 10c0/3f1335a005275b825dc87fd4a9f1de0803b039288a287a4cd049064db3c17d1f636a0b1d16a392e9a58e039b01aeeb401e524b250536233f641ded11a31ca6f9 + checksum: 10c0/4186ef9852997d88993554788ae19be4fe456a100fd1465604d26fec116171ee39dda9bf3b0580902bbd972468296a257f795c572736d5a193bc02fdfdd55c44 languageName: node linkType: hard "@openzeppelin/defender-sdk-deploy-client@npm:^2.1.0": - version: 2.5.0 - resolution: "@openzeppelin/defender-sdk-deploy-client@npm:2.5.0" + version: 2.7.0 + resolution: "@openzeppelin/defender-sdk-deploy-client@npm:2.7.0" dependencies: - "@openzeppelin/defender-sdk-base-client": "npm:^2.5.0" + "@openzeppelin/defender-sdk-base-client": "npm:^2.7.0" axios: "npm:^1.7.4" lodash: "npm:^4.17.21" - checksum: 10c0/b5294447c10bcb85bbce2e2460d9c833814d16914acf4a641aa9aa96760140bdc972cfa2c3d8c07421a680dc08aa788413a2c60353b801af6a3ad7a35fdc7e45 + checksum: 10c0/5bb3121d50859b8add196ecda08616b36ac1043e712b2b1f6c24e26e7977f85f59587ee49de76a8fa35111b80cc8f0d5122e157dcee9bad6c369fd143d421bf1 languageName: node linkType: hard "@openzeppelin/defender-sdk-network-client@npm:^2.1.0": - version: 2.5.0 - resolution: "@openzeppelin/defender-sdk-network-client@npm:2.5.0" + version: 2.7.0 + resolution: "@openzeppelin/defender-sdk-network-client@npm:2.7.0" dependencies: - "@openzeppelin/defender-sdk-base-client": "npm:^2.5.0" + "@openzeppelin/defender-sdk-base-client": "npm:^2.7.0" axios: "npm:^1.7.4" lodash: "npm:^4.17.21" - checksum: 10c0/1fc6052411ad10e278567163ec890e65cbe4ad82a8a5d0926aa4c115654ebef91135c68aa74e2c299d0d662e8b4b00e288d3084f60bb5e4c31eff08e0a2ba11f - languageName: node - linkType: hard - -"@openzeppelin/hardhat-upgrades@npm:^3.3.0": - version: 3.9.0 - resolution: "@openzeppelin/hardhat-upgrades@npm:3.9.0" - dependencies: - "@openzeppelin/defender-sdk-base-client": "npm:^2.1.0" - "@openzeppelin/defender-sdk-deploy-client": "npm:^2.1.0" - "@openzeppelin/defender-sdk-network-client": "npm:^2.1.0" - "@openzeppelin/upgrades-core": "npm:^1.41.0" - chalk: "npm:^4.1.0" - debug: "npm:^4.1.1" - ethereumjs-util: "npm:^7.1.5" - proper-lockfile: "npm:^4.1.1" - undici: "npm:^6.11.1" - peerDependencies: - "@nomicfoundation/hardhat-ethers": ^3.0.0 - "@nomicfoundation/hardhat-verify": ^2.0.0 - ethers: ^6.6.0 - hardhat: ^2.0.2 - peerDependenciesMeta: - "@nomicfoundation/hardhat-verify": - optional: true - bin: - migrate-oz-cli-project: dist/scripts/migrate-oz-cli-project.js - checksum: 10c0/14b09af024ee42f6f43b775952b88d8c113b750df3c3c5dea17732e7dc2a4ca7cb3b69dd450403a8d6ca39d5e3ea7b25a4569469f9f2cc94a4bb2273ff2b9f70 + checksum: 10c0/07cea4f8ce48ef1d5b24647744d3279744f258cefbe1e79c8e4857e1da2724db9fbbab579ae22d778a6b42587349226031c8c837e67dbffcf58e5ccf02c22deb languageName: node linkType: hard -"@openzeppelin/hardhat-upgrades@npm:^3.9.1": +"@openzeppelin/hardhat-upgrades@npm:^3.3.0, @openzeppelin/hardhat-upgrades@npm:^3.9.1": version: 3.9.1 resolution: "@openzeppelin/hardhat-upgrades@npm:3.9.1" dependencies: @@ -7803,8 +7840,8 @@ __metadata: linkType: hard "@openzeppelin/upgrades-core@npm:^1.32.2, @openzeppelin/upgrades-core@npm:^1.41.0": - version: 1.44.0 - resolution: "@openzeppelin/upgrades-core@npm:1.44.0" + version: 1.44.1 + resolution: "@openzeppelin/upgrades-core@npm:1.44.1" dependencies: "@nomicfoundation/slang": "npm:^0.18.3" bignumber.js: "npm:^9.1.2" @@ -7819,7 +7856,7 @@ __metadata: solidity-ast: "npm:^0.4.60" bin: openzeppelin-upgrades-core: dist/cli/cli.js - checksum: 10c0/587734f6cfe12f352c2d79b52579314c7d4cc7854668801467414a12200203d2481e078ffe5213fe676fc99677ff0ba31a4e3027332f27d1598ddbfed58fe50b + checksum: 10c0/4ff49400aa3e87106b9e653976d1ec4b261e242b974fe022bf290f9f783f0dbcb8c2b306e73028c0f364b83428b3dc1d66d0c668d4a05cce0446a40d418187a4 languageName: node linkType: hard @@ -7975,13 +8012,13 @@ __metadata: linkType: hard "@peculiar/asn1-schema@npm:^2.3.13, @peculiar/asn1-schema@npm:^2.3.8": - version: 2.3.15 - resolution: "@peculiar/asn1-schema@npm:2.3.15" + version: 2.5.0 + resolution: "@peculiar/asn1-schema@npm:2.5.0" dependencies: - asn1js: "npm:^3.0.5" + asn1js: "npm:^3.0.6" pvtsutils: "npm:^1.3.6" tslib: "npm:^2.8.1" - checksum: 10c0/0e73e292a17d00a8770825a9504ceaf0994481a39126317ca0ca5d3dc742087f2b71a4d086bb5613bf19ac57f001d42f594683797d43137702db3ee2b42736a0 + checksum: 10c0/17a3a68b9ac631beeea6fa6a86b5b95e2d91602d6c477f18374beadfbc71fd4cdbec3290233bf8eae0b216595229450b3cff8ba9c7b96b4a56d57cbbd41ff62f languageName: node linkType: hard @@ -8007,6 +8044,15 @@ __metadata: languageName: node linkType: hard +"@phosphor-icons/webcomponents@npm:2.1.5": + version: 2.1.5 + resolution: "@phosphor-icons/webcomponents@npm:2.1.5" + dependencies: + lit: "npm:^3" + checksum: 10c0/547c0e3e18b0203e8b432fdbc5aa075219a4e19cffa8582e6da35f0d67ac85441f67a1bb005cadeb3601e5ecda760339fca3fbb729be66ae6ec0c9d3e4d36d38 + languageName: node + linkType: hard + "@pinax/graph-networks-registry@npm:^0.6.5": version: 0.6.7 resolution: "@pinax/graph-networks-registry@npm:0.6.7" @@ -8014,6 +8060,13 @@ __metadata: languageName: node linkType: hard +"@pinojs/redact@npm:^0.4.0": + version: 0.4.0 + resolution: "@pinojs/redact@npm:0.4.0" + checksum: 10c0/4b311ba17ee0cf154ff9c39eb063ec04cd0d0017cb3750efcdf06c2d485df3e1095e13e872175993568c5568c23e4508dd877c981bbc9c5ae5e384d569efcdff + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -8021,17 +8074,10 @@ __metadata: languageName: node linkType: hard -"@pkgr/core@npm:^0.2.3": - version: 0.2.4 - resolution: "@pkgr/core@npm:0.2.4" - checksum: 10c0/2528a443bbbef5d4686614e1d73f834f19ccbc975f62b2a64974a6b97bcdf677b9c5e8948e04808ac4f0d853e2f422adfaae2a06e9e9f4f5cf8af76f1adf8dc1 - languageName: node - linkType: hard - -"@pkgr/core@npm:^0.2.4": - version: 0.2.7 - resolution: "@pkgr/core@npm:0.2.7" - checksum: 10c0/951f5ebf2feb6e9dbc202d937f1a364d60f2bf0e3e53594251bcc1d9d2ed0df0a919c49ba162a9499fce73cf46ebe4d7959a8dfbac03511dbe79b69f5fedb804 +"@pkgr/core@npm:^0.2.9": + version: 0.2.9 + resolution: "@pkgr/core@npm:0.2.9" + checksum: 10c0/ac8e4e8138b1a7a4ac6282873aef7389c352f1f8b577b4850778f5182e4a39a5241facbe48361fec817f56d02b51691b383010843fb08b34a8e8ea3614688fd5 languageName: node linkType: hard @@ -8151,14 +8197,14 @@ __metadata: languageName: node linkType: hard -"@redis/client@npm:1.6.0, @redis/client@npm:^1.6.0": - version: 1.6.0 - resolution: "@redis/client@npm:1.6.0" +"@redis/client@npm:1.6.1, @redis/client@npm:^1.6.0": + version: 1.6.1 + resolution: "@redis/client@npm:1.6.1" dependencies: cluster-key-slot: "npm:1.1.2" generic-pool: "npm:3.9.0" yallist: "npm:4.0.0" - checksum: 10c0/c80a01b4f72d32284515dac6d1aefe0e9c881d08b8db33281f87b51650c1c116b18074a29ca81599d15dccb37b29eef9b26a75a5755150ae27d163e680c34bf6 + checksum: 10c0/216c61f5aa2fef212386c2ef5b5f6d10f44244f6928682f370e190402d23338e11260377c08e87dd6d678408fa7c0a6b7bb5571ecadb830abfa3d7355b9eff1e languageName: node linkType: hard @@ -8199,8 +8245,8 @@ __metadata: linkType: hard "@reduxjs/toolkit@npm:^2.5.0": - version: 2.8.0 - resolution: "@reduxjs/toolkit@npm:2.8.0" + version: 2.9.2 + resolution: "@reduxjs/toolkit@npm:2.9.2" dependencies: "@standard-schema/spec": "npm:^1.0.0" "@standard-schema/utils": "npm:^0.3.0" @@ -8216,7 +8262,7 @@ __metadata: optional: true react-redux: optional: true - checksum: 10c0/dd19b115234861911b91ae258ed047247a0a09a8750eb0ec9f3ca83b37590f2bfc2c56f56dd541fa24f55d8e9dfbad2360d3737c3168c9adcb9895c621a6a827 + checksum: 10c0/577416200c76ffd82bce6158aaeb63e836ed2c2a14e670253056dcaec505da77643e79b47208b4e493a0c120a4a2bc049efe60cd555a2699053af5b03f2f2953 languageName: node linkType: hard @@ -8228,49 +8274,27 @@ __metadata: linkType: hard "@reown/appkit-adapter-wagmi@npm:^1.7.11": - version: 1.7.11 - resolution: "@reown/appkit-adapter-wagmi@npm:1.7.11" - dependencies: - "@reown/appkit": "npm:1.7.11" - "@reown/appkit-common": "npm:1.7.11" - "@reown/appkit-controllers": "npm:1.7.11" - "@reown/appkit-polyfills": "npm:1.7.11" - "@reown/appkit-scaffold-ui": "npm:1.7.11" - "@reown/appkit-utils": "npm:1.7.11" - "@reown/appkit-wallet": "npm:1.7.11" - "@wagmi/connectors": "npm:>=5.7.11" - "@walletconnect/universal-provider": "npm:2.21.3" - valtio: "npm:1.13.2" - peerDependencies: - "@wagmi/core": ">=2.16.7" - viem: ">=2.31.3" - wagmi: ">=2.15.6" + version: 1.8.12 + resolution: "@reown/appkit-adapter-wagmi@npm:1.8.12" + dependencies: + "@reown/appkit": "npm:1.8.12" + "@reown/appkit-common": "npm:1.8.12" + "@reown/appkit-controllers": "npm:1.8.12" + "@reown/appkit-polyfills": "npm:1.8.12" + "@reown/appkit-scaffold-ui": "npm:1.8.12" + "@reown/appkit-utils": "npm:1.8.12" + "@reown/appkit-wallet": "npm:1.8.12" + "@wagmi/connectors": "npm:>=5.9.9" + "@walletconnect/universal-provider": "npm:2.22.4" + valtio: "npm:2.1.7" + peerDependencies: + "@wagmi/core": ">=2.21.2" + viem: ">=2.37.9" + wagmi: ">=2.17.5" dependenciesMeta: "@wagmi/connectors": optional: true - checksum: 10c0/4baa19b037ec0290a50a6b8e914e39748a01bb20ae9e3b77bf4a5454a35e71efdeac8cba60f8dabf27adbc0ac93519afab7a8adbe8e185708b725296b87a8378 - languageName: node - linkType: hard - -"@reown/appkit-common@npm:1.7.11": - version: 1.7.11 - resolution: "@reown/appkit-common@npm:1.7.11" - dependencies: - big.js: "npm:6.2.2" - dayjs: "npm:1.11.13" - viem: "npm:>=2.31.3" - checksum: 10c0/12151fa608f5f15fbb6fd8b6856e1851fa3a1f74e9b73cb47f253d3481bae1a3cc519a17bca47c2eb069bb53f5942ed133a01847359d0d16f22af794fb986a89 - languageName: node - linkType: hard - -"@reown/appkit-common@npm:1.7.3": - version: 1.7.3 - resolution: "@reown/appkit-common@npm:1.7.3" - dependencies: - big.js: "npm:6.2.2" - dayjs: "npm:1.11.13" - viem: "npm:>=2.23.11" - checksum: 10c0/c938dffc42494daa0e970a22c7b5282da378c08e585d0d2e5c774faa59143f881e24deb0dcc0eb933b3d7b057edf39ef804c5c08439147ff952b1508735bc638 + checksum: 10c0/75b028237c52989625ed486881d1e0e0f3260484490afaf82a3891afc9482e96bea7a3980efb7772ce0a219bbd108bda1792b9051b20191e85da607c55e50ac5 languageName: node linkType: hard @@ -8285,29 +8309,14 @@ __metadata: languageName: node linkType: hard -"@reown/appkit-controllers@npm:1.7.11": - version: 1.7.11 - resolution: "@reown/appkit-controllers@npm:1.7.11" - dependencies: - "@reown/appkit-common": "npm:1.7.11" - "@reown/appkit-wallet": "npm:1.7.11" - "@walletconnect/universal-provider": "npm:2.21.3" - valtio: "npm:1.13.2" - viem: "npm:>=2.31.3" - checksum: 10c0/1b889b3709fbfeed27ec3d46108634f5eff146b5e295393421ef06c4eb2f00c0701ca5d1cd0ac5e11b017c8ba829acd6a3be287c7bc6d98588a3388dc7601e7b - languageName: node - linkType: hard - -"@reown/appkit-controllers@npm:1.7.3": - version: 1.7.3 - resolution: "@reown/appkit-controllers@npm:1.7.3" +"@reown/appkit-common@npm:1.8.12": + version: 1.8.12 + resolution: "@reown/appkit-common@npm:1.8.12" dependencies: - "@reown/appkit-common": "npm:1.7.3" - "@reown/appkit-wallet": "npm:1.7.3" - "@walletconnect/universal-provider": "npm:2.19.2" - valtio: "npm:1.13.2" - viem: "npm:>=2.23.11" - checksum: 10c0/775c25f7697a0ff59720cfd17c7317ac87284416d2b5e187bd05fba42f6f1294d6cab45c0509fb6faec9477ee60ce3b7cd72b78ae6c393df14fabd1874858650 + big.js: "npm:6.2.2" + dayjs: "npm:1.11.13" + viem: "npm:>=2.37.9" + checksum: 10c0/ab558294cf89218761c6abdb47ec7bca75cc6353fac111cc9513561113d3bc8200c6460c132e0a19ba4c51978904801b8ad8ce35afa7c39b1ca579f06bdc329e languageName: node linkType: hard @@ -8324,17 +8333,16 @@ __metadata: languageName: node linkType: hard -"@reown/appkit-pay@npm:1.7.11": - version: 1.7.11 - resolution: "@reown/appkit-pay@npm:1.7.11" +"@reown/appkit-controllers@npm:1.8.12": + version: 1.8.12 + resolution: "@reown/appkit-controllers@npm:1.8.12" dependencies: - "@reown/appkit-common": "npm:1.7.11" - "@reown/appkit-controllers": "npm:1.7.11" - "@reown/appkit-ui": "npm:1.7.11" - "@reown/appkit-utils": "npm:1.7.11" - lit: "npm:3.3.0" - valtio: "npm:1.13.2" - checksum: 10c0/2bdb48f809200c521eb5556fb38fadbfde0fb1bb576e1be86ea1f537e1231256e0323b1465e5496893fad43a424c41c7453fc28b502270ab000deb5062fa280b + "@reown/appkit-common": "npm:1.8.12" + "@reown/appkit-wallet": "npm:1.8.12" + "@walletconnect/universal-provider": "npm:2.22.4" + valtio: "npm:2.1.7" + viem: "npm:>=2.37.9" + checksum: 10c0/7ce2c42de4fff488cb5b1934fb0307183124bd29a714440904bdd9d6a127e07eb1d19b1a6e0be7e0ddcf696037b5e43c6af7cfeb105dcfddfdf6db7d98cb0b16 languageName: node linkType: hard @@ -8352,21 +8360,17 @@ __metadata: languageName: node linkType: hard -"@reown/appkit-polyfills@npm:1.7.11": - version: 1.7.11 - resolution: "@reown/appkit-polyfills@npm:1.7.11" - dependencies: - buffer: "npm:6.0.3" - checksum: 10c0/faaeaa162805dd9f675121365a27a9728d8d9c6adae31a77e0a748be655de5581f5e3365635e279255499874fc364481d32df08646a52118e9f96ee7daec2c45 - languageName: node - linkType: hard - -"@reown/appkit-polyfills@npm:1.7.3": - version: 1.7.3 - resolution: "@reown/appkit-polyfills@npm:1.7.3" +"@reown/appkit-pay@npm:1.8.12": + version: 1.8.12 + resolution: "@reown/appkit-pay@npm:1.8.12" dependencies: - buffer: "npm:6.0.3" - checksum: 10c0/c2f347ba0dbfc435ca05e53abcc38ec0114478fe6aaaf198a58bf0a938eb44fd18ba4ed5c955f76fa79df7d4e1a15276afc7864573dd2b9d251f58bc33567e6d + "@reown/appkit-common": "npm:1.8.12" + "@reown/appkit-controllers": "npm:1.8.12" + "@reown/appkit-ui": "npm:1.8.12" + "@reown/appkit-utils": "npm:1.8.12" + lit: "npm:3.3.0" + valtio: "npm:2.1.7" + checksum: 10c0/e6f7d454ed31151caf04be125549717d9467524f1a39f8d76cde1c2aa5ced8c63acfe1f700894679dbce1ee2ef31467708cf6185a22279c89fa2b09ad61b7bfd languageName: node linkType: hard @@ -8379,31 +8383,12 @@ __metadata: languageName: node linkType: hard -"@reown/appkit-scaffold-ui@npm:1.7.11": - version: 1.7.11 - resolution: "@reown/appkit-scaffold-ui@npm:1.7.11" - dependencies: - "@reown/appkit-common": "npm:1.7.11" - "@reown/appkit-controllers": "npm:1.7.11" - "@reown/appkit-ui": "npm:1.7.11" - "@reown/appkit-utils": "npm:1.7.11" - "@reown/appkit-wallet": "npm:1.7.11" - lit: "npm:3.3.0" - checksum: 10c0/93b25f09861e963830304ba688c0b3821d40b911ef71dda0b1d66b29b2433d42f7adda5b476260e7b65720acff881563433d4c75c6af8b77732f42f5c8ee04a9 - languageName: node - linkType: hard - -"@reown/appkit-scaffold-ui@npm:1.7.3": - version: 1.7.3 - resolution: "@reown/appkit-scaffold-ui@npm:1.7.3" +"@reown/appkit-polyfills@npm:1.8.12": + version: 1.8.12 + resolution: "@reown/appkit-polyfills@npm:1.8.12" dependencies: - "@reown/appkit-common": "npm:1.7.3" - "@reown/appkit-controllers": "npm:1.7.3" - "@reown/appkit-ui": "npm:1.7.3" - "@reown/appkit-utils": "npm:1.7.3" - "@reown/appkit-wallet": "npm:1.7.3" - lit: "npm:3.1.0" - checksum: 10c0/e1511b06ef44da380cd5ff2f11dec65d920f32569de72a862d0ae36cce00e591dd73287df20e16af93734723086340057fbcb156429707cf9cf29a989964a9e0 + buffer: "npm:6.0.3" + checksum: 10c0/5911f0d00e80f363ea3dace1a86b26e231abe3177dcc2f8772aca226e14ec6274755ab048a681f2359eed4f10f364c7d7ace2571c0fb1d43dd8deb4423628d2d languageName: node linkType: hard @@ -8421,29 +8406,17 @@ __metadata: languageName: node linkType: hard -"@reown/appkit-ui@npm:1.7.11": - version: 1.7.11 - resolution: "@reown/appkit-ui@npm:1.7.11" +"@reown/appkit-scaffold-ui@npm:1.8.12": + version: 1.8.12 + resolution: "@reown/appkit-scaffold-ui@npm:1.8.12" dependencies: - "@reown/appkit-common": "npm:1.7.11" - "@reown/appkit-controllers": "npm:1.7.11" - "@reown/appkit-wallet": "npm:1.7.11" + "@reown/appkit-common": "npm:1.8.12" + "@reown/appkit-controllers": "npm:1.8.12" + "@reown/appkit-ui": "npm:1.8.12" + "@reown/appkit-utils": "npm:1.8.12" + "@reown/appkit-wallet": "npm:1.8.12" lit: "npm:3.3.0" - qrcode: "npm:1.5.3" - checksum: 10c0/be94df62feb02387c7dc984a4f48f7af5b350adbe04ea88a392e0a14a272f3c24d76afea2070a15e568e286847f85d0be8e216cca22784614bc7e6df77855069 - languageName: node - linkType: hard - -"@reown/appkit-ui@npm:1.7.3": - version: 1.7.3 - resolution: "@reown/appkit-ui@npm:1.7.3" - dependencies: - "@reown/appkit-common": "npm:1.7.3" - "@reown/appkit-controllers": "npm:1.7.3" - "@reown/appkit-wallet": "npm:1.7.3" - lit: "npm:3.1.0" - qrcode: "npm:1.5.3" - checksum: 10c0/d70c1ad9a143cb831c1d005ce1c72a0b8ce1c6cd8aa4a3bc1f515902386873544905ca86b431419bc8b68e4ef608b405538619a55ff4db490020766bf84edbf3 + checksum: 10c0/aa49d00b27a8f3c4a2b89013d903c864044fb3228d9574e092730f8313cf521e7b812c5d131e7619e299db4d4ae62eab869400ddd904b8aab5ccb3ef6e61bd24 languageName: node linkType: hard @@ -8460,40 +8433,17 @@ __metadata: languageName: node linkType: hard -"@reown/appkit-utils@npm:1.7.11": - version: 1.7.11 - resolution: "@reown/appkit-utils@npm:1.7.11" - dependencies: - "@reown/appkit-common": "npm:1.7.11" - "@reown/appkit-controllers": "npm:1.7.11" - "@reown/appkit-polyfills": "npm:1.7.11" - "@reown/appkit-wallet": "npm:1.7.11" - "@wallet-standard/wallet": "npm:1.1.0" - "@walletconnect/logger": "npm:2.1.2" - "@walletconnect/universal-provider": "npm:2.21.3" - valtio: "npm:1.13.2" - viem: "npm:>=2.31.3" - peerDependencies: - valtio: 1.13.2 - checksum: 10c0/a6a9921ea36cbb9b193319af4dba273c26ef4598be1f681c7349b94067b6ba497fff018933fa42d699a14adef68f5b7c6e1ace7253aa93147bcbbc3c26195d55 - languageName: node - linkType: hard - -"@reown/appkit-utils@npm:1.7.3": - version: 1.7.3 - resolution: "@reown/appkit-utils@npm:1.7.3" +"@reown/appkit-ui@npm:1.8.12": + version: 1.8.12 + resolution: "@reown/appkit-ui@npm:1.8.12" dependencies: - "@reown/appkit-common": "npm:1.7.3" - "@reown/appkit-controllers": "npm:1.7.3" - "@reown/appkit-polyfills": "npm:1.7.3" - "@reown/appkit-wallet": "npm:1.7.3" - "@walletconnect/logger": "npm:2.1.2" - "@walletconnect/universal-provider": "npm:2.19.2" - valtio: "npm:1.13.2" - viem: "npm:>=2.23.11" - peerDependencies: - valtio: 1.13.2 - checksum: 10c0/dbcf4e2b8dc2edf653ba4e9725addd4aed8f36fed7c24d875afcf26300100cc88fa0b3a8048fcdd3ed21d3371d5a63fb43276aa5fefd779f30186b69fe2ad6c1 + "@phosphor-icons/webcomponents": "npm:2.1.5" + "@reown/appkit-common": "npm:1.8.12" + "@reown/appkit-controllers": "npm:1.8.12" + "@reown/appkit-wallet": "npm:1.8.12" + lit: "npm:3.3.0" + qrcode: "npm:1.5.3" + checksum: 10c0/1eda7843466b7389a5d24cad0e1a015fbfd785a1279cb7a85cd165c61b25cc64d0d0229e669b1dfc9b5c877cc2b3fa16fcfe354edd68494760686d2259cc3e3b languageName: node linkType: hard @@ -8515,27 +8465,22 @@ __metadata: languageName: node linkType: hard -"@reown/appkit-wallet@npm:1.7.11": - version: 1.7.11 - resolution: "@reown/appkit-wallet@npm:1.7.11" - dependencies: - "@reown/appkit-common": "npm:1.7.11" - "@reown/appkit-polyfills": "npm:1.7.11" - "@walletconnect/logger": "npm:2.1.2" - zod: "npm:3.22.4" - checksum: 10c0/c820b6354d6e565effc7ff0115b754d3bd44dfe07f5d46ae9ece364763821213523dfcf829944bd49e76b15b548b9954a553a167af7c0a4cefa3bea68a3ba9e6 - languageName: node - linkType: hard - -"@reown/appkit-wallet@npm:1.7.3": - version: 1.7.3 - resolution: "@reown/appkit-wallet@npm:1.7.3" +"@reown/appkit-utils@npm:1.8.12": + version: 1.8.12 + resolution: "@reown/appkit-utils@npm:1.8.12" dependencies: - "@reown/appkit-common": "npm:1.7.3" - "@reown/appkit-polyfills": "npm:1.7.3" - "@walletconnect/logger": "npm:2.1.2" - zod: "npm:3.22.4" - checksum: 10c0/8468fa16a0fb64d7c45e4e7ed400f49aacf58e7aa74033b68c54b3fdbd74f934f6156c5c95839189b5a9adb746f2611dc2d57ba2ab87efbed4017e286edff50f + "@reown/appkit-common": "npm:1.8.12" + "@reown/appkit-controllers": "npm:1.8.12" + "@reown/appkit-polyfills": "npm:1.8.12" + "@reown/appkit-wallet": "npm:1.8.12" + "@wallet-standard/wallet": "npm:1.1.0" + "@walletconnect/logger": "npm:^3.0.0" + "@walletconnect/universal-provider": "npm:2.22.4" + valtio: "npm:2.1.7" + viem: "npm:>=2.37.9" + peerDependencies: + valtio: 2.1.7 + checksum: 10c0/40ec264a3f2179247f6bb8124a3b16ca3dae43e58b1f4928592a8f5d6bd1f1eec923767ece42cb07e703475db658e29607c2b20633cf456642df6a8123450f10 languageName: node linkType: hard @@ -8551,45 +8496,15 @@ __metadata: languageName: node linkType: hard -"@reown/appkit@npm:1.7.11, @reown/appkit@npm:^1.7.11": - version: 1.7.11 - resolution: "@reown/appkit@npm:1.7.11" +"@reown/appkit-wallet@npm:1.8.12": + version: 1.8.12 + resolution: "@reown/appkit-wallet@npm:1.8.12" dependencies: - "@reown/appkit-common": "npm:1.7.11" - "@reown/appkit-controllers": "npm:1.7.11" - "@reown/appkit-pay": "npm:1.7.11" - "@reown/appkit-polyfills": "npm:1.7.11" - "@reown/appkit-scaffold-ui": "npm:1.7.11" - "@reown/appkit-ui": "npm:1.7.11" - "@reown/appkit-utils": "npm:1.7.11" - "@reown/appkit-wallet": "npm:1.7.11" - "@walletconnect/types": "npm:2.21.3" - "@walletconnect/universal-provider": "npm:2.21.3" - bs58: "npm:6.0.0" - semver: "npm:7.7.2" - valtio: "npm:1.13.2" - viem: "npm:>=2.31.3" - checksum: 10c0/0b8436da1f0c95e84b2157067294656816a44559e9a5102697850bdfedc973cd1a9aa77c63d45d06408a70209b4590d1efde57dbc2f373e27172d18a10d2e40e - languageName: node - linkType: hard - -"@reown/appkit@npm:1.7.3": - version: 1.7.3 - resolution: "@reown/appkit@npm:1.7.3" - dependencies: - "@reown/appkit-common": "npm:1.7.3" - "@reown/appkit-controllers": "npm:1.7.3" - "@reown/appkit-polyfills": "npm:1.7.3" - "@reown/appkit-scaffold-ui": "npm:1.7.3" - "@reown/appkit-ui": "npm:1.7.3" - "@reown/appkit-utils": "npm:1.7.3" - "@reown/appkit-wallet": "npm:1.7.3" - "@walletconnect/types": "npm:2.19.2" - "@walletconnect/universal-provider": "npm:2.19.2" - bs58: "npm:6.0.0" - valtio: "npm:1.13.2" - viem: "npm:>=2.23.11" - checksum: 10c0/0dd83161b3468ffda5c76503540f69eb8f9c9c77ce9e4efb2d5f0bf94127815f44d2b32d0bfb9d30db6e29877905b64379e1d035c6d0a40f5445ac94827714a4 + "@reown/appkit-common": "npm:1.8.12" + "@reown/appkit-polyfills": "npm:1.8.12" + "@walletconnect/logger": "npm:^3.0.0" + zod: "npm:3.22.4" + checksum: 10c0/eb853f95a6f59fa85ae85af0a70ebd5abf97e3eb00fcaa19f9cd1b24f9d95cc7bc6779e6a87cffa19e86fe3d9bdc10c8b8e73e0ea07294bfd472351b71e39a62 languageName: node linkType: hard @@ -8614,6 +8529,31 @@ __metadata: languageName: node linkType: hard +"@reown/appkit@npm:1.8.12, @reown/appkit@npm:^1.7.11": + version: 1.8.12 + resolution: "@reown/appkit@npm:1.8.12" + dependencies: + "@lit/react": "npm:1.0.8" + "@reown/appkit-common": "npm:1.8.12" + "@reown/appkit-controllers": "npm:1.8.12" + "@reown/appkit-pay": "npm:1.8.12" + "@reown/appkit-polyfills": "npm:1.8.12" + "@reown/appkit-scaffold-ui": "npm:1.8.12" + "@reown/appkit-ui": "npm:1.8.12" + "@reown/appkit-utils": "npm:1.8.12" + "@reown/appkit-wallet": "npm:1.8.12" + "@walletconnect/universal-provider": "npm:2.22.4" + bs58: "npm:6.0.0" + semver: "npm:7.7.2" + valtio: "npm:2.1.7" + viem: "npm:>=2.37.9" + dependenciesMeta: + "@lit/react": + optional: true + checksum: 10c0/d0a0268d0c1c383961ec67bfa18d4e8d7d39a8d456699f93bc1912fa23176b0ef5a672c40d0237ecd80dad733d27a963b9177f3fe3cd1cb81c906f8d81a882fa + languageName: node + linkType: hard + "@repeaterjs/repeater@npm:3.0.4": version: 3.0.4 resolution: "@repeaterjs/repeater@npm:3.0.4" @@ -8635,6 +8575,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/pluginutils@npm:1.0.0-beta.27": + version: 1.0.0-beta.27 + resolution: "@rolldown/pluginutils@npm:1.0.0-beta.27" + checksum: 10c0/9658f235b345201d4f6bfb1f32da9754ca164f892d1cb68154fe5f53c1df42bd675ecd409836dff46884a7847d6c00bdc38af870f7c81e05bba5c2645eb4ab9c + languageName: node + linkType: hard + "@rollup/plugin-inject@npm:^5.0.5": version: 5.0.5 resolution: "@rollup/plugin-inject@npm:5.0.5" @@ -8651,9 +8598,9 @@ __metadata: languageName: node linkType: hard -"@rollup/pluginutils@npm:^5.0.1, @rollup/pluginutils@npm:^5.1.3": - version: 5.1.4 - resolution: "@rollup/pluginutils@npm:5.1.4" +"@rollup/pluginutils@npm:^5.0.1, @rollup/pluginutils@npm:^5.2.0": + version: 5.3.0 + resolution: "@rollup/pluginutils@npm:5.3.0" dependencies: "@types/estree": "npm:^1.0.0" estree-walker: "npm:^2.0.2" @@ -8663,146 +8610,160 @@ __metadata: peerDependenciesMeta: rollup: optional: true - checksum: 10c0/6d58fbc6f1024eb4b087bc9bf59a1d655a8056a60c0b4021d3beaeec3f0743503f52467fd89d2cf0e7eccf2831feb40a05ad541a17637ea21ba10b21c2004deb + checksum: 10c0/001834bf62d7cf5bac424d2617c113f7f7d3b2bf3c1778cbcccb72cdc957b68989f8e7747c782c2b911f1dde8257f56f8ac1e779e29e74e638e3f1e2cac2bcd0 languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.40.2" +"@rollup/rollup-android-arm-eabi@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.52.5" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-android-arm64@npm:4.40.2" +"@rollup/rollup-android-arm64@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-android-arm64@npm:4.52.5" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-darwin-arm64@npm:4.40.2" +"@rollup/rollup-darwin-arm64@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-darwin-arm64@npm:4.52.5" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-darwin-x64@npm:4.40.2" +"@rollup/rollup-darwin-x64@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-darwin-x64@npm:4.52.5" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.40.2" +"@rollup/rollup-freebsd-arm64@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.52.5" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-freebsd-x64@npm:4.40.2" +"@rollup/rollup-freebsd-x64@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-freebsd-x64@npm:4.52.5" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.40.2" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.52.5" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.40.2" +"@rollup/rollup-linux-arm-musleabihf@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.52.5" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.40.2" +"@rollup/rollup-linux-arm64-gnu@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.52.5" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.40.2" +"@rollup/rollup-linux-arm64-musl@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.52.5" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-loongarch64-gnu@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.40.2" +"@rollup/rollup-linux-loong64-gnu@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.52.5" conditions: os=linux & cpu=loong64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.2" +"@rollup/rollup-linux-ppc64-gnu@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.52.5" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.40.2" +"@rollup/rollup-linux-riscv64-gnu@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.52.5" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-musl@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.40.2" +"@rollup/rollup-linux-riscv64-musl@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.52.5" conditions: os=linux & cpu=riscv64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.40.2" +"@rollup/rollup-linux-s390x-gnu@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.52.5" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.40.2" +"@rollup/rollup-linux-x64-gnu@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.52.5" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.40.2" +"@rollup/rollup-linux-x64-musl@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.52.5" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.40.2" +"@rollup/rollup-openharmony-arm64@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-openharmony-arm64@npm:4.52.5" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.52.5" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.40.2" +"@rollup/rollup-win32-ia32-msvc@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.52.5" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.40.2": - version: 4.40.2 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.40.2" +"@rollup/rollup-win32-x64-gnu@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-win32-x64-gnu@npm:4.52.5" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.52.5": + version: 4.52.5 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.52.5" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -8815,9 +8776,9 @@ __metadata: linkType: hard "@rushstack/eslint-patch@npm:^1.1.0, @rushstack/eslint-patch@npm:^1.7.2": - version: 1.11.0 - resolution: "@rushstack/eslint-patch@npm:1.11.0" - checksum: 10c0/abea8d8cf2f4f50343f74abd6a8173c521ddd09b102021f5aa379ef373c40af5948b23db0e87eca1682e559e09d97d3f0c48ea71edad682c6bf72b840c8675b3 + version: 1.14.1 + resolution: "@rushstack/eslint-patch@npm:1.14.1" + checksum: 10c0/ec5014494e4fa2dcdc555b62d5db3ebcd146562863a7e75cdacbac96dd1699e93f47dfc3f2185462a21c06987728d73258e32088e93315392e4f79234250b276 languageName: node linkType: hard @@ -8848,20 +8809,13 @@ __metadata: languageName: node linkType: hard -"@scure/base@npm:1.2.6": +"@scure/base@npm:1.2.6, @scure/base@npm:^1.1.3, @scure/base@npm:~1.2.2, @scure/base@npm:~1.2.4, @scure/base@npm:~1.2.5": version: 1.2.6 resolution: "@scure/base@npm:1.2.6" checksum: 10c0/49bd5293371c4e062cb6ba689c8fe3ea3981b7bb9c000400dc4eafa29f56814cdcdd27c04311c2fec34de26bc373c593a1d6ca6d754398a488d587943b7c128a languageName: node linkType: hard -"@scure/base@npm:^1.1.3, @scure/base@npm:~1.2.2, @scure/base@npm:~1.2.4, @scure/base@npm:~1.2.5": - version: 1.2.5 - resolution: "@scure/base@npm:1.2.5" - checksum: 10c0/078928dbcdd21a037b273b81b8b0bd93af8a325e2ffd535b7ccaadd48ee3c15bab600ec2920a209fca0910abc792cca9b01d3336b472405c407440e6c0aa8bd6 - languageName: node - linkType: hard - "@scure/base@npm:~1.1.0, @scure/base@npm:~1.1.6": version: 1.1.9 resolution: "@scure/base@npm:1.1.9" @@ -8954,12 +8908,12 @@ __metadata: linkType: hard "@sendgrid/client@npm:^8.1.5": - version: 8.1.5 - resolution: "@sendgrid/client@npm:8.1.5" + version: 8.1.6 + resolution: "@sendgrid/client@npm:8.1.6" dependencies: "@sendgrid/helpers": "npm:^8.0.0" - axios: "npm:^1.8.2" - checksum: 10c0/241c1cf023abd95f61955e0c2f373f20e1b28e2af37c4c86acc85954237dac767c9d8a6fcf993e2122ca6582b066c4b00e693fb7de02850f1118611a2e30a00e + axios: "npm:^1.12.0" + checksum: 10c0/2d17a9e50828e71d62a38364d2ec711bf1fa0313dec181daf455ae324f83e223a6cd53514b29ed13a3265051781cba1516a8cab468d4d2b389c517dbd663026b languageName: node linkType: hard @@ -8973,12 +8927,12 @@ __metadata: linkType: hard "@sendgrid/mail@npm:^8.1.3": - version: 8.1.5 - resolution: "@sendgrid/mail@npm:8.1.5" + version: 8.1.6 + resolution: "@sendgrid/mail@npm:8.1.6" dependencies: "@sendgrid/client": "npm:^8.1.5" "@sendgrid/helpers": "npm:^8.0.0" - checksum: 10c0/5abfb80878165058955a09bf06400ceeb92ed5641bbb14ea3e85e92d64037342eeaabe8fb5076676d950fb9f51028f3104f65880ff0c61dc3de354b3a702608e + checksum: 10c0/593d69074abf3f3397457664721cab5052b59ecbff35c93140f5e246012f0f1037771ad11bd9037391059cf6f0621ecd8c5394344a937c2c8fcafe66a58418e7 languageName: node linkType: hard @@ -9064,41 +9018,41 @@ __metadata: languageName: node linkType: hard -"@shikijs/engine-oniguruma@npm:^3.7.0": - version: 3.7.0 - resolution: "@shikijs/engine-oniguruma@npm:3.7.0" +"@shikijs/engine-oniguruma@npm:^3.14.0": + version: 3.14.0 + resolution: "@shikijs/engine-oniguruma@npm:3.14.0" dependencies: - "@shikijs/types": "npm:3.7.0" + "@shikijs/types": "npm:3.14.0" "@shikijs/vscode-textmate": "npm:^10.0.2" - checksum: 10c0/e1ec52ec2255e3330812084d62bde8853d20162b1cd285dbb63440d63d0b16c03b6ce6983982e41ac2fc2eceb3e2f6b2bc1c627d093482c4c3836c4fbb9567b0 + checksum: 10c0/6dab2310c910fedd89046299c4423b2100c8c771822e487070d9eb158907782f195f1b9dd560b6b84f74432bdd1ca4e4429f4af76d30c0e45f8448f100094996 languageName: node linkType: hard -"@shikijs/langs@npm:^3.7.0": - version: 3.7.0 - resolution: "@shikijs/langs@npm:3.7.0" +"@shikijs/langs@npm:^3.14.0": + version: 3.14.0 + resolution: "@shikijs/langs@npm:3.14.0" dependencies: - "@shikijs/types": "npm:3.7.0" - checksum: 10c0/326e8b014e74d25ce84a63bf7fdd47d5582f85c8404d4c48d6bdacf2f32ab92ddb39b41710ee7eff3daaecbbea7ee96a6c49d427344ee8375551597c74010a81 + "@shikijs/types": "npm:3.14.0" + checksum: 10c0/59ed3b0e9f893a57c8e88b77e9280d993b0dfe219b91db2f8143a65728ef47b02e17056a029f710753184e1c077dfa589cbc5491253d791472a94dca9f598fa3 languageName: node linkType: hard -"@shikijs/themes@npm:^3.7.0": - version: 3.7.0 - resolution: "@shikijs/themes@npm:3.7.0" +"@shikijs/themes@npm:^3.14.0": + version: 3.14.0 + resolution: "@shikijs/themes@npm:3.14.0" dependencies: - "@shikijs/types": "npm:3.7.0" - checksum: 10c0/6887eb99b55439988edab21a1af00302eaed6ba0dd7e2bea6c844ff4dfb8879a0c6c2178ba3fcfe2dbf3fd9f3ab6105572c57ae871e147aaceaf53bcc345d0cd + "@shikijs/types": "npm:3.14.0" + checksum: 10c0/3326482f081e313957c3e74ae86721d18efb32c022b31936f7da1b4782f4c970dea71989934baf9ab8adbeafea07235834b2e6ab83b67e71dc87fb328a1caa58 languageName: node linkType: hard -"@shikijs/types@npm:3.7.0, @shikijs/types@npm:^3.7.0": - version: 3.7.0 - resolution: "@shikijs/types@npm:3.7.0" +"@shikijs/types@npm:3.14.0, @shikijs/types@npm:^3.14.0": + version: 3.14.0 + resolution: "@shikijs/types@npm:3.14.0" dependencies: "@shikijs/vscode-textmate": "npm:^10.0.2" "@types/hast": "npm:^3.0.4" - checksum: 10c0/d7c4fcca358c0585602090e2b4ed0a3f6742b55bea340030c115cb7aa643eac79836baa095517a538d695415458bb48c08b7be7f3c8d1cf1c1c7749a58913a3f + checksum: 10c0/154ec7a79e3c155ed47a14d14ccf91ea09909779993f999cf3d7e424c2f732cd7d7faf8074441a543445f64af1ef9456dcf9ddd4edad96615b68ca60eca2b7bc languageName: node linkType: hard @@ -9158,22 +9112,22 @@ __metadata: linkType: hard "@slack/bolt@npm:^4.2.1": - version: 4.3.0 - resolution: "@slack/bolt@npm:4.3.0" + version: 4.6.0 + resolution: "@slack/bolt@npm:4.6.0" dependencies: "@slack/logger": "npm:^4.0.0" - "@slack/oauth": "npm:^3.0.3" - "@slack/socket-mode": "npm:^2.0.4" - "@slack/types": "npm:^2.14.0" - "@slack/web-api": "npm:^7.9.1" - axios: "npm:^1.8.3" + "@slack/oauth": "npm:^3.0.4" + "@slack/socket-mode": "npm:^2.0.5" + "@slack/types": "npm:^2.18.0" + "@slack/web-api": "npm:^7.12.0" + axios: "npm:^1.12.0" express: "npm:^5.0.0" path-to-regexp: "npm:^8.1.0" raw-body: "npm:^3" tsscmp: "npm:^1.0.6" peerDependencies: "@types/express": ^5.0.0 - checksum: 10c0/88946db033cdb87f0fb19fa94a6bab2454d7efa09117b0425692da90e11f73da59889ec862062e62843ef2f7c9ba81727eace19d2f05d38acd3d83d8ee38f5d8 + checksum: 10c0/c4f07568cd6ac7489b8c168d0a4efd07591475fb35d62de602dd82989243df26b1f9adb082294749306e3abdeceb425aef3b731ddcd1207a5ca698213cac6b2c languageName: node linkType: hard @@ -9186,211 +9140,213 @@ __metadata: languageName: node linkType: hard -"@slack/oauth@npm:^3.0.3": - version: 3.0.3 - resolution: "@slack/oauth@npm:3.0.3" +"@slack/oauth@npm:^3.0.4": + version: 3.0.4 + resolution: "@slack/oauth@npm:3.0.4" dependencies: "@slack/logger": "npm:^4" - "@slack/web-api": "npm:^7.9.1" + "@slack/web-api": "npm:^7.10.0" "@types/jsonwebtoken": "npm:^9" "@types/node": "npm:>=18" jsonwebtoken: "npm:^9" - lodash.isstring: "npm:^4" - checksum: 10c0/ade3a8c20eb1ab8b85903acb516a599858812f54e2249f65d35ee0100f9c8733093cb57f8eae28531325e0b5243898e0b49d3862aef85f755615b0d3173ef0bd + checksum: 10c0/943ab9673027c3f40a298942b46982db8c00b90078bdefdc160fb4aa6569d2b53457fb61dfe3a34d70ac4fb2707628cf1600696f8e91bfb75044e7821ee7f478 languageName: node linkType: hard -"@slack/socket-mode@npm:^2.0.4": - version: 2.0.4 - resolution: "@slack/socket-mode@npm:2.0.4" +"@slack/socket-mode@npm:^2.0.5": + version: 2.0.5 + resolution: "@slack/socket-mode@npm:2.0.5" dependencies: "@slack/logger": "npm:^4" - "@slack/web-api": "npm:^7.9.1" + "@slack/web-api": "npm:^7.10.0" "@types/node": "npm:>=18" "@types/ws": "npm:^8" eventemitter3: "npm:^5" ws: "npm:^8" - checksum: 10c0/881557dbc93980655e04bad56002bb690a8243c916ec42d6fd1005ebcac72b1f67feea82a6d5cec5e2a35be80730e8d04d2b5ae1ef9c8c6857b2ff486cc781d6 + checksum: 10c0/aed2df0e7c2bf74c2c7d1e72ee84749be7b3f5c3424763a38b3f8b8638eb894aa981f679d9e3201fe34d4290f0dfd07165987086ab8305662675d0233dd627e0 languageName: node linkType: hard -"@slack/types@npm:^2.14.0, @slack/types@npm:^2.9.0": - version: 2.14.0 - resolution: "@slack/types@npm:2.14.0" - checksum: 10c0/2d45b36ee128e202b8b864fa35f5752c9f811a433d598461de83c47bf5fc5c1f45678825b4185007d8151ebb8b0ce00e6541780f4f3af5698855aebfc6550fb8 +"@slack/types@npm:^2.18.0, @slack/types@npm:^2.9.0": + version: 2.18.0 + resolution: "@slack/types@npm:2.18.0" + checksum: 10c0/e7f514226d6a0b8ca99442641b8f69e41f6c68494e31f7ca6b820e8cc087fc2ff193a49c2bda4e07c1c8102261d2d6f53e4200f047cf942285aff2f62d39c938 languageName: node linkType: hard -"@slack/web-api@npm:^7.9.1": - version: 7.9.1 - resolution: "@slack/web-api@npm:7.9.1" +"@slack/web-api@npm:^7.10.0, @slack/web-api@npm:^7.12.0, @slack/web-api@npm:^7.9.1": + version: 7.12.0 + resolution: "@slack/web-api@npm:7.12.0" dependencies: "@slack/logger": "npm:^4.0.0" - "@slack/types": "npm:^2.9.0" + "@slack/types": "npm:^2.18.0" "@types/node": "npm:>=18.0.0" "@types/retry": "npm:0.12.0" - axios: "npm:^1.8.3" + axios: "npm:^1.11.0" eventemitter3: "npm:^5.0.1" - form-data: "npm:^4.0.0" + form-data: "npm:^4.0.4" is-electron: "npm:2.2.2" is-stream: "npm:^2" p-queue: "npm:^6" p-retry: "npm:^4" retry: "npm:^0.13.1" - checksum: 10c0/76d5d935518f3c2ab9eea720c0736f5722ac6c3244f4b1ba29aa3f3525803ecc00662209c8a1cce2c2a94ec71d607c05f5f6a24456dd3e60fa65b3fe0c7b9820 + checksum: 10c0/3b40863c93a6530d9f8a27f23e3f5fa2388e10a3eab140fe8bf554a67c38b5265d052db45d6fee5624ce879e494ea47a9d019f8b9061572eae1deae636bfc802 languageName: node linkType: hard "@slack/webhook@npm:^7.0.5": - version: 7.0.5 - resolution: "@slack/webhook@npm:7.0.5" + version: 7.0.6 + resolution: "@slack/webhook@npm:7.0.6" dependencies: "@slack/types": "npm:^2.9.0" "@types/node": "npm:>=18.0.0" - axios: "npm:^1.8.3" - checksum: 10c0/051342bdbcd6ecf4e01e279e6b98616fa1008a8d4713308c319441458a383886cc6e1479dc55d03aa6cdddea56be42dbe2940b00da1ce75d8c0c2d395bb1441c + axios: "npm:^1.11.0" + checksum: 10c0/aea2e538403ca29f69157d7377811770b86c9e8e7b9474ab01b7f1738acddd68500e6ae128dd4a0ff3ff7c245b2b87a34e230eb0cfa699630423a2ecc192b432 languageName: node linkType: hard -"@smithy/abort-controller@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/abort-controller@npm:4.0.2" +"@smithy/abort-controller@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/abort-controller@npm:4.2.4" dependencies: - "@smithy/types": "npm:^4.2.0" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/d5647478fa61d5d1cf3ac8fe5b91955c679ecf48e0d71638c0ce908fbcc87f166e42722d181f33ae3c37761de89e48c5eecf620f6fd0e99cd86edbb8365dd38d + checksum: 10c0/d9d15c801773c5fda8676473b3ac9dea66ff15d560613509b16888127f908f873f3d6cfe8bb610211a8332401740a8430b3706f875b78ab168a8790e9d9f3f07 languageName: node linkType: hard -"@smithy/config-resolver@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/config-resolver@npm:4.1.0" +"@smithy/config-resolver@npm:^4.4.1": + version: 4.4.1 + resolution: "@smithy/config-resolver@npm:4.4.1" dependencies: - "@smithy/node-config-provider": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" - "@smithy/util-config-provider": "npm:^4.0.0" - "@smithy/util-middleware": "npm:^4.0.2" + "@smithy/node-config-provider": "npm:^4.3.4" + "@smithy/types": "npm:^4.8.1" + "@smithy/util-config-provider": "npm:^4.2.0" + "@smithy/util-endpoints": "npm:^3.2.4" + "@smithy/util-middleware": "npm:^4.2.4" tslib: "npm:^2.6.2" - checksum: 10c0/db67064f27981452788ef8cffa3146a1896b50911379febda7315e0657e4fe3bba6c52414670b9778eb986fe06f7e50d10e7373fa644975a0491d27333e909de + checksum: 10c0/05b93ee9dc43d1ba99699ccd626efca32bc1821b2e2a655ce74bf6a96acab5a78c0bb26938e758d2710d3bbc32b8844cd7027fa8cf93fe1fc0d374c951aed5e2 languageName: node linkType: hard -"@smithy/core@npm:^3.3.1": - version: 3.3.1 - resolution: "@smithy/core@npm:3.3.1" - dependencies: - "@smithy/middleware-serde": "npm:^4.0.3" - "@smithy/protocol-http": "npm:^5.1.0" - "@smithy/types": "npm:^4.2.0" - "@smithy/util-body-length-browser": "npm:^4.0.0" - "@smithy/util-middleware": "npm:^4.0.2" - "@smithy/util-stream": "npm:^4.2.0" - "@smithy/util-utf8": "npm:^4.0.0" +"@smithy/core@npm:^3.17.2": + version: 3.17.2 + resolution: "@smithy/core@npm:3.17.2" + dependencies: + "@smithy/middleware-serde": "npm:^4.2.4" + "@smithy/protocol-http": "npm:^5.3.4" + "@smithy/types": "npm:^4.8.1" + "@smithy/util-base64": "npm:^4.3.0" + "@smithy/util-body-length-browser": "npm:^4.2.0" + "@smithy/util-middleware": "npm:^4.2.4" + "@smithy/util-stream": "npm:^4.5.5" + "@smithy/util-utf8": "npm:^4.2.0" + "@smithy/uuid": "npm:^1.1.0" tslib: "npm:^2.6.2" - checksum: 10c0/c11f914ac9b798a6c7da2e1e8d164264118f4547b1a4eedc9c0e8ad329050f25ffa68af7658bcbbe3a852cd9c0055b891856a659bc380c87eca755efff0a548f + checksum: 10c0/ccef89c35ebb6b29cf5a59fa870979fd6366326a65c8cd0ea78d59444a0c0f796da058dfde7fd6fa54c43c103a48f8f124c6ae221ef8ac635a311796c254a4fd languageName: node linkType: hard -"@smithy/credential-provider-imds@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/credential-provider-imds@npm:4.0.2" +"@smithy/credential-provider-imds@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/credential-provider-imds@npm:4.2.4" dependencies: - "@smithy/node-config-provider": "npm:^4.0.2" - "@smithy/property-provider": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" - "@smithy/url-parser": "npm:^4.0.2" + "@smithy/node-config-provider": "npm:^4.3.4" + "@smithy/property-provider": "npm:^4.2.4" + "@smithy/types": "npm:^4.8.1" + "@smithy/url-parser": "npm:^4.2.4" tslib: "npm:^2.6.2" - checksum: 10c0/516482c103bd42d93de584ec75fa75d1184541816a7b430db109f8ec18abcaf8eb7bd072660fbf417f37a3df5c7438a1ba92aabd5a185ed736be1a6e885f0999 + checksum: 10c0/a0e9b45f821af8d35657627340e708b97ade53f449861414e9c811eafb97ff0cb75209fa21774601ae44e77eb60bcf892894c3cbe0a2a9b7327950892e8f785a languageName: node linkType: hard -"@smithy/eventstream-codec@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/eventstream-codec@npm:4.0.2" +"@smithy/eventstream-codec@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/eventstream-codec@npm:4.2.4" dependencies: "@aws-crypto/crc32": "npm:5.2.0" - "@smithy/types": "npm:^4.2.0" - "@smithy/util-hex-encoding": "npm:^4.0.0" + "@smithy/types": "npm:^4.8.1" + "@smithy/util-hex-encoding": "npm:^4.2.0" tslib: "npm:^2.6.2" - checksum: 10c0/865a44e74c81e3177608f8931e22c92c851f586c1344962db3810b2e23d39d4da2d5f7a933d24481c0b6df219404e34db463e76294d3f71445f7d4e5721aa4ea + checksum: 10c0/2a9a28d7b95ff1e0a387498715635bcd88aa66edd058abb21ddccb43b2bd5c6949ca223adefcdf1d8dd02925094249fca08573b77da7d6b72c83cf566585727a languageName: node linkType: hard -"@smithy/eventstream-serde-browser@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/eventstream-serde-browser@npm:4.0.2" +"@smithy/eventstream-serde-browser@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/eventstream-serde-browser@npm:4.2.4" dependencies: - "@smithy/eventstream-serde-universal": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" + "@smithy/eventstream-serde-universal": "npm:^4.2.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/6974a13448b733b4d98eb368a202a5c2d86389efe10e1d147be1392fb016e010d490368773d915d719973a4d29c419fab7b0eff2dd0abf1f65d1cd3bf26f4fc2 + checksum: 10c0/1d42efa8dba32c7af9af080b147a7cc79e5d47705b7cb5c94de921e60cde559f68621b7bd2386b6bbe3f134d022b3a1bd49afa42cdcdcaee5d117dab233d360f languageName: node linkType: hard -"@smithy/eventstream-serde-config-resolver@npm:^4.1.0": - version: 4.1.0 - resolution: "@smithy/eventstream-serde-config-resolver@npm:4.1.0" +"@smithy/eventstream-serde-config-resolver@npm:^4.3.4": + version: 4.3.4 + resolution: "@smithy/eventstream-serde-config-resolver@npm:4.3.4" dependencies: - "@smithy/types": "npm:^4.2.0" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/41ae76c9ad429e09908658db36f79f0c172496d9ba2727b3566692915bd8ef6df56d692ec1b30d9fa69cfa287d138bccd70422db404d4eef0792fc358d338787 + checksum: 10c0/1ce03dd62b1bcb418c9bdc7135a5c0199ac7b074ad5ed391f8ef9b1d135968793c5bbacdb3bbc447aaac1910e59d1d651e2873f89372676cb6e07b3510780693 languageName: node linkType: hard -"@smithy/eventstream-serde-node@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/eventstream-serde-node@npm:4.0.2" +"@smithy/eventstream-serde-node@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/eventstream-serde-node@npm:4.2.4" dependencies: - "@smithy/eventstream-serde-universal": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" + "@smithy/eventstream-serde-universal": "npm:^4.2.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/6f22010305ac1514d19d78dbb14866bd9b9739a72ef557355514ceb264be6aeb40532758c2e3f70e811a762e7efacd8a6eb64c4d859bdcb79253bf92ee8f60ad + checksum: 10c0/b7d30eafdcea0ff75c6a0ba34be7293f12535b25b7178e0a9818c6898dbe80003b490b67cb6c44e387b93918027edbd3a8c8febf3d405243435293a6edb69e50 languageName: node linkType: hard -"@smithy/eventstream-serde-universal@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/eventstream-serde-universal@npm:4.0.2" +"@smithy/eventstream-serde-universal@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/eventstream-serde-universal@npm:4.2.4" dependencies: - "@smithy/eventstream-codec": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" + "@smithy/eventstream-codec": "npm:^4.2.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/1e486919a7d454c4f5a7f8756d74061943dcf5a72b1ba6f735c0e4e34afabe357713e42daed99ea2c4f52995fb37185bd2b02e6778c2aaf02206068e2ebc306c + checksum: 10c0/14228d5a547dacbd0c8c749ee846e21aa1e64c297c337eb197e86ea423b1f39f91d4eb0b5a0f3a06d27d4ff6adb06e6e93e70761e63272aed319685722455ff1 languageName: node linkType: hard -"@smithy/fetch-http-handler@npm:^5.0.2": - version: 5.0.2 - resolution: "@smithy/fetch-http-handler@npm:5.0.2" +"@smithy/fetch-http-handler@npm:^5.3.5": + version: 5.3.5 + resolution: "@smithy/fetch-http-handler@npm:5.3.5" dependencies: - "@smithy/protocol-http": "npm:^5.1.0" - "@smithy/querystring-builder": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" - "@smithy/util-base64": "npm:^4.0.0" + "@smithy/protocol-http": "npm:^5.3.4" + "@smithy/querystring-builder": "npm:^4.2.4" + "@smithy/types": "npm:^4.8.1" + "@smithy/util-base64": "npm:^4.3.0" tslib: "npm:^2.6.2" - checksum: 10c0/3bf84a1fe93c07558a5ba520ab0aca62518c13659d5794094764aaef95acfbcf58ba938c51b9269c485304fdbe7353eb3cd37d7e4c57863d7c50478a9e3ff4fc + checksum: 10c0/a00579f5672035ee1caac743c5881ea35fdc863b84294049e6ba0a18d2e70d4386589d0c90698dbbb4886e53b8b82986426e7c7d44698a98129145123e10b8da languageName: node linkType: hard -"@smithy/hash-node@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/hash-node@npm:4.0.2" +"@smithy/hash-node@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/hash-node@npm:4.2.4" dependencies: - "@smithy/types": "npm:^4.2.0" - "@smithy/util-buffer-from": "npm:^4.0.0" - "@smithy/util-utf8": "npm:^4.0.0" + "@smithy/types": "npm:^4.8.1" + "@smithy/util-buffer-from": "npm:^4.2.0" + "@smithy/util-utf8": "npm:^4.2.0" tslib: "npm:^2.6.2" - checksum: 10c0/aaec3fb2146d4347e97067de4dd91759de9d0254d03e234dcced1cbd52cf8b3a77067d571bd5767cb6295da7aa7261b87a789bd597cbc45a380cd90bb47f3490 + checksum: 10c0/599805ef73d31bf55cf27c4a99ffe3d7fb2a570521b91475648b29f62ea1294f8c6568c4405c0b285a5d0be7e4b519d033eaa62214df2dcfb5c232e4d5d55502 languageName: node linkType: hard -"@smithy/invalid-dependency@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/invalid-dependency@npm:4.0.2" +"@smithy/invalid-dependency@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/invalid-dependency@npm:4.2.4" dependencies: - "@smithy/types": "npm:^4.2.0" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/f0b884ba25c371d3d3f507aebc24e598e23edeadf0a74dfd7092fc49c496cd427ab517454ebde454b2a05916719e01aa98f34603a5396455cc2dc009ad8799e8 + checksum: 10c0/2f8e2147090f98a6a4bfd674d31135270e31086cb27bb7e9f1251f795aee20003426f185077c463b698d1c7554b23048da733591c6066aef4cc9d2de91f8649f languageName: node linkType: hard @@ -9403,241 +9359,242 @@ __metadata: languageName: node linkType: hard -"@smithy/is-array-buffer@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/is-array-buffer@npm:4.0.0" +"@smithy/is-array-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/is-array-buffer@npm:4.2.0" dependencies: tslib: "npm:^2.6.2" - checksum: 10c0/ae393fbd5944d710443cd5dd225d1178ef7fb5d6259c14f3e1316ec75e401bda6cf86f7eb98bfd38e5ed76e664b810426a5756b916702cbd418f0933e15e7a3b + checksum: 10c0/8e3e21cff5929d627bbf4a9beded28bd54555cfd37772226290964af6950cc10d700776a2ce7553f34ddf88a2e7e3d4681de58c94e9805592d901fc0f32cb597 languageName: node linkType: hard -"@smithy/middleware-content-length@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/middleware-content-length@npm:4.0.2" +"@smithy/middleware-content-length@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/middleware-content-length@npm:4.2.4" dependencies: - "@smithy/protocol-http": "npm:^5.1.0" - "@smithy/types": "npm:^4.2.0" + "@smithy/protocol-http": "npm:^5.3.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/4ab343b68a15cf461f3b5996460a0730463975d9da739cf40cfb5993794023269a8bd857366f855844290fabb2b340abb6ff473cec4bfd3d6653a64f17e00c4a + checksum: 10c0/a7b2b68b0ce05a8625c19daa0716022094be41995922e07d2251ff1d4ab436c735c53e5bd494835c714a0ce5c892fe56b5c355459e04fee47e674c4fcc6ebf3a languageName: node linkType: hard -"@smithy/middleware-endpoint@npm:^4.1.2": - version: 4.1.2 - resolution: "@smithy/middleware-endpoint@npm:4.1.2" - dependencies: - "@smithy/core": "npm:^3.3.1" - "@smithy/middleware-serde": "npm:^4.0.3" - "@smithy/node-config-provider": "npm:^4.0.2" - "@smithy/shared-ini-file-loader": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" - "@smithy/url-parser": "npm:^4.0.2" - "@smithy/util-middleware": "npm:^4.0.2" +"@smithy/middleware-endpoint@npm:^4.3.6": + version: 4.3.6 + resolution: "@smithy/middleware-endpoint@npm:4.3.6" + dependencies: + "@smithy/core": "npm:^3.17.2" + "@smithy/middleware-serde": "npm:^4.2.4" + "@smithy/node-config-provider": "npm:^4.3.4" + "@smithy/shared-ini-file-loader": "npm:^4.3.4" + "@smithy/types": "npm:^4.8.1" + "@smithy/url-parser": "npm:^4.2.4" + "@smithy/util-middleware": "npm:^4.2.4" tslib: "npm:^2.6.2" - checksum: 10c0/d37ccbe77a319e7456f0adc3af0b07ddb73b73e84349cb6f25a89fb1104caf045b44e6f4327a3e9187175431c3336785d83967c9591bc75bee1af6d7fceb04b9 + checksum: 10c0/265bf22c72185a5b4c572c233a92db01ca7a5eaea77a9fd575106a89a7be16467bdc049bb36d5bb30235360dc64fc5b6562782c55385599e37d60ce7c917d224 languageName: node linkType: hard -"@smithy/middleware-retry@npm:^4.1.3": - version: 4.1.3 - resolution: "@smithy/middleware-retry@npm:4.1.3" - dependencies: - "@smithy/node-config-provider": "npm:^4.0.2" - "@smithy/protocol-http": "npm:^5.1.0" - "@smithy/service-error-classification": "npm:^4.0.3" - "@smithy/smithy-client": "npm:^4.2.2" - "@smithy/types": "npm:^4.2.0" - "@smithy/util-middleware": "npm:^4.0.2" - "@smithy/util-retry": "npm:^4.0.3" +"@smithy/middleware-retry@npm:^4.4.6": + version: 4.4.6 + resolution: "@smithy/middleware-retry@npm:4.4.6" + dependencies: + "@smithy/node-config-provider": "npm:^4.3.4" + "@smithy/protocol-http": "npm:^5.3.4" + "@smithy/service-error-classification": "npm:^4.2.4" + "@smithy/smithy-client": "npm:^4.9.2" + "@smithy/types": "npm:^4.8.1" + "@smithy/util-middleware": "npm:^4.2.4" + "@smithy/util-retry": "npm:^4.2.4" + "@smithy/uuid": "npm:^1.1.0" tslib: "npm:^2.6.2" - uuid: "npm:^9.0.1" - checksum: 10c0/fc6680454ea5b2bb5bb9e866a59f8c316ba36eb19d2ab400170f798d68c4af002463a175e2d3437d3bba820d2ba9f00ea504fd7f9b529e45cfdbd4cf06f5476d + checksum: 10c0/2dbfe3b7125af53651427b37f0264ccca80064153e7055f90a5294f2a2e872e1c15139d394938f78f14b14d36cb0cab2d20da74e4812d10959205099e04e3885 languageName: node linkType: hard -"@smithy/middleware-serde@npm:^4.0.3": - version: 4.0.3 - resolution: "@smithy/middleware-serde@npm:4.0.3" +"@smithy/middleware-serde@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/middleware-serde@npm:4.2.4" dependencies: - "@smithy/types": "npm:^4.2.0" + "@smithy/protocol-http": "npm:^5.3.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/0a3b037c8f1cade46abf9c782fe11da3f1a92d59f3c61d5806fe26a0f3c8b20d5e7e9ab919549ba33762e63fb02c60b5e436b9459647af39300b37d975acde2e + checksum: 10c0/ea61bf4a281ec58363a0940115a42eee4fdd90491ac0c32e3d217f815b8cf52b257732f6c43d0abdab18e9bb77af2d216c3a1c2cdfc66fb223f7e67e8b14325c languageName: node linkType: hard -"@smithy/middleware-stack@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/middleware-stack@npm:4.0.2" +"@smithy/middleware-stack@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/middleware-stack@npm:4.2.4" dependencies: - "@smithy/types": "npm:^4.2.0" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/ef94882966431729f7a7bddf8206b6495d67736b1f26fd88d6d6c283a96f9fffd12632ed7352e5f060f17d3ee1845a9a9da1247c26e4c46ff7011aac20b4aacc + checksum: 10c0/95dd4239b461a510b454c9462b66dd1738b97c4b3a0e424addf64b811b05f93470274fb85b1298fca5e590a76be77da440250bd4fe08cb08cb714371a45a3110 languageName: node linkType: hard -"@smithy/node-config-provider@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/node-config-provider@npm:4.0.2" +"@smithy/node-config-provider@npm:^4.3.4": + version: 4.3.4 + resolution: "@smithy/node-config-provider@npm:4.3.4" dependencies: - "@smithy/property-provider": "npm:^4.0.2" - "@smithy/shared-ini-file-loader": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" + "@smithy/property-provider": "npm:^4.2.4" + "@smithy/shared-ini-file-loader": "npm:^4.3.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/1a3b26835577e6c698a2ce59cd1dd9a3653c75e24847d35a45cd80124d72e0118b84daff47ee1ae0cdb89c134efdf7c7754d0ccf1e1c4b57467865b269b5cd0b + checksum: 10c0/94087cb14acebc2e7cf3150d00731679dcbdd9204cd5fff612b1bee01c71bee94d6d5de037a2ee0279a68f0f7d6051105613449bd2ba7ff3b32fa63ce21aa182 languageName: node linkType: hard -"@smithy/node-http-handler@npm:^4.0.4": - version: 4.0.4 - resolution: "@smithy/node-http-handler@npm:4.0.4" +"@smithy/node-http-handler@npm:^4.4.4": + version: 4.4.4 + resolution: "@smithy/node-http-handler@npm:4.4.4" dependencies: - "@smithy/abort-controller": "npm:^4.0.2" - "@smithy/protocol-http": "npm:^5.1.0" - "@smithy/querystring-builder": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" + "@smithy/abort-controller": "npm:^4.2.4" + "@smithy/protocol-http": "npm:^5.3.4" + "@smithy/querystring-builder": "npm:^4.2.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/fb621c6ebcf012a99fc442d82965ca18d752f66be6f937a400e3b4e3feef1c259c028c27df9e78fc9ac7c40679b25276cbaa8d7ab82fd111bda64003ef831358 + checksum: 10c0/c1c07ce92b62d351f3bfc26a8a8c5dfb2a77a5df1a84171e2dfa37fb2ef52d90305d97d1824f0a007b7484e733953d1933c7e6f529617a33f6b78b5b2c3f4f96 languageName: node linkType: hard -"@smithy/property-provider@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/property-provider@npm:4.0.2" +"@smithy/property-provider@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/property-provider@npm:4.2.4" dependencies: - "@smithy/types": "npm:^4.2.0" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/6effc5ef7895eb4802c6b4c704d5616f50cd0c376da1644176d3aef71396cb65f9df20f4dd85c8301a9fa24f8ac53601e0634463f4364f0d867928efa5eb5e3d + checksum: 10c0/bdd3b930a3871653b1f8571203a80f639863a58269e9248451468a2bd966d6f654af9afebaccda16de02d570ea651961239fe071b2eae75ded3e2ffa1781fe4b languageName: node linkType: hard -"@smithy/protocol-http@npm:^5.1.0": - version: 5.1.0 - resolution: "@smithy/protocol-http@npm:5.1.0" +"@smithy/protocol-http@npm:^5.3.4": + version: 5.3.4 + resolution: "@smithy/protocol-http@npm:5.3.4" dependencies: - "@smithy/types": "npm:^4.2.0" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/bb2f600853c0282630f5f32286a07a37294a57dbbec25ea0c6fbb6be32341b1be83e37933c2e3540e513c90dcb08f492bcb05980cde0b92b083e67ade6d56eb0 + checksum: 10c0/7a5a4e4f427215bfcad19e97652d597bae03b90f2e1fd9abbffc7cc7a88ca8034dd690977fe12dc9574682917c7c988d8852c12fa9477f6373edcb1504345cca languageName: node linkType: hard -"@smithy/querystring-builder@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/querystring-builder@npm:4.0.2" +"@smithy/querystring-builder@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/querystring-builder@npm:4.2.4" dependencies: - "@smithy/types": "npm:^4.2.0" - "@smithy/util-uri-escape": "npm:^4.0.0" + "@smithy/types": "npm:^4.8.1" + "@smithy/util-uri-escape": "npm:^4.2.0" tslib: "npm:^2.6.2" - checksum: 10c0/2ae27840e21982926182df809872e07d6b10b2fd93b58e02fa3f9588de23d333ddf02f0f3517de8a02a949489733bdcecb8c847980f8fb12ce1f8c3b6d127e86 + checksum: 10c0/07516146deb8ed476742c51c39a5b4ea3db2cd5731ab98f3b5c2202f24ea0414850252b643fcfbed36f04db7dbc97a8209c20c109306a6fb5bd3f75219d027bd languageName: node linkType: hard -"@smithy/querystring-parser@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/querystring-parser@npm:4.0.2" +"@smithy/querystring-parser@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/querystring-parser@npm:4.2.4" dependencies: - "@smithy/types": "npm:^4.2.0" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/e6115fce0a07b1509f407cd3eca371cce1d9c09c7e3bd9156e35506b8ab1100f9864fb8779d4dbe0169501af23f062ebc2176afc012e9132e917781cd11a2f82 + checksum: 10c0/b0d3fc8e16e3df21c83857740b5130d8d262879e5aba3f835e5eb3e9e86df49b0c08cd1bb621c7971ddd28702af2bcf31fb1f1954dcdba62247b4d820a081d0c languageName: node linkType: hard -"@smithy/service-error-classification@npm:^4.0.3": - version: 4.0.3 - resolution: "@smithy/service-error-classification@npm:4.0.3" +"@smithy/service-error-classification@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/service-error-classification@npm:4.2.4" dependencies: - "@smithy/types": "npm:^4.2.0" - checksum: 10c0/bc8a1239f2176fc0e980624e189871b309b0d61c5652022df236f34cd96e97f15719fd44c9d74cf2e1b632f5620a0fcccc6db77dbf9452bcec4e427456d96563 + "@smithy/types": "npm:^4.8.1" + checksum: 10c0/56c68c8968ec7fd858c4676202ec3342d12993ab97f429c9ea8a32e334c9456af0ecea02e4b4b03ed23f6f69bdea40228360849bfa1b6cf1a5def0699864bb97 languageName: node linkType: hard -"@smithy/shared-ini-file-loader@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/shared-ini-file-loader@npm:4.0.2" +"@smithy/shared-ini-file-loader@npm:^4.3.4": + version: 4.3.4 + resolution: "@smithy/shared-ini-file-loader@npm:4.3.4" dependencies: - "@smithy/types": "npm:^4.2.0" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/1e3d4921b6efbd1aa448a775dcb9a490d0221dd0a4fee434c5d83376de478013b3ad06d58a3d52db781124d4a53bd289fffcdb52eabffe9de152b0010332cee2 + checksum: 10c0/7d6d999ffd21230db8639d067c5ad7533be5d55ffdd73f61efe68151b326c1d6ce93daae98f83f6978997cfa99e9297b41bc67896b29fd7c95cc2071d71acab4 languageName: node linkType: hard -"@smithy/signature-v4@npm:^5.1.0": - version: 5.1.0 - resolution: "@smithy/signature-v4@npm:5.1.0" - dependencies: - "@smithy/is-array-buffer": "npm:^4.0.0" - "@smithy/protocol-http": "npm:^5.1.0" - "@smithy/types": "npm:^4.2.0" - "@smithy/util-hex-encoding": "npm:^4.0.0" - "@smithy/util-middleware": "npm:^4.0.2" - "@smithy/util-uri-escape": "npm:^4.0.0" - "@smithy/util-utf8": "npm:^4.0.0" +"@smithy/signature-v4@npm:^5.3.4": + version: 5.3.4 + resolution: "@smithy/signature-v4@npm:5.3.4" + dependencies: + "@smithy/is-array-buffer": "npm:^4.2.0" + "@smithy/protocol-http": "npm:^5.3.4" + "@smithy/types": "npm:^4.8.1" + "@smithy/util-hex-encoding": "npm:^4.2.0" + "@smithy/util-middleware": "npm:^4.2.4" + "@smithy/util-uri-escape": "npm:^4.2.0" + "@smithy/util-utf8": "npm:^4.2.0" tslib: "npm:^2.6.2" - checksum: 10c0/7f3aed4999b47f04485846a90a08d0863c8bf4201a38616faf4bcb3166892a5b2946e7d0f1d5dc068b667913713873e21ab8374d60c1ff02828972d8c9201282 + checksum: 10c0/b0685709c58cb4199396bd91c53d4ad3935b2f0f13b39855b12c6ab215d3cf8fc810427385fcc2c462c7e621357c2663f1dec8d46f1cb2374ad855ebe54d9a9a languageName: node linkType: hard -"@smithy/smithy-client@npm:^4.2.2": - version: 4.2.2 - resolution: "@smithy/smithy-client@npm:4.2.2" - dependencies: - "@smithy/core": "npm:^3.3.1" - "@smithy/middleware-endpoint": "npm:^4.1.2" - "@smithy/middleware-stack": "npm:^4.0.2" - "@smithy/protocol-http": "npm:^5.1.0" - "@smithy/types": "npm:^4.2.0" - "@smithy/util-stream": "npm:^4.2.0" +"@smithy/smithy-client@npm:^4.9.2": + version: 4.9.2 + resolution: "@smithy/smithy-client@npm:4.9.2" + dependencies: + "@smithy/core": "npm:^3.17.2" + "@smithy/middleware-endpoint": "npm:^4.3.6" + "@smithy/middleware-stack": "npm:^4.2.4" + "@smithy/protocol-http": "npm:^5.3.4" + "@smithy/types": "npm:^4.8.1" + "@smithy/util-stream": "npm:^4.5.5" tslib: "npm:^2.6.2" - checksum: 10c0/78c3f90f042b8dfe82318dba554a1032ac01f289842d614ad4e462cb033fb85c2360fe26398aaa6c5b1f093717753a7039c745942f5f5333dbbc2400b8c76a42 + checksum: 10c0/40dd96d527680c4e33b7836154968f093301a1462b35ddfb8c919c92a1d4db94d5e7ee5a476697ec5a4be378be7fa99f6dfb7c94718697500f6f149ed6f09ff5 languageName: node linkType: hard -"@smithy/types@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/types@npm:4.2.0" +"@smithy/types@npm:^4.8.1": + version: 4.8.1 + resolution: "@smithy/types@npm:4.8.1" dependencies: tslib: "npm:^2.6.2" - checksum: 10c0/a8bd92c7e548bcbe7be211152de041ec164cfcc857d7574a87b1667c38827e5616563c13bd38a1d44b88bbfa3ee8f591dc597d4e2d50f3bc74e320ea82d7c49e + checksum: 10c0/517f90a32f19f867456b253d99ab9d96b680bde8dd19129e7e7cabf355e8082d8d25ece561fef68a73a1d961155dedc30d44194e25232ed05005399aa5962195 languageName: node linkType: hard -"@smithy/url-parser@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/url-parser@npm:4.0.2" +"@smithy/url-parser@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/url-parser@npm:4.2.4" dependencies: - "@smithy/querystring-parser": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" + "@smithy/querystring-parser": "npm:^4.2.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/3da40fc18871c145bcbbb036a3d767ae113b954e94c745770f268dc877378cbafa6fc06759ea5a5e5c159a88e7331739b35b69f4d110ba0bd04b2d0923443f32 + checksum: 10c0/725b23f8a8b24bf444486dfefc29b3000e29a0ff98140304ddc8a25ab493ea2084cac942dca85e1299baab96e30bfeaafe8bd8dccb77e8d9579e93672272a6a9 languageName: node linkType: hard -"@smithy/util-base64@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/util-base64@npm:4.0.0" +"@smithy/util-base64@npm:^4.3.0": + version: 4.3.0 + resolution: "@smithy/util-base64@npm:4.3.0" dependencies: - "@smithy/util-buffer-from": "npm:^4.0.0" - "@smithy/util-utf8": "npm:^4.0.0" + "@smithy/util-buffer-from": "npm:^4.2.0" + "@smithy/util-utf8": "npm:^4.2.0" tslib: "npm:^2.6.2" - checksum: 10c0/ad18ec66cc357c189eef358d96876b114faf7086b13e47e009b265d0ff80cec046052500489c183957b3a036768409acdd1a373e01074cc002ca6983f780cffc + checksum: 10c0/02dd536b9257914cc9a595a865faac64fc96db10468d52d0cba475df78764fc25ba255707ccd061ee197fca189d7859d70af8cf89b0b0c3e27c1c693676eb6e4 languageName: node linkType: hard -"@smithy/util-body-length-browser@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/util-body-length-browser@npm:4.0.0" +"@smithy/util-body-length-browser@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-body-length-browser@npm:4.2.0" dependencies: tslib: "npm:^2.6.2" - checksum: 10c0/574a10934024a86556e9dcde1a9776170284326c3dfcc034afa128cc5a33c1c8179fca9cfb622ef8be5f2004316cc3f427badccceb943e829105536ec26306d9 + checksum: 10c0/15553c249088d59406c6917c19ed19810c7dbcc0967c44e5f3fbb2cc870c004b35f388c082b77f370a2c440a69ec7e8336c7a066af904812a66944dd5cb4c8cc languageName: node linkType: hard -"@smithy/util-body-length-node@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/util-body-length-node@npm:4.0.0" +"@smithy/util-body-length-node@npm:^4.2.1": + version: 4.2.1 + resolution: "@smithy/util-body-length-node@npm:4.2.1" dependencies: tslib: "npm:^2.6.2" - checksum: 10c0/e91fd3816767606c5f786166ada26440457fceb60f96653b3d624dcf762a8c650e513c275ff3f647cb081c63c283cc178853a7ed9aa224abc8ece4eeeef7a1dd + checksum: 10c0/3c32306735af5b62f75375e976a531ab45f171dfb0dc23ee035478d2132eaf21f244c31b0f3e861c514ff97d8112055e74c98ed44595ad24bd31434d5fdaf4bf languageName: node linkType: hard @@ -9651,116 +9608,115 @@ __metadata: languageName: node linkType: hard -"@smithy/util-buffer-from@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/util-buffer-from@npm:4.0.0" +"@smithy/util-buffer-from@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-buffer-from@npm:4.2.0" dependencies: - "@smithy/is-array-buffer": "npm:^4.0.0" + "@smithy/is-array-buffer": "npm:^4.2.0" tslib: "npm:^2.6.2" - checksum: 10c0/be7cd33b6cb91503982b297716251e67cdca02819a15797632091cadab2dc0b4a147fff0709a0aa9bbc0b82a2644a7ed7c8afdd2194d5093cee2e9605b3a9f6f + checksum: 10c0/4842d5607240c11400db30762ef6cb4def8d13e3474c5a901a4e2a1783198f5b163ab6011cf24a7f0acbba9a4d7cc79db1d811dc8aa9da446448e52773223997 languageName: node linkType: hard -"@smithy/util-config-provider@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/util-config-provider@npm:4.0.0" +"@smithy/util-config-provider@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-config-provider@npm:4.2.0" dependencies: tslib: "npm:^2.6.2" - checksum: 10c0/cd9498d5f77a73aadd575084bcb22d2bb5945bac4605d605d36f2efe3f165f2b60f4dc88b7a62c2ed082ffa4b2c2f19621d0859f18399edbc2b5988d92e4649f + checksum: 10c0/0699b9980ef94eac8f491c2ac557dc47e01c6ae71dabcb4464cc064f8dbf0855797461dbec8ba1925d45f076e968b0df02f0691c636cd1043e560f67541a1d27 languageName: node linkType: hard -"@smithy/util-defaults-mode-browser@npm:^4.0.10": - version: 4.0.10 - resolution: "@smithy/util-defaults-mode-browser@npm:4.0.10" +"@smithy/util-defaults-mode-browser@npm:^4.3.5": + version: 4.3.5 + resolution: "@smithy/util-defaults-mode-browser@npm:4.3.5" dependencies: - "@smithy/property-provider": "npm:^4.0.2" - "@smithy/smithy-client": "npm:^4.2.2" - "@smithy/types": "npm:^4.2.0" - bowser: "npm:^2.11.0" + "@smithy/property-provider": "npm:^4.2.4" + "@smithy/smithy-client": "npm:^4.9.2" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/134d7a22cfeabf715217054c22f4f36ed42a7e2935d9e9767088fc684a1b9bce3c1ca511ba0f683761c106b4beb6e2da9cc35687974316116b31e959ca46ee12 + checksum: 10c0/0c3e73f4437517c4c3d2b6abe5129b1b69dc16d0129be146948950cc52b91269cf978a711f52c833e37c7efb95ec1b3bd7412adf75fd9341ffab337907dddcc8 languageName: node linkType: hard -"@smithy/util-defaults-mode-node@npm:^4.0.10": - version: 4.0.10 - resolution: "@smithy/util-defaults-mode-node@npm:4.0.10" +"@smithy/util-defaults-mode-node@npm:^4.2.7": + version: 4.2.7 + resolution: "@smithy/util-defaults-mode-node@npm:4.2.7" dependencies: - "@smithy/config-resolver": "npm:^4.1.0" - "@smithy/credential-provider-imds": "npm:^4.0.2" - "@smithy/node-config-provider": "npm:^4.0.2" - "@smithy/property-provider": "npm:^4.0.2" - "@smithy/smithy-client": "npm:^4.2.2" - "@smithy/types": "npm:^4.2.0" + "@smithy/config-resolver": "npm:^4.4.1" + "@smithy/credential-provider-imds": "npm:^4.2.4" + "@smithy/node-config-provider": "npm:^4.3.4" + "@smithy/property-provider": "npm:^4.2.4" + "@smithy/smithy-client": "npm:^4.9.2" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/9e099ed858696cdba80e44014359b94e4190f8d4e05939180094c26cdcdbe593eca998a161966a66e30c7873c449a33ba9be9dbe2a2282659da28bc490e3668c + checksum: 10c0/554a7fdd92d318b19496baea14d95c3fd9a42a888b423195683fde0c9b3204d0e7fd9e6307cee2f1a630def8bfe54264537acb85477719c36a0479c857d76ef9 languageName: node linkType: hard -"@smithy/util-endpoints@npm:^3.0.2": - version: 3.0.2 - resolution: "@smithy/util-endpoints@npm:3.0.2" +"@smithy/util-endpoints@npm:^3.2.4": + version: 3.2.4 + resolution: "@smithy/util-endpoints@npm:3.2.4" dependencies: - "@smithy/node-config-provider": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" + "@smithy/node-config-provider": "npm:^4.3.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/5d2fe3956dc528842c071329bc69bd6567462858c1fbb1cc7ca19622227a803b54d95f44f3ac703852bce6349f455bfec599aea51df56d02e3c8b12e6481c27a + checksum: 10c0/72d47d652501eca0eaae70707f52781144bd478eb2ae47de1dd85000890914e26bd26d89f362853849e20b1b3e8a8812b37d675e6e464136f4c51958592d0187 languageName: node linkType: hard -"@smithy/util-hex-encoding@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/util-hex-encoding@npm:4.0.0" +"@smithy/util-hex-encoding@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-hex-encoding@npm:4.2.0" dependencies: tslib: "npm:^2.6.2" - checksum: 10c0/70dbb3aa1a79aff3329d07a66411ff26398df338bdd8a6d077b438231afe3dc86d9a7022204baddecd8bc633f059d5c841fa916d81dd7447ea79b64148f386d2 + checksum: 10c0/aaa94a69f03d14d3f28125cc915ca421065735e2d05d7305f0958a50021b2fce4fc68a248328e6b5b612dbaa49e471d481ff513bf89554f659f0a49573e97312 languageName: node linkType: hard -"@smithy/util-middleware@npm:^4.0.2": - version: 4.0.2 - resolution: "@smithy/util-middleware@npm:4.0.2" +"@smithy/util-middleware@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/util-middleware@npm:4.2.4" dependencies: - "@smithy/types": "npm:^4.2.0" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/18c3882c94f1b1bbb3825c30d1e41ae77a8da3dcd93ebbf1c486f34d5db9e06431789aef54d1b1fbb0424b115fc1e1ae17d27efe4af4277173d901a76147fef8 + checksum: 10c0/0d9a9e4df6bdc28e4e2cb5c8e8b31fb406d0e2f74a9f07b16b59084dfb412656ca9fe2f8225a5d859e20a16e04353543d2531918b9c9439001d479d76f62d4ec languageName: node linkType: hard -"@smithy/util-retry@npm:^4.0.3": - version: 4.0.3 - resolution: "@smithy/util-retry@npm:4.0.3" +"@smithy/util-retry@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/util-retry@npm:4.2.4" dependencies: - "@smithy/service-error-classification": "npm:^4.0.3" - "@smithy/types": "npm:^4.2.0" + "@smithy/service-error-classification": "npm:^4.2.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/a00c47182efed65f3a86afc28fef69ae1e083965cc69f18bc82fb86e23179c3d083639c4819c97a625924b207dc1efaf7b68cf52e1c030f7c9a9625bbea215e0 + checksum: 10c0/6cc07d33c5be871727107119e810b7ba6fe88c05595da66bc6a600608a366d9c2a3b36068eb7494ab4b07542c8769e77ce78914d02c059c5bedb14caafd39aaf languageName: node linkType: hard -"@smithy/util-stream@npm:^4.2.0": - version: 4.2.0 - resolution: "@smithy/util-stream@npm:4.2.0" - dependencies: - "@smithy/fetch-http-handler": "npm:^5.0.2" - "@smithy/node-http-handler": "npm:^4.0.4" - "@smithy/types": "npm:^4.2.0" - "@smithy/util-base64": "npm:^4.0.0" - "@smithy/util-buffer-from": "npm:^4.0.0" - "@smithy/util-hex-encoding": "npm:^4.0.0" - "@smithy/util-utf8": "npm:^4.0.0" +"@smithy/util-stream@npm:^4.5.5": + version: 4.5.5 + resolution: "@smithy/util-stream@npm:4.5.5" + dependencies: + "@smithy/fetch-http-handler": "npm:^5.3.5" + "@smithy/node-http-handler": "npm:^4.4.4" + "@smithy/types": "npm:^4.8.1" + "@smithy/util-base64": "npm:^4.3.0" + "@smithy/util-buffer-from": "npm:^4.2.0" + "@smithy/util-hex-encoding": "npm:^4.2.0" + "@smithy/util-utf8": "npm:^4.2.0" tslib: "npm:^2.6.2" - checksum: 10c0/52449a6ec68a483fdeef816128c923c744e278f6cf4d5b6fbe50e29fa8b6e5813df26221389f22bce143deb91f047ac56f87db85306908c5d0b87460e162bf63 + checksum: 10c0/d8cc3931a4792c4a8263227418be1a5853081b8718180f065ac0bff3b1018e57199c1d4e3cde57a027e61e7fc531f8d8b9bbad8a0c77138595d72ce88dbffeea languageName: node linkType: hard -"@smithy/util-uri-escape@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/util-uri-escape@npm:4.0.0" +"@smithy/util-uri-escape@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-uri-escape@npm:4.2.0" dependencies: tslib: "npm:^2.6.2" - checksum: 10c0/23984624060756adba8aa4ab1693fe6b387ee5064d8ec4dfd39bb5908c4ee8b9c3f2dc755da9b07505d8e3ce1338c1867abfa74158931e4728bf3cfcf2c05c3d + checksum: 10c0/1933e8d939dc52e1ee5e7d2397f4c208a9eac0283397a19ee72078d04db997ebe3ad39709b56aac586ffce10d1cf5ab17dfc068ea6ab030098fc06fe3532e085 languageName: node linkType: hard @@ -9774,24 +9730,33 @@ __metadata: languageName: node linkType: hard -"@smithy/util-utf8@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/util-utf8@npm:4.0.0" +"@smithy/util-utf8@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/util-utf8@npm:4.2.0" dependencies: - "@smithy/util-buffer-from": "npm:^4.0.0" + "@smithy/util-buffer-from": "npm:^4.2.0" tslib: "npm:^2.6.2" - checksum: 10c0/28a5a5372cbf0b3d2e32dd16f79b04c2aec6f704cf13789db922e9686fde38dde0171491cfa4c2c201595d54752a319faaeeed3c325329610887694431e28c98 + checksum: 10c0/689a1f2295d52bec0dde7215a075d79ef32ad8b146cb610a529b2cab747d96978401fd31469c225e31f3042830c54403e64d39b28033df013c8de27a84b405a2 languageName: node linkType: hard -"@smithy/util-waiter@npm:^4.0.3": - version: 4.0.3 - resolution: "@smithy/util-waiter@npm:4.0.3" +"@smithy/util-waiter@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/util-waiter@npm:4.2.4" dependencies: - "@smithy/abort-controller": "npm:^4.0.2" - "@smithy/types": "npm:^4.2.0" + "@smithy/abort-controller": "npm:^4.2.4" + "@smithy/types": "npm:^4.8.1" tslib: "npm:^2.6.2" - checksum: 10c0/0ca992cd85719b367655943df08e8f7f0dd0f4ffe335809de7ed4c133ee2db5b58a2661cfc43040cf91512ef21783c8302fc2352f95910ecf3f0a50b0e32c2ff + checksum: 10c0/ceae65ea783dc5737c0e762a5fc250e49163634b0b5372831dc842904f98b4075614f1b4ca341464af87c0c68ac241a8ea5b4823fcc22cae38d5eb98b90fa8d9 + languageName: node + linkType: hard + +"@smithy/uuid@npm:^1.1.0": + version: 1.1.0 + resolution: "@smithy/uuid@npm:1.1.0" + dependencies: + tslib: "npm:^2.6.2" + checksum: 10c0/f8a8bfcc0e241457636884e778e261d45d8a3aaad533775111170cac36ac666275b59ec6d86d3d5b8d470ff4b864202d2a1a188b3c0e0ed0c86a0b693acf1ecf languageName: node linkType: hard @@ -9802,17 +9767,638 @@ __metadata: languageName: node linkType: hard -"@solidity-parser/parser@npm:^0.19.0": - version: 0.19.0 - resolution: "@solidity-parser/parser@npm:0.19.0" - checksum: 10c0/2f4c885bb32ca95ea41120f0d972437b4191d26aa63ea62b7904d075e1b90f4290996407ef84a46a20f66e4268f41fb07fc0edc7142afc443511e8c74b37c6e9 +"@solana-program/system@npm:^0.8.0": + version: 0.8.1 + resolution: "@solana-program/system@npm:0.8.1" + peerDependencies: + "@solana/kit": ^3.0 + checksum: 10c0/2cf5ced9e587df76e17dcfdabaf5d3c77ddd5fdf5273cc1efa9ddebb23bfe4bbe9b3e7136d1af17b7f5c99194a01a1cb585022928b32b95552f70d749b5e841b + languageName: node + linkType: hard + +"@solana-program/token@npm:^0.6.0": + version: 0.6.0 + resolution: "@solana-program/token@npm:0.6.0" + peerDependencies: + "@solana/kit": ^3.0 + checksum: 10c0/d556ef36e642f6d386cba9419abb94813f2eaeecd5dea93f911ed5e5d9a52907ac1b6c0adf3905c728e0c33f40ec81200caf1078aa98f46bd4d718d6bd188dae + languageName: node + linkType: hard + +"@solana/accounts@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/accounts@npm:3.0.3" + dependencies: + "@solana/addresses": "npm:3.0.3" + "@solana/codecs-core": "npm:3.0.3" + "@solana/codecs-strings": "npm:3.0.3" + "@solana/errors": "npm:3.0.3" + "@solana/rpc-spec": "npm:3.0.3" + "@solana/rpc-types": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/e1faa4e865741b3aa5a8479d546513f52cb80454aa6ab71f3ccc32ef214044dab684d8589d287df826bdc8240170a78284677db5bdb9d63415d249ba6ad7228b + languageName: node + linkType: hard + +"@solana/addresses@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/addresses@npm:3.0.3" + dependencies: + "@solana/assertions": "npm:3.0.3" + "@solana/codecs-core": "npm:3.0.3" + "@solana/codecs-strings": "npm:3.0.3" + "@solana/errors": "npm:3.0.3" + "@solana/nominal-types": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/16a0a4a5ef1d23828f0747f5a1fcd71edd9dbe4e681fc2c88888388897224f3c9b760bfd25e7f0b4cdb6f839adc9dbf3af35ce3e951a73a71b23162fddb95979 + languageName: node + linkType: hard + +"@solana/assertions@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/assertions@npm:3.0.3" + dependencies: + "@solana/errors": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/ee3d8b6c5408d349bb44764ffc67bab2700fb4acff17ddd512bfe85fb2137b4375f9ff0cdd9aae4cebb5c8c5e2bd183d3c7213ee000eb599656064f42b5ede85 + languageName: node + linkType: hard + +"@solana/buffer-layout@npm:^4.0.1": + version: 4.0.1 + resolution: "@solana/buffer-layout@npm:4.0.1" + dependencies: + buffer: "npm:~6.0.3" + checksum: 10c0/6535f3908cf6dfc405b665795f0c2eaa0482a8c6b1811403945cf7b450e7eb7b40acce3e8af046f2fcc3eea1a15e61d48c418315d813bee4b720d56b00053305 + languageName: node + linkType: hard + +"@solana/codecs-core@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/codecs-core@npm:2.3.0" + dependencies: + "@solana/errors": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/efef080b94fe572bcfeac9f1c0b222700203bd2b45c9590e77445b35335d0ed2582d1cc4e533003d2090c385c06eb93dfa05388f9766182aa60ce85eacfd8042 + languageName: node + linkType: hard + +"@solana/codecs-core@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/codecs-core@npm:3.0.3" + dependencies: + "@solana/errors": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/38e3022f8408f96027050a478dfece2f4b124d35252343aa8e1b8fb155366c39439671cce27e61670221de954f772f2d3371e63c7ddb387b3ff7a1e525965c3f + languageName: node + linkType: hard + +"@solana/codecs-data-structures@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/codecs-data-structures@npm:3.0.3" + dependencies: + "@solana/codecs-core": "npm:3.0.3" + "@solana/codecs-numbers": "npm:3.0.3" + "@solana/errors": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/e4be050047deb813b99bdad5c596624df13ff9353812460c1acdc9f46fe68158ee9ebb20a4e066033b6387e52ae85f04f7cbe48f77eecaafa2e51fdd50e312b1 + languageName: node + linkType: hard + +"@solana/codecs-numbers@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/codecs-numbers@npm:3.0.3" + dependencies: + "@solana/codecs-core": "npm:3.0.3" + "@solana/errors": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/5c82475ee39fc78305935f9071d2dac05b64dc50991ade508359297068869ac521842a67935a7ebd8d12f1b457fc571c9bc9efedc4d6a1ba2a403ab7b11fff82 + languageName: node + linkType: hard + +"@solana/codecs-numbers@npm:^2.1.0": + version: 2.3.0 + resolution: "@solana/codecs-numbers@npm:2.3.0" + dependencies: + "@solana/codecs-core": "npm:2.3.0" + "@solana/errors": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/0780d60771e451cfe22ea614315fed2f37507aa62f83cddb900186f88d4d4532eea298d74796d1dbc8c34321a570b5d9ada25e8f4a5aeadd57aa4e688b4465f5 + languageName: node + linkType: hard + +"@solana/codecs-strings@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/codecs-strings@npm:3.0.3" + dependencies: + "@solana/codecs-core": "npm:3.0.3" + "@solana/codecs-numbers": "npm:3.0.3" + "@solana/errors": "npm:3.0.3" + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: ">=5.3.3" + checksum: 10c0/d340f4bfdda5ba40f143c382b7009f50c621b3f973c9fa57c97b33edf473b31f39826ec7d510a6f89de2384af208c6e8993448cf7ef1fee3acedf0d29c2b4d20 + languageName: node + linkType: hard + +"@solana/codecs@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/codecs@npm:3.0.3" + dependencies: + "@solana/codecs-core": "npm:3.0.3" + "@solana/codecs-data-structures": "npm:3.0.3" + "@solana/codecs-numbers": "npm:3.0.3" + "@solana/codecs-strings": "npm:3.0.3" + "@solana/options": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/95e19f62fd21dbfa277acce374b5507de52adbfaa6057e8a7cf15b9a50893278149e0ccbaebef007323fd2c91a7aaf5377d65dc671d669e34037a2ba5533073e + languageName: node + linkType: hard + +"@solana/errors@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/errors@npm:2.3.0" + dependencies: + chalk: "npm:^5.4.1" + commander: "npm:^14.0.0" + peerDependencies: + typescript: ">=5.3.3" + bin: + errors: bin/cli.mjs + checksum: 10c0/55bef8828b4a6bb5222d3dbfe27162684906ba90753126b9cfd1e8e39c6c29209c0f4f331cfb1d3d1cf43fd456022af92337b4234a145d8de292588197c12c71 + languageName: node + linkType: hard + +"@solana/errors@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/errors@npm:3.0.3" + dependencies: + chalk: "npm:5.6.2" + commander: "npm:14.0.0" + peerDependencies: + typescript: ">=5.3.3" + bin: + errors: bin/cli.mjs + checksum: 10c0/115cf5203f67081cf01da13e0f9a7b270cbbb4ac8ddf036f6cf2532069ce5af59c2c49b50449ea03cba158078cb5402f5c93f6794512475d07d1dfb498b9aa19 + languageName: node + linkType: hard + +"@solana/fast-stable-stringify@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/fast-stable-stringify@npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/dc3595e3cccf61fd86418ae331ca684ba59514a2af9f9f8478d3f22102dc11b91be0b7f3f04e8feaea15a02701f19f14c284611e086f83c609102d5bfd2fdb92 + languageName: node + linkType: hard + +"@solana/functional@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/functional@npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/7876642e57e6dbb32673bd868fee61e301cdf366ccd344176c5dbd0b202911d03f47d9cd52ae144a23e41428f3aedc98ab90bd359325d5a7a519284a82b604dc + languageName: node + linkType: hard + +"@solana/instruction-plans@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/instruction-plans@npm:3.0.3" + dependencies: + "@solana/errors": "npm:3.0.3" + "@solana/instructions": "npm:3.0.3" + "@solana/promises": "npm:3.0.3" + "@solana/transaction-messages": "npm:3.0.3" + "@solana/transactions": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/b0e5231e0cf2eb61981db4aaf9b2dc82b1f72ed800ba16b3d8c94d089195ace73260b770d41eee66e54791359d5bb6ebd492221bb01250b78d6eb0022cbdaaa4 + languageName: node + linkType: hard + +"@solana/instructions@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/instructions@npm:3.0.3" + dependencies: + "@solana/codecs-core": "npm:3.0.3" + "@solana/errors": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/aa7dbca3c39742831a60e9cb3769c6ec29e21ee562305e974e735e41a7dbcad365a78932a804a0f7e9416d8431404e8823cfa0d74e513996184bf58369d833c8 + languageName: node + linkType: hard + +"@solana/keys@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/keys@npm:3.0.3" + dependencies: + "@solana/assertions": "npm:3.0.3" + "@solana/codecs-core": "npm:3.0.3" + "@solana/codecs-strings": "npm:3.0.3" + "@solana/errors": "npm:3.0.3" + "@solana/nominal-types": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/3ab0bcc603d04e98eea0f16f6701cf299fd1fccb6b871f2052a886d4fe8ae223feab93c1f225af769458a9211904b4e6b0cbce49e0fd9281aedb8a96661c761a + languageName: node + linkType: hard + +"@solana/kit@npm:^3.0.3": + version: 3.0.3 + resolution: "@solana/kit@npm:3.0.3" + dependencies: + "@solana/accounts": "npm:3.0.3" + "@solana/addresses": "npm:3.0.3" + "@solana/codecs": "npm:3.0.3" + "@solana/errors": "npm:3.0.3" + "@solana/functional": "npm:3.0.3" + "@solana/instruction-plans": "npm:3.0.3" + "@solana/instructions": "npm:3.0.3" + "@solana/keys": "npm:3.0.3" + "@solana/programs": "npm:3.0.3" + "@solana/rpc": "npm:3.0.3" + "@solana/rpc-parsed-types": "npm:3.0.3" + "@solana/rpc-spec-types": "npm:3.0.3" + "@solana/rpc-subscriptions": "npm:3.0.3" + "@solana/rpc-types": "npm:3.0.3" + "@solana/signers": "npm:3.0.3" + "@solana/sysvars": "npm:3.0.3" + "@solana/transaction-confirmation": "npm:3.0.3" + "@solana/transaction-messages": "npm:3.0.3" + "@solana/transactions": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/6b1f65462d2d7e4cc662a0361aedb3c019f7e54eb2d9b9bd52853f1c25f630ff0f4e3740ba2db3c3779ba556c2ce4c51e774625344f0842e14e30a6092b2444a + languageName: node + linkType: hard + +"@solana/nominal-types@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/nominal-types@npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/3e13122d548d1c24de785da85eeec0863a4fd9f929295740db73761a9463ef8a8d8857efc42660359c687172b0df3f1eed514cf4425de2ebb4c7e8b17d24c19a + languageName: node + linkType: hard + +"@solana/options@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/options@npm:3.0.3" + dependencies: + "@solana/codecs-core": "npm:3.0.3" + "@solana/codecs-data-structures": "npm:3.0.3" + "@solana/codecs-numbers": "npm:3.0.3" + "@solana/codecs-strings": "npm:3.0.3" + "@solana/errors": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/3c3968c3fb2359f4844fdf8d9ac2813c86605fb53b7889084de9709ad25bb8298d37c404eb93b40912a7bf33436cc19bb44e02f827ec34d40f40b5fe5d6fdd70 + languageName: node + linkType: hard + +"@solana/programs@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/programs@npm:3.0.3" + dependencies: + "@solana/addresses": "npm:3.0.3" + "@solana/errors": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/7e9089c34453da4848e54152e6dfd3cfd0426feee524e29afa782ada43d402cb2e5f1e29f14960b69c6b2f78b702d7d3da78a6adfa763212de7e9123245cfbac + languageName: node + linkType: hard + +"@solana/promises@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/promises@npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/9880b6d871fbaa78fd64d6ed6176daed0ad101d238fc9e487a63e32418cbe9a477962a4578b1c02f4b701a7a7f4ebbdeb608cd39de8482ea02ddf5b648377e0b + languageName: node + linkType: hard + +"@solana/rpc-api@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/rpc-api@npm:3.0.3" + dependencies: + "@solana/addresses": "npm:3.0.3" + "@solana/codecs-core": "npm:3.0.3" + "@solana/codecs-strings": "npm:3.0.3" + "@solana/errors": "npm:3.0.3" + "@solana/keys": "npm:3.0.3" + "@solana/rpc-parsed-types": "npm:3.0.3" + "@solana/rpc-spec": "npm:3.0.3" + "@solana/rpc-transformers": "npm:3.0.3" + "@solana/rpc-types": "npm:3.0.3" + "@solana/transaction-messages": "npm:3.0.3" + "@solana/transactions": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/736974768d5c3268878fca79fd50e00b08db7ee5cc20c278f155526aad56d57ea01b400a50ecb7cb8ee05bff5087a40b9d755cf6a6a75e5ac0caae1f2136078f + languageName: node + linkType: hard + +"@solana/rpc-parsed-types@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/rpc-parsed-types@npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/f04aa59afe831f42a8e560daeec9ab24c54bf9aa8751415ba9b42f4c05da445a267a98c11f605fdb3e7462a0cb7dfb7e8bf8ded0a45886d9fe1a6a8c67351f4c + languageName: node + linkType: hard + +"@solana/rpc-spec-types@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/rpc-spec-types@npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/0d5aee449c97b7dbf131554a1c9fa58bc9ff4bfbc18051429ae09bff0bbfe6c4d45acd23cffe8a4a721b9ed1ad6aaddeee8f0de2418011d61414bee0803bf00a + languageName: node + linkType: hard + +"@solana/rpc-spec@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/rpc-spec@npm:3.0.3" + dependencies: + "@solana/errors": "npm:3.0.3" + "@solana/rpc-spec-types": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/2f0148b8c120bf660e7013371eb56843fd3442f87b332b5e18d2a8be82268d06f1a3f6de232572878b333e47a9e8592ab934f4bc19560dc5e0331fe00d8be515 + languageName: node + linkType: hard + +"@solana/rpc-subscriptions-api@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/rpc-subscriptions-api@npm:3.0.3" + dependencies: + "@solana/addresses": "npm:3.0.3" + "@solana/keys": "npm:3.0.3" + "@solana/rpc-subscriptions-spec": "npm:3.0.3" + "@solana/rpc-transformers": "npm:3.0.3" + "@solana/rpc-types": "npm:3.0.3" + "@solana/transaction-messages": "npm:3.0.3" + "@solana/transactions": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/f6c86a659c998df4d085543487cd15e716723b8f9dcc875341687c6e26f8206b9c05ac10dbf3189d0ca76faf922ce498d5869b44120b5ffb79958452692746b6 + languageName: node + linkType: hard + +"@solana/rpc-subscriptions-channel-websocket@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/rpc-subscriptions-channel-websocket@npm:3.0.3" + dependencies: + "@solana/errors": "npm:3.0.3" + "@solana/functional": "npm:3.0.3" + "@solana/rpc-subscriptions-spec": "npm:3.0.3" + "@solana/subscribable": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + ws: ^8.18.0 + checksum: 10c0/d78b932d7d409d0560d8fce0fbcdfbc98e02a80135636a94137c2003c7af7a34c1d944eb214b311069617a71412cf83996bd20c4b1ea4ce02dfcff97678b78bb + languageName: node + linkType: hard + +"@solana/rpc-subscriptions-spec@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/rpc-subscriptions-spec@npm:3.0.3" + dependencies: + "@solana/errors": "npm:3.0.3" + "@solana/promises": "npm:3.0.3" + "@solana/rpc-spec-types": "npm:3.0.3" + "@solana/subscribable": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/54f6f0873e3b0842959d500baa6d1751cef9611633457257874630a3a9f9f2e5fd66f54527a3bc37a4cd9dad210a47cc110bafb4909e857aa94d4138803601ad + languageName: node + linkType: hard + +"@solana/rpc-subscriptions@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/rpc-subscriptions@npm:3.0.3" + dependencies: + "@solana/errors": "npm:3.0.3" + "@solana/fast-stable-stringify": "npm:3.0.3" + "@solana/functional": "npm:3.0.3" + "@solana/promises": "npm:3.0.3" + "@solana/rpc-spec-types": "npm:3.0.3" + "@solana/rpc-subscriptions-api": "npm:3.0.3" + "@solana/rpc-subscriptions-channel-websocket": "npm:3.0.3" + "@solana/rpc-subscriptions-spec": "npm:3.0.3" + "@solana/rpc-transformers": "npm:3.0.3" + "@solana/rpc-types": "npm:3.0.3" + "@solana/subscribable": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/7480f77f04c35fa8d93eb42d30b268d9e69594e88245f73c8e2f9f22294e4bd199b8aa6258312a8aa0cbeedaf2aa38df1342034f85aa9236dca120454f0d2fac + languageName: node + linkType: hard + +"@solana/rpc-transformers@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/rpc-transformers@npm:3.0.3" + dependencies: + "@solana/errors": "npm:3.0.3" + "@solana/functional": "npm:3.0.3" + "@solana/nominal-types": "npm:3.0.3" + "@solana/rpc-spec-types": "npm:3.0.3" + "@solana/rpc-types": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/834250183dcc8a31b0d39cf3d1d10d22193e5d16ce7e033c142e46cdf8e2d0d105ccfd4826d1fae7e741ab463ae142381c0cbbed8b2bfa6df4e421a88d54dd20 + languageName: node + linkType: hard + +"@solana/rpc-transport-http@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/rpc-transport-http@npm:3.0.3" + dependencies: + "@solana/errors": "npm:3.0.3" + "@solana/rpc-spec": "npm:3.0.3" + "@solana/rpc-spec-types": "npm:3.0.3" + undici-types: "npm:^7.15.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/69480caead92312669ef5ad30e3cdac0a5a3de3b0865afb1bc39a33e289c1f3280a2c72f151ac9d338fda235ab1b81fd39535877dae9cd4978c0c4e0066ef6e4 + languageName: node + linkType: hard + +"@solana/rpc-types@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/rpc-types@npm:3.0.3" + dependencies: + "@solana/addresses": "npm:3.0.3" + "@solana/codecs-core": "npm:3.0.3" + "@solana/codecs-numbers": "npm:3.0.3" + "@solana/codecs-strings": "npm:3.0.3" + "@solana/errors": "npm:3.0.3" + "@solana/nominal-types": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/bbc58bd2e3d171b3090a8a05e861b7e0d78eca25b7937fdb5813f5fcc421810145bd12b0b32dca20c358a77dc57bcf5de7d09c081d21f32b69036ffa336a6420 + languageName: node + linkType: hard + +"@solana/rpc@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/rpc@npm:3.0.3" + dependencies: + "@solana/errors": "npm:3.0.3" + "@solana/fast-stable-stringify": "npm:3.0.3" + "@solana/functional": "npm:3.0.3" + "@solana/rpc-api": "npm:3.0.3" + "@solana/rpc-spec": "npm:3.0.3" + "@solana/rpc-spec-types": "npm:3.0.3" + "@solana/rpc-transformers": "npm:3.0.3" + "@solana/rpc-transport-http": "npm:3.0.3" + "@solana/rpc-types": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/f37587cde420aace1ecd520e3f429357a039d33699b5a0c61a826b34b4c181372fbabfc692042b9f8fc54e9284c0ef85c90cc35dc88a204f5353e77346e97ebc + languageName: node + linkType: hard + +"@solana/signers@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/signers@npm:3.0.3" + dependencies: + "@solana/addresses": "npm:3.0.3" + "@solana/codecs-core": "npm:3.0.3" + "@solana/errors": "npm:3.0.3" + "@solana/instructions": "npm:3.0.3" + "@solana/keys": "npm:3.0.3" + "@solana/nominal-types": "npm:3.0.3" + "@solana/transaction-messages": "npm:3.0.3" + "@solana/transactions": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/cd97d0039c389c27c4c6c805ecd160c119df1d561cc1b40cb692c979275590c4377ee8a9a5d704cf9c9979464d604cab394c95c896b52cbb2611cdf873a8032d + languageName: node + linkType: hard + +"@solana/subscribable@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/subscribable@npm:3.0.3" + dependencies: + "@solana/errors": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/b17304bc00bcc65ec8e5c3a6fd30d88b1c5a31a517cba891974cdc8dd9c524950836259234ed57c5b8c9bfda0ed476215fe55ef63cfe9470697dfd5b2621b7fe + languageName: node + linkType: hard + +"@solana/sysvars@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/sysvars@npm:3.0.3" + dependencies: + "@solana/accounts": "npm:3.0.3" + "@solana/codecs": "npm:3.0.3" + "@solana/errors": "npm:3.0.3" + "@solana/rpc-types": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/901e4cf02d5cecbe57da3a56905a84b55d0fd64cd76d462cca3a85309a584c18f08b69a43c1ab0a36f50766e196b6b59220ec43f5b546e97832ba02960a01c08 + languageName: node + linkType: hard + +"@solana/transaction-confirmation@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/transaction-confirmation@npm:3.0.3" + dependencies: + "@solana/addresses": "npm:3.0.3" + "@solana/codecs-strings": "npm:3.0.3" + "@solana/errors": "npm:3.0.3" + "@solana/keys": "npm:3.0.3" + "@solana/promises": "npm:3.0.3" + "@solana/rpc": "npm:3.0.3" + "@solana/rpc-subscriptions": "npm:3.0.3" + "@solana/rpc-types": "npm:3.0.3" + "@solana/transaction-messages": "npm:3.0.3" + "@solana/transactions": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/f14669975bd32af196fa0a13da219d4dec79459f486cd474125e886edcff89962572019b8c0dccdaad65940885b7f3d57b6b6c6994ca5a081becd98318a1295e + languageName: node + linkType: hard + +"@solana/transaction-messages@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/transaction-messages@npm:3.0.3" + dependencies: + "@solana/addresses": "npm:3.0.3" + "@solana/codecs-core": "npm:3.0.3" + "@solana/codecs-data-structures": "npm:3.0.3" + "@solana/codecs-numbers": "npm:3.0.3" + "@solana/errors": "npm:3.0.3" + "@solana/functional": "npm:3.0.3" + "@solana/instructions": "npm:3.0.3" + "@solana/nominal-types": "npm:3.0.3" + "@solana/rpc-types": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/2a5c765bf50bf05c598a2f40e3c9596de26950fedad8d1f6488d4b094ff3dc7bc1170a0a5c8f052ed4fb7723bb879ad65329e5e93c2b2f64a89c94f49fbdf44d + languageName: node + linkType: hard + +"@solana/transactions@npm:3.0.3": + version: 3.0.3 + resolution: "@solana/transactions@npm:3.0.3" + dependencies: + "@solana/addresses": "npm:3.0.3" + "@solana/codecs-core": "npm:3.0.3" + "@solana/codecs-data-structures": "npm:3.0.3" + "@solana/codecs-numbers": "npm:3.0.3" + "@solana/codecs-strings": "npm:3.0.3" + "@solana/errors": "npm:3.0.3" + "@solana/functional": "npm:3.0.3" + "@solana/instructions": "npm:3.0.3" + "@solana/keys": "npm:3.0.3" + "@solana/nominal-types": "npm:3.0.3" + "@solana/rpc-types": "npm:3.0.3" + "@solana/transaction-messages": "npm:3.0.3" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/a376f746ed6696aa40eafa0dd9fdc0e4b2a06a945ee05f13044f133a9225bc29b5398580f7f38af904c9396c101449fa86adbf03899fe9a7bff6f1e8b14a3d52 + languageName: node + linkType: hard + +"@solana/web3.js@npm:^1.98.1": + version: 1.98.4 + resolution: "@solana/web3.js@npm:1.98.4" + dependencies: + "@babel/runtime": "npm:^7.25.0" + "@noble/curves": "npm:^1.4.2" + "@noble/hashes": "npm:^1.4.0" + "@solana/buffer-layout": "npm:^4.0.1" + "@solana/codecs-numbers": "npm:^2.1.0" + agentkeepalive: "npm:^4.5.0" + bn.js: "npm:^5.2.1" + borsh: "npm:^0.7.0" + bs58: "npm:^4.0.1" + buffer: "npm:6.0.3" + fast-stable-stringify: "npm:^1.0.0" + jayson: "npm:^4.1.1" + node-fetch: "npm:^2.7.0" + rpc-websockets: "npm:^9.0.2" + superstruct: "npm:^2.0.2" + checksum: 10c0/73bf7b6b5b65c7f264587182bbfd65327775b4f3e4831750de6356f58858e57d49213098eec671650940bb7a9bbaa1f352e0710c4075f126d903d72ddddcbdbc languageName: node linkType: hard "@solidity-parser/parser@npm:^0.20.1": - version: 0.20.1 - resolution: "@solidity-parser/parser@npm:0.20.1" - checksum: 10c0/fa08c719bace194cb82be80f0efd9c57863aea831ff587a9268752a84a35f00daa8c28c9f5587c64d5cbb969a98f8df714088acdd581702376e45d48d57ee8af + version: 0.20.2 + resolution: "@solidity-parser/parser@npm:0.20.2" + checksum: 10c0/23b0b7ed343a4fa55cb8621cf4fc81b0bdd791a4ee7e96ced7778db07de66d4e418db2c2dc1525b1f82fc0310ac829c78382327292b37e35cb30a19961fcb429 languageName: node linkType: hard @@ -9838,15 +10424,15 @@ __metadata: linkType: hard "@stripe/react-stripe-js@npm:^3.0.0": - version: 3.7.0 - resolution: "@stripe/react-stripe-js@npm:3.7.0" + version: 3.10.0 + resolution: "@stripe/react-stripe-js@npm:3.10.0" dependencies: prop-types: "npm:^15.7.2" peerDependencies: "@stripe/stripe-js": ">=1.44.1 <8.0.0" react: ">=16.8.0 <20.0.0" react-dom: ">=16.8.0 <20.0.0" - checksum: 10c0/663e9176b0a710632abe64bb7efca63a22d8cf690942a4507d57ba1d4fb6328cd08e3cf9040ea95348540c47ed8dbc5250982b150b38eb9564861dc0ecd83d72 + checksum: 10c0/d7629436629571883e1ab44b1fdbdd5bc002c9020400bbad212caccddad5eaedefbdb171e970bd34276b72d9c23deac86d1e0898db11961de2a7e8951bf9711a languageName: node linkType: hard @@ -9984,6 +10570,15 @@ __metadata: languageName: node linkType: hard +"@swc/helpers@npm:^0.5.11": + version: 0.5.17 + resolution: "@swc/helpers@npm:0.5.17" + dependencies: + tslib: "npm:^2.8.0" + checksum: 10c0/fe1f33ebb968558c5a0c595e54f2e479e4609bff844f9ca9a2d1ffd8dd8504c26f862a11b031f48f75c95b0381c2966c3dd156e25942f90089badd24341e7dbb + languageName: node + linkType: hard + "@synaps-io/verify-sdk@npm:^4.0.45": version: 4.0.48 resolution: "@synaps-io/verify-sdk@npm:4.0.48" @@ -9992,13 +10587,13 @@ __metadata: linkType: hard "@tanstack/eslint-plugin-query@npm:^5.60.1": - version: 5.74.7 - resolution: "@tanstack/eslint-plugin-query@npm:5.74.7" + version: 5.91.2 + resolution: "@tanstack/eslint-plugin-query@npm:5.91.2" dependencies: - "@typescript-eslint/utils": "npm:^8.18.1" + "@typescript-eslint/utils": "npm:^8.44.1" peerDependencies: eslint: ^8.57.0 || ^9.0.0 - checksum: 10c0/7f026af15918e0f77e1032c0e53d70fd952d32735b0987a84d0df2b1c6b47ac01773da3812d579c999c398dd677d45400e133a1b3c2979e3f125028743451850 + checksum: 10c0/d839f37ae99ea776a2d1c03514d0e57a73890f449046e53b9497e919365bb14a13277f152cdb532f6714d60399b280daeedcaf55559d23b90b6beaa352fe15c8 languageName: node linkType: hard @@ -10011,87 +10606,71 @@ __metadata: languageName: node linkType: hard -"@tanstack/query-core@npm:5.75.5": - version: 5.75.5 - resolution: "@tanstack/query-core@npm:5.75.5" - checksum: 10c0/3627f9580df5b4a032ff830c1b1f6fa55ae754962a6aaab4ee79607917c9fbd98ce8f7302cc4c88e5b19fd6378689163eb42f32a83c05fe2dc81e7899c94d0df - languageName: node - linkType: hard - -"@tanstack/query-core@npm:5.80.7": - version: 5.80.7 - resolution: "@tanstack/query-core@npm:5.80.7" - checksum: 10c0/bd96393e1a94aebc4d10da05e03de89ddce09d7266d0fcff2785480c544425d732f9fb03ecb93c96520980f57655f143452b9701f9bcb620cd07a04077018583 - languageName: node - linkType: hard - -"@tanstack/query-devtools@npm:5.74.7": - version: 5.74.7 - resolution: "@tanstack/query-devtools@npm:5.74.7" - checksum: 10c0/2c1f113d81b9645f5c90e0cfdf47bce1d3244c57e930207589403258b434680ceddb996e6d9bfcdfb02d0582be54558f5196e2e4c395767d3a85620c45fc6271 +"@tanstack/query-core@npm:5.90.6": + version: 5.90.6 + resolution: "@tanstack/query-core@npm:5.90.6" + checksum: 10c0/2523cd4d9bc4d9fc1a828b15923c44046004fb1c4322f8c211ff4c153914bc776a356a476f499127cfee3fc89b101ac64f93b352aa761bd349c3a8e0de33d792 languageName: node linkType: hard -"@tanstack/query-persist-client-core@npm:5.75.5": - version: 5.75.5 - resolution: "@tanstack/query-persist-client-core@npm:5.75.5" - dependencies: - "@tanstack/query-core": "npm:5.75.5" - checksum: 10c0/0ba0b820d93dbcb92fafdbcb91febd4ff6e73b52e79db2b1623cbe66775d3199fca7a3a9e2893b819f5cd0eaa827891ff6aa3b599b4654855e17b2d197428cc1 +"@tanstack/query-devtools@npm:5.90.1": + version: 5.90.1 + resolution: "@tanstack/query-devtools@npm:5.90.1" + checksum: 10c0/3b69e5441438acf0e753adbf187abf54b5b2e19d7c6d1e465d97278cb8c248bb86d3be193092d50414e4093cbf014093103517cb523daae003e53c867f3c11c2 languageName: node linkType: hard -"@tanstack/query-persist-client-core@npm:5.80.7": - version: 5.80.7 - resolution: "@tanstack/query-persist-client-core@npm:5.80.7" +"@tanstack/query-persist-client-core@npm:5.91.5": + version: 5.91.5 + resolution: "@tanstack/query-persist-client-core@npm:5.91.5" dependencies: - "@tanstack/query-core": "npm:5.80.7" - checksum: 10c0/fb2d51a0d5d85d05b38b73504aa5de1320698b2e88819d579cba247e356faef1b6b1279fddce9ef5baf35ffd4bf6b3fec6e167a38709fed9e3a22aa96eacf6a2 + "@tanstack/query-core": "npm:5.90.6" + checksum: 10c0/72d315ea4ec6ab0a3194bbdbcb80920881b6939f76527ede7e3c3fb8aa1db3753efde7a2b41bd7d44d515f5c83d932bc71f0728c34e51a6fb40c3b286ae9bacb languageName: node linkType: hard "@tanstack/query-sync-storage-persister@npm:^5.68.0": - version: 5.75.5 - resolution: "@tanstack/query-sync-storage-persister@npm:5.75.5" + version: 5.90.8 + resolution: "@tanstack/query-sync-storage-persister@npm:5.90.8" dependencies: - "@tanstack/query-core": "npm:5.75.5" - "@tanstack/query-persist-client-core": "npm:5.75.5" - checksum: 10c0/6763226b236c5d0ddbf9e3fe29e692af260179775ff88385aa76f2bf359a43604d83797bd23eff65f0bf04b1015ff7090cde7c6a41827767a6c42f0ca6a14fd2 + "@tanstack/query-core": "npm:5.90.6" + "@tanstack/query-persist-client-core": "npm:5.91.5" + checksum: 10c0/523d550049047fe4fcaa3838e96219da865a1e1d89dd33d95da246aea6b5d1795882399c0da8157b63364f119b50bcdf19e64230bd55014df21df24808466902 languageName: node linkType: hard "@tanstack/react-query-devtools@npm:^5.59.16": - version: 5.75.5 - resolution: "@tanstack/react-query-devtools@npm:5.75.5" + version: 5.90.2 + resolution: "@tanstack/react-query-devtools@npm:5.90.2" dependencies: - "@tanstack/query-devtools": "npm:5.74.7" + "@tanstack/query-devtools": "npm:5.90.1" peerDependencies: - "@tanstack/react-query": ^5.75.5 + "@tanstack/react-query": ^5.90.2 react: ^18 || ^19 - checksum: 10c0/8d98bdae2231132787efa2a846c34eaf49cda608213a759cb2989b2dd1e17549e3dffa2235b4abca0408e19ed121c4346626f7c2dd56b16e49f0cbbc1a95109c + checksum: 10c0/526d529bf995426ace7511f51a425ce92dfc1b6dd74c9956a3cd7d68950119e97291bced2ff17173bcdb329eae36c68abc211a4dec32d6e92ab537b41c0533c2 languageName: node linkType: hard "@tanstack/react-query-persist-client@npm:^5.80.7": - version: 5.80.7 - resolution: "@tanstack/react-query-persist-client@npm:5.80.7" + version: 5.90.8 + resolution: "@tanstack/react-query-persist-client@npm:5.90.8" dependencies: - "@tanstack/query-persist-client-core": "npm:5.80.7" + "@tanstack/query-persist-client-core": "npm:5.91.5" peerDependencies: - "@tanstack/react-query": ^5.80.7 + "@tanstack/react-query": ^5.90.6 react: ^18 || ^19 - checksum: 10c0/5159256a9afb2aae46e336d5a38f2d1f89c5e5f384f731853575a5d8216165d60731348bac5857bd75233779a0efbfdafb80bca15dd5c6eecd92dce4c2d6e9f9 + checksum: 10c0/28f80133aecd081d8813b7e695a001eabc3a1eb1a3d16ede4e6f74744d4cb60cd128fdded24f22f2c0e83c100a64c985f47698fcf0208f1d87e5b3022a505fbb languageName: node linkType: hard "@tanstack/react-query@npm:^5.67.2, @tanstack/react-query@npm:^5.75.5": - version: 5.75.5 - resolution: "@tanstack/react-query@npm:5.75.5" + version: 5.90.6 + resolution: "@tanstack/react-query@npm:5.90.6" dependencies: - "@tanstack/query-core": "npm:5.75.5" + "@tanstack/query-core": "npm:5.90.6" peerDependencies: react: ^18 || ^19 - checksum: 10c0/658e6b36577c531659e19da19ce46005ae36e17517409f4105c4e9181b7ec2ac21bd6d1e2415b8e16004fdd4f7c51b724af1327834b16f1d037edabeaf9b1cbc + checksum: 10c0/0cde819c41d3f02dccc443786c3aeb6e0a6135365ef127dd8e5bb25d65837b0b12b011c6700c14df1f866a1d65d57a6f4a00abf2ddac31543d68b4963ca80d1a languageName: node linkType: hard @@ -10216,7 +10795,7 @@ __metadata: version: 0.0.0-use.local resolution: "@tools/subgraph@workspace:packages/sdk/typescript/subgraph" dependencies: - "@graphprotocol/graph-cli": "npm:^0.95.0" + "@graphprotocol/graph-cli": "npm:^0.97.1" "@graphprotocol/graph-ts": "npm:^0.38.0" "@graphql-eslint/eslint-plugin": "npm:^3.19.1" "@human-protocol/core": "workspace:*" @@ -10264,12 +10843,12 @@ __metadata: languageName: node linkType: hard -"@tybys/wasm-util@npm:^0.9.0": - version: 0.9.0 - resolution: "@tybys/wasm-util@npm:0.9.0" +"@tybys/wasm-util@npm:^0.10.0": + version: 0.10.1 + resolution: "@tybys/wasm-util@npm:0.10.1" dependencies: tslib: "npm:^2.4.0" - checksum: 10c0/f9fde5c554455019f33af6c8215f1a1435028803dc2a2825b077d812bed4209a1a64444a4ca0ce2ea7e1175c8d88e2f9173a36a33c199e8a5c671aa31de8242d + checksum: 10c0/b255094f293794c6d2289300c5fbcafbb5532a3aed3a5ffd2f8dc1828e639b88d75f6a376dd8f94347a44813fd7a7149d8463477a9a49525c8b2dcaa38c2d1e8 languageName: node linkType: hard @@ -10334,11 +10913,11 @@ __metadata: linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.7 - resolution: "@types/babel__traverse@npm:7.20.7" + version: 7.28.0 + resolution: "@types/babel__traverse@npm:7.28.0" dependencies: - "@babel/types": "npm:^7.20.7" - checksum: 10c0/5386f0af44f8746b063b87418f06129a814e16bb2686965a575e9d7376b360b088b89177778d8c426012abc43dd1a2d8ec3218bfc382280c898682746ce2ffbd + "@babel/types": "npm:^7.28.2" + checksum: 10c0/b52d7d4e8fc6a9018fe7361c4062c1c190f5778cf2466817cb9ed19d69fbbb54f9a85ffedeb748ed8062d2cf7d4cc088ee739848f47c57740de1c48cbf0d0994 languageName: node linkType: hard @@ -10352,21 +10931,21 @@ __metadata: linkType: hard "@types/bn.js@npm:^5.1.0": - version: 5.1.6 - resolution: "@types/bn.js@npm:5.1.6" + version: 5.2.0 + resolution: "@types/bn.js@npm:5.2.0" dependencies: "@types/node": "npm:*" - checksum: 10c0/073d383d87afea513a8183ce34af7bc0a7a798d057c7ae651982b7f30dd7d93f33247323bca3ba39f1f6af146b564aff547b15467bdf9fc922796c17e8426bf6 + checksum: 10c0/7a36114b8e61faba5c28b433c3e5aabded261745dabb8f3fe41b2d84e8c4c2b8282e52a88a842bd31a565ff5dbf685145ccd91171f1a8d657fb249025c17aa85 languageName: node linkType: hard "@types/body-parser@npm:*, @types/body-parser@npm:^1": - version: 1.19.5 - resolution: "@types/body-parser@npm:1.19.5" + version: 1.19.6 + resolution: "@types/body-parser@npm:1.19.6" dependencies: "@types/connect": "npm:*" "@types/node": "npm:*" - checksum: 10c0/aebeb200f25e8818d8cf39cd0209026750d77c9b85381cdd8deeb50913e4d18a1ebe4b74ca9b0b4d21952511eeaba5e9fbbf739b52731a2061e206ec60d568df + checksum: 10c0/542da05c924dce58ee23f50a8b981fee36921850c82222e384931fda3e106f750f7880c47be665217d72dbe445129049db6eb1f44e7a06b09d62af8f3cca8ea7 languageName: node linkType: hard @@ -10386,12 +10965,13 @@ __metadata: languageName: node linkType: hard -"@types/chai@npm:*": - version: 5.2.2 - resolution: "@types/chai@npm:5.2.2" +"@types/chai@npm:*, @types/chai@npm:^5.2.2": + version: 5.2.3 + resolution: "@types/chai@npm:5.2.3" dependencies: "@types/deep-eql": "npm:*" - checksum: 10c0/49282bf0e8246800ebb36f17256f97bd3a8c4fb31f92ad3c0eaa7623518d7e87f1eaad4ad206960fcaf7175854bdff4cb167e4fe96811e0081b4ada83dd533ec + assertion-error: "npm:^2.0.1" + checksum: 10c0/e0ef1de3b6f8045a5e473e867c8565788c444271409d155588504840ad1a53611011f85072188c2833941189400228c1745d78323dac13fcede9c2b28bacfb2f languageName: node linkType: hard @@ -10421,9 +11001,9 @@ __metadata: linkType: hard "@types/d3-array@npm:^3.0.3": - version: 3.2.1 - resolution: "@types/d3-array@npm:3.2.1" - checksum: 10c0/38bf2c778451f4b79ec81a2288cb4312fe3d6449ecdf562970cc339b60f280f31c93a024c7ff512607795e79d3beb0cbda123bb07010167bce32927f71364bca + version: 3.2.2 + resolution: "@types/d3-array@npm:3.2.2" + checksum: 10c0/6137cb97302f8a4f18ca22c0560c585cfcb823f276b23d89f2c0c005d72697ec13bca671c08e68b4b0cabd622e3f0e91782ee221580d6774074050be96dd7028 languageName: node linkType: hard @@ -10521,15 +11101,6 @@ __metadata: languageName: node linkType: hard -"@types/dns-packet@npm:^5.6.5": - version: 5.6.5 - resolution: "@types/dns-packet@npm:5.6.5" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/70fa9cb77a614f65288a48749d28cc9f40ce6c60980e2b75b25eac0b4e1e4109d14edf5151fa5e7b10aae1ec6b1094a2f171b9941191ff4c9a7afe23116b9edc - languageName: node - linkType: hard - "@types/eslint-scope@npm:^3.7.7": version: 3.7.7 resolution: "@types/eslint-scope@npm:3.7.7" @@ -10550,57 +11121,57 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:1.0.7, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": - version: 1.0.7 - resolution: "@types/estree@npm:1.0.7" - checksum: 10c0/be815254316882f7c40847336cd484c3bc1c3e34f710d197160d455dc9d6d050ffbf4c3bc76585dba86f737f020ab20bdb137ebe0e9116b0c86c7c0342221b8c +"@types/estree@npm:*, @types/estree@npm:1.0.8, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": + version: 1.0.8 + resolution: "@types/estree@npm:1.0.8" + checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5 languageName: node linkType: hard "@types/express-serve-static-core@npm:^4.17.33": - version: 4.19.6 - resolution: "@types/express-serve-static-core@npm:4.19.6" + version: 4.19.7 + resolution: "@types/express-serve-static-core@npm:4.19.7" dependencies: "@types/node": "npm:*" "@types/qs": "npm:*" "@types/range-parser": "npm:*" "@types/send": "npm:*" - checksum: 10c0/4281f4ead71723f376b3ddf64868ae26244d434d9906c101cf8d436d4b5c779d01bd046e4ea0ed1a394d3e402216fabfa22b1fa4dba501061cd7c81c54045983 + checksum: 10c0/c239df87863b8515e68dcb18203a9e2ba6108f86fdc385090284464a57a6dca6abb60a961cb6a73fea2110576f4f8acefa1cb06b60d14b6b0e5104478e7d57d1 languageName: node linkType: hard "@types/express-serve-static-core@npm:^5.0.0": - version: 5.0.6 - resolution: "@types/express-serve-static-core@npm:5.0.6" + version: 5.1.0 + resolution: "@types/express-serve-static-core@npm:5.1.0" dependencies: "@types/node": "npm:*" "@types/qs": "npm:*" "@types/range-parser": "npm:*" "@types/send": "npm:*" - checksum: 10c0/aced8cc88c1718adbbd1fc488756b0f22d763368d9eff2ae21b350698fab4a77d8d13c3699056dc662a887e43a8b67a3e8f6289ff76102ecc6bad4a7710d31a6 + checksum: 10c0/1918233c68a0c69695f78331af1aed5fb5190f91da6309318f700adeb78573be840b5d206cb8eda804b65a9989fdeccdaaf84c1e95adc3615052749224b64519 languageName: node linkType: hard "@types/express@npm:*": - version: 5.0.1 - resolution: "@types/express@npm:5.0.1" + version: 5.0.5 + resolution: "@types/express@npm:5.0.5" dependencies: "@types/body-parser": "npm:*" "@types/express-serve-static-core": "npm:^5.0.0" - "@types/serve-static": "npm:*" - checksum: 10c0/e1385028c7251360ce916aab0e304187b613ca18cb9aa3fa90794a337e5b2e0c76330d467f41d3b3e936ce5336c4f3e63e323dc01192cf20f9686905daa6d00a + "@types/serve-static": "npm:^1" + checksum: 10c0/e96da91c121b43e0e84301a4cfe165908382d016234c11213aeb4f7401cf1a8694e16e3947d21b5c20b3389358d48d60a8c5c38657e041726ac9e8c884d2b8f0 languageName: node linkType: hard "@types/express@npm:^4.17.13, @types/express@npm:^4.17.14": - version: 4.17.21 - resolution: "@types/express@npm:4.17.21" + version: 4.17.25 + resolution: "@types/express@npm:4.17.25" dependencies: "@types/body-parser": "npm:*" "@types/express-serve-static-core": "npm:^4.17.33" "@types/qs": "npm:*" - "@types/serve-static": "npm:*" - checksum: 10c0/12e562c4571da50c7d239e117e688dc434db1bac8be55613294762f84fd77fbd0658ccd553c7d3ab02408f385bc93980992369dd30e2ecd2c68c358e6af8fabf + "@types/serve-static": "npm:^1" + checksum: 10c0/f42b616d2c9dbc50352c820db7de182f64ebbfa8dba6fb6c98e5f8f0e2ef3edde0131719d9dc6874803d25ad9ca2d53471d0fec2fbc60a6003a43d015bab72c4 languageName: node linkType: hard @@ -10647,19 +11218,20 @@ __metadata: linkType: hard "@types/hoist-non-react-statics@npm:^3.3.1, @types/hoist-non-react-statics@npm:^3.3.6": - version: 3.3.6 - resolution: "@types/hoist-non-react-statics@npm:3.3.6" + version: 3.3.7 + resolution: "@types/hoist-non-react-statics@npm:3.3.7" dependencies: - "@types/react": "npm:*" hoist-non-react-statics: "npm:^3.3.0" - checksum: 10c0/149a4c217d81f21f8a1e152160a59d5b99b6a9aa6d354385d5f5bc02760cbf1e170a8442ba92eb653befff44b0c5bc2234bb77ce33e0d11a65f779e8bab5c321 + peerDependencies: + "@types/react": "*" + checksum: 10c0/ed8f4e88338f7d021d0f956adf6089d2a12b2e254a03c05292324f2e986d2376eb9efdb8a4f04596823e8fca88c9d06361d20dab4a2a00dc935fb36ac911de55 languageName: node linkType: hard "@types/http-errors@npm:*": - version: 2.0.4 - resolution: "@types/http-errors@npm:2.0.4" - checksum: 10c0/494670a57ad4062fee6c575047ad5782506dd35a6b9ed3894cea65830a94367bd84ba302eb3dde331871f6d70ca287bfedb1b2cf658e6132cd2cbd427ab56836 + version: 2.0.5 + resolution: "@types/http-errors@npm:2.0.5" + checksum: 10c0/00f8140fbc504f47356512bd88e1910c2f07e04233d99c88c854b3600ce0523c8cd0ba7d1897667243282eb44c59abb9245959e2428b9de004f93937f52f7c15 languageName: node linkType: hard @@ -10723,12 +11295,12 @@ __metadata: linkType: hard "@types/jsonwebtoken@npm:*, @types/jsonwebtoken@npm:^9, @types/jsonwebtoken@npm:^9.0.7": - version: 9.0.9 - resolution: "@types/jsonwebtoken@npm:9.0.9" + version: 9.0.10 + resolution: "@types/jsonwebtoken@npm:9.0.10" dependencies: "@types/ms": "npm:*" "@types/node": "npm:*" - checksum: 10c0/d754a7b65fc021b298fc94e8d7a7d71f35dedf24296ac89286f80290abc5dbb0c7830a21440ee9ecbb340efc1b0a21f5609ea298a35b874cae5ad29a65440741 + checksum: 10c0/0688ac8fb75f809201cb7e18a12b9d80ce539cb9dd27e1b01e11807cb1a337059e899b8ee3abc3f2c9417f02e363a3069d9eab9ef9724b1da1f0e10713514f94 languageName: node linkType: hard @@ -10741,10 +11313,10 @@ __metadata: languageName: node linkType: hard -"@types/lodash@npm:^4.17.12, @types/lodash@npm:^4.17.14": - version: 4.17.16 - resolution: "@types/lodash@npm:4.17.16" - checksum: 10c0/cf017901b8ab1d7aabc86d5189d9288f4f99f19a75caf020c0e2c77b8d4cead4db0d0b842d009b029339f92399f49f34377dd7c2721053388f251778b4c23534 +"@types/lodash@npm:^4.17.12, @types/lodash@npm:^4.17.14, @types/lodash@npm:^4.17.20": + version: 4.17.20 + resolution: "@types/lodash@npm:4.17.20" + checksum: 10c0/98cdd0faae22cbb8079a01a3bb65aa8f8c41143367486c1cbf5adc83f16c9272a2a5d2c1f541f61d0d73da543c16ee1d21cf2ef86cb93cd0cc0ac3bced6dd88f languageName: node linkType: hard @@ -10799,12 +11371,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>=13.7.0, @types/node@npm:>=18, @types/node@npm:>=18.0.0, @types/node@npm:>=8.1.0, @types/node@npm:^22.10.5": - version: 22.15.15 - resolution: "@types/node@npm:22.15.15" +"@types/node@npm:*, @types/node@npm:>=13.7.0, @types/node@npm:>=18, @types/node@npm:>=18.0.0, @types/node@npm:>=8.1.0": + version: 24.10.0 + resolution: "@types/node@npm:24.10.0" dependencies: - undici-types: "npm:~6.21.0" - checksum: 10c0/3b0c12531c9057ddcbe1cdd869ca6c2f3ea753f1cb3de0a482ca70c3d86f0dbb1d28339aecd8a0c133febda4f4355c012ed9be6ab866297fc23db360fa218dde + undici-types: "npm:~7.16.0" + checksum: 10c0/f82ed7194e16f5590ef7afdc20c6d09068c76d50278b485ede8f0c5749683536e3064ffa8def8db76915196afb3724b854aa5723c64d6571b890b14492943b46 languageName: node linkType: hard @@ -10833,12 +11405,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^22.15.16": - version: 22.15.16 - resolution: "@types/node@npm:22.15.16" +"@types/node@npm:^22.10.5, @types/node@npm:^22.15.16": + version: 22.19.0 + resolution: "@types/node@npm:22.19.0" dependencies: undici-types: "npm:~6.21.0" - checksum: 10c0/2bdcca01306fcf991d9255e329425747bdd3b62c7ba9e7d4021969d46f3c9984a4ad2c27ababb4f3b05d49a9e05fc0a8bfce8b452c9b43995e10aca6f66b33bc + checksum: 10c0/66b98fcd38efb4ae58c628d61fed2b8f17c830eb665d8bceabc4174cae1dd81b8e4caac4c70d7dc929f9f76a3dc46cb21f480e904d0b898297bd12c0a2d1571a languageName: node linkType: hard @@ -10921,14 +11493,7 @@ __metadata: languageName: node linkType: hard -"@types/prop-types@npm:*, @types/prop-types@npm:^15, @types/prop-types@npm:^15.7.12, @types/prop-types@npm:^15.7.14": - version: 15.7.14 - resolution: "@types/prop-types@npm:15.7.14" - checksum: 10c0/1ec775160bfab90b67a782d735952158c7e702ca4502968aa82565bd8e452c2de8601c8dfe349733073c31179116cf7340710160d3836aa8a1ef76d1532893b1 - languageName: node - linkType: hard - -"@types/prop-types@npm:^15.7.15": +"@types/prop-types@npm:*, @types/prop-types@npm:^15, @types/prop-types@npm:^15.7.12, @types/prop-types@npm:^15.7.15": version: 15.7.15 resolution: "@types/prop-types@npm:15.7.15" checksum: 10c0/b59aad1ad19bf1733cf524fd4e618196c6c7690f48ee70a327eb450a42aab8e8a063fbe59ca0a5701aebe2d92d582292c0fb845ea57474f6a15f6994b0e260b2 @@ -10936,9 +11501,9 @@ __metadata: linkType: hard "@types/qs@npm:*, @types/qs@npm:^6.9.7": - version: 6.9.18 - resolution: "@types/qs@npm:6.9.18" - checksum: 10c0/790b9091348e06dde2c8e4118b5771ab386a8c22a952139a2eb0675360a2070d0b155663bf6f75b23f258fd0a1f7ffc0ba0f059d99a719332c03c40d9e9cd63b + version: 6.14.0 + resolution: "@types/qs@npm:6.14.0" + checksum: 10c0/5b3036df6e507483869cdb3858201b2e0b64b4793dc4974f188caa5b5732f2333ab9db45c08157975054d3b070788b35088b4bc60257ae263885016ee2131310 languageName: node linkType: hard @@ -10989,21 +11554,21 @@ __metadata: linkType: hard "@types/react@npm:*": - version: 19.1.3 - resolution: "@types/react@npm:19.1.3" + version: 19.2.2 + resolution: "@types/react@npm:19.2.2" dependencies: csstype: "npm:^3.0.2" - checksum: 10c0/f158f88871b8df1eeed637942d3e6142abcf505b617e4921ef3763b6d4f22241b9a883d864878dd2b6a2bdc8f4e7f871f24ef88f633d144a63257f4764b9478d + checksum: 10c0/f830b1204aca4634ce3c6cb3477b5d3d066b80a4dd832a4ee0069acb504b6debd2416548a43a11c1407c12bc60e2dc6cf362934a18fe75fe06a69c0a98cba8ab languageName: node linkType: hard "@types/react@npm:^18.3.12": - version: 18.3.21 - resolution: "@types/react@npm:18.3.21" + version: 18.3.26 + resolution: "@types/react@npm:18.3.26" dependencies: "@types/prop-types": "npm:*" csstype: "npm:^3.0.2" - checksum: 10c0/b33424c62f01ab2404c60abef995e05aa1a696a636bdd77a34ef6c942d171c673b1e451d9dba7f9a169a83c9eef0ddfaf1ba08f6cef542df9404290199a73967 + checksum: 10c0/7b62d91c33758f14637311921c92db6045b6328e2300666a35ef8130d06385e39acada005eaf317eee93228edc10ea5f0cd34a0385654d2014d24699a65bfeef languageName: node linkType: hard @@ -11018,14 +11583,14 @@ __metadata: linkType: hard "@types/request@npm:^2.48.8": - version: 2.48.12 - resolution: "@types/request@npm:2.48.12" + version: 2.48.13 + resolution: "@types/request@npm:2.48.13" dependencies: "@types/caseless": "npm:*" "@types/node": "npm:*" "@types/tough-cookie": "npm:*" - form-data: "npm:^2.5.0" - checksum: 10c0/dd3d03d68af95b1e1961dc51efc63023543a91a74afd481dafb441521a31baa58c42f80d3bdd0d5d4633aa777e31b17f7ff7bed5606ad3f5eb175a65148adbce + form-data: "npm:^2.5.5" + checksum: 10c0/1c6798d926a6577f213dbc04aa09945590f260ea367537c20824ff337b0a49d56e5199a6a6029e625568d97c3bbb98908bdb8d9158eb421f70a0d03ae230ff72 languageName: node linkType: hard @@ -11037,39 +11602,48 @@ __metadata: linkType: hard "@types/secp256k1@npm:^4.0.1": - version: 4.0.6 - resolution: "@types/secp256k1@npm:4.0.6" + version: 4.0.7 + resolution: "@types/secp256k1@npm:4.0.7" dependencies: "@types/node": "npm:*" - checksum: 10c0/0e391316ae30c218779583b626382a56546ddbefb65f1ff9cf5e078af8a7118f67f3e66e30914399cc6f8710c424d0d8c3f34262ffb1f429c6ad911fd0d0bc26 + checksum: 10c0/3e4a22bb699597adc723414a841d2e8a1fa71c95c3d018c6a2dd8482500b6e9fe2d78d87e758f18c1aabe333cac22ac2a96f456e3bc147df30b7fac4e6346618 languageName: node linkType: hard "@types/semver@npm:^7.3.12, @types/semver@npm:^7.5.0": - version: 7.7.0 - resolution: "@types/semver@npm:7.7.0" - checksum: 10c0/6b5f65f647474338abbd6ee91a6bbab434662ddb8fe39464edcbcfc96484d388baad9eb506dff217b6fc1727a88894930eb1f308617161ac0f376fe06be4e1ee + version: 7.7.1 + resolution: "@types/semver@npm:7.7.1" + checksum: 10c0/c938aef3bf79a73f0f3f6037c16e2e759ff40c54122ddf0b2583703393d8d3127130823facb880e694caa324eb6845628186aac1997ee8b31dc2d18fafe26268 languageName: node linkType: hard "@types/send@npm:*": - version: 0.17.4 - resolution: "@types/send@npm:0.17.4" + version: 1.2.1 + resolution: "@types/send@npm:1.2.1" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/7673747f8c2d8e67f3b1b3b57e9d4d681801a4f7b526ecf09987bb9a84a61cf94aa411c736183884dc762c1c402a61681eb1ef200d8d45d7e5ec0ab67ea5f6c1 + languageName: node + linkType: hard + +"@types/send@npm:<1": + version: 0.17.6 + resolution: "@types/send@npm:0.17.6" dependencies: "@types/mime": "npm:^1" "@types/node": "npm:*" - checksum: 10c0/7f17fa696cb83be0a104b04b424fdedc7eaba1c9a34b06027239aba513b398a0e2b7279778af521f516a397ced417c96960e5f50fcfce40c4bc4509fb1a5883c + checksum: 10c0/a9d76797f0637738062f1b974e0fcf3d396a28c5dc18c3f95ecec5dabda82e223afbc2d56a0bca46b6326fd7bb229979916cea40de2270a98128fd94441b87c2 languageName: node linkType: hard -"@types/serve-static@npm:*": - version: 1.15.7 - resolution: "@types/serve-static@npm:1.15.7" +"@types/serve-static@npm:^1": + version: 1.15.10 + resolution: "@types/serve-static@npm:1.15.10" dependencies: "@types/http-errors": "npm:*" "@types/node": "npm:*" - "@types/send": "npm:*" - checksum: 10c0/26ec864d3a626ea627f8b09c122b623499d2221bbf2f470127f4c9ebfe92bd8a6bb5157001372d4c4bd0dd37a1691620217d9dc4df5aa8f779f3fd996b1c60ae + "@types/send": "npm:<1" + checksum: 10c0/842fca14c9e80468f89b6cea361773f2dcd685d4616a9f59013b55e1e83f536e4c93d6d8e3ba5072d40c4e7e64085210edd6646b15d538ded94512940a23021f languageName: node linkType: hard @@ -11122,10 +11696,17 @@ __metadata: languageName: node linkType: hard +"@types/uuid@npm:^8.3.4": + version: 8.3.4 + resolution: "@types/uuid@npm:8.3.4" + checksum: 10c0/b9ac98f82fcf35962317ef7dc44d9ac9e0f6fdb68121d384c88fe12ea318487d5585d3480fa003cf28be86a3bbe213ca688ba786601dce4a97724765eb5b1cf2 + languageName: node + linkType: hard + "@types/validator@npm:^13.11.8": - version: 13.15.0 - resolution: "@types/validator@npm:13.15.0" - checksum: 10c0/e05ee9fb59c8b3de0f8910b082e43ffebe1202a2f2bfc0390031d788b2fd68880b365b0cb2b9685d4f8458b2d4e09c7cb6e61d4f24031dc05bafd70e9560738f + version: 13.15.4 + resolution: "@types/validator@npm:13.15.4" + checksum: 10c0/fca230ddae859f5a66d74b466608ed16c0bfd34700558972fcab789d50d4beb7b14a6419ee2d0aab9c288e82d1706029d1c5519225c4b8dacb20f72bc05d7722 languageName: node linkType: hard @@ -11147,7 +11728,7 @@ __metadata: languageName: node linkType: hard -"@types/ws@npm:^8, @types/ws@npm:^8.0.0": +"@types/ws@npm:^8, @types/ws@npm:^8.0.0, @types/ws@npm:^8.2.2": version: 8.18.1 resolution: "@types/ws@npm:8.18.1" dependencies: @@ -11173,11 +11754,11 @@ __metadata: linkType: hard "@types/yargs@npm:^17.0.8": - version: 17.0.33 - resolution: "@types/yargs@npm:17.0.33" + version: 17.0.34 + resolution: "@types/yargs@npm:17.0.34" dependencies: "@types/yargs-parser": "npm:*" - checksum: 10c0/d16937d7ac30dff697801c3d6f235be2166df42e4a88bf730fa6dc09201de3727c0a9500c59a672122313341de5f24e45ee0ff579c08ce91928e519090b7906b + checksum: 10c0/7d4c6a6bc2b8dd4c7deaf507633fe6fd91424873add76b63c8263479223ea7a061bea86e7e0f3ed28cbe897338a934f3c04d802e8f67b7d2d3874924c94468c5 languageName: node linkType: hard @@ -11188,66 +11769,24 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.33.0": - version: 8.33.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.33.0" +"@typescript-eslint/eslint-plugin@npm:8.46.2": + version: 8.46.2 + resolution: "@typescript-eslint/eslint-plugin@npm:8.46.2" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.33.0" - "@typescript-eslint/type-utils": "npm:8.33.0" - "@typescript-eslint/utils": "npm:8.33.0" - "@typescript-eslint/visitor-keys": "npm:8.33.0" + "@typescript-eslint/scope-manager": "npm:8.46.2" + "@typescript-eslint/type-utils": "npm:8.46.2" + "@typescript-eslint/utils": "npm:8.46.2" + "@typescript-eslint/visitor-keys": "npm:8.46.2" graphemer: "npm:^1.4.0" ignore: "npm:^7.0.0" natural-compare: "npm:^1.4.0" ts-api-utils: "npm:^2.1.0" peerDependencies: - "@typescript-eslint/parser": ^8.33.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/fdfbba2134bb8aa8effb3686a9ffe0a5d9916b41ccdf4339976e0205734f802fca2631939f892ccedd20eee104d8cd0e691720728baeeee17c0f40d7bfe4205d - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:8.35.1": - version: 8.35.1 - resolution: "@typescript-eslint/eslint-plugin@npm:8.35.1" - dependencies: - "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.35.1" - "@typescript-eslint/type-utils": "npm:8.35.1" - "@typescript-eslint/utils": "npm:8.35.1" - "@typescript-eslint/visitor-keys": "npm:8.35.1" - graphemer: "npm:^1.4.0" - ignore: "npm:^7.0.0" - natural-compare: "npm:^1.4.0" - ts-api-utils: "npm:^2.1.0" - peerDependencies: - "@typescript-eslint/parser": ^8.35.1 - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/0f369be24644ebea30642512ddae0e602e4ca6bc55ae09d9860f16a3baae6aee1a376c182c61b43d12bc137156e3931f6bac3c73919c9c81b32c962bb5bc544e - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:8.39.1": - version: 8.39.1 - resolution: "@typescript-eslint/eslint-plugin@npm:8.39.1" - dependencies: - "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.39.1" - "@typescript-eslint/type-utils": "npm:8.39.1" - "@typescript-eslint/utils": "npm:8.39.1" - "@typescript-eslint/visitor-keys": "npm:8.39.1" - graphemer: "npm:^1.4.0" - ignore: "npm:^7.0.0" - natural-compare: "npm:^1.4.0" - ts-api-utils: "npm:^2.1.0" - peerDependencies: - "@typescript-eslint/parser": ^8.39.1 + "@typescript-eslint/parser": ^8.46.2 eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/7a55de558ed6ea6f09ee0b0d994b4a70e1df9f72e4afc7b3073de1b41504a36d905779304d59c34db700af60da3bb438c62480d30462a13b8b72d0b50318aeee + checksum: 10c0/24d1257bd023525754dc130e99bad1404c46f997729a060e3764b7f80dd43edcc43767b60fd89244cba82157918609e3922e408d0f7be4223e2056c1447fb387 languageName: node linkType: hard @@ -11334,51 +11873,19 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.33.0": - version: 8.33.0 - resolution: "@typescript-eslint/parser@npm:8.33.0" - dependencies: - "@typescript-eslint/scope-manager": "npm:8.33.0" - "@typescript-eslint/types": "npm:8.33.0" - "@typescript-eslint/typescript-estree": "npm:8.33.0" - "@typescript-eslint/visitor-keys": "npm:8.33.0" - debug: "npm:^4.3.4" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/3f6aa8476d912a749a4f3e6ae6cbf90a881f1892efb7b3c88f6654fa03e770d8da511d0298615b0eda880b3811e157ed60e47e6a21aa309cbf912e2d5d79d73c - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:8.35.1": - version: 8.35.1 - resolution: "@typescript-eslint/parser@npm:8.35.1" - dependencies: - "@typescript-eslint/scope-manager": "npm:8.35.1" - "@typescript-eslint/types": "npm:8.35.1" - "@typescript-eslint/typescript-estree": "npm:8.35.1" - "@typescript-eslint/visitor-keys": "npm:8.35.1" - debug: "npm:^4.3.4" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/949383d74f6db1b91f90923d50f0ecbacaa972fd56e70553c803a8f64131345afdaf096cf1c1fc4a833ddc06ee44b241811edb5d516d769e244560f5b7f0e0af - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:8.39.1": - version: 8.39.1 - resolution: "@typescript-eslint/parser@npm:8.39.1" +"@typescript-eslint/parser@npm:8.46.2": + version: 8.46.2 + resolution: "@typescript-eslint/parser@npm:8.46.2" dependencies: - "@typescript-eslint/scope-manager": "npm:8.39.1" - "@typescript-eslint/types": "npm:8.39.1" - "@typescript-eslint/typescript-estree": "npm:8.39.1" - "@typescript-eslint/visitor-keys": "npm:8.39.1" + "@typescript-eslint/scope-manager": "npm:8.46.2" + "@typescript-eslint/types": "npm:8.46.2" + "@typescript-eslint/typescript-estree": "npm:8.46.2" + "@typescript-eslint/visitor-keys": "npm:8.46.2" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/da30372c4e8dee48a0c421996bf0bf73a62a57039ee6b817eda64de2d70fdb88dd20b50615c81be7e68fd29cdd7852829b859bb8539b4a4c78030f93acaf5664 + checksum: 10c0/9556bf8ec039c6d1751a37cf76cf70912e80dc45337731a304509309e67472c3f5b5abe6ac5021a7ae9361ea65b2e1f66b626603cecca6506a4533152a77b28f languageName: node linkType: hard @@ -11435,40 +11942,16 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/project-service@npm:8.33.0": - version: 8.33.0 - resolution: "@typescript-eslint/project-service@npm:8.33.0" +"@typescript-eslint/project-service@npm:8.46.2": + version: 8.46.2 + resolution: "@typescript-eslint/project-service@npm:8.46.2" dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.33.0" - "@typescript-eslint/types": "npm:^8.33.0" - debug: "npm:^4.3.4" - checksum: 10c0/a863d9e3be5ffb53c9d57b25b7a35149dae01afd942dd7fc36bd72a4230676ae12d0f37a789cddaf1baf71e3b35f09436bebbd081336e667b4181b48d0afe8f5 - languageName: node - linkType: hard - -"@typescript-eslint/project-service@npm:8.35.1": - version: 8.35.1 - resolution: "@typescript-eslint/project-service@npm:8.35.1" - dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.35.1" - "@typescript-eslint/types": "npm:^8.35.1" - debug: "npm:^4.3.4" - peerDependencies: - typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/f8e88d773d7e9f193a05b4daeca1e7571fa0059b36ffad291fc6d83c9df94fbe38c935e076ae29e755bcb6008c4ee5c1073ebb2077258c5c0b53c76a23eb3c16 - languageName: node - linkType: hard - -"@typescript-eslint/project-service@npm:8.39.1": - version: 8.39.1 - resolution: "@typescript-eslint/project-service@npm:8.39.1" - dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.39.1" - "@typescript-eslint/types": "npm:^8.39.1" + "@typescript-eslint/tsconfig-utils": "npm:^8.46.2" + "@typescript-eslint/types": "npm:^8.46.2" debug: "npm:^4.3.4" peerDependencies: typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/40207af4f4e2a260ea276766d502c4736f6dc5488e84bbab6444e2786289ece2dbca2686323c48d4e9c265e409a309bf3d97d4aa03767dff8cc7642b436bda35 + checksum: 10c0/03e87bcbca6af3f95bf54d4047a8b4d12434126c27d7312e804499a9459e1c847fe045f83fe8e3b22c3dc3925baad0aa2a1a5476d0d51f73a493dc5909a53dbf languageName: node linkType: hard @@ -11502,70 +11985,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.32.0": - version: 8.32.0 - resolution: "@typescript-eslint/scope-manager@npm:8.32.0" - dependencies: - "@typescript-eslint/types": "npm:8.32.0" - "@typescript-eslint/visitor-keys": "npm:8.32.0" - checksum: 10c0/9149d4eebfc7f096a3401a4865e0e552231c91cee362fe3a59c31cf2f0b6b325619f534aed41688c3702867cf86b12454e00055d09e7f229c92083e28e97baac - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:8.33.0": - version: 8.33.0 - resolution: "@typescript-eslint/scope-manager@npm:8.33.0" +"@typescript-eslint/scope-manager@npm:8.46.2": + version: 8.46.2 + resolution: "@typescript-eslint/scope-manager@npm:8.46.2" dependencies: - "@typescript-eslint/types": "npm:8.33.0" - "@typescript-eslint/visitor-keys": "npm:8.33.0" - checksum: 10c0/eb259add242ce40642e7272b414c92ae9407d97cb304981f17f0de0846d5c4ab47d41816ef13da3d3976fe0b7a74df291525be27e4fe4f0ab5d35e86d340faa0 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:8.35.1": - version: 8.35.1 - resolution: "@typescript-eslint/scope-manager@npm:8.35.1" - dependencies: - "@typescript-eslint/types": "npm:8.35.1" - "@typescript-eslint/visitor-keys": "npm:8.35.1" - checksum: 10c0/ddfa0b81f47402874efcdd8e0857142600d90fc4e827243ed0fd058731e77e4beb8f5a60425117d1d4146d84437f538cf303f7bfebbd0f02733b202aa30a8393 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:8.39.1": - version: 8.39.1 - resolution: "@typescript-eslint/scope-manager@npm:8.39.1" - dependencies: - "@typescript-eslint/types": "npm:8.39.1" - "@typescript-eslint/visitor-keys": "npm:8.39.1" - checksum: 10c0/9466db557c1a0eaaf24b0ece5810413d11390d046bf6e47c4074879e8dba0348b835a21106c842ab20ff85f2384312cf9e20bfe7684e31640696e29957003511 - languageName: node - linkType: hard - -"@typescript-eslint/tsconfig-utils@npm:8.33.0, @typescript-eslint/tsconfig-utils@npm:^8.33.0": - version: 8.33.0 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.33.0" - peerDependencies: - typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/6e9a8e73e65b925f908f31e00be4f1b8d7e89f45d97fa703f468115943c297fc2cc6f9daa0c12b9607f39186f033ac244515f11710df7e1df8302c815ed57389 - languageName: node - linkType: hard - -"@typescript-eslint/tsconfig-utils@npm:8.35.1, @typescript-eslint/tsconfig-utils@npm:^8.35.1": - version: 8.35.1 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.35.1" - peerDependencies: - typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/a11b53e05fbc59eff3f95619847fb7222d8b2aa613e602524c9b700be3ce0d48bcf5e5932869df4658f514bd2cdc87c857d484472af3f3f3adf88b6e7e1c26f3 + "@typescript-eslint/types": "npm:8.46.2" + "@typescript-eslint/visitor-keys": "npm:8.46.2" + checksum: 10c0/42f52ee621a3a0ef2233e7d3384d9dbd76218f5c906a9cce3152a1f55c060a3d3614c7b8fff5270bdf48e8fcc003e732d3f003f283ea6fb204d64a2f6bb3ea9c languageName: node linkType: hard -"@typescript-eslint/tsconfig-utils@npm:8.39.1, @typescript-eslint/tsconfig-utils@npm:^8.39.1": - version: 8.39.1 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.39.1" +"@typescript-eslint/tsconfig-utils@npm:8.46.2, @typescript-eslint/tsconfig-utils@npm:^8.46.2": + version: 8.46.2 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.46.2" peerDependencies: typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/664dff0b4ae908cb98c78f9ca73c36cf57c3a2206965d9d0659649ffc02347eb30e1452499671a425592f14a2a5c5eb82ae389b34f3c415a12119506b4ebb61c + checksum: 10c0/23e34ad296347417e42234945138022fb045d180fde69941483884a38e85fa55d5449420d2a660c0ebf1794a445add2f13e171c8dd64e4e83f594e2c4e35bf4d languageName: node linkType: hard @@ -11620,49 +12055,19 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.33.0": - version: 8.33.0 - resolution: "@typescript-eslint/type-utils@npm:8.33.0" - dependencies: - "@typescript-eslint/typescript-estree": "npm:8.33.0" - "@typescript-eslint/utils": "npm:8.33.0" - debug: "npm:^4.3.4" - ts-api-utils: "npm:^2.1.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/4a81c654ba17e8a50e48249f781cb91cddb990044affda7315d9b259aabd638232c9a98ff5f4d45ea3b258098060864026b746fce93ad6b4dcde5e492d93c855 - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:8.35.1": - version: 8.35.1 - resolution: "@typescript-eslint/type-utils@npm:8.35.1" +"@typescript-eslint/type-utils@npm:8.46.2": + version: 8.46.2 + resolution: "@typescript-eslint/type-utils@npm:8.46.2" dependencies: - "@typescript-eslint/typescript-estree": "npm:8.35.1" - "@typescript-eslint/utils": "npm:8.35.1" - debug: "npm:^4.3.4" - ts-api-utils: "npm:^2.1.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/09041dd64684823da169c0668e6187d237c728bf54771003dc6ddaa895cbd11ad401ff14f096451c689e37815a791ef77beaf80d1f8bbf6b92ee3edbf346bc7c - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:8.39.1": - version: 8.39.1 - resolution: "@typescript-eslint/type-utils@npm:8.39.1" - dependencies: - "@typescript-eslint/types": "npm:8.39.1" - "@typescript-eslint/typescript-estree": "npm:8.39.1" - "@typescript-eslint/utils": "npm:8.39.1" + "@typescript-eslint/types": "npm:8.46.2" + "@typescript-eslint/typescript-estree": "npm:8.46.2" + "@typescript-eslint/utils": "npm:8.46.2" debug: "npm:^4.3.4" ts-api-utils: "npm:^2.1.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/430dfefe040eae5f0c8dfbce37b5ce071095a28f335e74793923d113682e26313586e90f7bbe2c2f9bffb0da52ffdf5055ea36b96d9f218cef35aa14853122d5 + checksum: 10c0/e12fc65e4b58c1ab6fe65f5486265b7afe9a9a6730e3529aca927ddfc22e5913eb28999fc83e68ea1b49097e1edbbae1f61dd724b0bb0e7586fb24ecda1d4938 languageName: node linkType: hard @@ -11687,31 +12092,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.32.0": - version: 8.32.0 - resolution: "@typescript-eslint/types@npm:8.32.0" - checksum: 10c0/86cc1e365bc12b8baf539e8e2d280b068a7d4a4220f5834fe4de182827a971200408a1ad20f9679af4c4bcdafea03dd66319fe7f1d060ce4b5abbf2962ea3062 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:8.33.0, @typescript-eslint/types@npm:^8.33.0": - version: 8.33.0 - resolution: "@typescript-eslint/types@npm:8.33.0" - checksum: 10c0/348b64eb408719d7711a433fc9716e0c2aab8b3f3676f5a1cc2e00269044132282cf655deb6d0dd9817544116909513de3b709005352d186949d1014fad1a3cb - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:8.35.1, @typescript-eslint/types@npm:^8.35.1": - version: 8.35.1 - resolution: "@typescript-eslint/types@npm:8.35.1" - checksum: 10c0/136dd1c7a39685baa398406423a97a4b6a66e6aed7cbd6ae698a89b0fde92c76f1415294bec612791d67d7917fda280caa65b9d761e2744e8143506d1f417fb2 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:8.39.1, @typescript-eslint/types@npm:^8.39.1": - version: 8.39.1 - resolution: "@typescript-eslint/types@npm:8.39.1" - checksum: 10c0/0e188d2d52509a24c500a87adf561387ffcac56b62cb9fd0ca1f929bb3d4eedb6b8f9d516c1890855d39930c9dd8d502d5b4600b8c9cc832d3ebb595d81c7533 +"@typescript-eslint/types@npm:8.46.2, @typescript-eslint/types@npm:^8.46.2": + version: 8.46.2 + resolution: "@typescript-eslint/types@npm:8.46.2" + checksum: 10c0/611716bae2369a1b8001c7f6cc03c5ecadfb956643cbbe27269defd28a61d43fe52eda008d7a09568b0be50c502e8292bf767b246366004283476e9a971b6fbc languageName: node linkType: hard @@ -11766,77 +12150,19 @@ __metadata: ts-api-utils: "npm:^1.3.0" peerDependenciesMeta: typescript: - optional: true - checksum: 10c0/0c7f109a2e460ec8a1524339479cf78ff17814d23c83aa5112c77fb345e87b3642616291908dcddea1e671da63686403dfb712e4a4435104f92abdfddf9aba81 - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:8.32.0": - version: 8.32.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.32.0" - dependencies: - "@typescript-eslint/types": "npm:8.32.0" - "@typescript-eslint/visitor-keys": "npm:8.32.0" - debug: "npm:^4.3.4" - fast-glob: "npm:^3.3.2" - is-glob: "npm:^4.0.3" - minimatch: "npm:^9.0.4" - semver: "npm:^7.6.0" - ts-api-utils: "npm:^2.1.0" - peerDependencies: - typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/c366a457b544c52cb26ffe3e07ed9d3c6eea9fa8a181c2fdba9a0d2076e5d3198dedfb8510038b0791bd338773d8c8d2af048b7c69999d3fd8540ef790dbc720 - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:8.33.0": - version: 8.33.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.33.0" - dependencies: - "@typescript-eslint/project-service": "npm:8.33.0" - "@typescript-eslint/tsconfig-utils": "npm:8.33.0" - "@typescript-eslint/types": "npm:8.33.0" - "@typescript-eslint/visitor-keys": "npm:8.33.0" - debug: "npm:^4.3.4" - fast-glob: "npm:^3.3.2" - is-glob: "npm:^4.0.3" - minimatch: "npm:^9.0.4" - semver: "npm:^7.6.0" - ts-api-utils: "npm:^2.1.0" - peerDependencies: - typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/677b12b2e5780ffaef508bddbf8712fe2c3413f3d14fd8fd0cfbe22952a81c6642b3cc26984cf27fdfc3dd2457ae5f8aa04437d3b0ae32987a1895f9648ca7b2 - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:8.35.1": - version: 8.35.1 - resolution: "@typescript-eslint/typescript-estree@npm:8.35.1" - dependencies: - "@typescript-eslint/project-service": "npm:8.35.1" - "@typescript-eslint/tsconfig-utils": "npm:8.35.1" - "@typescript-eslint/types": "npm:8.35.1" - "@typescript-eslint/visitor-keys": "npm:8.35.1" - debug: "npm:^4.3.4" - fast-glob: "npm:^3.3.2" - is-glob: "npm:^4.0.3" - minimatch: "npm:^9.0.4" - semver: "npm:^7.6.0" - ts-api-utils: "npm:^2.1.0" - peerDependencies: - typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/6ef093cf9d7a54a323b3d112c78309b2c24c0f94e2c5b61401db9390eb7ffa3ab1da066c497907d58f0bba6986984ac73a478febd91f0bf11598108cc49f6e02 + optional: true + checksum: 10c0/0c7f109a2e460ec8a1524339479cf78ff17814d23c83aa5112c77fb345e87b3642616291908dcddea1e671da63686403dfb712e4a4435104f92abdfddf9aba81 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.39.1": - version: 8.39.1 - resolution: "@typescript-eslint/typescript-estree@npm:8.39.1" +"@typescript-eslint/typescript-estree@npm:8.46.2": + version: 8.46.2 + resolution: "@typescript-eslint/typescript-estree@npm:8.46.2" dependencies: - "@typescript-eslint/project-service": "npm:8.39.1" - "@typescript-eslint/tsconfig-utils": "npm:8.39.1" - "@typescript-eslint/types": "npm:8.39.1" - "@typescript-eslint/visitor-keys": "npm:8.39.1" + "@typescript-eslint/project-service": "npm:8.46.2" + "@typescript-eslint/tsconfig-utils": "npm:8.46.2" + "@typescript-eslint/types": "npm:8.46.2" + "@typescript-eslint/visitor-keys": "npm:8.46.2" debug: "npm:^4.3.4" fast-glob: "npm:^3.3.2" is-glob: "npm:^4.0.3" @@ -11845,7 +12171,7 @@ __metadata: ts-api-utils: "npm:^2.1.0" peerDependencies: typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/1de1a37fed354600a08bc971492c2f14238f0a4bf07a43bedb416c17b7312d18bec92c68c8f2790bb0a1bffcd757f7962914be9f6213068f18f6c4fdde259af4 + checksum: 10c0/ad7dbf352982bc6e16473ef19fc7d209fffeb147a732db8a2464e0ec33e7fbbc24ce3f23d01bdf99d503626c582a476debf4c90c527d755eeb99b863476d9f5f languageName: node linkType: hard @@ -11898,63 +12224,18 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.33.0": - version: 8.33.0 - resolution: "@typescript-eslint/utils@npm:8.33.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.7.0" - "@typescript-eslint/scope-manager": "npm:8.33.0" - "@typescript-eslint/types": "npm:8.33.0" - "@typescript-eslint/typescript-estree": "npm:8.33.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/a0adb9e13d8f8d8f86ae2e905f3305ad60732e760364b291de66a857a551485d37c23e923299078a47f75d3cca643e1f2aefa010a0beb4cb0d08d0507c1038e1 - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:8.35.1": - version: 8.35.1 - resolution: "@typescript-eslint/utils@npm:8.35.1" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.7.0" - "@typescript-eslint/scope-manager": "npm:8.35.1" - "@typescript-eslint/types": "npm:8.35.1" - "@typescript-eslint/typescript-estree": "npm:8.35.1" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/1fa4877caae48961d160b88fc974bb7bfe355ca2f8f6915987427354ca23621698041678adab5964caf9ad62c17b349110136890688f13b10ab1aaad74ae63d9 - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:8.39.1": - version: 8.39.1 - resolution: "@typescript-eslint/utils@npm:8.39.1" +"@typescript-eslint/utils@npm:8.46.2, @typescript-eslint/utils@npm:^8.44.1": + version: 8.46.2 + resolution: "@typescript-eslint/utils@npm:8.46.2" dependencies: "@eslint-community/eslint-utils": "npm:^4.7.0" - "@typescript-eslint/scope-manager": "npm:8.39.1" - "@typescript-eslint/types": "npm:8.39.1" - "@typescript-eslint/typescript-estree": "npm:8.39.1" + "@typescript-eslint/scope-manager": "npm:8.46.2" + "@typescript-eslint/types": "npm:8.46.2" + "@typescript-eslint/typescript-estree": "npm:8.46.2" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/ebc01d736af43728df9a0915058d0c771dec9cc58846ffdcbb986c78e7dabf547ea7daecd75db58b2af88a3c2a43de8a7e5f81feefacfa31be173fc384d25d77 - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:^8.18.1": - version: 8.32.0 - resolution: "@typescript-eslint/utils@npm:8.32.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.7.0" - "@typescript-eslint/scope-manager": "npm:8.32.0" - "@typescript-eslint/types": "npm:8.32.0" - "@typescript-eslint/typescript-estree": "npm:8.32.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/b5b65555b98c8fc92ec016ce2329f644b4d09def28c36422ce77aad9eda1b4dae009bf97b684357e97dd15de66dddba7d8d86e426e11123dae80f7ca2b4f9bd4 + checksum: 10c0/600b70730077ed85a6e278e06771f3933cdafce242f979e4af1c1b41290bf1efb14d20823c25c38a3a792def69b18eb9410af28bb228fe86027ad7859753c62d languageName: node linkType: hard @@ -11988,43 +12269,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.32.0": - version: 8.32.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.32.0" - dependencies: - "@typescript-eslint/types": "npm:8.32.0" - eslint-visitor-keys: "npm:^4.2.0" - checksum: 10c0/f2e5254d9b1d00cd6360e27240ad72fbab7bcbaed46944943ff077e12fe4883790571f3734f8cb12c3e278bfd7bc4f8f7192ed899f341c282269a9dd16f0cba0 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:8.33.0": - version: 8.33.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.33.0" - dependencies: - "@typescript-eslint/types": "npm:8.33.0" - eslint-visitor-keys: "npm:^4.2.0" - checksum: 10c0/41660f241e78314f69d251792f369ef1eeeab3b40fe4ab11b794d402c95bcb82b61d3e91763e7ab9b0f22011a7ac9c8f9dfd91734d61c9f4eaf4f7660555b53b - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:8.35.1": - version: 8.35.1 - resolution: "@typescript-eslint/visitor-keys@npm:8.35.1" - dependencies: - "@typescript-eslint/types": "npm:8.35.1" - eslint-visitor-keys: "npm:^4.2.1" - checksum: 10c0/55b9eb15842a5d5dca11375e436340c731e01b07190c741d2656330f3e4d88b59e1bf3d677681dd091460be2b6e5f2c42e92faea36f947d25382ead5e8118108 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:8.39.1": - version: 8.39.1 - resolution: "@typescript-eslint/visitor-keys@npm:8.39.1" +"@typescript-eslint/visitor-keys@npm:8.46.2": + version: 8.46.2 + resolution: "@typescript-eslint/visitor-keys@npm:8.46.2" dependencies: - "@typescript-eslint/types": "npm:8.39.1" + "@typescript-eslint/types": "npm:8.46.2" eslint-visitor-keys: "npm:^4.2.1" - checksum: 10c0/4d81f6826a211bc2752e25cd16d1f415f28ebc92b35142402ec23f3765f2d00963b75ac06266ad9c674ca5b057d07d8c114116e5bf14f5465dde1d1aa60bc72f + checksum: 10c0/2067cd9a3c90b3817242cc49b5fa77428e1b92b28e16a12f45c2b399acbba7bd17e503553e5e68924e40078477a5c247dfa12e7709c24fe11c0b17a0c8486c33 languageName: node linkType: hard @@ -12035,258 +12286,137 @@ __metadata: languageName: node linkType: hard -"@unrs/resolver-binding-android-arm-eabi@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-android-arm-eabi@npm:1.11.0" +"@unrs/resolver-binding-android-arm-eabi@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-android-arm-eabi@npm:1.11.1" conditions: os=android & cpu=arm languageName: node linkType: hard -"@unrs/resolver-binding-android-arm64@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-android-arm64@npm:1.11.0" +"@unrs/resolver-binding-android-arm64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-android-arm64@npm:1.11.1" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@unrs/resolver-binding-darwin-arm64@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.11.0" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-darwin-arm64@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.7.2" +"@unrs/resolver-binding-darwin-arm64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.11.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@unrs/resolver-binding-darwin-x64@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-darwin-x64@npm:1.11.0" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-darwin-x64@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-darwin-x64@npm:1.7.2" +"@unrs/resolver-binding-darwin-x64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-darwin-x64@npm:1.11.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@unrs/resolver-binding-freebsd-x64@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.11.0" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-freebsd-x64@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.7.2" +"@unrs/resolver-binding-freebsd-x64@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.11.1" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.0" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.7.2" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.0" +"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.1" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.7.2" +"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.1" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.0" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm64-gnu@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.7.2" +"@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.1" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-arm64-musl@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.11.0" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm64-musl@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.7.2" +"@unrs/resolver-binding-linux-arm64-musl@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.11.1" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.0" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.7.2" +"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.1" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.0" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.7.2" +"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.1" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.0" - conditions: os=linux & cpu=riscv64 & libc=musl - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-riscv64-musl@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.7.2" +"@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.1" conditions: os=linux & cpu=riscv64 & libc=musl languageName: node linkType: hard -"@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.0" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-s390x-gnu@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.7.2" +"@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.1" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-x64-gnu@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.11.0" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-x64-gnu@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.7.2" +"@unrs/resolver-binding-linux-x64-gnu@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.11.1" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-x64-musl@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.11.0" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-x64-musl@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.7.2" +"@unrs/resolver-binding-linux-x64-musl@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.11.1" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@unrs/resolver-binding-wasm32-wasi@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.11.0" +"@unrs/resolver-binding-wasm32-wasi@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.11.1" dependencies: "@napi-rs/wasm-runtime": "npm:^0.2.11" conditions: cpu=wasm32 languageName: node linkType: hard -"@unrs/resolver-binding-wasm32-wasi@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.7.2" - dependencies: - "@napi-rs/wasm-runtime": "npm:^0.2.9" - conditions: cpu=wasm32 - languageName: node - linkType: hard - -"@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.0" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-win32-arm64-msvc@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.7.2" +"@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.0" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@unrs/resolver-binding-win32-ia32-msvc@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.7.2" +"@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.1" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@unrs/resolver-binding-win32-x64-msvc@npm:1.11.0": - version: 1.11.0 - resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.11.0" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-win32-x64-msvc@npm:1.7.2": - version: 1.7.2 - resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.7.2" +"@unrs/resolver-binding-win32-x64-msvc@npm:1.11.1": + version: 1.11.1 + resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.11.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -12334,166 +12464,131 @@ __metadata: linkType: hard "@vitejs/plugin-react@npm:^4.2.1, @vitejs/plugin-react@npm:^4.3.1": - version: 4.4.1 - resolution: "@vitejs/plugin-react@npm:4.4.1" + version: 4.7.0 + resolution: "@vitejs/plugin-react@npm:4.7.0" dependencies: - "@babel/core": "npm:^7.26.10" - "@babel/plugin-transform-react-jsx-self": "npm:^7.25.9" - "@babel/plugin-transform-react-jsx-source": "npm:^7.25.9" + "@babel/core": "npm:^7.28.0" + "@babel/plugin-transform-react-jsx-self": "npm:^7.27.1" + "@babel/plugin-transform-react-jsx-source": "npm:^7.27.1" + "@rolldown/pluginutils": "npm:1.0.0-beta.27" "@types/babel__core": "npm:^7.20.5" react-refresh: "npm:^0.17.0" peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 - checksum: 10c0/0eda45f2026cdfff4b172b1b2148824e5ac41ce65f1f1ce108f3ce4de2f0024caf79c811c1305a782168a269b0b1bc58d4cf8eaf164e4ef19954f05428ba7077 + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + checksum: 10c0/692f23960972879485d647713663ec299c478222c96567d60285acf7c7dc5c178e71abfe9d2eefddef1eeb01514dacbc2ed68aad84628debf9c7116134734253 languageName: node linkType: hard -"@vitest/expect@npm:3.1.3": - version: 3.1.3 - resolution: "@vitest/expect@npm:3.1.3" +"@vitest/expect@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/expect@npm:3.2.4" dependencies: - "@vitest/spy": "npm:3.1.3" - "@vitest/utils": "npm:3.1.3" + "@types/chai": "npm:^5.2.2" + "@vitest/spy": "npm:3.2.4" + "@vitest/utils": "npm:3.2.4" chai: "npm:^5.2.0" tinyrainbow: "npm:^2.0.0" - checksum: 10c0/3a61e5526ed57491c9c230cb592849a2c15e6b4376bfaec4f623ac75fdcf5c24c322949cfb5362136fc8be5eb19be88d094917ea5f700bd3da0ea0c68ee4a8d9 + checksum: 10c0/7586104e3fd31dbe1e6ecaafb9a70131e4197dce2940f727b6a84131eee3decac7b10f9c7c72fa5edbdb68b6f854353bd4c0fa84779e274207fb7379563b10db languageName: node linkType: hard -"@vitest/mocker@npm:3.1.3": - version: 3.1.3 - resolution: "@vitest/mocker@npm:3.1.3" +"@vitest/mocker@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/mocker@npm:3.2.4" dependencies: - "@vitest/spy": "npm:3.1.3" + "@vitest/spy": "npm:3.2.4" estree-walker: "npm:^3.0.3" magic-string: "npm:^0.30.17" peerDependencies: msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 peerDependenciesMeta: msw: optional: true vite: optional: true - checksum: 10c0/6e6a62e27aa6cd146d14ae64eb9acfc0f49e7479ca426af1fb4df362456aa3456abf29731247659032e4bfb7ac9482fca1d1c7e1501e1a186eb211221e1f613a + checksum: 10c0/f7a4aea19bbbf8f15905847ee9143b6298b2c110f8b64789224cb0ffdc2e96f9802876aa2ca83f1ec1b6e1ff45e822abb34f0054c24d57b29ab18add06536ccd languageName: node linkType: hard -"@vitest/pretty-format@npm:3.1.3, @vitest/pretty-format@npm:^3.1.3": - version: 3.1.3 - resolution: "@vitest/pretty-format@npm:3.1.3" +"@vitest/pretty-format@npm:3.2.4, @vitest/pretty-format@npm:^3.2.4": + version: 3.2.4 + resolution: "@vitest/pretty-format@npm:3.2.4" dependencies: tinyrainbow: "npm:^2.0.0" - checksum: 10c0/eba164d2c0b2babbcf6bb054da3b326d08cc3a0289ade3c64309bfe5e7c3124cd4d45a60b2f673cf4f5b3a97381fb7af7009780a5d9665afdf7f8263fa34c068 + checksum: 10c0/5ad7d4278e067390d7d633e307fee8103958806a419ca380aec0e33fae71b44a64415f7a9b4bc11635d3c13d4a9186111c581d3cef9c65cc317e68f077456887 languageName: node linkType: hard -"@vitest/runner@npm:3.1.3": - version: 3.1.3 - resolution: "@vitest/runner@npm:3.1.3" +"@vitest/runner@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/runner@npm:3.2.4" dependencies: - "@vitest/utils": "npm:3.1.3" + "@vitest/utils": "npm:3.2.4" pathe: "npm:^2.0.3" - checksum: 10c0/f03c26e72657242ce68a93b46ee8a4e6fa1a290850be608988622a3efef744ffadc0436123acafe61977608b287b1637f4f781d27107ee0c33937c54f547159d + strip-literal: "npm:^3.0.0" + checksum: 10c0/e8be51666c72b3668ae3ea348b0196656a4a5adb836cb5e270720885d9517421815b0d6c98bfdf1795ed02b994b7bfb2b21566ee356a40021f5bf4f6ed4e418a languageName: node linkType: hard -"@vitest/snapshot@npm:3.1.3": - version: 3.1.3 - resolution: "@vitest/snapshot@npm:3.1.3" +"@vitest/snapshot@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/snapshot@npm:3.2.4" dependencies: - "@vitest/pretty-format": "npm:3.1.3" + "@vitest/pretty-format": "npm:3.2.4" magic-string: "npm:^0.30.17" pathe: "npm:^2.0.3" - checksum: 10c0/60b70c1d878c3d9a4fe3464d14be2318a7a3be24131beb801712735d5dcbc7db7b798f21c98c6fbad4998554992038b29655e1b6e2503242627f203fd89c97c3 + checksum: 10c0/f8301a3d7d1559fd3d59ed51176dd52e1ed5c2d23aa6d8d6aa18787ef46e295056bc726a021698d8454c16ed825ecba163362f42fa90258bb4a98cfd2c9424fc languageName: node linkType: hard -"@vitest/spy@npm:3.1.3": - version: 3.1.3 - resolution: "@vitest/spy@npm:3.1.3" +"@vitest/spy@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/spy@npm:3.2.4" dependencies: - tinyspy: "npm:^3.0.2" - checksum: 10c0/6a8c187069827c56f3492f212ccf76c797fe52392849948af736a0f579e4533fa91041d829e2574b252af4aaadec066ca0714450d6457b31526153978bc55192 + tinyspy: "npm:^4.0.3" + checksum: 10c0/6ebf0b4697dc238476d6b6a60c76ba9eb1dd8167a307e30f08f64149612fd50227682b876420e4c2e09a76334e73f72e3ebf0e350714dc22474258292e202024 languageName: node linkType: hard -"@vitest/utils@npm:3.1.3": - version: 3.1.3 - resolution: "@vitest/utils@npm:3.1.3" +"@vitest/utils@npm:3.2.4": + version: 3.2.4 + resolution: "@vitest/utils@npm:3.2.4" dependencies: - "@vitest/pretty-format": "npm:3.1.3" - loupe: "npm:^3.1.3" + "@vitest/pretty-format": "npm:3.2.4" + loupe: "npm:^3.1.4" tinyrainbow: "npm:^2.0.0" - checksum: 10c0/1c4ea711b87a8b2c7dc2da91f20427dccc34c0d1d0e81b8142780d24b6caa3c724e8287f7e01e9e875262b6bb912d55711fb99e66f718ba30cc21706a335829d + checksum: 10c0/024a9b8c8bcc12cf40183c246c244b52ecff861c6deb3477cbf487ac8781ad44c68a9c5fd69f8c1361878e55b97c10d99d511f2597f1f7244b5e5101d028ba64 languageName: node linkType: hard -"@wagmi/connectors@npm:5.8.1, @wagmi/connectors@npm:>=5.7.11": - version: 5.8.1 - resolution: "@wagmi/connectors@npm:5.8.1" - dependencies: - "@coinbase/wallet-sdk": "npm:4.3.0" - "@metamask/sdk": "npm:0.32.0" - "@safe-global/safe-apps-provider": "npm:0.18.6" - "@safe-global/safe-apps-sdk": "npm:9.1.0" - "@walletconnect/ethereum-provider": "npm:2.20.0" - cbw-sdk: "npm:@coinbase/wallet-sdk@3.9.3" - peerDependencies: - "@wagmi/core": 2.17.1 - typescript: ">=5.0.4" - viem: 2.x - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/31836dc626158945d0552784411af099c0715e38c49f52677565531a159138556d9f30edb38151d8c6d7e13be4b12d98a67bfaa563058ecf5f9456ef2aee10be - languageName: node - linkType: hard - -"@wagmi/connectors@npm:5.8.5": - version: 5.8.5 - resolution: "@wagmi/connectors@npm:5.8.5" +"@wagmi/connectors@npm:6.1.3, @wagmi/connectors@npm:>=5.9.9": + version: 6.1.3 + resolution: "@wagmi/connectors@npm:6.1.3" dependencies: - "@coinbase/wallet-sdk": "npm:4.3.3" - "@metamask/sdk": "npm:0.32.0" + "@base-org/account": "npm:2.4.0" + "@coinbase/wallet-sdk": "npm:4.3.6" + "@gemini-wallet/core": "npm:0.3.1" + "@metamask/sdk": "npm:0.33.1" "@safe-global/safe-apps-provider": "npm:0.18.6" "@safe-global/safe-apps-sdk": "npm:9.1.0" "@walletconnect/ethereum-provider": "npm:2.21.1" cbw-sdk: "npm:@coinbase/wallet-sdk@3.9.3" + porto: "npm:0.2.35" peerDependencies: - "@wagmi/core": 2.17.3 - typescript: ">=5.0.4" - viem: 2.x - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/d00dbeefe090a2dd740594d560108998cee4ce02e789e4a3b591a742b3622a7a47f2504e0e1c72315935696fbda26446c496491972dcdde1e1b3f2173ceb2b8d - languageName: node - linkType: hard - -"@wagmi/core@npm:2.17.1, @wagmi/core@npm:^2.17.1": - version: 2.17.1 - resolution: "@wagmi/core@npm:2.17.1" - dependencies: - eventemitter3: "npm:5.0.1" - mipd: "npm:0.0.7" - zustand: "npm:5.0.0" - peerDependencies: - "@tanstack/query-core": ">=5.0.0" + "@wagmi/core": 2.22.1 typescript: ">=5.0.4" viem: 2.x peerDependenciesMeta: - "@tanstack/query-core": - optional: true typescript: optional: true - checksum: 10c0/883e68732d79de57bb6fd132a605d14c9e50f8a0bf939d4e540378a9c29b7760d5c9c80f7b798fac7b5fe0fd265a55898cfa1cc633fcf163a10035e91f59f276 + checksum: 10c0/22c3971b1c8299e41d7c551a26b80a142121157d668be042c6d07e98c15db1cf67ab376f1b726c6b89b196c5873f8ddedb168ba73a0da8ef19901d22f6efccb7 languageName: node linkType: hard -"@wagmi/core@npm:2.17.3": - version: 2.17.3 - resolution: "@wagmi/core@npm:2.17.3" +"@wagmi/core@npm:2.22.1, @wagmi/core@npm:^2.17.1": + version: 2.22.1 + resolution: "@wagmi/core@npm:2.22.1" dependencies: eventemitter3: "npm:5.0.1" mipd: "npm:0.0.7" @@ -12507,73 +12602,23 @@ __metadata: optional: true typescript: optional: true - checksum: 10c0/128875066323c87242293cfe5b22fe596dd8a55c79efeb2a7b36b6a1acd549e217cdb30215119bd203580b71118cd197274eed83c120dce5846b1894140b79be + checksum: 10c0/0a68b77f544b64057f8779e1e8ade38babf2ffa6585539a980b3e8101def962b69f9688c87a345113362dbc534c2b15a8df6d751b6867ffa5c9daf12e32b2fb2 languageName: node linkType: hard "@wallet-standard/base@npm:^1.1.0": version: 1.1.0 - resolution: "@wallet-standard/base@npm:1.1.0" - checksum: 10c0/4cae344d5a74ba4b7d063b649b191f2267bd11ea9573ebb9e78874163c03b58e3ec531bb296d0a8d7941bc09231761d97afb4c6ca8c0dc399c81d39884b4e408 - languageName: node - linkType: hard - -"@wallet-standard/wallet@npm:1.1.0": - version: 1.1.0 - resolution: "@wallet-standard/wallet@npm:1.1.0" - dependencies: - "@wallet-standard/base": "npm:^1.1.0" - checksum: 10c0/aa53460568f209d4e38030ee5e98d4f6ea6fec159a1e7fb5a3ee81cf8d91c89f0be86b7188dbf0bb9803d10608bf88bd824f73cd6800823279738827304038e5 - languageName: node - linkType: hard - -"@walletconnect/core@npm:2.19.2": - version: 2.19.2 - resolution: "@walletconnect/core@npm:2.19.2" - dependencies: - "@walletconnect/heartbeat": "npm:1.2.2" - "@walletconnect/jsonrpc-provider": "npm:1.0.14" - "@walletconnect/jsonrpc-types": "npm:1.0.4" - "@walletconnect/jsonrpc-utils": "npm:1.0.8" - "@walletconnect/jsonrpc-ws-connection": "npm:1.0.16" - "@walletconnect/keyvaluestorage": "npm:1.1.1" - "@walletconnect/logger": "npm:2.1.2" - "@walletconnect/relay-api": "npm:1.0.11" - "@walletconnect/relay-auth": "npm:1.1.0" - "@walletconnect/safe-json": "npm:1.0.2" - "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.19.2" - "@walletconnect/utils": "npm:2.19.2" - "@walletconnect/window-getters": "npm:1.0.1" - es-toolkit: "npm:1.33.0" - events: "npm:3.3.0" - uint8arrays: "npm:3.1.0" - checksum: 10c0/6ebc3c192fb667d4cbaa435c7391fd21b857508f0e3a43cf2c1fb10626dbe0ef374e01988330916dbeb8ae2fcaac4f56881af482dc37f4b1d1d39e63feb0aed3 - languageName: node - linkType: hard - -"@walletconnect/core@npm:2.20.0": - version: 2.20.0 - resolution: "@walletconnect/core@npm:2.20.0" - dependencies: - "@walletconnect/heartbeat": "npm:1.2.2" - "@walletconnect/jsonrpc-provider": "npm:1.0.14" - "@walletconnect/jsonrpc-types": "npm:1.0.4" - "@walletconnect/jsonrpc-utils": "npm:1.0.8" - "@walletconnect/jsonrpc-ws-connection": "npm:1.0.16" - "@walletconnect/keyvaluestorage": "npm:1.1.1" - "@walletconnect/logger": "npm:2.1.2" - "@walletconnect/relay-api": "npm:1.0.11" - "@walletconnect/relay-auth": "npm:1.1.0" - "@walletconnect/safe-json": "npm:1.0.2" - "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.20.0" - "@walletconnect/utils": "npm:2.20.0" - "@walletconnect/window-getters": "npm:1.0.1" - es-toolkit: "npm:1.33.0" - events: "npm:3.3.0" - uint8arrays: "npm:3.1.0" - checksum: 10c0/bef89f8d7df53d60a121062644133e0433fd747d1dfea414503f8a4279c01cfc5fe1b125971ef9b780521585110625ded13447ee29790b7c0425879e387b04ee + resolution: "@wallet-standard/base@npm:1.1.0" + checksum: 10c0/4cae344d5a74ba4b7d063b649b191f2267bd11ea9573ebb9e78874163c03b58e3ec531bb296d0a8d7941bc09231761d97afb4c6ca8c0dc399c81d39884b4e408 + languageName: node + linkType: hard + +"@wallet-standard/wallet@npm:1.1.0": + version: 1.1.0 + resolution: "@wallet-standard/wallet@npm:1.1.0" + dependencies: + "@wallet-standard/base": "npm:^1.1.0" + checksum: 10c0/aa53460568f209d4e38030ee5e98d4f6ea6fec159a1e7fb5a3ee81cf8d91c89f0be86b7188dbf0bb9803d10608bf88bd824f73cd6800823279738827304038e5 languageName: node linkType: hard @@ -12627,9 +12672,9 @@ __metadata: languageName: node linkType: hard -"@walletconnect/core@npm:2.21.3": - version: 2.21.3 - resolution: "@walletconnect/core@npm:2.21.3" +"@walletconnect/core@npm:2.22.4": + version: 2.22.4 + resolution: "@walletconnect/core@npm:2.22.4" dependencies: "@walletconnect/heartbeat": "npm:1.2.2" "@walletconnect/jsonrpc-provider": "npm:1.0.14" @@ -12637,18 +12682,18 @@ __metadata: "@walletconnect/jsonrpc-utils": "npm:1.0.8" "@walletconnect/jsonrpc-ws-connection": "npm:1.0.16" "@walletconnect/keyvaluestorage": "npm:1.1.1" - "@walletconnect/logger": "npm:2.1.2" + "@walletconnect/logger": "npm:3.0.0" "@walletconnect/relay-api": "npm:1.0.11" "@walletconnect/relay-auth": "npm:1.1.0" "@walletconnect/safe-json": "npm:1.0.2" "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.21.3" - "@walletconnect/utils": "npm:2.21.3" + "@walletconnect/types": "npm:2.22.4" + "@walletconnect/utils": "npm:2.22.4" "@walletconnect/window-getters": "npm:1.0.1" es-toolkit: "npm:1.39.3" events: "npm:3.3.0" uint8arrays: "npm:3.1.1" - checksum: 10c0/ac79553046409d4f01e5a83f31bcb999abe1b23c43679cd0716fb867099d0278cce2d8e6405ec9d6fa0d30716c97d8fd4c83859122930f5f0775e297e05585b2 + checksum: 10c0/e4d98b0845988e4618ea29711e1cf4cdbee13b4cfc81658d31dc93ff922a4ae2249e20f76eb4c8dac65806be08288ffe2679699a623f5aba753053b62b11976d languageName: node linkType: hard @@ -12661,25 +12706,6 @@ __metadata: languageName: node linkType: hard -"@walletconnect/ethereum-provider@npm:2.20.0": - version: 2.20.0 - resolution: "@walletconnect/ethereum-provider@npm:2.20.0" - dependencies: - "@reown/appkit": "npm:1.7.3" - "@walletconnect/jsonrpc-http-connection": "npm:1.0.8" - "@walletconnect/jsonrpc-provider": "npm:1.0.14" - "@walletconnect/jsonrpc-types": "npm:1.0.4" - "@walletconnect/jsonrpc-utils": "npm:1.0.8" - "@walletconnect/keyvaluestorage": "npm:1.1.1" - "@walletconnect/sign-client": "npm:2.20.0" - "@walletconnect/types": "npm:2.20.0" - "@walletconnect/universal-provider": "npm:2.20.0" - "@walletconnect/utils": "npm:2.20.0" - events: "npm:3.3.0" - checksum: 10c0/da9960eff4c356d665eefcd15876f95e5158b3f4cf3e9e3044245d8dcefdb568ac4461158712e588214bfdeb4e601600b3c8f51c8b9f492af276cc7caeefc287 - languageName: node - linkType: hard - "@walletconnect/ethereum-provider@npm:2.21.1": version: 2.21.1 resolution: "@walletconnect/ethereum-provider@npm:2.21.1" @@ -12802,6 +12828,16 @@ __metadata: languageName: node linkType: hard +"@walletconnect/logger@npm:3.0.0, @walletconnect/logger@npm:^3.0.0": + version: 3.0.0 + resolution: "@walletconnect/logger@npm:3.0.0" + dependencies: + "@walletconnect/safe-json": "npm:^1.0.2" + pino: "npm:10.0.0" + checksum: 10c0/d8666a3074ed1d2b3afd04b76990e6552ed230381949c19dd19115a5e306314e4aede3492b1f715a3f9e49f45269d2ab58cc6f3de101ad4367ea8b617a23233b + languageName: node + linkType: hard + "@walletconnect/relay-api@npm:1.0.11": version: 1.0.11 resolution: "@walletconnect/relay-api@npm:1.0.11" @@ -12833,40 +12869,6 @@ __metadata: languageName: node linkType: hard -"@walletconnect/sign-client@npm:2.19.2": - version: 2.19.2 - resolution: "@walletconnect/sign-client@npm:2.19.2" - dependencies: - "@walletconnect/core": "npm:2.19.2" - "@walletconnect/events": "npm:1.0.1" - "@walletconnect/heartbeat": "npm:1.2.2" - "@walletconnect/jsonrpc-utils": "npm:1.0.8" - "@walletconnect/logger": "npm:2.1.2" - "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.19.2" - "@walletconnect/utils": "npm:2.19.2" - events: "npm:3.3.0" - checksum: 10c0/9d26928d3f52b068362e271ea4ffafb23bb077e265a792e420c1045bb38137a53681b82003e6a04108b4ba1a2ac183b759d42deaf9f4e0f3c9aabb1b0b632567 - languageName: node - linkType: hard - -"@walletconnect/sign-client@npm:2.20.0": - version: 2.20.0 - resolution: "@walletconnect/sign-client@npm:2.20.0" - dependencies: - "@walletconnect/core": "npm:2.20.0" - "@walletconnect/events": "npm:1.0.1" - "@walletconnect/heartbeat": "npm:1.2.2" - "@walletconnect/jsonrpc-utils": "npm:1.0.8" - "@walletconnect/logger": "npm:2.1.2" - "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.20.0" - "@walletconnect/utils": "npm:2.20.0" - events: "npm:3.3.0" - checksum: 10c0/b907c84fd33789ba783fcfcdf63d70024d1e5dfaeea86b91a73f8c5e12d877b4a905b976788d64529e5f96ed16e31e0ddb5024c722c76a53e0435db28b639f77 - languageName: node - linkType: hard - "@walletconnect/sign-client@npm:2.21.0": version: 2.21.0 resolution: "@walletconnect/sign-client@npm:2.21.0" @@ -12901,20 +12903,20 @@ __metadata: languageName: node linkType: hard -"@walletconnect/sign-client@npm:2.21.3": - version: 2.21.3 - resolution: "@walletconnect/sign-client@npm:2.21.3" +"@walletconnect/sign-client@npm:2.22.4": + version: 2.22.4 + resolution: "@walletconnect/sign-client@npm:2.22.4" dependencies: - "@walletconnect/core": "npm:2.21.3" + "@walletconnect/core": "npm:2.22.4" "@walletconnect/events": "npm:1.0.1" "@walletconnect/heartbeat": "npm:1.2.2" "@walletconnect/jsonrpc-utils": "npm:1.0.8" - "@walletconnect/logger": "npm:2.1.2" + "@walletconnect/logger": "npm:3.0.0" "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.21.3" - "@walletconnect/utils": "npm:2.21.3" + "@walletconnect/types": "npm:2.22.4" + "@walletconnect/utils": "npm:2.22.4" events: "npm:3.3.0" - checksum: 10c0/40d04474896ca8b3291457b8746a6e8fa85aa50a52dc121f6e8a95d82947010a859b7649317555a3503cd861667f966389599cb7edf5ab20d41acbea1c040b45 + checksum: 10c0/4fe41594f06ad8226d87e6b643c1a356f3c4f173988b317b74e5d504c375937e0a6029f30e13152e728cb43c431f4e5d1c4043f080e579f4e3072791ceccbc83 languageName: node linkType: hard @@ -12927,34 +12929,6 @@ __metadata: languageName: node linkType: hard -"@walletconnect/types@npm:2.19.2": - version: 2.19.2 - resolution: "@walletconnect/types@npm:2.19.2" - dependencies: - "@walletconnect/events": "npm:1.0.1" - "@walletconnect/heartbeat": "npm:1.2.2" - "@walletconnect/jsonrpc-types": "npm:1.0.4" - "@walletconnect/keyvaluestorage": "npm:1.1.1" - "@walletconnect/logger": "npm:2.1.2" - events: "npm:3.3.0" - checksum: 10c0/aa539e73851c0d744982119bf137555d1649f4b9aae6c4f2e296c85fe0a92b371334bb137329a0eb1c828de22f81991c91ce8e5975ee6a381bc03b864ed0dd9d - languageName: node - linkType: hard - -"@walletconnect/types@npm:2.20.0": - version: 2.20.0 - resolution: "@walletconnect/types@npm:2.20.0" - dependencies: - "@walletconnect/events": "npm:1.0.1" - "@walletconnect/heartbeat": "npm:1.2.2" - "@walletconnect/jsonrpc-types": "npm:1.0.4" - "@walletconnect/keyvaluestorage": "npm:1.1.1" - "@walletconnect/logger": "npm:2.1.2" - events: "npm:3.3.0" - checksum: 10c0/9edaf605b4205b39be767d5486ce9588e32a5680e9c871c0295220c8e573d52148991396f6a39b9b4c77040b540d8fdb1b0c9e9ea4ffb69754ec843d2b422f5d - languageName: node - linkType: hard - "@walletconnect/types@npm:2.21.0": version: 2.21.0 resolution: "@walletconnect/types@npm:2.21.0" @@ -12983,57 +12957,17 @@ __metadata: languageName: node linkType: hard -"@walletconnect/types@npm:2.21.3": - version: 2.21.3 - resolution: "@walletconnect/types@npm:2.21.3" +"@walletconnect/types@npm:2.22.4": + version: 2.22.4 + resolution: "@walletconnect/types@npm:2.22.4" dependencies: "@walletconnect/events": "npm:1.0.1" "@walletconnect/heartbeat": "npm:1.2.2" "@walletconnect/jsonrpc-types": "npm:1.0.4" "@walletconnect/keyvaluestorage": "npm:1.1.1" - "@walletconnect/logger": "npm:2.1.2" - events: "npm:3.3.0" - checksum: 10c0/0ae35ad796388412a836eba8e50f6a234d038ea51172546d11f282d6d6042faab0b3e3e8485410aaccf0be4c8fd42868403e3fbd2d907ba5a474304a245ca47b - languageName: node - linkType: hard - -"@walletconnect/universal-provider@npm:2.19.2": - version: 2.19.2 - resolution: "@walletconnect/universal-provider@npm:2.19.2" - dependencies: - "@walletconnect/events": "npm:1.0.1" - "@walletconnect/jsonrpc-http-connection": "npm:1.0.8" - "@walletconnect/jsonrpc-provider": "npm:1.0.14" - "@walletconnect/jsonrpc-types": "npm:1.0.4" - "@walletconnect/jsonrpc-utils": "npm:1.0.8" - "@walletconnect/keyvaluestorage": "npm:1.1.1" - "@walletconnect/logger": "npm:2.1.2" - "@walletconnect/sign-client": "npm:2.19.2" - "@walletconnect/types": "npm:2.19.2" - "@walletconnect/utils": "npm:2.19.2" - es-toolkit: "npm:1.33.0" - events: "npm:3.3.0" - checksum: 10c0/e4d64e5e95ee56a0babe62242c636d1bc691ee9acd2d46c1632117bf88ec0f48387224493387c3d397f2e0c030d2c64385f592ad0e92d8f4a50406058697ddb5 - languageName: node - linkType: hard - -"@walletconnect/universal-provider@npm:2.20.0": - version: 2.20.0 - resolution: "@walletconnect/universal-provider@npm:2.20.0" - dependencies: - "@walletconnect/events": "npm:1.0.1" - "@walletconnect/jsonrpc-http-connection": "npm:1.0.8" - "@walletconnect/jsonrpc-provider": "npm:1.0.14" - "@walletconnect/jsonrpc-types": "npm:1.0.4" - "@walletconnect/jsonrpc-utils": "npm:1.0.8" - "@walletconnect/keyvaluestorage": "npm:1.1.1" - "@walletconnect/logger": "npm:2.1.2" - "@walletconnect/sign-client": "npm:2.20.0" - "@walletconnect/types": "npm:2.20.0" - "@walletconnect/utils": "npm:2.20.0" - es-toolkit: "npm:1.33.0" + "@walletconnect/logger": "npm:3.0.0" events: "npm:3.3.0" - checksum: 10c0/0a9d629e9910884a9f26ae017a65adb979e3aeb09fe732bd6e1ea3a82c41b211d8c694947e3c053dcf73474b68d99b939c276d2fb113ebfbb0192497f57511c5 + checksum: 10c0/546b25aa116ea073c3e4b82fa3a3edd92e1c431ceff008d183054a1d63f912d2c5ddb2d2af497f7df2ab5801dc20b1ebae4f8ab65e39f7e89d41e65c9dda7c2d languageName: node linkType: hard @@ -13077,9 +13011,9 @@ __metadata: languageName: node linkType: hard -"@walletconnect/universal-provider@npm:2.21.3": - version: 2.21.3 - resolution: "@walletconnect/universal-provider@npm:2.21.3" +"@walletconnect/universal-provider@npm:2.22.4": + version: 2.22.4 + resolution: "@walletconnect/universal-provider@npm:2.22.4" dependencies: "@walletconnect/events": "npm:1.0.1" "@walletconnect/jsonrpc-http-connection": "npm:1.0.8" @@ -13087,63 +13021,13 @@ __metadata: "@walletconnect/jsonrpc-types": "npm:1.0.4" "@walletconnect/jsonrpc-utils": "npm:1.0.8" "@walletconnect/keyvaluestorage": "npm:1.1.1" - "@walletconnect/logger": "npm:2.1.2" - "@walletconnect/sign-client": "npm:2.21.3" - "@walletconnect/types": "npm:2.21.3" - "@walletconnect/utils": "npm:2.21.3" + "@walletconnect/logger": "npm:3.0.0" + "@walletconnect/sign-client": "npm:2.22.4" + "@walletconnect/types": "npm:2.22.4" + "@walletconnect/utils": "npm:2.22.4" es-toolkit: "npm:1.39.3" events: "npm:3.3.0" - checksum: 10c0/bb62a92dbafa33149a285b434b49b1f0d73237191cb001330afd3b3b02e2182d13b44d39db6d3d5cf693ad4476e4341a30bad09d4ad7be29bb9d8cddc003ea18 - languageName: node - linkType: hard - -"@walletconnect/utils@npm:2.19.2": - version: 2.19.2 - resolution: "@walletconnect/utils@npm:2.19.2" - dependencies: - "@noble/ciphers": "npm:1.2.1" - "@noble/curves": "npm:1.8.1" - "@noble/hashes": "npm:1.7.1" - "@walletconnect/jsonrpc-utils": "npm:1.0.8" - "@walletconnect/keyvaluestorage": "npm:1.1.1" - "@walletconnect/relay-api": "npm:1.0.11" - "@walletconnect/relay-auth": "npm:1.1.0" - "@walletconnect/safe-json": "npm:1.0.2" - "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.19.2" - "@walletconnect/window-getters": "npm:1.0.1" - "@walletconnect/window-metadata": "npm:1.0.1" - bs58: "npm:6.0.0" - detect-browser: "npm:5.3.0" - query-string: "npm:7.1.3" - uint8arrays: "npm:3.1.0" - viem: "npm:2.23.2" - checksum: 10c0/21eca1f5b94bfe90d329285388b9676de6f4f0a60dbf12b68d76448df24ef707b5ee0000a4aa38843baee14d79e2f6a7e15aa371d50eadf96f925ffdd1c36ac1 - languageName: node - linkType: hard - -"@walletconnect/utils@npm:2.20.0": - version: 2.20.0 - resolution: "@walletconnect/utils@npm:2.20.0" - dependencies: - "@noble/ciphers": "npm:1.2.1" - "@noble/curves": "npm:1.8.1" - "@noble/hashes": "npm:1.7.1" - "@walletconnect/jsonrpc-utils": "npm:1.0.8" - "@walletconnect/keyvaluestorage": "npm:1.1.1" - "@walletconnect/relay-api": "npm:1.0.11" - "@walletconnect/relay-auth": "npm:1.1.0" - "@walletconnect/safe-json": "npm:1.0.2" - "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.20.0" - "@walletconnect/window-getters": "npm:1.0.1" - "@walletconnect/window-metadata": "npm:1.0.1" - bs58: "npm:6.0.0" - detect-browser: "npm:5.3.0" - query-string: "npm:7.1.3" - uint8arrays: "npm:3.1.0" - viem: "npm:2.23.2" - checksum: 10c0/d297127fb8a40b8a94a9755133cbde40b3f778e16b2142c152ec17b7ad73a863805fc24e2a96380b79c0cf3b5405f242a1f0087a6c3cf7074313e0b278606b0f + checksum: 10c0/979823c2933bf907ff1664677a589a165c13fb32d0d037355d9f3939a4400a0e12aefe54f54ac5e1eaeb5cdff5e71b9e56e891390d3e247588f311dc65780255 languageName: node linkType: hard @@ -13197,31 +13081,31 @@ __metadata: languageName: node linkType: hard -"@walletconnect/utils@npm:2.21.3": - version: 2.21.3 - resolution: "@walletconnect/utils@npm:2.21.3" +"@walletconnect/utils@npm:2.22.4": + version: 2.22.4 + resolution: "@walletconnect/utils@npm:2.22.4" dependencies: "@msgpack/msgpack": "npm:3.1.2" "@noble/ciphers": "npm:1.3.0" - "@noble/curves": "npm:1.9.2" + "@noble/curves": "npm:1.9.7" "@noble/hashes": "npm:1.8.0" "@scure/base": "npm:1.2.6" "@walletconnect/jsonrpc-utils": "npm:1.0.8" "@walletconnect/keyvaluestorage": "npm:1.1.1" + "@walletconnect/logger": "npm:3.0.0" "@walletconnect/relay-api": "npm:1.0.11" "@walletconnect/relay-auth": "npm:1.1.0" "@walletconnect/safe-json": "npm:1.0.2" "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.21.3" + "@walletconnect/types": "npm:2.22.4" "@walletconnect/window-getters": "npm:1.0.1" "@walletconnect/window-metadata": "npm:1.0.1" blakejs: "npm:1.2.1" bs58: "npm:6.0.0" detect-browser: "npm:5.3.0" - query-string: "npm:7.1.3" + ox: "npm:0.9.3" uint8arrays: "npm:3.1.1" - viem: "npm:2.31.0" - checksum: 10c0/13e67c73b8923bdfd906f302a130f3534675f1174cce3cb79ccb8988772165822d5137c3fc1b6d26a5f894e385e49d1bfd3f693a304788d57a759cffa2335484 + checksum: 10c0/1b29d591bf4473cbb4561bb99e55836d818d71e827c4022075f6c624e9e45118894fa898ead7fa131677f346448f474e10512e40ccbb15c2acaaed90f0fa4e6b languageName: node linkType: hard @@ -13413,12 +13297,12 @@ __metadata: linkType: hard "@whatwg-node/fetch@npm:^0.10.1": - version: 0.10.6 - resolution: "@whatwg-node/fetch@npm:0.10.6" + version: 0.10.11 + resolution: "@whatwg-node/fetch@npm:0.10.11" dependencies: - "@whatwg-node/node-fetch": "npm:^0.7.18" + "@whatwg-node/node-fetch": "npm:^0.8.0" urlpattern-polyfill: "npm:^10.0.0" - checksum: 10c0/a341769cacd25c7b8d01f69c687592d4a790c1d8be1e197fa7d3c2229aa5416df2a05f90931a9986c9695694ef4b3edade9d8487d2d21b9315cba6eec3adbd27 + checksum: 10c0/d64fd5b545313f3d5cd362aa5700de5f6a25684ac7b74d8dd809ac27b67d3fc99cf5e47124dcc6623bbfef55ee87394c423933298feedc13c29aa6061f0cb894 languageName: node linkType: hard @@ -13448,24 +13332,24 @@ __metadata: languageName: node linkType: hard -"@whatwg-node/node-fetch@npm:^0.7.18": - version: 0.7.18 - resolution: "@whatwg-node/node-fetch@npm:0.7.18" +"@whatwg-node/node-fetch@npm:^0.8.0": + version: 0.8.1 + resolution: "@whatwg-node/node-fetch@npm:0.8.1" dependencies: "@fastify/busboy": "npm:^3.1.1" "@whatwg-node/disposablestack": "npm:^0.0.6" - "@whatwg-node/promise-helpers": "npm:^1.3.1" + "@whatwg-node/promise-helpers": "npm:^1.3.2" tslib: "npm:^2.6.3" - checksum: 10c0/2f7daa1b1ac65bb9d90c576bb08fe4216f60ed138d3f4638e99ae2ec0fa1423db25420a3bc23ab84390fa14d7e3235f1d8be706ae9e76e505379c2ee9e251200 + checksum: 10c0/6bfdc2eab750ef1f7fd89acac635c5a2f57e2da9bce537ae80300f3dd804ff4f6c0842490d421671065589f8f165827a1ba9a17043ae28642b6f01ad67e1e04b languageName: node linkType: hard -"@whatwg-node/promise-helpers@npm:^1.0.0, @whatwg-node/promise-helpers@npm:^1.3.1": - version: 1.3.1 - resolution: "@whatwg-node/promise-helpers@npm:1.3.1" +"@whatwg-node/promise-helpers@npm:^1.0.0, @whatwg-node/promise-helpers@npm:^1.3.2": + version: 1.3.2 + resolution: "@whatwg-node/promise-helpers@npm:1.3.2" dependencies: tslib: "npm:^2.6.3" - checksum: 10c0/bb47e71cb588c2bdc45cc78044f8e472b1600d3022f10d59bb70a68bd6a2d2f749f5bbe5858a9b0dccbc93c4c96092acc28e870ace1174d328e14fa8e8db14fa + checksum: 10c0/d20e8d740cfa1f0eac7dce11e8a7a84f1567513a8ff0bd1772724b581a8ca77df3f9600a95047c0d2628335626113fa98367517abd01c1ff49817fccf225a29a languageName: node linkType: hard @@ -13497,18 +13381,6 @@ __metadata: languageName: node linkType: hard -"JSONStream@npm:^1.3.5": - version: 1.3.5 - resolution: "JSONStream@npm:1.3.5" - dependencies: - jsonparse: "npm:^1.2.0" - through: "npm:>=2.2.7 <3" - bin: - JSONStream: ./bin.js - checksum: 10c0/0f54694da32224d57b715385d4a6b668d2117379d1f3223dc758459246cca58fdc4c628b83e8a8883334e454a0a30aa198ede77c788b55537c1844f686a751f2 - languageName: node - linkType: hard - "abbrev@npm:1": version: 1.1.1 resolution: "abbrev@npm:1.1.1" @@ -13543,7 +13415,22 @@ __metadata: languageName: node linkType: hard -"abitype@npm:1.0.8, abitype@npm:^1.0.6, abitype@npm:^1.0.8": +"abitype@npm:1.0.6": + version: 1.0.6 + resolution: "abitype@npm:1.0.6" + peerDependencies: + typescript: ">=5.0.4" + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + checksum: 10c0/30ca97010bbf34b9aaed401858eeb6bc30419f7ff11eb34adcb243522dd56c9d8a9d3d406aa5d4f60a7c263902f5136043005698e3f073ea882a4922d43a2929 + languageName: node + linkType: hard + +"abitype@npm:1.0.8": version: 1.0.8 resolution: "abitype@npm:1.0.8" peerDependencies: @@ -13558,6 +13445,36 @@ __metadata: languageName: node linkType: hard +"abitype@npm:1.1.0": + version: 1.1.0 + resolution: "abitype@npm:1.1.0" + peerDependencies: + typescript: ">=5.0.4" + zod: ^3.22.0 || ^4.0.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + checksum: 10c0/99218d442951c60324fcd96a372c30d71ca8d5434cab62b95d5d80bae89e3024a445a90db323ef1fe4da0d749d86e815ca555a37719b06e6ca03ccad2116c45b + languageName: node + linkType: hard + +"abitype@npm:^1.0.6, abitype@npm:^1.0.9": + version: 1.1.1 + resolution: "abitype@npm:1.1.1" + peerDependencies: + typescript: ">=5.0.4" + zod: ^3.22.0 || ^4.0.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + checksum: 10c0/d52fd8195cb37cdb462ba4d1817dafdba8da403eeab50f144f251748d7458a43308ee29ea46889db2969c91c074780e6d1f00f86acd22dc5772570432ee56b9c + languageName: node + linkType: hard + "abort-controller@npm:^3.0.0": version: 3.0.0 resolution: "abort-controller@npm:3.0.0" @@ -13567,6 +13484,13 @@ __metadata: languageName: node linkType: hard +"abort-error@npm:^1.0.1": + version: 1.0.1 + resolution: "abort-error@npm:1.0.1" + checksum: 10c0/7b071226ca13408b26e994d1b1f6700ac17305a6c5d4588c0b5ded254211424c7eff356c2c3d936ade4d5b72c537270484c653b40cdf6bc4cfc176633befe359 + languageName: node + linkType: hard + "accepts@npm:^2.0.0": version: 2.0.0 resolution: "accepts@npm:2.0.0" @@ -13577,7 +13501,7 @@ __metadata: languageName: node linkType: hard -"accepts@npm:~1.3.5, accepts@npm:~1.3.8": +"accepts@npm:~1.3.8": version: 1.3.8 resolution: "accepts@npm:1.3.8" dependencies: @@ -13605,16 +13529,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.4.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": - version: 8.14.1 - resolution: "acorn@npm:8.14.1" - bin: - acorn: bin/acorn - checksum: 10c0/dbd36c1ed1d2fa3550140000371fcf721578095b18777b85a79df231ca093b08edc6858d75d6e48c73e431c174dcf9214edbd7e6fa5911b93bd8abfa54e47123 - languageName: node - linkType: hard - -"acorn@npm:^8.15.0": +"acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.15.0, acorn@npm:^8.4.1, acorn@npm:^8.9.0": version: 8.15.0 resolution: "acorn@npm:8.15.0" bin: @@ -13654,9 +13569,18 @@ __metadata: linkType: hard "agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": - version: 7.1.3 - resolution: "agent-base@npm:7.1.3" - checksum: 10c0/6192b580c5b1d8fb399b9c62bf8343d76654c2dd62afcb9a52b2cf44a8b6ace1e3b704d3fe3547d91555c857d3df02603341ff2cb961b9cfe2b12f9f3c38ee11 + version: 7.1.4 + resolution: "agent-base@npm:7.1.4" + checksum: 10c0/c2c9ab7599692d594b6a161559ada307b7a624fa4c7b03e3afdb5a5e31cd0e53269115b620fcab024c5ac6a6f37fa5eb2e004f076ad30f5f7e6b8b671f7b35fe + languageName: node + linkType: hard + +"agentkeepalive@npm:^4.5.0": + version: 4.6.0 + resolution: "agentkeepalive@npm:4.6.0" + dependencies: + humanize-ms: "npm:^1.2.1" + checksum: 10c0/235c182432f75046835b05f239708107138a40103deee23b6a08caee5136873709155753b394ec212e49e60e94a378189562cb01347765515cff61b692c69187 languageName: node linkType: hard @@ -13800,11 +13724,11 @@ __metadata: linkType: hard "ansi-escapes@npm:^7.0.0": - version: 7.0.0 - resolution: "ansi-escapes@npm:7.0.0" + version: 7.1.1 + resolution: "ansi-escapes@npm:7.1.1" dependencies: environment: "npm:^1.0.0" - checksum: 10c0/86e51e36fabef18c9c004af0a280573e828900641cea35134a124d2715e0c5a473494ab4ce396614505da77638ae290ff72dd8002d9747d2ee53f5d6bbe336be + checksum: 10c0/6014258af7f606f1d98192c6b8815f83d9f45e43613a985b7e86b176534329c9d75ca3db15710c3e354cede940c729d6906613d5861aa0b151d7d186d8f97f29 languageName: node linkType: hard @@ -13823,9 +13747,9 @@ __metadata: linkType: hard "ansi-regex@npm:^6.0.1": - version: 6.1.0 - resolution: "ansi-regex@npm:6.1.0" - checksum: 10c0/a91daeddd54746338478eef88af3439a7edf30f8e23196e2d6ed182da9add559c601266dbef01c2efa46a958ad6f1f8b176799657616c702b5b02e799e7fd8dc + version: 6.2.2 + resolution: "ansi-regex@npm:6.2.2" + checksum: 10c0/05d4acb1d2f59ab2cf4b794339c7b168890d44dda4bf0ce01152a8da0213aca207802f930442ce8cd22d7a92f44907664aac6508904e75e038fa944d2601b30f languageName: node linkType: hard @@ -13855,13 +13779,13 @@ __metadata: linkType: hard "ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0, ansi-styles@npm:^6.2.1": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + version: 6.2.3 + resolution: "ansi-styles@npm:6.2.3" + checksum: 10c0/23b8a4ce14e18fb854693b95351e286b771d23d8844057ed2e7d083cd3e708376c3323707ec6a24365f7d7eda3ca00327fe04092e29e551499ec4c8b7bfac868 languageName: node linkType: hard -"ansis@npm:^3.16.0, ansis@npm:^3.17.0, ansis@npm:^3.3.2": +"ansis@npm:^3.16.0, ansis@npm:^3.17.0": version: 3.17.0 resolution: "ansis@npm:3.17.0" checksum: 10c0/d8fa94ca7bb91e7e5f8a7d323756aa075facce07c5d02ca883673e128b2873d16f93e0dec782f98f1eeb1f2b3b4b7b60dcf0ad98fb442e75054fe857988cc5cb @@ -13916,9 +13840,9 @@ __metadata: linkType: hard "aproba@npm:^1.0.3 || ^2.0.0": - version: 2.0.0 - resolution: "aproba@npm:2.0.0" - checksum: 10c0/d06e26384a8f6245d8c8896e138c0388824e259a329e0c9f196b4fa533c82502a6fd449586e3604950a0c42921832a458bb3aa0aa9f0ba449cfd4f50fd0d09b5 + version: 2.1.0 + resolution: "aproba@npm:2.1.0" + checksum: 10c0/ec8c1d351bac0717420c737eb062766fb63bde1552900e0f4fdad9eb064c3824fef23d1c416aa5f7a80f21ca682808e902d79b7c9ae756d342b5f1884f36932f languageName: node linkType: hard @@ -14007,21 +13931,7 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8": - version: 3.1.8 - resolution: "array-includes@npm:3.1.8" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - es-object-atoms: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.4" - is-string: "npm:^1.0.7" - checksum: 10c0/5b1004d203e85873b96ddc493f090c9672fd6c80d7a60b798da8a14bff8a670ff95db5aafc9abc14a211943f05220dacf8ea17638ae0af1a6a47b8c0b48ce370 - languageName: node - linkType: hard - -"array-includes@npm:^3.1.9": +"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8, array-includes@npm:^3.1.9": version: 3.1.9 resolution: "array-includes@npm:3.1.9" dependencies: @@ -14065,7 +13975,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.findlastindex@npm:^1.2.5, array.prototype.findlastindex@npm:^1.2.6": +"array.prototype.findlastindex@npm:^1.2.6": version: 1.2.6 resolution: "array.prototype.findlastindex@npm:1.2.6" dependencies: @@ -14080,7 +13990,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2, array.prototype.flat@npm:^1.3.3": +"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.3": version: 1.3.3 resolution: "array.prototype.flat@npm:1.3.3" dependencies: @@ -14169,7 +14079,7 @@ __metadata: languageName: node linkType: hard -"asn1js@npm:^3.0.5": +"asn1js@npm:^3.0.5, asn1js@npm:^3.0.6": version: 3.0.6 resolution: "asn1js@npm:3.0.6" dependencies: @@ -14255,6 +14165,13 @@ __metadata: languageName: node linkType: hard +"async-generator-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-generator-function@npm:1.0.0" + checksum: 10c0/2c50ef856c543ad500d8d8777d347e3c1ba623b93e99c9263ecc5f965c1b12d2a140e2ab6e43c3d0b85366110696f28114649411cbcd10b452a92a2318394186 + languageName: node + linkType: hard + "async-mutex@npm:^0.2.6": version: 0.2.6 resolution: "async-mutex@npm:0.2.6" @@ -14289,7 +14206,7 @@ __metadata: languageName: node linkType: hard -"async@npm:^3.2.3, async@npm:^3.2.4": +"async@npm:^3.2.4, async@npm:^3.2.6": version: 3.2.6 resolution: "async@npm:3.2.6" checksum: 10c0/36484bb15ceddf07078688d95e27076379cc2f87b10c03b6dd8a83e89475a3c8df5848859dd06a4c95af1e4c16fc973de0171a77f18ea00be899aca2a4f85e70 @@ -14327,9 +14244,20 @@ __metadata: linkType: hard "axe-core@npm:^4.10.0": - version: 4.10.3 - resolution: "axe-core@npm:4.10.3" - checksum: 10c0/1b1c24f435b2ffe89d76eca0001cbfff42dbf012ad9bd37398b70b11f0d614281a38a28bc3069e8972e3c90ec929a8937994bd24b0ebcbaab87b8d1e241ab0c7 + version: 4.11.0 + resolution: "axe-core@npm:4.11.0" + checksum: 10c0/7d7020a568a824c303711858c2fcfe56d001d27e46c0c2ff75dc31b436cfddfd4857a301e70536cc9e64829d25338f7fb782102d23497ebdc66801e9900fc895 + languageName: node + linkType: hard + +"axios-retry@npm:^4.5.0": + version: 4.5.0 + resolution: "axios-retry@npm:4.5.0" + dependencies: + is-retry-allowed: "npm:^2.2.0" + peerDependencies: + axios: 0.x || 1.x + checksum: 10c0/574e7b1bf24aad99b560042d232a932d51bfaa29b5a6d4612d748ed799a6f11a5afb2582792492c55d95842200cbdfbe3454027a8c1b9a2d3e895d13c3d03c10 languageName: node linkType: hard @@ -14352,14 +14280,14 @@ __metadata: languageName: node linkType: hard -"axios@npm:^1.1.3, axios@npm:^1.3.1, axios@npm:^1.3.4, axios@npm:^1.4.0, axios@npm:^1.6.7, axios@npm:^1.7.2, axios@npm:^1.7.4, axios@npm:^1.8.1, axios@npm:^1.8.2, axios@npm:^1.8.3": - version: 1.9.0 - resolution: "axios@npm:1.9.0" +"axios@npm:^1.1.3, axios@npm:^1.11.0, axios@npm:^1.12.0, axios@npm:^1.12.2, axios@npm:^1.3.1, axios@npm:^1.3.4, axios@npm:^1.4.0, axios@npm:^1.6.7, axios@npm:^1.7.2, axios@npm:^1.7.4, axios@npm:^1.8.1": + version: 1.13.1 + resolution: "axios@npm:1.13.1" dependencies: follow-redirects: "npm:^1.15.6" - form-data: "npm:^4.0.0" + form-data: "npm:^4.0.4" proxy-from-env: "npm:^1.1.0" - checksum: 10c0/9371a56886c2e43e4ff5647b5c2c3c046ed0a3d13482ef1d0135b994a628c41fbad459796f101c655e62f0c161d03883454474d2e435b2e021b1924d9f24994c + checksum: 10c0/de9c3c6de43d3ee1146d3afe78645f19450cac6a5d7235bef8b8e8eeb705c2e47e2d231dea99cecaec4dae1897c521118ca9413b9d474063c719c4d94c5b9adc languageName: node linkType: hard @@ -14423,39 +14351,39 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.4.10": - version: 0.4.13 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.13" +"babel-plugin-polyfill-corejs2@npm:^0.4.14": + version: 0.4.14 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.14" dependencies: - "@babel/compat-data": "npm:^7.22.6" - "@babel/helper-define-polyfill-provider": "npm:^0.6.4" + "@babel/compat-data": "npm:^7.27.7" + "@babel/helper-define-polyfill-provider": "npm:^0.6.5" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10c0/b4a54561606d388e6f9499f39f03171af4be7f9ce2355e737135e40afa7086cf6790fdd706c2e59f488c8fa1f76123d28783708e07ddc84647dca8ed8fb98e06 + checksum: 10c0/d74cba0600a6508e86d220bde7164eb528755d91be58020e5ea92ea7fbb12c9d8d2c29246525485adfe7f68ae02618ec428f9a589cac6cbedf53cc3972ad7fbe languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.11.0": - version: 0.11.1 - resolution: "babel-plugin-polyfill-corejs3@npm:0.11.1" +"babel-plugin-polyfill-corejs3@npm:^0.13.0": + version: 0.13.0 + resolution: "babel-plugin-polyfill-corejs3@npm:0.13.0" dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.6.3" - core-js-compat: "npm:^3.40.0" + "@babel/helper-define-polyfill-provider": "npm:^0.6.5" + core-js-compat: "npm:^3.43.0" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10c0/025f754b6296d84b20200aff63a3c1acdd85e8c621781f2bd27fe2512d0060526192d02329326947c6b29c27cf475fbcfaaff8c51eab1d2bfc7b79086bb64229 + checksum: 10c0/5d8e228da425edc040d8c868486fd01ba10b0440f841156a30d9f8986f330f723e2ee61553c180929519563ef5b64acce2caac36a5a847f095d708dda5d8206d languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.6.1": - version: 0.6.4 - resolution: "babel-plugin-polyfill-regenerator@npm:0.6.4" +"babel-plugin-polyfill-regenerator@npm:^0.6.5": + version: 0.6.5 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.5" dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.6.4" + "@babel/helper-define-polyfill-provider": "npm:^0.6.5" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10c0/ebaaf9e4e53201c02f496d3f686d815e94177b3e55b35f11223b99c60d197a29f907a2e87bbcccced8b7aff22a807fccc1adaf04722864a8e1862c8845ab830a + checksum: 10c0/63aa8ed716df6a9277c6ab42b887858fa9f57a70cc1d0ae2b91bdf081e45d4502848cba306fb60b02f59f99b32fd02ff4753b373cac48ccdac9b7d19dd56f06d languageName: node linkType: hard @@ -14467,8 +14395,8 @@ __metadata: linkType: hard "babel-preset-current-node-syntax@npm:^1.0.0": - version: 1.1.0 - resolution: "babel-preset-current-node-syntax@npm:1.1.0" + version: 1.2.0 + resolution: "babel-preset-current-node-syntax@npm:1.2.0" dependencies: "@babel/plugin-syntax-async-generators": "npm:^7.8.4" "@babel/plugin-syntax-bigint": "npm:^7.8.3" @@ -14486,8 +14414,8 @@ __metadata: "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/0b838d4412e3322cb4436f246e24e9c00bebcedfd8f00a2f51489db683bd35406bbd55a700759c28d26959c6e03f84dd6a1426f576f440267c1d7a73c5717281 + "@babel/core": ^7.0.0 || ^8.0.0-0 + checksum: 10c0/94a4f81cddf9b051045d08489e4fff7336292016301664c138cfa3d9ffe3fe2ba10a24ad6ae589fd95af1ac72ba0216e1653555c187e694d7b17be0c002bea10 languageName: node linkType: hard @@ -14558,6 +14486,15 @@ __metadata: languageName: node linkType: hard +"baseline-browser-mapping@npm:^2.8.19": + version: 2.8.23 + resolution: "baseline-browser-mapping@npm:2.8.23" + bin: + baseline-browser-mapping: dist/cli.js + checksum: 10c0/5a63c1c241d288e5c79aa32a1cbea335b5af899172161aa9f9701a67c5b9b55ea3b3945a70a842385374627dde1de27504641bc95257d8c2e81f0c593c719121 + languageName: node + linkType: hard + "bcrypt@npm:^5.1.1": version: 5.1.1 resolution: "bcrypt@npm:5.1.1" @@ -14592,9 +14529,9 @@ __metadata: linkType: hard "bignumber.js@npm:^9.0.0, bignumber.js@npm:^9.1.2": - version: 9.3.0 - resolution: "bignumber.js@npm:9.3.0" - checksum: 10c0/f54a79cd6fc98552ac0510c1cd9381650870ae443bdb20ba9b98e3548188d941506ac3c22a9f9c69b2cc60da9be5700e87d3f54d2825310a8b2ae999dfd6d99d + version: 9.3.1 + resolution: "bignumber.js@npm:9.3.1" + checksum: 10c0/61342ba5fe1c10887f0ecf5be02ff6709271481aff48631f86b4d37d55a99b87ce441cfd54df3d16d10ee07ceab7e272fc0be430c657ffafbbbf7b7d631efb75 languageName: node linkType: hard @@ -14643,11 +14580,11 @@ __metadata: linkType: hard "blob-to-it@npm:^2.0.5": - version: 2.0.8 - resolution: "blob-to-it@npm:2.0.8" + version: 2.0.10 + resolution: "blob-to-it@npm:2.0.10" dependencies: browser-readablestream-to-it: "npm:^2.0.0" - checksum: 10c0/e00d74febe3d72061a8b963a4aea8be6aa5f436d7ba60a6862e8541c74d6b0606ddcacded1f3318c080647e68a7ea8c9a84c7b19201801ec90cbdaa554be5814 + checksum: 10c0/9c133ab2dc077a3bc89e61947c5375732fedadd8a417d95073e2029ae2000b3818ac806af897297446a41330a97c1d38d6d320c09bf1980ef5fbc903c3f964dc languageName: node linkType: hard @@ -14674,7 +14611,7 @@ __metadata: languageName: node linkType: hard -"bn.js@npm:^5.1.2, bn.js@npm:^5.2.0, bn.js@npm:^5.2.1": +"bn.js@npm:^5.1.2, bn.js@npm:^5.2.0, bn.js@npm:^5.2.1, bn.js@npm:^5.2.2": version: 5.2.2 resolution: "bn.js@npm:5.2.2" checksum: 10c0/cb97827d476aab1a0194df33cd84624952480d92da46e6b4a19c32964aa01553a4a613502396712704da2ec8f831cf98d02e74ca03398404bd78a037ba93f2ab @@ -14718,10 +14655,21 @@ __metadata: languageName: node linkType: hard +"borsh@npm:^0.7.0": + version: 0.7.0 + resolution: "borsh@npm:0.7.0" + dependencies: + bn.js: "npm:^5.2.0" + bs58: "npm:^4.0.0" + text-encoding-utf-8: "npm:^1.0.2" + checksum: 10c0/513b3e51823d2bf5be77cec27742419d2b0427504825dd7ceb00dedb820f246a4762f04b83d5e3aa39c8e075b3cbaeb7ca3c90bd1cbeecccb4a510575be8c581 + languageName: node + linkType: hard + "bowser@npm:^2.11.0, bowser@npm:^2.9.0": - version: 2.11.0 - resolution: "bowser@npm:2.11.0" - checksum: 10c0/04efeecc7927a9ec33c667fa0965dea19f4ac60b3fea60793c2e6cf06c1dcd2f7ae1dbc656f450c5f50783b1c75cf9dc173ba6f3b7db2feee01f8c4b793e1bd3 + version: 2.12.1 + resolution: "bowser@npm:2.12.1" + checksum: 10c0/017e8cc63ce2dec75037340626e1408f68334dac95f953ba7db33a266c019f1d262346d2be3994f9a12b7e9c02f57c562078719b8c5e8e8febe01053c613ffbc languageName: node linkType: hard @@ -14758,21 +14706,21 @@ __metadata: linkType: hard "brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" + version: 1.1.12 + resolution: "brace-expansion@npm:1.1.12" dependencies: balanced-match: "npm:^1.0.0" concat-map: "npm:0.0.1" - checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 + checksum: 10c0/975fecac2bb7758c062c20d0b3b6288c7cc895219ee25f0a64a9de662dbac981ff0b6e89909c3897c1f84fa353113a721923afdec5f8b2350255b097f12b1f73 languageName: node linkType: hard "brace-expansion@npm:^2.0.1": - version: 2.0.1 - resolution: "brace-expansion@npm:2.0.1" + version: 2.0.2 + resolution: "brace-expansion@npm:2.0.2" dependencies: balanced-match: "npm:^1.0.0" - checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f + checksum: 10c0/6d117a4c793488af86b83172deb6af143e94c17bc53b0b3cec259733923b4ca84679d506ac261f4ba3c7ed37c46018e2ff442f9ce453af8643ecd64f4a54e6cf languageName: node linkType: hard @@ -14807,9 +14755,9 @@ __metadata: linkType: hard "browser-readablestream-to-it@npm:^2.0.0, browser-readablestream-to-it@npm:^2.0.5": - version: 2.0.8 - resolution: "browser-readablestream-to-it@npm:2.0.8" - checksum: 10c0/aa3fbb96a539bd093f0cdd91f7e0d27affb7cc8fbe4a088fcd76c8d0745908ac0ea28757e2dc62cbb5cdd780900b1560bd645cd50786484b5dcc566064f3dac8 + version: 2.0.10 + resolution: "browser-readablestream-to-it@npm:2.0.10" + checksum: 10c0/71764f3df3915d887b5db57fa98eafe3d08843800f5ba7e8a5983ccad79002f9bdc45d8f3c8221bc53b3832cd5606394e6de9a9cbeaed31ee577432de219166a languageName: node linkType: hard @@ -14866,7 +14814,7 @@ __metadata: languageName: node linkType: hard -"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.1.0": +"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.1.1": version: 4.1.1 resolution: "browserify-rsa@npm:4.1.1" dependencies: @@ -14878,20 +14826,19 @@ __metadata: linkType: hard "browserify-sign@npm:^4.2.3": - version: 4.2.3 - resolution: "browserify-sign@npm:4.2.3" + version: 4.2.5 + resolution: "browserify-sign@npm:4.2.5" dependencies: - bn.js: "npm:^5.2.1" - browserify-rsa: "npm:^4.1.0" + bn.js: "npm:^5.2.2" + browserify-rsa: "npm:^4.1.1" create-hash: "npm:^1.2.0" create-hmac: "npm:^1.1.7" - elliptic: "npm:^6.5.5" - hash-base: "npm:~3.0" + elliptic: "npm:^6.6.1" inherits: "npm:^2.0.4" - parse-asn1: "npm:^5.1.7" + parse-asn1: "npm:^5.1.9" readable-stream: "npm:^2.3.8" safe-buffer: "npm:^5.2.1" - checksum: 10c0/30c0eba3f5970a20866a4d3fbba2c5bd1928cd24f47faf995f913f1499214c6f3be14bb4d6ec1ab5c6cafb1eca9cb76ba1c2e1c04ed018370634d4e659c77216 + checksum: 10c0/6192f9696934bbba58932d098face34c2ab9cac09feed826618b86b8c00a897dab7324cd9aa7d6cb1597064f197264ad72fa5418d4d52bf3c8f9b9e0e124655e languageName: node linkType: hard @@ -14904,17 +14851,18 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.24.0, browserslist@npm:^4.24.4": - version: 4.24.5 - resolution: "browserslist@npm:4.24.5" +"browserslist@npm:^4.24.0, browserslist@npm:^4.26.3": + version: 4.27.0 + resolution: "browserslist@npm:4.27.0" dependencies: - caniuse-lite: "npm:^1.0.30001716" - electron-to-chromium: "npm:^1.5.149" - node-releases: "npm:^2.0.19" - update-browserslist-db: "npm:^1.1.3" + baseline-browser-mapping: "npm:^2.8.19" + caniuse-lite: "npm:^1.0.30001751" + electron-to-chromium: "npm:^1.5.238" + node-releases: "npm:^2.0.26" + update-browserslist-db: "npm:^1.1.4" bin: browserslist: cli.js - checksum: 10c0/f4c1ce1a7d8fdfab5e5b88bb6e93d09e8a883c393f86801537a252da0362dbdcde4dbd97b318246c5d84c6607b2f6b47af732c1b000d6a8a881ee024bad29204 + checksum: 10c0/395611e54374da9171cdbe7e3704ab426e0f1d622751392df6d6cbf60c539bf06cf2407e9dd769bc01ee2abca6a14af6509a2e0bbb448ba75a054db6c1840643 languageName: node linkType: hard @@ -14936,7 +14884,7 @@ __metadata: languageName: node linkType: hard -"bs58@npm:^4.0.0": +"bs58@npm:^4.0.0, bs58@npm:^4.0.1": version: 4.0.1 resolution: "bs58@npm:4.0.1" dependencies: @@ -15004,7 +14952,7 @@ __metadata: languageName: node linkType: hard -"buffer@npm:6.0.3, buffer@npm:^6.0.3": +"buffer@npm:6.0.3, buffer@npm:^6.0.3, buffer@npm:~6.0.3": version: 6.0.3 resolution: "buffer@npm:6.0.3" dependencies: @@ -15024,7 +14972,7 @@ __metadata: languageName: node linkType: hard -"bufferutil@npm:^4.0.8": +"bufferutil@npm:^4.0.1, bufferutil@npm:^4.0.8": version: 4.0.9 resolution: "bufferutil@npm:4.0.9" dependencies: @@ -15057,7 +15005,7 @@ __metadata: languageName: node linkType: hard -"busboy@npm:^1.0.0, busboy@npm:^1.6.0": +"busboy@npm:^1.6.0": version: 1.6.0 resolution: "busboy@npm:1.6.0" dependencies: @@ -15222,19 +15170,19 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001716": - version: 1.0.30001717 - resolution: "caniuse-lite@npm:1.0.30001717" - checksum: 10c0/6c0bb1e5182fd578ebe97ee2203250849754a4e17d985839fab527ad27e125a4c4ffce3ece5505217fedf30ea0bbc17ac9f93e9ac525c0389ccba61c6e8345dc +"caniuse-lite@npm:^1.0.30001751": + version: 1.0.30001753 + resolution: "caniuse-lite@npm:1.0.30001753" + checksum: 10c0/730344b6c54769f544f1d4bd7f99a122cd5f6e964e482adbcb18b63cda56e9c40aca1e3ab47c7154098803c9ba3772cca0aba936d1c924e67e8db8345712e5a8 languageName: node linkType: hard "cbor@npm:^10.0.0": - version: 10.0.3 - resolution: "cbor@npm:10.0.3" + version: 10.0.11 + resolution: "cbor@npm:10.0.11" dependencies: nofilter: "npm:^3.0.2" - checksum: 10c0/d1657a24799ab35cb262aef91205431100def90c0200917e42eec4580726880c090d5a0a77620b665248447a36db8cc5ea6b7fd6eac8e083a64098c7179ea2d1 + checksum: 10c0/0cb6fb3d5e98c7af4443200ff107049f6132b5649b8a0e586940ca811e5ab5622bf3d0a36f154f43107acfd9685cc462e6eac77876ef4c060bcec96c71b90d8a languageName: node linkType: hard @@ -15257,11 +15205,11 @@ __metadata: linkType: hard "cborg@npm:^4.0.0": - version: 4.2.10 - resolution: "cborg@npm:4.2.10" + version: 4.2.18 + resolution: "cborg@npm:4.2.18" bin: cborg: lib/bin.js - checksum: 10c0/d74d4439ecc4858556e1209fc2688558987534d1060395769881c4c92b01dcef2ad96e2ef30b142cc74d423c8cbd615d9711eff8ceb392ba58e2e64252a46e27 + checksum: 10c0/c6b842574531734e2fc2c22ab3d8007f3eb8ed4e5335ce79f928381e84acf1ffed493974d4bd5fb2a72869b567991c06f7b7dc84380b0c07c5fc72a0543f1045 languageName: node linkType: hard @@ -15309,15 +15257,15 @@ __metadata: linkType: hard "chai@npm:^5.2.0": - version: 5.2.0 - resolution: "chai@npm:5.2.0" + version: 5.3.3 + resolution: "chai@npm:5.3.3" dependencies: assertion-error: "npm:^2.0.1" check-error: "npm:^2.1.1" deep-eql: "npm:^5.0.1" loupe: "npm:^3.1.0" pathval: "npm:^2.0.0" - checksum: 10c0/dfd1cb719c7cebb051b727672d382a35338af1470065cb12adb01f4ee451bbf528e0e0f9ab2016af5fc1eea4df6e7f4504dc8443f8f00bd8fb87ad32dc516f7d + checksum: 10c0/b360fd4d38861622e5010c2f709736988b05c7f31042305fa3f4e9911f6adb80ccfb4e302068bf8ed10e835c2e2520cba0f5edc13d878b886987e5aa62483f53 languageName: node linkType: hard @@ -15330,7 +15278,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2": +"chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -15347,6 +15295,13 @@ __metadata: languageName: node linkType: hard +"chalk@npm:5.6.2, chalk@npm:^5.0.1, chalk@npm:^5.3.0, chalk@npm:^5.4.1": + version: 5.6.2 + resolution: "chalk@npm:5.6.2" + checksum: 10c0/99a4b0f0e7991796b1e7e3f52dceb9137cae2a9dfc8fc0784a550dc4c558e15ab32ed70b14b21b52beb2679b4892b41a0aa44249bcb996f01e125d58477c6976 + languageName: node + linkType: hard + "chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" @@ -15358,13 +15313,6 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^5.0.1, chalk@npm:^5.3.0, chalk@npm:^5.4.1": - version: 5.4.1 - resolution: "chalk@npm:5.4.1" - checksum: 10c0/b23e88132c702f4855ca6d25cb5538b1114343e41472d5263ee8a37cccfccd9c4216d111e1097c6a27830407a1dc81fecdf2a56f2c63033d4dbbd88c10b0dcef - languageName: node - linkType: hard - "char-regex@npm:^1.0.2": version: 1.0.2 resolution: "char-regex@npm:1.0.2" @@ -15380,13 +15328,13 @@ __metadata: linkType: hard "chardet@npm:^2.1.0": - version: 2.1.0 - resolution: "chardet@npm:2.1.0" - checksum: 10c0/d1b03e47371851ed72741a898281d58f8a9b577aeea6fdfa75a86832898b36c550b3ad057e66d50d774a9cebd9f56c66b6880e4fe75e387794538ba7565b0b6f + version: 2.1.1 + resolution: "chardet@npm:2.1.1" + checksum: 10c0/d8391dd412338442b3de0d3a488aa9327f8bcf74b62b8723d6bd0b85c4084d50b731320e0a7c710edb1d44de75969995d2784b80e4c13b004a6c7a0db4c6e793 languageName: node linkType: hard -"charenc@npm:>= 0.0.1": +"charenc@npm:0.0.2, charenc@npm:>= 0.0.1": version: 0.0.2 resolution: "charenc@npm:0.0.2" checksum: 10c0/a45ec39363a16799d0f9365c8dd0c78e711415113c6f14787a22462ef451f5013efae8a28f1c058f81fc01f2a6a16955f7a5fd0cd56247ce94a45349c89877d8 @@ -15435,16 +15383,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:4.0.1": - version: 4.0.1 - resolution: "chokidar@npm:4.0.1" - dependencies: - readdirp: "npm:^4.0.1" - checksum: 10c0/4bb7a3adc304059810bb6c420c43261a15bb44f610d77c35547addc84faa0374265c3adc67f25d06f363d9a4571962b02679268c40de07676d260de1986efea9 - languageName: node - linkType: hard - -"chokidar@npm:^4.0.0, chokidar@npm:^4.0.3": +"chokidar@npm:4.0.3, chokidar@npm:^4.0.0, chokidar@npm:^4.0.3": version: 4.0.3 resolution: "chokidar@npm:4.0.3" dependencies: @@ -15489,19 +15428,20 @@ __metadata: linkType: hard "ci-info@npm:^4.0.0": - version: 4.2.0 - resolution: "ci-info@npm:4.2.0" - checksum: 10c0/37a2f4b6a213a5cf835890eb0241f0d5b022f6cfefde58a69e9af8e3a0e71e06d6ad7754b0d4efb9cd2613e58a7a33996d71b56b0d04242722e86666f3f3d058 + version: 4.3.1 + resolution: "ci-info@npm:4.3.1" + checksum: 10c0/7dd82000f514d76ddfe7775e4cb0d66e5c638f5fa0e2a3be29557e898da0d32ac04f231217d414d07fb968b1fbc6d980ee17ddde0d2c516f23da9cfff608f6c1 languageName: node linkType: hard "cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": - version: 1.0.6 - resolution: "cipher-base@npm:1.0.6" + version: 1.0.7 + resolution: "cipher-base@npm:1.0.7" dependencies: inherits: "npm:^2.0.4" safe-buffer: "npm:^5.2.1" - checksum: 10c0/f73268e0ee6585800875d9748f2a2377ae7c2c3375cba346f75598ac6f6bc3a25dec56e984a168ced1a862529ffffe615363f750c40349039d96bd30fba0fca8 + to-buffer: "npm:^1.2.2" + checksum: 10c0/53c5046a9d9b60c586479b8f13fde263c3f905e13f11e8e04c7a311ce399c91d9c3ec96642332e0de077d356e1014ee12bba96f74fbaad0de750f49122258836 languageName: node linkType: hard @@ -15714,7 +15654,7 @@ __metadata: languageName: node linkType: hard -"clsx@npm:^1.1.0, clsx@npm:^1.2.1": +"clsx@npm:1.2.1, clsx@npm:^1.1.0, clsx@npm:^1.2.1": version: 1.2.1 resolution: "clsx@npm:1.2.1" checksum: 10c0/34dead8bee24f5e96f6e7937d711978380647e936a22e76380290e35486afd8634966ce300fc4b74a32f3762c7d4c0303f442c3e259f4ce02374eb0c82834f27 @@ -15743,9 +15683,9 @@ __metadata: linkType: hard "collect-v8-coverage@npm:^1.0.0": - version: 1.0.2 - resolution: "collect-v8-coverage@npm:1.0.2" - checksum: 10c0/ed7008e2e8b6852c5483b444a3ae6e976e088d4335a85aa0a9db2861c5f1d31bd2d7ff97a60469b3388deeba661a619753afbe201279fb159b4b9548ab8269a1 + version: 1.0.3 + resolution: "collect-v8-coverage@npm:1.0.3" + checksum: 10c0/bc62ba251bcce5e3354a8f88fa6442bee56e3e612fec08d4dfcf66179b41ea0bf544b0f78c4ebc0f8050871220af95bb5c5578a6aef346feea155640582f09dc languageName: node linkType: hard @@ -15844,6 +15784,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:14.0.0": + version: 14.0.0 + resolution: "commander@npm:14.0.0" + checksum: 10c0/73c4babfa558077868d84522b11ef56834165d472b9e86a634cd4c3ae7fc72d59af6377d8878e06bd570fe8f3161eced3cbe383c38f7093272bb65bd242b595b + languageName: node + linkType: hard + "commander@npm:4.1.1": version: 4.1.1 resolution: "commander@npm:4.1.1" @@ -15858,6 +15805,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^14.0.0": + version: 14.0.2 + resolution: "commander@npm:14.0.2" + checksum: 10c0/245abd1349dbad5414cb6517b7b5c584895c02c4f7836ff5395f301192b8566f9796c82d7bd6c92d07eba8775fe4df86602fca5d86d8d10bcc2aded1e21c2aeb + languageName: node + linkType: hard + "commander@npm:^2.20.0, commander@npm:^2.20.3": version: 2.20.3 resolution: "commander@npm:2.20.3" @@ -15892,6 +15846,17 @@ __metadata: languageName: node linkType: hard +"comment-json@npm:4.4.1": + version: 4.4.1 + resolution: "comment-json@npm:4.4.1" + dependencies: + array-timsort: "npm:^1.0.3" + core-util-is: "npm:^1.0.3" + esprima: "npm:^4.0.1" + checksum: 10c0/be6a197132543a3c286c725af412d582882c1eaf450cb124e4148e7542449f216aa717e7be81989f8b8cfe3e38a6f9bc06d209351b8ea82514cafc8feec11a2d + languageName: node + linkType: hard + "compare-versions@npm:^6.0.0": version: 6.1.1 resolution: "compare-versions@npm:6.1.1" @@ -15899,7 +15864,7 @@ __metadata: languageName: node linkType: hard -"compressible@npm:~2.0.16": +"compressible@npm:~2.0.18": version: 2.0.18 resolution: "compressible@npm:2.0.18" dependencies: @@ -15908,18 +15873,18 @@ __metadata: languageName: node linkType: hard -"compression@npm:1.7.4": - version: 1.7.4 - resolution: "compression@npm:1.7.4" +"compression@npm:1.8.1": + version: 1.8.1 + resolution: "compression@npm:1.8.1" dependencies: - accepts: "npm:~1.3.5" - bytes: "npm:3.0.0" - compressible: "npm:~2.0.16" + bytes: "npm:3.1.2" + compressible: "npm:~2.0.18" debug: "npm:2.6.9" - on-headers: "npm:~1.0.2" - safe-buffer: "npm:5.1.2" + negotiator: "npm:~0.6.4" + on-headers: "npm:~1.1.0" + safe-buffer: "npm:5.2.1" vary: "npm:~1.1.2" - checksum: 10c0/138db836202a406d8a14156a5564fb1700632a76b6e7d1546939472895a5304f2b23c80d7a22bf44c767e87a26e070dbc342ea63bb45ee9c863354fa5556bbbc + checksum: 10c0/85114b0b91c16594dc8c671cd9b05ef5e465066a60e5a4ed8b4551661303559a896ed17bb72c4234c04064e078f6ca86a34b8690349499a43f6fc4b844475da4 languageName: node linkType: hard @@ -15930,33 +15895,32 @@ __metadata: languageName: node linkType: hard -"concat-stream@npm:^1.5.2": - version: 1.6.2 - resolution: "concat-stream@npm:1.6.2" +"concat-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "concat-stream@npm:2.0.0" dependencies: buffer-from: "npm:^1.0.0" inherits: "npm:^2.0.3" - readable-stream: "npm:^2.2.2" + readable-stream: "npm:^3.0.2" typedarray: "npm:^0.0.6" - checksum: 10c0/2e9864e18282946dabbccb212c5c7cec0702745e3671679eb8291812ca7fd12023f7d8cb36493942a62f770ac96a7f90009dc5c82ad69893438371720fa92617 + checksum: 10c0/29565dd9198fe1d8cf57f6cc71527dbc6ad67e12e4ac9401feb389c53042b2dceedf47034cbe702dfc4fd8df3ae7e6bfeeebe732cc4fa2674e484c13f04c219a languageName: node linkType: hard "concurrently@npm:^9.1.2": - version: 9.1.2 - resolution: "concurrently@npm:9.1.2" + version: 9.2.1 + resolution: "concurrently@npm:9.2.1" dependencies: - chalk: "npm:^4.1.2" - lodash: "npm:^4.17.21" - rxjs: "npm:^7.8.1" - shell-quote: "npm:^1.8.1" - supports-color: "npm:^8.1.1" - tree-kill: "npm:^1.2.2" - yargs: "npm:^17.7.2" + chalk: "npm:4.1.2" + rxjs: "npm:7.8.2" + shell-quote: "npm:1.8.3" + supports-color: "npm:8.1.1" + tree-kill: "npm:1.2.2" + yargs: "npm:17.7.2" bin: conc: dist/bin/concurrently.js concurrently: dist/bin/concurrently.js - checksum: 10c0/88e00269366aa885ca2b97fd53b04e7af2b0f31774d991bfc0e88c0de61cdebdf115ddacc9c897fbd1f1b90369014637fa77045a171d072a75693332b36dcc70 + checksum: 10c0/da37f239f82eb7ac24f5ddb56259861e5f1d6da2ade7602b6ea7ad3101b13b5ccec02a77b7001402d1028ff2fdc38eed55644b32853ad5abf30e057002a963aa languageName: node linkType: hard @@ -16102,19 +16066,19 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.34.0, core-js-compat@npm:^3.40.0": - version: 3.42.0 - resolution: "core-js-compat@npm:3.42.0" +"core-js-compat@npm:^3.34.0, core-js-compat@npm:^3.43.0": + version: 3.46.0 + resolution: "core-js-compat@npm:3.46.0" dependencies: - browserslist: "npm:^4.24.4" - checksum: 10c0/0138ce005c13ce642fc38e18e54a52a1c78ca8315ee6e4faad748d2a1b0ad2462ea615285ad4e6cf77afe48e47a868d898e64c70606c1eb1c9e6a9f19ee2b186 + browserslist: "npm:^4.26.3" + checksum: 10c0/d50f8870e14434477acac1f9f52929b6298fd86313386c4105be0d43978708ad10ab3b80b9b54d77b93761dbc5430e3151de0c792dabd117b58c25b551b78e20 languageName: node linkType: hard -"core-js-pure@npm:^3.30.2": - version: 3.42.0 - resolution: "core-js-pure@npm:3.42.0" - checksum: 10c0/e61b097bc83ec01839e7b04cad2e1d0dd8822275ea5a08a23dc7c907d13d2522aa2b09061cec68f0625fe40abb8b888be3b65a37c817eb53a695cf02c24217bf +"core-js-pure@npm:^3.43.0": + version: 3.46.0 + resolution: "core-js-pure@npm:3.46.0" + checksum: 10c0/8cf5016f92af5d23c6440649f46fc793ba0201e1687e696cee0341af8e8c6a2e9958b078f23af3a7440edf1ced63ce23a511f7b1357e4793c1101b907bf6ff87 languageName: node linkType: hard @@ -16222,7 +16186,7 @@ __metadata: languageName: node linkType: hard -"create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": +"create-hmac@npm:^1.1.7": version: 1.1.7 resolution: "create-hmac@npm:1.1.7" dependencies: @@ -16310,7 +16274,7 @@ __metadata: languageName: node linkType: hard -"crossws@npm:^0.3.4": +"crossws@npm:^0.3.5": version: 0.3.5 resolution: "crossws@npm:0.3.5" dependencies: @@ -16319,7 +16283,7 @@ __metadata: languageName: node linkType: hard -"crypt@npm:>= 0.0.1": +"crypt@npm:0.0.2, crypt@npm:>= 0.0.1": version: 0.0.2 resolution: "crypt@npm:0.0.2" checksum: 10c0/adbf263441dd801665d5425f044647533f39f4612544071b1471962209d235042fb703c27eea2795c7c53e1dfc242405173003f83cf4f4761a633d11f9653f18 @@ -16365,12 +16329,12 @@ __metadata: linkType: hard "cssstyle@npm:^4.1.0": - version: 4.3.1 - resolution: "cssstyle@npm:4.3.1" + version: 4.6.0 + resolution: "cssstyle@npm:4.6.0" dependencies: - "@asamuzakjp/css-color": "npm:^3.1.2" + "@asamuzakjp/css-color": "npm:^3.2.0" rrweb-cssom: "npm:^0.8.0" - checksum: 10c0/89d73252d5f9930cf67f5c576de8030a9d960aae4c8bdd42d60464b2f67c8d809601fb7e620b43d4c84e03472016da77528df9a21a21393387ed256610ca0ab4 + checksum: 10c0/71add1b0ffafa1bedbef6855db6189b9523d3320e015a0bf3fbd504760efb9a81e1f1a225228d5fa892ee58e56d06994ca372e7f4e461cda7c4c9985fe075f65 languageName: node linkType: hard @@ -16564,13 +16528,20 @@ __metadata: languageName: node linkType: hard -"dayjs@npm:1.11.13, dayjs@npm:^1.11.11, dayjs@npm:^1.11.12, dayjs@npm:^1.11.13": +"dayjs@npm:1.11.13": version: 1.11.13 resolution: "dayjs@npm:1.11.13" checksum: 10c0/a3caf6ac8363c7dade9d1ee797848ddcf25c1ace68d9fe8678ecf8ba0675825430de5d793672ec87b24a69bf04a1544b176547b2539982275d5542a7955f35b7 languageName: node linkType: hard +"dayjs@npm:^1.11.11, dayjs@npm:^1.11.12, dayjs@npm:^1.11.13": + version: 1.11.19 + resolution: "dayjs@npm:1.11.19" + checksum: 10c0/7d8a6074a343f821f81ea284d700bd34ea6c7abbe8d93bce7aba818948957c1b7f56131702e5e890a5622cdfc05dcebe8aed0b8313bdc6838a594d7846b0b000 + languageName: node + linkType: hard + "death@npm:^1.1.0": version: 1.1.0 resolution: "death@npm:1.1.0" @@ -16587,27 +16558,39 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.7, debug@npm:^4.4.0": - version: 4.4.0 - resolution: "debug@npm:4.4.0" +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.4.0, debug@npm:^4.4.1, debug@npm:^4.4.3": + version: 4.4.3 + resolution: "debug@npm:4.4.3" dependencies: ms: "npm:^2.1.3" peerDependenciesMeta: supports-color: optional: true - checksum: 10c0/db94f1a182bf886f57b4755f85b3a74c39b5114b9377b7ab375dc2cfa3454f09490cc6c30f829df3fc8042bc8b8995f6567ce5cd96f3bc3688bd24027197d9de + checksum: 10c0/d79136ec6c83ecbefd0f6a5593da6a9c91ec4d7ddc4b54c883d6e71ec9accb5f67a1a5e96d00a328196b5b5c86d365e98d8a3a70856aaf16b4e7b1985e67f5a6 languageName: node linkType: hard -"debug@npm:4.3.7, debug@npm:~4.3.1, debug@npm:~4.3.2": - version: 4.3.7 - resolution: "debug@npm:4.3.7" +"debug@npm:4.3.4": + version: 4.3.4 + resolution: "debug@npm:4.3.4" + dependencies: + ms: "npm:2.1.2" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736 + languageName: node + linkType: hard + +"debug@npm:4.4.1": + version: 4.4.1 + resolution: "debug@npm:4.4.1" dependencies: ms: "npm:^2.1.3" peerDependenciesMeta: supports-color: optional: true - checksum: 10c0/1471db19c3b06d485a622d62f65947a19a23fbd0dd73f7fd3eafb697eec5360cde447fb075919987899b1a2096e85d35d4eb5a4de09a57600ac9cf7e6c8e768b + checksum: 10c0/d2b44bc1afd912b49bb7ebb0d50a860dc93a4dd7d946e8de94abc957bb63726b7dd5aa48c18c2386c379ec024c46692e15ed3ed97d481729f929201e671fcd55 languageName: node linkType: hard @@ -16620,15 +16603,15 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.4.1": - version: 4.4.1 - resolution: "debug@npm:4.4.1" +"debug@npm:~4.3.1, debug@npm:~4.3.2": + version: 4.3.7 + resolution: "debug@npm:4.3.7" dependencies: ms: "npm:^2.1.3" peerDependenciesMeta: supports-color: optional: true - checksum: 10c0/d2b44bc1afd912b49bb7ebb0d50a860dc93a4dd7d946e8de94abc957bb63726b7dd5aa48c18c2386c379ec024c46692e15ed3ed97d481729f929201e671fcd55 + checksum: 10c0/1471db19c3b06d485a622d62f65947a19a23fbd0dd73f7fd3eafb697eec5360cde447fb075919987899b1a2096e85d35d4eb5a4de09a57600ac9cf7e6c8e768b languageName: node linkType: hard @@ -16653,14 +16636,7 @@ __metadata: languageName: node linkType: hard -"decimal.js@npm:^10.4.3": - version: 10.5.0 - resolution: "decimal.js@npm:10.5.0" - checksum: 10c0/785c35279df32762143914668df35948920b6c1c259b933e0519a69b7003fc0a5ed2a766b1e1dda02574450c566b21738a45f15e274b47c2ac02072c0d1f3ac3 - languageName: node - linkType: hard - -"decimal.js@npm:^10.6.0": +"decimal.js@npm:^10.4.3, decimal.js@npm:^10.6.0": version: 10.6.0 resolution: "decimal.js@npm:10.6.0" checksum: 10c0/07d69fbcc54167a340d2d97de95f546f9ff1f69d2b45a02fd7a5292412df3cd9eb7e23065e532a318f5474a2e1bccf8392fdf0443ef467f97f3bf8cb0477e5aa @@ -16682,14 +16658,14 @@ __metadata: linkType: hard "dedent@npm:^1.0.0, dedent@npm:^1.6.0": - version: 1.6.0 - resolution: "dedent@npm:1.6.0" + version: 1.7.0 + resolution: "dedent@npm:1.7.0" peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: babel-plugin-macros: optional: true - checksum: 10c0/671b8f5e390dd2a560862c4511dd6d2638e71911486f78cb32116551f8f2aa6fcaf50579ffffb2f866d46b5b80fd72470659ca5760ede8f967619ef7df79e8a5 + checksum: 10c0/c5e8a8beb5072bd5e520cb64b27a82d7ec3c2a63ee5ce47dbc2a05d5b7700cefd77a992a752cd0a8b1d979c1db06b14fb9486e805f3ad6088eda6e07cd9bf2d5 languageName: node linkType: hard @@ -16874,7 +16850,7 @@ __metadata: languageName: node linkType: hard -"destr@npm:^2.0.3, destr@npm:^2.0.5": +"destr@npm:^2.0.5": version: 2.0.5 resolution: "destr@npm:2.0.5" checksum: 10c0/efabffe7312a45ad90d79975376be958c50069f1156b94c181199763a7f971e113bd92227c26b94a169c71ca7dbc13583b7e96e5164743969fc79e1ff153e646 @@ -16903,9 +16879,9 @@ __metadata: linkType: hard "detect-indent@npm:^7.0.1": - version: 7.0.1 - resolution: "detect-indent@npm:7.0.1" - checksum: 10c0/47b6e3e3dda603c386e73b129f3e84844ae59bc2615f5072becf3cc02eab400bed5a4e6379c49d0b18cf630e80c2b07e87e0038b777addbc6ef793ad77dd05bc + version: 7.0.2 + resolution: "detect-indent@npm:7.0.2" + checksum: 10c0/adb1334ca3fe516dc6817aff0a777540b88643ab92fe13a72d0f5d12721ca796ffdd0e5fedb7b45e6e82657156c6ad44f5d5758157f0439532ae7d07b595146b languageName: node linkType: hard @@ -16919,9 +16895,9 @@ __metadata: linkType: hard "detect-libc@npm:^2.0.0": - version: 2.0.4 - resolution: "detect-libc@npm:2.0.4" - checksum: 10c0/c15541f836eba4b1f521e4eecc28eefefdbc10a94d3b8cb4c507689f332cc111babb95deda66f2de050b22122113189986d5190be97d51b5a2b23b938415e67c + version: 2.1.2 + resolution: "detect-libc@npm:2.1.2" + checksum: 10c0/acc675c29a5649fa1fb6e255f993b8ee829e510b6b56b0910666949c80c364738833417d0edb5f90e4e46be17228b0f2b66a010513984e18b15deeeac49369c4 languageName: node linkType: hard @@ -17005,12 +16981,12 @@ __metadata: languageName: node linkType: hard -"docker-compose@npm:1.1.0": - version: 1.1.0 - resolution: "docker-compose@npm:1.1.0" +"docker-compose@npm:1.2.0": + version: 1.2.0 + resolution: "docker-compose@npm:1.2.0" dependencies: yaml: "npm:^2.2.2" - checksum: 10c0/4d3e64c847ed042c106bd85c3380f01b1989b12bcd54342f4a009687485912b6b57db2a9870fe4764eaa54ef984c17b4eeab784c264294609951c781a92ce0bf + checksum: 10c0/0bc4ef187904dba55b76b3450b7b2d65b7ee19afdff0d74ffc6ccb573d7ae63de329f13ad01ffc76ddf702a12060a848287b3ff76477014d5e9b63e0958146dd languageName: node linkType: hard @@ -17074,16 +17050,16 @@ __metadata: linkType: hard "dotenv@npm:^16.4.5, dotenv@npm:^16.4.7": - version: 16.5.0 - resolution: "dotenv@npm:16.5.0" - checksum: 10c0/5bc94c919fbd955bf0ba44d33922a1e93d1078e64a1db5c30faeded1d996e7a83c55332cb8ea4fae5a9ca4d0be44cbceb95c5811e70f9f095298df09d1997dd9 + version: 16.6.1 + resolution: "dotenv@npm:16.6.1" + checksum: 10c0/15ce56608326ea0d1d9414a5c8ee6dcf0fffc79d2c16422b4ac2268e7e2d76ff5a572d37ffe747c377de12005f14b3cc22361e79fc7f1061cce81f77d2c973dc languageName: node linkType: hard "dotenv@npm:^17.2.2": - version: 17.2.2 - resolution: "dotenv@npm:17.2.2" - checksum: 10c0/be66513504590aff6eccb14167625aed9bd42ce80547f4fe5d195860211971a7060949b57108dfaeaf90658f79e40edccd3f233f0a978bff507b5b1565ae162b + version: 17.2.3 + resolution: "dotenv@npm:17.2.3" + checksum: 10c0/c884403209f713214a1b64d4d1defa4934c2aa5b0002f5a670ae298a51e3c3ad3ba79dfee2f8df49f01ae74290fcd9acdb1ab1d09c7bfb42b539036108bb2ba0 languageName: node linkType: hard @@ -17134,14 +17110,14 @@ __metadata: linkType: hard "eciesjs@npm:^0.4.11": - version: 0.4.14 - resolution: "eciesjs@npm:0.4.14" + version: 0.4.16 + resolution: "eciesjs@npm:0.4.16" dependencies: - "@ecies/ciphers": "npm:^0.2.2" - "@noble/ciphers": "npm:^1.0.0" - "@noble/curves": "npm:^1.6.0" - "@noble/hashes": "npm:^1.5.0" - checksum: 10c0/a6f7f829bb097aca1d322c677eb900991070698b0fa658686c88f34104a0b41712aad85c1c2baea14b5f2006beb5c78f17f5ca865818df2c684ca43aa1a8edf7 + "@ecies/ciphers": "npm:^0.2.4" + "@noble/ciphers": "npm:^1.3.0" + "@noble/curves": "npm:^1.9.7" + "@noble/hashes": "npm:^1.8.0" + checksum: 10c0/b4f562f3811722844a0fe25ed7e0fcee755be070b611d918c5d672327c660a675dd9e32cb596c87be05dfdd48dcbef90bb2b855e6e3266f9354505adf9e111e4 languageName: node linkType: hard @@ -17172,14 +17148,14 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.149": - version: 1.5.150 - resolution: "electron-to-chromium@npm:1.5.150" - checksum: 10c0/898c232d5678a1e50f254b93902042e7287c6435ec8adab2a0f35e9f11f343eac901b799babaac92ec455a36f35ac0321847a391470629dd0060a681f850797d +"electron-to-chromium@npm:^1.5.238": + version: 1.5.244 + resolution: "electron-to-chromium@npm:1.5.244" + checksum: 10c0/a3cbc8c9c9415234f97e92724924f943fcb82494b3a2f9ae998954d22496e86f7eaf5e2fceca8aa8be098b0693f508332ec2d3b4b39a42cd2de1fac4d048a19f languageName: node linkType: hard -"elliptic@npm:6.6.1, elliptic@npm:^6.5.3, elliptic@npm:^6.5.5, elliptic@npm:^6.5.7": +"elliptic@npm:6.6.1, elliptic@npm:^6.5.3, elliptic@npm:^6.5.7, elliptic@npm:^6.6.1": version: 6.6.1 resolution: "elliptic@npm:6.6.1" dependencies: @@ -17202,9 +17178,9 @@ __metadata: linkType: hard "emoji-regex@npm:^10.3.0": - version: 10.4.0 - resolution: "emoji-regex@npm:10.4.0" - checksum: 10c0/a3fcedfc58bfcce21a05a5f36a529d81e88d602100145fcca3dc6f795e3c8acc4fc18fe773fbf9b6d6e9371205edb3afa2668ec3473fa2aa7fd47d2a9d46482d + version: 10.6.0 + resolution: "emoji-regex@npm:10.6.0" + checksum: 10c0/1e4aa097bb007301c3b4b1913879ae27327fdc48e93eeefefe3b87e495eb33c5af155300be951b4349ff6ac084f4403dc9eff970acba7c1c572d89396a9a32d7 languageName: node linkType: hard @@ -17253,11 +17229,11 @@ __metadata: linkType: hard "end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.0, end-of-stream@npm:^1.4.1": - version: 1.4.4 - resolution: "end-of-stream@npm:1.4.4" + version: 1.4.5 + resolution: "end-of-stream@npm:1.4.5" dependencies: once: "npm:^1.4.0" - checksum: 10c0/870b423afb2d54bb8d243c63e07c170409d41e20b47eeef0727547aea5740bd6717aca45597a9f2745525667a6b804c1e7bede41f856818faee5806dd9ff3975 + checksum: 10c0/b0701c92a10b89afb1cb45bf54a5292c6f008d744eb4382fa559d54775ff31617d1d7bc3ef617575f552e24fad2c7c1a1835948c66b3f3a4be0a6c1f35c883d8 languageName: node linkType: hard @@ -17282,12 +17258,12 @@ __metadata: linkType: hard "enhanced-resolve@npm:^5.17.1, enhanced-resolve@npm:^5.7.0": - version: 5.18.1 - resolution: "enhanced-resolve@npm:5.18.1" + version: 5.18.3 + resolution: "enhanced-resolve@npm:5.18.3" dependencies: graceful-fs: "npm:^4.2.4" tapable: "npm:^2.2.0" - checksum: 10c0/4cffd9b125225184e2abed9fdf0ed3dbd2224c873b165d0838fd066cde32e0918626cba2f1f4bf6860762f13a7e2364fd89a82b99566be2873d813573ac71846 + checksum: 10c0/d413c23c2d494e4c1c9c9ac7d60b812083dc6d446699ed495e69c920988af0a3c66bf3f8d0e7a45cb1686c2d4c1df9f4e7352d973f5b56fe63d8d711dd0ccc54 languageName: node linkType: hard @@ -17318,9 +17294,9 @@ __metadata: linkType: hard "entities@npm:^6.0.0": - version: 6.0.0 - resolution: "entities@npm:6.0.0" - checksum: 10c0/b82a7bd5de282860f3c36a91e815e41e874fd036c83956a568b82729678492eb088359d6f7e0a4f5c00776427263fcba04959b8340fefa430c39b9bce770427e + version: 6.0.1 + resolution: "entities@npm:6.0.1" + checksum: 10c0/ed836ddac5acb34341094eb495185d527bd70e8632b6c0d59548cbfa23defdbae70b96f9a405c82904efa421230b5b3fd2283752447d737beffd3f3e6ee74414 languageName: node linkType: hard @@ -17353,74 +17329,15 @@ __metadata: linkType: hard "error-ex@npm:^1.3.1": - version: 1.3.2 - resolution: "error-ex@npm:1.3.2" + version: 1.3.4 + resolution: "error-ex@npm:1.3.4" dependencies: is-arrayish: "npm:^0.2.1" - checksum: 10c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce - languageName: node - linkType: hard - -"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9": - version: 1.23.9 - resolution: "es-abstract@npm:1.23.9" - dependencies: - array-buffer-byte-length: "npm:^1.0.2" - arraybuffer.prototype.slice: "npm:^1.0.4" - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - data-view-buffer: "npm:^1.0.2" - data-view-byte-length: "npm:^1.0.2" - data-view-byte-offset: "npm:^1.0.1" - es-define-property: "npm:^1.0.1" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - es-set-tostringtag: "npm:^2.1.0" - es-to-primitive: "npm:^1.3.0" - function.prototype.name: "npm:^1.1.8" - get-intrinsic: "npm:^1.2.7" - get-proto: "npm:^1.0.0" - get-symbol-description: "npm:^1.1.0" - globalthis: "npm:^1.0.4" - gopd: "npm:^1.2.0" - has-property-descriptors: "npm:^1.0.2" - has-proto: "npm:^1.2.0" - has-symbols: "npm:^1.1.0" - hasown: "npm:^2.0.2" - internal-slot: "npm:^1.1.0" - is-array-buffer: "npm:^3.0.5" - is-callable: "npm:^1.2.7" - is-data-view: "npm:^1.0.2" - is-regex: "npm:^1.2.1" - is-shared-array-buffer: "npm:^1.0.4" - is-string: "npm:^1.1.1" - is-typed-array: "npm:^1.1.15" - is-weakref: "npm:^1.1.0" - math-intrinsics: "npm:^1.1.0" - object-inspect: "npm:^1.13.3" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.7" - own-keys: "npm:^1.0.1" - regexp.prototype.flags: "npm:^1.5.3" - safe-array-concat: "npm:^1.1.3" - safe-push-apply: "npm:^1.0.0" - safe-regex-test: "npm:^1.1.0" - set-proto: "npm:^1.0.0" - string.prototype.trim: "npm:^1.2.10" - string.prototype.trimend: "npm:^1.0.9" - string.prototype.trimstart: "npm:^1.0.8" - typed-array-buffer: "npm:^1.0.3" - typed-array-byte-length: "npm:^1.0.3" - typed-array-byte-offset: "npm:^1.0.4" - typed-array-length: "npm:^1.0.7" - unbox-primitive: "npm:^1.1.0" - which-typed-array: "npm:^1.1.18" - checksum: 10c0/1de229c9e08fe13c17fe5abaec8221545dfcd57e51f64909599a6ae896df84b8fd2f7d16c60cb00d7bf495b9298ca3581aded19939d4b7276854a4b066f8422b + checksum: 10c0/b9e34ff4778b8f3b31a8377e1c654456f4c41aeaa3d10a1138c3b7635d8b7b2e03eb2475d46d8ae055c1f180a1063e100bffabf64ea7e7388b37735df5328664 languageName: node linkType: hard -"es-abstract@npm:^1.24.0": +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0": version: 1.24.0 resolution: "es-abstract@npm:1.24.0" dependencies: @@ -17609,34 +17526,35 @@ __metadata: linkType: hard "esbuild@npm:^0.25.0": - version: 0.25.4 - resolution: "esbuild@npm:0.25.4" - dependencies: - "@esbuild/aix-ppc64": "npm:0.25.4" - "@esbuild/android-arm": "npm:0.25.4" - "@esbuild/android-arm64": "npm:0.25.4" - "@esbuild/android-x64": "npm:0.25.4" - "@esbuild/darwin-arm64": "npm:0.25.4" - "@esbuild/darwin-x64": "npm:0.25.4" - "@esbuild/freebsd-arm64": "npm:0.25.4" - "@esbuild/freebsd-x64": "npm:0.25.4" - "@esbuild/linux-arm": "npm:0.25.4" - "@esbuild/linux-arm64": "npm:0.25.4" - "@esbuild/linux-ia32": "npm:0.25.4" - "@esbuild/linux-loong64": "npm:0.25.4" - "@esbuild/linux-mips64el": "npm:0.25.4" - "@esbuild/linux-ppc64": "npm:0.25.4" - "@esbuild/linux-riscv64": "npm:0.25.4" - "@esbuild/linux-s390x": "npm:0.25.4" - "@esbuild/linux-x64": "npm:0.25.4" - "@esbuild/netbsd-arm64": "npm:0.25.4" - "@esbuild/netbsd-x64": "npm:0.25.4" - "@esbuild/openbsd-arm64": "npm:0.25.4" - "@esbuild/openbsd-x64": "npm:0.25.4" - "@esbuild/sunos-x64": "npm:0.25.4" - "@esbuild/win32-arm64": "npm:0.25.4" - "@esbuild/win32-ia32": "npm:0.25.4" - "@esbuild/win32-x64": "npm:0.25.4" + version: 0.25.12 + resolution: "esbuild@npm:0.25.12" + dependencies: + "@esbuild/aix-ppc64": "npm:0.25.12" + "@esbuild/android-arm": "npm:0.25.12" + "@esbuild/android-arm64": "npm:0.25.12" + "@esbuild/android-x64": "npm:0.25.12" + "@esbuild/darwin-arm64": "npm:0.25.12" + "@esbuild/darwin-x64": "npm:0.25.12" + "@esbuild/freebsd-arm64": "npm:0.25.12" + "@esbuild/freebsd-x64": "npm:0.25.12" + "@esbuild/linux-arm": "npm:0.25.12" + "@esbuild/linux-arm64": "npm:0.25.12" + "@esbuild/linux-ia32": "npm:0.25.12" + "@esbuild/linux-loong64": "npm:0.25.12" + "@esbuild/linux-mips64el": "npm:0.25.12" + "@esbuild/linux-ppc64": "npm:0.25.12" + "@esbuild/linux-riscv64": "npm:0.25.12" + "@esbuild/linux-s390x": "npm:0.25.12" + "@esbuild/linux-x64": "npm:0.25.12" + "@esbuild/netbsd-arm64": "npm:0.25.12" + "@esbuild/netbsd-x64": "npm:0.25.12" + "@esbuild/openbsd-arm64": "npm:0.25.12" + "@esbuild/openbsd-x64": "npm:0.25.12" + "@esbuild/openharmony-arm64": "npm:0.25.12" + "@esbuild/sunos-x64": "npm:0.25.12" + "@esbuild/win32-arm64": "npm:0.25.12" + "@esbuild/win32-ia32": "npm:0.25.12" + "@esbuild/win32-x64": "npm:0.25.12" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -17680,6 +17598,8 @@ __metadata: optional: true "@esbuild/openbsd-x64": optional: true + "@esbuild/openharmony-arm64": + optional: true "@esbuild/sunos-x64": optional: true "@esbuild/win32-arm64": @@ -17690,7 +17610,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 10c0/db9f51248f0560bc46ab219461d338047617f6caf373c95f643b204760bdfa10c95b48cfde948949f7e509599ae4ab61c3f112092a3534936c6abfb800c565b0 + checksum: 10c0/c205357531423220a9de8e1e6c6514242bc9b1666e762cd67ccdf8fdfdc3f1d0bd76f8d9383958b97ad4c953efdb7b6e8c1f9ca5951cd2b7c5235e8755b34a6b languageName: node linkType: hard @@ -17748,18 +17668,7 @@ __metadata: languageName: node linkType: hard -"eslint-config-prettier@npm:^10.1.5": - version: 10.1.5 - resolution: "eslint-config-prettier@npm:10.1.5" - peerDependencies: - eslint: ">=7.0.0" - bin: - eslint-config-prettier: bin/cli.js - checksum: 10c0/5486255428e4577e8064b40f27db299faf7312b8e43d7b4bc913a6426e6c0f5950cd519cad81ae24e9aecb4002c502bc665c02e3b52efde57af2debcf27dd6e0 - languageName: node - linkType: hard - -"eslint-config-prettier@npm:^10.1.8": +"eslint-config-prettier@npm:^10.1.5, eslint-config-prettier@npm:^10.1.8": version: 10.1.8 resolution: "eslint-config-prettier@npm:10.1.8" peerDependencies: @@ -17771,13 +17680,13 @@ __metadata: linkType: hard "eslint-config-prettier@npm:^9.1.0": - version: 9.1.0 - resolution: "eslint-config-prettier@npm:9.1.0" + version: 9.1.2 + resolution: "eslint-config-prettier@npm:9.1.2" peerDependencies: eslint: ">=7.0.0" bin: eslint-config-prettier: bin/cli.js - checksum: 10c0/6d332694b36bc9ac6fdb18d3ca2f6ac42afa2ad61f0493e89226950a7091e38981b66bac2b47ba39d15b73fff2cd32c78b850a9cf9eed9ca9a96bfb2f3a2f10d + checksum: 10c0/d2e9dc913b1677764a4732433d83d258f40820458c65d0274cb9e3eaf6559b39f2136446f310c05abed065a4b3c2e901807ccf583dff76c6227eaebf4132c39a languageName: node linkType: hard @@ -17888,18 +17797,6 @@ __metadata: languageName: node linkType: hard -"eslint-module-utils@npm:^2.12.0": - version: 2.12.0 - resolution: "eslint-module-utils@npm:2.12.0" - dependencies: - debug: "npm:^3.2.7" - peerDependenciesMeta: - eslint: - optional: true - checksum: 10c0/4d8b46dcd525d71276f9be9ffac1d2be61c9d54cc53c992e6333cf957840dee09381842b1acbbb15fc6b255ebab99cd481c5007ab438e5455a14abe1a0468558 - languageName: node - linkType: hard - "eslint-module-utils@npm:^2.12.1": version: 2.12.1 resolution: "eslint-module-utils@npm:2.12.1" @@ -17938,36 +17835,7 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-import@npm:^2.25.3, eslint-plugin-import@npm:^2.29.0, eslint-plugin-import@npm:^2.29.1, eslint-plugin-import@npm:^2.31.0": - version: 2.31.0 - resolution: "eslint-plugin-import@npm:2.31.0" - dependencies: - "@rtsao/scc": "npm:^1.1.0" - array-includes: "npm:^3.1.8" - array.prototype.findlastindex: "npm:^1.2.5" - array.prototype.flat: "npm:^1.3.2" - array.prototype.flatmap: "npm:^1.3.2" - debug: "npm:^3.2.7" - doctrine: "npm:^2.1.0" - eslint-import-resolver-node: "npm:^0.3.9" - eslint-module-utils: "npm:^2.12.0" - hasown: "npm:^2.0.2" - is-core-module: "npm:^2.15.1" - is-glob: "npm:^4.0.3" - minimatch: "npm:^3.1.2" - object.fromentries: "npm:^2.0.8" - object.groupby: "npm:^1.0.3" - object.values: "npm:^1.2.0" - semver: "npm:^6.3.1" - string.prototype.trimend: "npm:^1.0.8" - tsconfig-paths: "npm:^3.15.0" - peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - checksum: 10c0/e21d116ddd1900e091ad120b3eb68c5dd5437fe2c930f1211781cd38b246f090a6b74d5f3800b8255a0ed29782591521ad44eb21c5534960a8f1fb4040fd913a - languageName: node - linkType: hard - -"eslint-plugin-import@npm:^2.32.0": +"eslint-plugin-import@npm:^2.25.3, eslint-plugin-import@npm:^2.29.0, eslint-plugin-import@npm:^2.29.1, eslint-plugin-import@npm:^2.31.0, eslint-plugin-import@npm:^2.32.0": version: 2.32.0 resolution: "eslint-plugin-import@npm:2.32.0" dependencies: @@ -18071,67 +17939,7 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-prettier@npm:^5.2.1": - version: 5.4.0 - resolution: "eslint-plugin-prettier@npm:5.4.0" - dependencies: - prettier-linter-helpers: "npm:^1.0.0" - synckit: "npm:^0.11.0" - peerDependencies: - "@types/eslint": ">=8.0.0" - eslint: ">=8.0.0" - eslint-config-prettier: ">= 7.0.0 <10.0.0 || >=10.1.0" - prettier: ">=3.0.0" - peerDependenciesMeta: - "@types/eslint": - optional: true - eslint-config-prettier: - optional: true - checksum: 10c0/50718d16266dfbe6909697f9d7c9188d2664f5be50fa1de4decc0c8236565570823fdf5973f89cd51254af5551b6160650e092716002a62aaa0f0b2c18e8fc3e - languageName: node - linkType: hard - -"eslint-plugin-prettier@npm:^5.4.0": - version: 5.4.1 - resolution: "eslint-plugin-prettier@npm:5.4.1" - dependencies: - prettier-linter-helpers: "npm:^1.0.0" - synckit: "npm:^0.11.7" - peerDependencies: - "@types/eslint": ">=8.0.0" - eslint: ">=8.0.0" - eslint-config-prettier: ">= 7.0.0 <10.0.0 || >=10.1.0" - prettier: ">=3.0.0" - peerDependenciesMeta: - "@types/eslint": - optional: true - eslint-config-prettier: - optional: true - checksum: 10c0/bdd9e9473bf3f995521558eb5e2ee70dd4f06cb8b9a6192523cfed76511924fad31ec9af9807cd99f693dc59085e0a1db8a1d3ccc283e98ab30eb32cc7469649 - languageName: node - linkType: hard - -"eslint-plugin-prettier@npm:^5.5.1": - version: 5.5.1 - resolution: "eslint-plugin-prettier@npm:5.5.1" - dependencies: - prettier-linter-helpers: "npm:^1.0.0" - synckit: "npm:^0.11.7" - peerDependencies: - "@types/eslint": ">=8.0.0" - eslint: ">=8.0.0" - eslint-config-prettier: ">= 7.0.0 <10.0.0 || >=10.1.0" - prettier: ">=3.0.0" - peerDependenciesMeta: - "@types/eslint": - optional: true - eslint-config-prettier: - optional: true - checksum: 10c0/6ed93faa7d885af2a987d732f7e716e7aaba55e2da2b091e1b16bacf68425bffe91d784803597bd3f3e6201499fabb89ae28a51ac3986659a46e55e729ed2d55 - languageName: node - linkType: hard - -"eslint-plugin-prettier@npm:^5.5.4": +"eslint-plugin-prettier@npm:^5.2.1, eslint-plugin-prettier@npm:^5.4.0, eslint-plugin-prettier@npm:^5.5.1, eslint-plugin-prettier@npm:^5.5.4": version: 5.5.4 resolution: "eslint-plugin-prettier@npm:5.5.4" dependencies: @@ -18170,11 +17978,11 @@ __metadata: linkType: hard "eslint-plugin-react-refresh@npm:^0.4.11": - version: 0.4.20 - resolution: "eslint-plugin-react-refresh@npm:0.4.20" + version: 0.4.24 + resolution: "eslint-plugin-react-refresh@npm:0.4.24" peerDependencies: eslint: ">=8.40" - checksum: 10c0/2ccf4ba28f1dcbcb9e773e46eae1e61e568bba69281a700eb26fd762152e4e90a78c991f9c8173342a7cd2a82f3f52fedb40a1e81360cef9c40ea5b814fa3613 + checksum: 10c0/7471a25663cdec2886b5aec53cff6319475a6704616f96db4eef7ada3cba1236abeb71b4c2db6396e48a3a8a3a416a0266b2eac06bb6ef77d8b5674604ece7fb languageName: node linkType: hard @@ -18301,16 +18109,6 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^8.3.0": - version: 8.3.0 - resolution: "eslint-scope@npm:8.3.0" - dependencies: - esrecurse: "npm:^4.3.0" - estraverse: "npm:^5.2.0" - checksum: 10c0/23bf54345573201fdf06d29efa345ab508b355492f6c6cc9e2b9f6d02b896f369b6dd5315205be94b8853809776c4d13353b85c6b531997b164ff6c3328ecf5b - languageName: node - linkType: hard - "eslint-scope@npm:^8.4.0": version: 8.4.0 resolution: "eslint-scope@npm:8.4.0" @@ -18331,14 +18129,7 @@ __metadata: "eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" - checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^4.2.0": - version: 4.2.0 - resolution: "eslint-visitor-keys@npm:4.2.0" - checksum: 10c0/2ed81c663b147ca6f578312919483eb040295bbab759e5a371953456c636c5b49a559883e2677112453728d66293c0a4c90ab11cab3428cf02a0236d2e738269 + checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 languageName: node linkType: hard @@ -18397,123 +18188,22 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^9.27.0": - version: 9.28.0 - resolution: "eslint@npm:9.28.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.12.1" - "@eslint/config-array": "npm:^0.20.0" - "@eslint/config-helpers": "npm:^0.2.1" - "@eslint/core": "npm:^0.14.0" - "@eslint/eslintrc": "npm:^3.3.1" - "@eslint/js": "npm:9.28.0" - "@eslint/plugin-kit": "npm:^0.3.1" - "@humanfs/node": "npm:^0.16.6" - "@humanwhocodes/module-importer": "npm:^1.0.1" - "@humanwhocodes/retry": "npm:^0.4.2" - "@types/estree": "npm:^1.0.6" - "@types/json-schema": "npm:^7.0.15" - ajv: "npm:^6.12.4" - chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.6" - debug: "npm:^4.3.2" - escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^8.3.0" - eslint-visitor-keys: "npm:^4.2.0" - espree: "npm:^10.3.0" - esquery: "npm:^1.5.0" - esutils: "npm:^2.0.2" - fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^8.0.0" - find-up: "npm:^5.0.0" - glob-parent: "npm:^6.0.2" - ignore: "npm:^5.2.0" - imurmurhash: "npm:^0.1.4" - is-glob: "npm:^4.0.0" - json-stable-stringify-without-jsonify: "npm:^1.0.1" - lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.1.2" - natural-compare: "npm:^1.4.0" - optionator: "npm:^0.9.3" - peerDependencies: - jiti: "*" - peerDependenciesMeta: - jiti: - optional: true - bin: - eslint: bin/eslint.js - checksum: 10c0/513ea7e69d88a0905d4ed35cef3a8f31ebce7ca9f2cdbda3474495c63ad6831d52357aad65094be7a144d6e51850980ced7d25efb807e8ab06a427241f7cd730 - languageName: node - linkType: hard - -"eslint@npm:^9.30.1": - version: 9.30.1 - resolution: "eslint@npm:9.30.1" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.12.1" - "@eslint/config-array": "npm:^0.21.0" - "@eslint/config-helpers": "npm:^0.3.0" - "@eslint/core": "npm:^0.14.0" - "@eslint/eslintrc": "npm:^3.3.1" - "@eslint/js": "npm:9.30.1" - "@eslint/plugin-kit": "npm:^0.3.1" - "@humanfs/node": "npm:^0.16.6" - "@humanwhocodes/module-importer": "npm:^1.0.1" - "@humanwhocodes/retry": "npm:^0.4.2" - "@types/estree": "npm:^1.0.6" - "@types/json-schema": "npm:^7.0.15" - ajv: "npm:^6.12.4" - chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.6" - debug: "npm:^4.3.2" - escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^8.4.0" - eslint-visitor-keys: "npm:^4.2.1" - espree: "npm:^10.4.0" - esquery: "npm:^1.5.0" - esutils: "npm:^2.0.2" - fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^8.0.0" - find-up: "npm:^5.0.0" - glob-parent: "npm:^6.0.2" - ignore: "npm:^5.2.0" - imurmurhash: "npm:^0.1.4" - is-glob: "npm:^4.0.0" - json-stable-stringify-without-jsonify: "npm:^1.0.1" - lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.1.2" - natural-compare: "npm:^1.4.0" - optionator: "npm:^0.9.3" - peerDependencies: - jiti: "*" - peerDependenciesMeta: - jiti: - optional: true - bin: - eslint: bin/eslint.js - checksum: 10c0/5a5867078e03ea56a1b6d1ee1548659abc38a6d5136c7ef94e21c5dbeb28e3ed50b15d2e0da25fce85600f6cf7ea7715eae650c41e8ae826c34490e9ec73d5d6 - languageName: node - linkType: hard - -"eslint@npm:^9.33.0": - version: 9.33.0 - resolution: "eslint@npm:9.33.0" +"eslint@npm:^9.27.0, eslint@npm:^9.30.1, eslint@npm:^9.33.0": + version: 9.39.0 + resolution: "eslint@npm:9.39.0" dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/eslint-utils": "npm:^4.8.0" "@eslint-community/regexpp": "npm:^4.12.1" - "@eslint/config-array": "npm:^0.21.0" - "@eslint/config-helpers": "npm:^0.3.1" - "@eslint/core": "npm:^0.15.2" + "@eslint/config-array": "npm:^0.21.1" + "@eslint/config-helpers": "npm:^0.4.2" + "@eslint/core": "npm:^0.17.0" "@eslint/eslintrc": "npm:^3.3.1" - "@eslint/js": "npm:9.33.0" - "@eslint/plugin-kit": "npm:^0.3.5" + "@eslint/js": "npm:9.39.0" + "@eslint/plugin-kit": "npm:^0.4.1" "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" "@humanwhocodes/retry": "npm:^0.4.2" "@types/estree": "npm:^1.0.6" - "@types/json-schema": "npm:^7.0.15" ajv: "npm:^6.12.4" chalk: "npm:^4.0.0" cross-spawn: "npm:^7.0.6" @@ -18543,22 +18233,11 @@ __metadata: optional: true bin: eslint: bin/eslint.js - checksum: 10c0/1e1f60d2b62d9d65553e9af916a8dccf00eeedd982103f35bf58c205803907cb1fda73ef595178d47384ea80d8624a182b63682a6b15d8387e9a5d86904a2a2d - languageName: node - linkType: hard - -"espree@npm:^10.0.1, espree@npm:^10.3.0": - version: 10.3.0 - resolution: "espree@npm:10.3.0" - dependencies: - acorn: "npm:^8.14.0" - acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^4.2.0" - checksum: 10c0/272beeaca70d0a1a047d61baff64db04664a33d7cfb5d144f84bc8a5c6194c6c8ebe9cc594093ca53add88baa23e59b01e69e8a0160ab32eac570482e165c462 + checksum: 10c0/4035f7a3d01b3a6026d0ade899713286ed9514e5b65afe5eb671b66834a4c211769de18d1329dadb4e0bb487ea61e6a5ba0905c2b92144b8b9a2216c1ccca3e8 languageName: node linkType: hard -"espree@npm:^10.4.0": +"espree@npm:^10.0.1, espree@npm:^10.4.0": version: 10.4.0 resolution: "espree@npm:10.4.0" dependencies: @@ -18821,7 +18500,7 @@ __metadata: languageName: node linkType: hard -"ethers@npm:^6.15.0, ethers@npm:~6.15.0": +"ethers@npm:^6.14.0, ethers@npm:^6.15.0, ethers@npm:^6.8.1, ethers@npm:~6.15.0": version: 6.15.0 resolution: "ethers@npm:6.15.0" dependencies: @@ -18836,21 +18515,6 @@ __metadata: languageName: node linkType: hard -"ethers@npm:^6.7.0, ethers@npm:^6.8.1": - version: 6.14.0 - resolution: "ethers@npm:6.14.0" - dependencies: - "@adraffy/ens-normalize": "npm:1.10.1" - "@noble/curves": "npm:1.2.0" - "@noble/hashes": "npm:1.3.2" - "@types/node": "npm:22.7.5" - aes-js: "npm:4.0.0-beta.5" - tslib: "npm:2.7.0" - ws: "npm:8.17.1" - checksum: 10c0/7da443719a21c0b071dbd7d47e50faa8fcacc746e2b5487a394992215457903b1d187279e7134b48414d2626d0dbbf58b20c3bb8d246c359aa0a7453b608d582 - languageName: node - linkType: hard - "ethjs-unit@npm:0.1.6": version: 0.1.6 resolution: "ethjs-unit@npm:0.1.6" @@ -18949,9 +18613,9 @@ __metadata: linkType: hard "expect-type@npm:^1.2.1": - version: 1.2.1 - resolution: "expect-type@npm:1.2.1" - checksum: 10c0/b775c9adab3c190dd0d398c722531726cdd6022849b4adba19dceab58dda7e000a7c6c872408cd73d665baa20d381eca36af4f7b393a4ba60dd10232d1fb8898 + version: 1.2.2 + resolution: "expect-type@npm:1.2.2" + checksum: 10c0/6019019566063bbc7a690d9281d920b1a91284a4a093c2d55d71ffade5ac890cf37a51e1da4602546c4b56569d2ad2fc175a2ccee77d1ae06cb3af91ef84f44b languageName: node linkType: hard @@ -18969,18 +18633,18 @@ __metadata: linkType: hard "exponential-backoff@npm:^3.1.1": - version: 3.1.2 - resolution: "exponential-backoff@npm:3.1.2" - checksum: 10c0/d9d3e1eafa21b78464297df91f1776f7fbaa3d5e3f7f0995648ca5b89c069d17055033817348d9f4a43d1c20b0eab84f75af6991751e839df53e4dfd6f22e844 + version: 3.1.3 + resolution: "exponential-backoff@npm:3.1.3" + checksum: 10c0/77e3ae682b7b1f4972f563c6dbcd2b0d54ac679e62d5d32f3e5085feba20483cf28bd505543f520e287a56d4d55a28d7874299941faf637e779a1aa5994d1267 languageName: node linkType: hard "express-rate-limit@npm:^7.3.0": - version: 7.5.0 - resolution: "express-rate-limit@npm:7.5.0" + version: 7.5.1 + resolution: "express-rate-limit@npm:7.5.1" peerDependencies: - express: ^4.11 || 5 || ^5.0.0-beta.1 - checksum: 10c0/3e96afa05b4f577395688ede37e0cb19901f20c350b32575fb076f3d25176209fb88d3648151755c232aaf304147c58531f070757978f376e2f08326449299fd + express: ">= 4.11" + checksum: 10c0/b07de84d700a2c07c4bf2f040e7558ed5a1f660f03ed5f30bf8ff7b51e98ba7a85215640e70fc48cbbb9151066ea51239d9a1b41febc9b84d98c7915b0186161 languageName: node linkType: hard @@ -19143,9 +18807,9 @@ __metadata: linkType: hard "fast-equals@npm:^5.0.1": - version: 5.2.2 - resolution: "fast-equals@npm:5.2.2" - checksum: 10c0/2bfeac6317a8959a00e2134749323557e5df6dea3af24e4457297733eace8ce4313fcbca2cf4532f3a6792607461e80442cd8d3af148d5c2e4e98ad996d6e5b5 + version: 5.3.2 + resolution: "fast-equals@npm:5.3.2" + checksum: 10c0/babadb98fb93c693ee3c8eecbc980ed52fa7be7508eca9b68d8c899bc48e2e47af6d30160187358f7987e54440b6fd21ecd3c6e48ebeb15e1875d6a2ac7e1421 languageName: node linkType: hard @@ -19201,7 +18865,7 @@ __metadata: languageName: node linkType: hard -"fast-redact@npm:^3.0.0, fast-redact@npm:^3.1.1": +"fast-redact@npm:^3.0.0": version: 3.5.0 resolution: "fast-redact@npm:3.5.0" checksum: 10c0/7e2ce4aad6e7535e0775bf12bd3e4f2e53d8051d8b630e0fa9e67f68cb0b0e6070d2f7a94b1d0522ef07e32f7c7cda5755e2b677a6538f1e9070ca053c42343a @@ -19215,10 +18879,17 @@ __metadata: languageName: node linkType: hard +"fast-stable-stringify@npm:^1.0.0": + version: 1.0.0 + resolution: "fast-stable-stringify@npm:1.0.0" + checksum: 10c0/1d773440c7a9615950577665074746c2e92edafceefa789616ecb6166229e0ccc6dae206ca9b9f7da0d274ba5779162aab2d07940a0f6e52a41a4e555392eb3b + languageName: node + linkType: hard + "fast-uri@npm:^3.0.1": - version: 3.0.6 - resolution: "fast-uri@npm:3.0.6" - checksum: 10c0/74a513c2af0584448aee71ce56005185f81239eab7a2343110e5bad50c39ad4fb19c5a6f99783ead1cac7ccaf3461a6034fda89fffa2b30b6d99b9f21c2f9d29 + version: 3.1.0 + resolution: "fast-uri@npm:3.1.0" + checksum: 10c0/44364adca566f70f40d1e9b772c923138d47efeac2ae9732a872baafd77061f26b097ba2f68f0892885ad177becd065520412b8ffeec34b16c99433c5b9e2de7 languageName: node linkType: hard @@ -19231,14 +18902,14 @@ __metadata: languageName: node linkType: hard -"fast-xml-parser@npm:4.4.1": - version: 4.4.1 - resolution: "fast-xml-parser@npm:4.4.1" +"fast-xml-parser@npm:5.2.5": + version: 5.2.5 + resolution: "fast-xml-parser@npm:5.2.5" dependencies: - strnum: "npm:^1.0.5" + strnum: "npm:^2.1.0" bin: fxparser: src/cli/cli.js - checksum: 10c0/7f334841fe41bfb0bf5d920904ccad09cefc4b5e61eaf4c225bf1e1bb69ee77ef2147d8942f783ee8249e154d1ca8a858e10bda78a5d78b8bed3f48dcee9bf33 + checksum: 10c0/d1057d2e790c327ccfc42b872b91786a4912a152d44f9507bf053f800102dfb07ece3da0a86b33ff6a0caa5a5cad86da3326744f6ae5efb0c6c571d754fe48cd languageName: node linkType: hard @@ -19278,15 +18949,15 @@ __metadata: languageName: node linkType: hard -"fdir@npm:^6.4.4": - version: 6.4.4 - resolution: "fdir@npm:6.4.4" +"fdir@npm:^6.4.4, fdir@npm:^6.5.0": + version: 6.5.0 + resolution: "fdir@npm:6.5.0" peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: picomatch: optional: true - checksum: 10c0/6ccc33be16945ee7bc841e1b4178c0b4cf18d3804894cb482aa514651c962a162f96da7ffc6ebfaf0df311689fb70091b04dd6caffe28d56b9ebdc0e7ccadfdd + checksum: 10c0/e345083c4306b3aed6cb8ec551e26c36bab5c511e99ea4576a16750ddc8d3240e63826cc624f5ae17ad4dc82e68a253213b60d556c11bfad064b7607847ed07f languageName: node linkType: hard @@ -19487,12 +19158,12 @@ __metadata: linkType: hard "follow-redirects@npm:^1.12.1, follow-redirects@npm:^1.14.0, follow-redirects@npm:^1.14.9, follow-redirects@npm:^1.15.6": - version: 1.15.9 - resolution: "follow-redirects@npm:1.15.9" + version: 1.15.11 + resolution: "follow-redirects@npm:1.15.11" peerDependenciesMeta: debug: optional: true - checksum: 10c0/5829165bd112c3c0e82be6c15b1a58fa9dcfaede3b3c54697a82fe4a62dd5ae5e8222956b448d2f98e331525f05d00404aba7d696de9e761ef6e42fdc780244f + checksum: 10c0/d301f430542520a54058d4aeeb453233c564aaccac835d29d15e050beb33f339ad67d9bddbce01739c5dc46a6716dbe3d9d0d5134b1ca203effa11a7ef092343 languageName: node linkType: hard @@ -19538,28 +19209,30 @@ __metadata: languageName: node linkType: hard -"form-data@npm:^2.5.0": - version: 2.5.3 - resolution: "form-data@npm:2.5.3" +"form-data@npm:^2.5.5": + version: 2.5.5 + resolution: "form-data@npm:2.5.5" dependencies: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.8" es-set-tostringtag: "npm:^2.1.0" + hasown: "npm:^2.0.2" mime-types: "npm:^2.1.35" safe-buffer: "npm:^5.2.1" - checksum: 10c0/48b910745d4fcd403f3d6876e33082a334e712199b8c86c4eb82f6da330a59b859943999d793856758c5ff18ca5261ced4d1062235a14543022d986bd21faa7d + checksum: 10c0/7fb70447849fc9bce4d01fe9a626f6587441f85779a2803b67f803e1ab52b0bd78db0a7acd80d944c665f68ca90936c327f1244b730719b638a0219e98b20488 languageName: node linkType: hard -"form-data@npm:^4.0.0": - version: 4.0.2 - resolution: "form-data@npm:4.0.2" +"form-data@npm:^4.0.0, form-data@npm:^4.0.4": + version: 4.0.4 + resolution: "form-data@npm:4.0.4" dependencies: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.8" es-set-tostringtag: "npm:^2.1.0" + hasown: "npm:^2.0.2" mime-types: "npm:^2.1.12" - checksum: 10c0/e534b0cf025c831a0929bf4b9bbe1a9a6b03e273a8161f9947286b9b13bf8fb279c6944aae0070c4c311100c6d6dbb815cd955dc217728caf73fad8dc5b8ee9c + checksum: 10c0/373525a9a034b9d57073e55eab79e501a714ffac02e7a9b01be1c820780652b16e4101819785e1e18f8d98f0aee866cc654d660a435c378e16a72f2e7cac9695 languageName: node linkType: hard @@ -19616,14 +19289,14 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:11.2.0": - version: 11.2.0 - resolution: "fs-extra@npm:11.2.0" +"fs-extra@npm:11.3.0": + version: 11.3.0 + resolution: "fs-extra@npm:11.3.0" dependencies: graceful-fs: "npm:^4.2.0" jsonfile: "npm:^6.0.1" universalify: "npm:^2.0.0" - checksum: 10c0/d77a9a9efe60532d2e790e938c81a02c1b24904ef7a3efb3990b835514465ba720e99a6ea56fd5e2db53b4695319b644d76d5a0e9988a2beef80aa7b1da63398 + checksum: 10c0/5f95e996186ff45463059feb115a22fb048bdaf7e487ecee8a8646c78ed8fdca63630e3077d4c16ce677051f5e60d3355a06f3cd61f3ca43f48cc58822a44d0a languageName: node linkType: hard @@ -19701,9 +19374,9 @@ __metadata: linkType: hard "fs-monkey@npm:^1.0.4": - version: 1.0.6 - resolution: "fs-monkey@npm:1.0.6" - checksum: 10c0/6f2508e792a47e37b7eabd5afc79459c1ea72bce2a46007d2b7ed0bfc3a4d64af38975c6eb7e93edb69ac98bbb907c13ff1b1579b2cf52d3d02dbc0303fca79f + version: 1.1.0 + resolution: "fs-monkey@npm:1.1.0" + checksum: 10c0/45596fe14753ae8f3fa180724106383de68c8de2836eb24d1647cacf18a6d05335402f3611d32e00234072a60d2f3371024c00cd295593bfbce35b84ff9f6a34 languageName: node linkType: hard @@ -19802,6 +19475,13 @@ __metadata: languageName: node linkType: hard +"generator-function@npm:^2.0.0": + version: 2.0.1 + resolution: "generator-function@npm:2.0.1" + checksum: 10c0/8a9f59df0f01cfefafdb3b451b80555e5cf6d76487095db91ac461a0e682e4ff7a9dbce15f4ecec191e53586d59eece01949e05a4b4492879600bbbe8e28d6b8 + languageName: node + linkType: hard + "generic-pool@npm:3.9.0": version: 3.9.0 resolution: "generic-pool@npm:3.9.0" @@ -19823,10 +19503,10 @@ __metadata: languageName: node linkType: hard -"get-east-asian-width@npm:^1.0.0": - version: 1.3.0 - resolution: "get-east-asian-width@npm:1.3.0" - checksum: 10c0/1a049ba697e0f9a4d5514c4623781c5246982bdb61082da6b5ae6c33d838e52ce6726407df285cdbb27ec1908b333cf2820989bd3e986e37bb20979437fdf34b +"get-east-asian-width@npm:^1.0.0, get-east-asian-width@npm:^1.3.1": + version: 1.4.0 + resolution: "get-east-asian-width@npm:1.4.0" + checksum: 10c0/4e481d418e5a32061c36fbb90d1b225a254cc5b2df5f0b25da215dcd335a3c111f0c2023ffda43140727a9cafb62dac41d022da82c08f31083ee89f714ee3b83 languageName: node linkType: hard @@ -19838,20 +19518,23 @@ __metadata: linkType: hard "get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0": - version: 1.3.0 - resolution: "get-intrinsic@npm:1.3.0" + version: 1.3.1 + resolution: "get-intrinsic@npm:1.3.1" dependencies: + async-function: "npm:^1.0.0" + async-generator-function: "npm:^1.0.0" call-bind-apply-helpers: "npm:^1.0.2" es-define-property: "npm:^1.0.1" es-errors: "npm:^1.3.0" es-object-atoms: "npm:^1.1.1" function-bind: "npm:^1.1.2" + generator-function: "npm:^2.0.0" get-proto: "npm:^1.0.1" gopd: "npm:^1.2.0" has-symbols: "npm:^1.1.0" hasown: "npm:^2.0.2" math-intrinsics: "npm:^1.1.0" - checksum: 10c0/52c81808af9a8130f581e6a6a83e1ba4a9f703359e7a438d1369a5267a25412322f03dcbd7c549edaef0b6214a0630a28511d7df0130c93cfd380f4fa0b5b66a + checksum: 10c0/9f4ab0cf7efe0fd2c8185f52e6f637e708f3a112610c88869f8f041bb9ecc2ce44bf285dfdbdc6f4f7c277a5b88d8e94a432374d97cca22f3de7fc63795deb5d languageName: node linkType: hard @@ -19904,21 +19587,12 @@ __metadata: languageName: node linkType: hard -"get-tsconfig@npm:^4.10.0": - version: 4.10.0 - resolution: "get-tsconfig@npm:4.10.0" - dependencies: - resolve-pkg-maps: "npm:^1.0.0" - checksum: 10c0/c9b5572c5118923c491c04285c73bd55b19e214992af957c502a3be0fc0043bb421386ffd45ca3433c0a7fba81221ca300479e8393960acf15d0ed4563f38a86 - languageName: node - linkType: hard - -"get-tsconfig@npm:^4.10.1": - version: 4.10.1 - resolution: "get-tsconfig@npm:4.10.1" +"get-tsconfig@npm:^4.10.0, get-tsconfig@npm:^4.10.1": + version: 4.13.0 + resolution: "get-tsconfig@npm:4.13.0" dependencies: resolve-pkg-maps: "npm:^1.0.0" - checksum: 10c0/7f8e3dabc6a49b747920a800fb88e1952fef871cdf51b79e98db48275a5de6cdaf499c55ee67df5fa6fe7ce65f0063e26de0f2e53049b408c585aa74d39ffa21 + checksum: 10c0/2c49ef8d3907047a107f229fd610386fe3b7fe9e42dfd6b42e7406499493cdda8c62e83e57e8d7a98125610774b9f604d3a0ff308d7f9de5c7ac6d1b07cb6036 languageName: node linkType: hard @@ -19982,9 +19656,9 @@ __metadata: languageName: node linkType: hard -"glob@npm:11.0.0": - version: 11.0.0 - resolution: "glob@npm:11.0.0" +"glob@npm:11.0.2": + version: 11.0.2 + resolution: "glob@npm:11.0.2" dependencies: foreground-child: "npm:^3.1.0" jackspeak: "npm:^4.0.1" @@ -19994,7 +19668,7 @@ __metadata: path-scurry: "npm:^2.0.0" bin: glob: dist/esm/bin.mjs - checksum: 10c0/419866015d8795258a8ac51de5b9d1a99c72634fc3ead93338e4da388e89773ab21681e494eac0fbc4250b003451ca3110bb4f1c9393d15d14466270094fdb4e + checksum: 10c0/49f91c64ca882d5e3a72397bd45a146ca91fd3ca53dafb5254daf6c0e83fc510d39ea66f136f9ac7ca075cdd11fbe9aaa235b28f743bd477622e472f4fdc0240 languageName: node linkType: hard @@ -20072,13 +19746,6 @@ __metadata: languageName: node linkType: hard -"globals@npm:^11.1.0": - version: 11.12.0 - resolution: "globals@npm:11.12.0" - checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 - languageName: node - linkType: hard - "globals@npm:^13.19.0, globals@npm:^13.23.0": version: 13.24.0 resolution: "globals@npm:13.24.0" @@ -20095,17 +19762,10 @@ __metadata: languageName: node linkType: hard -"globals@npm:^16.2.0": - version: 16.2.0 - resolution: "globals@npm:16.2.0" - checksum: 10c0/c2b3ea163faa6f8a38076b471b12f4bda891f7df7f7d2e8294fb4801d735a51a73431bf4c1696c5bf5dbca5e0a0db894698acfcbd3068730c6b12eef185dea25 - languageName: node - linkType: hard - -"globals@npm:^16.3.0": - version: 16.3.0 - resolution: "globals@npm:16.3.0" - checksum: 10c0/c62dc20357d1c0bf2be4545d6c4141265d1a229bf1c3294955efb5b5ef611145391895e3f2729f8603809e81b30b516c33e6c2597573844449978606aad6eb38 +"globals@npm:^16.2.0, globals@npm:^16.3.0": + version: 16.5.0 + resolution: "globals@npm:16.5.0" + checksum: 10c0/615241dae7851c8012f5aa0223005b1ed6607713d6813de0741768bd4ddc39353117648f1a7086b4b0fa45eae733f1c0a0fe369aa4e543bb63f8de8990178ea9 languageName: node linkType: hard @@ -20190,11 +19850,11 @@ __metadata: linkType: hard "goober@npm:^2.0.33": - version: 2.1.16 - resolution: "goober@npm:2.1.16" + version: 2.1.18 + resolution: "goober@npm:2.1.18" peerDependencies: csstype: ^3.0.10 - checksum: 10c0/f4c8256bf9c27873d47c1443f348779ac7f322516cb80a5dc647a6ebe790ce6bb9d3f487a0fb8be0b583fb96b9b2f6b7463f7fea3cd680306f95fa6fc9db1f6a + checksum: 10c0/de9bf7b6f57417900afac81a479b85d8c0bcb0322ba8b174f9287d10e7891ba7e33db5fe2b0cdd75281c69130e76eb0c694345acf45ea57e4e4a2db8e4c4f021 languageName: node linkType: hard @@ -20213,8 +19873,8 @@ __metadata: linkType: hard "google-gax@npm:^4.0.3": - version: 4.6.0 - resolution: "google-gax@npm:4.6.0" + version: 4.6.1 + resolution: "google-gax@npm:4.6.1" dependencies: "@grpc/grpc-js": "npm:^1.10.9" "@grpc/proto-loader": "npm:^0.7.13" @@ -20228,7 +19888,7 @@ __metadata: protobufjs: "npm:^7.3.2" retry-request: "npm:^7.0.0" uuid: "npm:^9.0.1" - checksum: 10c0/371d855fad00fe5957587ac8b16f27b0e8dbd91e5a05e1f501f57b9f0042171951b8b777e0e73af990203ce3b7a19e02aaeeb32125482b1222be11787c19dbdb + checksum: 10c0/740e47beb1def74d3e0074f8582fd919423f6c261b8cfa1c6a6c1c5bf9d8b92a11f1afe07eb1eea2fda7f4b6603c836f9427ed3cfa4c04ae97eb00db7c291400 languageName: node linkType: hard @@ -20344,17 +20004,17 @@ __metadata: languageName: node linkType: hard -"graphql@npm:16.9.0": - version: 16.9.0 - resolution: "graphql@npm:16.9.0" - checksum: 10c0/a8850f077ff767377237d1f8b1da2ec70aeb7623cdf1dfc9e1c7ae93accc0c8149c85abe68923be9871a2934b1bce5a2496f846d4d56e1cfb03eaaa7ddba9b6a +"graphql@npm:16.11.0": + version: 16.11.0 + resolution: "graphql@npm:16.11.0" + checksum: 10c0/124da7860a2292e9acf2fed0c71fc0f6a9b9ca865d390d112bdd563c1f474357141501c12891f4164fe984315764736ad67f705219c62f7580681d431a85db88 languageName: node linkType: hard "graphql@npm:^16.6.0, graphql@npm:^16.8.1": - version: 16.11.0 - resolution: "graphql@npm:16.11.0" - checksum: 10c0/124da7860a2292e9acf2fed0c71fc0f6a9b9ca865d390d112bdd563c1f474357141501c12891f4164fe984315764736ad67f705219c62f7580681d431a85db88 + version: 16.12.0 + resolution: "graphql@npm:16.12.0" + checksum: 10c0/b6fffa4e8a4e4a9933ebe85e7470b346dbf49050c1a482fac5e03e4a1a7bed2ecd3a4c97e29f04457af929464bc5e4f2aac991090c2f320111eef26e902a5c75 languageName: node linkType: hard @@ -20368,20 +20028,20 @@ __metadata: languageName: node linkType: hard -"h3@npm:^1.15.2": - version: 1.15.3 - resolution: "h3@npm:1.15.3" +"h3@npm:^1.15.4": + version: 1.15.4 + resolution: "h3@npm:1.15.4" dependencies: cookie-es: "npm:^1.2.2" - crossws: "npm:^0.3.4" + crossws: "npm:^0.3.5" defu: "npm:^6.1.4" destr: "npm:^2.0.5" iron-webcrypto: "npm:^1.2.1" - node-mock-http: "npm:^1.0.0" + node-mock-http: "npm:^1.0.2" radix3: "npm:^1.1.2" ufo: "npm:^1.6.1" uncrypto: "npm:^0.1.3" - checksum: 10c0/4b83daceda6f39cd508d56382dc3a83ef14453d0119ada290c7fda3c69d907ccaf2547fd233f3e001a9ffae2cde4e2543e4361d714c29fb6ec664f604d5b84a3 + checksum: 10c0/5182a722d01fe18af5cb62441aaa872b630f4e1ac2cf1782e1f442e65fdfddb85eb6723bf73a96184c2dc1f1e3771d713ef47c456a9a4e92c640b025ba91044c languageName: node linkType: hard @@ -20416,15 +20076,15 @@ __metadata: linkType: hard "hardhat-contract-sizer@npm:^2.6.1": - version: 2.10.0 - resolution: "hardhat-contract-sizer@npm:2.10.0" + version: 2.10.1 + resolution: "hardhat-contract-sizer@npm:2.10.1" dependencies: chalk: "npm:^4.0.0" cli-table3: "npm:^0.6.0" strip-ansi: "npm:^6.0.0" peerDependencies: hardhat: ^2.0.0 - checksum: 10c0/c8bdb3e32c7e5a28bb6a00a2c786d768f471318dc6923c294e2775d69bb12f3c797af38545c8f8603109e293a137a6ba9b511964a35f7bc2356348225ffa2ff7 + checksum: 10c0/c339c91d166ba27c4230682690d1c0ca5f104dc55001983e152236f73717bf5f97aeb8ac601fd0e2037e7ba1789c998726bf367e0ddd2c268ab40b33f51dcef1 languageName: node linkType: hard @@ -20470,13 +20130,13 @@ __metadata: linkType: hard "hardhat-gas-reporter@npm:^2.0.2": - version: 2.2.3 - resolution: "hardhat-gas-reporter@npm:2.2.3" + version: 2.3.0 + resolution: "hardhat-gas-reporter@npm:2.3.0" dependencies: "@ethersproject/abi": "npm:^5.7.0" "@ethersproject/bytes": "npm:^5.7.0" "@ethersproject/units": "npm:^5.7.0" - "@solidity-parser/parser": "npm:^0.19.0" + "@solidity-parser/parser": "npm:^0.20.1" axios: "npm:^1.6.7" brotli-wasm: "npm:^2.0.1" chalk: "npm:4.1.2" @@ -20490,13 +20150,13 @@ __metadata: viem: "npm:^2.27.0" peerDependencies: hardhat: ^2.16.0 - checksum: 10c0/4011d4e9a01e60777d0f25683b878d47b4bbe5613c39ce0f5a5cdef704a5b0e0d5bb19e7c63d8ab35603c5539541a099a1105583c7d067abf7e2a1e25d9b31da + checksum: 10c0/200ff3fb318de657e72e660526f41c692c4bb3a1b1a43414bd29c1737cf71d514258546bb7722abfad3c296a38e0c0d6e7239410beff4d26d6b529e0d6f94d62 languageName: node linkType: hard "hardhat@npm:^2.26.0": - version: 2.26.0 - resolution: "hardhat@npm:2.26.0" + version: 2.26.5 + resolution: "hardhat@npm:2.26.5" dependencies: "@ethereumjs/util": "npm:^9.1.0" "@ethersproject/abi": "npm:^5.1.2" @@ -20521,7 +20181,7 @@ __metadata: json-stream-stringify: "npm:^3.1.4" keccak: "npm:^3.0.2" lodash: "npm:^4.17.11" - micro-eth-signer: "npm:^0.16.0" + micro-eth-signer: "npm:^0.14.0" mnemonist: "npm:^0.38.0" mocha: "npm:^10.0.0" p-map: "npm:^4.0.0" @@ -20547,7 +20207,7 @@ __metadata: optional: true bin: hardhat: internal/cli/bootstrap.js - checksum: 10c0/8f94dc8ecc73a590723a3b5d45e29e5fdd16ece0164ef705d571e8bd895944b14d7d294d17fd231b811438f69bd79465ec16252404cf00d39cfcb43f5a84ae35 + checksum: 10c0/4f757c27881514ad79aaf73e6226f2fde773b97d4a63b3e40c991ca093868ef8ad3b98970347c6f3a46dd1214c53822bbecc02e008fe99ed83150f607fbeb5f9 languageName: node linkType: hard @@ -20627,18 +20287,19 @@ __metadata: languageName: node linkType: hard -"hash-base@npm:^3.0.0": - version: 3.1.0 - resolution: "hash-base@npm:3.1.0" +"hash-base@npm:^3.0.0, hash-base@npm:^3.1.2": + version: 3.1.2 + resolution: "hash-base@npm:3.1.2" dependencies: inherits: "npm:^2.0.4" - readable-stream: "npm:^3.6.0" - safe-buffer: "npm:^5.2.0" - checksum: 10c0/663eabcf4173326fbb65a1918a509045590a26cc7e0964b754eef248d281305c6ec9f6b31cb508d02ffca383ab50028180ce5aefe013e942b44a903ac8dc80d0 + readable-stream: "npm:^2.3.8" + safe-buffer: "npm:^5.2.1" + to-buffer: "npm:^1.2.1" + checksum: 10c0/f3b7fae1853b31340048dd659f40f5260ca6f3ff53b932f807f4ab701ee09039f6e9dbe1841723ff61e20f3f69d6387a352e4ccc5f997dedb0d375c7d88bc15e languageName: node linkType: hard -"hash-base@npm:~3.0, hash-base@npm:~3.0.4": +"hash-base@npm:~3.0.4": version: 3.0.5 resolution: "hash-base@npm:3.0.5" dependencies: @@ -20731,6 +20392,13 @@ __metadata: languageName: node linkType: hard +"hono@npm:^4.10.3": + version: 4.10.4 + resolution: "hono@npm:4.10.4" + checksum: 10c0/90ce8dfacb70558f7549b5ee9bf4e5b4b29f76cb8be4d43a28ea0001458689bd63f51a2b1cae3f6ab05f7a50ce5442cb71c483c69dc7e986dd9217a5339c1fca + languageName: node + linkType: hard + "hosted-git-info@npm:^2.1.4": version: 2.8.9 resolution: "hosted-git-info@npm:2.8.9" @@ -20780,9 +20448,9 @@ __metadata: linkType: hard "http-cache-semantics@npm:^4.1.1": - version: 4.1.1 - resolution: "http-cache-semantics@npm:4.1.1" - checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc + version: 4.2.0 + resolution: "http-cache-semantics@npm:4.2.0" + checksum: 10c0/45b66a945cf13ec2d1f29432277201313babf4a01d9e52f44b31ca923434083afeca03f18417f599c9ab3d0e7b618ceb21257542338b57c54b710463b4a53e37 languageName: node linkType: hard @@ -20862,11 +20530,11 @@ __metadata: linkType: hard "human-id@npm:^4.1.1": - version: 4.1.1 - resolution: "human-id@npm:4.1.1" + version: 4.1.2 + resolution: "human-id@npm:4.1.2" bin: human-id: dist/cli.js - checksum: 10c0/9a9a18130fb7d6bc707054bacc32cb328289be0de47ba5669fd04995435e7e59931b87c644a223d68473c450221d104175a5fefe93d77f3522822ead8945def8 + checksum: 10c0/81eb30b5eed3156086ae5d4f5ebf9a7c11bddc80bf635dc52319818f7d4010976d7defad828b5ee1b3fa7dbf7cecdc39154237e72673fbe0447440f80a62276c languageName: node linkType: hard @@ -20894,6 +20562,15 @@ __metadata: languageName: node linkType: hard +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: "npm:^2.0.0" + checksum: 10c0/f34a2c20161d02303c2807badec2f3b49cbfbbb409abd4f95a07377ae01cfe6b59e3d15ac609cffcd8f2521f0eb37b7e1091acf65da99aa2a4f1ad63c21e7e7a + languageName: node + linkType: hard + "husky@npm:^9.1.6": version: 9.1.7 resolution: "husky@npm:9.1.7" @@ -20930,13 +20607,29 @@ __metadata: languageName: node linkType: hard -"idb-keyval@npm:^6.2.1": +"iconv-lite@npm:0.7.0, iconv-lite@npm:^0.7.0": + version: 0.7.0 + resolution: "iconv-lite@npm:0.7.0" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/2382400469071c55b6746c531eed5fa4d033e5db6690b7331fb2a5f59a30d7a9782932e92253db26df33c1cf46fa200a3fbe524a2a7c62037c762283f188ec2f + languageName: node + linkType: hard + +"idb-keyval@npm:6.2.1": version: 6.2.1 resolution: "idb-keyval@npm:6.2.1" checksum: 10c0/9f0c83703a365e00bd0b4ed6380ce509a06dedfc6ec39b2ba5740085069fd2f2ff5c14ba19356488e3612a2f9c49985971982d836460a982a5d0b4019eeba48a languageName: node linkType: hard +"idb-keyval@npm:^6.2.1": + version: 6.2.2 + resolution: "idb-keyval@npm:6.2.2" + checksum: 10c0/b52f0d2937cc2ec9f1da536b0b5c0875af3043ca210714beaffead4ec1f44f2ad322220305fd024596203855224d9e3523aed83e971dfb62ddc21b5b1721aeef + languageName: node + linkType: hard + "ieee754@npm:^1.1.13, ieee754@npm:^1.1.4, ieee754@npm:^1.2.1": version: 1.2.1 resolution: "ieee754@npm:1.2.1" @@ -20975,16 +20668,16 @@ __metadata: linkType: hard "immer@npm:^10.0.3": - version: 10.1.1 - resolution: "immer@npm:10.1.1" - checksum: 10c0/b749e10d137ccae91788f41bd57e9387f32ea6d6ea8fd7eb47b23fd7766681575efc7f86ceef7fe24c3bc9d61e38ff5d2f49c2663b2b0c056e280a4510923653 + version: 10.2.0 + resolution: "immer@npm:10.2.0" + checksum: 10c0/35e66b0585b2aec4e85ae7a993f049405f170799ba89d79205bc3fdae2c5bdaa2b1d35f62803d8beee42b7e85c7f7315a6e93b6a5a510c5a46f03dbe63619e87 languageName: node linkType: hard -"immutable@npm:5.0.3": - version: 5.0.3 - resolution: "immutable@npm:5.0.3" - checksum: 10c0/3269827789e1026cd25c2ea97f0b2c19be852ffd49eda1b674b20178f73d84fa8d945ad6f5ac5bc4545c2b4170af9f6e1f77129bc1cae7974a4bf9b04a9cdfb9 +"immutable@npm:5.1.2": + version: 5.1.2 + resolution: "immutable@npm:5.1.2" + checksum: 10c0/da5af92d2c70323c1f9a0e418832c9eef441feadaf6a295a4e07764bd2400c85186872e016071d9253549d58d364160d55dca8dcdf59fd4a6a06c6756fe61657 languageName: node linkType: hard @@ -20996,9 +20689,9 @@ __metadata: linkType: hard "immutable@npm:^5.0.2": - version: 5.1.2 - resolution: "immutable@npm:5.1.2" - checksum: 10c0/da5af92d2c70323c1f9a0e418832c9eef441feadaf6a295a4e07764bd2400c85186872e016071d9253549d58d364160d55dca8dcdf59fd4a6a06c6756fe61657 + version: 5.1.4 + resolution: "immutable@npm:5.1.4" + checksum: 10c0/f1c98382e4cde14a0b218be3b9b2f8441888da8df3b8c064aa756071da55fbed6ad696e5959982508456332419be9fdeaf29b2e58d0eadc45483cc16963c0446 languageName: node linkType: hard @@ -21116,19 +20809,19 @@ __metadata: linkType: hard "interface-datastore@npm:^8.3.1": - version: 8.3.1 - resolution: "interface-datastore@npm:8.3.1" + version: 8.3.2 + resolution: "interface-datastore@npm:8.3.2" dependencies: interface-store: "npm:^6.0.0" uint8arrays: "npm:^5.1.0" - checksum: 10c0/7b7fbe94fe00ed8a69e2197a0b58fa7db733d7a7110dfaa259fc19c9cb1761402a9f31063d4d87676e4d2213ed94b06d3f2b9dd65bc727e89bd0dbfbc17882a1 + checksum: 10c0/7b30a11caa4f3559564d2dd2428606a140b8765b2c80a2ff7bae7a4229aac1ca9dc05a106e0f2d28e0a01b28e50adfd2c67d095362d974ea7b3f98302eb9cd85 languageName: node linkType: hard "interface-store@npm:^6.0.0": - version: 6.0.2 - resolution: "interface-store@npm:6.0.2" - checksum: 10c0/26650c98c411fcf5dfeec76d4433f9ca594c2d27cc7afb285b618132d512b62d684471054b2fb4e687b477ab36f1ca21fd81caad404925502a4a54160a7158c4 + version: 6.0.3 + resolution: "interface-store@npm:6.0.3" + checksum: 10c0/aa7b978fccb0cee55a18e391c22b7b72a85abdb281f6d816ca6316df3af778e0e69b3a1db094b8dbb851cd0ca7edd4cc65f4b689f87fbab6e44439c20252ef18 languageName: node linkType: hard @@ -21166,13 +20859,10 @@ __metadata: languageName: node linkType: hard -"ip-address@npm:^9.0.5": - version: 9.0.5 - resolution: "ip-address@npm:9.0.5" - dependencies: - jsbn: "npm:1.1.0" - sprintf-js: "npm:^1.1.3" - checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc +"ip-address@npm:^10.0.1": + version: 10.0.1 + resolution: "ip-address@npm:10.0.1" + checksum: 10c0/1634d79dae18394004775cb6d699dc46b7c23df6d2083164025a2b15240c1164fccde53d0e08bd5ee4fc53913d033ab6b5e395a809ad4b956a940c446e948843 languageName: node linkType: hard @@ -21191,12 +20881,12 @@ __metadata: linkType: hard "ipfs-unixfs@npm:^11.1.4": - version: 11.2.1 - resolution: "ipfs-unixfs@npm:11.2.1" + version: 11.2.5 + resolution: "ipfs-unixfs@npm:11.2.5" dependencies: protons-runtime: "npm:^5.5.0" uint8arraylist: "npm:^2.4.8" - checksum: 10c0/588f6eba5b420e46d392339bfc315dec3b7cac4aa1afd6b06bcd7ec6e7faa42396c1e658a001ea7bcfd7d2eed0c4760cb33bcb0df064ec24349d0e67e193980b + checksum: 10c0/0176340420f3a8efac45c64216adb8427dbd9ba49154bfe0d5c917fc0d9ccd92e313f04a06f89c4a36244dec12b068227a4de2c2fcfc5d1dd58eba138e29ce7a languageName: node linkType: hard @@ -21276,6 +20966,13 @@ __metadata: languageName: node linkType: hard +"is-buffer@npm:~1.1.6": + version: 1.1.6 + resolution: "is-buffer@npm:1.1.6" + checksum: 10c0/ae18aa0b6e113d6c490ad1db5e8df9bdb57758382b313f5a22c9c61084875c6396d50bbf49315f5b1926d142d74dfb8d31b40d993a383e0a158b15fea7a82234 + languageName: node + linkType: hard + "is-builtin-module@npm:^3.2.1": version: 3.2.1 resolution: "is-builtin-module@npm:3.2.1" @@ -21301,7 +20998,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.1.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1, is-core-module@npm:^2.16.0, is-core-module@npm:^2.16.1": +"is-core-module@npm:^2.1.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.16.1": version: 2.16.1 resolution: "is-core-module@npm:2.16.1" dependencies: @@ -21387,11 +21084,11 @@ __metadata: linkType: hard "is-fullwidth-code-point@npm:^5.0.0": - version: 5.0.0 - resolution: "is-fullwidth-code-point@npm:5.0.0" + version: 5.1.0 + resolution: "is-fullwidth-code-point@npm:5.1.0" dependencies: - get-east-asian-width: "npm:^1.0.0" - checksum: 10c0/cd591b27d43d76b05fa65ed03eddce57a16e1eca0b7797ff7255de97019bcaf0219acfc0c4f7af13319e13541f2a53c0ace476f442b13267b9a6a7568f2b65c8 + get-east-asian-width: "npm:^1.3.1" + checksum: 10c0/c1172c2e417fb73470c56c431851681591f6a17233603a9e6f94b7ba870b2e8a5266506490573b607fb1081318589372034aa436aec07b465c2029c0bc7f07a4 languageName: node linkType: hard @@ -21403,14 +21100,15 @@ __metadata: linkType: hard "is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": - version: 1.1.0 - resolution: "is-generator-function@npm:1.1.0" + version: 1.1.2 + resolution: "is-generator-function@npm:1.1.2" dependencies: - call-bound: "npm:^1.0.3" - get-proto: "npm:^1.0.0" + call-bound: "npm:^1.0.4" + generator-function: "npm:^2.0.0" + get-proto: "npm:^1.0.1" has-tostringtag: "npm:^1.0.2" safe-regex-test: "npm:^1.1.0" - checksum: 10c0/fdfa96c8087bf36fc4cd514b474ba2ff404219a4dd4cfa6cf5426404a1eed259bdcdb98f082a71029a48d01f27733e3436ecc6690129a7ec09cb0434bee03a2a + checksum: 10c0/83da102e89c3e3b71d67b51d47c9f9bc862bceb58f87201727e27f7fa19d1d90b0ab223644ecaee6fc6e3d2d622bb25c966fbdaf87c59158b01ce7c0fe2fa372 languageName: node linkType: hard @@ -21564,6 +21262,13 @@ __metadata: languageName: node linkType: hard +"is-retry-allowed@npm:^2.2.0": + version: 2.2.0 + resolution: "is-retry-allowed@npm:2.2.0" + checksum: 10c0/013be4f8a0a06a49ed1fe495242952e898325d496202a018f6f9fb3fb9ac8fe3b957a9bd62463d68299ae35dbbda680473c85a9bcefca731b49d500d3ccc08ff + languageName: node + linkType: hard + "is-set@npm:^2.0.3": version: 2.0.3 resolution: "is-set@npm:2.0.3" @@ -21594,7 +21299,7 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.7, is-string@npm:^1.1.1": +"is-string@npm:^1.1.1": version: 1.1.1 resolution: "is-string@npm:1.1.1" dependencies: @@ -21647,7 +21352,7 @@ __metadata: languageName: node linkType: hard -"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.0, is-weakref@npm:^1.1.1": +"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.1": version: 1.1.1 resolution: "is-weakref@npm:1.1.1" dependencies: @@ -21692,9 +21397,9 @@ __metadata: linkType: hard "is@npm:^3.3.0": - version: 3.3.0 - resolution: "is@npm:3.3.0" - checksum: 10c0/d2474beed01c7abba47926d51989fbf6f1c154e01ab7f1052af7e2327d160fda12e52967c96440fdb962489bdd5ecce6a7102cbf98ea43c951b0faa3c21d104a + version: 3.3.2 + resolution: "is@npm:3.3.2" + checksum: 10c0/bbb6e0887fdf193d6080fc5cb383ba7a3a5b498d93491032a4dd7e3716d4540c90eb7e579022528883ca3619a056eea596a75758625f24a25c3382328256347a languageName: node linkType: hard @@ -21842,58 +21547,58 @@ __metadata: linkType: hard "istanbul-reports@npm:^3.1.3": - version: 3.1.7 - resolution: "istanbul-reports@npm:3.1.7" + version: 3.2.0 + resolution: "istanbul-reports@npm:3.2.0" dependencies: html-escaper: "npm:^2.0.0" istanbul-lib-report: "npm:^3.0.0" - checksum: 10c0/a379fadf9cf8dc5dfe25568115721d4a7eb82fbd50b005a6672aff9c6989b20cc9312d7865814e0859cd8df58cbf664482e1d3604be0afde1f7fc3ccc1394a51 + checksum: 10c0/d596317cfd9c22e1394f22a8d8ba0303d2074fe2e971887b32d870e4b33f8464b10f8ccbe6847808f7db485f084eba09e6c2ed706b3a978e4b52f07085b8f9bc languageName: node linkType: hard "it-all@npm:^3.0.4": - version: 3.0.7 - resolution: "it-all@npm:3.0.7" - checksum: 10c0/b8c930b356e31a0f8c8e811983ba7159ebaadb06a80b27548052ee0519d1a193b0044ab4841445396a4bdeead8eba57e573062316904c2d6e71367372e6a23d0 + version: 3.0.9 + resolution: "it-all@npm:3.0.9" + checksum: 10c0/811bd0889b3b293ef921c700b58dd82e1281c21d15655f2c00c910a461c1b16c68e9ac84e856cb7b03df790a6819c941fbd91c25f77910a3bb1652eb40ff48ef languageName: node linkType: hard "it-first@npm:^3.0.4": - version: 3.0.7 - resolution: "it-first@npm:3.0.7" - checksum: 10c0/b7eaf2616e528e4d40a7b4335148d40337df18242fca35dae903a299befc4a1fb1d6c965c7727901ce81976d9cd541fd334af56656724def47e2360e11ef5f71 + version: 3.0.9 + resolution: "it-first@npm:3.0.9" + checksum: 10c0/1f6953da550beaa996862bbd5fc7ad56369b88be3980eb0e589cbdfc520f875e281b41f99211e0133492a1de672d99e8aebc8eac95cf2a1403298839d673d908 languageName: node linkType: hard "it-glob@npm:^3.0.1": - version: 3.0.2 - resolution: "it-glob@npm:3.0.2" + version: 3.0.4 + resolution: "it-glob@npm:3.0.4" dependencies: fast-glob: "npm:^3.3.3" - checksum: 10c0/e6df1532d77b9881cf3b3cbfaca320b2c98bbe595afd91ec4c5651b499c71eea06fad94bc0f76a6a260b0f3a17939e1d7ff6d8675d4f28afa52dace3b169a95c + checksum: 10c0/eb6ee989587653199bc4085007f03e52597d0678795f6194291c7ecdf770ed98f3a6ee2cd8ee04114351cde4806e2ec0ddd010359537cb41c4f606eab21fd51c languageName: node linkType: hard "it-last@npm:^3.0.4": - version: 3.0.7 - resolution: "it-last@npm:3.0.7" - checksum: 10c0/d3a4d8af4bebd42258fc876f8c91faffdd5aa9c33c8f1e80b9c10cff51ef77451a1ea8dba5884f3a35a4e4286f9da066e16cde9d345778034ed830e633f709d9 + version: 3.0.9 + resolution: "it-last@npm:3.0.9" + checksum: 10c0/5b9cfdfe41e3470d1419b29c84efb67cf252a4f5b6db455768272968f1a54030ed84a6a910c552ee5c0ade40312476c8510a6703a883d98851d8a078562205c3 languageName: node linkType: hard "it-map@npm:^3.0.5": - version: 3.1.2 - resolution: "it-map@npm:3.1.2" + version: 3.1.4 + resolution: "it-map@npm:3.1.4" dependencies: it-peekable: "npm:^3.0.0" - checksum: 10c0/2cad072e239d9de6a829eb0e5ec19f8a0d6276b457f747421d59af69554ea6637937c8f0988b0afed9eda79f22364422b183086b250008ec96858c14ac521383 + checksum: 10c0/05b35de0a0a531f4756f55977f89e17bd44fd5d19dc2223cd03860f8a07736b001a80e9cb7a2ed2826dabf6afb0244661da1fa51f18c3efe36718e5d099d026a languageName: node linkType: hard "it-peekable@npm:^3.0.0, it-peekable@npm:^3.0.3": - version: 3.0.6 - resolution: "it-peekable@npm:3.0.6" - checksum: 10c0/87e260b798db3ab44575c6625108e85b3e144d137a1667119c13e087d1558f9000933e2a302080f674914d4222223a27a56aeb21d6a0ecfee17922225baa81c2 + version: 3.0.8 + resolution: "it-peekable@npm:3.0.8" + checksum: 10c0/f7690d0dd90cfe83f2121d2a7880f0da050094df48d8fa4b61d73d327ee1e7caaea3ebdf6a46895c0504b8183ec90b9847b54aa09abba647bfa8b70cf276a3e2 languageName: node linkType: hard @@ -21962,47 +21667,46 @@ __metadata: linkType: hard "jackspeak@npm:^4.0.1": - version: 4.1.0 - resolution: "jackspeak@npm:4.1.0" + version: 4.1.1 + resolution: "jackspeak@npm:4.1.1" dependencies: "@isaacs/cliui": "npm:^8.0.2" - checksum: 10c0/08a6a24a366c90b83aef3ad6ec41dcaaa65428ffab8d80bc7172add0fbb8b134a34f415ad288b2a6fbd406526e9a62abdb40ed4f399fbe00cb45c44056d4dce0 + checksum: 10c0/84ec4f8e21d6514db24737d9caf65361511f75e5e424980eebca4199f400874f45e562ac20fa8aeb1dd20ca2f3f81f0788b6e9c3e64d216a5794fd6f30e0e042 languageName: node linkType: hard "jake@npm:^10.8.5": - version: 10.9.2 - resolution: "jake@npm:10.9.2" + version: 10.9.4 + resolution: "jake@npm:10.9.4" dependencies: - async: "npm:^3.2.3" - chalk: "npm:^4.0.2" + async: "npm:^3.2.6" filelist: "npm:^1.0.4" - minimatch: "npm:^3.1.2" + picocolors: "npm:^1.1.1" bin: jake: bin/cli.js - checksum: 10c0/c4597b5ed9b6a908252feab296485a4f87cba9e26d6c20e0ca144fb69e0c40203d34a2efddb33b3d297b8bd59605e6c1f44f6221ca1e10e69175ecbf3ff5fe31 + checksum: 10c0/bb52f000340d4a32f1a3893b9abe56ef2b77c25da4dbf2c0c874a8159d082dddda50a5ad10e26060198bd645b928ba8dba3b362710f46a247e335321188c5a9c languageName: node linkType: hard -"jayson@npm:4.1.3": - version: 4.1.3 - resolution: "jayson@npm:4.1.3" +"jayson@npm:4.2.0, jayson@npm:^4.1.1": + version: 4.2.0 + resolution: "jayson@npm:4.2.0" dependencies: "@types/connect": "npm:^3.4.33" "@types/node": "npm:^12.12.54" "@types/ws": "npm:^7.4.4" - JSONStream: "npm:^1.3.5" commander: "npm:^2.20.3" delay: "npm:^5.0.0" es6-promisify: "npm:^5.0.0" eyes: "npm:^0.1.8" isomorphic-ws: "npm:^4.0.1" json-stringify-safe: "npm:^5.0.1" + stream-json: "npm:^1.9.1" uuid: "npm:^8.3.2" ws: "npm:^7.5.10" bin: jayson: bin/jayson.js - checksum: 10c0/7d72728cf3379575d5e788e733bdb874ad3cea1335c85b1aae986719530cf859d4d1487e0d941d9d1dcb9d7b86877cffdb585deb273b5736cb40974f30ea695d + checksum: 10c0/062f525a0d15232c4361d10e0cd26960e998897e483408de03101e147c7bdf275db525bc1d5cc8aff4b777d1b1389004c8e9a5715304aedcf9930557787df6e3 languageName: node linkType: hard @@ -22504,6 +22208,13 @@ __metadata: languageName: node linkType: hard +"jose@npm:^6.0.8": + version: 6.1.0 + resolution: "jose@npm:6.1.0" + checksum: 10c0/f4518579e907317e144facd15c7627acd06097bbea17735097437217498aa419564c039dd4020f6af5f2d024a7cee6b7be4648ccbbdc238aedb80a47c061217d + languageName: node + linkType: hard + "joycon@npm:^3.1.1": version: 3.1.1 resolution: "joycon@npm:3.1.1" @@ -22532,6 +22243,13 @@ __metadata: languageName: node linkType: hard +"js-tokens@npm:^9.0.1": + version: 9.0.1 + resolution: "js-tokens@npm:9.0.1" + checksum: 10c0/68dcab8f233dde211a6b5fd98079783cbcd04b53617c1250e3553ee16ab3e6134f5e65478e41d82f6d351a052a63d71024553933808570f04dbf828d7921e80e + languageName: node + linkType: hard + "js-yaml@npm:3.x, js-yaml@npm:^3.13.1, js-yaml@npm:^3.6.1": version: 3.14.1 resolution: "js-yaml@npm:3.14.1" @@ -22555,13 +22273,6 @@ __metadata: languageName: node linkType: hard -"jsbn@npm:1.1.0": - version: 1.1.0 - resolution: "jsbn@npm:1.1.0" - checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 - languageName: node - linkType: hard - "jsdom@npm:^25.0.1": version: 25.0.1 resolution: "jsdom@npm:25.0.1" @@ -22596,7 +22307,7 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^3.0.2": +"jsesc@npm:^3.0.2, jsesc@npm:~3.1.0": version: 3.1.0 resolution: "jsesc@npm:3.1.0" bin: @@ -22614,15 +22325,6 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:~3.0.2": - version: 3.0.2 - resolution: "jsesc@npm:3.0.2" - bin: - jsesc: bin/jsesc - checksum: 10c0/ef22148f9e793180b14d8a145ee6f9f60f301abf443288117b4b6c53d0ecd58354898dc506ccbb553a5f7827965cd38bc5fb726575aae93c5e8915e2de8290e1 - languageName: node - linkType: hard - "json-bigint@npm:^1.0.0": version: 1.0.0 resolution: "json-bigint@npm:1.0.0" @@ -22772,15 +22474,15 @@ __metadata: linkType: hard "jsonfile@npm:^6.0.1": - version: 6.1.0 - resolution: "jsonfile@npm:6.1.0" + version: 6.2.0 + resolution: "jsonfile@npm:6.2.0" dependencies: graceful-fs: "npm:^4.1.6" universalify: "npm:^2.0.0" dependenciesMeta: graceful-fs: optional: true - checksum: 10c0/4f95b5e8a5622b1e9e8f33c96b7ef3158122f595998114d1e7f03985649ea99cb3cd99ce1ed1831ae94c8c8543ab45ebd044207612f31a56fd08462140e46865 + checksum: 10c0/7f4f43b08d1869ded8a6822213d13ae3b99d651151d77efd1557ced0889c466296a7d9684e397bd126acf5eb2cfcb605808c3e681d0fdccd2fe5a04b47e76c0d languageName: node linkType: hard @@ -22791,7 +22493,7 @@ __metadata: languageName: node linkType: hard -"jsonparse@npm:^1.2.0, jsonparse@npm:^1.3.1": +"jsonparse@npm:^1.3.1": version: 1.3.1 resolution: "jsonparse@npm:1.3.1" checksum: 10c0/89bc68080cd0a0e276d4b5ab1b79cacd68f562467008d176dc23e16e97d4efec9e21741d92ba5087a8433526a45a7e6a9d5ef25408696c402ca1cfbc01a90bf0 @@ -22927,8 +22629,8 @@ __metadata: linkType: hard "kubo-rpc-client@npm:^5.0.2": - version: 5.1.0 - resolution: "kubo-rpc-client@npm:5.1.0" + version: 5.4.1 + resolution: "kubo-rpc-client@npm:5.4.1" dependencies: "@ipld/dag-cbor": "npm:^9.0.0" "@ipld/dag-json": "npm:^10.0.0" @@ -22963,7 +22665,7 @@ __metadata: stream-to-it: "npm:^1.0.1" uint8arrays: "npm:^5.0.3" wherearewe: "npm:^2.0.1" - checksum: 10c0/b5acd1d98ab1d71eb7a22d69fb6b2d35f28f48eb9c1b484463d8dddc3b3c5f1e001ac06c442d15b2d749380f7c67c4a1673a36a7e68a98963cf6accdb3e437a0 + checksum: 10c0/eb1bc3a90cad4c36297260eea802b497cbdc97fc23d74529c8ed8fa5d335e4ac004041c529b721c3130c58964118eb43e1f1fcd8f5016c09dd8d6aeb3f2829d1 languageName: node linkType: hard @@ -23010,21 +22712,14 @@ __metadata: languageName: node linkType: hard -"libphonenumber-js@npm:^1.10.53": - version: 1.12.8 - resolution: "libphonenumber-js@npm:1.12.8" - checksum: 10c0/9c60d0f7b7b1c5bd85973fb80b8f7d7bbaf57fab2ca89b4f3712ad2e65ac7df8a3f52746a94104fffb618da4109f26fee07fc3225ac65dd17058b0d5d178cb47 - languageName: node - linkType: hard - -"libphonenumber-js@npm:^1.11.1": - version: 1.12.7 - resolution: "libphonenumber-js@npm:1.12.7" - checksum: 10c0/ac732b5e8bfe093b4c2aa470a69f52304ebe7cfefebe3ef902ba0cbbf2c159da00993cae0425c7e497961ca015d46082925f37a6c8626b07e98e1bb9e45414cb +"libphonenumber-js@npm:^1.10.53, libphonenumber-js@npm:^1.11.1": + version: 1.12.25 + resolution: "libphonenumber-js@npm:1.12.25" + checksum: 10c0/071c942e34e32d7883fb08a3c6f53003eca7067d06d19511c8ba7312fefe5420b998479afd078a5be6958bac163481072ba2560b4ccb5c680b7c6aa67b6810c2 languageName: node linkType: hard -"lilconfig@npm:^3.1.2, lilconfig@npm:^3.1.3": +"lilconfig@npm:^3.1.3": version: 3.1.3 resolution: "lilconfig@npm:3.1.3" checksum: 10c0/f5604e7240c5c275743561442fbc5abf2a84ad94da0f5adc71d25e31fa8483048de3dcedcb7a44112a942fed305fd75841cdf6c9681c7f640c63f1049e9a5dcc @@ -23081,34 +22776,23 @@ __metadata: languageName: node linkType: hard -"lit-element@npm:^4.0.0, lit-element@npm:^4.2.0": - version: 4.2.0 - resolution: "lit-element@npm:4.2.0" +"lit-element@npm:^4.2.0": + version: 4.2.1 + resolution: "lit-element@npm:4.2.1" dependencies: - "@lit-labs/ssr-dom-shim": "npm:^1.2.0" + "@lit-labs/ssr-dom-shim": "npm:^1.4.0" "@lit/reactive-element": "npm:^2.1.0" lit-html: "npm:^3.3.0" - checksum: 10c0/20577f2092ac1e1bd82fba2bbc9ce0122b35dc2495906d3fbcb437c3727b9c8ed1c0691b8b859f65a51e910db1341d95233c117e1e1c88c450b30e2d3b62fdb8 + checksum: 10c0/2cb30cc7c5a006cd7995f882c5e9ed201638dc3513fdee989dd7b78d8ceb201cf6930abe5ebc5185d7fc3648933a6b6187742d5534269961cd20b9a78617068d languageName: node linkType: hard -"lit-html@npm:^3.1.0, lit-html@npm:^3.3.0": - version: 3.3.0 - resolution: "lit-html@npm:3.3.0" +"lit-html@npm:^3.3.0": + version: 3.3.1 + resolution: "lit-html@npm:3.3.1" dependencies: "@types/trusted-types": "npm:^2.0.2" - checksum: 10c0/c1065048d89d93df6a46cdeed9abd637ae9bcc0847ee108dccbb2e1627a4074074e1d3ac9360e08a736d76f8c76b2c88166dbe465406da123b9137e29c2e0034 - languageName: node - linkType: hard - -"lit@npm:3.1.0": - version: 3.1.0 - resolution: "lit@npm:3.1.0" - dependencies: - "@lit/reactive-element": "npm:^2.0.0" - lit-element: "npm:^4.0.0" - lit-html: "npm:^3.1.0" - checksum: 10c0/7ca12c1b1593373d16b51b2220677d8936b4061de4f278ef2a85f15726bb4365a8eed89a0294816a10d6124dca81f02e83b5dfed9a6031e135a7bc68924eea6b + checksum: 10c0/0dfb645f35c2ae129a40c09550b4d0e60617b715af7f2e0b825cdfd0624118fc4bf16e9cfaabdfbe43469522e145057d3cc46c64ca1019681480e4b9ae8f52cd languageName: node linkType: hard @@ -23123,10 +22807,21 @@ __metadata: languageName: node linkType: hard +"lit@npm:^3": + version: 3.3.1 + resolution: "lit@npm:3.3.1" + dependencies: + "@lit/reactive-element": "npm:^2.1.0" + lit-element: "npm:^4.2.0" + lit-html: "npm:^3.3.0" + checksum: 10c0/9f3e171e211be7cd3e01693eac4ba4752fc7bafebc8298fc5b9cb70ff279dd4dc292f1cb425ca42f61c3767a75b7557295c2f6b16335719bc8cf1ca6f3622fb7 + languageName: node + linkType: hard + "loader-runner@npm:^4.2.0": - version: 4.3.0 - resolution: "loader-runner@npm:4.3.0" - checksum: 10c0/a44d78aae0907a72f73966fe8b82d1439c8c485238bd5a864b1b9a2a3257832effa858790241e6b37876b5446a78889adf2fcc8dd897ce54c089ecc0a0ce0bf0 + version: 4.3.1 + resolution: "loader-runner@npm:4.3.1" + checksum: 10c0/a523b6329f114e0a98317158e30a7dfce044b731521be5399464010472a93a15ece44757d1eaed1d8845019869c5390218bc1c7c3110f4eeaef5157394486eac languageName: node linkType: hard @@ -23218,7 +22913,7 @@ __metadata: languageName: node linkType: hard -"lodash.isstring@npm:^4, lodash.isstring@npm:^4.0.1": +"lodash.isstring@npm:^4.0.1": version: 4.0.1 resolution: "lodash.isstring@npm:4.0.1" checksum: 10c0/09eaf980a283f9eef58ef95b30ec7fee61df4d6bf4aba3b5f096869cc58f24c9da17900febc8ffd67819b4e29de29793190e88dc96983db92d84c95fa85d1c92 @@ -23417,10 +23112,10 @@ __metadata: languageName: node linkType: hard -"loupe@npm:^3.1.0, loupe@npm:^3.1.3": - version: 3.1.3 - resolution: "loupe@npm:3.1.3" - checksum: 10c0/f5dab4144254677de83a35285be1b8aba58b3861439ce4ba65875d0d5f3445a4a496daef63100ccf02b2dbc25bf58c6db84c9cb0b96d6435331e9d0a33b48541 +"loupe@npm:^3.1.0, loupe@npm:^3.1.4": + version: 3.2.1 + resolution: "loupe@npm:3.2.1" + checksum: 10c0/910c872cba291309664c2d094368d31a68907b6f5913e989d301b5c25f30e97d76d77f23ab3bf3b46d0f601ff0b6af8810c10c31b91d2c6b2f132809ca2cc705 languageName: node linkType: hard @@ -23441,9 +23136,9 @@ __metadata: linkType: hard "lru-cache@npm:^11.0.0": - version: 11.1.0 - resolution: "lru-cache@npm:11.1.0" - checksum: 10c0/85c312f7113f65fae6a62de7985348649937eb34fb3d212811acbf6704dc322a421788aca253b62838f1f07049a84cc513d88f494e373d3756514ad263670a64 + version: 11.2.2 + resolution: "lru-cache@npm:11.2.2" + checksum: 10c0/72d7831bbebc85e2bdefe01047ee5584db69d641c48d7a509e86f66f6ee111b30af7ec3bd68a967d47b69a4b1fa8bbf3872630bd06a63b6735e6f0a5f1c8e83d languageName: node linkType: hard @@ -23477,7 +23172,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:0.30.17, magic-string@npm:^0.30.17, magic-string@npm:^0.30.3": +"magic-string@npm:0.30.17": version: 0.30.17 resolution: "magic-string@npm:0.30.17" dependencies: @@ -23495,6 +23190,22 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:^0.30.17, magic-string@npm:^0.30.3": + version: 0.30.21 + resolution: "magic-string@npm:0.30.21" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.5" + checksum: 10c0/299378e38f9a270069fc62358522ddfb44e94244baa0d6a8980ab2a9b2490a1d03b236b447eee309e17eb3bddfa482c61259d47960eb018a904f0ded52780c4a + languageName: node + linkType: hard + +"main-event@npm:^1.0.1": + version: 1.0.1 + resolution: "main-event@npm:1.0.1" + checksum: 10c0/c71f0d2974bdb3204141b39af90236235143f8734d2c9b5415c0f6ed4f08099e83c1d9d827581654d3add3e0137d0b4d338ca5c2e14d07b71a61f3164716d98b + languageName: node + linkType: hard + "make-dir@npm:^3.1.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" @@ -23647,6 +23358,17 @@ __metadata: languageName: node linkType: hard +"md5@npm:^2.3.0": + version: 2.3.0 + resolution: "md5@npm:2.3.0" + dependencies: + charenc: "npm:0.0.2" + crypt: "npm:0.0.2" + is-buffer: "npm:~1.1.6" + checksum: 10c0/14a21d597d92e5b738255fbe7fe379905b8cb97e0a49d44a20b58526a646ec5518c337b817ce0094ca94d3e81a3313879c4c7b510d250c282d53afbbdede9110 + languageName: node + linkType: hard + "mdurl@npm:^2.0.0": version: 2.0.0 resolution: "mdurl@npm:2.0.0" @@ -23722,14 +23444,14 @@ __metadata: linkType: hard "meros@npm:^1.2.1": - version: 1.3.0 - resolution: "meros@npm:1.3.0" + version: 1.3.2 + resolution: "meros@npm:1.3.2" peerDependencies: "@types/node": ">=13" peerDependenciesMeta: "@types/node": optional: true - checksum: 10c0/2cf9a31228ae6441428a750b67beafec062cc0d693942045336dbe6bfb44507e0ca42854a46f483ebd97e4d78cbc31322b3b85f9648b60fa7a4b28fc0f858f51 + checksum: 10c0/ebb0e462e4aeccaf569593c714f738e6f941dcf10b537c6aa1acec92ce8894cc76f6a995ecaac89b0bcefe240ec20539ade4d7fe897845cd815de1bf78099836 languageName: node linkType: hard @@ -23740,14 +23462,14 @@ __metadata: languageName: node linkType: hard -"micro-eth-signer@npm:^0.16.0": - version: 0.16.0 - resolution: "micro-eth-signer@npm:0.16.0" +"micro-eth-signer@npm:^0.14.0": + version: 0.14.0 + resolution: "micro-eth-signer@npm:0.14.0" dependencies: - "@noble/curves": "npm:~1.9.2" - "@noble/hashes": "npm:2.0.0-beta.1" - micro-packed: "npm:~0.7.3" - checksum: 10c0/daac43e339c3bcb4c1598bfb0cfa83878a25f3464bdbecbf1135dd8ffbe1fa687eec6e5fc82fb5a8d007b5fafcae682f66cddee24724c75c95019625d735a36f + "@noble/curves": "npm:~1.8.1" + "@noble/hashes": "npm:~1.7.1" + micro-packed: "npm:~0.7.2" + checksum: 10c0/62c90d54d2b97cb4eaf713c69bc4ceb5903012d0237c26f0966076cfb89c4527de68b395e1bc29e6f237152ce08f7b551fb57b332003518a1331c2c0890fb164 languageName: node linkType: hard @@ -23758,7 +23480,7 @@ __metadata: languageName: node linkType: hard -"micro-packed@npm:~0.7.3": +"micro-packed@npm:~0.7.2": version: 0.7.3 resolution: "micro-packed@npm:0.7.3" dependencies: @@ -23925,11 +23647,11 @@ __metadata: linkType: hard "minimatch@npm:^10.0.0": - version: 10.0.1 - resolution: "minimatch@npm:10.0.1" + version: 10.1.1 + resolution: "minimatch@npm:10.1.1" dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10c0/e6c29a81fe83e1877ad51348306be2e8aeca18c88fdee7a99df44322314279e15799e41d7cb274e4e8bb0b451a3bc622d6182e157dfa1717d6cda75e9cd8cd5d + "@isaacs/brace-expansion": "npm:^5.0.0" + checksum: 10c0/c85d44821c71973d636091fddbfbffe62370f5ee3caf0241c5b60c18cd289e916200acb2361b7e987558cd06896d153e25d505db9fc1e43e6b4b6752e2702902 languageName: node linkType: hard @@ -24079,16 +23801,16 @@ __metadata: languageName: node linkType: hard -"minizlib@npm:^3.0.1": - version: 3.0.2 - resolution: "minizlib@npm:3.0.2" +"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0": + version: 3.1.0 + resolution: "minizlib@npm:3.1.0" dependencies: minipass: "npm:^7.1.2" - checksum: 10c0/9f3bd35e41d40d02469cb30470c55ccc21cae0db40e08d1d0b1dff01cc8cc89a6f78e9c5d2b7c844e485ec0a8abc2238111213fdc5b2038e6d1012eacf316f78 + checksum: 10c0/5aad75ab0090b8266069c9aabe582c021ae53eb33c6c691054a13a45db3b4f91a7fb1bd79151e6b4e9e9a86727b522527c0a06ec7d45206b745d54cd3097bcec languageName: node linkType: hard -"mipd@npm:0.0.7": +"mipd@npm:0.0.7, mipd@npm:^0.0.7": version: 0.0.7 resolution: "mipd@npm:0.0.7" peerDependencies: @@ -24100,7 +23822,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:0.5.x, mkdirp@npm:^0.5.4": +"mkdirp@npm:0.5.x, mkdirp@npm:^0.5.6": version: 0.5.6 resolution: "mkdirp@npm:0.5.6" dependencies: @@ -24120,15 +23842,6 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^3.0.1": - version: 3.0.1 - resolution: "mkdirp@npm:3.0.1" - bin: - mkdirp: dist/cjs/src/bin.js - checksum: 10c0/9f2b975e9246351f5e3a40dcfac99fcd0baa31fbfab615fe059fb11e51f10e4803c63de1f384c54d656e4db31d000e4767e9ef076a22e12a641357602e31d57d - languageName: node - linkType: hard - "mnemonist@npm:^0.38.0": version: 0.38.5 resolution: "mnemonist@npm:0.38.5" @@ -24183,7 +23896,14 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.3": +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc + languageName: node + linkType: hard + +"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 @@ -24191,44 +23911,44 @@ __metadata: linkType: hard "ms@npm:^3.0.0-canary.1": - version: 3.0.0-canary.1 - resolution: "ms@npm:3.0.0-canary.1" - checksum: 10c0/81040c55778c01b6cb8fd35aee71465b765a8ab5daa2f8d46a59f9fde0f86c668483232c82c9e8fb7d9379a3671b3bdd5f34b38e54dcedb608d791d149bb2815 + version: 3.0.0-canary.202508261828 + resolution: "ms@npm:3.0.0-canary.202508261828" + checksum: 10c0/d4921b3e2c46daa0a4119efcf7cfd6b0d75ab1d572314bc026c2403aa3e4a7f1e35f0db06979eaa2700f80494469e72587b25b7083d1d9386af30c4130fc1a2d languageName: node linkType: hard "mui-image@npm:^1.0.7": - version: 1.0.7 - resolution: "mui-image@npm:1.0.7" + version: 1.0.9 + resolution: "mui-image@npm:1.0.9" peerDependencies: "@emotion/react": ^11.4.1 "@emotion/styled": ^11.3.0 - "@mui/material": ^5.0.1 + "@mui/material": ^5.0.1 || ^6.0.0 || ^7.0.0 prop-types: ^15.7.2 - react: ^17.0.2 || ^18.0.0 - checksum: 10c0/8625d4efe0cccc5294e8d670bf9a0ea5a60a084c79727913b5d69d89459e920320c7b5289164098d33cfddec6bc43c13f550ff175ea89bc62a421790db3d737c + react: ^17.0.2 || ^18.0.0 || ^19.0.0 + checksum: 10c0/ad17200a32c3633776ee8351d2071ee7e38faaf41b2e1c26673cab75a2a1f6a94d6d2939d34ec65ba9b088fc34d55b56798afd71e9753818e2079306992ce3d1 languageName: node linkType: hard -"multer@npm:1.4.4-lts.1": - version: 1.4.4-lts.1 - resolution: "multer@npm:1.4.4-lts.1" +"multer@npm:2.0.2": + version: 2.0.2 + resolution: "multer@npm:2.0.2" dependencies: append-field: "npm:^1.0.0" - busboy: "npm:^1.0.0" - concat-stream: "npm:^1.5.2" - mkdirp: "npm:^0.5.4" + busboy: "npm:^1.6.0" + concat-stream: "npm:^2.0.0" + mkdirp: "npm:^0.5.6" object-assign: "npm:^4.1.1" - type-is: "npm:^1.6.4" - xtend: "npm:^4.0.0" - checksum: 10c0/63277d3483869f424274ef8ce6ab7ff4ce9d2c1cc69e707fc8b5d9b2b348ae6f742809e0b357a591dea885d147594bcd06528d3d6bbe32046115d4a7e126b954 + type-is: "npm:^1.6.18" + xtend: "npm:^4.0.2" + checksum: 10c0/d3b99dd0512169bbabf15440e1bbb3ecdc000b761e5a3e4aaca40b5e5e213c6cdcc9b7dffebaa601b7691a84f6876aa87e0173ffcc47139253793cf5657819eb languageName: node linkType: hard -"multiformats@npm:^13.0.0, multiformats@npm:^13.1.0, multiformats@npm:^13.3.1": - version: 13.3.2 - resolution: "multiformats@npm:13.3.2" - checksum: 10c0/a2c6f17b04d6a9cd5d0cb7d07e32dc4f3be82804d44fc056357a98e449340a7ad37d0789da41186ccd8c953e0cf783be3b71f03a00b0a84788689f544ecade46 +"multiformats@npm:^13.0.0, multiformats@npm:^13.1.0, multiformats@npm:^13.3.6, multiformats@npm:^13.4.0": + version: 13.4.1 + resolution: "multiformats@npm:13.4.1" + checksum: 10c0/ed3be7a421f579a0c36464b6faac7948e84c9985bc5d62d6bdb5a96d0fbfd7979d7e7d5f6735125f7cc17e3afa2778893e3444c98d6e564027862f3f0755eae8 languageName: node linkType: hard @@ -24287,7 +24007,7 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.7, nanoid@npm:^3.3.8": +"nanoid@npm:^3.3.11, nanoid@npm:^3.3.7": version: 3.3.11 resolution: "nanoid@npm:3.3.11" bin: @@ -24297,29 +24017,20 @@ __metadata: linkType: hard "nanoid@npm:^5.0.7": - version: 5.1.5 - resolution: "nanoid@npm:5.1.5" + version: 5.1.6 + resolution: "nanoid@npm:5.1.6" bin: nanoid: bin/nanoid.js - checksum: 10c0/e6004f1ad6c7123eeb037062c4441d44982037dc043aabb162457ef6986e99964ba98c63c975f96c547403beb0bf95bc537bd7bf9a09baf381656acdc2975c3c - languageName: node - linkType: hard - -"napi-postinstall@npm:^0.2.2": - version: 0.2.3 - resolution: "napi-postinstall@npm:0.2.3" - bin: - napi-postinstall: lib/cli.js - checksum: 10c0/125cb677d59f284e61cd9b4cd840cf735edd4c325ffc54af4fad16c8726642ffeddaa63c5ca3533b5e7023be4d8e9ff223484c5eea2a8efe2e2498fd063cabbd + checksum: 10c0/27b5b055ad8332cf4f0f9f6e2a494aa7e5ded89df4cab8c8490d4eabefe72c4423971d2745d22002868b1d50576a5e42b7b05214733b19f576382323282dd26e languageName: node linkType: hard "napi-postinstall@npm:^0.3.0": - version: 0.3.0 - resolution: "napi-postinstall@npm:0.3.0" + version: 0.3.4 + resolution: "napi-postinstall@npm:0.3.4" bin: napi-postinstall: lib/cli.js - checksum: 10c0/dd5b295a0c7e669dda81a553b5defcdbe56805beb4279cd0df973454f072c083f574d399c4c825eece128113159658b031b4ac4b9dcb5735c5e34ddaefd3a3ca + checksum: 10c0/b33d64150828bdade3a5d07368a8b30da22ee393f8dd8432f1b9e5486867be21c84ec443dd875dd3ef3c7401a079a7ab7e2aa9d3538a889abbcd96495d5104fe languageName: node linkType: hard @@ -24368,7 +24079,7 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:^0.6.3": +"negotiator@npm:^0.6.3, negotiator@npm:~0.6.4": version: 0.6.4 resolution: "negotiator@npm:0.6.4" checksum: 10c0/3e677139c7fb7628a6f36335bf11a885a62c21d5390204590a1a214a5631fcbe5ea74ef6a610b60afe84b4d975cbe0566a23f20ee17c77c73e74b80032108dea @@ -24425,13 +24136,13 @@ __metadata: linkType: hard "nock@npm:^14.0.3": - version: 14.0.4 - resolution: "nock@npm:14.0.4" + version: 14.0.10 + resolution: "nock@npm:14.0.10" dependencies: - "@mswjs/interceptors": "npm:^0.38.5" + "@mswjs/interceptors": "npm:^0.39.5" json-stringify-safe: "npm:^5.0.1" propagate: "npm:^2.0.0" - checksum: 10c0/54e958aa0a734b45207936602616ce9009b32291d22a93f94e2058f3ee20f317b6f974814efc52f32ebb92c6c30e6e15d8a53c17744a95fa2df4e0c267da1af1 + checksum: 10c0/4868ce7c3e6a51ee83b496a1305eb821ad89427eb9e09c3c431344d91fd49974717e214fe97548be7d5f9a8039fefc3602ffbaad036f3508dd2c143726e3cfb8 languageName: node linkType: hard @@ -24487,10 +24198,10 @@ __metadata: languageName: node linkType: hard -"node-fetch-native@npm:^1.6.4, node-fetch-native@npm:^1.6.6": - version: 1.6.6 - resolution: "node-fetch-native@npm:1.6.6" - checksum: 10c0/8c12dab0e640d8bc126a03d604af9cf3fc1b87f2cda5af0c71601079d5ed835c1dc149c7042b61c83f252a382e1cf1e541788f4c9e8e6c089af77497190f5dc3 +"node-fetch-native@npm:^1.6.7": + version: 1.6.7 + resolution: "node-fetch-native@npm:1.6.7" + checksum: 10c0/8b748300fb053d21ca4d3db9c3ff52593d5e8f8a2d9fe90cbfad159676e324b954fdaefab46aeca007b5b9edab3d150021c4846444e4e8ab1f4e44cd3807be87 languageName: node linkType: hard @@ -24520,8 +24231,8 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 11.2.0 - resolution: "node-gyp@npm:11.2.0" + version: 11.5.0 + resolution: "node-gyp@npm:11.5.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" @@ -24535,7 +24246,7 @@ __metadata: which: "npm:^5.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10c0/bd8d8c76b06be761239b0c8680f655f6a6e90b48e44d43415b11c16f7e8c15be346fba0cbf71588c7cdfb52c419d928a7d3db353afc1d952d19756237d8f10b9 + checksum: 10c0/31ff49586991b38287bb15c3d529dd689cfc32f992eed9e6997b9d712d5d21fe818a8b1bbfe3b76a7e33765c20210c5713212f4aa329306a615b87d8a786da3a languageName: node linkType: hard @@ -24546,17 +24257,17 @@ __metadata: languageName: node linkType: hard -"node-mock-http@npm:^1.0.0": - version: 1.0.0 - resolution: "node-mock-http@npm:1.0.0" - checksum: 10c0/cb3fd7c17e7043b87a8d7a9ef1dcd4e2cde312cd224716c5fb3a4b56b48607c257a2e7356e73262db60ebf9e17e23b7a9c5230785f630c6a437090bfd26dd242 +"node-mock-http@npm:^1.0.2": + version: 1.0.3 + resolution: "node-mock-http@npm:1.0.3" + checksum: 10c0/663f2a13518fc89b0dc69f96ba4442b5d1ecbbf20a833283725c8d2d92286af1b634803822432985be5999317fd5f23edbf2a62335fe6dd38d6b19dd7b107559 languageName: node linkType: hard -"node-releases@npm:^2.0.19": - version: 2.0.19 - resolution: "node-releases@npm:2.0.19" - checksum: 10c0/52a0dbd25ccf545892670d1551690fe0facb6a471e15f2cfa1b20142a5b255b3aa254af5f59d6ecb69c2bec7390bc643c43aa63b13bf5e64b6075952e716b1aa +"node-releases@npm:^2.0.26": + version: 2.0.27 + resolution: "node-releases@npm:2.0.27" + checksum: 10c0/f1e6583b7833ea81880627748d28a3a7ff5703d5409328c216ae57befbced10ce2c991bea86434e8ec39003bd017f70481e2e5f8c1f7e0a7663241f81d6e00e2 languageName: node linkType: hard @@ -24745,9 +24456,9 @@ __metadata: linkType: hard "nwsapi@npm:^2.2.12": - version: 2.2.20 - resolution: "nwsapi@npm:2.2.20" - checksum: 10c0/07f4dafa3186aef7c007863e90acd4342a34ba9d44b22f14f644fdb311f6086887e21c2fc15efaa826c2bc39ab2bc841364a1a630e7c87e0cb723ba59d729297 + version: 2.2.22 + resolution: "nwsapi@npm:2.2.22" + checksum: 10c0/b6a0e5ea6754aacfdfe551c8c0f1b374eaf94d48b0a4e7eac666f879ecbc1892ef1d7c457e9b02eefad3fa1323ea1faebcba533eeab6582e24c9c503411bf879 languageName: node linkType: hard @@ -24849,7 +24560,7 @@ __metadata: languageName: node linkType: hard -"object.values@npm:^1.1.6, object.values@npm:^1.2.0, object.values@npm:^1.2.1": +"object.values@npm:^1.1.6, object.values@npm:^1.2.1": version: 1.2.1 resolution: "object.values@npm:1.2.1" dependencies: @@ -24875,14 +24586,14 @@ __metadata: languageName: node linkType: hard -"ofetch@npm:^1.4.1": - version: 1.4.1 - resolution: "ofetch@npm:1.4.1" +"ofetch@npm:^1.5.0": + version: 1.5.1 + resolution: "ofetch@npm:1.5.1" dependencies: - destr: "npm:^2.0.3" - node-fetch-native: "npm:^1.6.4" - ufo: "npm:^1.5.4" - checksum: 10c0/fd712e84058ad5058a5880fe805e9bb1c2084fb7f9c54afa99a2c7e84065589b4312fa6e2dcca4432865e44ad1ec13fcd055c1bf7977ced838577a45689a04fa + destr: "npm:^2.0.5" + node-fetch-native: "npm:^1.6.7" + ufo: "npm:^1.6.1" + checksum: 10c0/97ebc600512ea0ab401e97c73313218cc53c9b530b32ec8c995c347b0c68887129993168d1753f527761a64c6f93a5d823ce1378ccec95fc65a606f323a79a6c languageName: node linkType: hard @@ -24909,10 +24620,10 @@ __metadata: languageName: node linkType: hard -"on-headers@npm:~1.0.2": - version: 1.0.2 - resolution: "on-headers@npm:1.0.2" - checksum: 10c0/f649e65c197bf31505a4c0444875db0258e198292f34b884d73c2f751e91792ef96bb5cf89aa0f4fecc2e4dc662461dda606b1274b0e564f539cae5d2f5fc32f +"on-headers@npm:~1.1.0": + version: 1.1.0 + resolution: "on-headers@npm:1.1.0" + checksum: 10c0/2c3b6b0d68ec9adbd561dc2d61c9b14da8ac03d8a2f0fd9e97bdf0600c887d5d97f664ff3be6876cf40cda6e3c587d73a4745e10b426ac50c7664fc5a0dfc0a1 languageName: node linkType: hard @@ -24952,15 +24663,15 @@ __metadata: languageName: node linkType: hard -"open@npm:10.1.0": - version: 10.1.0 - resolution: "open@npm:10.1.0" +"open@npm:10.1.2": + version: 10.1.2 + resolution: "open@npm:10.1.2" dependencies: default-browser: "npm:^5.2.1" define-lazy-prop: "npm:^3.0.0" is-inside-container: "npm:^1.0.0" is-wsl: "npm:^3.1.0" - checksum: 10c0/c86d0b94503d5f735f674158d5c5d339c25ec2927562f00ee74590727292ed23e1b8d9336cb41ffa7e1fa4d3641d29b199b4ea37c78cb557d72b511743e90ebb + checksum: 10c0/1bee796f06e549ce764f693272100323fbc04da8fa3c5b0402d6c2d11b3d76fa0aac0be7535e710015ff035326638e3b9a563f3b0e7ac3266473ed5663caae6d languageName: node linkType: hard @@ -24975,7 +24686,23 @@ __metadata: languageName: node linkType: hard -"openpgp@npm:5.11.2, openpgp@npm:^5.11.2": +"openapi-fetch@npm:^0.13.5": + version: 0.13.8 + resolution: "openapi-fetch@npm:0.13.8" + dependencies: + openapi-typescript-helpers: "npm:^0.0.15" + checksum: 10c0/28fd9b2f23be8ed1b8ac489ae9715b087de6a70be4ce3c40285d9a1fa1f033ecd2d08f767765c5a45a1797bb0996bd331cc57fb5bac1e259d999b58567f029ac + languageName: node + linkType: hard + +"openapi-typescript-helpers@npm:^0.0.15": + version: 0.0.15 + resolution: "openapi-typescript-helpers@npm:0.0.15" + checksum: 10c0/5eb68d487b787e3e31266470b1a310726549dd45a1079655ab18066ab291b0b3c343fdf629991013706a2329b86964f8798d56ef0272b94b931fe6c19abd7a88 + languageName: node + linkType: hard + +"openpgp@npm:5.11.2": version: 5.11.2 resolution: "openpgp@npm:5.11.2" dependencies: @@ -24984,6 +24711,15 @@ __metadata: languageName: node linkType: hard +"openpgp@npm:^5.11.2": + version: 5.11.3 + resolution: "openpgp@npm:5.11.3" + dependencies: + asn1.js: "npm:^5.0.0" + checksum: 10c0/0e7b9c562d6eb9fefb132a6c70675ad149b3f7bbec8d60b79f198f4834fcd54c15c0d199809b2c01e787c5769e50a9a18f950d9f49416d8c28587ac84bc171c1 + languageName: node + linkType: hard + "optionator@npm:^0.8.1": version: 0.8.3 resolution: "optionator@npm:0.8.3" @@ -25130,45 +24866,66 @@ __metadata: languageName: node linkType: hard -"ox@npm:0.7.1": - version: 0.7.1 - resolution: "ox@npm:0.7.1" +"ox@npm:0.9.3": + version: 0.9.3 + resolution: "ox@npm:0.9.3" dependencies: - "@adraffy/ens-normalize": "npm:^1.10.1" + "@adraffy/ens-normalize": "npm:^1.11.0" "@noble/ciphers": "npm:^1.3.0" - "@noble/curves": "npm:^1.6.0" - "@noble/hashes": "npm:^1.5.0" - "@scure/bip32": "npm:^1.5.0" - "@scure/bip39": "npm:^1.4.0" - abitype: "npm:^1.0.6" + "@noble/curves": "npm:1.9.1" + "@noble/hashes": "npm:^1.8.0" + "@scure/bip32": "npm:^1.7.0" + "@scure/bip39": "npm:^1.6.0" + abitype: "npm:^1.0.9" eventemitter3: "npm:5.0.1" peerDependencies: typescript: ">=5.4.0" peerDependenciesMeta: typescript: optional: true - checksum: 10c0/15370d76f7e5fe1b06c5b9986bc709a8c433e4242660900b3d1adb2a56c8f762a2010a9166bdb95bdf531806cde7891911456c7ec8ba135fc232a5d5037ac673 + checksum: 10c0/e04f8f5d6de4fbc65d18e8388bbb4c6a09e7b69e6d51c45985bd2ed01414fda154a78dfb8fcd46e53842794a10ef37fff2b4d8b786bd7a7476a3772e8cc8e64a languageName: node linkType: hard -"ox@npm:0.8.1": - version: 0.8.1 - resolution: "ox@npm:0.8.1" +"ox@npm:0.9.6": + version: 0.9.6 + resolution: "ox@npm:0.9.6" + dependencies: + "@adraffy/ens-normalize": "npm:^1.11.0" + "@noble/ciphers": "npm:^1.3.0" + "@noble/curves": "npm:1.9.1" + "@noble/hashes": "npm:^1.8.0" + "@scure/bip32": "npm:^1.7.0" + "@scure/bip39": "npm:^1.6.0" + abitype: "npm:^1.0.9" + eventemitter3: "npm:5.0.1" + peerDependencies: + typescript: ">=5.4.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/559b39051f80a25352e1ca6e7aba6e04f60c4e29f98e4ef3ec0c8d2b0432d400004ce09d2991200eaf21745179af47367dc28c553da43403dd0b69c2453ebabe + languageName: node + linkType: hard + +"ox@npm:^0.9.6": + version: 0.9.14 + resolution: "ox@npm:0.9.14" dependencies: "@adraffy/ens-normalize": "npm:^1.11.0" "@noble/ciphers": "npm:^1.3.0" - "@noble/curves": "npm:^1.9.1" + "@noble/curves": "npm:1.9.1" "@noble/hashes": "npm:^1.8.0" "@scure/bip32": "npm:^1.7.0" "@scure/bip39": "npm:^1.6.0" - abitype: "npm:^1.0.8" + abitype: "npm:^1.0.9" eventemitter3: "npm:5.0.1" peerDependencies: typescript: ">=5.4.0" peerDependenciesMeta: typescript: optional: true - checksum: 10c0/3d04df384a35c94b21a29d867ee3735acf9a975d46ffb0a26cc438b92f1e4952b2b3cddb74b4213e88d2988e82687db9b85c1018c5d4b24737b1c3d7cb7c809e + checksum: 10c0/287e6beb626881882aafbd9b1d12583faace4693beb46860afa183b48a3469d7ff7ab0e9f7d282efc83d57c6d71c8ed6767f864bd2578fbe4a54825b265afb2f languageName: node linkType: hard @@ -25281,13 +25038,13 @@ __metadata: languageName: node linkType: hard -"p-queue@npm:^8.0.1": - version: 8.1.0 - resolution: "p-queue@npm:8.1.0" +"p-queue@npm:^9.0.0": + version: 9.0.0 + resolution: "p-queue@npm:9.0.0" dependencies: eventemitter3: "npm:^5.0.1" - p-timeout: "npm:^6.1.2" - checksum: 10c0/6bdea170840546769c29682fed212745c951933476761ed3a981967fab624c7c0120dff79bd99a1ac8b650b420719a245813e944af4b8ee77d4dd78adbf5fe75 + p-timeout: "npm:^7.0.0" + checksum: 10c0/0f27fcbec9e4e02f34cc3660f14b5746798c51a2425dc3d3c5238924c34726b1580606d5d1432fc05304e2350c00b112ded03eb43c1b49de7791a7150fbfcb4e languageName: node linkType: hard @@ -25310,10 +25067,10 @@ __metadata: languageName: node linkType: hard -"p-timeout@npm:^6.1.2": - version: 6.1.4 - resolution: "p-timeout@npm:6.1.4" - checksum: 10c0/019edad1c649ab07552aa456e40ce7575c4b8ae863191477f02ac8d283ac8c66cedef0ca93422735130477a051dfe952ba717641673fd3599befdd13f63bcc33 +"p-timeout@npm:^7.0.0": + version: 7.0.1 + resolution: "p-timeout@npm:7.0.1" + checksum: 10c0/87d96529d1096d506607218dba6f9ec077c6dbedd0c2e2788c748e33bcd05faae8a81009fd9d22ec0b3c95fc83f4717306baba223f6e464737d8b99294c3e863 languageName: node linkType: hard @@ -25356,17 +25113,16 @@ __metadata: languageName: node linkType: hard -"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.7": - version: 5.1.7 - resolution: "parse-asn1@npm:5.1.7" +"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.9": + version: 5.1.9 + resolution: "parse-asn1@npm:5.1.9" dependencies: asn1.js: "npm:^4.10.1" browserify-aes: "npm:^1.2.0" evp_bytestokey: "npm:^1.0.3" - hash-base: "npm:~3.0" - pbkdf2: "npm:^3.1.2" + pbkdf2: "npm:^3.1.5" safe-buffer: "npm:^5.2.1" - checksum: 10c0/05eb5937405c904eb5a7f3633bab1acc11f4ae3478a07ef5c6d81ce88c3c0e505ff51f9c7b935ebc1265c868343793698fc91025755a895d0276f620f95e8a82 + checksum: 10c0/6dfe27c121be3d63ebbf95f03d2ae0a07dd716d44b70b0bd3458790a822a80de05361c62147271fd7b845dcc2d37755d9c9c393064a3438fe633779df0bc07e7 languageName: node linkType: hard @@ -25534,9 +25290,9 @@ __metadata: linkType: hard "path-to-regexp@npm:^8.0.0, path-to-regexp@npm:^8.1.0": - version: 8.2.0 - resolution: "path-to-regexp@npm:8.2.0" - checksum: 10c0/ef7d0a887b603c0a142fad16ccebdcdc42910f0b14830517c724466ad676107476bba2fe9fffd28fd4c141391ccd42ea426f32bb44c2c82ecaefe10c37b90f5a + version: 8.3.0 + resolution: "path-to-regexp@npm:8.3.0" + checksum: 10c0/ee1544a73a3f294a97a4c663b0ce71bbf1621d732d80c9c9ed201b3e911a86cb628ebad691b9d40f40a3742fe22011e5a059d8eed2cf63ec2cb94f6fb4efe67c languageName: node linkType: hard @@ -25562,9 +25318,9 @@ __metadata: linkType: hard "pathval@npm:^2.0.0": - version: 2.0.0 - resolution: "pathval@npm:2.0.0" - checksum: 10c0/602e4ee347fba8a599115af2ccd8179836a63c925c23e04bd056d0674a64b39e3a081b643cc7bc0b84390517df2d800a46fcc5598d42c155fe4977095c2f77c5 + version: 2.0.1 + resolution: "pathval@npm:2.0.1" + checksum: 10c0/460f4709479fbf2c45903a65655fc8f0a5f6d808f989173aeef5fdea4ff4f303dc13f7870303999add60ec49d4c14733895c0a869392e9866f1091fa64fd7581 languageName: node linkType: hard @@ -25575,37 +25331,31 @@ __metadata: languageName: node linkType: hard -"pbkdf2@npm:^3.0.17, pbkdf2@npm:^3.1.2": - version: 3.1.2 - resolution: "pbkdf2@npm:3.1.2" +"pbkdf2@npm:^3.0.17, pbkdf2@npm:^3.1.2, pbkdf2@npm:^3.1.5": + version: 3.1.5 + resolution: "pbkdf2@npm:3.1.5" dependencies: - create-hash: "npm:^1.1.2" - create-hmac: "npm:^1.1.4" - ripemd160: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - sha.js: "npm:^2.4.8" - checksum: 10c0/5a30374e87d33fa080a92734d778cf172542cc7e41b96198c4c88763997b62d7850de3fbda5c3111ddf79805ee7c1da7046881c90ac4920b5e324204518b05fd - languageName: node - linkType: hard - -"peek-readable@npm:^7.0.0": - version: 7.0.0 - resolution: "peek-readable@npm:7.0.0" - checksum: 10c0/a979b0678a5c2b58c2a755eadc5bb990814e479ff17b9fbcec39a6c88f278eb9a788b6ae13371ee84f7a2c6672505dac961f99ccc0c0300354d9b4dc5a207604 + create-hash: "npm:^1.2.0" + create-hmac: "npm:^1.1.7" + ripemd160: "npm:^2.0.3" + safe-buffer: "npm:^5.2.1" + sha.js: "npm:^2.4.12" + to-buffer: "npm:^1.2.1" + checksum: 10c0/ea42e8695e49417eefabb19a08ab19a602cc6cc72d2df3f109c39309600230dee3083a6f678d5d42fe035d6ae780038b80ace0e68f9792ee2839bf081fe386f3 languageName: node linkType: hard "pg-cloudflare@npm:^1.1.1": - version: 1.2.5 - resolution: "pg-cloudflare@npm:1.2.5" - checksum: 10c0/48b9105ef027c7b3f57ef88ceaec3634cd82120059bd68273cce06989a1ec547e0b0fbb5d1afdd0711824f409c8b410f9bdec2f6c8034728992d3658c0b36f86 + version: 1.2.7 + resolution: "pg-cloudflare@npm:1.2.7" + checksum: 10c0/8a52713dbdecc9d389dc4e65e3b7ede2e199ec3715f7491ee80a15db171f2d75677a102e9c2cef0cb91a2f310e91f976eaec0dd6ef5d8bf357de0b948f9d9431 languageName: node linkType: hard "pg-connection-string@npm:^2.7.0": - version: 2.8.5 - resolution: "pg-connection-string@npm:2.8.5" - checksum: 10c0/5f65afc9dfc99ecf1583a1699c97511f3d505659c9c6a91db8cd0ffe862caa29060722712a034abd6da493356567261febf18b3a6ef223d0a219f0d50d959b97 + version: 2.9.1 + resolution: "pg-connection-string@npm:2.9.1" + checksum: 10c0/9a646529bbc0843806fc5de98ce93735a4612b571f11867178a85665d11989a827e6fd157388ca0e34ec948098564fce836c178cfd499b9f0e8cd9972b8e2e5c languageName: node linkType: hard @@ -25624,18 +25374,18 @@ __metadata: linkType: hard "pg-pool@npm:^3.7.0": - version: 3.9.6 - resolution: "pg-pool@npm:3.9.6" + version: 3.10.1 + resolution: "pg-pool@npm:3.10.1" peerDependencies: pg: ">=8.0" - checksum: 10c0/458d50a4e7260977f076472d40d0796fa8b513af7e3ce1bf65557e10724e9c13653661c883f6650dff92d0a1a5ff4e7a001a8262b786c1ad4cfbd35c3354353e + checksum: 10c0/a00916b7df64226cc597fe769e3a757ff9b11562dc87ce5b0a54101a18c1fe282daaa2accaf27221e81e1e4cdf4da6a33dab09614734d32904d6c4e11c44a079 languageName: node linkType: hard "pg-protocol@npm:*, pg-protocol@npm:^1.7.0": - version: 1.9.5 - resolution: "pg-protocol@npm:1.9.5" - checksum: 10c0/5cb3444cf973adadd22ee9ea26bb1674f0d980ef8f9c66d426bbe67fc9cb5f0ca4a204bf7e432b3ab2ab59ac8227f4b18ab3b2e64eaed537e037e916991c7319 + version: 1.10.3 + resolution: "pg-protocol@npm:1.10.3" + checksum: 10c0/f7ef54708c93ee6d271e37678296fc5097e4337fca91a88a3d99359b78633dbdbf6e983f0adb34b7cdd261b7ec7266deb20c3233bf3dfdb498b3e1098e8750b9 languageName: node linkType: hard @@ -25653,8 +25403,8 @@ __metadata: linkType: hard "pg-types@npm:^4.0.1": - version: 4.0.2 - resolution: "pg-types@npm:4.0.2" + version: 4.1.0 + resolution: "pg-types@npm:4.1.0" dependencies: pg-int8: "npm:1.0.1" pg-numeric: "npm:1.0.2" @@ -25663,7 +25413,7 @@ __metadata: postgres-date: "npm:~2.1.0" postgres-interval: "npm:^3.0.0" postgres-range: "npm:^1.1.1" - checksum: 10c0/780fccda2f3fa2a34e85a72e8e7dadb7d88fbe71ce88f126cb3313f333ad836d02488ec4ff3d94d0c1e5846f735d6e6c6281f8059e6b8919d2180429acaec3e2 + checksum: 10c0/462a56b5c34e0dff38fc5f6ac939c66e80a92333a79bfb1d963ffe0383ca33427a16899e0b9d23235ce1f5df42473373fb9c9f24e1f614f8698b58cc45435ca6 languageName: node linkType: hard @@ -25712,7 +25462,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:4.0.2, picomatch@npm:^4.0.2": +"picomatch@npm:4.0.2": version: 4.0.2 resolution: "picomatch@npm:4.0.2" checksum: 10c0/7c51f3ad2bb42c776f49ebf964c644958158be30d0a510efd5a395e8d49cb5acfed5b82c0c5b365523ce18e6ab85013c9ebe574f60305892ec3fa8eee8304ccc @@ -25726,6 +25476,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^4.0.2, picomatch@npm:^4.0.3": + version: 4.0.3 + resolution: "picomatch@npm:4.0.3" + checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2 + languageName: node + linkType: hard + "pidtree@npm:^0.6.0": version: 0.6.0 resolution: "pidtree@npm:0.6.0" @@ -25776,8 +25533,8 @@ __metadata: linkType: hard "pino-pretty@npm:^13.0.0": - version: 13.0.0 - resolution: "pino-pretty@npm:13.0.0" + version: 13.1.2 + resolution: "pino-pretty@npm:13.1.2" dependencies: colorette: "npm:^2.0.7" dateformat: "npm:^4.6.3" @@ -25789,12 +25546,12 @@ __metadata: on-exit-leak-free: "npm:^2.1.0" pino-abstract-transport: "npm:^2.0.0" pump: "npm:^3.0.0" - secure-json-parse: "npm:^2.4.0" + secure-json-parse: "npm:^4.0.0" sonic-boom: "npm:^4.0.1" - strip-json-comments: "npm:^3.1.1" + strip-json-comments: "npm:^5.0.2" bin: pino-pretty: bin.js - checksum: 10c0/015dac25006c1b9820b9e01fccb8a392a019e12b30e6bfc3f3f61ecca8dbabcd000a8f3f64410b620b7f5d08579ba85e6ef137f7fbeaad70d46397a97a5f75ea + checksum: 10c0/4d8e7472e37bdb6e0d6d7d34f25f65ced46c0f64a9579bb805602321caf1c0b10359f89a1ee9742bea875f411a02ce7c19730f7a1e5387dfcfd10ff5c9804709 languageName: node linkType: hard @@ -25812,6 +25569,27 @@ __metadata: languageName: node linkType: hard +"pino@npm:10.0.0": + version: 10.0.0 + resolution: "pino@npm:10.0.0" + dependencies: + atomic-sleep: "npm:^1.0.0" + on-exit-leak-free: "npm:^2.1.0" + pino-abstract-transport: "npm:^2.0.0" + pino-std-serializers: "npm:^7.0.0" + process-warning: "npm:^5.0.0" + quick-format-unescaped: "npm:^4.0.3" + real-require: "npm:^0.2.0" + safe-stable-stringify: "npm:^2.3.1" + slow-redact: "npm:^0.3.0" + sonic-boom: "npm:^4.0.1" + thread-stream: "npm:^3.0.0" + bin: + pino: bin.js + checksum: 10c0/f95fcc51523310e9ece1822f8ef4d8e6c2b35f67eca9805fe18fdef21dfac81fa128f1ebaa3c9a11571120854391b10b3b339f2e5836f805edaf6936781c6e6f + languageName: node + linkType: hard + "pino@npm:7.11.0": version: 7.11.0 resolution: "pino@npm:7.11.0" @@ -25834,11 +25612,11 @@ __metadata: linkType: hard "pino@npm:^9.7.0": - version: 9.7.0 - resolution: "pino@npm:9.7.0" + version: 9.14.0 + resolution: "pino@npm:9.14.0" dependencies: + "@pinojs/redact": "npm:^0.4.0" atomic-sleep: "npm:^1.0.0" - fast-redact: "npm:^3.1.1" on-exit-leak-free: "npm:^2.1.0" pino-abstract-transport: "npm:^2.0.0" pino-std-serializers: "npm:^7.0.0" @@ -25850,7 +25628,7 @@ __metadata: thread-stream: "npm:^3.0.0" bin: pino: bin.js - checksum: 10c0/c7f8a83a9a9d728b4eff6d0f4b9367f031c91bcaa5806fbf0eedcc8e77faba593d59baf11a8fba0dd1c778bb17ca7ed01418ac1df4ec129faeedd4f3ecaff66f + checksum: 10c0/9a10d9bf820a585eae9bc270fb4e55c895e48280d54adbbb4063ec061694b22d8809c80203cf5fe9f920a54c832b0b8dfb67cb28a04baa13abebaf261a9c9f3e languageName: node linkType: hard @@ -25900,6 +25678,50 @@ __metadata: languageName: node linkType: hard +"porto@npm:0.2.35": + version: 0.2.35 + resolution: "porto@npm:0.2.35" + dependencies: + hono: "npm:^4.10.3" + idb-keyval: "npm:^6.2.1" + mipd: "npm:^0.0.7" + ox: "npm:^0.9.6" + zod: "npm:^4.1.5" + zustand: "npm:^5.0.1" + peerDependencies: + "@tanstack/react-query": ">=5.59.0" + "@wagmi/core": ">=2.16.3" + expo-auth-session: ">=7.0.8" + expo-crypto: ">=15.0.7" + expo-web-browser: ">=15.0.8" + react: ">=18" + react-native: ">=0.81.4" + typescript: ">=5.4.0" + viem: ">=2.37.0" + wagmi: ">=2.0.0" + peerDependenciesMeta: + "@tanstack/react-query": + optional: true + expo-auth-session: + optional: true + expo-crypto: + optional: true + expo-web-browser: + optional: true + react: + optional: true + react-native: + optional: true + typescript: + optional: true + wagmi: + optional: true + bin: + porto: dist/cli/bin/index.js + checksum: 10c0/5653121258775e462d41eac68b241239ceaa622e1fe8eb398db488f5353bec34acdd7678fb2e11cab6908898204dedfc413ac0be260654f230d189deb1480987 + languageName: node + linkType: hard + "possible-typed-array-names@npm:^1.0.0": version: 1.1.0 resolution: "possible-typed-array-names@npm:1.1.0" @@ -25925,14 +25747,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.5.3": - version: 8.5.3 - resolution: "postcss@npm:8.5.3" +"postcss@npm:^8.5.3, postcss@npm:^8.5.6": + version: 8.5.6 + resolution: "postcss@npm:8.5.6" dependencies: - nanoid: "npm:^3.3.8" + nanoid: "npm:^3.3.11" picocolors: "npm:^1.1.1" source-map-js: "npm:^1.2.1" - checksum: 10c0/b75510d7b28c3ab728c8733dd01538314a18c52af426f199a3c9177e63eb08602a3938bfb66b62dc01350b9aed62087eabbf229af97a1659eb8d3513cec823b3 + checksum: 10c0/5127cc7c91ed7a133a1b7318012d8bfa112da9ef092dddf369ae699a1f10ebbd89b1b9f25f3228795b84585c72aabd5ced5fc11f2ba467eedf7b081a66fad024 languageName: node linkType: hard @@ -26003,10 +25825,17 @@ __metadata: languageName: node linkType: hard -"preact@npm:^10.16.0, preact@npm:^10.24.2": - version: 10.26.6 - resolution: "preact@npm:10.26.6" - checksum: 10c0/af07817a24b76c48f0eb49895d2ab49d6e43097355b6f75271a4cab5c2886999968e9eab9331a48f0b7e3477bc16153b08cd1d6a24ebf1acea4016b7054daf29 +"preact@npm:10.24.2": + version: 10.24.2 + resolution: "preact@npm:10.24.2" + checksum: 10c0/d1d22c5e1abc10eb8f83501857ef22c54a3fda2d20449d06f5b3c7d5ae812bd702c16c05b672138b8906504f9c893e072e9cebcbcada8cac320edf36265788fb + languageName: node + linkType: hard + +"preact@npm:^10.16.0": + version: 10.27.2 + resolution: "preact@npm:10.27.2" + checksum: 10c0/951b708f7afa34391e054b0f1026430e8f5f6d5de24020beef70288e17067e473b9ee5503a994e0a80ced014826f56708fea5902f80346432c22dfcf3dff4be7 languageName: node linkType: hard @@ -26034,17 +25863,17 @@ __metadata: linkType: hard "prettier-plugin-packagejson@npm:^2.4.12": - version: 2.5.11 - resolution: "prettier-plugin-packagejson@npm:2.5.11" + version: 2.5.19 + resolution: "prettier-plugin-packagejson@npm:2.5.19" dependencies: - sort-package-json: "npm:3.2.0" - synckit: "npm:0.11.4" + sort-package-json: "npm:3.4.0" + synckit: "npm:0.11.11" peerDependencies: prettier: ">= 1.16.0" peerDependenciesMeta: prettier: optional: true - checksum: 10c0/ce5e2f0cb1f66603a656d8ecacfccb540eaedce57dd93c059811896f27237a6381a634c4e15e74281f69464e4bad712981289a9ac21fe463bfa08b4586bed4d0 + checksum: 10c0/288b8658fae8c620d3a7175f64026af8f450f053b8357b86b7d4c697287eae7e706c825d6819959bae1b539103a586f72d8b829574970392d0082f6ec5520d3f languageName: node linkType: hard @@ -26060,12 +25889,12 @@ __metadata: languageName: node linkType: hard -"prettier@npm:3.4.2": - version: 3.4.2 - resolution: "prettier@npm:3.4.2" +"prettier@npm:3.5.3": + version: 3.5.3 + resolution: "prettier@npm:3.5.3" bin: prettier: bin/prettier.cjs - checksum: 10c0/99e076a26ed0aba4ebc043880d0f08bbb8c59a4c6641cdee6cdadf2205bdd87aa1d7823f50c3aea41e015e99878d37c58d7b5f0e663bba0ef047f94e36b96446 + checksum: 10c0/3880cb90b9dc0635819ab52ff571518c35bd7f15a6e80a2054c05dbc8a3aa6e74f135519e91197de63705bcb38388ded7e7230e2178432a1468005406238b877 languageName: node linkType: hard @@ -26079,11 +25908,11 @@ __metadata: linkType: hard "prettier@npm:^3.4.2": - version: 3.5.3 - resolution: "prettier@npm:3.5.3" + version: 3.6.2 + resolution: "prettier@npm:3.6.2" bin: prettier: bin/prettier.cjs - checksum: 10c0/3880cb90b9dc0635819ab52ff571518c35bd7f15a6e80a2054c05dbc8a3aa6e74f135519e91197de63705bcb38388ded7e7230e2178432a1468005406238b877 + checksum: 10c0/488cb2f2b99ec13da1e50074912870217c11edaddedeadc649b1244c749d15ba94e846423d062e2c4c9ae683e2d65f754de28889ba06e697ac4f988d44f45812 languageName: node linkType: hard @@ -26226,9 +26055,9 @@ __metadata: languageName: node linkType: hard -"protobufjs@npm:^7.2.5, protobufjs@npm:^7.3.2": - version: 7.5.0 - resolution: "protobufjs@npm:7.5.0" +"protobufjs@npm:^7.2.5, protobufjs@npm:^7.3.2, protobufjs@npm:^7.5.3": + version: 7.5.4 + resolution: "protobufjs@npm:7.5.4" dependencies: "@protobufjs/aspromise": "npm:^1.1.2" "@protobufjs/base64": "npm:^1.1.2" @@ -26242,18 +26071,18 @@ __metadata: "@protobufjs/utf8": "npm:^1.1.0" "@types/node": "npm:>=13.7.0" long: "npm:^5.0.0" - checksum: 10c0/21ae56998d04e31ef7f58f49ccf6cd307f06b6257fee8b53016418176a2a03083f781c42907762bfdf632f425b5cd9707bc3f23aa73a9a774292e1b7190e3689 + checksum: 10c0/913b676109ffb3c05d3d31e03a684e569be91f3bba8613da4a683d69d9dba948daa2afd7d2e7944d1aa6c417890c35d9d9a8883c1160affafb0f9670d59ef722 languageName: node linkType: hard -"protons-runtime@npm:^5.5.0": - version: 5.5.0 - resolution: "protons-runtime@npm:5.5.0" +"protons-runtime@npm:^5.5.0, protons-runtime@npm:^5.6.0": + version: 5.6.0 + resolution: "protons-runtime@npm:5.6.0" dependencies: uint8-varint: "npm:^2.0.2" uint8arraylist: "npm:^2.4.3" uint8arrays: "npm:^5.0.1" - checksum: 10c0/577588eb47c20136d1d41a1aa2c6ae8bef7d2504cf81e1e2ed15afb3cee97ea0a8743106c83cedd72fa7f4ffeb270d9c9e16479c1ad5ad79879a0b11218baf4d + checksum: 10c0/f6961e0ce30d7018b6bf35183384fdf540e58db4b3051342d616bb6a5ffefec0aaca168c5356ce6cf0d6b92cb736149c30f42a7558a76cbb8da9a5ba90827892 languageName: node linkType: hard @@ -26274,6 +26103,13 @@ __metadata: languageName: node linkType: hard +"proxy-compare@npm:^3.0.1": + version: 3.0.1 + resolution: "proxy-compare@npm:3.0.1" + checksum: 10c0/1e3631ef32603d4de263860ce02d84b48384dce9b62238b2148b3c58a4e4ec5b06644615dcc196a339f73b9695443317099d55a9173e02ce8492088c9330c00b + languageName: node + linkType: hard + "proxy-from-env@npm:^1.1.0": version: 1.1.0 resolution: "proxy-from-env@npm:1.1.0" @@ -26296,12 +26132,12 @@ __metadata: linkType: hard "pump@npm:^3.0.0": - version: 3.0.2 - resolution: "pump@npm:3.0.2" + version: 3.0.3 + resolution: "pump@npm:3.0.3" dependencies: end-of-stream: "npm:^1.1.0" once: "npm:^1.3.1" - checksum: 10c0/5ad655cb2a7738b4bcf6406b24ad0970d680649d996b55ad20d1be8e0c02394034e4c45ff7cd105d87f1e9b96a0e3d06fd28e11fae8875da26e7f7a8e2c9726f + checksum: 10c0/ada5cdf1d813065bbc99aa2c393b8f6beee73b5de2890a8754c9f488d7323ffd2ca5f5a0943b48934e3fcbd97637d0337369c3c631aeb9614915db629f1c75c9 languageName: node linkType: hard @@ -26343,9 +26179,9 @@ __metadata: linkType: hard "pvutils@npm:^1.1.3": - version: 1.1.3 - resolution: "pvutils@npm:1.1.3" - checksum: 10c0/23489e6b3c76b6afb6964a20f891d6bef092939f401c78bba186b2bfcdc7a13904a0af0a78f7933346510f8c1228d5ab02d3c80e968fd84d3c76ff98d8ec9aac + version: 1.1.5 + resolution: "pvutils@npm:1.1.5" + checksum: 10c0/e968b07b78a58fec9377fe7aa6342c8cfa21c8fb4afc4e51e1489bd42bec6dc71b8a52541d0aede0aea17adec7ca3f89f29f56efdc31d0083cc02e9bb5721bcf languageName: node linkType: hard @@ -26401,13 +26237,13 @@ __metadata: linkType: hard "query-string@npm:^9.0.0": - version: 9.1.2 - resolution: "query-string@npm:9.1.2" + version: 9.3.1 + resolution: "query-string@npm:9.3.1" dependencies: decode-uri-component: "npm:^0.4.1" filter-obj: "npm:^5.1.0" split-on-first: "npm:^3.0.0" - checksum: 10c0/ead561dd74adddc3013742ab6ef62d7deb8b1b7b79c0471326c4e91d0de27fa03343c98b54b4b4463bdb1d066d041e9d7bfe8033ba8a35dafbaa09b3763d4181 + checksum: 10c0/47f62350be7ace6d2e03d12becf5d1985731d97577963a4d8b684e166f6708cb42f63f09aa4c92931f2ee1ff57c0800a25807b95f28fd98f7064b1d06b02b07e languageName: node linkType: hard @@ -26485,14 +26321,14 @@ __metadata: linkType: hard "raw-body@npm:^3, raw-body@npm:^3.0.0": - version: 3.0.0 - resolution: "raw-body@npm:3.0.0" + version: 3.0.1 + resolution: "raw-body@npm:3.0.1" dependencies: bytes: "npm:3.1.2" http-errors: "npm:2.0.0" - iconv-lite: "npm:0.6.3" + iconv-lite: "npm:0.7.0" unpipe: "npm:1.0.0" - checksum: 10c0/f8daf4b724064a4811d118745a781ca0fb4676298b8adadfd6591155549cfea0a067523cf7dd3baeb1265fecc9ce5dfb2fc788c12c66b85202a336593ece0f87 + checksum: 10c0/892f4fbd21ecab7e2fed0f045f7af9e16df7e8050879639d4e482784a2f4640aaaa33d916a0e98013f23acb82e09c2e3c57f84ab97104449f728d22f65a7d79a languageName: node linkType: hard @@ -26530,22 +26366,22 @@ __metadata: linkType: hard "react-hook-form@npm:^7.62.0": - version: 7.62.0 - resolution: "react-hook-form@npm:7.62.0" + version: 7.66.0 + resolution: "react-hook-form@npm:7.66.0" peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 - checksum: 10c0/451a25a2ddf07be14f690d2ad3f2f970e0b933fd059ef141c6da9e19d0566d739e9d5cc9c482e3533f3fd01d97e658b896a01ce45a1259ad7b0d4638ba0112c6 + checksum: 10c0/9faeafdaedfabfcbf5f8bb1aeefb81863b8e158eef4b089e2a32180fe474aec47d05fe3ed7d4faea085ca9f689118fb1135b94cdeed2022bd7d3fa3a56530c63 languageName: node linkType: hard "react-i18next@npm:^15.1.0": - version: 15.5.1 - resolution: "react-i18next@npm:15.5.1" + version: 15.7.4 + resolution: "react-i18next@npm:15.7.4" dependencies: - "@babel/runtime": "npm:^7.25.0" + "@babel/runtime": "npm:^7.27.6" html-parse-stringify: "npm:^3.0.1" peerDependencies: - i18next: ">= 23.2.3" + i18next: ">= 23.4.0" react: ">= 16.8.0" typescript: ^5 peerDependenciesMeta: @@ -26555,7 +26391,7 @@ __metadata: optional: true typescript: optional: true - checksum: 10c0/448e190beb3338e5e6e48936c82b5e8610fdb54d0b3dafc14c2af76115a6c931eff601c3e4aee00b3d3c1b78d4d7061bbac443fc9bcff786d131e695c79f5822 + checksum: 10c0/643c5d3ced4b44084c871a55e876159561c14f378f90bf53286c1291082703e293573da18ad692b43b357b60d2f7251bc417feb0b522de8cec5c414e5ebdf6c1 languageName: node linkType: hard @@ -26585,10 +26421,10 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^19.0.0, react-is@npm:^19.1.0": - version: 19.1.0 - resolution: "react-is@npm:19.1.0" - checksum: 10c0/b6c6cadd172d5d39f66d493700d137a5545c294a62ce0f8ec793d59794c97d2bed6bad227626f16bd0e90004ed7fdc8ed662a004e6edcf5d2b7ecb6e3040ea6b +"react-is@npm:^19.0.0, react-is@npm:^19.1.1": + version: 19.2.0 + resolution: "react-is@npm:19.2.0" + checksum: 10c0/a63cb346aeced8ac0e671b0f9b33720d2906de02a066ca067075d871a5d4c64cdb328f495baf9b5842d5868c0d5edd1ce18465a7358b52f4b6aa983479c9bfa2 languageName: node linkType: hard @@ -26647,26 +26483,26 @@ __metadata: linkType: hard "react-router-dom@npm:^6.14.1, react-router-dom@npm:^6.22.0, react-router-dom@npm:^6.23.1, react-router-dom@npm:^6.24.1, react-router-dom@npm:^6.4.3": - version: 6.30.0 - resolution: "react-router-dom@npm:6.30.0" + version: 6.30.1 + resolution: "react-router-dom@npm:6.30.1" dependencies: "@remix-run/router": "npm:1.23.0" - react-router: "npm:6.30.0" + react-router: "npm:6.30.1" peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 10c0/262954ba894d6a241ceda5f61098f7d6a292d0018a6ebb9c9c67425b7deb6e59b6191a9233a03d38e287e60f7ac3702e9e84c8e20b39a6487698fe088b71e27a + checksum: 10c0/e9e1297236b0faa864424ad7d51c392fc6e118595d4dad4cd542fd217c479a81601a81c6266d5801f04f9e154de02d3b094fc22ccb544e755c2eb448fab4ec6b languageName: node linkType: hard -"react-router@npm:6.30.0": - version: 6.30.0 - resolution: "react-router@npm:6.30.0" +"react-router@npm:6.30.1": + version: 6.30.1 + resolution: "react-router@npm:6.30.1" dependencies: "@remix-run/router": "npm:1.23.0" peerDependencies: react: ">=16.8" - checksum: 10c0/e6f20cf5c47ec057a057a4cfb9a55983d0a5b4b3314d20e07f0a70e59e004f51778d4dac415aee1e4e64db69cc4cd72e5acf8fd60dcf07d909895b8863b0b023 + checksum: 10c0/0414326f2d8e0c107fb4603cf4066dacba6a1f6f025c6e273f003e177b2f18888aca3de06d9b5522908f0e41de93be1754c37e82aa97b3a269c4742c08e82539 languageName: node linkType: hard @@ -26743,7 +26579,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0, readable-stream@npm:^3.6.2": +"readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.2, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0, readable-stream@npm:^3.6.2": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: @@ -26754,7 +26590,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.8": +"readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.8": version: 2.3.8 resolution: "readable-stream@npm:2.3.8" dependencies: @@ -26822,8 +26658,8 @@ __metadata: linkType: hard "recharts@npm:^2.13.0-alpha.4, recharts@npm:^2.7.2": - version: 2.15.3 - resolution: "recharts@npm:2.15.3" + version: 2.15.4 + resolution: "recharts@npm:2.15.4" dependencies: clsx: "npm:^2.0.0" eventemitter3: "npm:^4.0.1" @@ -26836,7 +26672,7 @@ __metadata: peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10c0/76757605d67a07562bcfb1a4b9a3a0b6b5fed2b84ee5f00813cedf151502969965bf7bd3856eb7e5d60c1d71c7b0d67d9ae2f1ef45676152fcd532abafc501fb + checksum: 10c0/45bf1e1f56d881696aa55c1a019f16dee559b46d0024254584424d518e7f2887eb76e8ac22a203d02939fbbeabd2c297fc55c0c5a6534879d60f5caad8a97f37 languageName: node linkType: hard @@ -26859,16 +26695,16 @@ __metadata: linkType: hard "redis@npm:^4.7.0": - version: 4.7.0 - resolution: "redis@npm:4.7.0" + version: 4.7.1 + resolution: "redis@npm:4.7.1" dependencies: "@redis/bloom": "npm:1.2.0" - "@redis/client": "npm:1.6.0" + "@redis/client": "npm:1.6.1" "@redis/graph": "npm:1.1.1" "@redis/json": "npm:1.0.7" "@redis/search": "npm:1.2.0" "@redis/time-series": "npm:1.1.0" - checksum: 10c0/a05632a58adbcaa4566238073cd6d00ed008522d2ef015a31aaef200c184a4eff4fa007c514eda91dda1e1205350b5901d0c7b58824dbfa593feb81a0087bf4d + checksum: 10c0/36fc11b7b305e73cafd0a32c5e7070aef72d3a33f2b34f609a1c295afb7d1a022d74eeda96e8d887ef596bbe8ce10811450d02b63175a338d2ff258ff34bd237 languageName: node linkType: hard @@ -26925,12 +26761,12 @@ __metadata: languageName: node linkType: hard -"regenerate-unicode-properties@npm:^10.2.0": - version: 10.2.0 - resolution: "regenerate-unicode-properties@npm:10.2.0" +"regenerate-unicode-properties@npm:^10.2.2": + version: 10.2.2 + resolution: "regenerate-unicode-properties@npm:10.2.2" dependencies: regenerate: "npm:^1.4.2" - checksum: 10c0/5510785eeaf56bbfdf4e663d6753f125c08d2a372d4107bc1b756b7bf142e2ed80c2733a8b54e68fb309ba37690e66a0362699b0e21d5c1f0255dea1b00e6460 + checksum: 10c0/66a1d6a1dbacdfc49afd88f20b2319a4c33cee56d245163e4d8f5f283e0f45d1085a78f7f7406dd19ea3a5dd7a7799cd020cd817c97464a7507f9d10fbdce87c languageName: node linkType: hard @@ -26964,17 +26800,17 @@ __metadata: languageName: node linkType: hard -"regexpu-core@npm:^6.2.0": - version: 6.2.0 - resolution: "regexpu-core@npm:6.2.0" +"regexpu-core@npm:^6.3.1": + version: 6.4.0 + resolution: "regexpu-core@npm:6.4.0" dependencies: regenerate: "npm:^1.4.2" - regenerate-unicode-properties: "npm:^10.2.0" + regenerate-unicode-properties: "npm:^10.2.2" regjsgen: "npm:^0.8.0" - regjsparser: "npm:^0.12.0" + regjsparser: "npm:^0.13.0" unicode-match-property-ecmascript: "npm:^2.0.0" - unicode-match-property-value-ecmascript: "npm:^2.1.0" - checksum: 10c0/bbcb83a854bf96ce4005ee4e4618b71c889cda72674ce6092432f0039b47890c2d0dfeb9057d08d440999d9ea03879ebbb7f26ca005ccf94390e55c348859b98 + unicode-match-property-value-ecmascript: "npm:^2.2.1" + checksum: 10c0/1eed9783c023dd06fb1f3ce4b6e3fdf0bc1e30cb036f30aeb2019b351e5e0b74355b40462282ea5db092c79a79331c374c7e9897e44a5ca4509e9f0b570263de languageName: node linkType: hard @@ -27024,14 +26860,14 @@ __metadata: languageName: node linkType: hard -"regjsparser@npm:^0.12.0": - version: 0.12.0 - resolution: "regjsparser@npm:0.12.0" +"regjsparser@npm:^0.13.0": + version: 0.13.0 + resolution: "regjsparser@npm:0.13.0" dependencies: - jsesc: "npm:~3.0.2" + jsesc: "npm:~3.1.0" bin: regjsparser: bin/parser - checksum: 10c0/99d3e4e10c8c7732eb7aa843b8da2fd8b647fe144d3711b480e4647dc3bff4b1e96691ccf17f3ace24aa866a50b064236177cb25e6e4fbbb18285d99edaed83b + checksum: 10c0/4702f85cda09f67747c1b2fb673a0f0e5d1ba39d55f177632265a0be471ba59e3f320623f411649141f752b126b8126eac3ff4c62d317921e430b0472bfc6071 languageName: node linkType: hard @@ -27144,16 +26980,16 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.4": - version: 1.22.10 - resolution: "resolve@npm:1.22.10" +"resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.10, resolve@npm:^1.22.4": + version: 1.22.11 + resolution: "resolve@npm:1.22.11" dependencies: - is-core-module: "npm:^2.16.0" + is-core-module: "npm:^2.16.1" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10c0/8967e1f4e2cc40f79b7e080b4582b9a8c5ee36ffb46041dccb20e6461161adf69f843b43067b4a375de926a2cd669157e29a29578191def399dd5ef89a1b5203 + checksum: 10c0/f657191507530f2cbecb5815b1ee99b20741ea6ee02a59c57028e9ec4c2c8d7681afcc35febbd554ac0ded459db6f2d8153382c53a2f266cee2575e512674409 languageName: node linkType: hard @@ -27196,16 +27032,16 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.17.0#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": - version: 1.22.10 - resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" +"resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.17.0#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.10#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": + version: 1.22.11 + resolution: "resolve@patch:resolve@npm%3A1.22.11#optional!builtin::version=1.22.11&hash=c3c19d" dependencies: - is-core-module: "npm:^2.16.0" + is-core-module: "npm:^2.16.1" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10c0/52a4e505bbfc7925ac8f4cd91fd8c4e096b6a89728b9f46861d3b405ac9a1ccf4dcbf8befb4e89a2e11370dacd0160918163885cbc669369590f2f31f4c58939 + checksum: 10c0/ee5b182f2e37cb1165465e58c6abc797fec0a80b5ba3231607beb4677db0c9291ac010c47cf092b6daa2b7f518d69a0e21888e7e2b633f68d501a874212a8c63 languageName: node linkType: hard @@ -27313,13 +27149,13 @@ __metadata: languageName: node linkType: hard -"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": - version: 2.0.2 - resolution: "ripemd160@npm:2.0.2" +"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1, ripemd160@npm:^2.0.3": + version: 2.0.3 + resolution: "ripemd160@npm:2.0.3" dependencies: - hash-base: "npm:^3.0.0" - inherits: "npm:^2.0.1" - checksum: 10c0/f6f0df78817e78287c766687aed4d5accbebc308a8e7e673fb085b9977473c1f139f0c5335d353f172a915bb288098430755d2ad3c4f30612f4dd0c901cd2c3a + hash-base: "npm:^3.1.2" + inherits: "npm:^2.0.4" + checksum: 10c0/3f472fb453241cfe692a77349accafca38dbcdc9d96d5848c088b2932ba41eb968630ecff7b175d291c7487a4945aee5a81e30c064d1f94e36070f7e0c37ed6c languageName: node linkType: hard @@ -27334,31 +27170,33 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.34.9": - version: 4.40.2 - resolution: "rollup@npm:4.40.2" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.40.2" - "@rollup/rollup-android-arm64": "npm:4.40.2" - "@rollup/rollup-darwin-arm64": "npm:4.40.2" - "@rollup/rollup-darwin-x64": "npm:4.40.2" - "@rollup/rollup-freebsd-arm64": "npm:4.40.2" - "@rollup/rollup-freebsd-x64": "npm:4.40.2" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.40.2" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.40.2" - "@rollup/rollup-linux-arm64-gnu": "npm:4.40.2" - "@rollup/rollup-linux-arm64-musl": "npm:4.40.2" - "@rollup/rollup-linux-loongarch64-gnu": "npm:4.40.2" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.40.2" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.40.2" - "@rollup/rollup-linux-riscv64-musl": "npm:4.40.2" - "@rollup/rollup-linux-s390x-gnu": "npm:4.40.2" - "@rollup/rollup-linux-x64-gnu": "npm:4.40.2" - "@rollup/rollup-linux-x64-musl": "npm:4.40.2" - "@rollup/rollup-win32-arm64-msvc": "npm:4.40.2" - "@rollup/rollup-win32-ia32-msvc": "npm:4.40.2" - "@rollup/rollup-win32-x64-msvc": "npm:4.40.2" - "@types/estree": "npm:1.0.7" +"rollup@npm:^4.34.9, rollup@npm:^4.43.0": + version: 4.52.5 + resolution: "rollup@npm:4.52.5" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.52.5" + "@rollup/rollup-android-arm64": "npm:4.52.5" + "@rollup/rollup-darwin-arm64": "npm:4.52.5" + "@rollup/rollup-darwin-x64": "npm:4.52.5" + "@rollup/rollup-freebsd-arm64": "npm:4.52.5" + "@rollup/rollup-freebsd-x64": "npm:4.52.5" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.52.5" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.52.5" + "@rollup/rollup-linux-arm64-gnu": "npm:4.52.5" + "@rollup/rollup-linux-arm64-musl": "npm:4.52.5" + "@rollup/rollup-linux-loong64-gnu": "npm:4.52.5" + "@rollup/rollup-linux-ppc64-gnu": "npm:4.52.5" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.52.5" + "@rollup/rollup-linux-riscv64-musl": "npm:4.52.5" + "@rollup/rollup-linux-s390x-gnu": "npm:4.52.5" + "@rollup/rollup-linux-x64-gnu": "npm:4.52.5" + "@rollup/rollup-linux-x64-musl": "npm:4.52.5" + "@rollup/rollup-openharmony-arm64": "npm:4.52.5" + "@rollup/rollup-win32-arm64-msvc": "npm:4.52.5" + "@rollup/rollup-win32-ia32-msvc": "npm:4.52.5" + "@rollup/rollup-win32-x64-gnu": "npm:4.52.5" + "@rollup/rollup-win32-x64-msvc": "npm:4.52.5" + "@types/estree": "npm:1.0.8" fsevents: "npm:~2.3.2" dependenciesMeta: "@rollup/rollup-android-arm-eabi": @@ -27381,9 +27219,9 @@ __metadata: optional: true "@rollup/rollup-linux-arm64-musl": optional: true - "@rollup/rollup-linux-loongarch64-gnu": + "@rollup/rollup-linux-loong64-gnu": optional: true - "@rollup/rollup-linux-powerpc64le-gnu": + "@rollup/rollup-linux-ppc64-gnu": optional: true "@rollup/rollup-linux-riscv64-gnu": optional: true @@ -27395,17 +27233,21 @@ __metadata: optional: true "@rollup/rollup-linux-x64-musl": optional: true + "@rollup/rollup-openharmony-arm64": + optional: true "@rollup/rollup-win32-arm64-msvc": optional: true "@rollup/rollup-win32-ia32-msvc": optional: true + "@rollup/rollup-win32-x64-gnu": + optional: true "@rollup/rollup-win32-x64-msvc": optional: true fsevents: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/cbe9b766891da74fbf7c3b50420bb75102e5c59afc0ea45751f7e43a581d2cd93367763f521f820b72e341cf1f6b9951fbdcd3be67a1b0aa774b754525a8b9c7 + checksum: 10c0/faf1697b305d13a149bb64a2bb7378344becc7c8580f56225c4c00adbf493d82480a44b3e3b1cc82a3ac5d1d4cab6dfc89e6635443895a2dc488969075f5b94d languageName: node linkType: hard @@ -27422,6 +27264,28 @@ __metadata: languageName: node linkType: hard +"rpc-websockets@npm:^9.0.2": + version: 9.2.0 + resolution: "rpc-websockets@npm:9.2.0" + dependencies: + "@swc/helpers": "npm:^0.5.11" + "@types/uuid": "npm:^8.3.4" + "@types/ws": "npm:^8.2.2" + buffer: "npm:^6.0.3" + bufferutil: "npm:^4.0.1" + eventemitter3: "npm:^5.0.1" + utf-8-validate: "npm:^5.0.2" + uuid: "npm:^8.3.2" + ws: "npm:^8.5.0" + dependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/147a7d9e0a67bb98ff962107fc855c2b321faeafd25b16c03c0c6bf49c1d4d18c62ca35cb5b3cf307b8a2ddec9121bc74c6415e47a436bd991907d20781606b9 + languageName: node + linkType: hard + "rrweb-cssom@npm:^0.7.1": version: 0.7.1 resolution: "rrweb-cssom@npm:0.7.1" @@ -27437,9 +27301,9 @@ __metadata: linkType: hard "run-applescript@npm:^7.0.0": - version: 7.0.0 - resolution: "run-applescript@npm:7.0.0" - checksum: 10c0/bd821bbf154b8e6c8ecffeaf0c33cebbb78eb2987476c3f6b420d67ab4c5301faa905dec99ded76ebb3a7042b4e440189ae6d85bbbd3fc6e8d493347ecda8bfe + version: 7.1.0 + resolution: "run-applescript@npm:7.1.0" + checksum: 10c0/ab826c57c20f244b2ee807704b1ef4ba7f566aa766481ae5922aac785e2570809e297c69afcccc3593095b538a8a77d26f2b2e9a1d9dffee24e0e039502d1a03 languageName: node linkType: hard @@ -27475,7 +27339,7 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:^7.2.0, rxjs@npm:^7.5.5, rxjs@npm:^7.8.1": +"rxjs@npm:7.8.2, rxjs@npm:^7.2.0, rxjs@npm:^7.5.5, rxjs@npm:^7.8.1": version: 7.8.2 resolution: "rxjs@npm:7.8.2" dependencies: @@ -27497,20 +27361,20 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 - languageName: node - linkType: hard - -"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 languageName: node linkType: hard +"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 + languageName: node + linkType: hard + "safe-push-apply@npm:^1.0.0": version: 1.0.0 resolution: "safe-push-apply@npm:1.0.0" @@ -27547,8 +27411,8 @@ __metadata: linkType: hard "sass@npm:^1.89.2": - version: 1.89.2 - resolution: "sass@npm:1.89.2" + version: 1.93.3 + resolution: "sass@npm:1.93.3" dependencies: "@parcel/watcher": "npm:^2.4.1" chokidar: "npm:^4.0.0" @@ -27559,7 +27423,7 @@ __metadata: optional: true bin: sass: sass.js - checksum: 10c0/752ccc7581b0c6395f63918116c20924e99943a86d79e94f5c4a0d41b1e981fe1f0ecd1ee82fff21496f81dbc91f68fb35a498166562ec8ec53e7aad7c3dbd9d + checksum: 10c0/b9facc64de10c9d1514272c1dcbb48ca99d5f591a1cd43fd27d641275d9d95948f1299107ab5b309e2abb552667cca84a38a1a3df5116eb72eba4144bf850b6a languageName: node linkType: hard @@ -27624,14 +27488,14 @@ __metadata: linkType: hard "schema-utils@npm:^4.3.0": - version: 4.3.2 - resolution: "schema-utils@npm:4.3.2" + version: 4.3.3 + resolution: "schema-utils@npm:4.3.3" dependencies: "@types/json-schema": "npm:^7.0.9" ajv: "npm:^8.9.0" ajv-formats: "npm:^2.1.1" ajv-keywords: "npm:^5.1.0" - checksum: 10c0/981632f9bf59f35b15a9bcdac671dd183f4946fe4b055ae71a301e66a9797b95e5dd450de581eb6cca56fb6583ce8f24d67b2d9f8e1b2936612209697f6c277e + checksum: 10c0/1c8d2c480a026d7c02ab2ecbe5919133a096d6a721a3f201fa50663e4f30f6d6ba020dfddd93cb828b66b922e76b342e103edd19a62c95c8f60e9079cc403202 languageName: node linkType: hard @@ -27666,10 +27530,10 @@ __metadata: languageName: node linkType: hard -"secure-json-parse@npm:^2.4.0": - version: 2.7.0 - resolution: "secure-json-parse@npm:2.7.0" - checksum: 10c0/f57eb6a44a38a3eeaf3548228585d769d788f59007454214fab9ed7f01fbf2e0f1929111da6db28cf0bcc1a2e89db5219a59e83eeaec3a54e413a0197ce879e4 +"secure-json-parse@npm:^4.0.0": + version: 4.1.0 + resolution: "secure-json-parse@npm:4.1.0" + checksum: 10c0/52b3f8125ea974db1333a5b63e6a1df550c36c0d5f9a263911d6732812bd02e938b30be324dcbbb9da3ef9bf5a84849e0dd911f56544003d3c09e8eee12504de languageName: node linkType: hard @@ -27682,15 +27546,6 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.6.3": - version: 7.6.3 - resolution: "semver@npm:7.6.3" - bin: - semver: bin/semver.js - checksum: 10c0/88f33e148b210c153873cb08cfe1e281d518aaa9a666d4d148add6560db5cd3c582f3a08ccb91f38d5f379ead256da9931234ed122057f40bb5766e65e58adaf - languageName: node - linkType: hard - "semver@npm:7.7.2": version: 7.7.2 resolution: "semver@npm:7.7.2" @@ -27709,12 +27564,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3, semver@npm:^7.7.1": - version: 7.7.1 - resolution: "semver@npm:7.7.1" +"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3, semver@npm:^7.7.1, semver@npm:^7.7.3": + version: 7.7.3 + resolution: "semver@npm:7.7.3" bin: semver: bin/semver.js - checksum: 10c0/fd603a6fb9c399c6054015433051bdbe7b99a940a8fb44b85c2b524c4004b023d7928d47cb22154f8d054ea7ee8597f586605e05b52047f048278e4ac56ae958 + checksum: 10c0/4afe5c986567db82f44c8c6faef8fe9df2a9b1d98098fc1721f57c696c4c21cebd572f297fc21002f81889492345b8470473bc6f4aff5fb032a6ea59ea2bc45e languageName: node linkType: hard @@ -27807,8 +27662,8 @@ __metadata: linkType: hard "serve@npm:^14.2.4": - version: 14.2.4 - resolution: "serve@npm:14.2.4" + version: 14.2.5 + resolution: "serve@npm:14.2.5" dependencies: "@zeit/schemas": "npm:2.36.0" ajv: "npm:8.12.0" @@ -27817,13 +27672,13 @@ __metadata: chalk: "npm:5.0.1" chalk-template: "npm:0.4.0" clipboardy: "npm:3.0.0" - compression: "npm:1.7.4" + compression: "npm:1.8.1" is-port-reachable: "npm:4.0.0" serve-handler: "npm:6.1.6" update-check: "npm:1.5.4" bin: serve: build/main.js - checksum: 10c0/93abecd6214228d529065040f7c0cbe541c1cc321c6a94b8a968f45a519bd9c46a9fd5e45a9b24a1f5736c5b547b8fa60d5414ebc78f870e29431b64165c1d06 + checksum: 10c0/7324a037beea0ee0211f2384e7af28ddf57c8297649e5dd0145ed5a48861cab6d680cbdce332ee9b517f745a31881e5c70074f0908d12c0a4b052cd65f4e9b7e languageName: node linkType: hard @@ -27885,15 +27740,16 @@ __metadata: languageName: node linkType: hard -"sha.js@npm:^2.4.0, sha.js@npm:^2.4.11, sha.js@npm:^2.4.8": - version: 2.4.11 - resolution: "sha.js@npm:2.4.11" +"sha.js@npm:^2.4.0, sha.js@npm:^2.4.11, sha.js@npm:^2.4.12, sha.js@npm:^2.4.8": + version: 2.4.12 + resolution: "sha.js@npm:2.4.12" dependencies: - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" + inherits: "npm:^2.0.4" + safe-buffer: "npm:^5.2.1" + to-buffer: "npm:^1.2.0" bin: - sha.js: ./bin.js - checksum: 10c0/b7a371bca8821c9cc98a0aeff67444a03d48d745cb103f17228b96793f455f0eb0a691941b89ea1e60f6359207e36081d9be193252b0f128e0daf9cfea2815a5 + sha.js: bin.js + checksum: 10c0/9d36bdd76202c8116abbe152a00055ccd8a0099cb28fc17c01fa7bb2c8cffb9ca60e2ab0fe5f274ed6c45dc2633d8c39cf7ab050306c231904512ba9da4d8ab1 languageName: node linkType: hard @@ -27930,10 +27786,10 @@ __metadata: languageName: node linkType: hard -"shell-quote@npm:^1.8.1": - version: 1.8.2 - resolution: "shell-quote@npm:1.8.2" - checksum: 10c0/85fdd44f2ad76e723d34eb72c753f04d847ab64e9f1f10677e3f518d0e5b0752a176fd805297b30bb8c3a1556ebe6e77d2288dbd7b7b0110c7e941e9e9c20ce1 +"shell-quote@npm:1.8.3": + version: 1.8.3 + resolution: "shell-quote@npm:1.8.3" + checksum: 10c0/bee87c34e1e986cfb4c30846b8e6327d18874f10b535699866f368ade11ea4ee45433d97bf5eada22c4320c27df79c3a6a7eb1bf3ecfc47f2c997d9e5e2672fd languageName: node linkType: hard @@ -28076,12 +27932,19 @@ __metadata: linkType: hard "slice-ansi@npm:^7.1.0": - version: 7.1.0 - resolution: "slice-ansi@npm:7.1.0" + version: 7.1.2 + resolution: "slice-ansi@npm:7.1.2" dependencies: ansi-styles: "npm:^6.2.1" is-fullwidth-code-point: "npm:^5.0.0" - checksum: 10c0/631c971d4abf56cf880f034d43fcc44ff883624867bf11ecbd538c47343911d734a4656d7bc02362b40b89d765652a7f935595441e519b59e2ad3f4d5d6fe7ca + checksum: 10c0/36742f2eb0c03e2e81a38ed14d13a64f7b732fe38c3faf96cce0599788a345011e840db35f1430ca606ea3f8db2abeb92a8d25c2753a819e3babaa10c2e289a2 + languageName: node + linkType: hard + +"slow-redact@npm:^0.3.0": + version: 0.3.2 + resolution: "slow-redact@npm:0.3.2" + checksum: 10c0/d6611e518461d918eda9a77903100e097870035c8ef8ce95eec7d7a2eafc6c0cdfc37476a1fecf9d70e0b6b36eb9d862f4ac58e931c305b3fc010939226fa803 languageName: node linkType: hard @@ -28136,12 +27999,12 @@ __metadata: linkType: hard "socks@npm:^2.8.3": - version: 2.8.4 - resolution: "socks@npm:2.8.4" + version: 2.8.7 + resolution: "socks@npm:2.8.7" dependencies: - ip-address: "npm:^9.0.5" + ip-address: "npm:^10.0.1" smart-buffer: "npm:^4.2.0" - checksum: 10c0/00c3271e233ccf1fb83a3dd2060b94cc37817e0f797a93c560b9a7a86c4a0ec2961fb31263bdd24a3c28945e24868b5f063cd98744171d9e942c513454b50ae5 + checksum: 10c0/2805a43a1c4bcf9ebf6e018268d87b32b32b06fbbc1f9282573583acc155860dc361500f89c73bfbb157caa1b4ac78059eac0ef15d1811eb0ca75e0bdadbc9d2 languageName: node linkType: hard @@ -28163,9 +28026,9 @@ __metadata: linkType: hard "solidity-ast@npm:^0.4.60": - version: 0.4.60 - resolution: "solidity-ast@npm:0.4.60" - checksum: 10c0/941475435e7da7696b1e8cbbc42c515f21ba614dd2fe8b5f7c180b0e3de4acb24361b57925cfa112d273a4763986a7efd092f2123e83fd198f2e1eff31d10538 + version: 0.4.61 + resolution: "solidity-ast@npm:0.4.61" + checksum: 10c0/525f4f2f52d580a23fdaa6975d09e7507074a5892aa0a0964ce3865463392f16a831177856377f7022ba2ea83cff0c18f3513ee8c281ce080aca70fd8e1d5c36 languageName: node linkType: hard @@ -28225,9 +28088,9 @@ __metadata: languageName: node linkType: hard -"sort-package-json@npm:3.2.0": - version: 3.2.0 - resolution: "sort-package-json@npm:3.2.0" +"sort-package-json@npm:3.4.0": + version: 3.4.0 + resolution: "sort-package-json@npm:3.4.0" dependencies: detect-indent: "npm:^7.0.1" detect-newline: "npm:^4.0.1" @@ -28238,7 +28101,7 @@ __metadata: tinyglobby: "npm:^0.2.12" bin: sort-package-json: cli.js - checksum: 10c0/14c210c6f07ae326cebd006a9d5bbe76951d7689124806abc70a668124cd380e0488be0a351b22274e5e5a8862255e70c9c985fc9fe512e9c2a78a51218601bc + checksum: 10c0/1adb7860eee770fa51ac1c810c2fa2483ab47bf150d1fc2437ef28314ee928142a51245ba22aac8a8c662f431609fc633d404bcdd93acbf54d5a056253741218 languageName: node linkType: hard @@ -28337,9 +28200,9 @@ __metadata: linkType: hard "spdx-license-ids@npm:^3.0.0": - version: 3.0.21 - resolution: "spdx-license-ids@npm:3.0.21" - checksum: 10c0/ecb24c698d8496aa9efe23e0b1f751f8a7a89faedcdfcbfabae772b546c2db46ccde8f3bc447a238eb86bbcd4f73fea88720ef3b8394f7896381bec3d7736411 + version: 3.0.22 + resolution: "spdx-license-ids@npm:3.0.22" + checksum: 10c0/4a85e44c2ccfc06eebe63239193f526508ebec1abc7cf7bca8ee43923755636234395447c2c87f40fb672cf580a9c8e684513a676bfb2da3d38a4983684bbb38 languageName: node linkType: hard @@ -28373,13 +28236,6 @@ __metadata: languageName: node linkType: hard -"sprintf-js@npm:^1.1.3": - version: 1.1.3 - resolution: "sprintf-js@npm:1.1.3" - checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec - languageName: node - linkType: hard - "sprintf-js@npm:~1.0.2": version: 1.0.3 resolution: "sprintf-js@npm:1.0.3" @@ -28388,9 +28244,9 @@ __metadata: linkType: hard "sql-highlight@npm:^6.0.0": - version: 6.0.0 - resolution: "sql-highlight@npm:6.0.0" - checksum: 10c0/f79998ad298d90eeefbbbc2a3b6424defda5ff1252259fa701466ac830224da598aca6ee97b84fd56948bb5d4d671ee59d3096fe6402013a66c646ec481139eb + version: 6.1.0 + resolution: "sql-highlight@npm:6.1.0" + checksum: 10c0/9614f4608bfde8ea7bf9b2fe9233dcc99a619c91cbc3f5cd85a6fb5ad4b2177f4ac8ca4a0191f4243ff8aea3b6f2a1229efc88635298269e0049b2ac08bde263 languageName: node linkType: hard @@ -28451,17 +28307,24 @@ __metadata: languageName: node linkType: hard -"statuses@npm:2.0.1, statuses@npm:^2.0.1": +"statuses@npm:2.0.1": version: 2.0.1 resolution: "statuses@npm:2.0.1" checksum: 10c0/34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 languageName: node linkType: hard +"statuses@npm:^2.0.1": + version: 2.0.2 + resolution: "statuses@npm:2.0.2" + checksum: 10c0/a9947d98ad60d01f6b26727570f3bcceb6c8fa789da64fe6889908fe2e294d57503b14bf2b5af7605c2d36647259e856635cd4c49eab41667658ec9d0080ec3f + languageName: node + linkType: hard + "std-env@npm:^3.9.0": - version: 3.9.0 - resolution: "std-env@npm:3.9.0" - checksum: 10c0/4a6f9218aef3f41046c3c7ecf1f98df00b30a07f4f35c6d47b28329bc2531eef820828951c7d7b39a1c5eb19ad8a46e3ddfc7deb28f0a2f3ceebee11bab7ba50 + version: 3.10.0 + resolution: "std-env@npm:3.10.0" + checksum: 10c0/1814927a45004d36dde6707eaf17552a546769bc79a6421be2c16ce77d238158dfe5de30910b78ec30d95135cc1c59ea73ee22d2ca170f8b9753f84da34c427f languageName: node linkType: hard @@ -28485,6 +28348,13 @@ __metadata: languageName: node linkType: hard +"stream-chain@npm:^2.2.5": + version: 2.2.5 + resolution: "stream-chain@npm:2.2.5" + checksum: 10c0/c512f50190d7c92d688fa64e7af540c51b661f9c2b775fc72bca38ea9bca515c64c22c2197b1be463741daacbaaa2dde8a8ea24ebda46f08391224f15249121a + languageName: node + linkType: hard + "stream-events@npm:^1.0.5": version: 1.0.5 resolution: "stream-events@npm:1.0.5" @@ -28506,6 +28376,15 @@ __metadata: languageName: node linkType: hard +"stream-json@npm:^1.9.1": + version: 1.9.1 + resolution: "stream-json@npm:1.9.1" + dependencies: + stream-chain: "npm:^2.2.5" + checksum: 10c0/0521e5cb3fb6b0e2561d715975e891bd81fa77d0239c8d0b1756846392bc3c7cdd7f1ddb0fe7ed77e6fdef58daab9e665d3b39f7d677bd0859e65a2bff59b92c + languageName: node + linkType: hard + "stream-shift@npm:^1.0.2": version: 1.0.3 resolution: "stream-shift@npm:1.0.3" @@ -28671,7 +28550,7 @@ __metadata: languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.8, string.prototype.trimend@npm:^1.0.9": +"string.prototype.trimend@npm:^1.0.9": version: 1.0.9 resolution: "string.prototype.trimend@npm:1.0.9" dependencies: @@ -28731,11 +28610,11 @@ __metadata: linkType: hard "strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0": - version: 7.1.0 - resolution: "strip-ansi@npm:7.1.0" + version: 7.1.2 + resolution: "strip-ansi@npm:7.1.2" dependencies: ansi-regex: "npm:^6.0.1" - checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + checksum: 10c0/0d6d7a023de33368fd042aab0bf48f4f4077abdfd60e5393e73c7c411e85e1b3a83507c11af2e656188511475776215df9ca589b4da2295c9455cc399ce1858b languageName: node linkType: hard @@ -28792,6 +28671,13 @@ __metadata: languageName: node linkType: hard +"strip-json-comments@npm:^5.0.2": + version: 5.0.3 + resolution: "strip-json-comments@npm:5.0.3" + checksum: 10c0/daaf20b29f69fb51112698f4a9a662490dbb78d5baf6127c75a0a83c2ac6c078a8c0f74b389ad5e0519d6fc359c4a57cb9971b1ae201aef62ce45a13247791e0 + languageName: node + linkType: hard + "strip-json-comments@npm:~2.0.1": version: 2.0.1 resolution: "strip-json-comments@npm:2.0.1" @@ -28799,6 +28685,15 @@ __metadata: languageName: node linkType: hard +"strip-literal@npm:^3.0.0": + version: 3.1.0 + resolution: "strip-literal@npm:3.1.0" + dependencies: + js-tokens: "npm:^9.0.1" + checksum: 10c0/50918f669915d9ad0fe4b7599902b735f853f2201c97791ead00104a654259c0c61bc2bc8fa3db05109339b61f4cf09e47b94ecc874ffbd0e013965223893af8 + languageName: node + linkType: hard + "stripe@npm:^17.7.0": version: 17.7.0 resolution: "stripe@npm:17.7.0" @@ -28809,20 +28704,26 @@ __metadata: languageName: node linkType: hard -"strnum@npm:^1.0.5, strnum@npm:^1.1.1": +"strnum@npm:^1.1.1": version: 1.1.2 resolution: "strnum@npm:1.1.2" checksum: 10c0/a0fce2498fa3c64ce64a40dada41beb91cabe3caefa910e467dc0518ef2ebd7e4d10f8c2202a6104f1410254cae245066c0e94e2521fb4061a5cb41831952392 languageName: node linkType: hard +"strnum@npm:^2.1.0": + version: 2.1.1 + resolution: "strnum@npm:2.1.1" + checksum: 10c0/1f9bd1f9b4c68333f25c2b1f498ea529189f060cd50aa59f1876139c994d817056de3ce57c12c970f80568d75df2289725e218bd9e3cdf73cd1a876c9c102733 + languageName: node + linkType: hard + "strtok3@npm:^10.2.0": - version: 10.2.2 - resolution: "strtok3@npm:10.2.2" + version: 10.3.4 + resolution: "strtok3@npm:10.3.4" dependencies: "@tokenizer/token": "npm:^0.3.0" - peek-readable: "npm:^7.0.0" - checksum: 10c0/0d13a7fee7d773693b9e23c53429a032beb1d0ba9ab1cef3b5f3968c2c65f5c292a54af2b54c8e55abd210544e786a2369c8c241c68bb7d80b0ae5b207e4afd9 + checksum: 10c0/277ab69e417f4545e364ffaf9d560c991f531045dbace32d77b5c822cccd76a608b782785a2c60595274288d4d32dced184a5c21dc20348791da697127dc69a8 languageName: node linkType: hard @@ -28834,8 +28735,8 @@ __metadata: linkType: hard "styled-components@npm:^6.1.11": - version: 6.1.17 - resolution: "styled-components@npm:6.1.17" + version: 6.1.19 + resolution: "styled-components@npm:6.1.19" dependencies: "@emotion/is-prop-valid": "npm:1.2.2" "@emotion/unitless": "npm:0.8.1" @@ -28849,7 +28750,7 @@ __metadata: peerDependencies: react: ">= 16.8.0" react-dom: ">= 16.8.0" - checksum: 10c0/87f35173c5fc2291ddba7ed8224d19fe6872d056a577f55fe130248f5ea23e5c48c012e881fa1ad93df60b56a12c1c2d553f628e204f090189221734927e50b0 + checksum: 10c0/8d20427a5debe54bfa3b55f79af2a3577551ed7f1d1cd34df986b73fd01ac519f9081b7737cc1f76e12fbc483fa50551e55be0bc984296e623cc6a2364697cd8 languageName: node linkType: hard @@ -28874,6 +28775,29 @@ __metadata: languageName: node linkType: hard +"superstruct@npm:^2.0.2": + version: 2.0.2 + resolution: "superstruct@npm:2.0.2" + checksum: 10c0/c6853db5240b4920f47b3c864dd1e23ede6819ea399ad29a65387d746374f6958c5f1c5b7e5bb152d9db117a74973e5005056d9bb83c24e26f18ec6bfae4a718 + languageName: node + linkType: hard + +"supports-color@npm:8.1.1, supports-color@npm:^8, supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 + languageName: node + linkType: hard + +"supports-color@npm:^10.0.0": + version: 10.2.2 + resolution: "supports-color@npm:10.2.2" + checksum: 10c0/fb28dd7e0cdf80afb3f2a41df5e068d60c8b4f97f7140de2eaed5b42e075d82a0e980b20a2c0efd2b6d73cfacb55555285d8cc719fa0472220715aefeaa1da7c + languageName: node + linkType: hard + "supports-color@npm:^3.1.0": version: 3.2.3 resolution: "supports-color@npm:3.2.3" @@ -28901,22 +28825,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8, supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: "npm:^4.0.0" - checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 - languageName: node - linkType: hard - -"supports-color@npm:^9.4.0": - version: 9.4.0 - resolution: "supports-color@npm:9.4.0" - checksum: 10c0/6c24e6b2b64c6a60e5248490cfa50de5924da32cf09ae357ad8ebbf305cc5d2717ba705a9d4cb397d80bbf39417e8fdc8d7a0ce18bd0041bf7b5b456229164e4 - languageName: node - linkType: hard - "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" @@ -28939,21 +28847,21 @@ __metadata: linkType: hard "swiper@npm:^11.1.3": - version: 11.2.6 - resolution: "swiper@npm:11.2.6" - checksum: 10c0/36ba63e2d1c5045f647f0f07b3a25c164393fb89b17db63f57fa9f776eb61bc5cb2c34634f80cf69caaddc209a174d0cd7be23c580785534569ea4a098b3a42c + version: 11.2.10 + resolution: "swiper@npm:11.2.10" + checksum: 10c0/b7e3a7c79d92ccc62af77744edc376c9aefc771a0abd50c4adf07b5e3450b5da9ca7f84f5809e275ff65e1bc9d4500d930628e84a76fc7f2db403291c69b7fac languageName: node linkType: hard "swr@npm:^2.2.4": - version: 2.3.3 - resolution: "swr@npm:2.3.3" + version: 2.3.6 + resolution: "swr@npm:2.3.6" dependencies: dequal: "npm:^2.0.3" use-sync-external-store: "npm:^1.4.0" peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10c0/882fc8291912860e0c50eae3470ebf0cd58b0144cb12adcc4b14c5cef913ea06479043830508d8b0b3d4061d99ad8dd52485c9c879fbd4e9b893484e6d8da9e3 + checksum: 10c0/9534f350982e36a3ae0a13da8c0f7da7011fc979e77f306e60c4e5db0f9b84f17172c44f973441ba56bb684b69b0d9838ab40011a6b6b3e32d0cd7f3d5405f99 languageName: node linkType: hard @@ -28971,22 +28879,12 @@ __metadata: languageName: node linkType: hard -"synckit@npm:0.11.4, synckit@npm:^0.11.0": - version: 0.11.4 - resolution: "synckit@npm:0.11.4" - dependencies: - "@pkgr/core": "npm:^0.2.3" - tslib: "npm:^2.8.1" - checksum: 10c0/dd2965a37c93c0b652bf07b1fd8d1639a803b65cf34c0cb1b827b8403044fc3b09ec87f681d922a324825127ee95b2e0394e7caccb502f407892d63e903c5276 - languageName: node - linkType: hard - -"synckit@npm:^0.11.7": - version: 0.11.8 - resolution: "synckit@npm:0.11.8" +"synckit@npm:0.11.11, synckit@npm:^0.11.7": + version: 0.11.11 + resolution: "synckit@npm:0.11.11" dependencies: - "@pkgr/core": "npm:^0.2.4" - checksum: 10c0/a1de5131ee527512afcaafceb2399b2f3e63678e56b831e1cb2dc7019c972a8b654703a3b94ef4166868f87eb984ea252b467c9d9e486b018ec2e6a55c24dfd8 + "@pkgr/core": "npm:^0.2.9" + checksum: 10c0/f0761495953d12d94a86edf6326b3a565496c72f9b94c02549b6961fb4d999f4ca316ce6b3eb8ed2e4bfc5056a8de65cda0bd03a233333a35221cd2fdc0e196b languageName: node linkType: hard @@ -29016,9 +28914,9 @@ __metadata: linkType: hard "tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1": - version: 2.2.1 - resolution: "tapable@npm:2.2.1" - checksum: 10c0/bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9 + version: 2.3.0 + resolution: "tapable@npm:2.3.0" + checksum: 10c0/cb9d67cc2c6a74dedc812ef3085d9d681edd2c1fa18e4aef57a3c0605fdbe44e6b8ea00bd9ef21bc74dd45314e39d31227aa031ebf2f5e38164df514136f2681 languageName: node linkType: hard @@ -29037,16 +28935,15 @@ __metadata: linkType: hard "tar@npm:^7.4.3": - version: 7.4.3 - resolution: "tar@npm:7.4.3" + version: 7.5.2 + resolution: "tar@npm:7.5.2" dependencies: "@isaacs/fs-minipass": "npm:^4.0.0" chownr: "npm:^3.0.0" minipass: "npm:^7.1.2" - minizlib: "npm:^3.0.1" - mkdirp: "npm:^3.0.1" + minizlib: "npm:^3.1.0" yallist: "npm:^5.0.0" - checksum: 10c0/d4679609bb2a9b48eeaf84632b6d844128d2412b95b6de07d53d8ee8baf4ca0857c9331dfa510390a0727b550fd543d4d1a10995ad86cdf078423fbb8d99831d + checksum: 10c0/a7d8b801139b52f93a7e34830db0de54c5aa45487c7cb551f6f3d44a112c67f1cb8ffdae856b05fd4f17b1749911f1c26f1e3a23bbe0279e17fd96077f13f467 languageName: node linkType: hard @@ -29116,16 +29013,16 @@ __metadata: linkType: hard "terser@npm:^5.31.1": - version: 5.39.0 - resolution: "terser@npm:5.39.0" + version: 5.44.0 + resolution: "terser@npm:5.44.0" dependencies: "@jridgewell/source-map": "npm:^0.3.3" - acorn: "npm:^8.8.2" + acorn: "npm:^8.15.0" commander: "npm:^2.20.0" source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10c0/83326545ea1aecd6261030568b6191ccfa4cb6aa61d9ea41746a52479f50017a78b77e4725fbbc207c5df841ffa66a773c5ac33636e95c7ab94fe7e0379ae5c7 + checksum: 10c0/f2838dc65ac2ac6a31c7233065364080de73cc363ecb8fe723a54f663b2fa9429abf08bc3920a6bea85c5c7c29908ffcf822baf1572574f8d3859a009bbf2327 languageName: node linkType: hard @@ -29140,6 +29037,13 @@ __metadata: languageName: node linkType: hard +"text-encoding-utf-8@npm:^1.0.2": + version: 1.0.2 + resolution: "text-encoding-utf-8@npm:1.0.2" + checksum: 10c0/87a64b394c850e8387c2ca7fc6929a26ce97fb598f1c55cd0fdaec4b8e2c3ed6770f65b2f3309c9175ef64ac5e403c8e48b53ceeb86d2897940c5e19cc00bb99 + languageName: node + linkType: hard + "text-table@npm:^0.2.0": version: 0.2.0 resolution: "text-table@npm:0.2.0" @@ -29174,7 +29078,7 @@ __metadata: languageName: node linkType: hard -"through@npm:>=2.2.7 <3, through@npm:^2.3.6": +"through@npm:^2.3.6": version: 2.3.8 resolution: "through@npm:2.3.8" checksum: 10c0/4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc @@ -29225,30 +29129,20 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.13, tinyglobby@npm:^0.2.6": - version: 0.2.13 - resolution: "tinyglobby@npm:0.2.13" - dependencies: - fdir: "npm:^6.4.4" - picomatch: "npm:^4.0.2" - checksum: 10c0/ef07dfaa7b26936601d3f6d999f7928a4d1c6234c5eb36896bb88681947c0d459b7ebe797022400e555fe4b894db06e922b95d0ce60cb05fd827a0a66326b18c - languageName: node - linkType: hard - -"tinyglobby@npm:^0.2.14": - version: 0.2.14 - resolution: "tinyglobby@npm:0.2.14" +"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.13, tinyglobby@npm:^0.2.14, tinyglobby@npm:^0.2.15, tinyglobby@npm:^0.2.6": + version: 0.2.15 + resolution: "tinyglobby@npm:0.2.15" dependencies: - fdir: "npm:^6.4.4" - picomatch: "npm:^4.0.2" - checksum: 10c0/f789ed6c924287a9b7d3612056ed0cda67306cd2c80c249fd280cf1504742b12583a2089b61f4abbd24605f390809017240e250241f09938054c9b363e51c0a6 + fdir: "npm:^6.5.0" + picomatch: "npm:^4.0.3" + checksum: 10c0/869c31490d0d88eedb8305d178d4c75e7463e820df5a9b9d388291daf93e8b1eb5de1dad1c1e139767e4269fe75f3b10d5009b2cc14db96ff98986920a186844 languageName: node linkType: hard -"tinypool@npm:^1.0.2": - version: 1.0.2 - resolution: "tinypool@npm:1.0.2" - checksum: 10c0/31ac184c0ff1cf9a074741254fe9ea6de95026749eb2b8ec6fd2b9d8ca94abdccda731f8e102e7f32e72ed3b36d32c6975fd5f5523df3f1b6de6c3d8dfd95e63 +"tinypool@npm:^1.1.1": + version: 1.1.1 + resolution: "tinypool@npm:1.1.1" + checksum: 10c0/bf26727d01443061b04fa863f571016950888ea994ba0cd8cba3a1c51e2458d84574341ab8dbc3664f1c3ab20885c8cf9ff1cc4b18201f04c2cde7d317fff69b languageName: node linkType: hard @@ -29259,10 +29153,10 @@ __metadata: languageName: node linkType: hard -"tinyspy@npm:^3.0.2": - version: 3.0.2 - resolution: "tinyspy@npm:3.0.2" - checksum: 10c0/55ffad24e346622b59292e097c2ee30a63919d5acb7ceca87fc0d1c223090089890587b426e20054733f97a58f20af2c349fb7cc193697203868ab7ba00bcea0 +"tinyspy@npm:^4.0.3": + version: 4.0.4 + resolution: "tinyspy@npm:4.0.4" + checksum: 10c0/a8020fc17799251e06a8398dcc352601d2770aa91c556b9531ecd7a12581161fd1c14e81cbdaff0c1306c93bfdde8ff6d1c1a3f9bbe6d91604f0fd4e01e2f1eb languageName: node linkType: hard @@ -29303,9 +29197,9 @@ __metadata: linkType: hard "tmp@npm:^0.2.0": - version: 0.2.3 - resolution: "tmp@npm:0.2.3" - checksum: 10c0/3e809d9c2f46817475b452725c2aaa5d11985cf18d32a7a970ff25b568438e2c076c2e8609224feef3b7923fa9749b74428e3e634f6b8e520c534eef2fd24125 + version: 0.2.5 + resolution: "tmp@npm:0.2.5" + checksum: 10c0/cee5bb7d674bb4ba3ab3f3841c2ca7e46daeb2109eec395c1ec7329a91d52fcb21032b79ac25161a37b2565c4858fefab927af9735926a113ef7bac9091a6e0e languageName: node linkType: hard @@ -29316,6 +29210,17 @@ __metadata: languageName: node linkType: hard +"to-buffer@npm:^1.2.0, to-buffer@npm:^1.2.1, to-buffer@npm:^1.2.2": + version: 1.2.2 + resolution: "to-buffer@npm:1.2.2" + dependencies: + isarray: "npm:^2.0.5" + safe-buffer: "npm:^5.2.1" + typed-array-buffer: "npm:^1.0.3" + checksum: 10c0/56bc56352f14a2c4a0ab6277c5fc19b51e9534882b98eb068b39e14146591e62fa5b06bf70f7fed1626230463d7e60dca81e815096656e5e01c195c593873d12 + languageName: node + linkType: hard + "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -29340,12 +29245,13 @@ __metadata: linkType: hard "token-types@npm:^6.0.0": - version: 6.0.0 - resolution: "token-types@npm:6.0.0" + version: 6.1.1 + resolution: "token-types@npm:6.1.1" dependencies: + "@borewit/text-codec": "npm:^0.1.0" "@tokenizer/token": "npm:^0.3.0" ieee754: "npm:^1.2.1" - checksum: 10c0/5bf5eba51d63f71f301659ff70ce10ca43e7038364883437d8b4541cc98377e3e56109b11720e25fe51047014efaccdff90eaf6de9a78270483578814b838ab9 + checksum: 10c0/e2405e7789d41693a09c478b53c47ffadd735a5f4c826d9885787d022ab10e26cc4a67b03593285748bf3b0c0237e0ea2ab268abcb953ea314727201d0f6504d languageName: node linkType: hard @@ -29381,7 +29287,7 @@ __metadata: languageName: node linkType: hard -"tree-kill@npm:1.2.2, tree-kill@npm:^1.2.2": +"tree-kill@npm:1.2.2": version: 1.2.2 resolution: "tree-kill@npm:1.2.2" bin: @@ -29562,7 +29468,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:2.8.1, tslib@npm:^2.0.0, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.5.0, tslib@npm:^2.6.0, tslib@npm:^2.6.2, tslib@npm:^2.6.3, tslib@npm:^2.7.0, tslib@npm:^2.8.1": +"tslib@npm:2.8.1, tslib@npm:^2.0.0, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.5.0, tslib@npm:^2.6.0, tslib@npm:^2.6.2, tslib@npm:^2.6.3, tslib@npm:^2.7.0, tslib@npm:^2.8.0, tslib@npm:^2.8.1": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 @@ -29570,9 +29476,9 @@ __metadata: linkType: hard "tslog@npm:^4.3.1, tslog@npm:^4.4.0": - version: 4.9.3 - resolution: "tslog@npm:4.9.3" - checksum: 10c0/9db2c02b01be44a97e447061958565ceb8faf33a241cf9c030d5f1ebefff74434b66090985f5a75189a514aae2267999851c281b8cd8dc8cd93dd158b1033319 + version: 4.10.2 + resolution: "tslog@npm:4.10.2" + checksum: 10c0/78b4bd5432e5c2b3fc611d6acefddd3c3f1f4f121c2d47028227d0930b85544b4c928ecd37e2c88908ff195a6f1b90f1783d5dda55bcaa62534cec6b9a2cee79 languageName: node linkType: hard @@ -29698,7 +29604,7 @@ __metadata: languageName: node linkType: hard -"type-is@npm:^1.6.4, type-is@npm:~1.6.18": +"type-is@npm:^1.6.18, type-is@npm:~1.6.18": version: 1.6.18 resolution: "type-is@npm:1.6.18" dependencies: @@ -29802,28 +29708,28 @@ __metadata: linkType: hard "typedoc-plugin-markdown@npm:^4.2.3": - version: 4.6.3 - resolution: "typedoc-plugin-markdown@npm:4.6.3" + version: 4.9.0 + resolution: "typedoc-plugin-markdown@npm:4.9.0" peerDependencies: typedoc: 0.28.x - checksum: 10c0/5242ef2869bfb6dfbe6b3dbe655be8cb1147ed5f17fa3639ed7643ce889534ef27dfb91170f34fd52a83bf89bdb568a5a7a7ad148bbf0b5785cabc7c81dbcb2d + checksum: 10c0/12040bbff7bc7e4f777d06710e39421f8ebaaf706f4b8075536453f35bc86726c5ce743de0cc9c39ee1bdfc8611b2878a4cf4c83a493e0678fc640dd71fe97fc languageName: node linkType: hard "typedoc@npm:^0.28.7": - version: 0.28.7 - resolution: "typedoc@npm:0.28.7" + version: 0.28.14 + resolution: "typedoc@npm:0.28.14" dependencies: - "@gerrit0/mini-shiki": "npm:^3.7.0" + "@gerrit0/mini-shiki": "npm:^3.12.0" lunr: "npm:^2.3.9" markdown-it: "npm:^14.1.0" minimatch: "npm:^9.0.5" - yaml: "npm:^2.8.0" + yaml: "npm:^2.8.1" peerDependencies: - typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x + typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x bin: typedoc: bin/typedoc - checksum: 10c0/30c942fa286c62898e5b2dd7750af80abb89684f4286bfbdf4009fb495cb8cfd65afbb793370d294c5d62e97c525789c2aae4bfd8ed29f5faa1dc49dcf4bf9c4 + checksum: 10c0/a8727134991ba3f9a982e9f6ceecfbcf0fac531e4865e4865cdee68ea6fe1a594228b8654011d38ffa2332b7e84e4eaa3d0dac04a8bdf36a0686d1c3f327e80b languageName: node linkType: hard @@ -29837,8 +29743,8 @@ __metadata: linkType: hard "typeorm@npm:^0.3.25": - version: 0.3.25 - resolution: "typeorm@npm:0.3.25" + version: 0.3.27 + resolution: "typeorm@npm:0.3.27" dependencies: "@sqltools/formatter": "npm:^1.2.5" ansis: "npm:^3.17.0" @@ -29849,16 +29755,15 @@ __metadata: dedent: "npm:^1.6.0" dotenv: "npm:^16.4.7" glob: "npm:^10.4.5" - sha.js: "npm:^2.4.11" + sha.js: "npm:^2.4.12" sql-highlight: "npm:^6.0.0" tslib: "npm:^2.8.1" uuid: "npm:^11.1.0" yargs: "npm:^17.7.2" peerDependencies: "@google-cloud/spanner": ^5.18.0 || ^6.0.0 || ^7.0.0 - "@sap/hana-client": ^2.12.25 - better-sqlite3: ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 - hdb-pool: ^0.1.6 + "@sap/hana-client": ^2.14.22 + better-sqlite3: ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 ioredis: ^5.0.4 mongodb: ^5.8.0 || ^6.0.0 mssql: ^9.1.1 || ^10.0.1 || ^11.0.1 @@ -29867,7 +29772,7 @@ __metadata: pg: ^8.5.1 pg-native: ^3.0.0 pg-query-stream: ^4.0.0 - redis: ^3.1.1 || ^4.0.0 + redis: ^3.1.1 || ^4.0.0 || ^5.0.14 reflect-metadata: ^0.1.14 || ^0.2.0 sql.js: ^1.4.0 sqlite3: ^5.0.3 @@ -29880,8 +29785,6 @@ __metadata: optional: true better-sqlite3: optional: true - hdb-pool: - optional: true ioredis: optional: true mongodb: @@ -29912,50 +29815,22 @@ __metadata: typeorm: cli.js typeorm-ts-node-commonjs: cli-ts-node-commonjs.js typeorm-ts-node-esm: cli-ts-node-esm.js - checksum: 10c0/f0b52e451003713aba83a96bce5ee942c7f3ae236ee2e241b7872a19a3e3ac7ac24c91f3c279606678838c360de3c25a8156239b047f7980b0ba2b7ba6f73152 - languageName: node - linkType: hard - -"typescript-eslint@npm:^8.33.0": - version: 8.33.0 - resolution: "typescript-eslint@npm:8.33.0" - dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.33.0" - "@typescript-eslint/parser": "npm:8.33.0" - "@typescript-eslint/utils": "npm:8.33.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/a07b87ed2e4ff71edfc641f0073192e7eb8a169adb3ee99a05370310d73698e92814e56cec760d13f9a180687ac3dd3ba9536461ec9a110ad2543f60950e8c8d - languageName: node - linkType: hard - -"typescript-eslint@npm:^8.35.1": - version: 8.35.1 - resolution: "typescript-eslint@npm:8.35.1" - dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.35.1" - "@typescript-eslint/parser": "npm:8.35.1" - "@typescript-eslint/utils": "npm:8.35.1" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/17781138f59c241658db96f793b745883e427bc48530cec2e81ad0a7941b557ddd2eede290d2c3d254f23d59a36ab1bf2cd1e705797e0db36d0ccd61c1a4299e + checksum: 10c0/e0136e1d277496de1d1b327912d55af4855c83d9147896547d6da78ed485c6fc5a84a8469938afe006860c237415028391b47717743e6d4a7b60a52bc6d349aa languageName: node linkType: hard -"typescript-eslint@npm:^8.39.1": - version: 8.39.1 - resolution: "typescript-eslint@npm:8.39.1" +"typescript-eslint@npm:^8.33.0, typescript-eslint@npm:^8.35.1, typescript-eslint@npm:^8.39.1": + version: 8.46.2 + resolution: "typescript-eslint@npm:8.46.2" dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.39.1" - "@typescript-eslint/parser": "npm:8.39.1" - "@typescript-eslint/typescript-estree": "npm:8.39.1" - "@typescript-eslint/utils": "npm:8.39.1" + "@typescript-eslint/eslint-plugin": "npm:8.46.2" + "@typescript-eslint/parser": "npm:8.46.2" + "@typescript-eslint/typescript-estree": "npm:8.46.2" + "@typescript-eslint/utils": "npm:8.46.2" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/4070729621c20f8a9bad3df13fb8ac175609a57d046c155df785d474c2926d3e506f0bd5e762be7e2aacd03839c9c9a2015ad087086cee5838c486b9bf46b27b + checksum: 10c0/9c1bef1887ee984e63cbf4f4321f22ed232b192597400b74220aaecd42235bccc3c7786e002d283f81e1a0812a1c6d83ea5860bffa5e87d119204ecb9db0296a languageName: node linkType: hard @@ -29969,23 +29844,13 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.5.4, typescript@npm:^5.6.3, typescript@npm:^5.8.3": - version: 5.8.3 - resolution: "typescript@npm:5.8.3" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/5f8bb01196e542e64d44db3d16ee0e4063ce4f3e3966df6005f2588e86d91c03e1fb131c2581baf0fb65ee79669eea6e161cd448178986587e9f6844446dbb48 - languageName: node - linkType: hard - -"typescript@npm:^5.9.2": - version: 5.9.2 - resolution: "typescript@npm:5.9.2" +"typescript@npm:^5.5.4, typescript@npm:^5.6.3, typescript@npm:^5.8.3, typescript@npm:^5.9.2": + version: 5.9.3 + resolution: "typescript@npm:5.9.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/cd635d50f02d6cf98ed42de2f76289701c1ec587a363369255f01ed15aaf22be0813226bff3c53e99d971f9b540e0b3cc7583dbe05faded49b1b0bed2f638a18 + checksum: 10c0/6bd7552ce39f97e711db5aa048f6f9995b53f1c52f7d8667c1abdc1700c68a76a308f579cd309ce6b53646deb4e9a1be7c813a93baaf0a28ccd536a30270e1c5 languageName: node linkType: hard @@ -29999,23 +29864,13 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^5.5.4#optional!builtin, typescript@patch:typescript@npm%3A^5.6.3#optional!builtin, typescript@patch:typescript@npm%3A^5.8.3#optional!builtin": - version: 5.8.3 - resolution: "typescript@patch:typescript@npm%3A5.8.3#optional!builtin::version=5.8.3&hash=5786d5" +"typescript@patch:typescript@npm%3A^5.5.4#optional!builtin, typescript@patch:typescript@npm%3A^5.6.3#optional!builtin, typescript@patch:typescript@npm%3A^5.8.3#optional!builtin, typescript@patch:typescript@npm%3A^5.9.2#optional!builtin": + version: 5.9.3 + resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=5786d5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/39117e346ff8ebd87ae1510b3a77d5d92dae5a89bde588c747d25da5c146603a99c8ee588c7ef80faaf123d89ed46f6dbd918d534d641083177d5fac38b8a1cb - languageName: node - linkType: hard - -"typescript@patch:typescript@npm%3A^5.9.2#optional!builtin": - version: 5.9.2 - resolution: "typescript@patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/34d2a8e23eb8e0d1875072064d5e1d9c102e0bdce56a10a25c0b917b8aa9001a9cf5c225df12497e99da107dc379360bc138163c66b55b95f5b105b50578067e + checksum: 10c0/ad09fdf7a756814dce65bc60c1657b40d44451346858eea230e10f2e95a289d9183b6e32e5c11e95acc0ccc214b4f36289dcad4bf1886b0adb84d711d336a430 languageName: node linkType: hard @@ -30040,7 +29895,7 @@ __metadata: languageName: node linkType: hard -"ufo@npm:^1.5.4, ufo@npm:^1.6.1": +"ufo@npm:^1.6.1": version: 1.6.1 resolution: "ufo@npm:1.6.1" checksum: 10c0/5a9f041e5945fba7c189d5410508cbcbefef80b253ed29aa2e1f8a2b86f4bd51af44ee18d4485e6d3468c92be9bf4a42e3a2b72dcaf27ce39ce947ec994f1e6b @@ -30076,9 +29931,9 @@ __metadata: linkType: hard "uint8array-extras@npm:^1.4.0": - version: 1.4.0 - resolution: "uint8array-extras@npm:1.4.0" - checksum: 10c0/eaffd3388634b7e5e1496073b878dd19136043137d3e7e0d2a453e37f566a5a551e640819e1a6596c6df9b9d1f7b70884cc29db6a357bdd424811f3598d504dd + version: 1.5.0 + resolution: "uint8array-extras@npm:1.5.0" + checksum: 10c0/0e74641ac7dadb02eadefc1ccdadba6010e007757bda824960de3c72bbe2b04e6d3af75648441f412148c4103261d54fcb60be45a2863beb76643a55fddba3bd languageName: node linkType: hard @@ -30137,6 +29992,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:^7.15.0, undici-types@npm:~7.16.0": + version: 7.16.0 + resolution: "undici-types@npm:7.16.0" + checksum: 10c0/3033e2f2b5c9f1504bdc5934646cb54e37ecaca0f9249c983f7b1fc2e87c6d18399ebb05dc7fd5419e02b2e915f734d872a65da2e3eeed1813951c427d33cc9a + languageName: node + linkType: hard + "undici-types@npm:~6.19.2": version: 6.19.8 resolution: "undici-types@npm:6.19.8" @@ -30158,10 +30020,10 @@ __metadata: languageName: node linkType: hard -"undici@npm:7.2.3": - version: 7.2.3 - resolution: "undici@npm:7.2.3" - checksum: 10c0/1bc8f7799a9c69047d1e057a2c3b0f3d551fd8ced22327686d0eeadf883cb773a69532a42a68883aaa5674370ee00973c73c8b9f37715d63481fe14b7cbdc7ad +"undici@npm:7.9.0": + version: 7.9.0 + resolution: "undici@npm:7.9.0" + checksum: 10c0/d024e1e4930e7bae47376824dfe82f736d59b4ddd1750ceb54fa842c955c75796df29322bf09632c4a6fb07cee9850cadc3d2d1c337bc41ef784a34449c86d04 languageName: node linkType: hard @@ -30175,9 +30037,9 @@ __metadata: linkType: hard "undici@npm:^6.11.1": - version: 6.21.2 - resolution: "undici@npm:6.21.2" - checksum: 10c0/799bbc02b77dda9b6b12d56d2620a3a4d4cf087908d6a548acc3ce32f21b5c27467f75c2c4b30fab281daf341210be3d685e8fe99854288de541715ae5735027 + version: 6.22.0 + resolution: "undici@npm:6.22.0" + checksum: 10c0/47903c489d73e26bd47960cf2f04d63282ed050818b672cb05f8dfb6403381b850cf1b1751832654fd3af22aacd9d780e5e61aff563cd97943f5c4f10d5b3e23 languageName: node linkType: hard @@ -30205,17 +30067,17 @@ __metadata: languageName: node linkType: hard -"unicode-match-property-value-ecmascript@npm:^2.1.0": - version: 2.2.0 - resolution: "unicode-match-property-value-ecmascript@npm:2.2.0" - checksum: 10c0/1d0a2deefd97974ddff5b7cb84f9884177f4489928dfcebb4b2b091d6124f2739df51fc6ea15958e1b5637ac2a24cff9bf21ea81e45335086ac52c0b4c717d6d +"unicode-match-property-value-ecmascript@npm:^2.2.1": + version: 2.2.1 + resolution: "unicode-match-property-value-ecmascript@npm:2.2.1" + checksum: 10c0/93acd1ad9496b600e5379d1aaca154cf551c5d6d4a0aefaf0984fc2e6288e99220adbeb82c935cde461457fb6af0264a1774b8dfd4d9a9e31548df3352a4194d languageName: node linkType: hard "unicode-property-aliases-ecmascript@npm:^2.0.0": - version: 2.1.0 - resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" - checksum: 10c0/50ded3f8c963c7785e48c510a3b7c6bc4e08a579551489aa0349680a35b1ceceec122e33b2b6c1b579d0be2250f34bb163ac35f5f8695fe10bbc67fb757f0af8 + version: 2.2.0 + resolution: "unicode-property-aliases-ecmascript@npm:2.2.0" + checksum: 10c0/b338529831c988ac696f2bdbcd4579d1c5cc844b24eda7269973c457fa81989bdb49a366af37a448eb1a60f1dae89559ea2a5854db2797e972a0162eee0778c6 languageName: node linkType: hard @@ -30250,125 +30112,64 @@ __metadata: version: 5.0.0 resolution: "unique-slug@npm:5.0.0" dependencies: - imurmurhash: "npm:^0.1.4" - checksum: 10c0/d324c5a44887bd7e105ce800fcf7533d43f29c48757ac410afd42975de82cc38ea2035c0483f4de82d186691bf3208ef35c644f73aa2b1b20b8e651be5afd293 - languageName: node - linkType: hard - -"universalify@npm:^0.1.0": - version: 0.1.2 - resolution: "universalify@npm:0.1.2" - checksum: 10c0/e70e0339f6b36f34c9816f6bf9662372bd241714dc77508d231d08386d94f2c4aa1ba1318614f92015f40d45aae1b9075cd30bd490efbe39387b60a76ca3f045 - languageName: node - linkType: hard - -"universalify@npm:^2.0.0": - version: 2.0.1 - resolution: "universalify@npm:2.0.1" - checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a - languageName: node - linkType: hard - -"unixify@npm:^1.0.0": - version: 1.0.0 - resolution: "unixify@npm:1.0.0" - dependencies: - normalize-path: "npm:^2.1.1" - checksum: 10c0/8b89100619ebde9f0ab4024a4d402316fb7b1d4853723410fc828944e8d3d01480f210cddf94d9a1699559f8180d861eb6323da8011b7bcc1bbaf6a11a5b1f1e - languageName: node - linkType: hard - -"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": - version: 1.0.0 - resolution: "unpipe@npm:1.0.0" - checksum: 10c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c - languageName: node - linkType: hard - -"unrs-resolver@npm:^1.6.2": - version: 1.7.2 - resolution: "unrs-resolver@npm:1.7.2" - dependencies: - "@unrs/resolver-binding-darwin-arm64": "npm:1.7.2" - "@unrs/resolver-binding-darwin-x64": "npm:1.7.2" - "@unrs/resolver-binding-freebsd-x64": "npm:1.7.2" - "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.7.2" - "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.7.2" - "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.7.2" - "@unrs/resolver-binding-linux-arm64-musl": "npm:1.7.2" - "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.7.2" - "@unrs/resolver-binding-linux-riscv64-gnu": "npm:1.7.2" - "@unrs/resolver-binding-linux-riscv64-musl": "npm:1.7.2" - "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.7.2" - "@unrs/resolver-binding-linux-x64-gnu": "npm:1.7.2" - "@unrs/resolver-binding-linux-x64-musl": "npm:1.7.2" - "@unrs/resolver-binding-wasm32-wasi": "npm:1.7.2" - "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.7.2" - "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.7.2" - "@unrs/resolver-binding-win32-x64-msvc": "npm:1.7.2" - napi-postinstall: "npm:^0.2.2" - dependenciesMeta: - "@unrs/resolver-binding-darwin-arm64": - optional: true - "@unrs/resolver-binding-darwin-x64": - optional: true - "@unrs/resolver-binding-freebsd-x64": - optional: true - "@unrs/resolver-binding-linux-arm-gnueabihf": - optional: true - "@unrs/resolver-binding-linux-arm-musleabihf": - optional: true - "@unrs/resolver-binding-linux-arm64-gnu": - optional: true - "@unrs/resolver-binding-linux-arm64-musl": - optional: true - "@unrs/resolver-binding-linux-ppc64-gnu": - optional: true - "@unrs/resolver-binding-linux-riscv64-gnu": - optional: true - "@unrs/resolver-binding-linux-riscv64-musl": - optional: true - "@unrs/resolver-binding-linux-s390x-gnu": - optional: true - "@unrs/resolver-binding-linux-x64-gnu": - optional: true - "@unrs/resolver-binding-linux-x64-musl": - optional: true - "@unrs/resolver-binding-wasm32-wasi": - optional: true - "@unrs/resolver-binding-win32-arm64-msvc": - optional: true - "@unrs/resolver-binding-win32-ia32-msvc": - optional: true - "@unrs/resolver-binding-win32-x64-msvc": - optional: true - checksum: 10c0/c293db95c59b08e33f3bfb00042120fb90fd5448bd1790cd2dc779a13eb6062dddf04a91b72c73d3635b0c539552435675ce816fa52e66bb0cd7b7e5a2f6399c + imurmurhash: "npm:^0.1.4" + checksum: 10c0/d324c5a44887bd7e105ce800fcf7533d43f29c48757ac410afd42975de82cc38ea2035c0483f4de82d186691bf3208ef35c644f73aa2b1b20b8e651be5afd293 languageName: node linkType: hard -"unrs-resolver@npm:^1.7.11": - version: 1.11.0 - resolution: "unrs-resolver@npm:1.11.0" - dependencies: - "@unrs/resolver-binding-android-arm-eabi": "npm:1.11.0" - "@unrs/resolver-binding-android-arm64": "npm:1.11.0" - "@unrs/resolver-binding-darwin-arm64": "npm:1.11.0" - "@unrs/resolver-binding-darwin-x64": "npm:1.11.0" - "@unrs/resolver-binding-freebsd-x64": "npm:1.11.0" - "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.11.0" - "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.11.0" - "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.11.0" - "@unrs/resolver-binding-linux-arm64-musl": "npm:1.11.0" - "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.11.0" - "@unrs/resolver-binding-linux-riscv64-gnu": "npm:1.11.0" - "@unrs/resolver-binding-linux-riscv64-musl": "npm:1.11.0" - "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.11.0" - "@unrs/resolver-binding-linux-x64-gnu": "npm:1.11.0" - "@unrs/resolver-binding-linux-x64-musl": "npm:1.11.0" - "@unrs/resolver-binding-wasm32-wasi": "npm:1.11.0" - "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.11.0" - "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.11.0" - "@unrs/resolver-binding-win32-x64-msvc": "npm:1.11.0" +"universalify@npm:^0.1.0": + version: 0.1.2 + resolution: "universalify@npm:0.1.2" + checksum: 10c0/e70e0339f6b36f34c9816f6bf9662372bd241714dc77508d231d08386d94f2c4aa1ba1318614f92015f40d45aae1b9075cd30bd490efbe39387b60a76ca3f045 + languageName: node + linkType: hard + +"universalify@npm:^2.0.0": + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a + languageName: node + linkType: hard + +"unixify@npm:^1.0.0": + version: 1.0.0 + resolution: "unixify@npm:1.0.0" + dependencies: + normalize-path: "npm:^2.1.1" + checksum: 10c0/8b89100619ebde9f0ab4024a4d402316fb7b1d4853723410fc828944e8d3d01480f210cddf94d9a1699559f8180d861eb6323da8011b7bcc1bbaf6a11a5b1f1e + languageName: node + linkType: hard + +"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": + version: 1.0.0 + resolution: "unpipe@npm:1.0.0" + checksum: 10c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c + languageName: node + linkType: hard + +"unrs-resolver@npm:^1.6.2, unrs-resolver@npm:^1.7.11": + version: 1.11.1 + resolution: "unrs-resolver@npm:1.11.1" + dependencies: + "@unrs/resolver-binding-android-arm-eabi": "npm:1.11.1" + "@unrs/resolver-binding-android-arm64": "npm:1.11.1" + "@unrs/resolver-binding-darwin-arm64": "npm:1.11.1" + "@unrs/resolver-binding-darwin-x64": "npm:1.11.1" + "@unrs/resolver-binding-freebsd-x64": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-arm64-musl": "npm:1.11.1" + "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-riscv64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-riscv64-musl": "npm:1.11.1" + "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-x64-gnu": "npm:1.11.1" + "@unrs/resolver-binding-linux-x64-musl": "npm:1.11.1" + "@unrs/resolver-binding-wasm32-wasi": "npm:1.11.1" + "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.11.1" + "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.11.1" + "@unrs/resolver-binding-win32-x64-msvc": "npm:1.11.1" napi-postinstall: "npm:^0.3.0" dependenciesMeta: "@unrs/resolver-binding-android-arm-eabi": @@ -30409,21 +30210,21 @@ __metadata: optional: true "@unrs/resolver-binding-win32-x64-msvc": optional: true - checksum: 10c0/5883c0621e3a57f21426092a99783ecd88e795493a0ab013a10013ddd8fe355d67a88ac37a7e8ae0f3617d52e7f688b95d9b2807ac605b22c174a8bd6d85fc04 + checksum: 10c0/c91b112c71a33d6b24e5c708dab43ab80911f2df8ee65b87cd7a18fb5af446708e98c4b415ca262026ad8df326debcc7ca6a801b2935504d87fd6f0b9d70dce1 languageName: node linkType: hard "unstorage@npm:^1.9.0": - version: 1.16.0 - resolution: "unstorage@npm:1.16.0" + version: 1.17.2 + resolution: "unstorage@npm:1.17.2" dependencies: anymatch: "npm:^3.1.3" chokidar: "npm:^4.0.3" destr: "npm:^2.0.5" - h3: "npm:^1.15.2" + h3: "npm:^1.15.4" lru-cache: "npm:^10.4.3" - node-fetch-native: "npm:^1.6.6" - ofetch: "npm:^1.4.1" + node-fetch-native: "npm:^1.6.7" + ofetch: "npm:^1.5.0" ufo: "npm:^1.6.1" peerDependencies: "@azure/app-configuration": ^1.8.0 @@ -30434,10 +30235,11 @@ __metadata: "@azure/storage-blob": ^12.26.0 "@capacitor/preferences": ^6.0.3 || ^7.0.0 "@deno/kv": ">=0.9.0" - "@netlify/blobs": ^6.5.0 || ^7.0.0 || ^8.1.0 + "@netlify/blobs": ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 "@planetscale/database": ^1.19.0 "@upstash/redis": ^1.34.3 "@vercel/blob": ">=0.27.1" + "@vercel/functions": ^2.2.12 || ^3.0.0 "@vercel/kv": ^1.0.1 aws4fetch: ^1.0.20 db0: ">=0.2.1" @@ -30469,6 +30271,8 @@ __metadata: optional: true "@vercel/blob": optional: true + "@vercel/functions": + optional: true "@vercel/kv": optional: true aws4fetch: @@ -30481,13 +30285,13 @@ __metadata: optional: true uploadthing: optional: true - checksum: 10c0/f719a6483fd71d0a6d4f2e98ec29721c352618c4f3641f96d0c703866dc13cda071e8afda5a68bac4e7d3880c8eece0edb2057e96ce0ac4fb649998611430a09 + checksum: 10c0/7492e792394fc1878692aae6f87dc3ecd1be82aabf69301e531688755363eb3c01d0383be09631262a4cae6a20dd663f11d7f122bca7a8dbcb7f855232c3f473 languageName: node linkType: hard -"update-browserslist-db@npm:^1.1.3": - version: 1.1.3 - resolution: "update-browserslist-db@npm:1.1.3" +"update-browserslist-db@npm:^1.1.4": + version: 1.1.4 + resolution: "update-browserslist-db@npm:1.1.4" dependencies: escalade: "npm:^3.2.0" picocolors: "npm:^1.1.1" @@ -30495,7 +30299,7 @@ __metadata: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 10c0/682e8ecbf9de474a626f6462aa85927936cdd256fe584c6df2508b0df9f7362c44c957e9970df55dfe44d3623807d26316ea2c7d26b80bb76a16c56c37233c32 + checksum: 10c0/db0c9aaecf1258a6acda5e937fc27a7996ccca7a7580a1b4aa8bba6a9b0e283e5e65c49ebbd74ec29288ef083f1b88d4da13e3d4d326c1e5fc55bf72d7390702 languageName: node linkType: hard @@ -30529,9 +30333,9 @@ __metadata: linkType: hard "urlpattern-polyfill@npm:^10.0.0": - version: 10.0.0 - resolution: "urlpattern-polyfill@npm:10.0.0" - checksum: 10c0/43593f2a89bd54f2d5b5105ef4896ac5c5db66aef723759fbd15cd5eb1ea6cdae9d112e257eda9bbc3fb0cd90be6ac6e9689abe4ca69caa33114f42a27363531 + version: 10.1.0 + resolution: "urlpattern-polyfill@npm:10.1.0" + checksum: 10c0/5b124fd8d0ae920aa2a48b49a7a3b9ad1643b5ce7217b808fb6877826e751cabc01897fd4c85cd1989c4e729072b63aad5c3ba1c1325e4433e0d2f6329156bf1 languageName: node linkType: hard @@ -30543,11 +30347,11 @@ __metadata: linkType: hard "use-debounce@npm:^10.0.2": - version: 10.0.4 - resolution: "use-debounce@npm:10.0.4" + version: 10.0.6 + resolution: "use-debounce@npm:10.0.6" peerDependencies: react: "*" - checksum: 10c0/73494fc44b2bd58a7ec799a528fc20077c45fe2e94fedff6dcd88d136f7a39f417d77f584d5613aac615ed32aeb2ea393797ae1f7d5b2645eab57cb497a6d0cb + checksum: 10c0/f0745de48fc344e6f90ea24384f3c79bf0733d06649827241135847abd67ee8db32f523d490c3276bce9f5a6867194ab1c0187bf6b84cabe1dd679037f4a527e languageName: node linkType: hard @@ -30569,12 +30373,12 @@ __metadata: languageName: node linkType: hard -"use-sync-external-store@npm:^1.2.2, use-sync-external-store@npm:^1.4.0, use-sync-external-store@npm:^1.5.0": - version: 1.5.0 - resolution: "use-sync-external-store@npm:1.5.0" +"use-sync-external-store@npm:^1.2.2, use-sync-external-store@npm:^1.4.0, use-sync-external-store@npm:^1.6.0": + version: 1.6.0 + resolution: "use-sync-external-store@npm:1.6.0" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10c0/1b8663515c0be34fa653feb724fdcce3984037c78dd4a18f68b2c8be55cc1a1084c578d5b75f158d41b5ddffc2bf5600766d1af3c19c8e329bb20af2ec6f52f4 + checksum: 10c0/35e1179f872a53227bdf8a827f7911da4c37c0f4091c29b76b1e32473d1670ebe7bcd880b808b7549ba9a5605c233350f800ffab963ee4a4ee346ee983b6019b languageName: node linkType: hard @@ -30693,17 +30497,10 @@ __metadata: languageName: node linkType: hard -"validator@npm:^13.12.0": - version: 13.15.15 - resolution: "validator@npm:13.15.15" - checksum: 10c0/f5349d1fbb9cc36f9f6c5dab1880764ddad1d0d2b084e2a71e5964f7de1635d20e406611559df9a3db24828ce775cbee5e3b6dd52f0d555a61939ed7ea5990bd - languageName: node - linkType: hard - -"validator@npm:^13.9.0": - version: 13.15.0 - resolution: "validator@npm:13.15.0" - checksum: 10c0/0f13fd7031ac575e8d7828431da8ef5859bac6a38ee65e1d7fdd367dbf1c3d94d95182aecc3183f7fa7a30ff4474bf864d1aff54707620227a2cdbfd36d894c2 +"validator@npm:^13.12.0, validator@npm:^13.9.0": + version: 13.15.20 + resolution: "validator@npm:13.15.20" + checksum: 10c0/65453f0c91ef154ae2da4d5ff3c22acff239d2c15216335ba83895b6f79914708709c641119aa9fba0ec9dd69229c1cf8196aff0081584bdda8a7f50ea97b789 languageName: node linkType: hard @@ -30726,6 +30523,23 @@ __metadata: languageName: node linkType: hard +"valtio@npm:2.1.7": + version: 2.1.7 + resolution: "valtio@npm:2.1.7" + dependencies: + proxy-compare: "npm:^3.0.1" + peerDependencies: + "@types/react": ">=18.0.0" + react: ">=18.0.0" + peerDependenciesMeta: + "@types/react": + optional: true + react: + optional: true + checksum: 10c0/727976e35c7b8853b37cfc5ab14dd5be46ddf572482aa2d888c7e41e9b2d54bb5962c8dd7e26bd9ae69687c818464daf0a814098c3bc64b47e1363f0f7109423 + languageName: node + linkType: hard + "value-or-promise@npm:^1.0.11, value-or-promise@npm:^1.0.12": version: 1.0.12 resolution: "value-or-promise@npm:1.0.12" @@ -30783,81 +30597,39 @@ __metadata: languageName: node linkType: hard -"viem@npm:2.31.0": - version: 2.31.0 - resolution: "viem@npm:2.31.0" +"viem@npm:2.x, viem@npm:>=2.29.0, viem@npm:>=2.37.9, viem@npm:^2.1.1, viem@npm:^2.21.26, viem@npm:^2.27.0, viem@npm:^2.27.2, viem@npm:^2.31.4, viem@npm:^2.31.7": + version: 2.38.6 + resolution: "viem@npm:2.38.6" dependencies: "@noble/curves": "npm:1.9.1" "@noble/hashes": "npm:1.8.0" "@scure/bip32": "npm:1.7.0" "@scure/bip39": "npm:1.6.0" - abitype: "npm:1.0.8" - isows: "npm:1.0.7" - ox: "npm:0.7.1" - ws: "npm:8.18.2" - peerDependencies: - typescript: ">=5.0.4" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/4f327af609d41720f94664546eae1b8a892ae787630c0259a95ca145f7b07ef82387975b6ab8c223decd34ead69650119226af360d02ac7c17dbc4b60cfdf523 - languageName: node - linkType: hard - -"viem@npm:2.x, viem@npm:>=2.23.11, viem@npm:^2.1.1, viem@npm:^2.27.0": - version: 2.29.0 - resolution: "viem@npm:2.29.0" - dependencies: - "@noble/curves": "npm:1.8.2" - "@noble/hashes": "npm:1.7.2" - "@scure/bip32": "npm:1.6.2" - "@scure/bip39": "npm:1.5.4" - abitype: "npm:1.0.8" - isows: "npm:1.0.6" - ox: "npm:0.6.9" - ws: "npm:8.18.1" - peerDependencies: - typescript: ">=5.0.4" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/0cc5c71fed5b8833cff69d875a472048969ca35054dc588445dcd0a2f23033d0b2c24e7af80d9cc823555bceece4f956adf2933870ae4e2126f4884d248aadb8 - languageName: node - linkType: hard - -"viem@npm:>=2.29.0, viem@npm:>=2.31.3, viem@npm:^2.31.4": - version: 2.31.4 - resolution: "viem@npm:2.31.4" - dependencies: - "@noble/curves": "npm:1.9.2" - "@noble/hashes": "npm:1.8.0" - "@scure/bip32": "npm:1.7.0" - "@scure/bip39": "npm:1.6.0" - abitype: "npm:1.0.8" + abitype: "npm:1.1.0" isows: "npm:1.0.7" - ox: "npm:0.8.1" - ws: "npm:8.18.2" + ox: "npm:0.9.6" + ws: "npm:8.18.3" peerDependencies: typescript: ">=5.0.4" peerDependenciesMeta: typescript: optional: true - checksum: 10c0/cffc1c91b322a683758877c8a39916e984809847082343a297d3d637474b711c30e69fad2547f8e4617e6961797811a628d0fd6c3b4d105a7669d89e205edebc + checksum: 10c0/9b8571bc9d7dfc414eb72700275ac71b9402cbf4fe3e447501d252cbc43cb7ddf9ce01a16c183fac265d071873d209efc2a459462c724624ef855d941d3447f0 languageName: node linkType: hard -"vite-node@npm:3.1.3": - version: 3.1.3 - resolution: "vite-node@npm:3.1.3" +"vite-node@npm:3.2.4": + version: 3.2.4 + resolution: "vite-node@npm:3.2.4" dependencies: cac: "npm:^6.7.14" - debug: "npm:^4.4.0" + debug: "npm:^4.4.1" es-module-lexer: "npm:^1.7.0" pathe: "npm:^2.0.3" - vite: "npm:^5.0.0 || ^6.0.0" + vite: "npm:^5.0.0 || ^6.0.0 || ^7.0.0-0" bin: vite-node: vite-node.mjs - checksum: 10c0/d69a1e52361bc0af22d1178db61674ef768cfd3c5610733794bb1e7a36af113da287dd89662a1ad57fd4f6c3360ca99678f5428ba837f239df4091d7891f2e4c + checksum: 10c0/6ceca67c002f8ef6397d58b9539f80f2b5d79e103a18367288b3f00a8ab55affa3d711d86d9112fce5a7fa658a212a087a005a045eb8f4758947dd99af2a6c6b languageName: node linkType: hard @@ -30874,21 +30646,76 @@ __metadata: linkType: hard "vite-plugin-svgr@npm:^4.2.0": - version: 4.3.0 - resolution: "vite-plugin-svgr@npm:4.3.0" + version: 4.5.0 + resolution: "vite-plugin-svgr@npm:4.5.0" dependencies: - "@rollup/pluginutils": "npm:^5.1.3" + "@rollup/pluginutils": "npm:^5.2.0" "@svgr/core": "npm:^8.1.0" "@svgr/plugin-jsx": "npm:^8.1.0" peerDependencies: vite: ">=2.6.0" - checksum: 10c0/a73f10d319f72cd8c16bf9701cf18170f2300f98c72c6bf939565de0b1e93916bd70c6f5a446dc034b4405c72d382655c7c16be4bd1cbf35bbcde5febf7aeffc + checksum: 10c0/3e1959fec626bb4f5a8ec13ff15bc40ffbc1c0ff38149bebe3f37dc2d67ed1f276f129ff7983e06946cf712e19996affd9d6868aa7d20d8921d1fe4449109b55 + languageName: node + linkType: hard + +"vite@npm:^5.0.0 || ^6.0.0 || ^7.0.0-0": + version: 7.1.12 + resolution: "vite@npm:7.1.12" + dependencies: + esbuild: "npm:^0.25.0" + fdir: "npm:^6.5.0" + fsevents: "npm:~2.3.3" + picomatch: "npm:^4.0.3" + postcss: "npm:^8.5.6" + rollup: "npm:^4.43.0" + tinyglobby: "npm:^0.2.15" + peerDependencies: + "@types/node": ^20.19.0 || >=22.12.0 + jiti: ">=1.21.0" + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: ">=0.54.8" + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + bin: + vite: bin/vite.js + checksum: 10c0/cef4d4b4a84e663e09b858964af36e916892ac8540068df42a05ced637ceeae5e9ef71c72d54f3cfc1f3c254af16634230e221b6e2327c2a66d794bb49203262 languageName: node linkType: hard -"vite@npm:^5.0.0 || ^6.0.0, vite@npm:^6.2.4": - version: 6.3.5 - resolution: "vite@npm:6.3.5" +"vite@npm:^6.2.4": + version: 6.4.1 + resolution: "vite@npm:6.4.1" dependencies: esbuild: "npm:^0.25.0" fdir: "npm:^6.4.4" @@ -30937,41 +30764,43 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10c0/df70201659085133abffc6b88dcdb8a57ef35f742a01311fc56a4cfcda6a404202860729cc65a2c401a724f6e25f9ab40ce4339ed4946f550541531ced6fe41c + checksum: 10c0/77bb4c5b10f2a185e7859cc9a81c789021bc18009b02900347d1583b453b58e4b19ff07a5e5a5b522b68fc88728460bb45a63b104d969e8c6a6152aea3b849f7 languageName: node linkType: hard "vitest@npm:^3.0.9, vitest@npm:^3.1.1": - version: 3.1.3 - resolution: "vitest@npm:3.1.3" - dependencies: - "@vitest/expect": "npm:3.1.3" - "@vitest/mocker": "npm:3.1.3" - "@vitest/pretty-format": "npm:^3.1.3" - "@vitest/runner": "npm:3.1.3" - "@vitest/snapshot": "npm:3.1.3" - "@vitest/spy": "npm:3.1.3" - "@vitest/utils": "npm:3.1.3" + version: 3.2.4 + resolution: "vitest@npm:3.2.4" + dependencies: + "@types/chai": "npm:^5.2.2" + "@vitest/expect": "npm:3.2.4" + "@vitest/mocker": "npm:3.2.4" + "@vitest/pretty-format": "npm:^3.2.4" + "@vitest/runner": "npm:3.2.4" + "@vitest/snapshot": "npm:3.2.4" + "@vitest/spy": "npm:3.2.4" + "@vitest/utils": "npm:3.2.4" chai: "npm:^5.2.0" - debug: "npm:^4.4.0" + debug: "npm:^4.4.1" expect-type: "npm:^1.2.1" magic-string: "npm:^0.30.17" pathe: "npm:^2.0.3" + picomatch: "npm:^4.0.2" std-env: "npm:^3.9.0" tinybench: "npm:^2.9.0" tinyexec: "npm:^0.3.2" - tinyglobby: "npm:^0.2.13" - tinypool: "npm:^1.0.2" + tinyglobby: "npm:^0.2.14" + tinypool: "npm:^1.1.1" tinyrainbow: "npm:^2.0.0" - vite: "npm:^5.0.0 || ^6.0.0" - vite-node: "npm:3.1.3" + vite: "npm:^5.0.0 || ^6.0.0 || ^7.0.0-0" + vite-node: "npm:3.2.4" why-is-node-running: "npm:^2.3.0" peerDependencies: "@edge-runtime/vm": "*" "@types/debug": ^4.1.12 "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 - "@vitest/browser": 3.1.3 - "@vitest/ui": 3.1.3 + "@vitest/browser": 3.2.4 + "@vitest/ui": 3.2.4 happy-dom: "*" jsdom: "*" peerDependenciesMeta: @@ -30991,7 +30820,7 @@ __metadata: optional: true bin: vitest: vitest.mjs - checksum: 10c0/954b3579a2d925606df7f78e367ae64eab52c8c5ba2bb2fed94d335a06c910202a4ce080bb02d8148c8b4782488c6d229e963617be8d0c7da96a1c944dd291d7 + checksum: 10c0/5bf53ede3ae6a0e08956d72dab279ae90503f6b5a05298a6a5e6ef47d2fd1ab386aaf48fafa61ed07a0ebfe9e371772f1ccbe5c258dd765206a8218bf2eb79eb languageName: node linkType: hard @@ -31035,31 +30864,12 @@ __metadata: languageName: node linkType: hard -"wagmi@npm:^2.14.6": - version: 2.15.2 - resolution: "wagmi@npm:2.15.2" - dependencies: - "@wagmi/connectors": "npm:5.8.1" - "@wagmi/core": "npm:2.17.1" - use-sync-external-store: "npm:1.4.0" - peerDependencies: - "@tanstack/react-query": ">=5.0.0" - react: ">=18" - typescript: ">=5.0.4" - viem: 2.x - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/f39f49d5c240c2b1dcff5689f4336361ac15230ebe72c5d1de5054d8bd4a893cf69f3cd9f941c60275e3759b7dfd18acfa7ca4c4ef8b4793cb1fa2dde2dc7493 - languageName: node - linkType: hard - -"wagmi@npm:^2.15.6": - version: 2.15.6 - resolution: "wagmi@npm:2.15.6" +"wagmi@npm:^2.14.6, wagmi@npm:^2.15.6": + version: 2.19.2 + resolution: "wagmi@npm:2.19.2" dependencies: - "@wagmi/connectors": "npm:5.8.5" - "@wagmi/core": "npm:2.17.3" + "@wagmi/connectors": "npm:6.1.3" + "@wagmi/core": "npm:2.22.1" use-sync-external-store: "npm:1.4.0" peerDependencies: "@tanstack/react-query": ">=5.0.0" @@ -31069,7 +30879,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/ecdbb177b8a18827e5b0bddcaf3af5147f43662eb85db1964d76f657c89211ee3c56e0565747d175143664a676c43b497d55446a1e31997d50f908f82b3ab472 + checksum: 10c0/c09538148b9d91e3e60cc8b1744f0800fe94708a29fdd4a6aa85a5d400fbe905f4696455e2be9b79a85a58c3cb133d143154cf088bf29c398fee9f2e4bdab39e languageName: node linkType: hard @@ -31083,12 +30893,12 @@ __metadata: linkType: hard "watchpack@npm:^2.4.1": - version: 2.4.2 - resolution: "watchpack@npm:2.4.2" + version: 2.4.4 + resolution: "watchpack@npm:2.4.4" dependencies: glob-to-regexp: "npm:^0.4.1" graceful-fs: "npm:^4.1.2" - checksum: 10c0/ec60a5f0e9efaeca0102fd9126346b3b2d523e01c34030d3fddf5813a7125765121ebdc2552981136dcd2c852deb1af0b39340f2fcc235f292db5399d0283577 + checksum: 10c0/6c0901f75ce245d33991225af915eea1c5ae4ba087f3aee2b70dd377d4cacb34bef02a48daf109da9d59b2d31ec6463d924a0d72f8618ae1643dd07b95de5275 languageName: node linkType: hard @@ -31102,12 +30912,12 @@ __metadata: linkType: hard "weald@npm:^1.0.4": - version: 1.0.4 - resolution: "weald@npm:1.0.4" + version: 1.1.1 + resolution: "weald@npm:1.1.1" dependencies: ms: "npm:^3.0.0-canary.1" - supports-color: "npm:^9.4.0" - checksum: 10c0/6f705176549ffa9a8b14c589cc72b0a64d8bae3eed154d133d46e429f7156bc809a10416ea804b80acbf5cb108b144b8a1af20d5a22c60d1c283c69a3bd8233d + supports-color: "npm:^10.0.0" + checksum: 10c0/9186b5d4b2315763b9d71dcfb27318227a25426c6788c2d488a18fae1e2e5d11176bbc0750662056908d8467d4ff680ee78c3fdfd5ecf67dba0a9257b72d2a1b languageName: node linkType: hard @@ -31463,9 +31273,9 @@ __metadata: linkType: hard "webpack-sources@npm:^3.2.3": - version: 3.2.3 - resolution: "webpack-sources@npm:3.2.3" - checksum: 10c0/2ef63d77c4fad39de4a6db17323d75eb92897b32674e97d76f0a1e87c003882fc038571266ad0ef581ac734cbe20952912aaa26155f1905e96ce251adbb1eb4e + version: 3.3.3 + resolution: "webpack-sources@npm:3.3.3" + checksum: 10c0/ab732f6933b513ba4d505130418995ddef6df988421fccf3289e53583c6a39e205c4a0739cee98950964552d3006604912679c736031337fb4a9d78d8576ed40 languageName: node linkType: hard @@ -31603,7 +31413,7 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.18, which-typed-array@npm:^1.1.19, which-typed-array@npm:^1.1.2": +"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19, which-typed-array@npm:^1.1.2": version: 1.1.19 resolution: "which-typed-array@npm:1.1.19" dependencies: @@ -31755,13 +31565,13 @@ __metadata: linkType: hard "wrap-ansi@npm:^9.0.0": - version: 9.0.0 - resolution: "wrap-ansi@npm:9.0.0" + version: 9.0.2 + resolution: "wrap-ansi@npm:9.0.2" dependencies: ansi-styles: "npm:^6.2.1" string-width: "npm:^7.0.0" strip-ansi: "npm:^7.1.0" - checksum: 10c0/a139b818da9573677548dd463bd626a5a5286271211eb6e4e82f34a4f643191d74e6d4a9bb0a3c26ec90e6f904f679e0569674ac099ea12378a8b98e20706066 + checksum: 10c0/3305839b9a0d6fb930cb63a52f34d3936013d8b0682ff3ec133c9826512620f213800ffa19ea22904876d5b7e9a3c1f40682f03597d986a4ca881fa7b033688c languageName: node linkType: hard @@ -31812,24 +31622,9 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.18.1": - version: 8.18.1 - resolution: "ws@npm:8.18.1" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10c0/e498965d6938c63058c4310ffb6967f07d4fa06789d3364829028af380d299fe05762961742971c764973dce3d1f6a2633fe8b2d9410c9b52e534b4b882a99fa - languageName: node - linkType: hard - -"ws@npm:8.18.2, ws@npm:^8, ws@npm:^8.12.0, ws@npm:^8.17.1, ws@npm:^8.18.0": - version: 8.18.2 - resolution: "ws@npm:8.18.2" +"ws@npm:8.18.3, ws@npm:^8, ws@npm:^8.12.0, ws@npm:^8.17.1, ws@npm:^8.18.0, ws@npm:^8.5.0": + version: 8.18.3 + resolution: "ws@npm:8.18.3" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -31838,7 +31633,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10c0/4b50f67931b8c6943c893f59c524f0e4905bbd183016cfb0f2b8653aa7f28dad4e456b9d99d285bbb67cca4fedd9ce90dfdfaa82b898a11414ebd66ee99141e4 + checksum: 10c0/eac918213de265ef7cb3d4ca348b891a51a520d839aa51cdb8ca93d4fa7ff9f6ccb339ccee89e4075324097f0a55157c89fa3f7147bde9d8d7e90335dc087b53 languageName: node linkType: hard @@ -31965,12 +31760,12 @@ __metadata: languageName: node linkType: hard -"yaml@npm:2.6.1": - version: 2.6.1 - resolution: "yaml@npm:2.6.1" +"yaml@npm:2.8.0": + version: 2.8.0 + resolution: "yaml@npm:2.8.0" bin: yaml: bin.mjs - checksum: 10c0/aebf07f61c72b38c74d2b60c3a3ccf89ee4da45bcd94b2bfb7899ba07a5257625a7c9f717c65a6fc511563d48001e01deb1d9e55f0133f3e2edf86039c8c1be7 + checksum: 10c0/f6f7310cf7264a8107e72c1376f4de37389945d2fb4656f8060eca83f01d2d703f9d1b925dd8f39852a57034fafefde6225409ddd9f22aebfda16c6141b71858 languageName: node linkType: hard @@ -31981,21 +31776,12 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.2.2, yaml@npm:^2.7.0": - version: 2.7.1 - resolution: "yaml@npm:2.7.1" - bin: - yaml: bin.mjs - checksum: 10c0/ee2126398ab7d1fdde566b4013b68e36930b9e6d8e68b6db356875c99614c10d678b6f45597a145ff6d63814961221fc305bf9242af8bf7450177f8a68537590 - languageName: node - linkType: hard - -"yaml@npm:^2.8.0": - version: 2.8.0 - resolution: "yaml@npm:2.8.0" +"yaml@npm:^2.2.2, yaml@npm:^2.7.0, yaml@npm:^2.8.1": + version: 2.8.1 + resolution: "yaml@npm:2.8.1" bin: yaml: bin.mjs - checksum: 10c0/f6f7310cf7264a8107e72c1376f4de37389945d2fb4656f8060eca83f01d2d703f9d1b925dd8f39852a57034fafefde6225409ddd9f22aebfda16c6141b71858 + checksum: 10c0/7c587be00d9303d2ae1566e03bc5bc7fe978ba0d9bf39cc418c3139d37929dfcb93a230d9749f2cb578b6aa5d9ebebc322415e4b653cb83acd8bc0bc321707f3 languageName: node linkType: hard @@ -32035,6 +31821,21 @@ __metadata: languageName: node linkType: hard +"yargs@npm:17.7.2, yargs@npm:^17.3.1, yargs@npm:^17.7.2": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard + "yargs@npm:^15.3.1": version: 15.4.1 resolution: "yargs@npm:15.4.1" @@ -32069,21 +31870,6 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.3.1, yargs@npm:^17.7.2": - version: 17.7.2 - resolution: "yargs@npm:17.7.2" - dependencies: - cliui: "npm:^8.0.1" - escalade: "npm:^3.1.1" - get-caller-file: "npm:^2.0.5" - require-directory: "npm:^2.1.1" - string-width: "npm:^4.2.3" - y18n: "npm:^5.0.5" - yargs-parser: "npm:^21.1.1" - checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 - languageName: node - linkType: hard - "yn@npm:3.1.1": version: 3.1.1 resolution: "yn@npm:3.1.1" @@ -32099,21 +31885,21 @@ __metadata: linkType: hard "yoctocolors-cjs@npm:^2.1.2": - version: 2.1.2 - resolution: "yoctocolors-cjs@npm:2.1.2" - checksum: 10c0/a0e36eb88fea2c7981eab22d1ba45e15d8d268626e6c4143305e2c1628fa17ebfaa40cd306161a8ce04c0a60ee0262058eab12567493d5eb1409780853454c6f + version: 2.1.3 + resolution: "yoctocolors-cjs@npm:2.1.3" + checksum: 10c0/584168ef98eb5d913473a4858dce128803c4a6cd87c0f09e954fa01126a59a33ab9e513b633ad9ab953786ed16efdd8c8700097a51635aafaeed3fef7712fa79 languageName: node linkType: hard "yup@npm:^1.6.1": - version: 1.6.1 - resolution: "yup@npm:1.6.1" + version: 1.7.1 + resolution: "yup@npm:1.7.1" dependencies: property-expr: "npm:^2.0.5" tiny-case: "npm:^1.0.3" toposort: "npm:^2.0.2" type-fest: "npm:^2.19.0" - checksum: 10c0/84c2b53996e8001041239cf2719851719f67063ec7cd843067df73562353216f5ad4f8a222319696882d5a6058e528fade1e463c59d70cbffb41b99cd0d7571b + checksum: 10c0/76b8c7fc2ba467a346935d027a25c067f9653bb0413cd60fbe0518e3d62637a56dbfca49979c4bab1a93d8e9a50843ca73d90bdc271e2f5bce1effa7734e5f28 languageName: node linkType: hard @@ -32133,17 +31919,17 @@ __metadata: languageName: node linkType: hard -"zod@npm:^3.21.4": - version: 3.24.4 - resolution: "zod@npm:3.24.4" - checksum: 10c0/ab3112f017562180a41a0f83d870b333677f7d6b77f106696c56894567051b91154714a088149d8387a4f50806a2520efcb666f108cd384a35c236a191186d91 +"zod@npm:^3.21.4, zod@npm:^3.24.4": + version: 3.25.76 + resolution: "zod@npm:3.25.76" + checksum: 10c0/5718ec35e3c40b600316c5b4c5e4976f7fee68151bc8f8d90ec18a469be9571f072e1bbaace10f1e85cf8892ea12d90821b200e980ab46916a6166a4260a983c languageName: node linkType: hard -"zod@npm:^4.0.17": - version: 4.0.17 - resolution: "zod@npm:4.0.17" - checksum: 10c0/c56ef4cc02f8f52be8724c5a8b338266202d68477c7606bee9b7299818b75c9adc27f16f4b6704a372f3e7578bd016f389de19bfec766564b7c39d0d327c540a +"zod@npm:^4.0.17, zod@npm:^4.1.5": + version: 4.1.12 + resolution: "zod@npm:4.1.12" + checksum: 10c0/b64c1feb19e99d77075261eaf613e0b2be4dfcd3551eff65ad8b4f2a079b61e379854d066f7d447491fcf193f45babd8095551a9d47973d30b46b6d8e2c46774 languageName: node linkType: hard @@ -32168,9 +31954,30 @@ __metadata: languageName: node linkType: hard +"zustand@npm:5.0.3": + version: 5.0.3 + resolution: "zustand@npm:5.0.3" + peerDependencies: + "@types/react": ">=18.0.0" + immer: ">=9.0.6" + react: ">=18.0.0" + use-sync-external-store: ">=1.2.0" + peerDependenciesMeta: + "@types/react": + optional: true + immer: + optional: true + react: + optional: true + use-sync-external-store: + optional: true + checksum: 10c0/dad96c6c123fda088c583d5df6692e9245cd207583078dc15f93d255a67b0f346bad4535545c98852ecde93d254812a0c799579dfde2ab595016b99fbe20e4d5 + languageName: node + linkType: hard + "zustand@npm:^4.5.0, zustand@npm:^4.5.4": - version: 4.5.6 - resolution: "zustand@npm:4.5.6" + version: 4.5.7 + resolution: "zustand@npm:4.5.7" dependencies: use-sync-external-store: "npm:^1.2.2" peerDependencies: @@ -32184,7 +31991,28 @@ __metadata: optional: true react: optional: true - checksum: 10c0/5b39aff2ef57e5a8ada647261ec1115697d397be311c51461d9ea81b5b63c6d2c498b960477ad2db72dc21db6aa229a92bdf644f6a8ecf7b1d71df5b4a5e95d3 + checksum: 10c0/55559e37a82f0c06cadc61cb08f08314c0fe05d6a93815e41e3376130c13db22a5017cbb0cd1f018c82f2dad0051afe3592561d40f980bd4082e32005e8a950c + languageName: node + linkType: hard + +"zustand@npm:^5.0.1": + version: 5.0.8 + resolution: "zustand@npm:5.0.8" + peerDependencies: + "@types/react": ">=18.0.0" + immer: ">=9.0.6" + react: ">=18.0.0" + use-sync-external-store: ">=1.2.0" + peerDependenciesMeta: + "@types/react": + optional: true + immer: + optional: true + react: + optional: true + use-sync-external-store: + optional: true + checksum: 10c0/e865a6f7f1c0e03571701db5904151aaa7acefd6f85541a117085e129bf16e8f60b11f8cc82f277472de5c7ad5dcb201e1b0a89035ea0b40c9d9aab3cd24c8ad languageName: node linkType: hard From fb562b4f2514b66d0045a2644a39c2ee1d6c126f Mon Sep 17 00:00:00 2001 From: portuu3 <61605646+portuu3@users.noreply.github.com> Date: Tue, 4 Nov 2025 11:27:52 +0100 Subject: [PATCH 6/6] Create changeset for python sdk and bump packages versions (#3648) --- .changeset/early-words-arrive.md | 8 -------- .changeset/rich-kids-rush.md | 10 ---------- packages/core/package.json | 2 +- .../human-protocol-sdk/human_protocol_sdk/constants.py | 6 +++--- packages/sdk/python/human-protocol-sdk/package.json | 2 +- .../sdk/typescript/human-protocol-sdk/package.json | 2 +- .../sdk/typescript/human-protocol-sdk/src/constants.ts | 6 +++--- 7 files changed, 9 insertions(+), 27 deletions(-) delete mode 100644 .changeset/early-words-arrive.md delete mode 100644 .changeset/rich-kids-rush.md diff --git a/.changeset/early-words-arrive.md b/.changeset/early-words-arrive.md deleted file mode 100644 index f022b9a4f7..0000000000 --- a/.changeset/early-words-arrive.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@human-protocol/core": major ---- - -- Add new cancellation flow -- Introduce admin role -- Add the ability to create, fund and setup an escrow with only one transaction -- Store intermediateResultsHash diff --git a/.changeset/rich-kids-rush.md b/.changeset/rich-kids-rush.md deleted file mode 100644 index 369a78adc6..0000000000 --- a/.changeset/rich-kids-rush.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@human-protocol/sdk": major ---- - -### Changed - -- Created proper Subgraph types and cast values to the interfaces we have for SDK -- Refactor EscrowUtils, TransactionUtils, OperatorUtils and WorkerUtils methods to fix mismatch types with Subgraph -- Created some mappings to remove duplicated code -- Add the ability to create, fund and setup an escrow with only one transaction diff --git a/packages/core/package.json b/packages/core/package.json index f9656fbf6b..83d5e4f902 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,7 +1,7 @@ { "name": "@human-protocol/core", "description": "Human Protocol Core Smart Contracts", - "version": "5.0.0-beta.2", + "version": "5.0.0", "files": [ "contracts/**/*.sol", "abis/**/*.json", diff --git a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/constants.py b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/constants.py index 150bae41e2..6246c82020 100644 --- a/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/constants.py +++ b/packages/sdk/python/human-protocol-sdk/human_protocol_sdk/constants.py @@ -38,7 +38,7 @@ class OperatorCategory(Enum): "https://api.studio.thegraph.com/query/74256/ethereum/version/latest" ), "subgraph_url_api_key": ( - "https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmQwp4Rr2J4UbPFykb9eXg2t7GPcGRS6WT7QzExZtv32jK" + "https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmXGmcjEtwwEgB83KE2ECjjYY38kLMqzaq4ip8GWY7A6zz" ), "hmt_address": "0xd1ba9BAC957322D6e8c07a160a3A8dA11A0d2867", "factory_address": "0xD9c75a1Aa4237BB72a41E5E26bd8384f10c1f55a", @@ -70,7 +70,7 @@ class OperatorCategory(Enum): "https://api.studio.thegraph.com/query/74256/bsc/version/latest" ), "subgraph_url_api_key": ( - "hthttps://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmT2VoBLjAfc4pQzDmeCGra6weoLuk2jPRgnRz5iSMUw1t" + "hthttps://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmdVdpm9NnFz5B8QyzhW1bW1nNfRWemTiFn2MrhYZGTSQD" ), "hmt_address": "0x711Fd6ab6d65A98904522d4e3586F492B989c527", "factory_address": "0x92FD968AcBd521c232f5fB8c33b342923cC72714", @@ -104,7 +104,7 @@ class OperatorCategory(Enum): "https://api.studio.thegraph.com/query/74256/polygon/version/latest" ), "subgraph_url_api_key": ( - "https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmT72ecfx6Zaje21kLNi17kDJTpPKFYvzQETDyLpQgDrPu" + "https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmUt9mmfNjtC5ZnQNiWHRbFG3k5zfngMuoTyky9jhXYqG2" ), "hmt_address": "0xc748B2A084F8eFc47E086ccdDD9b7e67aEb571BF", "factory_address": "0xBDBfD2cC708199C5640C6ECdf3B0F4A4C67AdfcB", diff --git a/packages/sdk/python/human-protocol-sdk/package.json b/packages/sdk/python/human-protocol-sdk/package.json index b740442760..c4e70ff799 100644 --- a/packages/sdk/python/human-protocol-sdk/package.json +++ b/packages/sdk/python/human-protocol-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@human-protocol/python-sdk", - "version": "4.4.0", + "version": "5.0.0", "private": true, "description": "Stub package to integrate the Python SDK with Changesets (dev-only).", "license": "MIT" diff --git a/packages/sdk/typescript/human-protocol-sdk/package.json b/packages/sdk/typescript/human-protocol-sdk/package.json index f5b2ad9361..5075a928e0 100644 --- a/packages/sdk/typescript/human-protocol-sdk/package.json +++ b/packages/sdk/typescript/human-protocol-sdk/package.json @@ -1,7 +1,7 @@ { "name": "@human-protocol/sdk", "description": "Human Protocol SDK", - "version": "5.0.0-beta.3", + "version": "5.0.0", "files": [ "src", "dist" diff --git a/packages/sdk/typescript/human-protocol-sdk/src/constants.ts b/packages/sdk/typescript/human-protocol-sdk/src/constants.ts index 57b854c414..c13247053a 100644 --- a/packages/sdk/typescript/human-protocol-sdk/src/constants.ts +++ b/packages/sdk/typescript/human-protocol-sdk/src/constants.ts @@ -39,7 +39,7 @@ export const NETWORKS: { subgraphUrl: 'https://api.studio.thegraph.com/query/74256/ethereum/version/latest', subgraphUrlApiKey: - 'https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmQwp4Rr2J4UbPFykb9eXg2t7GPcGRS6WT7QzExZtv32jK', + 'https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmXGmcjEtwwEgB83KE2ECjjYY38kLMqzaq4ip8GWY7A6zz', oldSubgraphUrl: '', oldFactoryAddress: '', }, @@ -69,7 +69,7 @@ export const NETWORKS: { subgraphUrl: 'https://api.studio.thegraph.com/query/74256/bsc/version/latest', subgraphUrlApiKey: - 'https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmT2VoBLjAfc4pQzDmeCGra6weoLuk2jPRgnRz5iSMUw1t', + 'https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmdVdpm9NnFz5B8QyzhW1bW1nNfRWemTiFn2MrhYZGTSQD', oldSubgraphUrl: 'https://api.thegraph.com/subgraphs/name/humanprotocol/bsc', oldFactoryAddress: '0xc88bC422cAAb2ac8812de03176402dbcA09533f4', }, @@ -100,7 +100,7 @@ export const NETWORKS: { subgraphUrl: 'https://api.studio.thegraph.com/query/74256/polygon/version/latest', subgraphUrlApiKey: - 'https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmT72ecfx6Zaje21kLNi17kDJTpPKFYvzQETDyLpQgDrPu', + 'https://gateway-arbitrum.network.thegraph.com/api/[SUBGRAPH_API_KEY]/deployments/id/QmUt9mmfNjtC5ZnQNiWHRbFG3k5zfngMuoTyky9jhXYqG2', oldSubgraphUrl: 'https://api.thegraph.com/subgraphs/name/humanprotocol/polygon', oldFactoryAddress: '0x45eBc3eAE6DA485097054ae10BA1A0f8e8c7f794',