diff --git a/.changeset/README.md b/.changeset/README.md deleted file mode 100644 index e5b6d8d6..00000000 --- a/.changeset/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Changesets - -Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works -with multi-package repos, or single-package repos to help you version and publish your code. You can -find the full documentation for it [in our repository](https://github.com/changesets/changesets) - -We have a quick list of common questions to get you started engaging with this project in -[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json deleted file mode 100644 index e2482985..00000000 --- a/.changeset/config.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json", - "changelog": "@changesets/cli/changelog", - "commit": false, - "fixed": [], - "linked": [], - "access": "restricted", - "baseBranch": "main", - "updateInternalDependencies": "patch", - "ignore": ["!@stakekit/widget"] -} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 74744243..8848899f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,13 +16,18 @@ jobs: runs-on: ubuntu-latest permissions: contents: read - env: - NODE_OPTIONS: "--max_old_space_size=8192" steps: - - uses: actions/checkout@v4 + # actions/checkout@v6.0.2 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - - uses: jdx/mise-action@v2 + - name: Install mise + run: | + curl https://mise.run | MISE_VERSION=v2026.5.6 sh + echo "$HOME/.local/bin" >> "$GITHUB_PATH" + echo "$HOME/.local/share/mise/shims" >> "$GITHUB_PATH" + export PATH="$HOME/.local/bin:$HOME/.local/share/mise/shims:$PATH" + mise install - run: pnpm install --frozen-lockfile @@ -33,3 +38,5 @@ jobs: - run: pnpm lint - run: pnpm test + + - run: pnpm check-hygiene diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2e0d75db..24eaf045 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,40 +13,73 @@ jobs: runs-on: ubuntu-latest permissions: contents: write + issues: write pull-requests: write id-token: write environment: production env: - NODE_OPTIONS: "--max_old_space_size=8192" + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PACKAGE_DIR: packages/widget steps: - - uses: actions/checkout@v4 + # actions/checkout@v6.0.2 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd with: fetch-depth: 0 - - uses: jdx/mise-action@v2 + - name: Install mise + run: | + curl https://mise.run | MISE_VERSION=v2026.5.6 sh + echo "$HOME/.local/bin" >> "$GITHUB_PATH" + echo "$HOME/.local/share/mise/shims" >> "$GITHUB_PATH" + export PATH="$HOME/.local/bin:$HOME/.local/share/mise/shims:$PATH" + mise install - # npm 11.5.1 or later is required for trusted publishing - - name: Update npm - run: npm install -g npm@latest + - name: Run release-please + id: release + # googleapis/release-please-action@v5.0.0 + uses: googleapis/release-please-action@45996ed1f6d02564a971a2fa1b5860e934307cf7 + with: + config-file: release-please-config.json + manifest-file: .release-please-manifest.json + target-branch: ${{ github.ref_name }} - - name: Fix executable files for changesets + - name: Check npm publish status + id: publish + shell: bash run: | - chmod -x .husky/commit-msg + package_name=$(node -p "require('./${PACKAGE_DIR}/package.json').name") + version=$(node -p "require('./${PACKAGE_DIR}/package.json').version") + tag="${package_name}@${version}" - - run: pnpm install --frozen-lockfile + { + echo "package_name=${package_name}" + echo "version=${version}" + echo "tag=${tag}" + } >> "$GITHUB_OUTPUT" - - name: Create Release Pull Request or Publish to npm - id: changesets - uses: changesets/action@v1 - with: - publish: pnpm run release - version: pnpm run version - commit: "ci(changesets): version packages" - title: "ci(changesets): version packages" - commitMode: github-api - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # Use OIDC for npm authentication instead of NPM_TOKEN - NPM_TOKEN: "" # https://github.com/changesets/changesets/issues/1152#issuecomment-3190884868 + if ! gh release view "$tag" --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1; then + echo "No GitHub release found for ${tag}; skipping npm publish." + echo "should_publish=false" >> "$GITHUB_OUTPUT" + exit 0 + fi + + if npm view "${package_name}@${version}" version >/dev/null 2>&1; then + echo "${package_name}@${version} is already published; skipping npm publish." + echo "should_publish=false" >> "$GITHUB_OUTPUT" + exit 0 + fi + + echo "should_publish=true" >> "$GITHUB_OUTPUT" + + - name: Publish to npm + if: steps.publish.outputs.should_publish == 'true' + run: | + tag="${{ steps.publish.outputs.tag }}" + git fetch --force origin "refs/tags/${tag}:refs/tags/${tag}" + git checkout --detach "$tag" + mise install + pnpm install --frozen-lockfile + pnpm exec turbo --filter=@stakekit/widget build + npm publish "$PACKAGE_DIR" diff --git a/.gitignore b/.gitignore index 69017cc3..7eec523b 100644 --- a/.gitignore +++ b/.gitignore @@ -15,9 +15,6 @@ yarn-error.log* # local env files .env*.local -# vercel -.vercel - # typescript *.tsbuildinfo next-env.d.ts @@ -266,4 +263,6 @@ next-env.d.ts *.p12 *.pfx *.crt -*.cer \ No newline at end of file +*.cer + +.pnpm-store \ No newline at end of file diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 00000000..b9954c6b --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + "packages/widget": "0.0.270" +} diff --git a/.rev-dep.config.jsonc b/.rev-dep.config.jsonc new file mode 100644 index 00000000..5691d0be --- /dev/null +++ b/.rev-dep.config.jsonc @@ -0,0 +1,60 @@ +{ + "$schema": "https://github.com/jayu/rev-dep/blob/master/config-schema/1.7.schema.json?raw=true", + "configVersion": "1.7", + "rules": [ + { + "path": "packages/widget", + "prodEntryPoints": [ + "src/index.package.ts", + "src/index.bundle.ts", + "src/main.tsx", + "src/translation/i18next.d.ts", + "src/types/purify-extend.d.ts", + "src/types/window.d.ts", + "src/vite-env.d.ts", + "postcss.config.js", + "public/mockServiceWorker.js", + "vite/*.ts" + ], + "devEntryPoints": [ + "scripts/generate-effect-openapi.ts", + "tests/utils/setup.ts", + "tests/**/*.test.ts", + "tests/**/*.test.tsx" + ], + "orphanFilesDetection": { + "enabled": true + }, + "unusedExportsDetection": { + "enabled": true, + "ignoreFiles": ["src/types/yield-api-schema.d.ts"] + }, + "unusedNodeModulesDetection": { + "enabled": true, + "excludeModules": [ + "@effect/openapi-generator", + "@effect/platform-node", + "babel-plugin-react-compiler", + "playwright", + "postcss", + "swagger2openapi", + "tsx", + "yaml" + ], + "pkgJsonFieldsWithBinaries": ["scripts"] + }, + "missingNodeModulesDetection": { + "enabled": true + }, + "unresolvedImportsDetection": { + "enabled": true + }, + "circularImportsDetection": { + "enabled": true + } + // "devDepsUsageOnProdDetection": { + // "enabled": true + // } + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json index 735236d9..49e9f9c6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,5 +2,20 @@ "typescript.preferences.importModuleSpecifier": "relative", "editor.codeActionsOnSave": { "source.organizeImports.biome": "explicit" + }, + + "typescript.preferences.autoImportFileExcludePatterns": ["repos/**"], + "javascript.preferences.autoImportFileExcludePatterns": ["repos/**"], + + "files.exclude": { + "repos/**": true + }, + + "files.watcherExclude": { + "repos/**": true + }, + + "search.exclude": { + "repos/**": true } } diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..7b8bbc2e --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,58 @@ +# StakeKit Widget — Agent Guide + +## Project Overview +- Monorepo managed with `pnpm` workspaces + Turborepo. +- Main package is `@stakekit/widget` in `packages/widget` (React + TypeScript + Vite). +- Widget supports two entry modes: + - React component export (`src/index.package.ts`) + - Fully bundled renderer (`src/index.bundle.ts`) +- Runtime branches between classic widget and dashboard variant in `src/App.tsx`. + +## Repo Layout (important paths) +- `packages/widget/src/App.tsx` — root app, router setup, bundle renderer. +- `packages/widget/src/Widget.tsx` — non-dashboard route flow (earn/review/steps/details). +- `packages/widget/src/Dashboard.tsx` + `pages-dashboard/*` — dashboard variant UI. +- `packages/widget/src/providers/*` — global provider composition (API, query, wallet, tracking, theme, stores). +- `packages/widget/src/hooks/*` — feature and API hooks. +- `packages/widget/src/domain/*` — shared domain types/helpers. +- `packages/widget/src/translation/*` — i18n resources (`English`, `French`). +- `packages/widget/tests/*` — Vitest browser tests (MSW-backed). +- `packages/examples/*` — integration examples (`with-vite`, `with-vite-bundled`, `with-nextjs`, `with-cdn-script`). + +## Commands Agents Should Use + +### From repo root (all workspaces via Turbo) +- `pnpm build` — build all packages. +- `pnpm lint` — lint/type-check all packages. +- `pnpm test` — run all workspace tests. +- `pnpm format` — run formatting checks/tasks. +- `pnpm check-hygiene` - check unused deps, unresolved imports, circular deps, etc + +### Focused widget commands (recommended for most tasks) +- `pnpm --filter @stakekit/widget {command}` + +## Agent Working Guidelines (short) +- Keep public API compatibility in `src/index.package.ts` and `src/index.bundle.ts`. +- When changing user-facing copy, update both: + - `packages/widget/src/translation/English/translations.json` + - `packages/widget/src/translation/French/translations.json` +- After changes, confirm nothing is broken with lint command which checks lint/type errors + +## Useful Context for Debugging +- API client is configured in `packages/widget/src/providers/api/api-client-provider.tsx`. +- React Query defaults are in `packages/widget/src/providers/query-client/index.tsx`. +- App-level config/env mapping is in `packages/widget/src/config/index.ts`. +- Test bootstrapping + MSW worker setup: + - `packages/widget/tests/utils/setup.ts` + - `packages/widget/tests/mocks/worker.ts` + +## Vendored Repositories + +This project vendors external repositories under @repos/ + +- Use vendored repositories as read-only reference material when working with related libraries +- Prefer examples and patterns from the vendored source code over generated guesses or web search results +- Do not edit files under @repos/ unless explicitly asked +- Do not import from @repos/ - application code should continue importing from normal package dependencies +- Before writing any Effect code, inspect @repos/effect/LLMS.md +- Before writing code that interacts with Effect `HttpClient`, inspect `agent-patterns/effect-http-client.md` diff --git a/agent-patterns/effect-http-client.md b/agent-patterns/effect-http-client.md new file mode 100644 index 00000000..7d6ad916 --- /dev/null +++ b/agent-patterns/effect-http-client.md @@ -0,0 +1,310 @@ +# Effect HttpClient Patterns + +Use this when writing project code that talks to external HTTP APIs with Effect. +The source of truth reviewed for these patterns is the vendored Effect repo: +`repos/effect/LLMS.md`, `repos/effect/ai-docs/src/50_http-client/10_basics.ts`, +and the `repos/effect/packages/effect/src/unstable/http/HttpClient*.ts` modules +plus their tests. + +## Imports + +Prefer the unstable HTTP barrel unless nearby code imports individual modules. + +```ts +import { Context, Effect, flow, Layer, Schedule, Schema, Stream } from "effect" +import { FetchHttpClient, HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http" +import { RateLimiter } from "effect/unstable/persistence" +``` + +Platform implementations are provided as layers. Use `FetchHttpClient.layer` for +portable fetch-based code unless the runtime has a more specific layer nearby +(`NodeHttpClient.layerFetch`, `NodeHttpClient.layerNodeHttp`, +`NodeHttpClient.layerUndici`, `BrowserHttpClient.layerXMLHttpRequest`, etc.). + +## Build API Clients As Services + +Wrap API-specific HTTP behavior in a `Context.Service` layer. Acquire +`HttpClient.HttpClient` once, then apply shared middleware such as base URL, +headers, status filtering, retries, tracing spans, and error mapping. + +```ts +class Todo extends Schema.Class("Todo")({ + id: Schema.Number, + title: Schema.String, + completed: Schema.Boolean +}) {} + +export class TodoApi extends Context.Service Effect.Effect +}>()("app/TodoApi") { + static readonly layer = Layer.effect( + TodoApi, + Effect.gen(function*() { + const client = (yield* HttpClient.HttpClient).pipe( + HttpClient.mapRequest(flow( + HttpClientRequest.prependUrl("https://example.com/api"), + HttpClientRequest.acceptJson + )), + HttpClient.filterStatusOk, + HttpClient.retryTransient({ + schedule: Schedule.exponential(100), + times: 3 + }) + ) + + const getTodo = Effect.fn("TodoApi.getTodo")(function*(id: number) { + yield* Effect.annotateCurrentSpan({ id }) + + return yield* client.get(`/todos/${id}`).pipe( + Effect.flatMap(HttpClientResponse.schemaBodyJson(Todo)), + Effect.mapError((cause) => new TodoApiError({ cause })), + Effect.withSpan("TodoApi.getTodo") + ) + }) + + return TodoApi.of({ getTodo }) + }) + ).pipe( + Layer.provide(FetchHttpClient.layer) + ) +} + +export class TodoApiError extends Schema.TaggedErrorClass()("TodoApiError", { + cause: Schema.Defect +}) {} +``` + +## Requests Are Immutable Values + +Use `HttpClientRequest` constructors and combinators instead of hand-building +fetch options. Each combinator returns a new request. + +```ts +const request = HttpClientRequest.post("/todos").pipe( + HttpClientRequest.setUrlParams({ format: "json" }), + HttpClientRequest.bearerToken(token), + HttpClientRequest.acceptJson, + HttpClientRequest.bodyJsonUnsafe(payload) +) + +const response = yield* client.execute(request) +``` + +Prefer schema-backed encoders when a schema exists. `schemaBodyJson` and +`bodyJson` fail in the Effect error channel; `bodyJsonUnsafe` may throw during +JSON encoding and is best reserved for generated code or already-safe payloads. + +```ts +const createTodo = (input: typeof NewTodo.Type) => + HttpClientRequest.post("/todos").pipe( + HttpClientRequest.schemaBodyJson(NewTodo)(input), + Effect.flatMap(client.execute), + Effect.flatMap(HttpClientResponse.schemaBodyJson(Todo)) + ) +``` + +Use `setUrlParams` when replacing query values and `appendUrlParams` when +multiple values with the same key must be preserved. Passing a `URL` to a +request constructor extracts search parameters and hash into structured request +fields. + +## Status Codes Are Not Errors By Default + +`HttpClient` succeeds with an `HttpClientResponse` for non-2xx statuses. Choose +one of these explicitly: + +```ts +// Simple API: fail on anything outside 2xx. +const json = yield* client.get("/todos/1").pipe( + Effect.flatMap(HttpClientResponse.filterStatusOk), + Effect.flatMap(HttpClientResponse.schemaBodyJson(Todo)) +) +``` + +```ts +// Typed API: branch by exact status or status class. +const result = yield* client.post("/todos").pipe( + Effect.flatMap(HttpClientResponse.matchStatus({ + 201: HttpClientResponse.schemaBodyJson(Todo), + 400: (response) => + Effect.flatMap( + HttpClientResponse.schemaBodyJson(ApiProblem)(response), + (problem) => Effect.fail(new BadRequest({ problem })) + ), + "5xx": (response) => Effect.fail(new RemoteServiceUnavailable({ status: response.status })), + orElse: (response) => Effect.fail(new UnexpectedStatus({ status: response.status })) + })) +) +``` + +Use `HttpClient.filterStatusOk` on the client when every request made by that +client expects 2xx responses. Use `HttpClientResponse.matchStatus` when the API +has typed non-2xx responses. + +## Decode Responses Deliberately + +Body readers are effects and can fail with `HttpClientError`: + +```ts +yield* response.text +yield* response.json +yield* response.arrayBuffer +yield* response.urlParamsBody +``` + +Prefer schema decoders for JSON and headers: + +```ts +yield* HttpClientResponse.schemaBodyJson(Todo)(response) +yield* HttpClientResponse.schemaJson(ResponseEnvelope)(response) +yield* HttpClientResponse.schemaNoBody(HeaderOnlyResponse)(response) +``` + +Use `schemaBodyJson` for body-only JSON. Use `schemaJson` when the schema covers +the whole `{ status, headers, body }` response shape. `response.json` parses an +empty text body as `null`. `response.stream` fails if there is no body. + +## Error Handling + +The public failure is usually `HttpClientError.HttpClientError`. Inspect +`error.reason._tag` for the precise cause: + +- `TransportError`, `EncodeError`, and `InvalidUrlError` happen before a + response exists. +- `StatusCodeError`, `DecodeError`, and `EmptyBodyError` include the response. + +Do not try to catch `StatusCodeError` directly with `Effect.catchTag` on a normal +client call; the outer tag is `HttpClientError`. Catch `HttpClientError` and +branch on `reason._tag`, or map errors at the API service boundary. + +```ts +const recovered = client.get("/todos/1").pipe( + Effect.flatMap(HttpClientResponse.filterStatusOk), + Effect.catchTag("HttpClientError", (error) => { + if (error.reason._tag === "StatusCodeError" && error.response?.status === 404) { + return Effect.succeedNone + } + return Effect.fail(error) + }) +) +``` + +## Middleware Ordering + +`HttpClient` middleware transforms a client and is usually read left to right in +the `pipe`. + +```ts +const client = baseClient.pipe( + HttpClient.mapRequest(HttpClientRequest.prependUrl("https://api.example.com")), + HttpClient.mapRequest(HttpClientRequest.bearerToken(token)), + HttpClient.filterStatusOk, + HttpClient.retryTransient({ times: 3 }) +) +``` + +Use `mapRequest` for transformations that should run after existing request +preprocessing. Use `mapRequestInput` only when a transformation must run before +previously installed request middleware. + +Useful middleware: + +- `mapRequest` / `mapRequestEffect` for base URLs, headers, auth, and request + normalization. +- `filterStatus` / `filterStatusOk` for turning unacceptable statuses into + failures. +- `retryTransient` for transport failures, timeouts, and transient statuses + (`408`, `429`, `500`, `502`, `503`, `504`). The default `retryOn` is + `"errors-and-responses"`. +- `followRedirects()` for following 3xx `location` headers, defaulting to 10 + redirects. +- `withCookiesRef` for cookie jars across requests. +- `tap`, `tapError`, and `tapRequest` for logging/metrics without changing the + response. + +## Rate Limiting + +Use `HttpClient.withRateLimiter` with the `RateLimiter` service when requests +must share a limit by key. + +```ts +const limited = client.pipe( + HttpClient.withRateLimiter({ + limiter: yield* RateLimiter.RateLimiter, + key: (request) => request.url, + limit: 10, + window: "1 minute" + }) +) +``` + +By default, it inspects common rate-limit headers such as `ratelimit-limit`, +`x-ratelimit-limit`, `ratelimit-remaining`, `retry-after`, and reset headers. +It also retries `429` responses, including `HttpClientError` values wrapping a +429 `StatusCodeError`, by sending the retry through the limiter again. Set +`disableResponseInspection: true` only when response headers should not affect +future limits. + +## Streaming And Scope + +For response bodies, prefer `HttpClientResponse.stream(effect)` or unwrap +`response.stream` and consume it with `Stream` combinators. + +```ts +const text = yield* client.get("/events").pipe( + Effect.map((response) => response.stream), + Stream.unwrap, + Stream.decodeText(), + Stream.mkString +) +``` + +Non-scoped responses are tied to an abort controller so interrupted body reads +and early-ending streams abort the underlying request. If a request lifetime +must be controlled by a surrounding `Scope`, apply `HttpClient.withScope`. + +## Tracing + +HttpClient creates client spans by default and records method, URL, status, and +redacted headers. Use `Effect.withSpan` around domain operations and +`Effect.annotateCurrentSpan` for request-specific attributes. + +Context references can tune tracing: + +- `HttpClient.TracerDisabledWhen` disables spans for matching requests. +- `HttpClient.TracerPropagationEnabled` controls outgoing trace headers. +- `HttpClient.SpanNameGenerator` customizes span names. + +## Testing Patterns + +Use `it.effect`, `assert` / `strictEqual` helpers from `@effect/vitest`, and +`TestClock` for time-dependent behavior. Avoid `Effect.runSync` in tests. + +Test API code with `HttpClient.make` and `HttpClientResponse.fromWeb` rather +than real network calls. + +```ts +it.effect("decodes todo", () => + Effect.gen(function*() { + const client = HttpClient.make((request) => + Effect.succeed( + HttpClientResponse.fromWeb( + request, + new Response(JSON.stringify({ id: 1, title: "Test", completed: false }), { + status: 200, + headers: { "content-type": "application/json" } + }) + ) + ) + ) + + const todo = yield* program.pipe( + Effect.provide(Layer.succeed(HttpClient.HttpClient, client)) + ) + + strictEqual(todo.id, 1) + })) +``` + +For retry and rate-limit tests, count attempts in a `Ref`, fork the request, and +advance `TestClock` instead of waiting in real time. diff --git a/amplify.yml b/amplify.yml new file mode 100644 index 00000000..8dbd9635 --- /dev/null +++ b/amplify.yml @@ -0,0 +1,22 @@ +version: 1 +frontend: + phases: + preBuild: + commands: + - curl https://mise.run | MISE_VERSION=v2026.5.6 sh + - export PATH="$HOME/.local/bin:$PATH" + - export PATH="$HOME/.local/share/mise/shims:$PATH" + - mise install + - pnpm install --frozen-lockfile + - echo "VITE_YIELDS_API_URL=$VITE_YIELDS_API_URL" >> packages/widget/.env + - echo "VITE_API_URL=$VITE_API_URL" >> packages/widget/.env + - echo "VITE_API_KEY=$VITE_API_KEY" >> packages/widget/.env + + build: + commands: + - pnpm --filter=@stakekit/widget build:website + + artifacts: + baseDirectory: packages/widget/dist/website + files: + - "**/*" \ No newline at end of file diff --git a/biome.json b/biome.json index ec464ce6..21dc2774 100644 --- a/biome.json +++ b/biome.json @@ -14,7 +14,8 @@ "!**/.turbo", "!**/region-iso-3166-codes.ts", "!**/mockServiceWorker.js", - "!**/package.json" + "!**/package.json", + "!**/repos" ] }, "formatter": { @@ -24,7 +25,13 @@ "indentWidth": 2, "lineWidth": 80 }, - "assist": { "actions": { "source": { "organizeImports": "on" } } }, + "assist": { + "actions": { + "source": { + "organizeImports": "on" + } + } + }, "linter": { "enabled": true, "rules": { @@ -46,12 +53,22 @@ "noArrayIndexKey": "off", "useIterableCallbackReturn": "off" }, - "a11y": { "noSvgWithoutTitle": "off" }, + "a11y": { + "noSvgWithoutTitle": "off" + }, "correctness": { "useJsxKeyInIterable": "off", "useUniqueElementIds": "off" }, - "complexity": { "noForEach": "off", "useIndexOf": "off" } + "complexity": { + "noForEach": "off", + "useIndexOf": "off" + } + }, + "domains": { + "next": "recommended", + "react": "recommended", + "test": "recommended" } }, "javascript": { diff --git a/mise.lock b/mise.lock new file mode 100644 index 00000000..51b14104 --- /dev/null +++ b/mise.lock @@ -0,0 +1,45 @@ +# @generated - this file is auto-generated by `mise lock` https://mise.en.dev/dev-tools/mise-lock.html + +[[tools.node]] +version = "24.15.0" +backend = "core:node" + +[tools.node."platforms.linux-arm64"] +checksum = "sha256:73afc234d558c24919875f51c2d1ea002a2ada4ea6f83601a383869fefa64eed" +url = "https://nodejs.org/dist/v24.15.0/node-v24.15.0-linux-arm64.tar.gz" + +[tools.node."platforms.linux-arm64-musl"] +checksum = "sha256:31e98aa960a067da91edffd5d93bc46657b5d2a8029612c359f5f2ac0060152a" +url = "https://unofficial-builds.nodejs.org/download/release/v24.15.0/node-v24.15.0-linux-arm64-musl.tar.gz" + +[tools.node."platforms.linux-x64"] +checksum = "sha256:44836872d9aec49f1e6b52a9a922872db9a2b02d235a616a5681b6a85fec8d89" +url = "https://nodejs.org/dist/v24.15.0/node-v24.15.0-linux-x64.tar.gz" + +[tools.node."platforms.linux-x64-musl"] +checksum = "sha256:f55af5bd489c5347b113ca6594cae00a54b30ba57ac5875324311bfc6f4762e3" +url = "https://unofficial-builds.nodejs.org/download/release/v24.15.0/node-v24.15.0-linux-x64-musl.tar.gz" + +[tools.node."platforms.macos-arm64"] +checksum = "sha256:372331b969779ab5d15b949884fc6eaf88d5afe87bde8ba881d6400b9100ffc4" +url = "https://nodejs.org/dist/v24.15.0/node-v24.15.0-darwin-arm64.tar.gz" + +[tools.node."platforms.macos-x64"] +checksum = "sha256:ffd5ee293467927f3ee731a553eb88fd1f48cf74eebc2d74a6babe4af228673b" +url = "https://nodejs.org/dist/v24.15.0/node-v24.15.0-darwin-x64.tar.gz" + +[tools.node."platforms.windows-x64"] +checksum = "sha256:cc5149eabd53779ce1e7bdc5401643622d0c7e6800ade18928a767e940bb0e62" +url = "https://nodejs.org/dist/v24.15.0/node-v24.15.0-win-x64.zip" + +[[tools.npm]] +version = "11.14.1" +backend = "npm:npm" + +[[tools."npm:npm"]] +version = "11.14.1" +backend = "npm:npm" + +[[tools."npm:pnpm"]] +version = "10.33.2" +backend = "npm:pnpm" diff --git a/mise.toml b/mise.toml index e264c145..8cc2234b 100644 --- a/mise.toml +++ b/mise.toml @@ -1,3 +1,4 @@ [tools] -node = "22" -pnpm = "10" \ No newline at end of file +node = "24.15.0" +"npm:npm" = "11.14.1" +"npm:pnpm" = "10.33.2" \ No newline at end of file diff --git a/package.json b/package.json index ac2bf626..91dda17c 100644 --- a/package.json +++ b/package.json @@ -13,27 +13,21 @@ "format": "turbo run format", "clean": "turbo run clean", "prepare": "husky", - "check-unused": "npx knip", - "release": "turbo --filter=@stakekit/widget build && changeset publish", - "version": "changeset version" + "check-hygiene": "rev-dep config run --list-all-issues" }, "devDependencies": { - "@biomejs/biome": "^2.3.8", - "@changesets/cli": "^2.29.8", - "@commitlint/cli": "^20.2.0", - "@commitlint/config-conventional": "^20.2.0", - "husky": "^9.1.7", - "knip": "^5.73.4", - "turbo": "^2.6.3" + "@biomejs/biome": "catalog:", + "@commitlint/cli": "catalog:", + "@commitlint/config-conventional": "catalog:", + "husky": "catalog:", + "rev-dep": "catalog:", + "turbo": "catalog:" }, - "packageManager": "pnpm@10.24.0", "pnpm": { - "overrides": { - "@types/react": "19.0.10", - "@types/react-dom": "19.0.4" - }, "patchedDependencies": { - "purify-ts": "patches/purify-ts.patch" + "purify-ts": "patches/purify-ts.patch", + "@stakekit/rainbowkit@2.2.11": "patches/@stakekit__rainbowkit@2.2.11.patch", + "vite-plugin-node-polyfills@0.26.0": "patches/vite-plugin-node-polyfills@0.26.0.patch" } } } diff --git a/packages/examples/with-cdn-script/package.json b/packages/examples/with-cdn-script/package.json index 6f015011..574149d9 100644 --- a/packages/examples/with-cdn-script/package.json +++ b/packages/examples/with-cdn-script/package.json @@ -3,13 +3,13 @@ "private": true, "version": "1.0.0", "description": "", - "main": "index.js", + "main": "index.mjs", "scripts": { "serve": "serve" }, "author": "", "license": "ISC", "devDependencies": { - "serve": "^14.2.5" + "serve": "catalog:" } } diff --git a/packages/examples/with-nextjs/package.json b/packages/examples/with-nextjs/package.json index f83f70f8..03dc0503 100644 --- a/packages/examples/with-nextjs/package.json +++ b/packages/examples/with-nextjs/package.json @@ -10,14 +10,14 @@ }, "dependencies": { "@stakekit/widget": "workspace:*", - "next": "^16.0.10", - "react": "^19.2.3", - "react-dom": "^19.2.3" + "next": "catalog:", + "react": "catalog:", + "react-dom": "catalog:" }, "devDependencies": { - "@types/node": "^25.0.2", - "@types/react": "19.2.7", - "@types/react-dom": "19.2.3", - "typescript": "^5.9.3" + "@types/node": "catalog:", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "typescript": "catalog:" } } diff --git a/packages/examples/with-nextjs/tsconfig.json b/packages/examples/with-nextjs/tsconfig.json index 3c77b5ea..55792c5d 100644 --- a/packages/examples/with-nextjs/tsconfig.json +++ b/packages/examples/with-nextjs/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../../tsconfig.json", + "extends": "../../../tsconfig.base.json", "compilerOptions": { "plugins": [ { @@ -11,7 +11,8 @@ }, "esModuleInterop": true, "jsx": "preserve", - "lib": ["dom", "dom.iterable", "esnext"] + "lib": ["dom", "dom.iterable", "esnext"], + "tsBuildInfoFile": "dist/.tsbuildinfo/tsconfig.tsbuildinfo" }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], "exclude": ["node_modules"] diff --git a/packages/examples/with-vite-bundled/package.json b/packages/examples/with-vite-bundled/package.json index eab2c330..78a96980 100644 --- a/packages/examples/with-vite-bundled/package.json +++ b/packages/examples/with-vite-bundled/package.json @@ -14,7 +14,7 @@ "@stakekit/widget": "workspace:*" }, "devDependencies": { - "typescript": "~5.9.3", - "vite": "^7.2.7" + "typescript": "catalog:", + "vite": "catalog:" } } diff --git a/packages/examples/with-vite-bundled/tsconfig.json b/packages/examples/with-vite-bundled/tsconfig.json index a4883f28..b1337c86 100644 --- a/packages/examples/with-vite-bundled/tsconfig.json +++ b/packages/examples/with-vite-bundled/tsconfig.json @@ -1,23 +1,15 @@ { + "extends": "../../../tsconfig.base.json", "compilerOptions": { "target": "ES2020", - "useDefineForClassFields": true, - "module": "ESNext", "lib": ["ES2020", "DOM", "DOM.Iterable"], - "skipLibCheck": true, /* Bundler mode */ - "moduleResolution": "bundler", "allowImportingTsExtensions": true, - "isolatedModules": true, "moduleDetection": "force", - "noEmit": true, + "tsBuildInfoFile": "dist/.tsbuildinfo/tsconfig.tsbuildinfo", /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true, "noUncheckedSideEffectImports": true }, "include": ["src"] diff --git a/packages/examples/with-vite/README.md b/packages/examples/with-vite/README.md index 0d6babed..aa80e0b7 100644 --- a/packages/examples/with-vite/README.md +++ b/packages/examples/with-vite/README.md @@ -5,7 +5,7 @@ This template provides a minimal setup to get React working in Vite with HMR and Currently, two official plugins are available: - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + ## Expanding the ESLint configuration diff --git a/packages/examples/with-vite/package.json b/packages/examples/with-vite/package.json index 4db24c5a..c947f694 100644 --- a/packages/examples/with-vite/package.json +++ b/packages/examples/with-vite/package.json @@ -12,14 +12,14 @@ }, "dependencies": { "@stakekit/widget": "workspace:*", - "react": "^19.2.3", - "react-dom": "^19.2.3" + "react": "catalog:", + "react-dom": "catalog:" }, "devDependencies": { - "@types/react": "19.2.7", - "@types/react-dom": "19.2.3", - "@vitejs/plugin-react-swc": "^4.2.2", - "typescript": "^5.9.3", - "vite": "^7.2.7" + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "typescript": "catalog:", + "vite": "catalog:", + "@vitejs/plugin-react": "catalog:" } } diff --git a/packages/examples/with-vite/tsconfig.json b/packages/examples/with-vite/tsconfig.json index 2c51c675..bc0e3469 100644 --- a/packages/examples/with-vite/tsconfig.json +++ b/packages/examples/with-vite/tsconfig.json @@ -1,8 +1,9 @@ { - "extends": "../../../tsconfig.json", + "extends": "../../../tsconfig.base.json", "compilerOptions": { "lib": ["ES2020", "DOM", "DOM.Iterable"], - "allowImportingTsExtensions": true + "allowImportingTsExtensions": true, + "tsBuildInfoFile": "dist/.tsbuildinfo/tsconfig.tsbuildinfo" }, "include": ["src"], "references": [{ "path": "./tsconfig.node.json" }] diff --git a/packages/examples/with-vite/tsconfig.node.json b/packages/examples/with-vite/tsconfig.node.json index 97ede7ee..f4916093 100644 --- a/packages/examples/with-vite/tsconfig.node.json +++ b/packages/examples/with-vite/tsconfig.node.json @@ -5,7 +5,8 @@ "module": "ESNext", "moduleResolution": "bundler", "allowSyntheticDefaultImports": true, - "strict": true + "strict": true, + "tsBuildInfoFile": "dist/.tsbuildinfo/tsconfig.node.tsbuildinfo" }, "include": ["vite.config.ts"] } diff --git a/packages/examples/with-vite/vite.config.ts b/packages/examples/with-vite/vite.config.ts index 17aa4d49..1ff0da0a 100644 --- a/packages/examples/with-vite/vite.config.ts +++ b/packages/examples/with-vite/vite.config.ts @@ -1,4 +1,4 @@ -import react from "@vitejs/plugin-react-swc"; +import react from "@vitejs/plugin-react"; import { defineConfig } from "vite"; // https://vitejs.dev/config/ diff --git a/packages/widget/.env.test b/packages/widget/.env.test new file mode 100644 index 00000000..047eb440 --- /dev/null +++ b/packages/widget/.env.test @@ -0,0 +1,4 @@ +VITE_API_URL=https://api.stakek.it/ +VITE_YIELDS_API_URL=https://api.yield.xyz/ +VITE_API_KEY=vitest-api-key +MODE=test diff --git a/packages/widget/package.json b/packages/widget/package.json index 8d8f9017..c082a79a 100644 --- a/packages/widget/package.json +++ b/packages/widget/package.json @@ -47,117 +47,120 @@ "lint": "biome check . && tsc", "test": "vitest -c vite/vite.config.dev.ts --retry 2 run", "format": "biome check --write . --unsafe", - "build:website": "NODE_OPTIONS=--max-old-space-size=8192 vite -c vite/vite.config.website build", + "build:website": "vite -c vite/vite.config.website build", "build:package": "vite -c vite/vite.config.package.ts build", "build:package:watch": "vite -w -c vite/vite.config.package.ts build", "build:bundle": "vite -c vite/vite.config.bundle.ts build", "build:types": "tsc --project tsconfig.build.json", "clean": "rm -rf dist", "preview": "vite -c vite/vite.config.dev.ts preview --outDir dist/website", - "check-unused": "npx knip", - "check-circular-deps": "skott ./src/index.package.ts -m 'raw' && pnpm lint" + "gen:api": "tsx scripts/generate-effect-openapi.ts" }, "peerDependencies": { "react": ">=18", "react-dom": ">=18" }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + }, "devDependencies": { - "@cosmjs/amino": "^0.33.0", - "@cosmjs/encoding": "0.33.1", - "@cosmos-kit/core": "2.16.0", - "@cosmos-kit/keplr": "^2.15.0", - "@cosmos-kit/leap": "^2.15.0", - "@cosmos-kit/walletconnect": "2.13.0", - "@faker-js/faker": "^10.1.0", - "@ledgerhq/wallet-api-client": "^1.12.6", - "@luno-kit/core": "^0.0.10", - "@meshsdk/wallet": "1.9.0-beta-40", - "@polkadot/types": "^16.5.4", - "@polkadot/util": "^14.0.1", - "@radix-ui/react-dialog": "^1.1.15", - "@radix-ui/react-dropdown-menu": "^2.1.16", - "@radix-ui/react-tooltip": "^1.2.8", - "@radix-ui/react-visually-hidden": "^1.2.4", - "@rollup/plugin-replace": "^6.0.3", - "@safe-global/safe-apps-provider": "^0.18.6", - "@safe-global/safe-apps-sdk": "^9.1.0", - "@solana/wallet-adapter-base": "^0.9.27", - "@solana/wallet-adapter-react": "^0.15.39", - "@solana/wallet-adapter-wallets": "^0.19.37", - "@solana/web3.js": "^1.98.4", - "@stakekit/api-hooks": "0.0.113", - "@stakekit/common": "^0.0.61", - "@stakekit/rainbowkit": "^2.2.11", - "@tanstack/react-query": "^5.90.12", - "@tanstack/react-virtual": "^3.13.13", - "@ton/core": "^0.62.0", - "@tonconnect/ui": "^2.3.1", - "@tronweb3/tronwallet-abstract-adapter": "^1.1.10", - "@tronweb3/tronwallet-adapter-bitkeep": "^1.1.7", - "@tronweb3/tronwallet-adapter-ledger": "^1.1.11", - "@tronweb3/tronwallet-adapter-tronlink": "^1.1.13", - "@tronweb3/tronwallet-adapter-walletconnect": "^3.0.0", - "@types/lodash.merge": "^4.6.9", - "@types/lodash.uniqwith": "^4.5.9", - "@types/mixpanel-browser": "^2.66.0", - "@types/react": "19.2.7", - "@types/react-dom": "19.2.3", - "@vanilla-extract/css": "^1.17.5", - "@vanilla-extract/dynamic": "^2.1.5", - "@vanilla-extract/recipes": "^0.5.7", - "@vanilla-extract/sprinkles": "^1.6.5", - "@vanilla-extract/vite-plugin": "^5.1.3", - "@vitejs/plugin-react": "^5.1.2", - "@vitest/browser-playwright": "^4.0.15", - "@xstate/react": "^6.0.0", - "@xstate/store": "^3.13.0", - "autoprefixer": "^10.4.22", - "axios": "^1.13.2", - "babel-plugin-react-compiler": "1.0.0", - "bignumber.js": "^9.3.1", - "chain-registry": "1.69.221", - "chart.js": "^4.5.1", - "chartjs-plugin-annotation": "^3.1.0", - "clsx": "^2.1.1", - "cosmjs-types": "^0.9.0", - "date-fns": "^4.1.0", - "eventemitter3": "^5.0.1", - "i18next": "^25.7.2", - "i18next-browser-languagedetector": "^8.2.0", - "lodash.merge": "^4.6.2", - "lodash.uniqwith": "^4.5.0", - "mipd": "^0.0.7", - "mixpanel-browser": "^2.72.0", - "motion": "12.23.26", - "msw": "^2.12.4", - "playwright": "^1.57.0", - "postcss": "^8.5.6", - "purify-ts": "2.1.0", - "react": "^19.2.3", - "react-chartjs-2": "^5.3.1", - "react-dom": "^19.2.3", - "react-i18next": "^16.5.0", - "react-loading-skeleton": "^3.5.0", - "react-router": "^7.10.1", - "reselect": "^5.1.1", - "rxjs": "^7.8.2", - "skott": "^0.35.6", - "tronweb": "^6.1.0", - "tsx": "^4.21.0", - "typescript": "5.9.3", - "unplugin-macros": "^0.18.5", - "viem": "^2.42.0", - "vite": "^7.2.7", - "vite-plugin-node-polyfills": "^0.24.0", - "vitest": "^4.0.15", - "vitest-browser-react": "^2.0.2", - "wagmi": "3.1.0", - "xstate": "^5.25.0", - "zx": "^8.8.5" + "@cosmjs/amino": "catalog:", + "@cosmjs/encoding": "catalog:", + "@cosmos-kit/core": "catalog:", + "@cosmos-kit/keplr": "catalog:", + "@cosmos-kit/leap": "catalog:", + "@cosmos-kit/walletconnect": "catalog:", + "@effect/openapi-generator": "catalog:", + "@effect/platform-node": "catalog:", + "@faker-js/faker": "catalog:", + "@ledgerhq/wallet-api-client": "catalog:", + "@ledgerhq/wallet-api-core": "catalog:", + "@luno-kit/core": "catalog:", + "@meshsdk/wallet": "catalog:", + "@polkadot/types": "catalog:", + "@polkadot/util": "catalog:", + "@radix-ui/react-dialog": "catalog:", + "@radix-ui/react-dropdown-menu": "catalog:", + "@radix-ui/react-tooltip": "catalog:", + "@radix-ui/react-visually-hidden": "catalog:", + "@rolldown/plugin-babel": "catalog:", + "@safe-global/safe-apps-provider": "catalog:", + "@safe-global/safe-apps-sdk": "catalog:", + "@solana/wallet-adapter-base": "catalog:", + "@solana/wallet-adapter-react": "catalog:", + "@solana/wallet-adapter-wallets": "catalog:", + "@solana/web3.js": "catalog:", + "@stakekit/rainbowkit": "catalog:", + "@tanstack/react-query": "catalog:", + "@tanstack/react-virtual": "catalog:", + "@ton/core": "catalog:", + "@tonconnect/ui": "catalog:", + "@tronweb3/tronwallet-abstract-adapter": "catalog:", + "@tronweb3/tronwallet-adapter-bitkeep": "catalog:", + "@tronweb3/tronwallet-adapter-ledger": "catalog:", + "@tronweb3/tronwallet-adapter-tronlink": "catalog:", + "@tronweb3/tronwallet-adapter-walletconnect": "catalog:", + "@types/lodash.merge": "catalog:", + "@types/lodash.uniqwith": "catalog:", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "@vanilla-extract/css": "catalog:", + "@vanilla-extract/dynamic": "catalog:", + "@vanilla-extract/recipes": "catalog:", + "@vanilla-extract/sprinkles": "catalog:", + "@vanilla-extract/vite-plugin": "catalog:", + "@vitejs/plugin-react": "catalog:", + "@vitest/browser-playwright": "catalog:", + "@xstate/react": "catalog:", + "@xstate/store": "catalog:", + "autoprefixer": "catalog:", + "babel-plugin-react-compiler": "catalog:", + "bignumber.js": "catalog:", + "chain-registry": "catalog:", + "clsx": "catalog:", + "cosmjs-types": "catalog:", + "date-fns": "catalog:", + "effect": "catalog:", + "eventemitter3": "catalog:", + "i18next": "catalog:", + "i18next-browser-languagedetector": "catalog:", + "lodash.merge": "catalog:", + "lodash.uniqwith": "catalog:", + "mipd": "catalog:", + "mixpanel-browser": "catalog:", + "motion": "catalog:", + "msw": "catalog:", + "playwright": "catalog:", + "postcss": "catalog:", + "purify-ts": "catalog:", + "react": "catalog:", + "react-dom": "catalog:", + "react-i18next": "catalog:", + "react-loading-skeleton": "catalog:", + "react-router": "catalog:", + "reselect": "catalog:", + "rxjs": "catalog:", + "swagger2openapi": "catalog:", + "tsx": "catalog:", + "typescript": "catalog:", + "unplugin-macros": "catalog:", + "viem": "catalog:", + "vite": "catalog:", + "vite-plugin-node-polyfills": "catalog:", + "vitest": "catalog:", + "vitest-browser-react": "catalog:", + "wagmi": "catalog:", + "xstate": "catalog:", + "yaml": "catalog:" }, "msw": { "workerDirectory": [ "public" ] } -} \ No newline at end of file +} diff --git a/packages/widget/polyfills/empty.js b/packages/widget/polyfills/empty.js deleted file mode 100644 index ff8b4c56..00000000 --- a/packages/widget/polyfills/empty.js +++ /dev/null @@ -1 +0,0 @@ -export default {}; diff --git a/packages/widget/public/mockServiceWorker.js b/packages/widget/public/mockServiceWorker.js index f5cddde0..57451a30 100644 --- a/packages/widget/public/mockServiceWorker.js +++ b/packages/widget/public/mockServiceWorker.js @@ -7,114 +7,114 @@ * - Please do NOT modify this file. */ -const PACKAGE_VERSION = '2.12.2' -const INTEGRITY_CHECKSUM = '4db4a41e972cec1b64cc569c66952d82' -const IS_MOCKED_RESPONSE = Symbol('isMockedResponse') -const activeClientIds = new Set() +const PACKAGE_VERSION = "2.12.2"; +const INTEGRITY_CHECKSUM = "4db4a41e972cec1b64cc569c66952d82"; +const IS_MOCKED_RESPONSE = Symbol("isMockedResponse"); +const activeClientIds = new Set(); -addEventListener('install', function () { - self.skipWaiting() -}) +addEventListener("install", () => { + self.skipWaiting(); +}); -addEventListener('activate', function (event) { - event.waitUntil(self.clients.claim()) -}) +addEventListener("activate", (event) => { + event.waitUntil(self.clients.claim()); +}); -addEventListener('message', async function (event) { - const clientId = Reflect.get(event.source || {}, 'id') +addEventListener("message", async (event) => { + const clientId = Reflect.get(event.source || {}, "id"); if (!clientId || !self.clients) { - return + return; } - const client = await self.clients.get(clientId) + const client = await self.clients.get(clientId); if (!client) { - return + return; } const allClients = await self.clients.matchAll({ - type: 'window', - }) + type: "window", + }); switch (event.data) { - case 'KEEPALIVE_REQUEST': { + case "KEEPALIVE_REQUEST": { sendToClient(client, { - type: 'KEEPALIVE_RESPONSE', - }) - break + type: "KEEPALIVE_RESPONSE", + }); + break; } - case 'INTEGRITY_CHECK_REQUEST': { + case "INTEGRITY_CHECK_REQUEST": { sendToClient(client, { - type: 'INTEGRITY_CHECK_RESPONSE', + type: "INTEGRITY_CHECK_RESPONSE", payload: { packageVersion: PACKAGE_VERSION, checksum: INTEGRITY_CHECKSUM, }, - }) - break + }); + break; } - case 'MOCK_ACTIVATE': { - activeClientIds.add(clientId) + case "MOCK_ACTIVATE": { + activeClientIds.add(clientId); sendToClient(client, { - type: 'MOCKING_ENABLED', + type: "MOCKING_ENABLED", payload: { client: { id: client.id, frameType: client.frameType, }, }, - }) - break + }); + break; } - case 'CLIENT_CLOSED': { - activeClientIds.delete(clientId) + case "CLIENT_CLOSED": { + activeClientIds.delete(clientId); const remainingClients = allClients.filter((client) => { - return client.id !== clientId - }) + return client.id !== clientId; + }); // Unregister itself when there are no more clients if (remainingClients.length === 0) { - self.registration.unregister() + self.registration.unregister(); } - break + break; } } -}) +}); -addEventListener('fetch', function (event) { - const requestInterceptedAt = Date.now() +addEventListener("fetch", (event) => { + const requestInterceptedAt = Date.now(); // Bypass navigation requests. - if (event.request.mode === 'navigate') { - return + if (event.request.mode === "navigate") { + return; } // Opening the DevTools triggers the "only-if-cached" request // that cannot be handled by the worker. Bypass such requests. if ( - event.request.cache === 'only-if-cached' && - event.request.mode !== 'same-origin' + event.request.cache === "only-if-cached" && + event.request.mode !== "same-origin" ) { - return + return; } // Bypass all requests when there are no active clients. // Prevents the self-unregistered worked from handling requests // after it's been terminated (still remains active until the next reload). if (activeClientIds.size === 0) { - return + return; } - const requestId = crypto.randomUUID() - event.respondWith(handleRequest(event, requestId, requestInterceptedAt)) -}) + const requestId = crypto.randomUUID(); + event.respondWith(handleRequest(event, requestId, requestInterceptedAt)); +}); /** * @param {FetchEvent} event @@ -122,28 +122,28 @@ addEventListener('fetch', function (event) { * @param {number} requestInterceptedAt */ async function handleRequest(event, requestId, requestInterceptedAt) { - const client = await resolveMainClient(event) - const requestCloneForEvents = event.request.clone() + const client = await resolveMainClient(event); + const requestCloneForEvents = event.request.clone(); const response = await getResponse( event, client, requestId, requestInterceptedAt, - ) + ); // Send back the response clone for the "response:*" life-cycle events. // Ensure MSW is active and ready to handle the message, otherwise // this message will pend indefinitely. if (client && activeClientIds.has(client.id)) { - const serializedRequest = await serializeRequest(requestCloneForEvents) + const serializedRequest = await serializeRequest(requestCloneForEvents); // Clone the response so both the client and the library could consume it. - const responseClone = response.clone() + const responseClone = response.clone(); sendToClient( client, { - type: 'RESPONSE', + type: "RESPONSE", payload: { isMockedResponse: IS_MOCKED_RESPONSE in response, request: { @@ -160,10 +160,10 @@ async function handleRequest(event, requestId, requestInterceptedAt) { }, }, responseClone.body ? [serializedRequest.body, responseClone.body] : [], - ) + ); } - return response + return response; } /** @@ -175,30 +175,30 @@ async function handleRequest(event, requestId, requestInterceptedAt) { * @returns {Promise} */ async function resolveMainClient(event) { - const client = await self.clients.get(event.clientId) + const client = await self.clients.get(event.clientId); if (activeClientIds.has(event.clientId)) { - return client + return client; } - if (client?.frameType === 'top-level') { - return client + if (client?.frameType === "top-level") { + return client; } const allClients = await self.clients.matchAll({ - type: 'window', - }) + type: "window", + }); return allClients .filter((client) => { // Get only those clients that are currently visible. - return client.visibilityState === 'visible' + return client.visibilityState === "visible"; }) .find((client) => { // Find the client ID that's recorded in the // set of clients that have registered the worker. - return activeClientIds.has(client.id) - }) + return activeClientIds.has(client.id); + }); } /** @@ -211,36 +211,36 @@ async function resolveMainClient(event) { async function getResponse(event, client, requestId, requestInterceptedAt) { // Clone the request because it might've been already used // (i.e. its body has been read and sent to the client). - const requestClone = event.request.clone() + const requestClone = event.request.clone(); function passthrough() { // Cast the request headers to a new Headers instance // so the headers can be manipulated with. - const headers = new Headers(requestClone.headers) + const headers = new Headers(requestClone.headers); // Remove the "accept" header value that marked this request as passthrough. // This prevents request alteration and also keeps it compliant with the // user-defined CORS policies. - const acceptHeader = headers.get('accept') + const acceptHeader = headers.get("accept"); if (acceptHeader) { - const values = acceptHeader.split(',').map((value) => value.trim()) + const values = acceptHeader.split(",").map((value) => value.trim()); const filteredValues = values.filter( - (value) => value !== 'msw/passthrough', - ) + (value) => value !== "msw/passthrough", + ); if (filteredValues.length > 0) { - headers.set('accept', filteredValues.join(', ')) + headers.set("accept", filteredValues.join(", ")); } else { - headers.delete('accept') + headers.delete("accept"); } } - return fetch(requestClone, { headers }) + return fetch(requestClone, { headers }); } // Bypass mocking when the client is not active. if (!client) { - return passthrough() + return passthrough(); } // Bypass initial page load requests (i.e. static assets). @@ -248,15 +248,15 @@ async function getResponse(event, client, requestId, requestInterceptedAt) { // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet // and is not ready to handle requests. if (!activeClientIds.has(client.id)) { - return passthrough() + return passthrough(); } // Notify the client that a request has been intercepted. - const serializedRequest = await serializeRequest(event.request) + const serializedRequest = await serializeRequest(event.request); const clientMessage = await sendToClient( client, { - type: 'REQUEST', + type: "REQUEST", payload: { id: requestId, interceptedAt: requestInterceptedAt, @@ -264,19 +264,19 @@ async function getResponse(event, client, requestId, requestInterceptedAt) { }, }, [serializedRequest.body], - ) + ); switch (clientMessage.type) { - case 'MOCK_RESPONSE': { - return respondWithMock(clientMessage.data) + case "MOCK_RESPONSE": { + return respondWithMock(clientMessage.data); } - case 'PASSTHROUGH': { - return passthrough() + case "PASSTHROUGH": { + return passthrough(); } } - return passthrough() + return passthrough(); } /** @@ -287,21 +287,21 @@ async function getResponse(event, client, requestId, requestInterceptedAt) { */ function sendToClient(client, message, transferrables = []) { return new Promise((resolve, reject) => { - const channel = new MessageChannel() + const channel = new MessageChannel(); channel.port1.onmessage = (event) => { - if (event.data && event.data.error) { - return reject(event.data.error) + if (event.data?.error) { + return reject(event.data.error); } - resolve(event.data) - } + resolve(event.data); + }; client.postMessage(message, [ channel.port2, ...transferrables.filter(Boolean), - ]) - }) + ]); + }); } /** @@ -314,17 +314,17 @@ function respondWithMock(response) { // instance will have status code set to 0. Since it's not possible to create // a Response instance with status code 0, handle that use-case separately. if (response.status === 0) { - return Response.error() + return Response.error(); } - const mockedResponse = new Response(response.body, response) + const mockedResponse = new Response(response.body, response); Reflect.defineProperty(mockedResponse, IS_MOCKED_RESPONSE, { value: true, enumerable: true, - }) + }); - return mockedResponse + return mockedResponse; } /** @@ -345,5 +345,5 @@ async function serializeRequest(request) { referrerPolicy: request.referrerPolicy, body: await request.arrayBuffer(), keepalive: request.keepalive, - } + }; } diff --git a/packages/widget/script.ts b/packages/widget/script.ts deleted file mode 100644 index 8726204e..00000000 --- a/packages/widget/script.ts +++ /dev/null @@ -1,110 +0,0 @@ -const main = async () => { - const res = await Promise.all([ - fetch("https://api.stakek.it/v1/yields/enabled/networks", { - headers: { - accept: "application/json, text/plain, */*", - "accept-language": "en,fr;q=0.9,en-US;q=0.8,en-GB;q=0.7", - "cache-control": "no-cache", - pragma: "no-cache", - priority: "u=1, i", - "sec-ch-ua": - '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"', - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": '"macOS"', - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "cross-site", - "x-api-key": "e2d627cf-2ae3-4775-9fbc-76819c7cae38", - }, - referrer: "http://localhost:5173/", - referrerPolicy: "strict-origin-when-cross-origin", - body: null, - method: "GET", - mode: "cors", - credentials: "omit", - }), - fetch("https://api.stakek.it/v1/tokens", { - headers: { - accept: "application/json, text/plain, */*", - "accept-language": "en,fr;q=0.9,en-US;q=0.8,en-GB;q=0.7", - "cache-control": "no-cache", - pragma: "no-cache", - priority: "u=1, i", - "sec-ch-ua": - '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"', - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": '"macOS"', - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "cross-site", - "x-api-key": "e2d627cf-2ae3-4775-9fbc-76819c7cae38", - }, - referrer: "http://localhost:5173/", - referrerPolicy: "strict-origin-when-cross-origin", - body: null, - method: "GET", - mode: "cors", - credentials: "omit", - }), - - fetch("https://api.stakek.it/v1/tokens/balances/scan", { - headers: { - accept: "application/json, text/plain, */*", - "accept-language": "en,fr;q=0.9,en-US;q=0.8,en-GB;q=0.7", - "cache-control": "no-cache", - "content-type": "application/json", - pragma: "no-cache", - priority: "u=1, i", - "sec-ch-ua": - '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"', - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": '"macOS"', - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "cross-site", - "x-api-key": "e2d627cf-2ae3-4775-9fbc-76819c7cae38", - }, - referrer: "http://localhost:5173/", - referrerPolicy: "strict-origin-when-cross-origin", - body: '{"addresses":{"address":"0xdCeE0E27dd7c71f53AfC4E3A5248e286586B174d"},"network":"base"}', - method: "POST", - mode: "cors", - credentials: "omit", - }), - - fetch("https://api.stakek.it/v1/yields/balances/scan", { - headers: { - accept: "application/json, text/plain, */*", - "accept-language": "en,fr;q=0.9,en-US;q=0.8,en-GB;q=0.7", - "cache-control": "no-cache", - "content-type": "application/json", - pragma: "no-cache", - priority: "u=1, i", - "sec-ch-ua": - '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"', - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": '"macOS"', - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "cross-site", - "x-api-key": "e2d627cf-2ae3-4775-9fbc-76819c7cae38", - }, - referrer: "http://localhost:5173/", - referrerPolicy: "strict-origin-when-cross-origin", - body: '{"addresses":{"address":"0xdCeE0E27dd7c71f53AfC4E3A5248e286586B174d"},"network":"base","customValidators":[]}', - method: "POST", - mode: "cors", - credentials: "omit", - }), - ]); - - const failing = res.filter((r) => !r.ok); - - for (const r of failing) { - console.log(r); - const json = await r.json(); - console.log(json); - } -}; - -main(); diff --git a/packages/widget/scripts/generate-effect-openapi.ts b/packages/widget/scripts/generate-effect-openapi.ts new file mode 100644 index 00000000..0512244a --- /dev/null +++ b/packages/widget/scripts/generate-effect-openapi.ts @@ -0,0 +1,196 @@ +import { spawn } from "node:child_process"; +import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +type JsonPatchOperation = { + op: "replace"; + path: string; + value: unknown; +}; + +type SpecConfig = { + name: string; + outputPath: string; + patches: JsonPatchOperation[]; + specFileName: string; + url: string; +}; + +const scriptDir = path.dirname(fileURLToPath(import.meta.url)); +const widgetRoot = path.resolve(scriptDir, ".."); +const generatedFileHeader = [ + "// @ts-nocheck", + "// biome-ignore-all lint: generated by Effect OpenAPI", + "", +].join("\n"); + +const specs: SpecConfig[] = [ + { + name: "LegacyApi", + url: process.env.LEGACY_API_SPEC_URL ?? "https://api.stakek.it/docs.yaml", + specFileName: "legacy-api.yaml", + outputPath: path.join(widgetRoot, "src/generated/api/legacy.ts"), + patches: [ + // Upstream currently declares regionCode as an object, but production + // payloads and widget geo-block handling use it as a string. + { + op: "replace", + path: "/components/schemas/GeolocationError/properties/regionCode/type", + value: "string", + }, + ], + }, + { + name: "YieldApi", + url: + process.env.YIELD_API_SPEC_URL ?? "https://api.stg.yield.xyz/docs.yaml", + specFileName: "yield-api.yaml", + outputPath: path.join(widgetRoot, "src/generated/api/yield.ts"), + patches: [ + // The spec marks these date-time fields as nullable, but openapigen beta + // currently drops null for nullable date-time strings. Replacing the + // property without format preserves the production response shape. + { + op: "replace", + path: "/components/schemas/TransactionDto/properties/broadcastedAt", + value: { + type: "string", + nullable: true, + description: "When the transaction was broadcasted to the network", + }, + }, + { + op: "replace", + path: "/components/schemas/ActionDto/properties/completedAt", + value: { + type: "string", + nullable: true, + description: "When the action was completed", + }, + }, + ], + }, +]; + +const run = async ( + command: string, + args: string[], + options?: { input?: string } +) => + new Promise<{ stderr: string; stdout: string }>((resolve, reject) => { + const child = spawn(command, args, { + cwd: widgetRoot, + stdio: ["pipe", "pipe", "pipe"], + }); + + let stdout = ""; + let stderr = ""; + + child.stdout.setEncoding("utf8"); + child.stderr.setEncoding("utf8"); + + child.stdout.on("data", (chunk) => { + stdout += chunk; + }); + child.stderr.on("data", (chunk) => { + stderr += chunk; + }); + child.on("error", reject); + child.on("close", (code) => { + if (code === 0) { + resolve({ stdout, stderr }); + return; + } + + reject( + new Error( + [ + `Command failed: ${command} ${args.join(" ")}`, + `Exit code: ${code}`, + stderr.trim(), + ] + .filter(Boolean) + .join("\n") + ) + ); + }); + + if (options?.input) { + child.stdin.write(options.input); + } + child.stdin.end(); + }); + +const fetchSpec = async (spec: SpecConfig) => { + const response = await fetch(spec.url); + + if (!response.ok) { + throw new Error( + `Failed to fetch ${spec.name} spec from ${spec.url}: ${response.status} ${response.statusText}` + ); + } + + return response.text(); +}; + +const generateSpec = async (spec: SpecConfig, tempDir: string) => { + const specPath = path.join(tempDir, spec.specFileName); + const patchPath = path.join(tempDir, `${spec.specFileName}.patch.json`); + + console.log(`Fetching ${spec.name} spec from ${spec.url}`); + await writeFile(specPath, await fetchSpec(spec)); + await writeFile(patchPath, `${JSON.stringify(spec.patches, null, 2)}\n`); + await mkdir(path.dirname(spec.outputPath), { recursive: true }); + + console.log(`Generating ${path.relative(widgetRoot, spec.outputPath)}`); + const { stdout, stderr } = await run("pnpm", [ + "exec", + "openapigen", + "--spec", + specPath, + "--name", + spec.name, + "--format", + "httpclient-type-only", + "--patch", + patchPath, + ]); + + if (stderr.trim()) { + console.warn(stderr.trim()); + } + + if (!stdout.trim()) { + throw new Error(`${spec.name} generation produced empty output`); + } + + await writeFile(spec.outputPath, `${generatedFileHeader}${stdout}`); +}; + +const main = async () => { + const tempDir = await mkdtemp(path.join(tmpdir(), "stakekit-openapi-")); + + try { + for (const spec of specs) { + await generateSpec(spec, tempDir); + } + + await run("pnpm", [ + "exec", + "biome", + "check", + "--write", + "--unsafe", + ...specs.map((spec) => path.relative(widgetRoot, spec.outputPath)), + ]); + } finally { + await rm(tempDir, { force: true, recursive: true }); + } +}; + +main().catch((error: unknown) => { + console.error(error); + process.exitCode = 1; +}); diff --git a/packages/widget/src/common/check-gas-amount.ts b/packages/widget/src/common/check-gas-amount.ts index 7cd1041f..c620a372 100644 --- a/packages/widget/src/common/check-gas-amount.ts +++ b/packages/widget/src/common/check-gas-amount.ts @@ -1,12 +1,10 @@ -import { - type AddressWithTokenDto, - type TokenDto, - tokenGetTokenBalances, -} from "@stakekit/api-hooks"; import BigNumber from "bignumber.js"; -import { EitherAsync, Left, List, Right } from "purify-ts"; +import { EitherAsync, Left, List, Maybe, Right } from "purify-ts"; import { equalTokens } from "../domain"; import type { ActionDtoWithGasEstimate } from "../domain/types/action"; +import type { AddressWithTokenDto } from "../domain/types/addresses"; +import type { TokenDto } from "../domain/types/tokens"; +import type { ApiClient } from "../providers/api/api-client"; type CheckGasAmountIfStake = | { isStake: true; stakeToken: TokenDto; stakeAmount: BigNumber } @@ -14,33 +12,46 @@ type CheckGasAmountIfStake = export const checkGasAmount = ({ addressWithTokenDto, + apiClient, gasEstimate, ...rest }: { addressWithTokenDto: AddressWithTokenDto; + apiClient: ApiClient; gasEstimate: ActionDtoWithGasEstimate["gasEstimate"]; } & CheckGasAmountIfStake) => - EitherAsync(() => tokenGetTokenBalances({ addresses: [addressWithTokenDto] })) - .mapLeft(() => new GetGasTokenError()) - .chain((res) => - EitherAsync.liftEither( - List.head(res) - .map((val) => ({ ...val, amount: new BigNumber(val.amount ?? 0) })) - .toEither(new GasTokenMissingError()) - ).chain(async (gasTokenBalance) => { - const amount = - rest.isStake && equalTokens(gasTokenBalance.token, rest.stakeToken) - ? gasTokenBalance.amount.minus(rest.stakeAmount) - : gasTokenBalance.amount; - - if (gasEstimate.amount.isGreaterThan(amount)) { - return Left(new NotEnoughGasTokenError()); - } - - return Right(null); + EitherAsync.liftEither( + Maybe.fromNullable(gasEstimate).toEither(new GasTokenMissingError()) + ).chain((gasEstimate) => + EitherAsync(() => + apiClient.legacy.TokenControllerGetTokenBalances({ + payload: { addresses: [addressWithTokenDto] }, }) ) - .chainLeft(async (e) => Right(e)); + .mapLeft(() => new GetGasTokenError()) + .chain((res) => + EitherAsync.liftEither( + List.head(res) + .map((val) => ({ + ...val, + amount: new BigNumber(val.amount ?? 0), + })) + .toEither(new GasTokenMissingError()) + ).chain(async (gasTokenBalance) => { + const amount = + rest.isStake && equalTokens(gasTokenBalance.token, rest.stakeToken) + ? gasTokenBalance.amount.minus(rest.stakeAmount) + : gasTokenBalance.amount; + + if (gasEstimate.amount.isGreaterThan(amount)) { + return Left(new NotEnoughGasTokenError()); + } + + return Right(null); + }) + ) + .chainLeft(async (e) => Right(e)) + ); export class NotEnoughGasTokenError extends Error { constructor() { diff --git a/packages/widget/src/common/delay-api-requests.ts b/packages/widget/src/common/delay-api-requests.ts index df2c5ece..0b570222 100644 --- a/packages/widget/src/common/delay-api-requests.ts +++ b/packages/widget/src/common/delay-api-requests.ts @@ -1,4 +1,3 @@ -import type { AxiosInstance } from "axios"; import { config } from "../config"; const delayMap = new Map, Record>(); @@ -26,12 +25,7 @@ const checkDelay = () => { }).then(() => unsub()); }; -export const attachDelayInterceptor = (apiClient: AxiosInstance) => - apiClient.interceptors.response.use(async (response) => { - await checkDelay(); - - return response; - }); +export const waitForDelayedApiRequests = () => checkDelay(); /** * diff --git a/packages/widget/src/providers/api/get-enabled-networks.ts b/packages/widget/src/common/get-enabled-networks.ts similarity index 55% rename from packages/widget/src/providers/api/get-enabled-networks.ts rename to packages/widget/src/common/get-enabled-networks.ts index 1ed81338..ece15507 100644 --- a/packages/widget/src/providers/api/get-enabled-networks.ts +++ b/packages/widget/src/common/get-enabled-networks.ts @@ -1,12 +1,14 @@ -import { yieldGetMyNetworks } from "@stakekit/api-hooks"; -import type { Networks } from "@stakekit/common"; import type { QueryClient } from "@tanstack/react-query"; import { EitherAsync } from "purify-ts"; -import { config } from "../../config"; +import { config } from "../config"; +import type { Networks } from "../domain/types/chains/networks"; +import type { ApiClient } from "../providers/api/api-client"; export const getEnabledNetworks = ({ + apiClient, queryClient, }: { + apiClient: ApiClient; queryClient: QueryClient; }) => EitherAsync(() => @@ -14,10 +16,10 @@ export const getEnabledNetworks = ({ staleTime: Number.POSITIVE_INFINITY, queryKey: [config.appPrefix, "enabled-networks"], queryFn: async () => - ( - await EitherAsync(() => yieldGetMyNetworks()).map( - (v) => new Set(v as Networks[]) + new Set( + (await apiClient.yield.NetworksControllerGetNetworks(undefined)).map( + (network) => network.id as Networks ) - ).unsafeCoerce(), + ), }) ).mapLeft(() => new Error("Could not get enabled networks")); diff --git a/packages/widget/src/common/get-gas-mode-value.ts b/packages/widget/src/common/get-gas-mode-value.ts deleted file mode 100644 index 92651257..00000000 --- a/packages/widget/src/common/get-gas-mode-value.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { - type Networks, - transactionGetGasForNetwork, -} from "@stakekit/api-hooks"; -import { EitherAsync, List } from "purify-ts"; - -export const getAverageGasMode = ({ network }: { network: Networks }) => - EitherAsync(() => transactionGetGasForNetwork(network)) - .mapLeft(() => new Error("Get gas for network error")) - .chain((gas) => - EitherAsync.liftEither( - List.find((v) => v.name === "average", gas.modes.values).toEither( - new Error("Average gas mode not found") - ) - ) - ); diff --git a/packages/widget/src/common/get-token-balances.ts b/packages/widget/src/common/get-token-balances.ts index 2a739960..bb266589 100644 --- a/packages/widget/src/common/get-token-balances.ts +++ b/packages/widget/src/common/get-token-balances.ts @@ -3,17 +3,20 @@ import { EitherAsync, Right } from "purify-ts"; import type { SKWallet } from "../domain/types/wallet"; import { getDefaultTokens } from "../hooks/api/use-default-tokens"; import { getTokenBalancesScan } from "../hooks/api/use-token-balances-scan"; +import type { ApiClient } from "../providers/api/api-client"; import type { SettingsProps } from "../providers/settings/types"; export const getTokenBalances = ({ additionalAddresses, address, + apiClient, network, queryClient, tokensForEnabledYieldsOnly, }: { additionalAddresses: SKWallet["additionalAddresses"]; address: SKWallet["address"]; + apiClient: ApiClient; queryClient: QueryClient; network: SKWallet["network"]; tokensForEnabledYieldsOnly: SettingsProps["tokensForEnabledYieldsOnly"]; @@ -21,6 +24,7 @@ export const getTokenBalances = ({ EitherAsync.fromPromise(() => Promise.all([ getDefaultTokens({ + apiClient, queryClient, network: network ?? undefined, enabledYieldsOnly: tokensForEnabledYieldsOnly, @@ -33,6 +37,7 @@ export const getTokenBalances = ({ } return getTokenBalancesScan({ + apiClient, queryClient, tokenBalanceScanDto: { addresses: { diff --git a/packages/widget/src/common/private-api.ts b/packages/widget/src/common/private-api.ts deleted file mode 100644 index 23df6ebb..00000000 --- a/packages/widget/src/common/private-api.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { - customFetch, - type TokenBalanceScanDto, - type TokenBalanceScanResponseDto, - type ValidatorSearchResultDto, - type YieldBalanceScanRequestDto, - type YieldBalancesWithIntegrationIdDto, - type YieldDto, -} from "@stakekit/api-hooks"; - -/** - * Scans for tokens with balance with available yields - * @summary Scan for token balances - */ -export const tokenTokenBalancesScan = ( - tokenBalanceScanDto: TokenBalanceScanDto, - signal?: AbortSignal -) => { - return customFetch({ - url: "/v1/tokens/balances/scan", - method: "POST", - headers: { "Content-Type": "application/json" }, - data: tokenBalanceScanDto, - signal, - }); -}; - -/** - * Scans for yield balances among enabled yields. - * @summary Scan for yield balances - */ -export const yieldYieldBalancesScan = ( - yieldBalanceScanRequestDto: YieldBalanceScanRequestDto, - signal?: AbortSignal -) => { - return customFetch({ - url: "/v1/yields/balances/scan", - method: "POST", - headers: { "Content-Type": "application/json" }, - data: yieldBalanceScanRequestDto, - signal, - }); -}; - -/** - * Returns a yield that is associated with given integration ID - * @summary Get a yield given an integration ID - */ -export const yieldYieldOpportunity = ( - integrationId: string, - params?: { ledgerWalletAPICompatible?: boolean }, - signal?: AbortSignal -) => { - return customFetch({ - url: `/v1/yields/${integrationId}`, - method: "GET", - headers: { "Content-Type": "application/json" }, - params, - signal, - }); -}; - -export type YieldFindValidatorsParams = { - ledgerWalletAPICompatible?: boolean; - network?: string; - query?: string; -}; - -/** - * Returns a list of available validators to specify when providing a `validatorAddress` property. - * @summary Get validators - */ -export const yieldFindValidators = ( - params?: YieldFindValidatorsParams, - signal?: AbortSignal -) => { - return customFetch({ - url: "/v1/yields/validators", - method: "GET", - params, - signal, - }); -}; diff --git a/packages/widget/src/common/utils.ts b/packages/widget/src/common/utils.ts deleted file mode 100644 index 04b527fc..00000000 --- a/packages/widget/src/common/utils.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { isAxiosError } from "axios"; -import { EitherAsync } from "purify-ts"; -import { waitForMs } from "../utils"; - -const _shouldRetry = ({ - error, - retryCount, - retryTimes, -}: { - error: unknown; - retryCount: number; - retryTimes: number; -}) => { - const res = - isAxiosError(error) && - error?.code !== "ERR_CANCELED" && - (!error.response?.status || error.response.status >= 500) && - retryCount < retryTimes; - - return res; -}; - -/** - * - * @summary Retry with exponential backoff. Fire once + retry times - */ -export const withRequestErrorRetry = ({ - fn, - retryTimes = 2, - shouldRetry, - retryWaitForMs, -}: { - fn: () => Promise; - retryTimes?: number; - shouldRetry?: (error: unknown, retryCount: number) => boolean; - retryWaitForMs?: () => number; -}) => { - let retryCount = 0; - - const newFn = (): EitherAsync => { - return EitherAsync(async () => { - try { - return await fn(); - } catch (error) { - let err = error; - - while ( - shouldRetry?.(error, retryCount) ?? - _shouldRetry({ error: err, retryCount, retryTimes }) - ) { - try { - await waitForMs(retryWaitForMs?.() ?? 2 ** (retryCount + 1) * 1000); - - return await fn(); - } catch (newError) { - err = newError; - retryCount++; - } - } - - throw err; - } - }); - }; - - return newFn(); -}; diff --git a/packages/widget/src/components/atoms/image-fallback/index.tsx b/packages/widget/src/components/atoms/image-fallback/index.tsx deleted file mode 100644 index 45dd11a0..00000000 --- a/packages/widget/src/components/atoms/image-fallback/index.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { assignInlineVars } from "@vanilla-extract/dynamic"; -import type { Atoms } from "../../../styles/theme/atoms.css"; -import { getBackgroundColor } from "../../../utils"; -import { Box } from "../box"; -import type { TextVariants } from "../typography/styles.css"; -import { Text } from "../typography/text"; -import { defaultColor, fallbackContainer } from "./styles.css"; - -export const ImageFallback = ({ - name, - tokenLogoHw, - textVariant, -}: { - name: string; - tokenLogoHw?: Atoms["hw"]; - textVariant?: TextVariants; -}) => { - return ( - - - {name.charAt(0).toUpperCase()} - - - ); -}; diff --git a/packages/widget/src/components/atoms/image-fallback/styles.css.ts b/packages/widget/src/components/atoms/image-fallback/styles.css.ts deleted file mode 100644 index dc6465f1..00000000 --- a/packages/widget/src/components/atoms/image-fallback/styles.css.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { createVar, style } from "@vanilla-extract/css"; - -export const defaultColor = createVar(); - -export const fallbackContainer = style({ background: defaultColor }); diff --git a/packages/widget/src/components/atoms/image/index.tsx b/packages/widget/src/components/atoms/image/index.tsx index b6c2690c..9e9e018b 100644 --- a/packages/widget/src/components/atoms/image/index.tsx +++ b/packages/widget/src/components/atoms/image/index.tsx @@ -1,85 +1,69 @@ -import type { HTMLProps, ReactNode } from "react"; -import { isValidElement, useEffect, useMemo, useState } from "react"; +import type { HTMLProps } from "react"; +import { useMemo } from "react"; +import { getBackgroundColor } from "../../../utils"; import type { BoxProps } from "../box"; import { Box } from "../box"; -const failLoadImages = new Set(); - type ImageProps = { - src: string | undefined; - fallback: string | ReactNode; - containerProps?: Omit; - imageProps?: Omit; + src?: string; + fallbackName?: string; + wrapperProps?: Omit; + imgProps?: Omit; }; export const Image = ({ - fallback, src, - containerProps, - imageProps, + fallbackName, + wrapperProps, + imgProps, }: ImageProps) => { - const [loadState, setLoadState] = useState(() => ({ - src, - loaded: false, - timeoutFallback: false, - })); - - /** - * Reset on src change - */ - if (loadState.src !== src) { - setLoadState({ src, loaded: false, timeoutFallback: false }); - } - - useEffect(() => { - if (src && failLoadImages.has(src)) return; - - const id = setTimeout(() => { - setLoadState((prev) => ({ ...prev, timeoutFallback: true })); - }, 500); - - return () => clearTimeout(id); - }, [src]); - - const onLoad: HTMLProps["onLoad"] = (e) => { - setLoadState((prev) => ({ ...prev, loaded: true })); - imageProps?.onLoad?.(e); - }; + const generatedFallbackSrc = useMemo( + () => createMonogramImageSrc(fallbackName), + [fallbackName] + ); const onError: HTMLProps["onError"] = (e) => { - if (src) { - failLoadImages.add(src); + if (generatedFallbackSrc) { + e.currentTarget.src = generatedFallbackSrc; } - imageProps?.onError?.(e); + imgProps?.onError?.(e); }; - const showFallback = useMemo(() => { - if (!isValidElement(fallback)) return false; - - return ( - !src || - failLoadImages.has(src) || - (loadState.timeoutFallback && !loadState.loaded) - ); - }, [fallback, loadState.loaded, loadState.timeoutFallback, src]); - return ( - {showFallback && {fallback}} - {!!(src && !failLoadImages.has(src)) && ( - - )} + ); }; + +const createMonogramImageSrc = (name?: string) => { + if (!name) return undefined; + + const [firstCharacter] = Array.from(name.trim()); + if (!firstCharacter) return undefined; + + const initial = escapeForSvg(firstCharacter.toUpperCase()); + const backgroundColor = getBackgroundColor(name); + + const svg = `${initial}`; + + return `data:image/svg+xml;charset=UTF-8,${encodeURIComponent(svg)}`; +}; + +const escapeForSvg = (value: string) => + value + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll('"', """) + .replaceAll("'", "'"); diff --git a/packages/widget/src/components/atoms/number-input/index.tsx b/packages/widget/src/components/atoms/number-input/index.tsx index 0acc9106..6a020462 100644 --- a/packages/widget/src/components/atoms/number-input/index.tsx +++ b/packages/widget/src/components/atoms/number-input/index.tsx @@ -128,5 +128,10 @@ export const NumberInput = memo( } ); -const stringToBigNumber = (str: string) => - new BigNumber(str.replace(/,/g, ".")); +const stringToBigNumber = (str: string) => { + const normalizedValue = /^\d{1,3}(,\d{3})+(\.\d+)?$/.test(str) + ? str.replace(/,/g, "") + : str.replace(/,/g, "."); + + return new BigNumber(normalizedValue); +}; diff --git a/packages/widget/src/components/atoms/token-icon/index.tsx b/packages/widget/src/components/atoms/token-icon/index.tsx index a237dbe7..1c14f4bb 100644 --- a/packages/widget/src/components/atoms/token-icon/index.tsx +++ b/packages/widget/src/components/atoms/token-icon/index.tsx @@ -1,4 +1,5 @@ -import type { TokenDto, YieldMetadataDto } from "@stakekit/api-hooks"; +import type { TokenDto, YieldTokenDto } from "../../../domain/types/tokens"; +import type { YieldMetadata } from "../../../domain/types/yields"; import { useSettings } from "../../../providers/settings"; import type { Atoms } from "../../../styles/theme/atoms.css"; import { NetworkLogoImage } from "./network-icon-image"; @@ -12,8 +13,8 @@ export const TokenIcon = ({ tokenNetworkLogoHw, hideNetwork, }: { - token: TokenDto; - metadata?: YieldMetadataDto; + token: TokenDto | YieldTokenDto; + metadata?: Pick; tokenLogoHw?: Atoms["hw"]; tokenNetworkLogoHw?: Atoms["hw"]; hideNetwork?: boolean; diff --git a/packages/widget/src/components/atoms/token-icon/network-icon-image/index.tsx b/packages/widget/src/components/atoms/token-icon/network-icon-image/index.tsx index e0a0cfad..c604dcc0 100644 --- a/packages/widget/src/components/atoms/token-icon/network-icon-image/index.tsx +++ b/packages/widget/src/components/atoms/token-icon/network-icon-image/index.tsx @@ -15,9 +15,8 @@ export const NetworkLogoImage = ({ ); diff --git a/packages/widget/src/components/atoms/token-icon/provider-icon/index.tsx b/packages/widget/src/components/atoms/token-icon/provider-icon/index.tsx index d7968906..4ad88d01 100644 --- a/packages/widget/src/components/atoms/token-icon/provider-icon/index.tsx +++ b/packages/widget/src/components/atoms/token-icon/provider-icon/index.tsx @@ -1,4 +1,5 @@ -import type { TokenDto, YieldMetadataDto } from "@stakekit/api-hooks"; +import type { TokenDto } from "../../../../domain/types/tokens"; +import type { YieldMetadata } from "../../../../domain/types/yields"; import { useSettings } from "../../../../providers/settings"; import type { Atoms } from "../../../../styles/theme/atoms.css"; import { NetworkLogoImage } from "../network-icon-image"; @@ -13,7 +14,7 @@ export const ProviderIcon = ({ hideNetwork, }: { token: TokenDto; - metadata?: YieldMetadataDto; + metadata?: Pick; tokenLogoHw?: Atoms["hw"]; tokenNetworkLogoHw?: Atoms["hw"]; hideNetwork?: boolean; diff --git a/packages/widget/src/components/atoms/token-icon/token-icon-container/hooks/use-variant-network-urls.ts b/packages/widget/src/components/atoms/token-icon/token-icon-container/hooks/use-variant-network-urls.ts index 3746987b..af8359ce 100644 --- a/packages/widget/src/components/atoms/token-icon/token-icon-container/hooks/use-variant-network-urls.ts +++ b/packages/widget/src/components/atoms/token-icon/token-icon-container/hooks/use-variant-network-urls.ts @@ -1,7 +1,7 @@ -import type { Networks } from "@stakekit/common"; import { Maybe } from "purify-ts"; import { useMemo } from "react"; import type { SupportedSKChains } from "../../../../../domain/types/chains"; +import type { Networks } from "../../../../../domain/types/chains/networks"; import { useSettings } from "../../../../../providers/settings"; import type { SettingsProps } from "../../../../../providers/settings/types"; import { getNetworkLogo } from "../../../../../utils"; diff --git a/packages/widget/src/components/atoms/token-icon/token-icon-container/hooks/use-variant-token-urls.ts b/packages/widget/src/components/atoms/token-icon/token-icon-container/hooks/use-variant-token-urls.ts index 94930944..a577a47a 100644 --- a/packages/widget/src/components/atoms/token-icon/token-icon-container/hooks/use-variant-token-urls.ts +++ b/packages/widget/src/components/atoms/token-icon/token-icon-container/hooks/use-variant-token-urls.ts @@ -1,12 +1,16 @@ -import type { TokenDto, YieldMetadataDto } from "@stakekit/api-hooks"; import { Maybe } from "purify-ts"; import { useMemo } from "react"; import { config } from "../../../../../config"; +import type { + TokenDto, + YieldTokenDto, +} from "../../../../../domain/types/tokens"; +import type { YieldMetadata } from "../../../../../domain/types/yields"; import { useSettings } from "../../../../../providers/settings"; export const useVariantTokenUrls = ( - token: TokenDto, - metadata?: YieldMetadataDto + token: TokenDto | YieldTokenDto, + metadata?: Pick ): { mainUrl: string | undefined; fallbackUrl: string | undefined; @@ -35,7 +39,7 @@ export const useVariantTokenUrls = ( const tokenMappingResult = Maybe.fromNullable(tokenIconMapping) .chainNullable((mapping) => { if (typeof mapping === "function") { - return mapping(token); + return mapping(token as Parameters[0]); } return mapping[token.symbol]; diff --git a/packages/widget/src/components/atoms/token-icon/token-icon-container/index.tsx b/packages/widget/src/components/atoms/token-icon/token-icon-container/index.tsx index a17d64f8..d8182f9a 100644 --- a/packages/widget/src/components/atoms/token-icon/token-icon-container/index.tsx +++ b/packages/widget/src/components/atoms/token-icon/token-icon-container/index.tsx @@ -1,13 +1,14 @@ -import type { TokenDto, YieldMetadataDto } from "@stakekit/api-hooks"; -import type { Networks } from "@stakekit/common"; import type { ReactElement } from "react"; +import type { Networks } from "../../../../domain/types/chains/networks"; +import type { TokenDto, YieldTokenDto } from "../../../../domain/types/tokens"; +import type { YieldMetadata } from "../../../../domain/types/yields"; import { Box } from "../../box"; import { useVariantNetworkUrls } from "./hooks/use-variant-network-urls"; import { useVariantTokenUrls } from "./hooks/use-variant-token-urls"; type TokenIconContainerProps = { - token: TokenDto; - metadata?: YieldMetadataDto; + token: TokenDto | YieldTokenDto; + metadata?: Pick; hideNetwork?: boolean; children: (props: TokenIconContainerReturnType) => ReactElement; }; diff --git a/packages/widget/src/components/atoms/token-icon/token-icon-image/index.tsx b/packages/widget/src/components/atoms/token-icon/token-icon-image/index.tsx index afd87a91..68b5101c 100644 --- a/packages/widget/src/components/atoms/token-icon/token-icon-image/index.tsx +++ b/packages/widget/src/components/atoms/token-icon/token-icon-image/index.tsx @@ -1,6 +1,5 @@ import type { Atoms } from "../../../../styles/theme/atoms.css"; import { Image } from "../../image"; -import { ImageFallback } from "../../image-fallback"; type TokenIconProps = { mainUrl?: string; @@ -17,15 +16,9 @@ export const TokenIconImage = ({ }: TokenIconProps) => ( } - /> - } + fallbackName={name} /> ); diff --git a/packages/widget/src/components/atoms/virtual-list/index.tsx b/packages/widget/src/components/atoms/virtual-list/index.tsx index eb88c416..7bbce42e 100644 --- a/packages/widget/src/components/atoms/virtual-list/index.tsx +++ b/packages/widget/src/components/atoms/virtual-list/index.tsx @@ -234,9 +234,9 @@ export const GroupedVirtualList = ({ return ( {type === "child" ? itemContent(item.index, item.parentIndex) diff --git a/packages/widget/src/components/molecules/amount-toggle/index.tsx b/packages/widget/src/components/molecules/amount-toggle/index.tsx index e7a0bcb0..b2a47475 100644 --- a/packages/widget/src/components/molecules/amount-toggle/index.tsx +++ b/packages/widget/src/components/molecules/amount-toggle/index.tsx @@ -59,4 +59,4 @@ const Amount = ({ fullAmount, shortAmount, children }: AmountProps) => { ); }; -export { Root, Amount }; +export { Amount, Root }; diff --git a/packages/widget/src/components/molecules/reward-rate-breakdown/index.tsx b/packages/widget/src/components/molecules/reward-rate-breakdown/index.tsx new file mode 100644 index 00000000..cda8888e --- /dev/null +++ b/packages/widget/src/components/molecules/reward-rate-breakdown/index.tsx @@ -0,0 +1,86 @@ +import { useTranslation } from "react-i18next"; +import { + getRewardRateBreakdown, + type RewardRateBreakdownItem, + type YieldRewardRateDto, +} from "../../../domain/types/reward-rate"; +import { getRewardRateFormatted } from "../../../utils/formatters"; +import { Box } from "../../atoms/box"; +import { Text } from "../../atoms/typography/text"; + +const getLabelKey = (key: RewardRateBreakdownItem["key"]) => { + switch (key) { + case "native": + return "details.apy_composition.native"; + case "protocol_incentive": + return "details.apy_composition.protocol_incentive"; + case "campaign": + return "details.apy_composition.campaign"; + } +}; + +export const RewardRateBreakdown = ({ + rewardRate, + showUpToCampaign = false, + title, + testId, +}: { + rewardRate: YieldRewardRateDto | null | undefined; + showUpToCampaign?: boolean; + title?: string; + testId?: string; +}) => { + const { t } = useTranslation(); + + const items = getRewardRateBreakdown(rewardRate, { + showUpToCampaign, + }); + + if (!items.length) { + return null; + } + + return ( + + {title ? ( + {title} + ) : null} + + {items.map((item) => { + const value = getRewardRateFormatted({ + rewardRate: item.rate, + rewardType: item.rewardType, + }); + + return ( + + + {t(getLabelKey(item.key))} + + + + {item.isUpTo + ? t("details.apy_composition.up_to", { value }) + : value} + + + ); + })} + + ); +}; diff --git a/packages/widget/src/components/molecules/reward-token-details/index.tsx b/packages/widget/src/components/molecules/reward-token-details/index.tsx index ff41a1ae..183aad2f 100644 --- a/packages/widget/src/components/molecules/reward-token-details/index.tsx +++ b/packages/widget/src/components/molecules/reward-token-details/index.tsx @@ -1,12 +1,11 @@ -import type { ActionTypes } from "@stakekit/api-hooks"; import { Maybe } from "purify-ts"; import type { ComponentProps } from "react"; import { Trans } from "react-i18next"; +import type { YieldPendingActionType } from "../../../domain/types/pending-action"; import type { useRewardTokenDetails } from "../../../hooks/use-reward-token-details"; import { Box } from "../../atoms/box"; import { MorphoStarsIcon } from "../../atoms/icons/morpho-stars"; import { Image } from "../../atoms/image"; -import { ImageFallback } from "../../atoms/image-fallback"; import { Text } from "../../atoms/typography/text"; import { inlineText } from "./style.css"; @@ -19,7 +18,7 @@ export const RewardTokenDetails = ({ | { type: "stake" | "unstake"; pendingAction?: never } | { type: "pendingAction"; - pendingAction: ActionTypes; + pendingAction: YieldPendingActionType; } )) => { const i18nKey: ComponentProps["i18nKey"] = (() => { @@ -29,7 +28,7 @@ export const RewardTokenDetails = ({ if (rest.type === "pendingAction") { return `pending_action_review.pending_action_type.${ - rest.pendingAction.toLowerCase() as Lowercase + rest.pendingAction.toLowerCase() as Lowercase }` as const; } @@ -51,12 +50,10 @@ export const RewardTokenDetails = ({ alignSelf="flex-start" > - } + fallbackName={rt.providerName} /> diff --git a/packages/widget/src/components/molecules/rich-error-modal/index.tsx b/packages/widget/src/components/molecules/rich-error-modal/index.tsx index 26ac4c9e..6d8240df 100644 --- a/packages/widget/src/components/molecules/rich-error-modal/index.tsx +++ b/packages/widget/src/components/molecules/rich-error-modal/index.tsx @@ -1,3 +1,4 @@ +import { useEffect } from "react"; import { useTranslation } from "react-i18next"; import { images } from "../../../assets/images"; import { useRichErrors } from "../../../hooks/use-rich-errors"; @@ -8,13 +9,16 @@ import { Text } from "../../atoms/typography/text"; import { imageStyle } from "./style.css"; export const RichErrorModal = () => { - const { t } = useTranslation(); + const { i18n, t } = useTranslation(); const { error, resetError } = useRichErrors(); const { message, details } = error ?? {}; + const hasKnownMessage = message ? i18n.exists(`errors.${message}`) : false; + + useEffect(() => resetError, [resetError]); return ( resetError() }} + state={{ isOpen: !!error, setOpen: (isOpen) => !isOpen && resetError() }} onClose={resetError} > { )} - {message && ( + {message && hasKnownMessage && ( <> @@ -44,6 +48,7 @@ export const RichErrorModal = () => { {t(`errors.${message}.details`, details)} @@ -68,6 +73,21 @@ export const RichErrorModal = () => { )} + + {message && !hasKnownMessage && ( + + + {t("shared.something_went_wrong")} + + + {message} + + + )} ); diff --git a/packages/widget/src/components/molecules/select-opportunity-list-item/index.tsx b/packages/widget/src/components/molecules/select-opportunity-list-item/index.tsx index 7d83af4c..9d5911f5 100644 --- a/packages/widget/src/components/molecules/select-opportunity-list-item/index.tsx +++ b/packages/widget/src/components/molecules/select-opportunity-list-item/index.tsx @@ -1,14 +1,27 @@ -import type { YieldDto } from "@stakekit/api-hooks"; import BigNumber from "bignumber.js"; import { Maybe } from "purify-ts"; import type { ComponentProps, ReactNode } from "react"; import { useTranslation } from "react-i18next"; +import { + getRewardRateBreakdown, + getYieldRewardRateDetails, +} from "../../../domain/types/reward-rate"; +import { + getYieldCommission, + getYieldProviderDetails, + getYieldRewardTokens, + getYieldRewardType, + getYieldRiskDisplay, + getYieldTVL, + type Yield, +} from "../../../domain/types/yields"; import { APToPercentage, formatNumber, fromWei } from "../../../utils"; import { getRewardRateFormatted } from "../../../utils/formatters"; import { Box } from "../../atoms/box"; import { SelectModalItem } from "../../atoms/select-modal"; import { ProviderIcon } from "../../atoms/token-icon/provider-icon"; import { Text } from "../../atoms/typography/text"; +import { RiskRatingBadge } from "../yield-risk"; import { noWrap, selectItemText } from "./styles.css"; export const SelectOpportunityListItem = ({ @@ -16,8 +29,8 @@ export const SelectOpportunityListItem = ({ onYieldSelect, testId, }: { - item: YieldDto; - onYieldSelect: (item: YieldDto) => void; + item: Yield; + onYieldSelect: (item: Yield) => void; testId?: string; }) => { const onItemClick: ComponentProps["onItemClick"] = ({ @@ -29,9 +42,38 @@ export const SelectOpportunityListItem = ({ const { t } = useTranslation(); + const campaignRate = getRewardRateBreakdown( + getYieldRewardRateDetails(item) + ).find((rewardRate) => rewardRate.key === "campaign"); + + const totalRateFormatted = getRewardRateFormatted({ + rewardRate: item.rewardRate.total, + rewardType: getYieldRewardType(item), + }); + + const primaryRateFormatted = getRewardRateFormatted({ + rewardRate: campaignRate + ? item.rewardRate.total - campaignRate.rate + : item.rewardRate.total, + rewardType: getYieldRewardType(item), + }); + + const provider = getYieldProviderDetails(item) ?? undefined; + const rewardTokens = getYieldRewardTokens(item); + const tvl = getYieldTVL(item); + const commission = getYieldCommission(item); + const risk = getYieldRiskDisplay(item); + return ( - + [0]["token"]} + /> - - - {getRewardRateFormatted({ - rewardRate: item.rewardRate, - rewardType: item.rewardType, - })} - + + {primaryRateFormatted} + + {campaignRate ? ( + + {t("details.apy_composition.up_to", { + value: totalRateFormatted, + })} + + ) : null} - {Maybe.fromNullable(item.metadata.rewardTokens) + {Maybe.fromNullable(rewardTokens.length ? rewardTokens : null) .map((rt) => rt.map((t) => t.symbol).join(", ")) .altLazy(() => - Maybe.fromNullable(item.metadata.tvl) + Maybe.fromNullable(tvl) .map((tvl) => tvl.reduce( (acc, curr) => acc.plus(curr.value), @@ -83,16 +128,29 @@ export const SelectOpportunityListItem = ({ .orDefault(item.token.symbol)} - {Maybe.fromNullable(item.metadata.rewardTokens) + {risk ? ( + + ) : null} + + {Maybe.fromNullable(rewardTokens.length ? rewardTokens : null) .map((): ReactNode | string => ( - + {item.token.symbol} )) .extractNullable()} - {Maybe.fromNullable(item.metadata.commission) + {Maybe.fromNullable(commission) .map((commission) => APToPercentage( commission.reduce((acc, curr) => acc + curr.value, 0) diff --git a/packages/widget/src/components/molecules/select-validator/index.tsx b/packages/widget/src/components/molecules/select-validator/index.tsx index 47acd9bd..f748eba4 100644 --- a/packages/widget/src/components/molecules/select-validator/index.tsx +++ b/packages/widget/src/components/molecules/select-validator/index.tsx @@ -1,7 +1,8 @@ -import type { ValidatorDto, YieldDto } from "@stakekit/api-hooks"; import type { PropsWithChildren } from "react"; import { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; +import type { ValidatorDto } from "../../../domain/types/validators"; +import type { Yield } from "../../../domain/types/yields"; import type { SelectModalProps } from "../../atoms/select-modal"; import { SelectModal } from "../../atoms/select-modal"; import type { GroupedItem } from "./select-validator-list"; @@ -12,8 +13,8 @@ type SelectValidatorProps = PropsWithChildren< selectedValidators: Set; onItemClick: (item: ValidatorDto) => void; onViewMoreClick?: () => void; - validators: YieldDto["validators"]; - selectedStake: YieldDto; + validators: ValidatorDto[]; + selectedStake: Yield; multiSelect: boolean; } & ( | { onSearch: (value: string) => void; searchValue: string } diff --git a/packages/widget/src/components/molecules/select-validator/meta-info.tsx b/packages/widget/src/components/molecules/select-validator/meta-info.tsx index 9120f468..200054dc 100644 --- a/packages/widget/src/components/molecules/select-validator/meta-info.tsx +++ b/packages/widget/src/components/molecules/select-validator/meta-info.tsx @@ -1,10 +1,12 @@ -import type { RewardTypes, ValidatorDto, YieldDto } from "@stakekit/api-hooks"; import BigNumber from "bignumber.js"; import { Just } from "purify-ts"; import type { ReactNode } from "react"; import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import * as CopyText from "../../../components/atoms/copy-text"; +import type { RewardTypes } from "../../../domain/types/reward-rate"; +import type { TokenDto } from "../../../domain/types/tokens"; +import type { ValidatorDto } from "../../../domain/types/validators"; import { APToPercentage, formatAddress, formatNumber } from "../../../utils"; import { getRewardRateFormatted, @@ -29,38 +31,32 @@ export const useMetaInfo = ({ marketCap, tokenSymbol, }: { - [Key in keyof Pick< - ValidatorDto, - | "stakedBalance" - | "votingPower" - | "commission" - | "address" - | "website" - | "nominatorCount" - | "subnetName" - | "marketCap" - | "tokenSymbol" - >]: ValidatorDto[Key] | undefined; -} & { - stakedBalanceToken: YieldDto["token"] | undefined; + commission?: ValidatorDto["commission"]; + stakedBalance?: ValidatorDto["tvl"]; + votingPower?: ValidatorDto["votingPower"]; + address?: ValidatorDto["address"]; + website?: ValidatorDto["website"]; + nominatorCount?: ValidatorDto["nominatorCount"]; + subnetName?: ValidatorDto["subnetName"]; + marketCap?: ValidatorDto["marketCap"]; + tokenSymbol?: ValidatorDto["tokenSymbol"]; + stakedBalanceToken: TokenDto | undefined; rewardRate: number | undefined; rewardType: RewardTypes | undefined; }) => { const { t } = useTranslation(); return useMemo<{ - [Key in keyof Pick< - ValidatorDto, - | "stakedBalance" - | "votingPower" - | "commission" - | "address" - | "website" - | "nominatorCount" - | "subnetName" - | "marketCap" - | "tokenSymbol" - >]: { title: string; val: ReactNode | string } | null; + stakedBalance: { title: string; val: ReactNode | string } | null; + votingPower: { title: string; val: ReactNode | string } | null; + commission: { title: string; val: ReactNode | string } | null; + address: { title: string; val: ReactNode | string } | null; + website: { title: string; val: ReactNode | string } | null; + nominatorCount: { title: string; val: ReactNode | string } | null; + subnetName: { title: string; val: ReactNode | string } | null; + marketCap: { title: string; val: ReactNode | string } | null; + tokenSymbol: { title: string; val: ReactNode | string } | null; + rewardRate: { title: string; val: ReactNode | string } | null; }>( () => ({ rewardRate: diff --git a/packages/widget/src/components/molecules/select-validator/select-validator-list.tsx b/packages/widget/src/components/molecules/select-validator/select-validator-list.tsx index 5a03b4c9..63521640 100644 --- a/packages/widget/src/components/molecules/select-validator/select-validator-list.tsx +++ b/packages/widget/src/components/molecules/select-validator/select-validator-list.tsx @@ -1,7 +1,8 @@ -import type { ValidatorDto, YieldDto } from "@stakekit/api-hooks"; import type { ComponentProps } from "react"; import { memo } from "react"; import { useTranslation } from "react-i18next"; +import type { ValidatorDto } from "../../../domain/types/validators"; +import { getYieldRewardType, type Yield } from "../../../domain/types/yields"; import { vars } from "../../../styles/theme/contract.css"; import { getRewardRateFormatted, @@ -12,7 +13,6 @@ import { Button } from "../../atoms/button"; import { CheckSteps } from "../../atoms/icons/check-steps"; import { PreferredIcon } from "../../atoms/icons/preferred"; import { Image } from "../../atoms/image"; -import { ImageFallback } from "../../atoms/image-fallback"; import { SelectModalItem, SelectModalItemContainer, @@ -44,7 +44,7 @@ export const SelectValidatorList = ({ selectedValidators: Set; onItemClick: (item: ValidatorDto) => void; onViewMoreClick: () => void; - selectedStake: YieldDto; + selectedStake: Yield; tableData: ValidatorDto[]; groupedItems: GroupedItem[]; groupCounts: number[]; @@ -54,7 +54,7 @@ export const SelectValidatorList = ({ return ( 60} + estimateSize={() => 140} groupCounts={groupCounts} data-rk="select-validator-list" groupContent={(index) => { @@ -80,7 +80,7 @@ export const SelectValidatorList = ({ - {getRewardTypeFormatted(selectedStake.rewardType)} + {getRewardTypeFormatted(getYieldRewardType(selectedStake))} @@ -143,16 +143,10 @@ export const SelectValidatorList = ({ )} - } + wrapperProps={{ hw: "9" }} + imgProps={{ borderRadius: "full" }} + src={item.logoURI} + fallbackName={item.name || item.address} /> {getRewardRateFormatted({ - rewardRate: item.apr, - rewardType: selectedStake.rewardType, + rewardRate: item.rewardRate?.total, + rewardType: getYieldRewardType(selectedStake), })} @@ -212,7 +206,7 @@ export const SelectValidatorList = ({ & { - onItemClick: (yieldDto: YieldDto) => void; - providerYieldIds: YieldDto["id"][]; + onItemClick: (yieldDto: Yield) => void; + providerYieldIds: Yield["id"][]; } >; diff --git a/packages/widget/src/components/molecules/summary-item/index.css.ts b/packages/widget/src/components/molecules/summary-item/index.css.ts index 31b14ac3..30b39b8c 100644 --- a/packages/widget/src/components/molecules/summary-item/index.css.ts +++ b/packages/widget/src/components/molecules/summary-item/index.css.ts @@ -1,4 +1,3 @@ -import { style } from "@vanilla-extract/css"; import { type RecipeVariants, recipe } from "@vanilla-extract/recipes"; import { atoms } from "../../../styles/theme/atoms.css"; import { vars } from "../../../styles/theme/contract.css"; @@ -284,12 +283,3 @@ export const summaryLabel = recipe({ export type SummaryLabelContainerVariants = RecipeVariants< typeof summaryLabelContainer >; - -export const loader = style({ - flex: 1, -}); - -export const loaderContainer = style({ - minHeight: "50px", - padding: "8px 16px", -}); diff --git a/packages/widget/src/components/molecules/summary-item/index.tsx b/packages/widget/src/components/molecules/summary-item/index.tsx index 1ae8b2dd..32a0397a 100644 --- a/packages/widget/src/components/molecules/summary-item/index.tsx +++ b/packages/widget/src/components/molecules/summary-item/index.tsx @@ -1,3 +1,4 @@ +import type BigNumber from "bignumber.js"; import { useSettings } from "../../../providers/settings"; import { formatNumber } from "../../../utils"; import { combineRecipeWithVariant } from "../../../utils/styles"; diff --git a/packages/widget/src/components/molecules/yield-risk/index.tsx b/packages/widget/src/components/molecules/yield-risk/index.tsx new file mode 100644 index 00000000..f1a73ac1 --- /dev/null +++ b/packages/widget/src/components/molecules/yield-risk/index.tsx @@ -0,0 +1,96 @@ +import { useTranslation } from "react-i18next"; +import { + getYieldRiskDisplay, + getYieldRiskSourceLabel, + type Yield, + type YieldRiskDisplay, +} from "../../../domain/types/yields"; +import { Box } from "../../atoms/box"; +import { InfoIcon } from "../../atoms/icons/info"; +import { ToolTip } from "../../atoms/tooltip"; +import { Text } from "../../atoms/typography/text"; +import { + riskInfoButton, + riskRatingBadge, + riskRatingBadgeText, + riskSummaryActions, + riskSummaryContainer, +} from "./styles.css"; + +type RiskRatingBadgeProps = { + risk: YieldRiskDisplay; + size?: "compact" | "default"; + testId?: string; +}; + +export const RiskRatingBadge = ({ + risk, + size = "compact", + testId, +}: RiskRatingBadgeProps) => { + const { t } = useTranslation(); + + return ( + + + {risk.rating} + + + ); +}; + +export const YieldRiskRatingSummary = ({ yieldDto }: { yieldDto: Yield }) => { + const { t } = useTranslation(); + const risk = getYieldRiskDisplay(yieldDto); + + if (!risk) return null; + + const sourceLabel = getYieldRiskSourceLabel(risk.source, t); + + return ( + + + {t("details.risk.title")} + + {t("details.risk.rated_by", { source: sourceLabel })} + + + + + + + + + + + + + + ); +}; diff --git a/packages/widget/src/components/molecules/yield-risk/styles.css.ts b/packages/widget/src/components/molecules/yield-risk/styles.css.ts new file mode 100644 index 00000000..0961a1a3 --- /dev/null +++ b/packages/widget/src/components/molecules/yield-risk/styles.css.ts @@ -0,0 +1,84 @@ +import { style } from "@vanilla-extract/css"; +import { recipe } from "@vanilla-extract/recipes"; + +export const riskRatingBadge = recipe({ + base: { + alignItems: "center", + borderRadius: "6px", + display: "inline-flex", + flexShrink: 0, + justifyContent: "center", + whiteSpace: "nowrap", + }, + variants: { + size: { + compact: { + height: "18px", + minWidth: "24px", + padding: "1px 7px", + }, + default: { + height: "32px", + minWidth: "44px", + padding: "4px 12px", + }, + }, + tone: { + positive: { background: "#35C96F" }, + warning: { background: "#F6B500" }, + danger: { background: "#FF3B1F" }, + neutral: { background: "#6E6E6E" }, + }, + }, + defaultVariants: { + size: "compact", + tone: "neutral", + }, +}); + +export const riskRatingBadgeText = recipe({ + base: { + fontWeight: 700, + lineHeight: 1, + whiteSpace: "nowrap", + }, + variants: { + size: { + compact: { + fontSize: "12px", + }, + default: { + fontSize: "16px", + }, + }, + tone: { + positive: { color: "#FFFFFF" }, + warning: { color: "#1F1F1F" }, + danger: { color: "#FFFFFF" }, + neutral: { color: "#FFFFFF" }, + }, + }, + defaultVariants: { + size: "compact", + tone: "neutral", + }, +}); + +export const riskSummaryContainer = style({ + minHeight: "64px", +}); + +export const riskSummaryActions = style({ + alignItems: "center", + display: "flex", + flexShrink: 0, + gap: "12px", +}); + +export const riskInfoButton = style({ + all: "unset", + alignItems: "center", + cursor: "help", + display: "flex", + justifyContent: "center", +}); diff --git a/packages/widget/src/config/index.ts b/packages/widget/src/config/index.ts index d8045bd5..0a04004d 100644 --- a/packages/widget/src/config/index.ts +++ b/packages/widget/src/config/index.ts @@ -15,6 +15,8 @@ export const config = { appPrefix: "sk-widget", env: { apiUrl: import.meta.env.VITE_API_URL ?? "https://api.stakek.it/", + yieldsApiUrl: + import.meta.env.VITE_YIELDS_API_URL ?? "https://api.yield.xyz", isTestMode: import.meta.env.MODE === "test", isDevMode: import.meta.env.MODE === "development", forceAddress: import.meta.env.VITE_FORCE_ADDRESS, diff --git a/packages/widget/src/domain/index.ts b/packages/widget/src/domain/index.ts index d1cc1834..21939f0b 100644 --- a/packages/widget/src/domain/index.ts +++ b/packages/widget/src/domain/index.ts @@ -1,32 +1,30 @@ +import BigNumber from "bignumber.js"; +import { Left, type Maybe, Right } from "purify-ts"; +import type { Override } from "../types/utils"; import type { ActionDto, - PendingActionDto, - TokenDto, TransactionDto, TransactionStatus, - YieldDto, -} from "@stakekit/api-hooks"; -import BigNumber from "bignumber.js"; -import { Left, type Maybe, Right } from "purify-ts"; -import type { Override } from "../types/utils"; -import type { TokenString } from "./types/tokens"; +} from "./types/action"; +import type { AnyPendingActionDto } from "./types/pending-action"; +import { + isPendingActionValidatorAddressesRequired, + isPendingActionValidatorAddressRequired, +} from "./types/pending-action"; +import type { TokenDto } from "./types/tokens"; +import { equalTokens } from "./types/tokens"; +import type { Yield } from "./types/yields"; export { getTokenPriceInUSD } from "./types/price"; - -export const tokenString = (token: TokenDto): TokenString => { - return `${token.network}-${token.address?.toLowerCase()}`; -}; - -export const equalTokens = (a: TokenDto, b: TokenDto) => - tokenString(a) === tokenString(b) && a.symbol === b.symbol; +export { equalTokens, tokenString } from "./types/tokens"; export const stakeTokenSameAsGasToken = ({ stakeToken, yieldDto, }: { stakeToken: TokenDto; - yieldDto: YieldDto; -}) => equalTokens(stakeToken, getGasFeeToken(yieldDto)); + yieldDto: Yield; +}) => equalTokens(stakeToken, yieldDto.mechanics.gasFeeToken); export const getMaxAmount = ({ availableAmount, @@ -46,10 +44,6 @@ export const getMaxAmount = ({ ); }; -export const getBaseToken = (yieldDto: YieldDto) => yieldDto.metadata.token; -export const getGasFeeToken = (yieldDto: YieldDto) => - yieldDto.metadata.gasFeeToken; - /** * * @summary Get stake transactions available for signing or tx status check. @@ -81,11 +75,11 @@ export const getValidStakeSessionTx = (stakeDto: ActionDto) => { export const isTxError = (txStatus: TransactionStatus) => txStatus === "FAILED" || txStatus === "BLOCKED"; -export const PAMultiValidatorsRequired = (pa: PendingActionDto) => - !!pa.args?.args?.validatorAddresses?.required; +export const PAMultiValidatorsRequired = (pa: AnyPendingActionDto) => + isPendingActionValidatorAddressesRequired(pa); -export const PASingleValidatorRequired = (pa: PendingActionDto) => - !!pa.args?.args?.validatorAddress?.required; +export const PASingleValidatorRequired = (pa: AnyPendingActionDto) => + isPendingActionValidatorAddressRequired(pa); export const skNormalizeChainId = (chainId: string) => { const cId = Number(chainId); diff --git a/packages/widget/src/domain/types/action.ts b/packages/widget/src/domain/types/action.ts index 33f09887..27c26f6b 100644 --- a/packages/widget/src/domain/types/action.ts +++ b/packages/widget/src/domain/types/action.ts @@ -1,6 +1,174 @@ -import type { ActionDto, GasEstimateDto } from "@stakekit/api-hooks"; import type BigNumber from "bignumber.js"; +import type { + ActionDto as YieldActionDtoGenerated, + CreateActionDto as YieldCreateActionDtoGenerated, + CreateManageActionDto as YieldCreateManageActionDtoGenerated, + TransactionDto as YieldTransactionDtoGenerated, +} from "../../generated/api/yield"; +import type { TokenDto } from "./tokens"; +import { getYieldMetadataTokens, type Yield } from "./yields"; -export type ActionDtoWithGasEstimate = ActionDto & { - gasEstimate: Omit & { amount: BigNumber }; +export type ActionDto = YieldActionDtoGenerated; +export type TransactionDto = YieldTransactionDtoGenerated; +export type TransactionType = TransactionDto["type"]; +export type ActionType = ActionDto["type"]; +export type ActionStatus = ActionDto["status"]; +export type TransactionStatus = TransactionDto["status"]; + +export type YieldCreateActionDto = YieldCreateActionDtoGenerated; +export type YieldCreateManageActionDto = YieldCreateManageActionDtoGenerated; +export type YieldActionDto = ActionDto; +export type YieldTransactionDto = TransactionDto; +type TransactionGasEstimate = { + amount: string; + gasLimit?: string; + token: TokenDto; +} | null; + +export const ActionTypes = { + STAKE: "STAKE", + UNSTAKE: "UNSTAKE", + CLAIM_REWARDS: "CLAIM_REWARDS", + AUTO_SWEEP_UNSTAKE_REWARDS: "AUTO_SWEEP_UNSTAKE_REWARDS", + AUTO_SWEEP_WITHDRAW_REWARDS: "AUTO_SWEEP_WITHDRAW_REWARDS", + RESTAKE_REWARDS: "RESTAKE_REWARDS", + WITHDRAW: "WITHDRAW", + WITHDRAW_ALL: "WITHDRAW_ALL", + RESTAKE: "RESTAKE", + CLAIM_UNSTAKED: "CLAIM_UNSTAKED", + UNLOCK_LOCKED: "UNLOCK_LOCKED", + STAKE_LOCKED: "STAKE_LOCKED", + VOTE: "VOTE", + REVOKE: "REVOKE", + VOTE_LOCKED: "VOTE_LOCKED", + REVOTE: "REVOTE", + REBOND: "REBOND", + MIGRATE: "MIGRATE", + VERIFY_WITHDRAW_CREDENTIALS: "VERIFY_WITHDRAW_CREDENTIALS", + DELEGATE: "DELEGATE", +} as const satisfies Record; + +export const ActionStatus = { + CANCELED: "CANCELED", + CREATED: "CREATED", + WAITING_FOR_NEXT: "WAITING_FOR_NEXT", + PROCESSING: "PROCESSING", + FAILED: "FAILED", + SUCCESS: "SUCCESS", + STALE: "STALE", +} as const satisfies Record; + +export const TransactionStatus = { + NOT_FOUND: "NOT_FOUND", + CREATED: "CREATED", + BLOCKED: "BLOCKED", + WAITING_FOR_SIGNATURE: "WAITING_FOR_SIGNATURE", + SIGNED: "SIGNED", + BROADCASTED: "BROADCASTED", + PENDING: "PENDING", + CONFIRMED: "CONFIRMED", + FAILED: "FAILED", + SKIPPED: "SKIPPED", +} as const satisfies Record; + +const NATIVE_TOKEN_PLACEHOLDER = "0x"; + +const toLower = (value: string) => value.toLowerCase(); + +type EncodedGasEstimate = { + amount?: string | null; + gasLimit?: string | null; + token?: TokenDto | null; +}; + +export const getActionInputToken = ({ + actionDto, + inputToken, + yieldDto, +}: { + actionDto: ActionDto; + inputToken?: TokenDto; + yieldDto?: Yield | null; +}): TokenDto | undefined => { + if (inputToken) { + return inputToken; + } + + if (!yieldDto) { + return undefined; + } + + const inputTokenValue = actionDto.rawArguments?.inputToken; + + if (!inputTokenValue) { + return yieldDto.token ?? yieldDto.tokens?.[0]; + } + + const needle = toLower(inputTokenValue); + + return ( + [ + yieldDto.token, + ...(yieldDto.tokens ?? []), + ...getYieldMetadataTokens(yieldDto), + ].find((token) => { + const address = token.address ? toLower(token.address) : null; + + return ( + address === needle || + token.symbol.toLowerCase() === needle || + (needle === NATIVE_TOKEN_PLACEHOLDER && !token.address) + ); + }) ?? + yieldDto.token ?? + yieldDto.tokens?.[0] + ); +}; + +export const getActionValidatorAddresses = ( + actionDto: ActionDto +): ReadonlyArray | null => + actionDto.rawArguments?.validatorAddresses ?? + (actionDto.rawArguments?.validatorAddress + ? [actionDto.rawArguments.validatorAddress] + : null); + +export const getTransactionGasEstimate = ( + transactionDto: TransactionDto +): TransactionGasEstimate => { + const gasEstimate = transactionDto.gasEstimate; + + if (!gasEstimate) { + return null; + } + + try { + const parsed = JSON.parse(gasEstimate) as EncodedGasEstimate | null; + + if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) { + return null; + } + + const amount = parsed.amount ?? null; + const token = parsed.token; + + if (!amount || !token) { + return null; + } + + return { + amount, + token, + }; + } catch { + return null; + } +}; + +export type ActionDtoWithGasEstimate = { + gasEstimate: { + amount: BigNumber; + token: TokenDto; + gasLimit?: string; + } | null; }; diff --git a/packages/widget/src/domain/types/addresses.ts b/packages/widget/src/domain/types/addresses.ts new file mode 100644 index 00000000..a8304ff2 --- /dev/null +++ b/packages/widget/src/domain/types/addresses.ts @@ -0,0 +1,10 @@ +import type { + AddressesDto, + AddressWithTokenDto as LegacyAddressWithTokenDto, +} from "../../generated/api/legacy"; + +export type AddressWithTokenDto = LegacyAddressWithTokenDto; +export type AddressWithTokenDtoAdditionalAddresses = NonNullable< + LegacyAddressWithTokenDto["additionalAddresses"] +>; +export type { AddressesDto }; diff --git a/packages/widget/src/domain/types/chains/cosmos.ts b/packages/widget/src/domain/types/chains/cosmos.ts index e6b75938..f0a8bc4d 100644 --- a/packages/widget/src/domain/types/chains/cosmos.ts +++ b/packages/widget/src/domain/types/chains/cosmos.ts @@ -1,6 +1,6 @@ -import { CosmosNetworks } from "@stakekit/common"; import type { Chain } from "@stakekit/rainbowkit"; import type { CosmosChainsAssets } from "../../../providers/cosmos/chains/types"; +import { CosmosNetworks } from "./networks"; export const supportedCosmosChains = [ CosmosNetworks.Akash, diff --git a/packages/widget/src/domain/types/chains/evm.ts b/packages/widget/src/domain/types/chains/evm.ts index 31f904b7..df98f792 100644 --- a/packages/widget/src/domain/types/chains/evm.ts +++ b/packages/widget/src/domain/types/chains/evm.ts @@ -1,4 +1,3 @@ -import { EvmNetworks } from "@stakekit/common"; import type { Chain } from "@stakekit/rainbowkit"; import { arbitrum, @@ -24,6 +23,7 @@ import { } from "viem/chains"; import type { KebabToCamelCase } from "../../../types/utils"; import { getNetworkLogo } from "../../../utils"; +import { EvmNetworks } from "./networks"; const supportedEVMChains = [ EvmNetworks.AvalancheC, diff --git a/packages/widget/src/domain/types/chains/index.ts b/packages/widget/src/domain/types/chains/index.ts index 164ca685..b21c75c1 100644 --- a/packages/widget/src/domain/types/chains/index.ts +++ b/packages/widget/src/domain/types/chains/index.ts @@ -1,4 +1,3 @@ -import { EvmNetworks, MiscNetworks, SubstrateNetworks } from "@stakekit/common"; import type { ChainGroup } from "@stakekit/rainbowkit"; import { getNetworkLogo } from "../../../utils"; import { type SupportedCosmosChains, supportedCosmosChainsSet } from "./cosmos"; @@ -12,6 +11,7 @@ import { type SupportedMiscChains, supportedMiscChainsSet, } from "./misc"; +import { EvmNetworks, MiscNetworks, SubstrateNetworks } from "./networks"; import { type SubstrateChainIds, type SupportedSubstrateChains, diff --git a/packages/widget/src/domain/types/chains/ledger.ts b/packages/widget/src/domain/types/chains/ledger.ts index 8ac289fb..0494a106 100644 --- a/packages/widget/src/domain/types/chains/ledger.ts +++ b/packages/widget/src/domain/types/chains/ledger.ts @@ -1,11 +1,11 @@ import type { Currency, Families } from "@ledgerhq/wallet-api-client"; +import type { SupportedSKChains } from "./"; import { CosmosNetworks, EvmNetworks, MiscNetworks, SubstrateNetworks, -} from "@stakekit/common"; -import type { SupportedSKChains } from "./"; +} from "./networks"; export type SupportedLedgerLiveFamilies = Extract< Families, diff --git a/packages/widget/src/domain/types/chains/misc.ts b/packages/widget/src/domain/types/chains/misc.ts index d5e7644b..fd477eab 100644 --- a/packages/widget/src/domain/types/chains/misc.ts +++ b/packages/widget/src/domain/types/chains/misc.ts @@ -1,7 +1,7 @@ -import { MiscNetworks } from "@stakekit/common"; import type { Chain } from "@stakekit/rainbowkit"; import type { KebabToCamelCase } from "../../../types/utils"; import { getTokenLogo } from "../../../utils"; +import { MiscNetworks } from "./networks"; const supportedMiscChains = [ MiscNetworks.Near, diff --git a/packages/widget/src/domain/types/chains/networks.ts b/packages/widget/src/domain/types/chains/networks.ts new file mode 100644 index 00000000..a8470d3b --- /dev/null +++ b/packages/widget/src/domain/types/chains/networks.ts @@ -0,0 +1,132 @@ +import type { TokenDto } from "../../../generated/api/yield"; + +export type Networks = TokenDto["network"]; + +type NetworkMap = Record; + +export const EvmNetworks = { + Ethereum: "ethereum", + EthereumGoerli: "ethereum-goerli", + EthereumHolesky: "ethereum-holesky", + EthereumSepolia: "ethereum-sepolia", + EthereumHoodi: "ethereum-hoodi", + Arbitrum: "arbitrum", + Base: "base", + BaseSepolia: "base-sepolia", + Gnosis: "gnosis", + Optimism: "optimism", + Polygon: "polygon", + PolygonAmoy: "polygon-amoy", + Starknet: "starknet", + zkSync: "zksync", + Linea: "linea", + Unichain: "unichain", + Katana: "katana", + MonadTestnet: "monad-testnet", + Monad: "monad", + AvalancheC: "avalanche-c", + AvalancheCAtomic: "avalanche-c-atomic", + AvalancheP: "avalanche-p", + Binance: "binance", + Celo: "celo", + Fantom: "fantom", + Harmony: "harmony", + Moonriver: "moonriver", + OKC: "okc", + Viction: "viction", + Core: "core", + Sonic: "sonic", + HyperEVM: "hyperevm", + Plasma: "plasma", +} as const satisfies NetworkMap; + +export type EvmNetworks = (typeof EvmNetworks)[keyof typeof EvmNetworks]; + +export const CosmosNetworks = { + Agoric: "agoric", + Akash: "akash", + Axelar: "axelar", + BandProtocol: "band-protocol", + Bitsong: "bitsong", + Canto: "canto", + Chihuahua: "chihuahua", + Comdex: "comdex", + Coreum: "coreum", + Cosmos: "cosmos", + Crescent: "crescent", + Cronos: "cronos", + Cudos: "cudos", + Desmos: "desmos", + Dydx: "dydx", + Evmos: "evmos", + FetchAi: "fetch-ai", + GravityBridge: "gravity-bridge", + Injective: "injective", + IRISnet: "irisnet", + Juno: "juno", + Kava: "kava", + KiNetwork: "ki-network", + MarsProtocol: "mars-protocol", + NYM: "nym", + OKExChain: "okex-chain", + Onomy: "onomy", + Osmosis: "osmosis", + Persistence: "persistence", + Quicksilver: "quicksilver", + Regen: "regen", + Secret: "secret", + Sentinel: "sentinel", + Sommelier: "sommelier", + StaFi: "stafi", + Stargaze: "stargaze", + Stride: "stride", + Teritori: "teritori", + TGrade: "tgrade", + Umee: "umee", + Sei: "sei", + Mantra: "mantra", + Celestia: "celestia", + Saga: "saga", + Zetachain: "zetachain", + Dymension: "dymension", + HumansAi: "humansai", + Neutron: "neutron", +} as const satisfies NetworkMap; + +export type CosmosNetworks = + (typeof CosmosNetworks)[keyof typeof CosmosNetworks]; + +export const SubstrateNetworks = { + Polkadot: "polkadot", + Westend: "westend", + Kusama: "kusama", + Bittensor: "bittensor", +} as const satisfies NetworkMap; + +export type SubstrateNetworks = + (typeof SubstrateNetworks)[keyof typeof SubstrateNetworks]; + +export const MiscNetworks = { + BinanceBeacon: "binancebeacon", + Cardano: "cardano", + Near: "near", + Solana: "solana", + SolanaDevnet: "solana-devnet", + Tezos: "tezos", + Tron: "tron", + Ton: "ton", + TonTestnet: "ton-testnet", + Aptos: "aptos", + Stellar: "stellar", + StellarTestnet: "stellar-testnet", + Sui: "sui", +} as const satisfies NetworkMap; + +export type MiscNetworks = (typeof MiscNetworks)[keyof typeof MiscNetworks]; + +export const Networks = { + ...MiscNetworks, + ...SubstrateNetworks, + ...CosmosNetworks, + ...EvmNetworks, +} as const satisfies NetworkMap; diff --git a/packages/widget/src/domain/types/chains/substrate.ts b/packages/widget/src/domain/types/chains/substrate.ts index 2d08ab32..f6181fc2 100644 --- a/packages/widget/src/domain/types/chains/substrate.ts +++ b/packages/widget/src/domain/types/chains/substrate.ts @@ -1,7 +1,7 @@ -import { SubstrateNetworks } from "@stakekit/common"; -import type { Chain, ChainGroup } from "@stakekit/rainbowkit"; +import type { Chain } from "@stakekit/rainbowkit"; import type { KebabToCamelCase } from "../../../types/utils"; import { getNetworkLogo } from "../../../utils"; +import { SubstrateNetworks } from "./networks"; const supportedSubstrateChains = [ SubstrateNetworks.Polkadot, @@ -23,7 +23,7 @@ export type SubstrateChainsMap = { }; }; -export const polkadot = { +const polkadot = { id: 9999, name: "Polkadot", iconUrl: getNetworkLogo(SubstrateNetworks.Polkadot), @@ -50,7 +50,7 @@ export const polkadot = { }, } as const satisfies Chain; -export const bittensor = { +const bittensor = { id: 558, name: "Bittensor", iconUrl: getNetworkLogo(SubstrateNetworks.Bittensor), @@ -95,9 +95,3 @@ SubstrateChainIds satisfies Record< Capitalize>, number >; - -export const polkadotChainGroup = { - iconUrl: getNetworkLogo(SubstrateNetworks.Polkadot), - title: "Polkadot", - id: "polkadot", -} satisfies ChainGroup; diff --git a/packages/widget/src/domain/types/connectors.ts b/packages/widget/src/domain/types/connectors.ts index a404db8a..0637aa0a 100644 --- a/packages/widget/src/domain/types/connectors.ts +++ b/packages/widget/src/domain/types/connectors.ts @@ -1,9 +1,6 @@ import type { Observable } from "rxjs"; import type { Chain } from "viem"; import type { Connector } from "wagmi"; -import { isExternalProviderConnector } from "../../providers/external-provider"; -import { isLedgerLiveConnector } from "../../providers/ledger/ledger-live-connector-meta"; -import { isSafeConnector } from "../../providers/safe/safe-connector-meta"; export type ConnectorWithFilteredChains = { $filteredChains: Observable; @@ -16,7 +13,11 @@ export const isConnectorWithFilteredChains = ( .$filteredChains; }; +const connectorsWithoutDisconnect = new Set([ + "externalProviderConnector", + "ledgerLive", + "safe", +]); + export const shouldShowDisconnect = (connector: Connector) => - !isExternalProviderConnector(connector) && - !isLedgerLiveConnector(connector) && - !isSafeConnector(connector); + !connectorsWithoutDisconnect.has(connector.id); diff --git a/packages/widget/src/domain/types/errors.ts b/packages/widget/src/domain/types/errors.ts new file mode 100644 index 00000000..3b73b92b --- /dev/null +++ b/packages/widget/src/domain/types/errors.ts @@ -0,0 +1,11 @@ +import type { + GeolocationError, + StakeKitErrorDto, +} from "../../generated/api/legacy"; + +const GeolocationErrorType = { + GEO_LOCATION: "GEO_LOCATION", +} as const; + +export type { GeolocationError, StakeKitErrorDto }; +export { GeolocationErrorType }; diff --git a/packages/widget/src/domain/types/fees.ts b/packages/widget/src/domain/types/fees.ts new file mode 100644 index 00000000..562e2bc2 --- /dev/null +++ b/packages/widget/src/domain/types/fees.ts @@ -0,0 +1,3 @@ +import type { FeeConfigurationDto } from "../../generated/api/legacy"; + +export type { FeeConfigurationDto }; diff --git a/packages/widget/src/domain/types/init-params.ts b/packages/widget/src/domain/types/init-params.ts index f6985b0d..266b1d70 100644 --- a/packages/widget/src/domain/types/init-params.ts +++ b/packages/widget/src/domain/types/init-params.ts @@ -1,6 +1,6 @@ -import type { YieldDto } from "@stakekit/api-hooks"; import type { SupportedSKChains } from "./chains"; import type { TokenString } from "./tokens"; +import type { Yield } from "./yields"; export type InitParams = { network: SupportedSKChains | null; @@ -8,7 +8,7 @@ export type InitParams = { yieldId: string | null; validator: string | null; pendingaction: string | null; - yieldData: YieldDto | null; + yieldData: Yield | null; accountId: string | null; tab: "earn" | "positions" | null; }; diff --git a/packages/widget/src/domain/types/pending-action.ts b/packages/widget/src/domain/types/pending-action.ts new file mode 100644 index 00000000..5c29b877 --- /dev/null +++ b/packages/widget/src/domain/types/pending-action.ts @@ -0,0 +1,112 @@ +import type { PendingActionDto as LegacyPendingActionDto } from "../../generated/api/legacy"; +import type { + CreateManageActionDto, + PendingActionDto as YieldPendingActionDtoGenerated, +} from "../../generated/api/yield"; + +export type YieldPendingActionDto = YieldPendingActionDtoGenerated; +export type YieldPendingActionType = + | YieldPendingActionDto["type"] + | NonNullable; + +type PendingActionArgName = + | "amount" + | "validatorAddress" + | "validatorAddresses"; + +export type AnyPendingActionDto = + | LegacyPendingActionDto + | YieldPendingActionDto; + +type PendingActionAmountConfig = { + required: boolean; + minimum: number | null; + maximum: number | null; + forceMax: boolean; +}; + +export const isPendingActionAmountRequired = ( + pendingAction: AnyPendingActionDto +) => !!getPendingActionAmountConfig(pendingAction)?.required; + +export const isPendingActionValidatorAddressRequired = ( + pendingAction: AnyPendingActionDto +) => !!getPendingActionArgument(pendingAction, "validatorAddress")?.required; + +export const isPendingActionValidatorAddressesRequired = ( + pendingAction: AnyPendingActionDto +) => !!getPendingActionArgument(pendingAction, "validatorAddresses")?.required; + +export const getPendingActionAmountConfig = ( + pendingAction: AnyPendingActionDto +): PendingActionAmountConfig | null => { + const amountArg = getPendingActionArgument(pendingAction, "amount"); + + if (!amountArg) { + return null; + } + + const minimum = toNumberOrNull(amountArg.minimum); + const maximum = toNumberOrNull(amountArg.maximum); + + return { + required: !!amountArg.required, + minimum, + maximum, + forceMax: minimum === -1 && maximum === -1, + }; +}; + +const getPendingActionArgument = ( + pendingAction: AnyPendingActionDto, + name: PendingActionArgName +) => { + const v2Field = ( + pendingAction as YieldPendingActionDto + ).arguments?.fields?.find( + ( + field: NonNullable["fields"][number] + ) => field.name === name + ); + + if (v2Field) { + return { + required: !!v2Field.required, + minimum: v2Field.minimum ?? null, + maximum: v2Field.maximum ?? null, + }; + } + + const legacyField = (pendingAction as LegacyPendingActionDto).args?.args?.[ + name + ] as + | { + required?: boolean; + minimum?: number | string | null; + maximum?: number | string | null; + } + | undefined; + + if (!legacyField) { + return null; + } + + return { + required: !!legacyField.required, + minimum: legacyField.minimum ?? null, + maximum: legacyField.maximum ?? null, + }; +}; + +const toNumberOrNull = (value: number | string | null | undefined) => { + if (value === null || value === undefined) { + return null; + } + + if (typeof value === "number") { + return Number.isFinite(value) ? value : null; + } + + const parsed = Number(value); + return Number.isFinite(parsed) ? parsed : null; +}; diff --git a/packages/widget/src/domain/types/positions.ts b/packages/widget/src/domain/types/positions.ts index 0bfb385a..79c400dc 100644 --- a/packages/widget/src/domain/types/positions.ts +++ b/packages/widget/src/domain/types/positions.ts @@ -1,14 +1,22 @@ -import type { - BalanceTypes, - TokenDto, - YieldBalanceDto, - YieldBalancesWithIntegrationIdDto, -} from "@stakekit/api-hooks"; import BigNumber from "bignumber.js"; +import type { + BalanceDto, + BalancesRequestDto, + ValidatorDto, + YieldBalancesDto, + BalanceType as YieldBalanceTypeGenerated, +} from "../../generated/api/yield"; import { equalTokens } from ".."; +import type { YieldRewardRateDto } from "./reward-rate"; +import type { TokenDto } from "./tokens"; + +export type YieldBalanceDto = BalanceDto; +export type YieldBalancesByYieldDto = YieldBalancesDto; +export type YieldBalancesRequestDto = BalancesRequestDto; +export type YieldBalanceType = YieldBalanceTypeGenerated; export type PositionBalancesByType = Map< - BalanceTypes, + YieldBalanceType, (YieldBalanceDto & { tokenPriceInUsd: BigNumber; })[] @@ -16,12 +24,19 @@ export type PositionBalancesByType = Map< export type PositionDetailsLabelType = "hasFrozenV1"; +type BalanceType = "validators" | "default"; + +export type BalanceDataKey = + | BalanceType + | `validator::${ValidatorDto["address"]}`; + export type PositionsData = Map< - YieldBalancesWithIntegrationIdDto["integrationId"], + YieldBalancesByYieldDto["yieldId"], { - integrationId: YieldBalancesWithIntegrationIdDto["integrationId"]; + yieldId: YieldBalancesByYieldDto["yieldId"]; + rewardRate?: YieldRewardRateDto | null; balanceData: Map< - YieldBalanceDto["groupId"], + BalanceDataKey, { balances: YieldBalanceDto[] } & ( | { type: "validators"; validatorsAddresses: string[] } | { type: "default" } @@ -30,22 +45,64 @@ export type PositionsData = Map< } >; -export const getPositionTotalAmount = ({ - token, - balances, -}: { - token: TokenDto & { pricePerShare: YieldBalanceDto["pricePerShare"] }; - balances: YieldBalanceDto[]; -}) => - balances.reduce((acc, b) => { - if (b.token.isPoints) return acc; - - if (equalTokens(b.token, token)) { - return BigNumber(b.amount).plus(acc); - } - - return BigNumber(b.amount) - .times(b.pricePerShare) - .dividedBy(token.pricePerShare) - .plus(acc); - }, new BigNumber(0)); +export const getPositionBalanceDataKey = ( + balance: YieldBalanceDto +): BalanceDataKey => { + if (Array.isArray(balance.validators) && balance.validators.length > 1) { + return "validators"; + } + + if (balance.validator?.address) { + return `validator::${balance.validator.address}` as BalanceDataKey; + } + + return "default"; +}; + +export const getPositionTotalAmount = ( + balances: YieldBalanceDto[], + baseToken: TokenDto +) => { + const baseTokenBalance = balances.find((b) => + equalTokens(b.token, baseToken) + ); + + const baseTokenPriceInUsd = (() => { + if (!baseTokenBalance?.amountUsd) return null; + + const amount = BigNumber(baseTokenBalance.amount); + if (amount.lte(0)) return null; + + return BigNumber(baseTokenBalance.amountUsd).dividedBy(amount); + })(); + + return balances.reduce( + (acc, b) => { + if (b.token.isPoints) return acc; + + if (baseTokenBalance && equalTokens(b.token, baseTokenBalance.token)) { + return { + amount: acc.amount.plus(b.amount), + amountUsd: acc.amountUsd.plus(b.amountUsd ?? 0), + }; + } + + const balanceAmountUsd = BigNumber(b.amountUsd ?? 0); + + if (baseTokenPriceInUsd && !baseTokenPriceInUsd.isZero()) { + return { + amount: acc.amount.plus( + balanceAmountUsd.dividedBy(baseTokenPriceInUsd) + ), + amountUsd: acc.amountUsd.plus(balanceAmountUsd), + }; + } + + return { + amount: acc.amount.plus(b.amount), + amountUsd: acc.amountUsd.plus(balanceAmountUsd), + }; + }, + { amount: new BigNumber(0), amountUsd: new BigNumber(0) } + ); +}; diff --git a/packages/widget/src/domain/types/price.ts b/packages/widget/src/domain/types/price.ts index b63a7433..47bc7d90 100644 --- a/packages/widget/src/domain/types/price.ts +++ b/packages/widget/src/domain/types/price.ts @@ -1,8 +1,22 @@ -import type { TokenDto } from "@stakekit/api-hooks"; import BigNumber from "bignumber.js"; import { Maybe } from "purify-ts"; -import { tokenString } from ".."; -import type { TokenString } from "./tokens"; +import type { PriceRequestDto as LegacyPriceRequestDto } from "../../generated/api/legacy"; +import { type TokenString, tokenString } from "./tokens"; + +export type PriceRequestDto = LegacyPriceRequestDto; +export type PriceResponseDto = Record< + string, + { + price: number | undefined; + price_24_h: number | undefined; + } +>; + +type PriceToken = { + symbol: string; + network: string; + address?: string; +}; export type Price = { price: number | undefined; @@ -12,7 +26,7 @@ export type Price = { export class Prices { constructor(public value: Map) {} - getByToken(token: TokenDto) { + getByToken(token: PriceToken) { return Maybe.fromNullable(this.value.get(tokenString(token))); } } @@ -24,8 +38,8 @@ export const getTokenPriceInUSD = ({ prices, pricePerShare, }: { - token: TokenDto; - baseToken: TokenDto | null; + token: PriceToken; + baseToken: PriceToken | null; amount: string | BigNumber; pricePerShare: string | null; prices: Prices; diff --git a/packages/widget/src/domain/types/reward-rate.ts b/packages/widget/src/domain/types/reward-rate.ts new file mode 100644 index 00000000..9f53e90f --- /dev/null +++ b/packages/widget/src/domain/types/reward-rate.ts @@ -0,0 +1,78 @@ +import type { RewardDto, YieldDto } from "../../generated/api/yield"; + +export type RewardTypes = "apr" | "apy" | "variable"; +type YieldRewardDto = RewardDto; +export type YieldRewardRateDto = NonNullable; +type YieldWithRewardRate = Pick; + +type RewardRateBreakdownKey = "native" | "protocol_incentive" | "campaign"; + +export type RewardRateBreakdownItem = { + key: RewardRateBreakdownKey; + rate: number; + rewardType: RewardTypes; + isUpTo: boolean; +}; + +const breakdownOrder: RewardRateBreakdownKey[] = [ + "native", + "protocol_incentive", + "campaign", +]; + +export const getRewardTypeFromRateType = ( + rateType: string | null | undefined +): RewardTypes => { + const normalized = rateType?.toLowerCase(); + + if (normalized === "apr" || normalized === "apy") { + return normalized; + } + + return "variable"; +}; + +const getBreakdownKey = ( + yieldSource: YieldRewardDto["yieldSource"] +): RewardRateBreakdownKey => + yieldSource === "campaign_incentive" + ? "campaign" + : yieldSource === "protocol_incentive" + ? "protocol_incentive" + : "native"; + +export const getYieldRewardRateDetails = ( + yieldDto: YieldWithRewardRate | null | undefined +): YieldRewardRateDto | undefined => yieldDto?.rewardRate; + +export const getRewardRateBreakdown = ( + rewardRate: YieldRewardRateDto | null | undefined, + opts?: { + showUpToCampaign?: boolean; + } +): RewardRateBreakdownItem[] => { + if (!rewardRate?.components?.length) { + return []; + } + + const buckets = rewardRate.components.reduce((acc, component) => { + const key = getBreakdownKey(component.yieldSource); + const prev = acc.get(key); + + acc.set(key, { + key, + rate: (prev?.rate ?? 0) + component.rate, + rewardType: + prev?.rewardType ?? getRewardTypeFromRateType(component.rateType), + isUpTo: key === "campaign" && !!opts?.showUpToCampaign, + }); + + return acc; + }, new Map()); + + return breakdownOrder.flatMap((key) => { + const item = buckets.get(key); + + return item && item.rate > 0 ? [item] : []; + }); +}; diff --git a/packages/widget/src/domain/types/rewards.ts b/packages/widget/src/domain/types/rewards.ts index 0dac8575..7d637248 100644 --- a/packages/widget/src/domain/types/rewards.ts +++ b/packages/widget/src/domain/types/rewards.ts @@ -1,11 +1,11 @@ -import type { YieldDto } from "@stakekit/api-hooks"; +import type { Resources } from "i18next"; import { CosmosNetworks, EvmNetworks, MiscNetworks, SubstrateNetworks, -} from "@stakekit/common"; -import type { Resources } from "i18next"; +} from "./chains/networks"; +import type { Yield } from "./yields"; const enabledRewardsSummaryYieldIds = { [SubstrateNetworks.Polkadot]: [ @@ -45,14 +45,14 @@ const enabledRewardsSummaryYieldIds = { }, ], } as const satisfies Record< - | SubstrateNetworks.Polkadot - | EvmNetworks.AvalancheC - | CosmosNetworks.Cronos - | EvmNetworks.Ethereum - | MiscNetworks.BinanceBeacon - | MiscNetworks.Tron, + | typeof SubstrateNetworks.Polkadot + | typeof EvmNetworks.AvalancheC + | typeof CosmosNetworks.Cronos + | typeof EvmNetworks.Ethereum + | typeof MiscNetworks.BinanceBeacon + | typeof MiscNetworks.Tron, { - id: YieldDto["id"]; + id: Yield["id"]; name: `dashboard.enabled_rewards_summary_yield_names.${keyof Resources["translation"]["dashboard"]["enabled_rewards_summary_yield_names"]}`; }[] >; diff --git a/packages/widget/src/domain/types/settings.ts b/packages/widget/src/domain/types/settings.ts new file mode 100644 index 00000000..79cb9c8e --- /dev/null +++ b/packages/widget/src/domain/types/settings.ts @@ -0,0 +1,3 @@ +import type { TransactionFormat } from "../../generated/api/legacy"; + +export type { TransactionFormat }; diff --git a/packages/widget/src/domain/types/stake.ts b/packages/widget/src/domain/types/stake.ts index 115a5b71..d34e7974 100644 --- a/packages/widget/src/domain/types/stake.ts +++ b/packages/widget/src/domain/types/stake.ts @@ -1,17 +1,14 @@ -import type { - AmountArgumentOptionsDto, - TokenBalanceScanResponseDto, - YieldDto, -} from "@stakekit/api-hooks"; -import { Networks } from "@stakekit/common"; import BigNumber from "bignumber.js"; import { List, Maybe } from "purify-ts"; import { tokenString } from ".."; import type { SupportedSKChains } from "./chains"; +import { Networks } from "./chains/networks"; import type { InitParams } from "./init-params"; import type { PositionsData } from "./positions"; +import type { TokenBalanceScanResponseDto } from "./token-balance"; import type { TokenString } from "./tokens"; -import { isBittensorStaking } from "./yields"; +import type { ValidatorDto } from "./validators"; +import { getYieldActionArg, isBittensorStaking, type Yield } from "./yields"; const amountGreaterThanZero = (val: TokenBalanceScanResponseDto) => new BigNumber(val.amount).isGreaterThan(0); @@ -23,13 +20,13 @@ const hasYieldsAndAmount = (val: TokenBalanceScanResponseDto) => hasYields(val) && amountGreaterThanZero(val); export type PreferredTokenYieldsPerNetwork = { - [Key in SupportedSKChains]?: Record; + [Key in SupportedSKChains]?: Record; }; export const getInitialToken = (args: { initQueryParams: Maybe; - tokenBalances: TokenBalanceScanResponseDto[]; - defaultTokens: TokenBalanceScanResponseDto[]; + tokenBalances: ReadonlyArray; + defaultTokens: ReadonlyArray; network: SupportedSKChains | null; preferredTokenYieldsPerNetwork: PreferredTokenYieldsPerNetwork | null; }) => @@ -79,17 +76,18 @@ export const getInitialToken = (args: { /** * TB based on first token with available yields and amount > 0 */ - .altLazy(() => List.find(hasYieldsAndAmount, args.tokenBalances)) + .altLazy(() => List.find(hasYieldsAndAmount, [...args.tokenBalances])) /** * TB based on first token with available yields */ - .altLazy(() => List.find(hasYields, args.tokenBalances)) - .altLazy(() => List.find(hasYields, args.defaultTokens)) + .altLazy(() => List.find(hasYields, [...args.tokenBalances])) + .altLazy(() => List.find(hasYields, [...args.defaultTokens])) + .altLazy(() => List.head([...args.defaultTokens])) .map((val) => val.token); export const canBeInitialYield = (args: { initQueryParams: Maybe; - yieldDto: YieldDto; + yieldDto: Yield; tokenBalanceAmount: BigNumber; positionsData: PositionsData; }) => @@ -117,7 +115,7 @@ const balanceValidForYield = ({ positionsData, }: { tokenBalanceAmount: BigNumber; - yieldDto: YieldDto; + yieldDto: Yield; positionsData: PositionsData; }) => tokenBalanceAmount.isGreaterThanOrEqualTo( @@ -126,7 +124,7 @@ const balanceValidForYield = ({ export const getInitSelectedValidators = (args: { initQueryParams: Maybe; - yieldDto: YieldDto; + validators: ValidatorDto[]; }) => args.initQueryParams .chainNullable((params) => params.validator) @@ -135,46 +133,46 @@ export const getInitSelectedValidators = (args: { (val) => val.name?.toLowerCase() === initV.toLowerCase() || val.address === initV, - args.yieldDto.validators + args.validators ) ) - .altLazy(() => List.head(args.yieldDto.validators)) + .altLazy(() => List.head(args.validators)) .map((v) => new Map([[v.address, v]])) .orDefault(new Map()); -export const isForceMaxAmount = (args: AmountArgumentOptionsDto) => - args.minimum === -1 && args.maximum === -1; +export const isForceMaxAmount = ( + args: { minimum?: number | null; maximum?: number | null } | null | undefined +) => args?.minimum === -1 && args?.maximum === -1; -const yieldsWithEnterMinBasedOnPosition = new Map< - Networks, - Set ->([[Networks.Polkadot, new Set(["polkadot-dot-validator-staking"])]]); +const yieldsWithEnterMinBasedOnPosition = new Map>([ + [Networks.Polkadot, new Set(["polkadot-dot-validator-staking"])], +]); export const isNetworkWithEnterMinBasedOnPosition = (network: Networks) => yieldsWithEnterMinBasedOnPosition.has(network); -const isYieldWithEnterMinBasedOnPosition = (yieldDto: YieldDto) => +const isYieldWithEnterMinBasedOnPosition = (yieldDto: Yield) => Maybe.fromNullable( yieldsWithEnterMinBasedOnPosition.get( - yieldDto.metadata.gasFeeToken.network as Networks + yieldDto.mechanics.gasFeeToken.network as Networks ) ) .filter((set) => set.has(yieldDto.id)) .isJust(); export const getMinStakeAmount = ( - yieldDto: YieldDto, + yieldDto: Yield, positionsData: PositionsData ) => { const integrationMin = new BigNumber( - yieldDto.args.enter.args?.amount?.minimum ?? 0 + getYieldActionArg(yieldDto, "enter", "amount")?.minimum ?? 0 ); if (isYieldWithEnterMinBasedOnPosition(yieldDto)) { const hasStaked = Maybe.fromNullable(positionsData.get(yieldDto.id)) .map((val) => [...val.balanceData.values()]) .map((val) => - val.some((v) => v.balances.some((b) => b.type === "staked")) + val.some((v) => v.balances.some((b) => b.type === "active")) ) .orDefault(false); @@ -189,11 +187,11 @@ export const getMinStakeAmount = ( }; export const getMinUnstakeAmount = ( - yieldDto: YieldDto, + yieldDto: Yield, pricePerShare: string | null ) => { const integrationMin = new BigNumber( - yieldDto.args.exit?.args?.amount?.minimum ?? 0 + getYieldActionArg(yieldDto, "exit", "amount")?.minimum ?? 0 ); const pricePerShareBN = new BigNumber(pricePerShare ?? 0); diff --git a/packages/widget/src/domain/types/token-balance.ts b/packages/widget/src/domain/types/token-balance.ts new file mode 100644 index 00000000..c06b22bf --- /dev/null +++ b/packages/widget/src/domain/types/token-balance.ts @@ -0,0 +1,9 @@ +import type { + TokenBalanceScanDto as LegacyTokenBalanceScanDto, + TokenBalanceScanResponseDto as LegacyTokenBalanceScanResponseDto, + YieldBalanceLabelDto as LegacyYieldBalanceLabelDto, +} from "../../generated/api/legacy"; + +export type TokenBalanceScanDto = LegacyTokenBalanceScanDto; +export type TokenBalanceScanResponseDto = LegacyTokenBalanceScanResponseDto; +export type YieldBalanceLabelDto = LegacyYieldBalanceLabelDto; diff --git a/packages/widget/src/domain/types/tokens.ts b/packages/widget/src/domain/types/tokens.ts index 92af25e3..d7c00cd4 100644 --- a/packages/widget/src/domain/types/tokens.ts +++ b/packages/widget/src/domain/types/tokens.ts @@ -1,7 +1,28 @@ -import { EvmNetworks, type TokenDto } from "@stakekit/api-hooks"; +import type { + TokenDto as LegacyTokenDto, + TokenControllerGetTokensParams as TokenGetTokensParams, +} from "../../generated/api/legacy"; +import type { TokenDto as YieldTokenDtoGenerated } from "../../generated/api/yield"; +import { EvmNetworks } from "./chains/networks"; + +export type YieldTokenDto = YieldTokenDtoGenerated; +export type TokenDto = LegacyTokenDto | YieldTokenDto; +export type { TokenGetTokensParams }; export type TokenString = `${TokenDto["network"]}-${TokenDto["address"]}`; +type TokenLike = Pick & { + network: string; + address?: string; +}; + +export const tokenString = (token: TokenLike): TokenString => { + return `${token.network}-${token.address?.toLowerCase() ?? ""}` as TokenString; +}; + +export const equalTokens = (a: TokenLike, b: TokenLike) => + tokenString(a) === tokenString(b) && a.symbol === b.symbol; + export const isUSDeToken = (token: TokenDto) => - token.network === EvmNetworks.ethereum && + token.network === EvmNetworks.Ethereum && token.address === "0x4c9edd5852cd905f086c759e8383e09bff1e68b3"; diff --git a/packages/widget/src/domain/types/transaction.ts b/packages/widget/src/domain/types/transaction.ts index a33c46f5..3436050f 100644 --- a/packages/widget/src/domain/types/transaction.ts +++ b/packages/widget/src/domain/types/transaction.ts @@ -13,8 +13,11 @@ import { unknown, } from "purify-ts"; import { type Address, type Hex, numberToHex } from "viem"; +import type { TransactionVerificationMessageDto } from "../../generated/api/legacy"; import type { GetEitherRight } from "../../types/utils"; +export type { TransactionVerificationMessageDto }; + const bigintCodec = Codec.custom({ decode: (input) => { if (typeof input !== "string" && typeof input !== "number") { @@ -52,6 +55,7 @@ export const unsignedEVMTransactionCodec = Codec.interface({ value: optional(bigintCodec), nonce: number, type: number, + gasPrice: optional(bigintCodec), maxFeePerGas: optional(bigintCodec), maxPriorityFeePerGas: optional(bigintCodec), chainId: number, @@ -80,7 +84,12 @@ export const decodeAndPrepareEvmTransaction = ({ ? numberToHex(decodedTx.maxPriorityFeePerGas) : undefined, } - : { type: "0x1" as const }), + : { + type: "0x1" as const, + gasPrice: decodedTx.gasPrice + ? numberToHex(decodedTx.gasPrice) + : undefined, + }), })); export type DecodedEVMTransaction = GetEitherRight< diff --git a/packages/widget/src/domain/types/tron.ts b/packages/widget/src/domain/types/tron.ts new file mode 100644 index 00000000..58366792 --- /dev/null +++ b/packages/widget/src/domain/types/tron.ts @@ -0,0 +1,3 @@ +import type { TronResourceType } from "../../generated/api/legacy"; + +export type { TronResourceType }; diff --git a/packages/widget/src/domain/types/validators.ts b/packages/widget/src/domain/types/validators.ts new file mode 100644 index 00000000..bac701bb --- /dev/null +++ b/packages/widget/src/domain/types/validators.ts @@ -0,0 +1,4 @@ +import type { ValidatorDto as YieldValidatorDtoGenerated } from "../../generated/api/yield"; + +export type YieldValidatorDto = YieldValidatorDtoGenerated; +export type ValidatorDto = YieldValidatorDto; diff --git a/packages/widget/src/domain/types/wallet.ts b/packages/widget/src/domain/types/wallet.ts index ade3672b..6a193252 100644 --- a/packages/widget/src/domain/types/wallet.ts +++ b/packages/widget/src/domain/types/wallet.ts @@ -1,18 +1,16 @@ import type { Account } from "@ledgerhq/wallet-api-client"; -import type { - AddressWithTokenDtoAdditionalAddresses, - Networks, - TransactionDto, -} from "@stakekit/api-hooks"; import type { EitherAsync } from "purify-ts"; import type { Chain } from "viem"; import type { Connector } from "wagmi"; +import type { TransactionDto } from "../../generated/api/legacy"; import type { SendTransactionError, TransactionDecodeError, } from "../../providers/sk-wallet/errors"; import type { Nullable } from "../../types/utils"; +import type { AddressWithTokenDtoAdditionalAddresses } from "./addresses"; import type { SupportedSKChains } from "./chains"; +import type { Networks } from "./chains/networks"; import type { SKTxMeta } from "./wallets/generic-wallet"; type SignedTxOrMessage = string; diff --git a/packages/widget/src/domain/types/wallets/generic-wallet.ts b/packages/widget/src/domain/types/wallets/generic-wallet.ts index 0f3dd1b2..c02b136a 100644 --- a/packages/widget/src/domain/types/wallets/generic-wallet.ts +++ b/packages/widget/src/domain/types/wallets/generic-wallet.ts @@ -1,8 +1,3 @@ -import type { - ActionDto, - RewardTypes, - TransactionDto, -} from "@stakekit/api-hooks"; import type { DecodedEVMTransaction, DecodedSolanaTransaction, @@ -10,6 +5,9 @@ import type { DecodedTonTransaction, DecodedTronTransaction, } from "../../types/transaction"; +import type { ActionDto, TransactionDto } from "../action"; +import type { RewardTypes } from "../reward-rate"; +import type { TokenDto, YieldTokenDto } from "../tokens"; type EVMTx = { type: "evm"; @@ -41,8 +39,12 @@ export type SKTx = EVMTx | SolanaTx | TonTx | TronTx | BittensorTx; export type ActionMeta = { actionId: ActionDto["id"]; actionType: ActionDto["type"]; + address?: ActionDto["address"]; amount: ActionDto["amount"]; - inputToken: ActionDto["inputToken"]; + amountRaw?: ActionDto["amountRaw"]; + rawArguments?: ActionDto["rawArguments"]; + yieldId?: ActionDto["yieldId"]; + inputToken: TokenDto | YieldTokenDto | undefined; providersDetails: { name: string; address: string | undefined; @@ -56,7 +58,10 @@ export type ActionMeta = { export type SKTxMeta = ActionMeta & { txId: TransactionDto["id"]; txType: TransactionDto["type"]; -} & Pick; +} & Pick< + TransactionDto, + "structuredTransaction" | "annotatedTransaction" | "gasEstimate" + >; export type SKWallet = { signMessage: (message: string) => Promise; diff --git a/packages/widget/src/domain/types/yields.ts b/packages/widget/src/domain/types/yields.ts index e33c0169..fcc089ef 100644 --- a/packages/widget/src/domain/types/yields.ts +++ b/packages/widget/src/domain/types/yields.ts @@ -1,11 +1,52 @@ -import type { YieldDto, YieldType } from "@stakekit/api-hooks"; -import { EvmNetworks } from "@stakekit/common"; import BigNumber from "bignumber.js"; import type { TFunction } from "i18next"; -import { List, Maybe } from "purify-ts"; +import { Maybe } from "purify-ts"; +import type { + YieldType as LegacyYieldType, + YieldDto as OldYieldDto, +} from "../../generated/api/legacy"; +import type { + ArgumentFieldDto, + YieldDto as YieldApiYieldDto, + YieldRiskEntryDto, +} from "../../generated/api/yield"; import type { SupportedSKChains } from "./chains"; +import { EvmNetworks } from "./chains/networks"; +import type { RewardTypes } from "./reward-rate"; +import { type TokenString, tokenString, type YieldTokenDto } from "./tokens"; +import type { ValidatorDto } from "./validators"; -export type ExtendedYieldType = YieldType | "native_staking" | "pooled_staking"; +export type Yield = YieldApiYieldDto & { + __fallback__: OldYieldDto; +}; + +type YieldRiskRatingTone = "positive" | "warning" | "danger" | "neutral"; +type KnownYieldRiskRatingSource = YieldRiskEntryDto["source"]; +type YieldRiskRatingSource = KnownYieldRiskRatingSource | (string & {}); +export type YieldRiskDisplay = { + rating: string; + source: YieldRiskRatingSource; + tone: YieldRiskRatingTone; +}; +export type YieldMetadata = OldYieldDto["metadata"]; +type WidgetYieldType = Extract< + LegacyYieldType, + "staking" | "restaking" | "lending" | "vault" +>; +export type ExtendedYieldType = + | WidgetYieldType + | "liquid-staking" + | "native_staking" + | "pooled_staking"; +type YieldActionType = "enter" | "exit"; +type YieldArgumentName = ArgumentFieldDto["name"]; + +type YieldArgumentConfig = { + required?: boolean; + minimum?: number | null; + maximum?: number | null; + options?: string[]; +} & Record; type YieldTypeLabelsMap = { [Key in ExtendedYieldType]: { @@ -27,56 +68,238 @@ export type ValidatorsConfig = Map< } >; -export const filterMapValidators = ( - validatorsConfig: ValidatorsConfig, - yieldDto: YieldDto -): YieldDto => { +export const filterValidators = ({ + validatorsConfig, + validators, + network, + yieldId, +}: { + validatorsConfig: ValidatorsConfig; + validators: ValidatorDto[]; + network: Yield["token"]["network"]; + yieldId?: Yield["id"]; +}) => { const valConfig = Maybe.fromNullable( - validatorsConfig.get(yieldDto.token.network as SupportedSKChains) + validatorsConfig.get(network as SupportedSKChains) ) .altLazy(() => Maybe.fromNullable(validatorsConfig.get("*"))) .extractNullable(); - if (!valConfig) { - return yieldDto; + const filtered = !valConfig + ? validators + : (() => { + const { + allowed, + blocked, + preferred, + mergePreferredWithDefault, + preferredOnly, + } = valConfig; + + return validators.flatMap((v) => { + if (allowed && !allowed.has(v.address)) return []; + if (blocked?.has(v.address)) return []; + + const isPreferred = + preferred?.has(v.address) || + !!(mergePreferredWithDefault && v.preferred); + + if (preferredOnly) { + return isPreferred ? [{ ...v, preferred: true }] : []; + } + + return [{ ...v, preferred: isPreferred }]; + }); + })(); + + if (yieldId && isBittensorStaking(yieldId)) { + return filtered.filter((validator) => validator.name?.match(/yuma/i)); } - const { - allowed, - blocked, - preferred, - mergePreferredWithDefault, - preferredOnly, - } = valConfig; + return filtered; +}; + +const toNumber = (value: number | string | null | undefined) => { + if (value === null || value === undefined) { + return undefined; + } + + const parsed = Number(value); + return Number.isFinite(parsed) ? parsed : undefined; +}; + +const secondsToDays = (seconds: number | undefined) => { + if (seconds === undefined) return undefined; + + return { days: Math.round(seconds / 86400) }; +}; + +export const getBaseYieldType = ( + yieldDto: Yield +): WidgetYieldType | "liquid-staking" => { + if (yieldDto.__fallback__.metadata.type === "liquid-staking") { + return "liquid-staking"; + } + + switch (yieldDto.mechanics.type) { + case "staking": + case "restaking": + case "lending": + return yieldDto.mechanics.type; + default: + return "vault"; + } +}; + +export const getYieldActionArg = ( + yieldDto: Yield, + type: YieldActionType, + name: YieldArgumentName +): YieldArgumentConfig | null => { + const field = yieldDto.mechanics.arguments?.[type]?.fields?.find( + (item) => item.name === name + ); + + if (!field) { + return null; + } return { - ...yieldDto, - validators: yieldDto.validators.flatMap((v) => { - if (allowed && !allowed.has(v.address)) return []; - if (blocked?.has(v.address)) return []; + required: !!field.required, + minimum: toNumber(field.minimum), + maximum: toNumber(field.maximum), + ...(field.options ? { options: [...field.options] } : {}), + }; +}; + +export const isYieldActionArgRequired = ( + yieldDto: Yield, + type: YieldActionType, + name: YieldArgumentName +) => !!getYieldActionArg(yieldDto, type, name)?.required; + +export const getYieldRewardType = (yieldDto: Yield): RewardTypes => { + const rateType = yieldDto.rewardRate?.rateType?.toLowerCase(); + + if (rateType === "apr" || rateType === "apy") { + return rateType; + } + + return yieldDto.__fallback__.rewardType ?? "variable"; +}; + +const uniqTokens = (tokens: (YieldTokenDto | null | undefined)[]) => { + const seen = new Set(); + + return tokens.flatMap((token) => { + if (!token) return []; + + const key = tokenString(token); + + if (seen.has(key)) { + return []; + } - const isPreferred = - preferred?.has(v.address) || - !!(mergePreferredWithDefault && v.preferred); + seen.add(key); + return [token]; + }); +}; + +export const getYieldRewardTokens = (yieldDto: Yield) => { + const derived = uniqTokens( + yieldDto.rewardRate?.components?.map((component) => component.token) ?? [] + ); + + if (derived.length) { + return derived; + } + + return [...(yieldDto.__fallback__.metadata.rewardTokens ?? [])]; +}; + +const getRiskTone = (rating: string): YieldRiskRatingTone => { + const normalizedRating = rating.trim().toUpperCase(); + + if (normalizedRating.startsWith("A")) return "positive"; + if (normalizedRating.startsWith("B")) return "warning"; + if ( + ["C", "D", "E", "F"].some((prefix) => normalizedRating.startsWith(prefix)) + ) { + return "danger"; + } - if (preferredOnly) { - return isPreferred ? [{ ...v, preferred: true }] : []; - } + return "neutral"; +}; + +export const getYieldRiskDisplay = ( + yieldDto: Pick +): YieldRiskDisplay | null => { + const firstRating = yieldDto.risk?.ratings[0]; + const rating = firstRating?.rating.trim(); + + if (!firstRating || !rating) return null; - return [{ ...v, preferred: isPreferred }]; - }), + return { + rating, + source: firstRating.source, + tone: getRiskTone(rating), }; }; -export const getExtendedYieldType = (yieldDto: YieldDto) => +export const getYieldRiskSourceLabel = ( + source: YieldRiskRatingSource, + t: TFunction +) => { + switch (source) { + case "credora": + return t("details.risk.sources.credora"); + case "stakingRewards": + return t("details.risk.sources.staking_rewards"); + default: + return source; + } +}; + +export const getYieldProviderDetails = (yieldDto: Yield) => + yieldDto.__fallback__.metadata.provider; + +export const hasYieldFeeConfigurationEnabled = (yieldDto: Yield) => + (yieldDto.__fallback__.feeConfigurations?.length ?? 0) > 0; + +export const getYieldCooldownPeriod = (yieldDto: Yield) => + secondsToDays(yieldDto.mechanics.cooldownPeriod?.seconds); + +export const getYieldWarmupPeriod = (yieldDto: Yield) => + secondsToDays(yieldDto.mechanics.warmupPeriod?.seconds); + +export const getYieldWithdrawPeriod = (yieldDto: Yield) => + yieldDto.__fallback__.metadata.withdrawPeriod; + +export const getYieldCommission = (yieldDto: Yield) => + yieldDto.__fallback__.metadata.commission; + +export const getYieldTVL = (yieldDto: Yield) => + yieldDto.__fallback__.metadata.tvl; + +export const getYieldLockupPeriod = (yieldDto: Yield) => + yieldDto.__fallback__.metadata.lockupPeriod; + +export const getYieldMetadataTokens = (yieldDto: Yield) => [ + ...(yieldDto.__fallback__.metadata.tokens ?? []), +]; + +export const hasYieldExitSignatureVerification = (yieldDto: Yield) => + !!yieldDto.__fallback__.args.exit?.args?.signatureVerification?.required; + +export const getExtendedYieldType = (yieldDto: Yield) => isNativeStaking(yieldDto) ? "native_staking" : isPooledStaking(yieldDto) ? "pooled_staking" - : yieldDto.metadata.type; + : getBaseYieldType(yieldDto); export const getYieldTypeLabels = ( - yieldDto: YieldDto, + yieldDto: Yield, t: TFunction ): YieldTypeLabelsMap[keyof YieldTypeLabelsMap] => { const map = { @@ -132,7 +355,7 @@ export const getYieldTypeLabels = ( return map.pooled_staking; } - return map[yieldDto.metadata.type]; + return map[getExtendedYieldType(yieldDto)]; }; const yieldTypesSortRank: { [Key in ExtendedYieldType]: number } = { @@ -145,33 +368,51 @@ const yieldTypesSortRank: { [Key in ExtendedYieldType]: number } = { restaking: 7, }; -export const getYieldTypesSortRank = (yieldDto: YieldDto) => +export const getYieldTypesSortRank = (yieldDto: Yield) => yieldTypesSortRank[getExtendedYieldType(yieldDto)]; -const isEthereumStaking = (yieldDto: YieldDto) => - yieldDto.metadata.type === "staking" && +const isEthereumStaking = (yieldDto: Yield) => + yieldDto.mechanics.type === "staking" && yieldDto.token.network === EvmNetworks.Ethereum && yieldDto.token.symbol === "ETH"; -const isNativeStaking = (yieldDto: YieldDto) => +const isNativeStaking = (yieldDto: Yield) => Maybe.fromFalsy(isEthereumStaking(yieldDto)) .chain(() => - Maybe.fromFalsy(yieldDto.args.enter.args?.amount?.required).chain(() => - Maybe.fromNullable(yieldDto.args.enter.args?.amount?.minimum) + Maybe.fromFalsy( + isYieldActionArgRequired(yieldDto, "enter", "amount") + ).chain(() => + Maybe.fromNullable( + getYieldActionArg(yieldDto, "enter", "amount")?.minimum + ) ) ) .map(BigNumber) .filter((v) => v.isEqualTo(32)) .isJust(); -const isPooledStaking = (yieldDto: YieldDto) => +const isPooledStaking = (yieldDto: Yield) => isEthereumStaking(yieldDto) && !isNativeStaking(yieldDto); -export const isYieldWithProviderOptions = (yieldDto: YieldDto) => - !!yieldDto.args.enter.args?.providerId?.required; +export const isYieldWithProviderOptions = (yieldDto: Yield) => + !!getYieldActionArg(yieldDto, "enter", "providerId")?.required; + +export const getYieldProviderYieldIds = (yieldDto: Yield) => + getYieldActionArg(yieldDto, "enter", "providerId")?.options ?? []; + +export const hasYieldNftsArg = (yieldDto: Yield) => + !!yieldDto.__fallback__.args.enter.args?.nfts; -export const getYieldProviderYieldIds = (yieldDto: YieldDto) => - yieldDto.args.enter.args?.providerId?.options ?? []; +export const isYieldIntegrationAggregator = (yieldDto: Yield) => + !!yieldDto.__fallback__.metadata.isIntegrationAggregator; + +export const isYieldValidatorSelectionRequired = (yieldDto: Yield) => + !!( + yieldDto.mechanics.requiresValidatorSelection || + isYieldIntegrationAggregator(yieldDto) || + isYieldActionArgRequired(yieldDto, "enter", "validatorAddress") || + isYieldActionArgRequired(yieldDto, "enter", "validatorAddresses") + ); export const isEthenaUsdeStaking = (yieldId: string) => yieldId === "ethena-usde-staking"; @@ -184,24 +425,10 @@ const zeroRewardRateYieldIdWhitelist = new Set([ ]); export const isNonZeroRewardRateYield = ( - yieldDto: Pick -) => yieldDto.rewardRate > 0 || zeroRewardRateYieldIdWhitelist.has(yieldDto.id); - -export const getComputedRewardRate = (yieldDto: YieldDto) => { - const liveFeeConfigurations = yieldDto.feeConfigurations.filter( - (fc) => fc.status === "LIVE" - ); - - const firstLiveFeeConfiguration = List.head( - liveFeeConfigurations - ).extractNullable(); - - if (liveFeeConfigurations.length === 1 && firstLiveFeeConfiguration) { - return firstLiveFeeConfiguration.computedRewardRate; - } - - return yieldDto.rewardRate; -}; + yieldDto: Pick +) => + (yieldDto.rewardRate?.total ?? 0) > 0 || + zeroRewardRateYieldIdWhitelist.has(yieldDto.id); -export const isERC4626 = (yieldDto: YieldDto) => +export const isERC4626 = (yieldDto: Yield) => yieldDto.metadata.supportedStandards?.includes("ERC4626") ?? false; diff --git a/packages/widget/src/generated/api/legacy.ts b/packages/widget/src/generated/api/legacy.ts new file mode 100644 index 00000000..2500bba7 --- /dev/null +++ b/packages/widget/src/generated/api/legacy.ts @@ -0,0 +1,12648 @@ +// @ts-nocheck +// biome-ignore-all lint: generated by Effect OpenAPI +import * as Data from "effect/Data"; +import * as Effect from "effect/Effect"; +import type * as HttpClient from "effect/unstable/http/HttpClient"; +import * as HttpClientError from "effect/unstable/http/HttpClientError"; +import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest"; +import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse"; +// non-recursive definitions +export type AuthRequestLoginCodeDto = { readonly email: string }; +export type AuthRequestLoginCodeResponseDto = { + readonly success: boolean; + readonly message: string; +}; +export type AuthVerifyLoginCodeDto = { + readonly email: string; + readonly code: string; +}; +export type Role = "owner" | "admin" | "operator" | "member" | "superAdmin"; +export type AuthConfirmEmailDto = { readonly hash: string }; +export type AuthUpdateDto = { readonly name: string; readonly surname: string }; +export type Networks = + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; +export type CampaignRewardMode = "normal" | "compound"; +export type CampaignPayoutFrequency = + | "weekly" + | "daily" + | "six_hourly" + | "end_of_campaign"; +export type CampaignQualificationType = "min_token_amount"; +export type CampaignBudgetSpendStrategy = + | "allow_underspend" + | "spend_full_budget"; +export type CampaignStatus = "draft" | "active" | "paused" | "ended"; +export type CampaignLiabilityDto = { + readonly totalEarned: string; + readonly totalPaid: string; + readonly totalUnpaid: string; + readonly recipientsCount: number; +}; +export type BudgetProjectionDto = { + readonly projectedTotalBudget: string; + readonly projectedEndTime: string; + readonly projectedHourlyEmission: string; + readonly projectedRemainingBudget: string; + readonly remainingHours: number; + readonly currentHourlyEmission: string; + readonly currentTotalBudget: string; + readonly currentEndTime: string; + readonly distributedBudget: string; + readonly totalEarned: string; + readonly valid: boolean; + readonly validationErrors: ReadonlyArray; +}; +export type UpdateCampaignUserPayoutEligibilityDto = { + readonly isPayoutEligible: boolean; +}; +export type CampaignUserPayoutEligibilityDto = { + readonly campaignId: string; + readonly address: string; + readonly isPayoutEligible: boolean; + readonly totalUnpaid: string; +}; +export type CampaignUserEntitlementDto = { + readonly campaignId: string; + readonly address: string; + readonly cumulativeQualifiedBalance: string; + readonly totalEarned: string; + readonly totalPaid: string; + readonly totalUnpaid: string; +}; +export type CampaignPayoutRunStatus = "open" | "completed" | "failed"; +export type CampaignPayoutRunStep = + | "collecting" + | "batching" + | "awaiting_signature" + | "submitted" + | "confirming" + | "settled"; +export type CampaignPayoutItemStatus = + | "pending" + | "prepared" + | "submitted" + | "settled" + | "failed"; +export type CampaignPayoutAuditDto = { + readonly campaignId: string; + readonly campaignPayoutRunId: string; + readonly recipientAddress: string; + readonly amount: string; + readonly txHash?: string | null; + readonly paidAt: string; +}; +export type WeeklyDistributionDto = { + readonly weekStart: string; + readonly totalReward: string; + readonly qualifyingUsers: number; +}; +export type EligibleUserDto = { + readonly address: string; + readonly totalEarned: string; + readonly totalPaid: string; + readonly totalUnpaid: string; + readonly cumulativeQualifiedBalance: string; +}; +export type CampaignConfigurationRequestType = + | "create_campaign" + | "update_configuration" + | "end_campaign"; +export type CampaignConfigurationRequestStatus = + | "pending" + | "accepted" + | "rejected"; +export type AcceptCampaignConfigurationRequestDto = { + readonly safeAddress?: string; +}; +export type RejectCampaignConfigurationRequestDto = { + readonly rejectionReason: string; +}; +export type HourlyAccrualSummaryDto = { + readonly timestamp: string; + readonly qualifyingUserCount: number; + readonly totalQualifyingTvl: string; + readonly hourlyBudgetAllocated: string; + readonly hourlyBudgetDistributed: string; + readonly ceilingActive: boolean; + readonly calculatedApr?: number | null; + readonly pricePerShare?: string | null; +}; +export type UserHourlyAccrualDto = { + readonly address: string; + readonly rawBalance?: string | null; + readonly cappedBalance: string; + readonly qualified: boolean; + readonly qualificationReason: string; + readonly allocatedReward: string; + readonly pricePerShareApplied?: string | null; +}; +export type UserHourlyAccrualHistoryDto = { + readonly hour: string; + readonly rawBalance?: string | null; + readonly balance: string; + readonly qualified: boolean; + readonly qualificationReason: string; + readonly rewardEarned: string; + readonly cumulativeEarned: string; + readonly pricePerShareApplied?: string | null; +}; +export type PayoutRunBudgetStateDto = { + readonly totalBudget: string; + readonly remainingBefore: string; + readonly distributedInRun: string; + readonly remainingAfter: string; +}; +export type SafeTransactionDetailDto = { + readonly batchKey: string; + readonly chainId?: string | null; + readonly safeTxHash?: string | null; + readonly executionTxHash?: string | null; + readonly signaturesCollected?: number | null; + readonly signaturesRequired?: number | null; +}; +export type CampaignPayoutEligibilitySummaryDto = { + readonly campaignId: string; + readonly qualifiedUserCount: number; + readonly blacklistedUserCount: number; + readonly totalUserCount: number; +}; +export type CampaignUserBalanceDto = { + readonly address: string; + readonly currentIndexedBalanceRaw?: string | null; + readonly inputTokenBalance?: string | null; + readonly cappedBalance: string; + readonly qualified: boolean; + readonly totalEarned: string; + readonly totalPaid: string; + readonly totalUnpaid: string; +}; +export type CampaignBalanceFreshnessDto = { + readonly balancesAsOfHour?: string; + readonly pricePerShareAsOf?: string; +}; +export type CreateMasterBannedRegionDto = { + readonly country: string; + readonly isMandatory: boolean; + readonly region?: string; + readonly tags: ReadonlyArray; +}; +export type MasterBannedRegionDto = { + readonly id: string; + readonly country: string; + readonly region: string | null; + readonly tags: ReadonlyArray< + "Crypto Ban" | "OFAC" | "OFSI" | "Pending Litigation" | "Staking Ban" + >; +}; +export type DeleteMasterBannedRegionsDto = { + readonly ids: ReadonlyArray; +}; +export type CreateBannedRegionDto = { + readonly country: string; + readonly region?: string; +}; +export type BannedRegionDto = { + readonly id: string; + readonly country: string; + readonly region: string | null; + readonly updatedAt: string; +}; +export type DeleteBannedRegionsDto = { readonly ids: ReadonlyArray }; +export type CreateTeamDtoUser = { + readonly email: string; + readonly name: string; + readonly surname: string; +}; +export type Team = { + readonly id: string; + readonly createdAt: string; + readonly updatedAt: string; + readonly activated: boolean; + readonly deletedAt: string; + readonly contactDetails: {}; + readonly category: "pro" | "standard" | "trial"; + readonly name: string; + readonly serviceConditionsAcceptedAt: string; + readonly type: "provider" | "integrator"; + readonly providerId: string | null; + readonly oavEnabled: boolean; + readonly isMfaEnforced: boolean; + readonly hyperliquidVerifyByClientOrderId: boolean; + readonly referredBy: string | null; + readonly referralCode: string | null; +}; +export type KeyCategory = "pro" | "standard" | "trial"; +export type CreateProjectDto = { + readonly description?: string; + readonly name: string; +}; +export type Project = { + readonly id: string; + readonly createdAt: string; + readonly updatedAt: string; + readonly autoComplaintBansEnabled: boolean; + readonly autoSweepEnabled: boolean; + readonly deletedAt: string; + readonly description: string | null; + readonly name: string; + readonly teamId: string; +}; +export type UpdateProjectDto = { + readonly autoComplaintBansEnabled?: boolean; + readonly description?: string; + readonly name?: string; +}; +export type CreateKeyDto = { + readonly name: string; + readonly info?: string; + readonly expiresAt?: string; +}; +export type Key = { + readonly id: string; + readonly createdAt: string; + readonly updatedAt: string; + readonly apiKey: string; + readonly deletedAt: string; + readonly info: string | null; + readonly category: string; + readonly name: string; + readonly lastUsedAt: string; + readonly expiresAt: string; + readonly notifiedExpiration7DaysAt: string; + readonly notifiedExpiration1DayAt: string; + readonly projectId: string; +}; +export type UpdateKeyDto = { + readonly expiresAt?: string; + readonly info: string; + readonly name: string; +}; +export type StakeKitErrorDto = { + readonly message: string; + readonly code: number; + readonly type?: string; + readonly details?: {}; + readonly path?: string; +}; +export type HealthStatusDto = { + readonly status: "OK" | "FAIL" | "DEGRADED"; + readonly db: "OK" | "FAIL" | "DEGRADED"; +}; +export type CreatePayoutAddressDto = { + readonly address: string; + readonly network: string; + readonly scope?: "yield" | "trade" | null; + readonly providerId?: string | null; + readonly note?: string; +}; +export type PayoutAddressDto = { + readonly address: string; + readonly id: string; + readonly lastPayout: string; + readonly network: string; + readonly projectId: string; + readonly scope: "trade" | "yield" | "all"; + readonly providerId?: string | null; + readonly note?: string; + readonly addressInvalid: boolean; +}; +export type UpdatePayoutAddressDto = { + readonly address: string; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly scope?: "yield" | "trade" | null; + readonly providerId?: string | null; + readonly note?: string; +}; +export type ReferralDto = { readonly id: string; readonly code: string }; +export type ActionStatus = + | "CANCELED" + | "CREATED" + | "WAITING_FOR_NEXT" + | "PROCESSING" + | "FAILED" + | "SUCCESS" + | "STALE"; +export type ActionTypes = + | "STAKE" + | "UNSTAKE" + | "CLAIM_REWARDS" + | "AUTO_SWEEP_UNSTAKE_REWARDS" + | "AUTO_SWEEP_WITHDRAW_REWARDS" + | "RESTAKE_REWARDS" + | "WITHDRAW" + | "WITHDRAW_ALL" + | "RESTAKE" + | "CLAIM_UNSTAKED" + | "UNLOCK_LOCKED" + | "STAKE_LOCKED" + | "VOTE" + | "REVOKE" + | "VOTE_LOCKED" + | "REVOTE" + | "REBOND" + | "MIGRATE" + | "VERIFY_WITHDRAW_CREDENTIALS" + | "DELEGATE"; +export type TransactionStatus = + | "NOT_FOUND" + | "CREATED" + | "BLOCKED" + | "WAITING_FOR_SIGNATURE" + | "SIGNED" + | "BROADCASTED" + | "PENDING" + | "CONFIRMED" + | "FAILED" + | "SKIPPED"; +export type TransactionType = + | "SWAP" + | "DEPOSIT" + | "APPROVAL" + | "STAKE" + | "CLAIM_UNSTAKED" + | "CLAIM_REWARDS" + | "RESTAKE_REWARDS" + | "UNSTAKE" + | "SPLIT" + | "MERGE" + | "LOCK" + | "UNLOCK" + | "SUPPLY" + | "ADD_LIQUIDITY" + | "REMOVE_LIQUIDITY" + | "BRIDGE" + | "VOTE" + | "REVOKE" + | "RESTAKE" + | "REBOND" + | "WITHDRAW" + | "WITHDRAW_ALL" + | "CREATE_ACCOUNT" + | "REVEAL" + | "MIGRATE" + | "DELEGATE" + | "UNDELEGATE" + | "UTXO_P_TO_C_IMPORT" + | "UTXO_C_TO_P_IMPORT" + | "WRAP" + | "UNWRAP" + | "UNFREEZE_LEGACY" + | "UNFREEZE_LEGACY_BANDWIDTH" + | "UNFREEZE_LEGACY_ENERGY" + | "UNFREEZE_BANDWIDTH" + | "UNFREEZE_ENERGY" + | "FREEZE_BANDWIDTH" + | "FREEZE_ENERGY" + | "UNDELEGATE_BANDWIDTH" + | "UNDELEGATE_ENERGY" + | "P2P_NODE_REQUEST" + | "CREATE_EIGENPOD" + | "VERIFY_WITHDRAW_CREDENTIALS" + | "START_CHECKPOINT" + | "VERIFY_CHECKPOINT_PROOFS" + | "QUEUE_WITHDRAWALS" + | "COMPLETE_QUEUED_WITHDRAWALS" + | "LZ_DEPOSIT" + | "LZ_WITHDRAW" + | "LUGANODES_PROVISION" + | "LUGANODES_EXIT_REQUEST" + | "INFSTONES_PROVISION" + | "INFSTONES_EXIT_REQUEST" + | "INFSTONES_CLAIM_REQUEST" + | "BATCH"; +export type AnnotatedFieldDto = { + readonly key: string; + readonly value: string; + readonly label: string; + readonly description: string; +}; +export type YieldProviders = + | "aave" + | "anchor" + | "benqi" + | "compound" + | "lido" + | "sushi" + | "yearn" + | "ape" + | "chainlink" + | "pendle" + | "parax" + | "rocket-pool" + | "stakewise" + | "etherfi" + | "morpho-aave" + | "morpho" + | "morpho-compound" + | "angle" + | "kelpdao" + | "figment" + | "kiln" + | "P2P" + | "everstake" + | "eigenlayer" + | "luganodes" + | "renzo" + | "infstones" + | "ethena" + | "upshift" + | "fluid" + | "idle-finance" + | "gearbox" + | "chorus-one" + | "stakekit" + | "spark" + | "sommelier" + | "summer-fi" + | "venus" + | "venus-flux" + | "mantle" + | "ton-whales" + | "blend" + | "synthetix" + | "drift" + | "euler" + | "maple" + | "sky" + | "yo-protocol" + | "meria" + | "stakin" + | "globalstake" + | "simplystaking" + | "coinbase" + | "validation-cloud" + | "curve" + | "pancakeswap" + | "yield-xyz" + | "kamino" + | "veda" + | "lista" + | "dolomite"; +export type YieldType = + | "staking" + | "liquid-staking" + | "lending" + | "restaking" + | "vault" + | "concentrated-liquidity-pool" + | "liquidity-pool" + | "real-world-asset"; +export type RewardSchedule = + | "block" + | "hour" + | "day" + | "week" + | "month" + | "era" + | "epoch" + | "campaign"; +export type TimePeriodDto = { + readonly days: number; + readonly seconds?: number; +}; +export type RewardClaiming = "auto" | "manual"; +export type YieldRevshareDto = { readonly enabled: boolean }; +export type YieldFeeDto = { + readonly enabled: boolean; + readonly depositFee: boolean; + readonly managementFee: boolean; + readonly performanceFee: boolean; +}; +export type TransactionFormat = "raw" | "default"; +export type ERCStandards = "ERC20" | "ERC4626" | "ERC721" | "ERC1155"; +export type CommissionAppliesTo = + | "all_yield" + | "execution_layer_rewards" + | "consensus_layer_rewards" + | "performance" + | "management"; +export type TvlLevel = "network" | "protocol"; +export type ReportingRevenueDailyAggregateDto = { + readonly date: string; + readonly totalRevenueAmountWei: string; + readonly totalRevenueAmountUsd: string; +}; +export type ReportingPerformanceDailyAggregateDto = { + readonly date: string; + readonly totalEnteredAmountWei: string; + readonly totalExitedAmountWei: string; + readonly totalTvlAmountWei: string; +}; +export type PerpActionTypes = + | "open" + | "close" + | "updateLeverage" + | "stopLoss" + | "takeProfit" + | "cancelOrder" + | "editOrder" + | "fund" + | "withdraw" + | "approveAgent" + | "approveBuilderFee" + | "updateMargin" + | "setTpAndSl"; +export type ProgrammaticPerpReportingTransactionDto = { + readonly id: string; + readonly type: + | "APPROVAL" + | "OPEN_POSITION" + | "CLOSE_POSITION" + | "UPDATE_LEVERAGE" + | "STOP_LOSS" + | "TAKE_PROFIT" + | "CANCEL_ORDER" + | "EDIT_ORDER" + | "FUND" + | "WITHDRAW" + | "APPROVE_BUILDER_FEE" + | "ENABLE_DEX_ABSTRACTION" + | "APPROVE_AGENT" + | "UPDATE_MARGIN" + | "SET_TP_AND_SL"; + readonly status: + | "CREATED" + | "QUEUED" + | "BROADCASTED" + | "CONFIRMED" + | "FAILED" + | "NOT_FOUND"; + readonly hash: string | null; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly explorerUrl: string | null; + readonly confirmedAt: string; +}; +export type UpdateUserMeDto = { + readonly serviceConditionsAccepted?: boolean; + readonly active?: boolean; + readonly name?: string; + readonly surname?: string; + readonly department?: string | null; +}; +export type CreateUserDto = { + readonly accessLevel: "admin" | "operator" | "member" | "owner"; + readonly email: string; + readonly name: string; + readonly surname: string; + readonly department?: string | null; +}; +export type UpdateUserDto = { + readonly active?: boolean; + readonly role?: "owner" | "admin" | "operator" | "member"; +}; +export type ApeNativeArgumentsDto = { + readonly baycId?: string; + readonly maycId?: string; + readonly bakcId?: string; +}; +export type TronResourceType = "BANDWIDTH" | "ENERGY"; +export type SignatureVerificationArgumentsDto = { + readonly message: string; + readonly signed: string; +}; +export type GeolocationError = { + readonly countryCode: string; + readonly regionCode?: string; + readonly tags?: ReadonlyArray< + "Crypto Ban" | "OFAC" | "OFSI" | "Pending Litigation" | "Staking Ban" + >; + readonly details?: {}; + readonly code: number; + readonly message: string; + readonly type: "GEO_LOCATION"; +}; +export type CosmosGasArgsDto = { readonly gasPrice: string }; +export type EvmEIP1559GasArgsDto = { + readonly type: 2; + readonly maxFeePerGas: string; + readonly maxPriorityFeePerGas: string; +}; +export type EvmLegacyGasArgsDto = { + readonly type: 0; + readonly gasPrice: string; +}; +export type GasMode = "slow" | "average" | "fast" | "custom"; +export type SubmitRequestDto = { readonly signedTransaction: string }; +export type SubmitResponseDto = { + readonly transactionHash: string; + readonly link: string; +}; +export type SubmitHashRequestDto = { readonly hash: string }; +export type TransactionVerificationMessageDto = { readonly message: string }; +export type PriceResponseDto = {}; +export type CreateCustomUriDto = { + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly rpcUri: string; +}; +export type UpdateCustomUriDto = { + readonly network?: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly rpcUri?: string; +}; +export type EnabledYieldDto = { readonly integrationId: string }; +export type CreateEnabledYieldDto = { readonly integrationId: string }; +export type DeleteEnabledYieldsDto = { + readonly integrationIds: ReadonlyArray; +}; +export type BinanceAdditionalAddressesStakeArgumentOptionsDto = {}; +export type AmountArgumentOptionsDto = { + readonly required: boolean; + readonly minimum?: number; + readonly maximum?: number; +}; +export type DurationArgumentOptionsDto = { + readonly required: boolean; + readonly minimum?: number; + readonly maximum?: number; +}; +export type RequiredArgumentDto = { readonly required: boolean }; +export type TronResourceArgumentOptionsDto = { + readonly required: boolean; + readonly options: ReadonlyArray; +}; +export type RequiredArgumentWithOptionsDto = { + readonly required: boolean; + readonly options: ReadonlyArray; +}; +export type YieldStatusResponseDto = { + readonly enter: boolean; + readonly exit: boolean; +}; +export type RewardTypes = "apr" | "apy" | "variable"; +export type ValidatorStatusTypes = + | "active" + | "jailed" + | "deactivating" + | "inactive" + | "full" + | "not_found"; +export type FeeConfigurationStatus = + | "REQUESTED" + | "PROCESSING" + | "LIVE" + | "CHANGES_REQUESTED"; +export type AllocationDto = { + readonly address: string; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly name: string; + readonly yieldId?: string; + readonly providerId?: string; + readonly allocation: string; + readonly allocationUsd: string | null; + readonly weight: number; + readonly targetWeight: number; + readonly rewardRate: { + readonly total: number; + readonly rateType: string; + } | null; + readonly tvl: string | null; + readonly tvlUsd: string | null; + readonly maxCapacity: string | null; + readonly remainingCapacity: string | null; +}; +export type OAVStrategyDto = { + readonly yieldId: string; + readonly weight?: number; +}; +export type BalanceTypes = + | "available" + | "staked" + | "unstaking" + | "unstaked" + | "preparing" + | "rewards" + | "locked" + | "unlocking"; +export type PendingActionConstraintAmountDto = { + readonly minimum?: number; + readonly maximum?: number; +}; +export type YieldBalanceLabelDto = { + readonly type: string; + readonly params: {}; +}; +export type ValidatorAddressesDto = { + readonly validatorAddresses?: ReadonlyArray; +}; +export type CustomValidatorAddresses = { + readonly integrationId: string; + readonly validatorAddresses: ReadonlyArray; +}; +export type YieldRewardsSummaryDto = { + readonly total: string; + readonly last24H: string; + readonly last7D: string; + readonly last30D: string; + readonly lastYear: string; +}; +export type CreateFeeConfigurationDtoV2 = { + readonly managementFeeBps?: number; + readonly performanceFeeBps?: number; + readonly depositFeeBps?: number; + readonly layerzeroOVaultConfig?: {}; +}; +export type FailureViewDto = { + readonly code: number; + readonly reason: string; + readonly details: {}; +}; +export type EthDeFiDetailsViewDto = { + readonly contract_address: string; + readonly type?: string; +}; +export type AdaDetailsViewDto = { + readonly poolId: string; + readonly activationEpoch: number; + readonly activationDate: string; +}; +export type CosmosDetailsViewDto = { + readonly validator_address: string; + readonly delegator_address: string; + readonly delegated_at?: string; + readonly undelegated_at?: string; + readonly rewards: number; + readonly available_rewards: number; + readonly balance: number; + readonly net_apy: number; + readonly updated_at: string; +}; +export type EthNativeDetailsViewDto = { + readonly validator_address: string; + readonly withdrawal_credentials?: string; + readonly deposit_tx_sender?: string; + readonly execution_fee_recipient?: string; + readonly consensus_rewards: string; + readonly execution_rewards: string; +}; +export type InjectiveDetailsViewDto = { + readonly validator_address: string; + readonly delegator_address: string; + readonly delegated_at?: string; + readonly undelegated_at?: string; + readonly rewards: number; + readonly available_rewards: number; + readonly balance: number; + readonly net_apy: number; + readonly updated_at: string; +}; +export type KilnEthereumPoolingDetailsViewDto = { + readonly owner: string; + readonly delegated_block: number; + readonly delegated_at: string; +}; +export type NearDetailsViewDto = { + readonly stakeAccount: string; + readonly canWithdraw: boolean; + readonly validator: string; + readonly netApy: number; + readonly activatedEpoch: number; + readonly activatedAt: string; + readonly updatedAt: string; +}; +export type OsmosisDetailsViewDto = { + readonly delegator_address: string; + readonly rewards: number; + readonly available_rewards: number; + readonly balance: number; + readonly net_apy: number; + readonly updated_at: string; +}; +export type SolanaDetailsViewDto = { + readonly stake_account: string; + readonly withdraw_pubkey: string; + readonly balance: number; + readonly activated_epoch: number; + readonly activated_at: string; + readonly net_apy: number; + readonly validator_address: string; + readonly updated_at: string; +}; +export type StakeKitStakeDetailsViewDto = { + readonly symbol: string; + readonly validator?: string; + readonly validators?: ReadonlyArray; + readonly rewards: number; + readonly balance: number; + readonly net_apy: number; + readonly yield_id: string; +}; +export type StakeKitVaultDetailsViewDto = { + readonly contract_address: string; + readonly protocol: string; + readonly protocol_display_name: string; + readonly protocol_icon: string; + readonly asset_icon: string; + readonly shared_symbol: string; +}; +export type TezosDetailsViewDto = { + readonly stake_address: string; + readonly backer_address: string; + readonly balance: number; + readonly rewards: number; + readonly gross_apy: number; + readonly delegated_at?: string; + readonly delegated_block?: number; + readonly delegated_cycle: number; + readonly activated_cycle?: number; + readonly activated_at?: string; + readonly updated_at: string; +}; +export type WalletViewDto = { + readonly network: string; + readonly address: string; +}; +export type InvalidRequestDto = { readonly msg: string }; +export type UnauthorizedDto = { readonly realm: string }; +export type NotFoundDto = { readonly what: string }; +export type ServerErrorDto = { readonly msg: string }; +export type GrowSuccessDto = { + readonly network: string; + readonly deposit_token: string; + readonly interest: { + readonly type: string; + readonly value: string; + readonly currency: string; + }; +}; +export type CreateFeeConfigurationDto = { + readonly integrationId: string; + readonly managementFeeBps?: number; + readonly performanceFeeBps?: number; + readonly depositFeeBps?: number; + readonly layerzeroOVaultConfig?: {}; +}; +export type UpdateFeeConfigurationDto = { + readonly managementFeeBps?: number; + readonly performanceFeeBps?: number; + readonly depositFeeBps?: number; + readonly layerzeroOVaultConfig?: {} | null; +}; +export type InitiateSsoDto = { + readonly email?: string; + readonly teamId?: string; +}; +export type InitiateSsoResponseDto = {}; +export type SsoAttributeMappingDto = { + readonly email: string; + readonly name?: string; + readonly surname?: string; + readonly department?: string; + readonly role?: string; +}; +export type MfaSetupResponseDto = { + readonly secret: string; + readonly otpauthUrl: string; +}; +export type MfaVerifySetupDto = { readonly code: string }; +export type MfaVerifySetupResponseDto = { + readonly recoveryCodes: ReadonlyArray; + readonly token: string; +}; +export type MfaBeginReenrollmentDto = { readonly code: string }; +export type MfaStatusResponseDto = { readonly isMfaEnabled: boolean }; +export type MfaVerifyDto = { + readonly challengeToken: string; + readonly code: string; +}; +export type MfaRecoverDto = { + readonly challengeToken: string; + readonly recoveryCode: string; +}; +export type MfaDisableDto = { readonly code: string }; +export type CreatePerpsFeeConfigurationDto = { + readonly hyperliquidBuilderFeeBps: number; +}; +export type PerpsFeeConfigurationDto = { + readonly id: string; + readonly projectId: string; + readonly status: "REQUESTED" | "LIVE" | "DISABLED"; + readonly hyperliquidBuilderAddress: string | null; + readonly hyperliquidBuilderFeeBps: number | null; + readonly createdAt: string; + readonly updatedAt: string; +}; +export type UpdatePerpsFeeConfigurationDto = { + readonly status?: "REQUESTED" | "LIVE" | "DISABLED"; + readonly hyperliquidBuilderAddress?: string; + readonly hyperliquidBuilderFeeBps?: number; +}; +export type ValidatorProviderDto = { + readonly id: string; + readonly name: string; + readonly uniqueId: string; + readonly website: string; + readonly rank: number; + readonly preferred: boolean; + readonly revshare?: {}; + readonly createdAt: string; + readonly updatedAt: string; +}; +export type CreateValidatorProviderDto = { + readonly name: string; + readonly website: string; + readonly rank: number; + readonly preferred?: boolean; + readonly revshare?: {}; +}; +export type UpdateValidatorProviderDto = { + readonly name?: string; + readonly website?: string; + readonly rank?: number; + readonly preferred?: boolean; + readonly revshare?: {}; + readonly csvFile?: string; +}; +export type ValidatorHistoricalRevshareChangesDto = { + readonly id: string; + readonly validatorId: string; + readonly type: "on_chain" | "override"; + readonly lastDay: string; + readonly preferred?: {}; + readonly apr?: {}; + readonly commission?: {}; + readonly mevCommission?: {}; +}; +export type UpdateValidatorHistoricalRevshareChangesDto = { + readonly lastDay: string; +}; +export type CreateValidatorDto = { + readonly integrationId: string; + readonly address: string; + readonly status?: + | "active" + | "jailed" + | "deactivating" + | "inactive" + | "full" + | "not_found"; + readonly lastFoundAt?: string; + readonly providerId?: string; + readonly name?: string; + readonly website?: string; + readonly image?: string; + readonly apr?: number; + readonly commission?: number; + readonly mevCommission?: number; + readonly stakedBalance?: string; + readonly votingPower?: number; + readonly remainingPossibleStake?: string; + readonly minimumStake?: string; + readonly remainingSlots?: number; + readonly endDate?: string; + readonly nominatorCount?: number; + readonly subnetId?: number; +}; +export type UpdateValidatorDto = { + readonly providerId?: string; + readonly name?: string; + readonly website?: string; + readonly image?: string; + readonly apr?: number; + readonly commission?: number; + readonly mevCommission?: number; +}; +export type CreateAdminApiKeyDto = { + readonly name: string; + readonly info?: string; +}; +export type AdminApiKey = { + readonly id: string; + readonly createdAt: string; + readonly updatedAt: string; + readonly apiKey: string; + readonly deletedAt: string; + readonly info: string | null; + readonly name: string; + readonly lastUsedAt: string; +}; +export type UpdateAdminApiKeyDto = { + readonly info?: string; + readonly name?: string; +}; +export type WebhookEndpointDto = { + readonly id: string; + readonly projectId: string; + readonly url: string; + readonly enabled: boolean; + readonly description?: {}; + readonly createdAt: string; + readonly updatedAt: string; + readonly subscriptionCount: number; +}; +export type WebhookSubscriptionDto = { + readonly id: string; + readonly projectId: string; + readonly endpointId: string; + readonly events: ReadonlyArray; + readonly actions: ReadonlyArray; + readonly filtersJson?: {}; + readonly enabled: boolean; + readonly createdAt: string; + readonly updatedAt: string; +}; +export type CreateWebhookEndpointDto = { + readonly url: string; + readonly secret: string; + readonly description?: string; + readonly enabled?: boolean; +}; +export type CreateWebhookSubscriptionDto = { + readonly events: ReadonlyArray; + readonly actions: ReadonlyArray; + readonly filtersJson?: {}; + readonly enabled?: boolean; +}; +export type ToggleWebhookEndpointDto = { readonly enabled: boolean }; +export type UpdateWebhookEndpointDto = { + readonly url?: string; + readonly secret?: string; + readonly description?: string; + readonly enabled?: boolean; +}; +export type UpdateWebhookSubscriptionDto = { + readonly events?: ReadonlyArray; + readonly actions?: ReadonlyArray; + readonly filtersJson?: {}; + readonly enabled?: boolean; +}; +export type WebhookDeliveryDto = { + readonly id: string; + readonly projectId: string; + readonly endpointId: string; + readonly subscriptionId: string; + readonly eventId: string; + readonly status: + | "pending" + | "sending" + | "delivered" + | "retry_scheduled" + | "dead"; + readonly attemptCount: number; + readonly nextAttemptAt: string; + readonly lastAttemptAt: {} | null; + readonly lastHttpStatus: {} | null; + readonly lastDurationMs: {} | null; + readonly lastErrorCode: {} | null; + readonly lastErrorMessage: {} | null; + readonly lastResponseSnippet: {} | null; + readonly createdAt: string; + readonly updatedAt: string; +}; +export type WebhookEventDto = { + readonly id: string; + readonly projectId: string; + readonly schemaVersion: number; + readonly resource: string; + readonly action: string; + readonly type: string; + readonly subjectJson: {}; + readonly dataJson: {}; + readonly previousJson: {} | null; + readonly changesJson: {} | null; + readonly sequence: number; + readonly idempotencyKey: string; + readonly metaJson: {} | null; + readonly createdAt: string; + readonly updatedAt: string; +}; +export type TradeProviderConfigurationDto = { + readonly providerId: string; + readonly enabled: boolean; + readonly enabledFeatures: ReadonlyArray<"spot" | "perps" | "perpsFeeConfig">; + readonly supportedFeatures: ReadonlyArray< + "spot" | "perps" | "perpsFeeConfig" + >; +}; +export type UpdateTradeProviderConfigurationDto = { + readonly enabled?: boolean; + readonly enabledFeatures?: ReadonlyArray<"spot" | "perps" | "perpsFeeConfig">; +}; +export type UpsertYieldStatusDto = { + readonly enter: boolean; + readonly exit: boolean; +}; +export type YieldStatusOverrideResponseDto = { + readonly integrationId: string; + readonly enter: boolean; + readonly exit: boolean; + readonly updatedAt: string; +}; +export type AvalancheCAdditionalAddressesDto = { + readonly cAddressBech: string; + readonly pAddressBech: string; +}; +export type BinanceAdditionalAddressesDto = { + readonly binanceBeaconAddress: string; +}; +export type CosmosAdditionalAddressesDto = { readonly cosmosPubKey: string }; +export type SolanaAdditionalAddressesDto = { + readonly stakeAccounts: ReadonlyArray; + readonly lidoStakeAccounts: ReadonlyArray; +}; +export type TezosAdditionalAddressesDto = { readonly tezosPubKey: string }; +export type StructuredTransactionTronDto = { + readonly type: string; + readonly owner_address: string; + readonly votes?: ReadonlyArray<{ + readonly vote_address?: string; + readonly vote_count?: number; + }>; + readonly frozen_balance?: number; + readonly resource?: string; + readonly unfreeze_balance?: number; + readonly receiver_address?: string; + readonly balance?: number; + readonly lock?: boolean; + readonly lock_period?: number; +}; +export type UserDto = { + readonly email: string; + readonly emailVerified: boolean; + readonly id: string; + readonly lastAccessedAt: string; + readonly name: string | null; + readonly surname: string | null; + readonly department: string | null; + readonly role: Role; + readonly serviceConditionsAcceptedAt: string; + readonly teamId: string; + readonly isMfaEnabled: boolean; +}; +export type SsoConfigResponseDto = { + readonly id: string; + readonly teamId: string; + readonly protocol: "saml" | "oidc"; + readonly issuer: string; + readonly entryPoint?: string | null; + readonly certificate?: string | null; + readonly clientId?: string | null; + readonly attributeMapping: {}; + readonly enabled: boolean; + readonly enforced: boolean; + readonly jitDefaultRole: Role; + readonly syncUserAttributesOnLogin: boolean; + readonly ssoLoginDomain?: string | null; + readonly createdAt: string; + readonly updatedAt: string; + readonly spMetadata?: { + readonly acsUrl?: string; + readonly entityId?: string; + readonly redirectUri?: string; + }; +}; +export type TokenDto = { + readonly name: string; + readonly network: Networks; + readonly symbol: string; + readonly decimals: number; + readonly address?: string; + readonly coinGeckoId?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly feeConfigurationId?: string; +}; +export type CustomUri = { + readonly id: string; + readonly createdAt: string; + readonly updatedAt: string; + readonly network: Networks; + readonly rpcUri: string; + readonly projectId: string; +}; +export type RequiredArgumentWithNetworkDto = { + readonly required: boolean; + readonly network: Networks; +}; +export type CreateRiskParameterDto = { + readonly category: string; + readonly item: string; + readonly isDynamic?: boolean; + readonly value: {}; + readonly network?: Networks; + readonly asset?: string; + readonly protocol?: string; + readonly integrationId?: string; +}; +export type RiskParameterDto = { + readonly id: string; + readonly category: string; + readonly item: string; + readonly isDynamic: boolean; + readonly value?: {}; + readonly network?: Networks; + readonly asset?: {}; + readonly protocol?: {}; + readonly integrationId?: {}; + readonly createdAt: string; + readonly updatedAt: string; +}; +export type UpdateRiskParameterDto = { + readonly category?: string; + readonly item?: string; + readonly isDynamic?: boolean; + readonly value?: {}; + readonly network?: Networks; + readonly asset?: {}; + readonly protocol?: {}; + readonly integrationId?: {}; +}; +export type CampaignQualificationConfigDto = { + readonly type: CampaignQualificationType; + readonly threshold: string; + readonly maxIncentivizedTvlToken?: string | null; +}; +export type CampaignBalanceTotalsDto = { + readonly totalBudget: string; + readonly totalDistributed: string; + readonly remainingBudget: string; + readonly undistributedDueToCeiling: string; + readonly qualifyingTvl: string; + readonly qualifyingUserCount: number; + readonly safeAddress: string; + readonly campaignStatus: CampaignStatus; + readonly nextPayoutDueAt?: string; +}; +export type CampaignPayoutRunDto = { + readonly id: string; + readonly campaignId: string; + readonly payoutWindowStart: string; + readonly payoutWindowEnd: string; + readonly actualWindowStart: string; + readonly actualWindowEnd: string; + readonly cappedBudget: string; + readonly status: CampaignPayoutRunStatus; + readonly currentStep: CampaignPayoutRunStep; + readonly retryCount: number; + readonly preparedSafeTransactionMetadata?: {} | null; + readonly startedAt?: string; + readonly completedAt?: string; + readonly merkleRoot?: string | null; +}; +export type ProgrammaticPayoutRunDto = { + readonly id: string; + readonly campaignId: string; + readonly payoutWindowStart: string; + readonly payoutWindowEnd: string; + readonly actualWindowStart: string; + readonly actualWindowEnd: string; + readonly totalAmount: string; + readonly recipientCount: number; + readonly status: CampaignPayoutRunStatus; + readonly currentStep: CampaignPayoutRunStep; + readonly safeTransactionHash?: string | null; + readonly executionTxHash?: string | null; + readonly preparedSafeTransactionMetadata?: {} | null; + readonly merkleRoot?: string | null; + readonly startedAt?: string; + readonly completedAt?: string; +}; +export type CampaignPayoutItemDto = { + readonly id: string; + readonly campaignPayoutRunId: string; + readonly recipientAddress: string; + readonly amount: string; + readonly status: CampaignPayoutItemStatus; + readonly batchKey: string; + readonly txHash?: string | null; +}; +export type ProgrammaticPayoutItemDto = { + readonly id: string; + readonly recipientAddress: string; + readonly amount: string; + readonly status: CampaignPayoutItemStatus; + readonly txHash?: string | null; + readonly preRunUnpaidBalance?: string | null; +}; +export type PaginatedCampaignPayoutAuditDto = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items: ReadonlyArray; +}; +export type PaginatedWeeklyDistributionDto = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items: ReadonlyArray; +}; +export type PaginatedEligibleUserDto = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items: ReadonlyArray; +}; +export type CampaignConfigurationRequestDto = { + readonly id: string; + readonly projectId: string; + readonly teamId: string; + readonly campaignId?: string | null; + readonly requestType: CampaignConfigurationRequestType; + readonly status: CampaignConfigurationRequestStatus; + readonly requestedBy: string; + readonly reviewedBy?: string | null; + readonly reviewedAt?: string; + readonly rejectionReason?: string | null; + readonly requestedChanges: { readonly [x: string]: unknown }; + readonly previousValues?: {}; + readonly version: number; + readonly metadata?: {}; + readonly createdAt: string; + readonly updatedAt: string; +}; +export type PaginatedHourlyAccrualSummaryDto = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items: ReadonlyArray; +}; +export type PaginatedUserHourlyAccrualDto = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items: ReadonlyArray; +}; +export type PaginatedUserHourlyAccrualHistoryDto = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items: ReadonlyArray; +}; +export type PaginatedCampaignUserBalanceDto = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items: ReadonlyArray; +}; +export type CreateTeamDto = { + readonly contactDetails: {}; + readonly name: string; + readonly user: CreateTeamDtoUser; + readonly referredBy?: string; +}; +export type UpdateTeamDto = { + readonly activated?: boolean; + readonly serviceConditionsAccepted?: boolean; + readonly category?: KeyCategory; + readonly name?: string; + readonly isMfaEnforced?: boolean; +}; +export type TransactionStatusResponseDto = { + readonly status: TransactionStatus; + readonly url: string; + readonly blockNumber?: string; + readonly network: Networks; + readonly hash: string; + readonly raw: {}; +}; +export type YieldProviderDto = { + readonly id: YieldProviders; + readonly name: string; + readonly description: string; + readonly externalLink: string; + readonly logoURI: string; +}; +export type YieldCommissionDto = { + readonly appliesTo: CommissionAppliesTo; + readonly value: number; +}; +export type YieldTvlDto = { readonly level: TvlLevel; readonly value: string }; +export type PendingActionArgumentsDto = { + readonly amount?: string; + readonly validatorAddress?: string; + readonly validatorAddresses?: ReadonlyArray; + readonly duration?: number; + readonly nfts?: ApeNativeArgumentsDto; +}; +export type ConstructTransactionRequestDto = { + readonly gasArgs?: + | CosmosGasArgsDto + | EvmEIP1559GasArgsDto + | EvmLegacyGasArgsDto; + readonly ledgerWalletAPICompatible?: boolean; + readonly transactionFormat?: TransactionFormat; +}; +export type GasModeValueDto = { + readonly name: GasMode; + readonly value: string; + readonly gasArgs: + | CosmosGasArgsDto + | EvmEIP1559GasArgsDto + | EvmLegacyGasArgsDto; +}; +export type ApeNativeArgumentOptionsDto = { + readonly baycId?: RequiredArgumentDto; + readonly maycId?: RequiredArgumentDto; + readonly bakcId?: RequiredArgumentDto; +}; +export type ValidatorDto = { + readonly address: string; + readonly status: ValidatorStatusTypes; + readonly name?: string; + readonly image?: string; + readonly website?: string; + readonly apr?: number; + readonly commission?: number; + readonly stakedBalance?: string; + readonly votingPower?: number; + readonly preferred?: boolean; + readonly providerId?: string; + readonly endDate?: string; + readonly remainingPossibleStake?: string; + readonly minimumStake?: string; + readonly remainingSlots?: number; + readonly nominatorCount?: number; + readonly subnetId?: number; + readonly pricePerShare?: string; + readonly subnetName?: string; + readonly marketCap?: string; + readonly tokenSymbol?: string; +}; +export type FeeConfigurationWithApyDto = { + readonly id: string; + readonly projectId: string; + readonly integrationId: string; + readonly managementFeeBps: number; + readonly performanceFeeBps: number; + readonly depositFeeBps: number; + readonly allocatorVaultContractAddress: string | null; + readonly feeWrapperContractAddress: string | null; + readonly status: FeeConfigurationStatus; + readonly layerzeroOVaultConfig?: {} | null; + readonly computedRewardRate: number; +}; +export type FeeConfigurationDto = { + readonly id: string; + readonly projectId: string; + readonly integrationId: string; + readonly managementFeeBps: number; + readonly performanceFeeBps: number; + readonly depositFeeBps: number; + readonly allocatorVaultContractAddress: string | null; + readonly feeWrapperContractAddress: string | null; + readonly status: FeeConfigurationStatus; + readonly layerzeroOVaultConfig?: {} | null; +}; +export type CreateOAVDto = { + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly inputTokenAddress?: string; + readonly name: string; + readonly strategies: ReadonlyArray; + readonly autoRebalancing?: boolean; + readonly managementFeeBps?: number; + readonly performanceFeeBps?: number; + readonly depositFeeBps?: number; +}; +export type OAVResponseDto = { + readonly id: string; + readonly integrationId: string | null; + readonly name: string; + readonly strategies: ReadonlyArray; + readonly isActive: boolean; + readonly projectId: string; + readonly createdAt: string; + readonly updatedAt: string; + readonly autoRebalancing: boolean; + readonly status: "REQUESTED" | "LIVE" | "CHANGES_REQUESTED"; + readonly managementFeeBps: number | null; + readonly performanceFeeBps: number | null; + readonly depositFeeBps: number | null; + readonly isThirdParty: boolean; +}; +export type UpdateOAVDto = { + readonly name?: string; + readonly strategies?: ReadonlyArray; + readonly isActive?: boolean; + readonly autoRebalancing?: boolean; + readonly managementFeeBps?: number; + readonly performanceFeeBps?: number; + readonly depositFeeBps?: number; +}; +export type PendingActionConstraintDto = { + readonly type: ActionTypes; + readonly amount?: PendingActionConstraintAmountDto; +}; +export type StakeFailureDto = { readonly error: FailureViewDto }; +export type StakeViewSuccessDto = { + readonly protocol_name: string; + readonly currency: string; + readonly interest: { readonly type: string; readonly value: string }; + readonly logo?: string; + readonly since?: string; + readonly staked_balance: string; + readonly status: + | "activated" + | "activating" + | "archived" + | "deactivated" + | "deactivating"; + readonly commission: "Net"; + readonly rewards: ReadonlyArray<{}>; + readonly details: + | EthDeFiDetailsViewDto + | AdaDetailsViewDto + | CosmosDetailsViewDto + | EthNativeDetailsViewDto + | InjectiveDetailsViewDto + | KilnEthereumPoolingDetailsViewDto + | NearDetailsViewDto + | OsmosisDetailsViewDto + | SolanaDetailsViewDto + | StakeKitStakeDetailsViewDto + | StakeKitVaultDetailsViewDto + | TezosDetailsViewDto; +}; +export type UpsertSsoConfigDto = { + readonly protocol: "saml" | "oidc"; + readonly issuer: string; + readonly entryPoint?: {}; + readonly certificate?: {}; + readonly clientId?: {}; + readonly clientSecret?: string; + readonly attributeMapping?: SsoAttributeMappingDto; + readonly enabled?: boolean; + readonly enforced?: boolean; + readonly jitDefaultRole?: "member"; + readonly syncUserAttributesOnLogin?: boolean; + readonly ssoLoginDomain?: {} | null; +}; +export type ValidatorAdminDto = { + readonly id: string; + readonly integrationId: string; + readonly address: string; + readonly status: ValidatorStatusTypes; + readonly lastFoundAt?: {}; + readonly provider?: ValidatorProviderDto; + readonly providerId?: {}; + readonly name?: {}; + readonly nameOverride?: {}; + readonly website?: {}; + readonly websiteOverride?: {}; + readonly image?: {}; + readonly imageOverride?: {}; + readonly apr?: {}; + readonly aprOverride?: {}; + readonly commission?: {}; + readonly commissionOverride?: {}; + readonly mevCommission?: {}; + readonly mevCommissionOverride?: {}; + readonly stakedBalance?: {}; + readonly votingPower?: {}; + readonly remainingPossibleStake?: {}; + readonly minimumStake?: {}; + readonly remainingSlots?: {}; + readonly endDate?: {}; + readonly nominatorCount?: {}; + readonly subnetId?: {}; + readonly createdAt: string; + readonly updatedAt: string; +}; +export type PaginatedYieldStatusOverrideResponseDto = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items: ReadonlyArray; +}; +export type AddressesDto = { + readonly address: string; + readonly additionalAddresses?: + | CosmosAdditionalAddressesDto + | BinanceAdditionalAddressesDto + | SolanaAdditionalAddressesDto + | TezosAdditionalAddressesDto + | AvalancheCAdditionalAddressesDto; +}; +export type AddressWithTokenDto = { + readonly address: string; + readonly additionalAddresses?: + | CosmosAdditionalAddressesDto + | BinanceAdditionalAddressesDto + | SolanaAdditionalAddressesDto + | TezosAdditionalAddressesDto + | AvalancheCAdditionalAddressesDto; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly tokenAddress?: string; +}; +export type AuthEmailLoginResponseDto = { + readonly token?: string; + readonly user?: UserDto; + readonly mfaRequired?: boolean; + readonly challengeToken?: string; + readonly mfaSetupRequired?: boolean; +}; +export type MfaVerifyResponseDto = { + readonly token: string; + readonly user: UserDto; +}; +export type MfaRecoverResponseDto = { + readonly token: string; + readonly user: UserDto; +}; +export type CampaignSafeBalanceDto = { + readonly safeAddress: string; + readonly network: Networks; + readonly token: TokenDto; + readonly balance: string; + readonly asOf: string; +}; +export type TransactionDto = { + readonly id: string; + readonly network: Networks; + readonly status: TransactionStatus; + readonly type: TransactionType | null; + readonly hash: string | null; + readonly createdAt: string; + readonly broadcastedAt: string; + readonly signedTransaction: string | null; + readonly unsignedTransaction: string | null; + readonly structuredTransaction: StructuredTransactionTronDto | null; + readonly annotatedTransaction: { + readonly fields: ReadonlyArray; + } | null; + readonly stepIndex: number; + readonly error: string | null; + readonly gasEstimate: { + readonly amount: string | null; + readonly token: TokenDto; + readonly gasLimit?: string; + } | null; + readonly stakeId: string; + readonly explorerUrl: string | null; + readonly ledgerHwAppId: string | null; + readonly isMessage: boolean; + readonly accountAddresses?: ReadonlyArray; +}; +export type TransactionGasEstimateDto = { + readonly amount: string | null; + readonly token: TokenDto; + readonly gasLimit?: string; + readonly stepIndex: number; + readonly type: TransactionType | null; +}; +export type ActionArgumentsDto = { + readonly amount: string; + readonly validatorAddress?: string; + readonly validatorAddresses?: ReadonlyArray; + readonly providerId?: string; + readonly duration?: number; + readonly nfts?: ApeNativeArgumentsDto; + readonly ledgerWalletAPICompatible?: boolean; + readonly tronResource?: TronResourceType; + readonly signatureVerification?: SignatureVerificationArgumentsDto; + readonly inputToken?: TokenDto; + readonly outputToken?: TokenDto; + readonly feeConfigurationId?: string; + readonly subnetId?: number; + readonly receiverAddress?: string; + readonly useMaxAmount?: boolean; +}; +export type TokenBalanceScanResponseDto = { + readonly token: TokenDto; + readonly availableYields: ReadonlyArray; + readonly amount: string; +}; +export type TokenWithAvailableYieldsDto = { + readonly token: TokenDto; + readonly availableYields: ReadonlyArray; +}; +export type PriceRequestDto = { + readonly currency: string; + readonly tokenList: ReadonlyArray; +}; +export type BalanceResponseDto = { + readonly token: TokenDto; + readonly amount: string; + readonly availableYields: ReadonlyArray; +}; +export type YieldRewardsSummaryResponseDto = { + readonly rewards: YieldRewardsSummaryDto; + readonly token: TokenDto; +}; +export type AddressArgumentsDto = { + readonly address?: RequiredArgumentWithNetworkDto; + readonly additionalAddresses?: ReadonlyArray; +}; +export type CreateCampaignWithSafeAddressDto = { + readonly yieldId: string; + readonly name?: string | null; + readonly rewardToken: { + readonly name: string; + readonly network: Networks; + readonly symbol: string; + readonly decimals: number; + readonly address?: string; + readonly coinGeckoId?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly feeConfigurationId?: string; + }; + readonly rewardMode?: CampaignRewardMode; + readonly totalBudget: string; + readonly apyCeiling?: number | null; + readonly startTime: string; + readonly endTime: string; + readonly payoutFrequency: + | "weekly" + | "daily" + | "six_hourly" + | "end_of_campaign"; + readonly qualificationConfig: CampaignQualificationConfigDto; + readonly budgetSpendStrategy?: CampaignBudgetSpendStrategy; + readonly status?: CampaignStatus; + readonly safeAddress: string; +}; +export type CampaignDto = { + readonly id: string; + readonly name?: string | null; + readonly projectId: string; + readonly yieldId: string; + readonly integrationId: string; + readonly rewardToken: { + readonly name: string; + readonly network: Networks; + readonly symbol: string; + readonly decimals: number; + readonly address?: string; + readonly coinGeckoId?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly feeConfigurationId?: string; + }; + readonly rewardMode: CampaignRewardMode; + readonly safeAddress: string; + readonly totalBudget: string; + readonly distributedBudget: string; + readonly remainingBudget: string; + readonly startTime: string; + readonly endTime: string; + readonly payoutFrequency: CampaignPayoutFrequency; + readonly status: CampaignStatus; + readonly lastProcessedHour?: string; + readonly nextPayoutDueAt?: string; + readonly apyCeiling?: number | null; + readonly budgetSpendStrategy: CampaignBudgetSpendStrategy; + readonly qualificationConfig: CampaignQualificationConfigDto; +}; +export type UpdateCampaignDto = { + readonly yieldId?: string; + readonly name?: string | null; + readonly rewardToken?: { + readonly name: string; + readonly network: Networks; + readonly symbol: string; + readonly decimals: number; + readonly address?: string; + readonly coinGeckoId?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly feeConfigurationId?: string; + }; + readonly rewardMode?: CampaignRewardMode; + readonly safeAddress?: string; + readonly totalBudget?: string; + readonly apyCeiling?: number | null; + readonly startTime?: string; + readonly endTime?: string; + readonly payoutFrequency?: CampaignPayoutFrequency; + readonly qualificationConfig?: CampaignQualificationConfigDto; + readonly budgetSpendStrategy?: CampaignBudgetSpendStrategy; + readonly status?: CampaignStatus; +}; +export type CreateCampaignConfigurationRequestDto = { + readonly requestType: CampaignConfigurationRequestType; + readonly campaignId?: string; + readonly createPayload?: { + readonly yieldId: string; + readonly name?: string | null; + readonly rewardToken: { + readonly name: string; + readonly network: Networks; + readonly symbol: string; + readonly decimals: number; + readonly address?: string; + readonly coinGeckoId?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly feeConfigurationId?: string; + }; + readonly rewardMode?: CampaignRewardMode; + readonly totalBudget: string; + readonly apyCeiling?: number | null; + readonly startTime: string; + readonly endTime: string; + readonly payoutFrequency: + | "weekly" + | "daily" + | "six_hourly" + | "end_of_campaign"; + readonly qualificationConfig: CampaignQualificationConfigDto; + readonly budgetSpendStrategy?: CampaignBudgetSpendStrategy; + readonly status?: CampaignStatus; + }; + readonly updatePayload?: { + readonly yieldId?: string; + readonly name?: string | null; + readonly rewardToken?: { + readonly name: string; + readonly network: Networks; + readonly symbol: string; + readonly decimals: number; + readonly address?: string; + readonly coinGeckoId?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly feeConfigurationId?: string; + }; + readonly rewardMode?: CampaignRewardMode; + readonly safeAddress?: string; + readonly totalBudget?: string; + readonly apyCeiling?: number | null; + readonly startTime?: string; + readonly endTime?: string; + readonly payoutFrequency?: CampaignPayoutFrequency; + readonly qualificationConfig?: CampaignQualificationConfigDto; + readonly budgetSpendStrategy?: CampaignBudgetSpendStrategy; + readonly status?: CampaignStatus; + }; + readonly metadata?: { readonly [x: string]: unknown }; +}; +export type PaginatedCampaignPayoutRunDto = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items: ReadonlyArray; +}; +export type PaginatedProgrammaticPayoutRunDto = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items: ReadonlyArray; +}; +export type CampaignPayoutRunDetailDto = { + readonly run: CampaignPayoutRunDto; + readonly items: ReadonlyArray; +}; +export type PaginatedProgrammaticPayoutItemDto = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items: ReadonlyArray; +}; +export type PaginatedCampaignConfigurationRequestDto = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items: ReadonlyArray; +}; +export type HourlyAccrualDetailDto = { + readonly summary: HourlyAccrualSummaryDto; + readonly users: PaginatedUserHourlyAccrualDto; +}; +export type CampaignBalancesResponseDto = { + readonly users: PaginatedCampaignUserBalanceDto; + readonly totals: CampaignBalanceTotalsDto; + readonly freshness: CampaignBalanceFreshnessDto; +}; +export type YieldMetadataDto = { + readonly name: string; + readonly logoURI: string; + readonly description: string; + readonly documentation: string; + readonly provider?: YieldProviderDto; + readonly gasFeeToken: TokenDto; + readonly rewardTokens?: ReadonlyArray; + readonly token: TokenDto; + readonly tokens?: ReadonlyArray; + readonly type: YieldType; + readonly rewardSchedule: RewardSchedule; + readonly cooldownPeriod?: TimePeriodDto; + readonly lockupPeriod?: TimePeriodDto; + readonly warmupPeriod: TimePeriodDto; + readonly withdrawPeriod?: TimePeriodDto; + readonly rewardClaiming: RewardClaiming; + readonly minimumStake?: number; + readonly supportsMultipleValidators?: boolean; + readonly supportsLedgerWalletApi?: boolean; + readonly revshare: YieldRevshareDto; + readonly fee: YieldFeeDto; + readonly isIntegrationAggregator?: boolean; + readonly extraTransactionFormatsSupported?: ReadonlyArray; + readonly supportedStandards?: ReadonlyArray; + readonly commission?: ReadonlyArray; + readonly tvl?: ReadonlyArray; +}; +export type PendingActionRequestDto = { + readonly type: ActionTypes; + readonly integrationId: string; + readonly passthrough: string; + readonly args?: PendingActionArgumentsDto; +}; +export type PendingActionGasEstimateRequestDto = { + readonly type: ActionTypes; + readonly integrationId: string; + readonly passthrough: string; + readonly args?: PendingActionArgumentsDto; + readonly gasArgs?: + | CosmosGasArgsDto + | EvmEIP1559GasArgsDto + | EvmLegacyGasArgsDto; +}; +export type GasModesDto = { + readonly denom: string; + readonly values: ReadonlyArray; +}; +export type ArgumentOptionsDto = { + readonly amount?: AmountArgumentOptionsDto; + readonly duration?: DurationArgumentOptionsDto; + readonly validatorAddress?: RequiredArgumentDto; + readonly validatorAddresses?: RequiredArgumentDto; + readonly nfts?: ReadonlyArray; + readonly tronResource?: TronResourceArgumentOptionsDto; + readonly signatureVerification?: RequiredArgumentDto; + readonly feeConfigurationId?: RequiredArgumentWithOptionsDto; + readonly subnetId?: RequiredArgumentDto; + readonly providerId?: RequiredArgumentWithOptionsDto; + readonly receiverAddress?: RequiredArgumentDto; +}; +export type ValidatorSearchResultDto = { + readonly integrationId: string; + readonly validators: ReadonlyArray; +}; +export type StakeResponseDto = { + readonly id: WalletViewDto; + readonly stake: StakeViewSuccessDto | StakeFailureDto; +}; +export type TransactionVerificationMessageRequestDto = { + readonly addresses: AddressesDto; +}; +export type TokenBalanceScanDto = { + readonly addresses: AddressesDto; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; +}; +export type YieldBalanceWithIntegrationIdRequestDto = { + readonly addresses: AddressesDto; + readonly args?: ValidatorAddressesDto; + readonly integrationId: string; +}; +export type YieldBalanceScanRequestDto = { + readonly addresses: AddressesDto; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly customValidators?: ReadonlyArray; +}; +export type YieldBalanceScanEvmRequestDto = { + readonly addresses: AddressesDto; + readonly customValidators?: ReadonlyArray; + readonly networks: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm"; +}; +export type YieldBalanceRequestDto = { + readonly addresses: AddressesDto; + readonly args?: ValidatorAddressesDto; +}; +export type YieldRewardsSummaryRequestDto = { + readonly addresses: AddressesDto; +}; +export type BalancesRequestDto = { + readonly addresses: ReadonlyArray; +}; +export type ActionWithLivePriceDto = { + readonly id: string; + readonly integrationId: string; + readonly status: ActionStatus; + readonly type: ActionTypes; + readonly currentStepIndex: number; + readonly amount: string | null; + readonly USDAmount: string | null; + readonly tokenId: string | null; + readonly validatorAddress: string | null; + readonly validatorAddresses: ReadonlyArray; + readonly transactions: ReadonlyArray; + readonly createdAt: string; + readonly completedAt: string; + readonly inputToken?: TokenDto; + readonly addresses: AddressesDto; + readonly accountAddresses?: ReadonlyArray; + readonly projectId: string | null; + readonly currentUSDAmount: string | null; +}; +export type ActionDto = { + readonly id: string; + readonly integrationId: string; + readonly status: ActionStatus; + readonly type: ActionTypes; + readonly currentStepIndex: number; + readonly amount: string | null; + readonly USDAmount: string | null; + readonly tokenId: string | null; + readonly validatorAddress: string | null; + readonly validatorAddresses: ReadonlyArray; + readonly transactions: ReadonlyArray; + readonly createdAt: string; + readonly completedAt: string; + readonly inputToken?: TokenDto; + readonly addresses: AddressesDto; + readonly accountAddresses?: ReadonlyArray; + readonly projectId: string | null; +}; +export type ActionGasEstimateDto = { + readonly amount: string | null; + readonly token: TokenDto; + readonly gasLimit?: string; + readonly transactions: ReadonlyArray; +}; +export type ActionRequestDto = { + readonly integrationId: string; + readonly addresses: AddressesDto; + readonly args: ActionArgumentsDto; + readonly referralCode?: string; + readonly skipPrechecks?: boolean; +}; +export type ActionGasEstimateRequestDto = { + readonly integrationId: string; + readonly addresses: AddressesDto; + readonly args: ActionArgumentsDto; + readonly referralCode?: string; + readonly skipPrechecks?: boolean; + readonly gasArgs?: + | CosmosGasArgsDto + | EvmEIP1559GasArgsDto + | EvmLegacyGasArgsDto; +}; +export type PaginatedCampaignDto = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items: ReadonlyArray; +}; +export type CampaignSummaryDto = { + readonly campaign: CampaignDto; + readonly unpaidLiability: string; + readonly totalQualifyingTvl: string; + readonly participantsCount: number; +}; +export type ProgrammaticPayoutRunDetailDto = { + readonly run: ProgrammaticPayoutRunDto; + readonly recipients: PaginatedProgrammaticPayoutItemDto; + readonly budgetState: PayoutRunBudgetStateDto; + readonly safeTransactions: ReadonlyArray; +}; +export type ProgrammaticPayoutBatchDetailDto = { + readonly safeTransaction: SafeTransactionDetailDto; + readonly recipients: PaginatedProgrammaticPayoutItemDto; +}; +export type GasForNetworkResponseDto = { + readonly customisable: boolean; + readonly modes: GasModesDto; +}; +export type ActionArgumentOptionsDto = { + readonly addresses?: AddressArgumentsDto; + readonly args?: ArgumentOptionsDto; +}; +export type PendingActionDto = { + readonly type: ActionTypes; + readonly passthrough: string; + readonly args?: { + readonly addresses?: AddressArgumentsDto; + readonly args?: ArgumentOptionsDto; + }; + readonly amount: string | null; +}; +export type ActionArgumentResponseDto = { + readonly enter: ActionArgumentOptionsDto; + readonly exit?: ActionArgumentOptionsDto; +}; +export type YieldBalanceDto = { + readonly groupId: string; + readonly type: BalanceTypes; + readonly amount: string; + readonly date?: string; + readonly pricePerShare: string; + readonly pendingActions: ReadonlyArray; + readonly pendingActionConstraints?: ReadonlyArray; + readonly token: TokenDto; + readonly validatorAddress?: string; + readonly validatorAddresses?: ReadonlyArray; + readonly providerId?: string; + readonly label?: YieldBalanceLabelDto; + readonly feeConfigurationId?: string; + readonly startDate?: string; + readonly startEpoch?: number; + readonly accountAddress?: string; + readonly accountAddresses?: ReadonlyArray; +}; +export type YieldDto = { + readonly id: string; + readonly token: TokenDto; + readonly tokens: ReadonlyArray; + readonly args: ActionArgumentResponseDto; + readonly status: YieldStatusResponseDto; + readonly apy: number; + readonly rewardRate: number; + readonly rewardType: RewardTypes; + readonly metadata: YieldMetadataDto; + readonly validators: ReadonlyArray; + readonly isAvailable: boolean; + readonly feeConfigurations: ReadonlyArray; + readonly allocations?: ReadonlyArray; +}; +export type PositionDto = { + readonly balances: ReadonlyArray; + readonly integrationId: string; +}; +export type YieldBalancesWithIntegrationIdDto = { + readonly balances: ReadonlyArray; + readonly integrationId: string; +}; +// schemas +export type AuthControllerRequestLoginCodeRequestJson = AuthRequestLoginCodeDto; +export type AuthControllerRequestLoginCode200 = AuthRequestLoginCodeResponseDto; +export type AuthControllerVerifyLoginCodeRequestJson = AuthVerifyLoginCodeDto; +export type AuthControllerVerifyLoginCode200 = AuthEmailLoginResponseDto; +export type AuthControllerConfirmEmailRequestJson = AuthConfirmEmailDto; +export type AuthControllerMe200 = UserDto; +export type AuthControllerUpdateRequestJson = AuthUpdateDto; +export type AuthControllerUpdate200 = UserDto; +export type CampaignControllerListParams = { + readonly status?: CampaignStatus; + readonly yieldId?: string; + readonly offset?: number; + readonly limit?: number; +}; +export type CampaignControllerList200 = PaginatedCampaignDto; +export type CampaignControllerCreateRequestJson = + CreateCampaignWithSafeAddressDto; +export type CampaignControllerCreate201 = CampaignDto; +export type CampaignControllerGetById200 = CampaignDto; +export type CampaignControllerUpdateRequestJson = UpdateCampaignDto; +export type CampaignControllerUpdate200 = CampaignDto; +export type CampaignControllerPause200 = CampaignDto; +export type CampaignControllerResume200 = CampaignDto; +export type CampaignControllerEnd200 = CampaignDto; +export type CampaignControllerGetSummary200 = CampaignSummaryDto; +export type CampaignControllerGetLiability200 = CampaignLiabilityDto; +export type CampaignControllerGetBudgetProjectionParams = { + readonly totalBudget?: string; + readonly endTime?: string; +}; +export type CampaignControllerGetBudgetProjection200 = BudgetProjectionDto; +export type CampaignControllerSetUserPayoutEligibilityRequestJson = + UpdateCampaignUserPayoutEligibilityDto; +export type CampaignControllerSetUserPayoutEligibility200 = + CampaignUserPayoutEligibilityDto; +export type CampaignControllerGetUserEntitlement200 = + CampaignUserEntitlementDto; +export type CampaignControllerGetPayoutRunsParams = { + readonly offset?: number; + readonly limit?: number; +}; +export type CampaignControllerGetPayoutRuns200 = PaginatedCampaignPayoutRunDto; +export type CampaignControllerGetPayoutRunDetail200 = + CampaignPayoutRunDetailDto; +export type CampaignControllerGetPayoutAuditParams = { + readonly offset?: number; + readonly limit?: number; +}; +export type CampaignControllerGetPayoutAudit200 = + PaginatedCampaignPayoutAuditDto; +export type CampaignControllerGetWeeklyDistributionParams = { + readonly offset?: number; + readonly limit?: number; +}; +export type CampaignControllerGetWeeklyDistribution200 = + PaginatedWeeklyDistributionDto; +export type CampaignControllerGetEligibleUsersParams = { + readonly offset?: number; + readonly limit?: number; +}; +export type CampaignControllerGetEligibleUsers200 = PaginatedEligibleUserDto; +export type CampaignConfigurationRequestControllerListForProjectParams = { + readonly status?: CampaignConfigurationRequestStatus; + readonly requestType?: CampaignConfigurationRequestType; + readonly offset?: number; + readonly limit?: number; +}; +export type CampaignConfigurationRequestControllerListForProject200 = + PaginatedCampaignConfigurationRequestDto; +export type CampaignConfigurationRequestControllerCreateRequestJson = + CreateCampaignConfigurationRequestDto; +export type CampaignConfigurationRequestControllerCreate201 = + CampaignConfigurationRequestDto; +export type CampaignConfigurationRequestControllerGetById200 = + CampaignConfigurationRequestDto; +export type CampaignConfigurationRequestControllerListForCampaignParams = { + readonly status?: CampaignConfigurationRequestStatus; + readonly requestType?: CampaignConfigurationRequestType; + readonly offset?: number; + readonly limit?: number; +}; +export type CampaignConfigurationRequestControllerListForCampaign200 = + PaginatedCampaignConfigurationRequestDto; +export type CampaignConfigurationRequestControllerAcceptRequestJson = + AcceptCampaignConfigurationRequestDto; +export type CampaignConfigurationRequestControllerAccept200 = + CampaignConfigurationRequestDto; +export type CampaignConfigurationRequestControllerRejectRequestJson = + RejectCampaignConfigurationRequestDto; +export type CampaignConfigurationRequestControllerReject200 = + CampaignConfigurationRequestDto; +export type CampaignConfigurationRequestAdminControllerListParams = { + readonly status?: CampaignConfigurationRequestStatus; + readonly requestType?: CampaignConfigurationRequestType; + readonly projectId?: string; + readonly offset?: number; + readonly limit?: number; +}; +export type CampaignConfigurationRequestAdminControllerList200 = + PaginatedCampaignConfigurationRequestDto; +export type ProgrammaticCampaignControllerListCampaignsParams = { + readonly offset?: number; + readonly limit?: number; + readonly status?: CampaignStatus; + readonly integrationId?: string; + readonly "X-ADMIN-API-KEY": string; +}; +export type ProgrammaticCampaignControllerListCampaigns200 = + PaginatedCampaignDto; +export type ProgrammaticCampaignControllerGetAccrualDetailsParams = { + readonly offset?: number; + readonly limit?: number; + readonly runId?: string; + readonly "X-ADMIN-API-KEY": string; +}; +export type ProgrammaticCampaignControllerGetAccrualDetails200 = + PaginatedHourlyAccrualSummaryDto; +export type ProgrammaticCampaignControllerGetAccrualDetailForHourParams = { + readonly offset?: number; + readonly limit?: number; + readonly "X-ADMIN-API-KEY": string; +}; +export type ProgrammaticCampaignControllerGetAccrualDetailForHour200 = + HourlyAccrualDetailDto; +export type ProgrammaticCampaignControllerGetUserAccrualHistoryParams = { + readonly offset?: number; + readonly limit?: number; + readonly "X-ADMIN-API-KEY": string; +}; +export type ProgrammaticCampaignControllerGetUserAccrualHistory200 = + PaginatedUserHourlyAccrualHistoryDto; +export type ProgrammaticCampaignControllerGetPayoutRunsParams = { + readonly offset?: number; + readonly limit?: number; + readonly "X-ADMIN-API-KEY": string; +}; +export type ProgrammaticCampaignControllerGetPayoutRuns200 = + PaginatedProgrammaticPayoutRunDto; +export type ProgrammaticCampaignControllerGetPayoutRunDetailParams = { + readonly offset?: number; + readonly limit?: number; + readonly "X-ADMIN-API-KEY": string; +}; +export type ProgrammaticCampaignControllerGetPayoutRunDetail200 = + ProgrammaticPayoutRunDetailDto; +export type ProgrammaticCampaignControllerGetPayoutBatchDetailParams = { + readonly offset?: number; + readonly limit?: number; + readonly "X-ADMIN-API-KEY": string; +}; +export type ProgrammaticCampaignControllerGetPayoutBatchDetail200 = + ProgrammaticPayoutBatchDetailDto; +export type ProgrammaticCampaignControllerGetCampaignSafeBalanceParams = { + readonly "X-ADMIN-API-KEY": string; +}; +export type ProgrammaticCampaignControllerGetCampaignSafeBalance200 = + CampaignSafeBalanceDto; +export type ProgrammaticCampaignControllerGetCampaignPayoutEligibilitySummaryParams = + { readonly "X-ADMIN-API-KEY": string }; +export type ProgrammaticCampaignControllerGetCampaignPayoutEligibilitySummary200 = + CampaignPayoutEligibilitySummaryDto; +export type ProgrammaticCampaignControllerGetCampaignBalancesParams = { + readonly offset?: number; + readonly limit?: number; + readonly "X-ADMIN-API-KEY": string; +}; +export type ProgrammaticCampaignControllerGetCampaignBalances200 = + CampaignBalancesResponseDto; +export type MasterBannedRegionControllerListParams = { + readonly limit?: number; + readonly page?: number; +}; +export type MasterBannedRegionControllerList200 = { + readonly data: ReadonlyArray<{ + readonly id: string; + readonly country: string; + readonly region: string | null; + readonly tags: ReadonlyArray< + "Crypto Ban" | "OFAC" | "OFSI" | "Pending Litigation" | "Staking Ban" + >; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type MasterBannedRegionControllerCreateRequestJson = + ReadonlyArray; +export type MasterBannedRegionControllerCreate200 = + ReadonlyArray; +export type MasterBannedRegionControllerDeleteRequestJson = + DeleteMasterBannedRegionsDto; +export type ProjectBannedRegionControllerListParams = { + readonly limit?: number; + readonly page?: number; +}; +export type ProjectBannedRegionControllerList200 = { + readonly data: ReadonlyArray<{ + readonly id: string; + readonly country: string; + readonly region: string | null; + readonly updatedAt: string; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type ProjectBannedRegionControllerCreateRequestJson = + ReadonlyArray; +export type ProjectBannedRegionControllerCreate200 = + ReadonlyArray; +export type ProjectBannedRegionControllerDeleteRequestJson = + DeleteBannedRegionsDto; +export type MasterBannedYieldControllerListParams = { + readonly limit?: number; + readonly page?: number; +}; +export type MasterBannedYieldControllerList200 = { + readonly data: ReadonlyArray<{ + readonly yieldId: string; + readonly country: string; + readonly region: string | null; + readonly tags: ReadonlyArray< + "Crypto Ban" | "OFAC" | "OFSI" | "Pending Litigation" | "Staking Ban" + >; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type TeamsControllerFindAllParams = { + readonly sort?: "createdAtAsc" | "createdAtDesc"; + readonly limit?: number; + readonly page?: number; + readonly deleted?: boolean; + readonly activated?: boolean; +}; +export type TeamsControllerFindAll200 = { + readonly data: ReadonlyArray<{ + readonly id: string; + readonly activated: boolean; + readonly privilegedUsers: ReadonlyArray; + readonly adminUsers?: ReadonlyArray; + readonly category: string; + readonly deletedAt: string; + readonly createdAt: string; + readonly contactDetails: {}; + readonly name: string; + readonly serviceConditionsAcceptedAt: string; + readonly oavEnabled: boolean; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type TeamsControllerCreateRequestJson = CreateTeamDto; +export type TeamsControllerCreate201 = Team; +export type TeamsControllerGetById200 = Team; +export type TeamsControllerUpdateRequestJson = UpdateTeamDto; +export type TeamsControllerUpdate200 = Team; +export type ProjectsControllerGet200 = ReadonlyArray; +export type ProjectsControllerCreateRequestJson = CreateProjectDto; +export type ProjectsControllerCreate200 = Project; +export type ProjectsControllerUpdateRequestJson = UpdateProjectDto; +export type ProjectsControllerUpdate200 = Project; +export type ProgrammaticProjectsControllerGetParams = { + readonly "X-ADMIN-API-KEY"?: string; +}; +export type ProgrammaticProjectsControllerGet200 = ReadonlyArray; +export type ProgrammaticProjectsControllerCreateParams = { + readonly "X-ADMIN-API-KEY"?: string; +}; +export type ProgrammaticProjectsControllerCreateRequestJson = CreateProjectDto; +export type ProgrammaticProjectsControllerCreate200 = Project; +export type ProgrammaticProjectsControllerDeleteParams = { + readonly "X-ADMIN-API-KEY"?: string; +}; +export type ProgrammaticProjectsControllerUpdateParams = { + readonly "X-ADMIN-API-KEY"?: string; +}; +export type ProgrammaticProjectsControllerUpdateRequestJson = UpdateProjectDto; +export type ProgrammaticProjectsControllerUpdate200 = Project; +export type KeysControllerGet200 = ReadonlyArray; +export type KeysControllerCreateRequestJson = CreateKeyDto; +export type KeysControllerCreate200 = Key; +export type KeysControllerUpdateRequestJson = UpdateKeyDto; +export type KeysControllerUpdate200 = Key; +export type ProgrammaticKeysControllerGetParams = { + readonly "X-ADMIN-API-KEY"?: string; +}; +export type ProgrammaticKeysControllerGet200 = ReadonlyArray; +export type ProgrammaticKeysControllerCreateParams = { + readonly "X-ADMIN-API-KEY"?: string; +}; +export type ProgrammaticKeysControllerCreateRequestJson = CreateKeyDto; +export type ProgrammaticKeysControllerCreate200 = Key; +export type ProgrammaticKeysControllerDeleteParams = { + readonly "X-ADMIN-API-KEY"?: string; +}; +export type ProgrammaticKeysControllerUpdateParams = { + readonly "X-ADMIN-API-KEY"?: string; +}; +export type ProgrammaticKeysControllerUpdateRequestJson = UpdateKeyDto; +export type ProgrammaticKeysControllerUpdate200 = Key; +export type HealthControllerHealthV2Params = { readonly "X-API-KEY"?: string }; +export type HealthControllerHealthV2200 = HealthStatusDto; +export type HealthControllerHealthV2400 = StakeKitErrorDto; +export type HealthControllerHealthV2401 = StakeKitErrorDto; +export type HealthControllerHealthV2404 = StakeKitErrorDto; +export type HealthControllerHealthV2408 = StakeKitErrorDto; +export type HealthControllerHealthV2410 = StakeKitErrorDto; +export type HealthControllerHealthV2412 = StakeKitErrorDto; +export type HealthControllerHealthV2429 = StakeKitErrorDto; +export type HealthControllerHealthV2500 = StakeKitErrorDto; +export type HealthControllerHealthV2503 = StakeKitErrorDto; +export type PayoutAddressesControllerGet200 = { + readonly data: ReadonlyArray<{ + readonly address: string; + readonly id: string; + readonly lastPayout: string; + readonly network: string; + readonly projectId: string; + readonly scope: "trade" | "yield" | "all"; + readonly providerId?: string | null; + readonly note?: string; + readonly addressInvalid: boolean; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type PayoutAddressesControllerCreateRequestJson = CreatePayoutAddressDto; +export type PayoutAddressesControllerCreate200 = PayoutAddressDto; +export type PayoutAddressesControllerUpdateRequestJson = UpdatePayoutAddressDto; +export type PayoutAddressesControllerUpdate200 = PayoutAddressDto; +export type NetworkAddressReferralControllerGetByAddressParams = { + readonly "X-API-KEY"?: string; +}; +export type NetworkAddressReferralControllerGetByAddress200 = ReferralDto; +export type NetworkAddressReferralControllerCreateParams = { + readonly "X-API-KEY"?: string; +}; +export type NetworkAddressReferralControllerCreate200 = ReferralDto; +export type ReferralControllerGetByCodeParams = { + readonly "X-API-KEY"?: string; +}; +export type ReferralControllerGetByCode200 = ReferralDto; +export type ReportEntryControllerListParams = { + readonly limit?: number; + readonly page?: number; + readonly walletAddress?: string; + readonly validatorAddress?: string; + readonly type?: string; + readonly status?: string; + readonly sort?: "createdAtAsc" | "createdAtDesc"; + readonly projectId?: string; + readonly integrationId?: string; +}; +export type ReportEntryControllerList200 = { + readonly data: ReadonlyArray<{ + readonly address: AddressesDto; + readonly action: ActionWithLivePriceDto; + readonly metadata: YieldMetadataDto; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type ReportProjectControllerListParams = { + readonly from?: string; + readonly to?: string; + readonly limit?: number; + readonly page?: number; + readonly walletAddress?: string; + readonly validatorAddress?: string; + readonly type?: string; + readonly sort?: "createdAtAsc" | "createdAtDesc"; + readonly integrationId?: string; + readonly "X-API-KEY": string; +}; +export type ReportProjectControllerList200 = { + readonly data: ReadonlyArray<{ + readonly address: AddressesDto; + readonly action: ActionDto; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type ReportProjectControllerGetRewardsParams = { + readonly from?: string; + readonly to?: string; + readonly limit?: number; + readonly page?: number; + readonly "X-API-KEY": string; +}; +export type ReportProjectControllerGetRewards200 = { + readonly data: ReadonlyArray<{ + readonly timestamp: string; + readonly address: AddressesDto; + readonly amountWei: string; + readonly amount: string; + readonly validatorAddresses?: ReadonlyArray; + readonly blockNumber: number; + readonly transactionId?: string | null; + readonly token: TokenDto; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type ReportProjectControllerGetDailyRevenuesParams = { + readonly from: string; + readonly to: string; + readonly integrationId?: string; + readonly limit?: number; + readonly page?: number; + readonly "X-API-KEY": string; +}; +export type ReportProjectControllerGetDailyRevenues200 = { + readonly data: ReadonlyArray<{ + readonly date: string; + readonly integrationId: string; + readonly validatorAddress: string | null; + readonly totalRevenueAmountWei: string; + readonly token: { + readonly name: string; + readonly network: Networks; + readonly symbol: string; + readonly decimals: number; + readonly address?: string; + readonly coinGeckoId?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly feeConfigurationId?: string; + } | null; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type ReportProjectControllerGetDailyPerformanceParams = { + readonly from: string; + readonly to: string; + readonly integrationId?: string; + readonly limit?: number; + readonly page?: number; + readonly "X-API-KEY": string; +}; +export type ReportProjectControllerGetDailyPerformance200 = { + readonly data: ReadonlyArray<{ + readonly date: string; + readonly integrationId: string; + readonly totalRevenueAmountWei: string; + readonly totalEnteredAmountWei: string | null; + readonly totalExitedAmountWei: string | null; + readonly totalTvlAmountWei: string | null; + readonly token: { + readonly name: string; + readonly network: Networks; + readonly symbol: string; + readonly decimals: number; + readonly address?: string; + readonly coinGeckoId?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly feeConfigurationId?: string; + } | null; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type ProgrammaticReportEntryControllerListParams = { + readonly limit?: number; + readonly page?: number; + readonly walletAddress?: string; + readonly validatorAddress?: string; + readonly type?: string; + readonly status?: string; + readonly sort?: "createdAtAsc" | "createdAtDesc"; + readonly projectId?: string; + readonly integrationId?: string; + readonly "X-ADMIN-API-KEY": string; +}; +export type ProgrammaticReportEntryControllerList200 = { + readonly data: ReadonlyArray<{ + readonly address: AddressesDto; + readonly action: ActionWithLivePriceDto; + readonly metadata: YieldMetadataDto; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type ProgrammaticReportingControllerGetDailyRevenuesParams = { + readonly date: string; + readonly limit?: number; + readonly page?: number; + readonly providerId?: string; + readonly integrationId?: string; + readonly "X-ADMIN-API-KEY": string; +}; +export type ProgrammaticReportingControllerGetDailyRevenues200 = { + readonly data: ReadonlyArray<{ + readonly date: string; + readonly integrationId: string; + readonly validatorAddress: string | null; + readonly totalRevenueAmountWei: string; + readonly totalRevenueAmountUsd: string; + readonly integrationCommission: number | null; + readonly revShare: number | null; + readonly projectShare: number | null; + readonly performanceFee: number | null; + readonly token: { + readonly name: string; + readonly network: Networks; + readonly symbol: string; + readonly decimals: number; + readonly address?: string; + readonly coinGeckoId?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly feeConfigurationId?: string; + } | null; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type ProgrammaticReportingControllerGetDailyRevenueAggregatesParams = { + readonly from: string; + readonly to: string; + readonly providerId?: string; + readonly "X-ADMIN-API-KEY": string; +}; +export type ProgrammaticReportingControllerGetDailyRevenueAggregates200 = + ReadonlyArray; +export type ProgrammaticReportingControllerGetDailyPerformanceParams = { + readonly date: string; + readonly limit?: number; + readonly page?: number; + readonly providerId?: string; + readonly integrationId?: string; + readonly "X-ADMIN-API-KEY": string; +}; +export type ProgrammaticReportingControllerGetDailyPerformance200 = { + readonly data: ReadonlyArray<{ + readonly date: string; + readonly integrationId: string; + readonly totalEnteredAmountWei: string; + readonly totalExitedAmountWei: string; + readonly totalTvlAmountWei: string; + readonly token: { + readonly name: string; + readonly network: Networks; + readonly symbol: string; + readonly decimals: number; + readonly address?: string; + readonly coinGeckoId?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly feeConfigurationId?: string; + } | null; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type ProgrammaticReportingControllerGetDailyPerformanceAggregatesParams = + { + readonly from: string; + readonly to: string; + readonly providerId?: string; + readonly "X-ADMIN-API-KEY": string; + }; +export type ProgrammaticReportingControllerGetDailyPerformanceAggregates200 = + ReadonlyArray; +export type ProgrammaticReportingControllerGetPerpActionsParams = { + readonly providerId?: string; + readonly address?: string; + readonly status?: ActionStatus; + readonly type?: PerpActionTypes; + readonly marketId?: string; + readonly limit?: number; + readonly page?: number; + readonly "X-ADMIN-API-KEY": string; +}; +export type ProgrammaticReportingControllerGetPerpActions200 = { + readonly data: ReadonlyArray<{ + readonly id: string; + readonly type: + | "open" + | "close" + | "updateLeverage" + | "stopLoss" + | "takeProfit" + | "cancelOrder" + | "editOrder" + | "fund" + | "withdraw" + | "approveAgent" + | "approveBuilderFee" + | "updateMargin" + | "setTpAndSl"; + readonly status: + | "CANCELED" + | "CREATED" + | "WAITING_FOR_NEXT" + | "PROCESSING" + | "FAILED" + | "SUCCESS" + | "STALE"; + readonly providerId: string; + readonly address: string; + readonly args: {}; + readonly summary: {} | null; + readonly createdAt: string; + readonly completedAt: string; + readonly transactions: ReadonlyArray; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type UsersMeControllerFindMe200 = UserDto; +export type UsersMeControllerPatchMeRequestJson = UpdateUserMeDto; +export type UsersMeControllerPatchMe200 = UserDto; +export type UsersMeControllerConfirmMe200 = UserDto; +export type UsersControllerFindAllParams = { + readonly limit?: number; + readonly page?: number; +}; +export type UsersControllerFindAll200 = { + readonly data: ReadonlyArray<{ + readonly email: string; + readonly emailVerified: boolean; + readonly id: string; + readonly lastAccessedAt: string; + readonly name: string | null; + readonly surname: string | null; + readonly department: string | null; + readonly role: Role; + readonly serviceConditionsAcceptedAt: string; + readonly teamId: string; + readonly isMfaEnabled: boolean; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type UsersControllerCreateRequestJson = CreateUserDto; +export type UsersControllerCreate201 = UserDto; +export type UsersControllerFindOne200 = UserDto; +export type UsersControllerUpdateRequestJson = UpdateUserDto; +export type UsersControllerUpdate200 = UserDto; +export type ActionControllerGetActionParams = { readonly "X-API-KEY"?: string }; +export type ActionControllerGetAction200 = ActionDto; +export type ActionControllerGetAction400 = StakeKitErrorDto; +export type ActionControllerGetAction401 = StakeKitErrorDto; +export type ActionControllerGetAction404 = StakeKitErrorDto; +export type ActionControllerGetAction408 = StakeKitErrorDto; +export type ActionControllerGetAction410 = StakeKitErrorDto; +export type ActionControllerGetAction412 = StakeKitErrorDto; +export type ActionControllerGetAction429 = StakeKitErrorDto; +export type ActionControllerGetAction500 = StakeKitErrorDto; +export type ActionControllerGetAction503 = StakeKitErrorDto; +export type ActionControllerGetGasEstimateParams = { + readonly "X-API-KEY"?: string; +}; +export type ActionControllerGetGasEstimate200 = ActionGasEstimateDto; +export type ActionControllerGetGasEstimate400 = StakeKitErrorDto; +export type ActionControllerGetGasEstimate401 = StakeKitErrorDto; +export type ActionControllerGetGasEstimate404 = StakeKitErrorDto; +export type ActionControllerGetGasEstimate408 = StakeKitErrorDto; +export type ActionControllerGetGasEstimate410 = StakeKitErrorDto; +export type ActionControllerGetGasEstimate412 = StakeKitErrorDto; +export type ActionControllerGetGasEstimate429 = StakeKitErrorDto; +export type ActionControllerGetGasEstimate500 = StakeKitErrorDto; +export type ActionControllerGetGasEstimate503 = StakeKitErrorDto; +export type ActionControllerEnterParams = { readonly "X-API-KEY"?: string }; +export type ActionControllerEnterRequestJson = ActionRequestDto; +export type ActionControllerEnter201 = ActionDto; +export type ActionControllerEnter400 = StakeKitErrorDto; +export type ActionControllerEnter401 = StakeKitErrorDto; +export type ActionControllerEnter403 = GeolocationError; +export type ActionControllerEnter404 = StakeKitErrorDto; +export type ActionControllerEnter408 = StakeKitErrorDto; +export type ActionControllerEnter410 = StakeKitErrorDto; +export type ActionControllerEnter412 = StakeKitErrorDto; +export type ActionControllerEnter429 = StakeKitErrorDto; +export type ActionControllerEnter500 = StakeKitErrorDto; +export type ActionControllerEnter503 = StakeKitErrorDto; +export type ActionControllerExitParams = { readonly "X-API-KEY"?: string }; +export type ActionControllerExitRequestJson = ActionRequestDto; +export type ActionControllerExit201 = ActionDto; +export type ActionControllerExit400 = StakeKitErrorDto; +export type ActionControllerExit401 = StakeKitErrorDto; +export type ActionControllerExit403 = GeolocationError; +export type ActionControllerExit404 = StakeKitErrorDto; +export type ActionControllerExit408 = StakeKitErrorDto; +export type ActionControllerExit410 = StakeKitErrorDto; +export type ActionControllerExit412 = StakeKitErrorDto; +export type ActionControllerExit429 = StakeKitErrorDto; +export type ActionControllerExit500 = StakeKitErrorDto; +export type ActionControllerExit503 = StakeKitErrorDto; +export type ActionControllerPendingParams = { readonly "X-API-KEY"?: string }; +export type ActionControllerPendingRequestJson = PendingActionRequestDto; +export type ActionControllerPending201 = ActionDto; +export type ActionControllerPending400 = StakeKitErrorDto; +export type ActionControllerPending401 = StakeKitErrorDto; +export type ActionControllerPending403 = GeolocationError; +export type ActionControllerPending404 = StakeKitErrorDto; +export type ActionControllerPending408 = StakeKitErrorDto; +export type ActionControllerPending410 = StakeKitErrorDto; +export type ActionControllerPending412 = StakeKitErrorDto; +export type ActionControllerPending429 = StakeKitErrorDto; +export type ActionControllerPending500 = StakeKitErrorDto; +export type ActionControllerPending503 = StakeKitErrorDto; +export type ActionControllerEnterGasEstimationParams = { + readonly "X-API-KEY"?: string; +}; +export type ActionControllerEnterGasEstimationRequestJson = + ActionGasEstimateRequestDto; +export type ActionControllerEnterGasEstimation201 = ActionGasEstimateDto; +export type ActionControllerEnterGasEstimation400 = StakeKitErrorDto; +export type ActionControllerEnterGasEstimation401 = StakeKitErrorDto; +export type ActionControllerEnterGasEstimation404 = StakeKitErrorDto; +export type ActionControllerEnterGasEstimation408 = StakeKitErrorDto; +export type ActionControllerEnterGasEstimation410 = StakeKitErrorDto; +export type ActionControllerEnterGasEstimation412 = StakeKitErrorDto; +export type ActionControllerEnterGasEstimation429 = StakeKitErrorDto; +export type ActionControllerEnterGasEstimation500 = StakeKitErrorDto; +export type ActionControllerEnterGasEstimation503 = StakeKitErrorDto; +export type ActionControllerExitGasEstimateParams = { + readonly "X-API-KEY"?: string; +}; +export type ActionControllerExitGasEstimateRequestJson = + ActionGasEstimateRequestDto; +export type ActionControllerExitGasEstimate201 = ActionGasEstimateDto; +export type ActionControllerExitGasEstimate400 = StakeKitErrorDto; +export type ActionControllerExitGasEstimate401 = StakeKitErrorDto; +export type ActionControllerExitGasEstimate404 = StakeKitErrorDto; +export type ActionControllerExitGasEstimate408 = StakeKitErrorDto; +export type ActionControllerExitGasEstimate410 = StakeKitErrorDto; +export type ActionControllerExitGasEstimate412 = StakeKitErrorDto; +export type ActionControllerExitGasEstimate429 = StakeKitErrorDto; +export type ActionControllerExitGasEstimate500 = StakeKitErrorDto; +export type ActionControllerExitGasEstimate503 = StakeKitErrorDto; +export type ActionControllerListParams = { + readonly walletAddress: string; + readonly statuses?: ReadonlyArray< + | "CANCELED" + | "CREATED" + | "WAITING_FOR_NEXT" + | "PROCESSING" + | "FAILED" + | "SUCCESS" + | "STALE" + >; + readonly status?: + | "CANCELED" + | "CREATED" + | "WAITING_FOR_NEXT" + | "PROCESSING" + | "FAILED" + | "SUCCESS" + | "STALE"; + readonly type?: + | "STAKE" + | "UNSTAKE" + | "CLAIM_REWARDS" + | "AUTO_SWEEP_UNSTAKE_REWARDS" + | "AUTO_SWEEP_WITHDRAW_REWARDS" + | "RESTAKE_REWARDS" + | "WITHDRAW" + | "WITHDRAW_ALL" + | "RESTAKE" + | "CLAIM_UNSTAKED" + | "UNLOCK_LOCKED" + | "STAKE_LOCKED" + | "VOTE" + | "REVOKE" + | "VOTE_LOCKED" + | "REVOTE" + | "REBOND" + | "MIGRATE" + | "VERIFY_WITHDRAW_CREDENTIALS" + | "DELEGATE"; + readonly sort?: "createdAtAsc" | "createdAtDesc"; + readonly network?: Networks; + readonly limit?: number; + readonly page?: number; + readonly "X-API-KEY"?: string; +}; +export type ActionControllerList200 = { + readonly data: ReadonlyArray<{ + readonly id: string; + readonly integrationId: string; + readonly status: ActionStatus; + readonly type: ActionTypes; + readonly currentStepIndex: number; + readonly amount: string | null; + readonly USDAmount: string | null; + readonly tokenId: string | null; + readonly validatorAddress: string | null; + readonly validatorAddresses: ReadonlyArray; + readonly transactions: ReadonlyArray; + readonly createdAt: string; + readonly completedAt: string; + readonly inputToken?: TokenDto; + readonly addresses: AddressesDto; + readonly accountAddresses?: ReadonlyArray; + readonly projectId: string | null; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type ActionControllerList400 = StakeKitErrorDto; +export type ActionControllerList401 = StakeKitErrorDto; +export type ActionControllerList404 = StakeKitErrorDto; +export type ActionControllerList408 = StakeKitErrorDto; +export type ActionControllerList410 = StakeKitErrorDto; +export type ActionControllerList412 = StakeKitErrorDto; +export type ActionControllerList429 = StakeKitErrorDto; +export type ActionControllerList500 = StakeKitErrorDto; +export type ActionControllerList503 = StakeKitErrorDto; +export type ActionControllerPendingGasEstimateParams = { + readonly "X-API-KEY"?: string; +}; +export type ActionControllerPendingGasEstimateRequestJson = + PendingActionGasEstimateRequestDto; +export type ActionControllerPendingGasEstimate201 = ActionGasEstimateDto; +export type ActionControllerPendingGasEstimate400 = StakeKitErrorDto; +export type ActionControllerPendingGasEstimate401 = StakeKitErrorDto; +export type ActionControllerPendingGasEstimate404 = StakeKitErrorDto; +export type ActionControllerPendingGasEstimate408 = StakeKitErrorDto; +export type ActionControllerPendingGasEstimate410 = StakeKitErrorDto; +export type ActionControllerPendingGasEstimate412 = StakeKitErrorDto; +export type ActionControllerPendingGasEstimate429 = StakeKitErrorDto; +export type ActionControllerPendingGasEstimate500 = StakeKitErrorDto; +export type ActionControllerPendingGasEstimate503 = StakeKitErrorDto; +export type NetworkAddressActionV2ControllerCreateParams = { + readonly "X-API-KEY"?: string; +}; +export type NetworkAddressActionV2ControllerCreate200 = ActionDto; +export type NetworkAddressActionV2ControllerCreate403 = GeolocationError; +export type NetworkAddressActionV2ControllerGetByIdParams = { + readonly "X-API-KEY"?: string; +}; +export type NetworkAddressActionV2ControllerGetById200 = ActionDto; +export type NetworkGasControllerV2GetGasPricesParams = { + readonly "X-API-KEY"?: string; +}; +export type NetworkGasControllerV2GetGasPrices200 = GasForNetworkResponseDto; +export type TransactionControllerGetTransactionParams = { + readonly "X-API-KEY"?: string; +}; +export type TransactionControllerGetTransaction200 = TransactionDto; +export type TransactionControllerGetTransaction400 = StakeKitErrorDto; +export type TransactionControllerGetTransaction401 = StakeKitErrorDto; +export type TransactionControllerGetTransaction404 = StakeKitErrorDto; +export type TransactionControllerGetTransaction408 = StakeKitErrorDto; +export type TransactionControllerGetTransaction410 = StakeKitErrorDto; +export type TransactionControllerGetTransaction412 = StakeKitErrorDto; +export type TransactionControllerGetTransaction429 = StakeKitErrorDto; +export type TransactionControllerGetTransaction500 = StakeKitErrorDto; +export type TransactionControllerGetTransaction503 = StakeKitErrorDto; +export type TransactionControllerConstructParams = { + readonly "X-API-KEY"?: string; +}; +export type TransactionControllerConstructRequestJson = + ConstructTransactionRequestDto; +export type TransactionControllerConstruct200 = TransactionDto; +export type TransactionControllerConstruct400 = StakeKitErrorDto; +export type TransactionControllerConstruct401 = StakeKitErrorDto; +export type TransactionControllerConstruct403 = GeolocationError; +export type TransactionControllerConstruct404 = StakeKitErrorDto; +export type TransactionControllerConstruct408 = StakeKitErrorDto; +export type TransactionControllerConstruct410 = StakeKitErrorDto; +export type TransactionControllerConstruct412 = StakeKitErrorDto; +export type TransactionControllerConstruct429 = StakeKitErrorDto; +export type TransactionControllerConstruct500 = StakeKitErrorDto; +export type TransactionControllerConstruct503 = StakeKitErrorDto; +export type TransactionControllerSubmitParams = { + readonly "X-API-KEY"?: string; +}; +export type TransactionControllerSubmitRequestJson = SubmitRequestDto; +export type TransactionControllerSubmit201 = SubmitResponseDto; +export type TransactionControllerSubmit400 = StakeKitErrorDto; +export type TransactionControllerSubmit401 = StakeKitErrorDto; +export type TransactionControllerSubmit403 = GeolocationError; +export type TransactionControllerSubmit404 = StakeKitErrorDto; +export type TransactionControllerSubmit408 = StakeKitErrorDto; +export type TransactionControllerSubmit410 = StakeKitErrorDto; +export type TransactionControllerSubmit412 = StakeKitErrorDto; +export type TransactionControllerSubmit429 = StakeKitErrorDto; +export type TransactionControllerSubmit500 = StakeKitErrorDto; +export type TransactionControllerSubmit503 = StakeKitErrorDto; +export type TransactionControllerSubmitHashParams = { + readonly "X-API-KEY"?: string; +}; +export type TransactionControllerSubmitHashRequestJson = SubmitHashRequestDto; +export type TransactionControllerSubmitHash400 = StakeKitErrorDto; +export type TransactionControllerSubmitHash401 = StakeKitErrorDto; +export type TransactionControllerSubmitHash403 = GeolocationError; +export type TransactionControllerSubmitHash404 = StakeKitErrorDto; +export type TransactionControllerSubmitHash408 = StakeKitErrorDto; +export type TransactionControllerSubmitHash410 = StakeKitErrorDto; +export type TransactionControllerSubmitHash412 = StakeKitErrorDto; +export type TransactionControllerSubmitHash429 = StakeKitErrorDto; +export type TransactionControllerSubmitHash500 = StakeKitErrorDto; +export type TransactionControllerSubmitHash503 = StakeKitErrorDto; +export type TransactionControllerGetTransactionStatusFromIdParams = { + readonly "X-API-KEY"?: string; +}; +export type TransactionControllerGetTransactionStatusFromId200 = + TransactionStatusResponseDto; +export type TransactionControllerGetTransactionStatusFromId400 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionStatusFromId401 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionStatusFromId404 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionStatusFromId408 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionStatusFromId410 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionStatusFromId412 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionStatusFromId429 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionStatusFromId500 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionStatusFromId503 = + StakeKitErrorDto; +export type TransactionControllerGetGasForNetworkParams = { + readonly "X-API-KEY"?: string; +}; +export type TransactionControllerGetGasForNetwork200 = GasForNetworkResponseDto; +export type TransactionControllerGetGasForNetwork400 = StakeKitErrorDto; +export type TransactionControllerGetGasForNetwork401 = StakeKitErrorDto; +export type TransactionControllerGetGasForNetwork404 = StakeKitErrorDto; +export type TransactionControllerGetGasForNetwork408 = StakeKitErrorDto; +export type TransactionControllerGetGasForNetwork410 = StakeKitErrorDto; +export type TransactionControllerGetGasForNetwork412 = StakeKitErrorDto; +export type TransactionControllerGetGasForNetwork429 = StakeKitErrorDto; +export type TransactionControllerGetGasForNetwork500 = StakeKitErrorDto; +export type TransactionControllerGetGasForNetwork503 = StakeKitErrorDto; +export type TransactionControllerGetTransactionStatusByNetworkAndHashParams = { + readonly "X-API-KEY"?: string; +}; +export type TransactionControllerGetTransactionStatusByNetworkAndHash200 = + TransactionStatusResponseDto; +export type TransactionControllerGetTransactionStatusByNetworkAndHash400 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionStatusByNetworkAndHash401 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionStatusByNetworkAndHash404 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionStatusByNetworkAndHash408 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionStatusByNetworkAndHash410 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionStatusByNetworkAndHash412 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionStatusByNetworkAndHash429 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionStatusByNetworkAndHash500 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionStatusByNetworkAndHash503 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionVerificationMessageForNetworkParams = + { readonly "X-API-KEY"?: string }; +export type TransactionControllerGetTransactionVerificationMessageForNetworkRequestJson = + TransactionVerificationMessageRequestDto; +export type TransactionControllerGetTransactionVerificationMessageForNetwork201 = + TransactionVerificationMessageDto; +export type TransactionControllerGetTransactionVerificationMessageForNetwork400 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionVerificationMessageForNetwork401 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionVerificationMessageForNetwork403 = + GeolocationError; +export type TransactionControllerGetTransactionVerificationMessageForNetwork404 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionVerificationMessageForNetwork408 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionVerificationMessageForNetwork410 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionVerificationMessageForNetwork412 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionVerificationMessageForNetwork429 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionVerificationMessageForNetwork500 = + StakeKitErrorDto; +export type TransactionControllerGetTransactionVerificationMessageForNetwork503 = + StakeKitErrorDto; +export type NetworkAddressesTokenV2ControllerGetTokenBalancesParams = { + readonly "X-API-KEY"?: string; +}; +export type NetworkAddressesTokenV2ControllerGetTokenBalances200 = + ReadonlyArray; +export type NetworkAddressesTokenV2ControllerGetTokenBalances400 = + StakeKitErrorDto; +export type NetworkAddressesTokenV2ControllerGetTokenBalances401 = + StakeKitErrorDto; +export type NetworkAddressesTokenV2ControllerGetTokenBalances404 = + StakeKitErrorDto; +export type NetworkAddressesTokenV2ControllerGetTokenBalances408 = + StakeKitErrorDto; +export type NetworkAddressesTokenV2ControllerGetTokenBalances410 = + StakeKitErrorDto; +export type NetworkAddressesTokenV2ControllerGetTokenBalances412 = + StakeKitErrorDto; +export type NetworkAddressesTokenV2ControllerGetTokenBalances429 = + StakeKitErrorDto; +export type NetworkAddressesTokenV2ControllerGetTokenBalances500 = + StakeKitErrorDto; +export type NetworkAddressesTokenV2ControllerGetTokenBalances503 = + StakeKitErrorDto; +export type NetworkTokensV2ControllerGetTokensParams = { + readonly enabledYieldsOnly?: boolean; + readonly "X-API-KEY"?: string; +}; +export type NetworkTokensV2ControllerGetTokens200 = + ReadonlyArray; +export type NetworkTokensV2ControllerGetTokens400 = StakeKitErrorDto; +export type NetworkTokensV2ControllerGetTokens401 = StakeKitErrorDto; +export type NetworkTokensV2ControllerGetTokens404 = StakeKitErrorDto; +export type NetworkTokensV2ControllerGetTokens408 = StakeKitErrorDto; +export type NetworkTokensV2ControllerGetTokens410 = StakeKitErrorDto; +export type NetworkTokensV2ControllerGetTokens412 = StakeKitErrorDto; +export type NetworkTokensV2ControllerGetTokens429 = StakeKitErrorDto; +export type NetworkTokensV2ControllerGetTokens500 = StakeKitErrorDto; +export type NetworkTokensV2ControllerGetTokens503 = StakeKitErrorDto; +export type TokenControllerGetTokensParams = { + readonly enabledYieldsOnly?: boolean; + readonly network?: Networks; + readonly "X-API-KEY"?: string; +}; +export type TokenControllerGetTokens200 = + ReadonlyArray; +export type TokenControllerGetTokens400 = StakeKitErrorDto; +export type TokenControllerGetTokens401 = StakeKitErrorDto; +export type TokenControllerGetTokens404 = StakeKitErrorDto; +export type TokenControllerGetTokens408 = StakeKitErrorDto; +export type TokenControllerGetTokens410 = StakeKitErrorDto; +export type TokenControllerGetTokens412 = StakeKitErrorDto; +export type TokenControllerGetTokens429 = StakeKitErrorDto; +export type TokenControllerGetTokens500 = StakeKitErrorDto; +export type TokenControllerGetTokens503 = StakeKitErrorDto; +export type TokenControllerGetTokenPricesParams = { + readonly "X-API-KEY"?: string; +}; +export type TokenControllerGetTokenPricesRequestJson = PriceRequestDto; +export type TokenControllerGetTokenPrices200 = PriceResponseDto; +export type TokenControllerGetTokenPrices400 = StakeKitErrorDto; +export type TokenControllerGetTokenPrices401 = StakeKitErrorDto; +export type TokenControllerGetTokenPrices404 = StakeKitErrorDto; +export type TokenControllerGetTokenPrices408 = StakeKitErrorDto; +export type TokenControllerGetTokenPrices410 = StakeKitErrorDto; +export type TokenControllerGetTokenPrices412 = StakeKitErrorDto; +export type TokenControllerGetTokenPrices429 = StakeKitErrorDto; +export type TokenControllerGetTokenPrices500 = StakeKitErrorDto; +export type TokenControllerGetTokenPrices503 = StakeKitErrorDto; +export type TokenControllerGetTokenBalancesParams = { + readonly "X-API-KEY"?: string; +}; +export type TokenControllerGetTokenBalancesRequestJson = BalancesRequestDto; +export type TokenControllerGetTokenBalances200 = + ReadonlyArray; +export type TokenControllerGetTokenBalances400 = StakeKitErrorDto; +export type TokenControllerGetTokenBalances401 = StakeKitErrorDto; +export type TokenControllerGetTokenBalances404 = StakeKitErrorDto; +export type TokenControllerGetTokenBalances408 = StakeKitErrorDto; +export type TokenControllerGetTokenBalances410 = StakeKitErrorDto; +export type TokenControllerGetTokenBalances412 = StakeKitErrorDto; +export type TokenControllerGetTokenBalances429 = StakeKitErrorDto; +export type TokenControllerGetTokenBalances500 = StakeKitErrorDto; +export type TokenControllerGetTokenBalances503 = StakeKitErrorDto; +export type TokenControllerTokenBalancesScanParams = { + readonly "X-API-KEY"?: string; +}; +export type TokenControllerTokenBalancesScanRequestJson = TokenBalanceScanDto; +export type TokenControllerTokenBalancesScan200 = + ReadonlyArray; +export type TokenControllerTokenBalancesScan400 = StakeKitErrorDto; +export type TokenControllerTokenBalancesScan401 = StakeKitErrorDto; +export type TokenControllerTokenBalancesScan404 = StakeKitErrorDto; +export type TokenControllerTokenBalancesScan408 = StakeKitErrorDto; +export type TokenControllerTokenBalancesScan410 = StakeKitErrorDto; +export type TokenControllerTokenBalancesScan412 = StakeKitErrorDto; +export type TokenControllerTokenBalancesScan429 = StakeKitErrorDto; +export type TokenControllerTokenBalancesScan500 = StakeKitErrorDto; +export type TokenControllerTokenBalancesScan503 = StakeKitErrorDto; +export type CustomUrisControllerGet200 = { + readonly data: ReadonlyArray<{ + readonly id: string; + readonly createdAt: string; + readonly updatedAt: string; + readonly network: Networks; + readonly rpcUri: string; + readonly projectId: string; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type CustomUrisControllerCreateRequestJson = CreateCustomUriDto; +export type CustomUrisControllerCreate200 = CustomUri; +export type CustomUrisControllerUpdateRequestJson = UpdateCustomUriDto; +export type CustomUrisControllerUpdate200 = CustomUri; +export type EnabledYieldControllerGetByProjectParams = { + readonly limit?: number; + readonly page?: number; +}; +export type EnabledYieldControllerGetByProject200 = { + readonly data: ReadonlyArray<{ readonly integrationId: string }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type EnabledYieldControllerCreateRequestJson = + ReadonlyArray; +export type EnabledYieldControllerCreate200 = ReadonlyArray; +export type EnabledYieldControllerDeleteManyRequestJson = + DeleteEnabledYieldsDto; +export type ProgrammaticEnabledYieldControllerGetByProjectParams = { + readonly "X-ADMIN-API-KEY"?: string; + readonly limit?: number; + readonly page?: number; +}; +export type ProgrammaticEnabledYieldControllerGetByProject200 = { + readonly data: ReadonlyArray<{ readonly integrationId: string }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type ProgrammaticEnabledYieldControllerCreateParams = { + readonly "X-ADMIN-API-KEY"?: string; +}; +export type ProgrammaticEnabledYieldControllerCreateRequestJson = + ReadonlyArray; +export type ProgrammaticEnabledYieldControllerCreate200 = + ReadonlyArray; +export type ProgrammaticEnabledYieldControllerDeleteManyParams = { + readonly "X-ADMIN-API-KEY"?: string; +}; +export type ProgrammaticEnabledYieldControllerDeleteManyRequestJson = + DeleteEnabledYieldsDto; +export type ProgrammaticEnabledYieldControllerDeleteParams = { + readonly "X-ADMIN-API-KEY"?: string; +}; +export type OAVControllerFindAllTokens200 = ReadonlyArray; +export type OAVControllerFindAllTokens400 = StakeKitErrorDto; +export type OAVControllerFindAllTokens401 = StakeKitErrorDto; +export type OAVControllerFindAllTokens404 = StakeKitErrorDto; +export type OAVControllerFindAllTokens408 = StakeKitErrorDto; +export type OAVControllerFindAllTokens410 = StakeKitErrorDto; +export type OAVControllerFindAllTokens412 = StakeKitErrorDto; +export type OAVControllerFindAllTokens429 = StakeKitErrorDto; +export type OAVControllerFindAllTokens500 = StakeKitErrorDto; +export type OAVControllerFindAllTokens503 = StakeKitErrorDto; +export type OAVControllerFindYieldsByTokenParams = { + readonly address?: string; +}; +export type OAVControllerFindYieldsByToken200 = ReadonlyArray; +export type OAVControllerFindYieldsByToken400 = StakeKitErrorDto; +export type OAVControllerFindYieldsByToken401 = StakeKitErrorDto; +export type OAVControllerFindYieldsByToken408 = StakeKitErrorDto; +export type OAVControllerFindYieldsByToken410 = StakeKitErrorDto; +export type OAVControllerFindYieldsByToken412 = StakeKitErrorDto; +export type OAVControllerFindYieldsByToken429 = StakeKitErrorDto; +export type OAVControllerFindYieldsByToken500 = StakeKitErrorDto; +export type OAVControllerFindYieldsByToken503 = StakeKitErrorDto; +export type OAVControllerFindAllParams = { readonly active?: boolean }; +export type OAVControllerFindAll200 = ReadonlyArray; +export type OAVControllerFindAll400 = StakeKitErrorDto; +export type OAVControllerFindAll401 = StakeKitErrorDto; +export type OAVControllerFindAll404 = StakeKitErrorDto; +export type OAVControllerFindAll408 = StakeKitErrorDto; +export type OAVControllerFindAll410 = StakeKitErrorDto; +export type OAVControllerFindAll412 = StakeKitErrorDto; +export type OAVControllerFindAll429 = StakeKitErrorDto; +export type OAVControllerFindAll500 = StakeKitErrorDto; +export type OAVControllerFindAll503 = StakeKitErrorDto; +export type OAVControllerCreateRequestJson = CreateOAVDto; +export type OAVControllerCreate201 = OAVResponseDto; +export type OAVControllerCreate401 = StakeKitErrorDto; +export type OAVControllerCreate404 = StakeKitErrorDto; +export type OAVControllerCreate408 = StakeKitErrorDto; +export type OAVControllerCreate410 = StakeKitErrorDto; +export type OAVControllerCreate412 = StakeKitErrorDto; +export type OAVControllerCreate429 = StakeKitErrorDto; +export type OAVControllerCreate500 = StakeKitErrorDto; +export type OAVControllerCreate503 = StakeKitErrorDto; +export type OAVControllerRemove400 = StakeKitErrorDto; +export type OAVControllerRemove401 = StakeKitErrorDto; +export type OAVControllerRemove408 = StakeKitErrorDto; +export type OAVControllerRemove410 = StakeKitErrorDto; +export type OAVControllerRemove412 = StakeKitErrorDto; +export type OAVControllerRemove429 = StakeKitErrorDto; +export type OAVControllerRemove500 = StakeKitErrorDto; +export type OAVControllerRemove503 = StakeKitErrorDto; +export type OAVControllerUpdateRequestJson = UpdateOAVDto; +export type OAVControllerUpdate200 = OAVResponseDto; +export type OAVControllerUpdate401 = StakeKitErrorDto; +export type OAVControllerUpdate408 = StakeKitErrorDto; +export type OAVControllerUpdate410 = StakeKitErrorDto; +export type OAVControllerUpdate412 = StakeKitErrorDto; +export type OAVControllerUpdate429 = StakeKitErrorDto; +export type OAVControllerUpdate500 = StakeKitErrorDto; +export type OAVControllerUpdate503 = StakeKitErrorDto; +export type NetworkAddressesPositionsV2ControllerGetPositionsParams = { + readonly "X-API-KEY"?: string; + readonly currency: string; +}; +export type NetworkAddressesPositionsV2ControllerGetPositions200 = + ReadonlyArray; +export type YieldControllerYieldsParams = { + readonly "X-API-KEY"?: string; + readonly preferredValidatorsOnly?: boolean; + readonly ledgerWalletAPICompatible?: boolean; + readonly type?: + | "staking" + | "liquid-staking" + | "lending" + | "restaking" + | "vault" + | "concentrated-liquidity-pool" + | "liquidity-pool" + | "real-world-asset"; + readonly sortBy?: + | "name" + | "nameAsc" + | "nameDesc" + | "relevantYieldType" + | "relevantYieldTypeAsc" + | "relevantYieldTypeDesc" + | "yieldType" + | "yieldTypeAsc" + | "yieldTypeDesc"; + readonly revenueOption?: "supportsFee" | "supportsRevShare"; + readonly page?: number; + readonly chainId?: string; + readonly network?: Networks; + readonly limit?: number; +}; +export type YieldControllerYields200 = { + readonly data: ReadonlyArray<{ + readonly id: string; + readonly token: TokenDto; + readonly tokens: ReadonlyArray; + readonly args: ActionArgumentResponseDto; + readonly status: YieldStatusResponseDto; + readonly apy: number; + readonly rewardRate: number; + readonly rewardType: RewardTypes; + readonly metadata: YieldMetadataDto; + readonly validators: ReadonlyArray; + readonly isAvailable: boolean; + readonly feeConfigurations: ReadonlyArray; + readonly allocations?: ReadonlyArray; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type YieldControllerYields400 = StakeKitErrorDto; +export type YieldControllerYields401 = StakeKitErrorDto; +export type YieldControllerYields404 = StakeKitErrorDto; +export type YieldControllerYields408 = StakeKitErrorDto; +export type YieldControllerYields410 = StakeKitErrorDto; +export type YieldControllerYields412 = StakeKitErrorDto; +export type YieldControllerYields429 = StakeKitErrorDto; +export type YieldControllerYields500 = StakeKitErrorDto; +export type YieldControllerYields503 = StakeKitErrorDto; +export type YieldControllerGetMultipleYieldBalancesParams = { + readonly "X-API-KEY"?: string; +}; +export type YieldControllerGetMultipleYieldBalancesRequestJson = + ReadonlyArray; +export type YieldControllerGetMultipleYieldBalances201 = + ReadonlyArray; +export type YieldControllerGetMultipleYieldBalances400 = StakeKitErrorDto; +export type YieldControllerGetMultipleYieldBalances401 = StakeKitErrorDto; +export type YieldControllerGetMultipleYieldBalances404 = StakeKitErrorDto; +export type YieldControllerGetMultipleYieldBalances408 = StakeKitErrorDto; +export type YieldControllerGetMultipleYieldBalances410 = StakeKitErrorDto; +export type YieldControllerGetMultipleYieldBalances412 = StakeKitErrorDto; +export type YieldControllerGetMultipleYieldBalances429 = StakeKitErrorDto; +export type YieldControllerGetMultipleYieldBalances500 = StakeKitErrorDto; +export type YieldControllerGetMultipleYieldBalances503 = StakeKitErrorDto; +export type YieldControllerYieldBalancesScanParams = { + readonly "X-API-KEY"?: string; +}; +export type YieldControllerYieldBalancesScanRequestJson = + YieldBalanceScanRequestDto; +export type YieldControllerYieldBalancesScan201 = + ReadonlyArray; +export type YieldControllerYieldBalancesScan400 = StakeKitErrorDto; +export type YieldControllerYieldBalancesScan401 = StakeKitErrorDto; +export type YieldControllerYieldBalancesScan404 = StakeKitErrorDto; +export type YieldControllerYieldBalancesScan408 = StakeKitErrorDto; +export type YieldControllerYieldBalancesScan410 = StakeKitErrorDto; +export type YieldControllerYieldBalancesScan412 = StakeKitErrorDto; +export type YieldControllerYieldBalancesScan429 = StakeKitErrorDto; +export type YieldControllerYieldBalancesScan500 = StakeKitErrorDto; +export type YieldControllerYieldBalancesScan503 = StakeKitErrorDto; +export type YieldControllerYieldBalancesScanEvmParams = { + readonly "X-API-KEY"?: string; +}; +export type YieldControllerYieldBalancesScanEvmRequestJson = + YieldBalanceScanEvmRequestDto; +export type YieldControllerYieldBalancesScanEvm201 = + ReadonlyArray; +export type YieldControllerYieldBalancesScanEvm400 = StakeKitErrorDto; +export type YieldControllerYieldBalancesScanEvm401 = StakeKitErrorDto; +export type YieldControllerYieldBalancesScanEvm404 = StakeKitErrorDto; +export type YieldControllerYieldBalancesScanEvm408 = StakeKitErrorDto; +export type YieldControllerYieldBalancesScanEvm410 = StakeKitErrorDto; +export type YieldControllerYieldBalancesScanEvm412 = StakeKitErrorDto; +export type YieldControllerYieldBalancesScanEvm429 = StakeKitErrorDto; +export type YieldControllerYieldBalancesScanEvm500 = StakeKitErrorDto; +export type YieldControllerYieldBalancesScanEvm503 = StakeKitErrorDto; +export type YieldControllerGetMyYieldsParams = { + readonly preferredValidatorsOnly?: boolean; + readonly ledgerWalletAPICompatible?: boolean; + readonly type?: + | "staking" + | "liquid-staking" + | "lending" + | "restaking" + | "vault" + | "concentrated-liquidity-pool" + | "liquidity-pool" + | "real-world-asset"; + readonly sortBy?: + | "name" + | "nameAsc" + | "nameDesc" + | "relevantYieldType" + | "relevantYieldTypeAsc" + | "relevantYieldTypeDesc" + | "yieldType" + | "yieldTypeAsc" + | "yieldTypeDesc"; + readonly network?: Networks; + readonly page?: number; + readonly limit?: number; + readonly "X-API-KEY"?: string; +}; +export type YieldControllerGetMyYields200 = { + readonly data: ReadonlyArray<{ + readonly id: string; + readonly token: TokenDto; + readonly tokens: ReadonlyArray; + readonly args: ActionArgumentResponseDto; + readonly status: YieldStatusResponseDto; + readonly apy: number; + readonly rewardRate: number; + readonly rewardType: RewardTypes; + readonly metadata: YieldMetadataDto; + readonly validators: ReadonlyArray; + readonly isAvailable: boolean; + readonly feeConfigurations: ReadonlyArray; + readonly allocations?: ReadonlyArray; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type YieldControllerGetMyYields400 = StakeKitErrorDto; +export type YieldControllerGetMyYields401 = StakeKitErrorDto; +export type YieldControllerGetMyYields404 = StakeKitErrorDto; +export type YieldControllerGetMyYields408 = StakeKitErrorDto; +export type YieldControllerGetMyYields410 = StakeKitErrorDto; +export type YieldControllerGetMyYields412 = StakeKitErrorDto; +export type YieldControllerGetMyYields429 = StakeKitErrorDto; +export type YieldControllerGetMyYields500 = StakeKitErrorDto; +export type YieldControllerGetMyYields503 = StakeKitErrorDto; +export type YieldControllerGetMyNetworksParams = { + readonly "X-API-KEY"?: string; +}; +export type YieldControllerGetMyNetworks400 = StakeKitErrorDto; +export type YieldControllerGetMyNetworks401 = StakeKitErrorDto; +export type YieldControllerGetMyNetworks404 = StakeKitErrorDto; +export type YieldControllerGetMyNetworks408 = StakeKitErrorDto; +export type YieldControllerGetMyNetworks410 = StakeKitErrorDto; +export type YieldControllerGetMyNetworks412 = StakeKitErrorDto; +export type YieldControllerGetMyNetworks429 = StakeKitErrorDto; +export type YieldControllerGetMyNetworks500 = StakeKitErrorDto; +export type YieldControllerGetMyNetworks503 = StakeKitErrorDto; +export type YieldControllerGetMyNetworksdefault = ReadonlyArray; +export type YieldControllerFindValidatorsParams = { + readonly ledgerWalletAPICompatible?: boolean; + readonly network?: string; + readonly query?: string; + readonly "X-API-KEY"?: string; +}; +export type YieldControllerFindValidators200 = + ReadonlyArray; +export type YieldControllerFindValidators400 = StakeKitErrorDto; +export type YieldControllerFindValidators401 = StakeKitErrorDto; +export type YieldControllerFindValidators404 = StakeKitErrorDto; +export type YieldControllerFindValidators408 = StakeKitErrorDto; +export type YieldControllerFindValidators410 = StakeKitErrorDto; +export type YieldControllerFindValidators412 = StakeKitErrorDto; +export type YieldControllerFindValidators429 = StakeKitErrorDto; +export type YieldControllerFindValidators500 = StakeKitErrorDto; +export type YieldControllerFindValidators503 = StakeKitErrorDto; +export type YieldControllerYieldOpportunityParams = { + readonly "X-API-KEY"?: string; + readonly preferredValidatorsOnly?: boolean; + readonly ledgerWalletAPICompatible?: boolean; +}; +export type YieldControllerYieldOpportunity200 = YieldDto; +export type YieldControllerYieldOpportunity400 = StakeKitErrorDto; +export type YieldControllerYieldOpportunity401 = StakeKitErrorDto; +export type YieldControllerYieldOpportunity404 = StakeKitErrorDto; +export type YieldControllerYieldOpportunity408 = StakeKitErrorDto; +export type YieldControllerYieldOpportunity410 = StakeKitErrorDto; +export type YieldControllerYieldOpportunity412 = StakeKitErrorDto; +export type YieldControllerYieldOpportunity429 = StakeKitErrorDto; +export type YieldControllerYieldOpportunity500 = StakeKitErrorDto; +export type YieldControllerYieldOpportunity503 = StakeKitErrorDto; +export type YieldControllerGetValidatorsParams = { + readonly "X-API-KEY"?: string; + readonly preferredValidatorsOnly?: boolean; + readonly ledgerWalletAPICompatible?: boolean; +}; +export type YieldControllerGetValidators200 = ReadonlyArray; +export type YieldControllerGetValidators400 = StakeKitErrorDto; +export type YieldControllerGetValidators401 = StakeKitErrorDto; +export type YieldControllerGetValidators404 = StakeKitErrorDto; +export type YieldControllerGetValidators408 = StakeKitErrorDto; +export type YieldControllerGetValidators410 = StakeKitErrorDto; +export type YieldControllerGetValidators412 = StakeKitErrorDto; +export type YieldControllerGetValidators429 = StakeKitErrorDto; +export type YieldControllerGetValidators500 = StakeKitErrorDto; +export type YieldControllerGetValidators503 = StakeKitErrorDto; +export type YieldControllerGetSingleYieldBalancesParams = { + readonly ledgerWalletAPICompatible?: boolean; + readonly "X-API-KEY"?: string; +}; +export type YieldControllerGetSingleYieldBalancesRequestJson = + YieldBalanceRequestDto; +export type YieldControllerGetSingleYieldBalances201 = + ReadonlyArray; +export type YieldControllerGetSingleYieldBalances400 = StakeKitErrorDto; +export type YieldControllerGetSingleYieldBalances401 = StakeKitErrorDto; +export type YieldControllerGetSingleYieldBalances404 = StakeKitErrorDto; +export type YieldControllerGetSingleYieldBalances408 = StakeKitErrorDto; +export type YieldControllerGetSingleYieldBalances410 = StakeKitErrorDto; +export type YieldControllerGetSingleYieldBalances412 = StakeKitErrorDto; +export type YieldControllerGetSingleYieldBalances429 = StakeKitErrorDto; +export type YieldControllerGetSingleYieldBalances500 = StakeKitErrorDto; +export type YieldControllerGetSingleYieldBalances503 = StakeKitErrorDto; +export type YieldControllerGetSingleYieldRewardsSummaryParams = { + readonly "X-API-KEY"?: string; +}; +export type YieldControllerGetSingleYieldRewardsSummaryRequestJson = + YieldRewardsSummaryRequestDto; +export type YieldControllerGetSingleYieldRewardsSummary201 = + YieldRewardsSummaryResponseDto; +export type YieldControllerGetSingleYieldRewardsSummary400 = StakeKitErrorDto; +export type YieldControllerGetSingleYieldRewardsSummary401 = StakeKitErrorDto; +export type YieldControllerGetSingleYieldRewardsSummary404 = StakeKitErrorDto; +export type YieldControllerGetSingleYieldRewardsSummary408 = StakeKitErrorDto; +export type YieldControllerGetSingleYieldRewardsSummary410 = StakeKitErrorDto; +export type YieldControllerGetSingleYieldRewardsSummary412 = StakeKitErrorDto; +export type YieldControllerGetSingleYieldRewardsSummary429 = StakeKitErrorDto; +export type YieldControllerGetSingleYieldRewardsSummary500 = StakeKitErrorDto; +export type YieldControllerGetSingleYieldRewardsSummary503 = StakeKitErrorDto; +export type YieldControllerGetFeeConfiguration200 = FeeConfigurationDto; +export type YieldControllerGetFeeConfiguration400 = StakeKitErrorDto; +export type YieldControllerGetFeeConfiguration401 = StakeKitErrorDto; +export type YieldControllerGetFeeConfiguration408 = StakeKitErrorDto; +export type YieldControllerGetFeeConfiguration410 = StakeKitErrorDto; +export type YieldControllerGetFeeConfiguration412 = StakeKitErrorDto; +export type YieldControllerGetFeeConfiguration429 = StakeKitErrorDto; +export type YieldControllerGetFeeConfiguration500 = StakeKitErrorDto; +export type YieldControllerGetFeeConfiguration503 = StakeKitErrorDto; +export type YieldControllerCreateFeeConfigurationParams = { + readonly "X-API-KEY": string; +}; +export type YieldControllerCreateFeeConfigurationRequestJson = + CreateFeeConfigurationDtoV2; +export type YieldControllerCreateFeeConfiguration201 = FeeConfigurationDto; +export type YieldControllerCreateFeeConfiguration400 = StakeKitErrorDto; +export type YieldControllerCreateFeeConfiguration401 = StakeKitErrorDto; +export type YieldControllerCreateFeeConfiguration404 = StakeKitErrorDto; +export type YieldControllerCreateFeeConfiguration408 = StakeKitErrorDto; +export type YieldControllerCreateFeeConfiguration410 = StakeKitErrorDto; +export type YieldControllerCreateFeeConfiguration412 = StakeKitErrorDto; +export type YieldControllerCreateFeeConfiguration429 = StakeKitErrorDto; +export type YieldControllerCreateFeeConfiguration500 = StakeKitErrorDto; +export type YieldControllerCreateFeeConfiguration503 = StakeKitErrorDto; +export type YieldV2ControllerYieldsParams = { + readonly providerId?: + | "aave" + | "anchor" + | "benqi" + | "compound" + | "lido" + | "sushi" + | "yearn" + | "ape" + | "chainlink" + | "pendle" + | "parax" + | "rocket-pool" + | "stakewise" + | "etherfi" + | "morpho-aave" + | "morpho" + | "morpho-compound" + | "angle" + | "kelpdao" + | "figment" + | "kiln" + | "P2P" + | "everstake" + | "eigenlayer" + | "luganodes" + | "renzo" + | "infstones" + | "ethena" + | "upshift" + | "fluid" + | "idle-finance" + | "gearbox" + | "chorus-one" + | "stakekit" + | "spark" + | "sommelier" + | "summer-fi" + | "venus" + | "venus-flux" + | "mantle" + | "ton-whales" + | "blend" + | "synthetix" + | "drift" + | "euler" + | "maple" + | "sky" + | "yo-protocol" + | "meria" + | "stakin" + | "globalstake" + | "simplystaking" + | "coinbase" + | "validation-cloud" + | "curve" + | "pancakeswap" + | "yield-xyz" + | "kamino" + | "veda" + | "lista" + | "dolomite"; + readonly inputToken?: string; + readonly enterStatus?: boolean; + readonly preferredValidatorsOnly?: boolean; + readonly ledgerWalletAPICompatible?: boolean; + readonly type?: + | "staking" + | "liquid-staking" + | "lending" + | "restaking" + | "vault" + | "concentrated-liquidity-pool" + | "liquidity-pool" + | "real-world-asset"; + readonly sortBy?: + | "name" + | "nameAsc" + | "nameDesc" + | "relevantYieldType" + | "relevantYieldTypeAsc" + | "relevantYieldTypeDesc" + | "yieldType" + | "yieldTypeAsc" + | "yieldTypeDesc"; + readonly revenueOption?: "supportsFee" | "supportsRevShare"; + readonly page?: number; + readonly network?: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly limit?: number; + readonly "X-API-KEY"?: string; +}; +export type YieldV2ControllerYields200 = { + readonly data: ReadonlyArray<{ + readonly id: string; + readonly token: TokenDto; + readonly tokens: ReadonlyArray; + readonly args: ActionArgumentResponseDto; + readonly status: YieldStatusResponseDto; + readonly apy: number; + readonly rewardRate: number; + readonly rewardType: RewardTypes; + readonly metadata: YieldMetadataDto; + readonly validators: ReadonlyArray; + readonly isAvailable: boolean; + readonly feeConfigurations: ReadonlyArray; + readonly allocations?: ReadonlyArray; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type YieldV2ControllerYields400 = StakeKitErrorDto; +export type YieldV2ControllerYields401 = StakeKitErrorDto; +export type YieldV2ControllerYields404 = StakeKitErrorDto; +export type YieldV2ControllerYields408 = StakeKitErrorDto; +export type YieldV2ControllerYields410 = StakeKitErrorDto; +export type YieldV2ControllerYields412 = StakeKitErrorDto; +export type YieldV2ControllerYields429 = StakeKitErrorDto; +export type YieldV2ControllerYields500 = StakeKitErrorDto; +export type YieldV2ControllerYields503 = StakeKitErrorDto; +export type YieldV2ControllerGetYieldByIdParams = { + readonly "X-API-KEY"?: string; +}; +export type YieldV2ControllerGetYieldById200 = YieldDto; +export type YieldV2ControllerGetYieldById400 = StakeKitErrorDto; +export type YieldV2ControllerGetYieldById401 = StakeKitErrorDto; +export type YieldV2ControllerGetYieldById404 = StakeKitErrorDto; +export type YieldV2ControllerGetYieldById408 = StakeKitErrorDto; +export type YieldV2ControllerGetYieldById410 = StakeKitErrorDto; +export type YieldV2ControllerGetYieldById412 = StakeKitErrorDto; +export type YieldV2ControllerGetYieldById429 = StakeKitErrorDto; +export type YieldV2ControllerGetYieldById500 = StakeKitErrorDto; +export type YieldV2ControllerGetYieldById503 = StakeKitErrorDto; +export type YieldV2ControllerFindYieldValidatorsParams = { + readonly ledgerWalletAPICompatible?: boolean; + readonly network?: string; + readonly query?: string; + readonly "X-API-KEY"?: string; +}; +export type YieldV2ControllerFindYieldValidators200 = + ReadonlyArray; +export type YieldV2ControllerFindYieldValidators400 = StakeKitErrorDto; +export type YieldV2ControllerFindYieldValidators401 = StakeKitErrorDto; +export type YieldV2ControllerFindYieldValidators404 = StakeKitErrorDto; +export type YieldV2ControllerFindYieldValidators408 = StakeKitErrorDto; +export type YieldV2ControllerFindYieldValidators410 = StakeKitErrorDto; +export type YieldV2ControllerFindYieldValidators412 = StakeKitErrorDto; +export type YieldV2ControllerFindYieldValidators429 = StakeKitErrorDto; +export type YieldV2ControllerFindYieldValidators500 = StakeKitErrorDto; +export type YieldV2ControllerFindYieldValidators503 = StakeKitErrorDto; +export type YieldV2ControllerFindValidatorsParams = { + readonly preferredValidatorsOnly?: boolean; + readonly ledgerWalletAPICompatible?: boolean; + readonly network?: string; + readonly query?: string; + readonly "X-API-KEY"?: string; +}; +export type YieldV2ControllerFindValidators200 = + ReadonlyArray; +export type YieldV2ControllerFindValidators400 = StakeKitErrorDto; +export type YieldV2ControllerFindValidators401 = StakeKitErrorDto; +export type YieldV2ControllerFindValidators404 = StakeKitErrorDto; +export type YieldV2ControllerFindValidators408 = StakeKitErrorDto; +export type YieldV2ControllerFindValidators410 = StakeKitErrorDto; +export type YieldV2ControllerFindValidators412 = StakeKitErrorDto; +export type YieldV2ControllerFindValidators429 = StakeKitErrorDto; +export type YieldV2ControllerFindValidators500 = StakeKitErrorDto; +export type YieldV2ControllerFindValidators503 = StakeKitErrorDto; +export type YieldV2ControllerGetFeeConfigurationsParams = { + readonly page?: number; + readonly limit?: number; +}; +export type YieldV2ControllerGetFeeConfigurations200 = { + readonly data: ReadonlyArray<{ + readonly id: string; + readonly projectId: string; + readonly integrationId: string; + readonly managementFeeBps: number; + readonly performanceFeeBps: number; + readonly depositFeeBps: number; + readonly allocatorVaultContractAddress: string | null; + readonly feeWrapperContractAddress: string | null; + readonly status: FeeConfigurationStatus; + readonly layerzeroOVaultConfig?: {} | null; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type YieldV2ControllerGetFeeConfigurations400 = StakeKitErrorDto; +export type YieldV2ControllerGetFeeConfigurations401 = StakeKitErrorDto; +export type YieldV2ControllerGetFeeConfigurations408 = StakeKitErrorDto; +export type YieldV2ControllerGetFeeConfigurations410 = StakeKitErrorDto; +export type YieldV2ControllerGetFeeConfigurations412 = StakeKitErrorDto; +export type YieldV2ControllerGetFeeConfigurations429 = StakeKitErrorDto; +export type YieldV2ControllerGetFeeConfigurations500 = StakeKitErrorDto; +export type YieldV2ControllerGetFeeConfigurations503 = StakeKitErrorDto; +export type EarnControllerGetStakesParams = { + readonly stake_addresses: string; + readonly "X-API-KEY"?: string; +}; +export type EarnControllerGetStakes200 = ReadonlyArray; +export type EarnControllerGetStakes400 = InvalidRequestDto; +export type EarnControllerGetStakes401 = UnauthorizedDto; +export type EarnControllerGetStakes404 = NotFoundDto; +export type EarnControllerGetStakes500 = ServerErrorDto; +export type EarnControllerGetGrowParams = { readonly "X-API-KEY"?: string }; +export type EarnControllerGetGrow200 = ReadonlyArray; +export type EarnControllerGetGrow401 = UnauthorizedDto; +export type EarnControllerGetGrow404 = NotFoundDto; +export type EarnControllerGetGrow500 = ServerErrorDto; +export type FeeConfigurationControllerGetParams = { + readonly sort?: + | "createdAtAsc" + | "createdAtDesc" + | "statusAsc" + | "statusDesc" + | "integrationIdAsc" + | "integrationIdDesc" + | "updatedAtAsc" + | "updatedAtDesc"; + readonly limit?: number; + readonly page?: number; +}; +export type FeeConfigurationControllerGet200 = { + readonly data: ReadonlyArray<{ + readonly id: string; + readonly projectId: string; + readonly integrationId: string; + readonly managementFeeBps: number; + readonly performanceFeeBps: number; + readonly depositFeeBps: number; + readonly allocatorVaultContractAddress: string | null; + readonly feeWrapperContractAddress: string | null; + readonly status: FeeConfigurationStatus; + readonly layerzeroOVaultConfig?: {} | null; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type FeeConfigurationControllerCreateRequestJson = + CreateFeeConfigurationDto; +export type FeeConfigurationControllerCreate200 = FeeConfigurationDto; +export type FeeConfigurationControllerUpdateRequestJson = + UpdateFeeConfigurationDto; +export type ProgrammaticFeeConfigurationControllerGetParams = { + readonly "X-ADMIN-API-KEY"?: string; + readonly limit?: number; + readonly page?: number; +}; +export type ProgrammaticFeeConfigurationControllerGet200 = { + readonly data: ReadonlyArray<{ + readonly id: string; + readonly projectId: string; + readonly integrationId: string; + readonly managementFeeBps: number; + readonly performanceFeeBps: number; + readonly depositFeeBps: number; + readonly allocatorVaultContractAddress: string | null; + readonly feeWrapperContractAddress: string | null; + readonly status: FeeConfigurationStatus; + readonly layerzeroOVaultConfig?: {} | null; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type ProgrammaticFeeConfigurationControllerCreateParams = { + readonly "X-ADMIN-API-KEY"?: string; +}; +export type ProgrammaticFeeConfigurationControllerCreateRequestJson = + CreateFeeConfigurationDto; +export type ProgrammaticFeeConfigurationControllerCreate200 = + FeeConfigurationDto; +export type ProgrammaticFeeConfigurationControllerDeleteParams = { + readonly "X-ADMIN-API-KEY"?: string; +}; +export type ProgrammaticFeeConfigurationControllerUpdateParams = { + readonly "X-ADMIN-API-KEY"?: string; +}; +export type ProgrammaticFeeConfigurationControllerUpdateRequestJson = + UpdateFeeConfigurationDto; +export type RiskParametersControllerFindManyParams = { + readonly limit?: number; + readonly page?: number; + readonly isDynamic?: boolean; + readonly integrationId?: string; + readonly protocol?: string; + readonly asset?: string; + readonly network?: string; + readonly item?: string; + readonly category?: string; +}; +export type RiskParametersControllerFindMany200 = { + readonly data: ReadonlyArray<{ + readonly id: string; + readonly category: string; + readonly item: string; + readonly isDynamic: boolean; + readonly value?: {}; + readonly network?: Networks; + readonly asset?: {}; + readonly protocol?: {}; + readonly integrationId?: {}; + readonly createdAt: string; + readonly updatedAt: string; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type RiskParametersControllerCreateRequestJson = CreateRiskParameterDto; +export type RiskParametersControllerCreate201 = RiskParameterDto; +export type RiskParametersControllerFindOne200 = RiskParameterDto; +export type RiskParametersControllerUpdateRequestJson = UpdateRiskParameterDto; +export type RiskParametersControllerUpdate200 = RiskParameterDto; +export type SsoControllerInitiateRequestJson = InitiateSsoDto; +export type SsoControllerInitiate200 = InitiateSsoResponseDto; +export type SsoControllerOidcCallbackParams = { + readonly code: string; + readonly state: string; +}; +export type SsoConfigControllerGet200 = SsoConfigResponseDto; +export type SsoConfigControllerUpsertRequestJson = UpsertSsoConfigDto; +export type SsoConfigControllerUpsert200 = SsoConfigResponseDto; +export type MfaControllerSetup200 = MfaSetupResponseDto; +export type MfaControllerVerifySetupRequestJson = MfaVerifySetupDto; +export type MfaControllerVerifySetup200 = MfaVerifySetupResponseDto; +export type MfaControllerBeginReenrollmentRequestJson = MfaBeginReenrollmentDto; +export type MfaControllerGetStatus200 = MfaStatusResponseDto; +export type MfaControllerVerifyRequestJson = MfaVerifyDto; +export type MfaControllerVerify200 = MfaVerifyResponseDto; +export type MfaControllerRecoverRequestJson = MfaRecoverDto; +export type MfaControllerRecover200 = MfaRecoverResponseDto; +export type MfaControllerDisableRequestJson = MfaDisableDto; +export type PerpsFeeConfigurationControllerGet200 = PerpsFeeConfigurationDto; +export type PerpsFeeConfigurationControllerCreateRequestJson = + CreatePerpsFeeConfigurationDto; +export type PerpsFeeConfigurationControllerCreate201 = PerpsFeeConfigurationDto; +export type PerpsFeeConfigurationControllerUpdateRequestJson = + UpdatePerpsFeeConfigurationDto; +export type PerpsFeeConfigurationControllerUpdate200 = PerpsFeeConfigurationDto; +export type ValidatorControllerFindAllProvidersParams = { + readonly limit?: number; + readonly page?: number; + readonly preferred?: boolean; +}; +export type ValidatorControllerFindAllProviders200 = { + readonly data: ReadonlyArray<{ + readonly id: string; + readonly name: string; + readonly uniqueId: string; + readonly website: string; + readonly rank: number; + readonly preferred: boolean; + readonly revshare?: {}; + readonly createdAt: string; + readonly updatedAt: string; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type ValidatorControllerCreateProviderRequestJson = + CreateValidatorProviderDto; +export type ValidatorControllerCreateProvider201 = ValidatorProviderDto; +export type ValidatorControllerFindOneProvider200 = ValidatorProviderDto; +export type ValidatorControllerUpdateProviderRequestFormData = + UpdateValidatorProviderDto; +export type ValidatorControllerUpdateProvider200 = ValidatorProviderDto; +export type ValidatorControllerGetAllHistoricalRevshareChangesParams = { + readonly validatorId: string; + readonly limit?: number; + readonly page?: number; +}; +export type ValidatorControllerGetAllHistoricalRevshareChanges200 = { + readonly data: ReadonlyArray<{ + readonly id: string; + readonly validatorId: string; + readonly type: "on_chain" | "override"; + readonly lastDay: string; + readonly preferred?: {}; + readonly apr?: {}; + readonly commission?: {}; + readonly mevCommission?: {}; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type ValidatorControllerUpdateHistoricalRevshareChangeRequestJson = + UpdateValidatorHistoricalRevshareChangesDto; +export type ValidatorControllerUpdateHistoricalRevshareChange200 = + ValidatorHistoricalRevshareChangesDto; +export type ValidatorControllerFindAllParams = { + readonly integrationId?: string; + readonly providerId?: string; + readonly address?: string; + readonly limit?: number; + readonly page?: number; + readonly excludeNotFound?: boolean; +}; +export type ValidatorControllerFindAll200 = { + readonly data: ReadonlyArray<{ + readonly id: string; + readonly integrationId: string; + readonly address: string; + readonly status: ValidatorStatusTypes; + readonly lastFoundAt?: {}; + readonly provider?: ValidatorProviderDto; + readonly providerId?: {}; + readonly name?: {}; + readonly nameOverride?: {}; + readonly website?: {}; + readonly websiteOverride?: {}; + readonly image?: {}; + readonly imageOverride?: {}; + readonly apr?: {}; + readonly aprOverride?: {}; + readonly commission?: {}; + readonly commissionOverride?: {}; + readonly mevCommission?: {}; + readonly mevCommissionOverride?: {}; + readonly stakedBalance?: {}; + readonly votingPower?: {}; + readonly remainingPossibleStake?: {}; + readonly minimumStake?: {}; + readonly remainingSlots?: {}; + readonly endDate?: {}; + readonly nominatorCount?: {}; + readonly subnetId?: {}; + readonly createdAt: string; + readonly updatedAt: string; + }>; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; +export type ValidatorControllerCreateRequestJson = CreateValidatorDto; +export type ValidatorControllerCreate201 = ValidatorAdminDto; +export type ValidatorControllerFindOne200 = ValidatorAdminDto; +export type ValidatorControllerUpdateRequestJson = UpdateValidatorDto; +export type ValidatorControllerUpdate200 = ValidatorAdminDto; +export type AdminApiKeysControllerFindAlldefault = ReadonlyArray; +export type AdminApiKeysControllerCreateRequestJson = CreateAdminApiKeyDto; +export type AdminApiKeysControllerCreatedefault = Key; +export type AdminApiKeysControllerFindOnedefault = AdminApiKey; +export type AdminApiKeysControllerUpdateRequestJson = UpdateAdminApiKeyDto; +export type AdminApiKeysControllerUpdatedefault = AdminApiKey; +export type WebhooksControllerGetEndpoints200 = + ReadonlyArray; +export type WebhooksControllerGetEndpoints400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerGetEndpoints500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerCreateEndpointRequestJson = + CreateWebhookEndpointDto; +export type WebhooksControllerCreateEndpoint201 = WebhookEndpointDto; +export type WebhooksControllerCreateEndpoint400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerCreateEndpoint500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerGetEndpoint200 = WebhookEndpointDto; +export type WebhooksControllerGetEndpoint400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerGetEndpoint500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerDeleteEndpoint500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerUpdateEndpointRequestJson = + UpdateWebhookEndpointDto; +export type WebhooksControllerUpdateEndpoint200 = WebhookEndpointDto; +export type WebhooksControllerUpdateEndpoint400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerUpdateEndpoint500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerSetEndpointEnabledRequestJson = + ToggleWebhookEndpointDto; +export type WebhooksControllerSetEndpointEnabled200 = WebhookEndpointDto; +export type WebhooksControllerSetEndpointEnabled400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerSetEndpointEnabled500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerGetSubscriptions200 = + ReadonlyArray; +export type WebhooksControllerGetSubscriptions400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerGetSubscriptions500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerCreateSubscriptionRequestJson = + CreateWebhookSubscriptionDto; +export type WebhooksControllerCreateSubscription201 = WebhookSubscriptionDto; +export type WebhooksControllerCreateSubscription400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerCreateSubscription500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerGetSubscription200 = WebhookSubscriptionDto; +export type WebhooksControllerGetSubscription400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerGetSubscription500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerDeleteSubscription400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerDeleteSubscription500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerUpdateSubscriptionRequestJson = + UpdateWebhookSubscriptionDto; +export type WebhooksControllerUpdateSubscription200 = WebhookSubscriptionDto; +export type WebhooksControllerUpdateSubscription400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerUpdateSubscription500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerGetEndpointDeliveries200 = + ReadonlyArray; +export type WebhooksControllerGetEndpointDeliveries400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerGetEndpointDeliveries500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerGetDelivery200 = WebhookDeliveryDto; +export type WebhooksControllerGetDelivery400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerGetDelivery500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerGetEvent200 = WebhookEventDto; +export type WebhooksControllerGetEvent400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type WebhooksControllerGetEvent500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type TradeProviderConfigurationControllerListdefault = + ReadonlyArray; +export type TradeProviderConfigurationControllerUpdateRequestJson = + UpdateTradeProviderConfigurationDto; +export type TradeProviderConfigurationControllerUpdatedefault = + TradeProviderConfigurationDto; +export type YieldStatusControllerUpsertRequestJson = UpsertYieldStatusDto; +export type YieldStatusControllerUpsert200 = YieldStatusOverrideResponseDto; +export type YieldStatusControllerFindAllParams = { + readonly offset?: number; + readonly limit?: number; +}; +export type YieldStatusControllerFindAll200 = + PaginatedYieldStatusOverrideResponseDto; +export type NetworksV2ControllerGetNetworksParams = { + readonly limit?: number; + readonly page?: number; + readonly "X-API-KEY"?: string; +}; +export type NetworksV2ControllerGetNetworks200 = { + readonly data: ReadonlyArray; + readonly hasNextPage: boolean; + readonly limit: number; + readonly page: number; +}; + +export interface OperationConfig { + /** + * Whether or not the response should be included in the value returned from + * an operation. + * + * If set to `true`, a tuple of `[A, HttpClientResponse]` will be returned, + * where `A` is the success type of the operation. + * + * If set to `false`, only the success type of the operation will be returned. + */ + readonly includeResponse?: boolean | undefined; +} + +/** + * A utility type which optionally includes the response in the return result + * of an operation based upon the value of the `includeResponse` configuration + * option. + */ +export type WithOptionalResponse< + A, + Config extends OperationConfig, +> = Config extends { + readonly includeResponse: true; +} + ? [A, HttpClientResponse.HttpClientResponse] + : A; + +export const make = ( + httpClient: HttpClient.HttpClient, + options: { + readonly transformClient?: + | (( + client: HttpClient.HttpClient + ) => Effect.Effect) + | undefined; + } = {} +): LegacyApi => { + const unexpectedStatus = (response: HttpClientResponse.HttpClientResponse) => + Effect.flatMap( + Effect.orElseSucceed(response.json, () => "Unexpected status code"), + (description) => + Effect.fail( + new HttpClientError.HttpClientError({ + reason: new HttpClientError.StatusCodeError({ + request: response.request, + response, + description: + typeof description === "string" + ? description + : JSON.stringify(description), + }), + }) + ) + ); + const withResponse = + (config: Config | undefined) => + ( + f: ( + response: HttpClientResponse.HttpClientResponse + ) => Effect.Effect + ): (( + request: HttpClientRequest.HttpClientRequest + ) => Effect.Effect) => { + const withOptionalResponse = ( + config?.includeResponse + ? (response: HttpClientResponse.HttpClientResponse) => + Effect.map(f(response), (a) => [a, response]) + : (response: HttpClientResponse.HttpClientResponse) => f(response) + ) as any; + return options?.transformClient + ? (request) => + Effect.flatMap( + Effect.flatMap(options.transformClient!(httpClient), (client) => + client.execute(request) + ), + withOptionalResponse + ) + : (request) => + Effect.flatMap(httpClient.execute(request), withOptionalResponse); + }; + const decodeSuccess = (response: HttpClientResponse.HttpClientResponse) => + response.json as Effect.Effect; + const decodeVoid = (_response: HttpClientResponse.HttpClientResponse) => + Effect.void; + const decodeError = + (tag: Tag) => + ( + response: HttpClientResponse.HttpClientResponse + ): Effect.Effect< + never, + LegacyApiError | HttpClientError.HttpClientError + > => + Effect.flatMap( + response.json as Effect.Effect, + (cause) => Effect.fail(LegacyApiError(tag, cause, response)) + ); + const onRequest = + (config: Config | undefined) => + ( + successCodes: ReadonlyArray, + errorCodes?: Record + ) => { + const cases: any = { orElse: unexpectedStatus }; + for (const code of successCodes) { + cases[code] = decodeSuccess; + } + if (errorCodes) { + for (const [code, tag] of Object.entries(errorCodes)) { + cases[code] = decodeError(tag); + } + } + if (successCodes.length === 0) { + cases["2xx"] = decodeVoid; + } + return withResponse(config)(HttpClientResponse.matchStatus(cases) as any); + }; + return { + httpClient, + AuthControllerRequestLoginCode: (options) => + HttpClientRequest.post(`/v1/auth/login/request-code`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + AuthControllerVerifyLoginCode: (options) => + HttpClientRequest.post(`/v1/auth/login/verify-code`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + AuthControllerConfirmEmail: (options) => + HttpClientRequest.post(`/v1/auth/email/confirm`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)([]) + ), + AuthControllerMe: (options) => + HttpClientRequest.get(`/v1/auth/me`).pipe( + onRequest(options?.config)(["2xx"]) + ), + AuthControllerUpdate: (options) => + HttpClientRequest.patch(`/v1/auth/me`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + CampaignControllerList: (teamId, projectId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/campaigns` + ).pipe( + HttpClientRequest.setUrlParams({ + status: options?.params?.["status"] as any, + yieldId: options?.params?.["yieldId"] as any, + offset: options?.params?.["offset"] as any, + limit: options?.params?.["limit"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + CampaignControllerCreate: (teamId, projectId, options) => + HttpClientRequest.post( + `/v1/teams/${teamId}/projects/${projectId}/campaigns` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + CampaignControllerGetById: (teamId, projectId, campaignId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/${campaignId}` + ).pipe(onRequest(options?.config)(["2xx"])), + CampaignControllerUpdate: (teamId, projectId, campaignId, options) => + HttpClientRequest.patch( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/${campaignId}` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + CampaignControllerPause: (teamId, projectId, campaignId, options) => + HttpClientRequest.post( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/${campaignId}/pause` + ).pipe(onRequest(options?.config)(["2xx"])), + CampaignControllerResume: (teamId, projectId, campaignId, options) => + HttpClientRequest.post( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/${campaignId}/resume` + ).pipe(onRequest(options?.config)(["2xx"])), + CampaignControllerEnd: (teamId, projectId, campaignId, options) => + HttpClientRequest.post( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/${campaignId}/end` + ).pipe(onRequest(options?.config)(["2xx"])), + CampaignControllerGetSummary: (teamId, projectId, campaignId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/${campaignId}/summary` + ).pipe(onRequest(options?.config)(["2xx"])), + CampaignControllerGetLiability: (teamId, projectId, campaignId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/${campaignId}/liability` + ).pipe(onRequest(options?.config)(["2xx"])), + CampaignControllerGetBudgetProjection: ( + teamId, + projectId, + campaignId, + options + ) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/${campaignId}/budget-projection` + ).pipe( + HttpClientRequest.setUrlParams({ + totalBudget: options?.params?.["totalBudget"] as any, + endTime: options?.params?.["endTime"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + CampaignControllerSetUserPayoutEligibility: ( + teamId, + projectId, + campaignId, + address, + options + ) => + HttpClientRequest.patch( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/${campaignId}/accruals/${address}/payout-eligibility` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + CampaignControllerGetUserEntitlement: ( + teamId, + projectId, + campaignId, + address, + options + ) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/${campaignId}/entitlements/${address}` + ).pipe(onRequest(options?.config)(["2xx"])), + CampaignControllerGetPayoutRuns: (teamId, projectId, campaignId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/${campaignId}/payout-runs` + ).pipe( + HttpClientRequest.setUrlParams({ + offset: options?.params?.["offset"] as any, + limit: options?.params?.["limit"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + CampaignControllerGetPayoutRunDetail: ( + teamId, + projectId, + campaignId, + runId, + options + ) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/${campaignId}/payout-runs/${runId}` + ).pipe(onRequest(options?.config)(["2xx"])), + CampaignControllerGetPayoutAudit: ( + teamId, + projectId, + campaignId, + options + ) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/${campaignId}/payout-audit` + ).pipe( + HttpClientRequest.setUrlParams({ + offset: options?.params?.["offset"] as any, + limit: options?.params?.["limit"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + CampaignControllerGetWeeklyDistribution: ( + teamId, + projectId, + campaignId, + options + ) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/${campaignId}/weekly-distribution` + ).pipe( + HttpClientRequest.setUrlParams({ + offset: options?.params?.["offset"] as any, + limit: options?.params?.["limit"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + CampaignControllerGetEligibleUsers: ( + teamId, + projectId, + campaignId, + options + ) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/${campaignId}/eligible-users` + ).pipe( + HttpClientRequest.setUrlParams({ + offset: options?.params?.["offset"] as any, + limit: options?.params?.["limit"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + CampaignConfigurationRequestControllerListForProject: ( + teamId, + projectId, + options + ) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/requests` + ).pipe( + HttpClientRequest.setUrlParams({ + status: options?.params?.["status"] as any, + requestType: options?.params?.["requestType"] as any, + offset: options?.params?.["offset"] as any, + limit: options?.params?.["limit"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + CampaignConfigurationRequestControllerCreate: ( + teamId, + projectId, + options + ) => + HttpClientRequest.post( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/requests` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + CampaignConfigurationRequestControllerGetById: ( + teamId, + projectId, + requestId, + options + ) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/requests/${requestId}` + ).pipe(onRequest(options?.config)(["2xx"])), + CampaignConfigurationRequestControllerListForCampaign: ( + teamId, + projectId, + campaignId, + options + ) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/${campaignId}/requests` + ).pipe( + HttpClientRequest.setUrlParams({ + status: options?.params?.["status"] as any, + requestType: options?.params?.["requestType"] as any, + offset: options?.params?.["offset"] as any, + limit: options?.params?.["limit"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + CampaignConfigurationRequestControllerAccept: ( + teamId, + projectId, + requestId, + options + ) => + HttpClientRequest.patch( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/requests/${requestId}/accept` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + CampaignConfigurationRequestControllerReject: ( + teamId, + projectId, + requestId, + options + ) => + HttpClientRequest.patch( + `/v1/teams/${teamId}/projects/${projectId}/campaigns/requests/${requestId}/reject` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + CampaignConfigurationRequestAdminControllerList: (options) => + HttpClientRequest.get(`/v1/admin/campaigns/requests`).pipe( + HttpClientRequest.setUrlParams({ + status: options?.params?.["status"] as any, + requestType: options?.params?.["requestType"] as any, + projectId: options?.params?.["projectId"] as any, + offset: options?.params?.["offset"] as any, + limit: options?.params?.["limit"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + ProgrammaticCampaignControllerListCampaigns: (projectId, options) => + HttpClientRequest.get( + `/v1/programmatic/projects/${projectId}/campaigns` + ).pipe( + HttpClientRequest.setUrlParams({ + offset: options.params["offset"] as any, + limit: options.params["limit"] as any, + status: options.params["status"] as any, + integrationId: options.params["integrationId"] as any, + }), + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticCampaignControllerGetAccrualDetails: ( + projectId, + campaignId, + options + ) => + HttpClientRequest.get( + `/v1/programmatic/projects/${projectId}/campaigns/${campaignId}/accrual-details` + ).pipe( + HttpClientRequest.setUrlParams({ + offset: options.params["offset"] as any, + limit: options.params["limit"] as any, + runId: options.params["runId"] as any, + }), + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticCampaignControllerGetAccrualDetailForHour: ( + projectId, + campaignId, + hour, + options + ) => + HttpClientRequest.get( + `/v1/programmatic/projects/${projectId}/campaigns/${campaignId}/accrual-details/hour/${hour}` + ).pipe( + HttpClientRequest.setUrlParams({ + offset: options.params["offset"] as any, + limit: options.params["limit"] as any, + }), + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticCampaignControllerGetUserAccrualHistory: ( + projectId, + campaignId, + address, + options + ) => + HttpClientRequest.get( + `/v1/programmatic/projects/${projectId}/campaigns/${campaignId}/user-accrual/${address}` + ).pipe( + HttpClientRequest.setUrlParams({ + offset: options.params["offset"] as any, + limit: options.params["limit"] as any, + }), + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticCampaignControllerGetPayoutRuns: ( + projectId, + campaignId, + options + ) => + HttpClientRequest.get( + `/v1/programmatic/projects/${projectId}/campaigns/${campaignId}/payout-runs` + ).pipe( + HttpClientRequest.setUrlParams({ + offset: options.params["offset"] as any, + limit: options.params["limit"] as any, + }), + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticCampaignControllerGetPayoutRunDetail: ( + projectId, + campaignId, + runId, + options + ) => + HttpClientRequest.get( + `/v1/programmatic/projects/${projectId}/campaigns/${campaignId}/payout-runs/${runId}` + ).pipe( + HttpClientRequest.setUrlParams({ + offset: options.params["offset"] as any, + limit: options.params["limit"] as any, + }), + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticCampaignControllerGetPayoutBatchDetail: ( + projectId, + campaignId, + runId, + batchKey, + options + ) => + HttpClientRequest.get( + `/v1/programmatic/projects/${projectId}/campaigns/${campaignId}/payout-runs/${runId}/batches/${batchKey}` + ).pipe( + HttpClientRequest.setUrlParams({ + offset: options.params["offset"] as any, + limit: options.params["limit"] as any, + }), + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticCampaignControllerGetCampaignSafeBalance: ( + projectId, + campaignId, + options + ) => + HttpClientRequest.get( + `/v1/programmatic/projects/${projectId}/campaigns/${campaignId}/safe-balance` + ).pipe( + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticCampaignControllerGetCampaignPayoutEligibilitySummary: ( + projectId, + campaignId, + options + ) => + HttpClientRequest.get( + `/v1/programmatic/projects/${projectId}/campaigns/${campaignId}/payout-eligibility/summary` + ).pipe( + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticCampaignControllerGetCampaignBalances: ( + projectId, + campaignId, + options + ) => + HttpClientRequest.get( + `/v1/programmatic/projects/${projectId}/campaigns/${campaignId}/balances` + ).pipe( + HttpClientRequest.setUrlParams({ + offset: options.params["offset"] as any, + limit: options.params["limit"] as any, + }), + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + MasterBannedRegionControllerList: (options) => + HttpClientRequest.get(`/v1/teams/projects/master-banned-regions`).pipe( + HttpClientRequest.setUrlParams({ + limit: options?.params?.["limit"] as any, + page: options?.params?.["page"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + MasterBannedRegionControllerCreate: (options) => + HttpClientRequest.post(`/v1/teams/projects/master-banned-regions`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + MasterBannedRegionControllerDelete: (options) => + HttpClientRequest.delete(`/v1/teams/projects/master-banned-regions`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)([]) + ), + ProjectBannedRegionControllerList: (teamId, projectId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/banned-regions` + ).pipe( + HttpClientRequest.setUrlParams({ + limit: options?.params?.["limit"] as any, + page: options?.params?.["page"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + ProjectBannedRegionControllerCreate: (teamId, projectId, options) => + HttpClientRequest.post( + `/v1/teams/${teamId}/projects/${projectId}/banned-regions` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + ProjectBannedRegionControllerDelete: (teamId, projectId, options) => + HttpClientRequest.delete( + `/v1/teams/${teamId}/projects/${projectId}/banned-regions` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)([]) + ), + MasterBannedYieldControllerList: (options) => + HttpClientRequest.get(`/v1/teams/projects/master-banned-yields`).pipe( + HttpClientRequest.setUrlParams({ + limit: options?.params?.["limit"] as any, + page: options?.params?.["page"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + TeamsControllerFindAll: (options) => + HttpClientRequest.get(`/v1/teams`).pipe( + HttpClientRequest.setUrlParams({ + sort: options?.params?.["sort"] as any, + limit: options?.params?.["limit"] as any, + page: options?.params?.["page"] as any, + deleted: options?.params?.["deleted"] as any, + activated: options?.params?.["activated"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + TeamsControllerCreate: (options) => + HttpClientRequest.post(`/v1/teams`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + TeamsControllerGetById: (teamId, options) => + HttpClientRequest.get(`/v1/teams/${teamId}`).pipe( + onRequest(options?.config)(["2xx"]) + ), + TeamsControllerSoftDelete: (teamId, options) => + HttpClientRequest.delete(`/v1/teams/${teamId}`).pipe( + onRequest(options?.config)([]) + ), + TeamsControllerUpdate: (teamId, options) => + HttpClientRequest.patch(`/v1/teams/${teamId}`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + ProjectsControllerGet: (teamId, options) => + HttpClientRequest.get(`/v1/teams/${teamId}/projects`).pipe( + onRequest(options?.config)(["2xx"]) + ), + ProjectsControllerCreate: (teamId, options) => + HttpClientRequest.post(`/v1/teams/${teamId}/projects`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + ProjectsControllerDelete: (teamId, projectId, options) => + HttpClientRequest.delete( + `/v1/teams/${teamId}/projects/${projectId}` + ).pipe(onRequest(options?.config)([])), + ProjectsControllerUpdate: (teamId, projectId, options) => + HttpClientRequest.patch(`/v1/teams/${teamId}/projects/${projectId}`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticProjectsControllerGet: (options) => + HttpClientRequest.get(`/v1/programmatic/projects`).pipe( + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options?.params?.["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"]) + ), + ProgrammaticProjectsControllerCreate: (options) => + HttpClientRequest.post(`/v1/programmatic/projects`).pipe( + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params?.["X-ADMIN-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticProjectsControllerDelete: (projectId, options) => + HttpClientRequest.delete(`/v1/programmatic/projects/${projectId}`).pipe( + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options?.params?.["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options?.config)([]) + ), + ProgrammaticProjectsControllerUpdate: (projectId, options) => + HttpClientRequest.patch(`/v1/programmatic/projects/${projectId}`).pipe( + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params?.["X-ADMIN-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + KeysControllerGet: (teamId, projectId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/keys` + ).pipe(onRequest(options?.config)(["2xx"])), + KeysControllerCreate: (teamId, projectId, options) => + HttpClientRequest.post( + `/v1/teams/${teamId}/projects/${projectId}/keys` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + KeysControllerDelete: (teamId, projectId, keyId, options) => + HttpClientRequest.delete( + `/v1/teams/${teamId}/projects/${projectId}/keys/${keyId}` + ).pipe(onRequest(options?.config)([])), + KeysControllerUpdate: (teamId, projectId, keyId, options) => + HttpClientRequest.patch( + `/v1/teams/${teamId}/projects/${projectId}/keys/${keyId}` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticKeysControllerGet: (projectId, options) => + HttpClientRequest.get(`/v1/programmatic/projects/${projectId}/keys`).pipe( + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options?.params?.["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"]) + ), + ProgrammaticKeysControllerCreate: (projectId, options) => + HttpClientRequest.post( + `/v1/programmatic/projects/${projectId}/keys` + ).pipe( + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params?.["X-ADMIN-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticKeysControllerDelete: (projectId, keyId, options) => + HttpClientRequest.delete( + `/v1/programmatic/projects/${projectId}/keys/${keyId}` + ).pipe( + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options?.params?.["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options?.config)([]) + ), + ProgrammaticKeysControllerUpdate: (projectId, keyId, options) => + HttpClientRequest.patch( + `/v1/programmatic/projects/${projectId}/keys/${keyId}` + ).pipe( + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params?.["X-ADMIN-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + HealthControllerHealthV2: (options) => + HttpClientRequest.get(`/v2/health`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "HealthControllerHealthV2400", + "401": "HealthControllerHealthV2401", + "404": "HealthControllerHealthV2404", + "408": "HealthControllerHealthV2408", + "410": "HealthControllerHealthV2410", + "412": "HealthControllerHealthV2412", + "429": "HealthControllerHealthV2429", + "500": "HealthControllerHealthV2500", + "503": "HealthControllerHealthV2503", + }) + ), + HomeControllerAppInfo: (options) => + HttpClientRequest.get(`/`).pipe(onRequest(options?.config)([])), + PayoutAddressesControllerGet: (teamId, projectId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/payout-addresses` + ).pipe(onRequest(options?.config)(["2xx"])), + PayoutAddressesControllerCreate: (teamId, projectId, options) => + HttpClientRequest.post( + `/v1/teams/${teamId}/projects/${projectId}/payout-addresses` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + PayoutAddressesControllerDelete: ( + teamId, + projectId, + payoutAddressId, + options + ) => + HttpClientRequest.delete( + `/v1/teams/${teamId}/projects/${projectId}/payout-addresses/${payoutAddressId}` + ).pipe(onRequest(options?.config)([])), + PayoutAddressesControllerUpdate: ( + teamId, + projectId, + payoutAddressId, + options + ) => + HttpClientRequest.patch( + `/v1/teams/${teamId}/projects/${projectId}/payout-addresses/${payoutAddressId}` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + NetworkAddressReferralControllerGetByAddress: (network, address, options) => + HttpClientRequest.get( + `/v1/networks/${network}/addresses/${address}/referrals` + ).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"]) + ), + NetworkAddressReferralControllerCreate: (network, address, options) => + HttpClientRequest.post( + `/v1/networks/${network}/addresses/${address}/referrals` + ).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"]) + ), + ReferralControllerGetByCode: (code, options) => + HttpClientRequest.get(`/v1/referrals/${code}`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"]) + ), + ReportEntryControllerList: (teamId, options) => + HttpClientRequest.get(`/v1/teams/${teamId}/report-entries`).pipe( + HttpClientRequest.setUrlParams({ + limit: options?.params?.["limit"] as any, + page: options?.params?.["page"] as any, + walletAddress: options?.params?.["walletAddress"] as any, + validatorAddress: options?.params?.["validatorAddress"] as any, + type: options?.params?.["type"] as any, + status: options?.params?.["status"] as any, + sort: options?.params?.["sort"] as any, + projectId: options?.params?.["projectId"] as any, + integrationId: options?.params?.["integrationId"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + ReportProjectControllerList: (options) => + HttpClientRequest.get(`/v1/reporting/actions`).pipe( + HttpClientRequest.setUrlParams({ + from: options.params["from"] as any, + to: options.params["to"] as any, + limit: options.params["limit"] as any, + page: options.params["page"] as any, + walletAddress: options.params["walletAddress"] as any, + validatorAddress: options.params["validatorAddress"] as any, + type: options.params["type"] as any, + sort: options.params["sort"] as any, + integrationId: options.params["integrationId"] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params["X-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + ReportProjectControllerGetRewards: (integrationId, options) => + HttpClientRequest.get(`/v1/reporting/rewards/${integrationId}`).pipe( + HttpClientRequest.setUrlParams({ + from: options.params["from"] as any, + to: options.params["to"] as any, + limit: options.params["limit"] as any, + page: options.params["page"] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params["X-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + ReportProjectControllerGetDailyRevenues: (options) => + HttpClientRequest.get(`/v1/reporting/revenue`).pipe( + HttpClientRequest.setUrlParams({ + from: options.params["from"] as any, + to: options.params["to"] as any, + integrationId: options.params["integrationId"] as any, + limit: options.params["limit"] as any, + page: options.params["page"] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params["X-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + ReportProjectControllerGetDailyPerformance: (options) => + HttpClientRequest.get(`/v1/reporting/performance`).pipe( + HttpClientRequest.setUrlParams({ + from: options.params["from"] as any, + to: options.params["to"] as any, + integrationId: options.params["integrationId"] as any, + limit: options.params["limit"] as any, + page: options.params["page"] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params["X-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticReportEntryControllerList: (options) => + HttpClientRequest.get(`/v1/programmatic/report-entries`).pipe( + HttpClientRequest.setUrlParams({ + limit: options.params["limit"] as any, + page: options.params["page"] as any, + walletAddress: options.params["walletAddress"] as any, + validatorAddress: options.params["validatorAddress"] as any, + type: options.params["type"] as any, + status: options.params["status"] as any, + sort: options.params["sort"] as any, + projectId: options.params["projectId"] as any, + integrationId: options.params["integrationId"] as any, + }), + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticReportingControllerGetDailyRevenues: (projectId, options) => + HttpClientRequest.get( + `/v1/programmatic/projects/${projectId}/reporting/revenue` + ).pipe( + HttpClientRequest.setUrlParams({ + date: options.params["date"] as any, + limit: options.params["limit"] as any, + page: options.params["page"] as any, + providerId: options.params["providerId"] as any, + integrationId: options.params["integrationId"] as any, + }), + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticReportingControllerGetDailyRevenueAggregates: ( + projectId, + options + ) => + HttpClientRequest.get( + `/v1/programmatic/projects/${projectId}/reporting/revenue/aggregate` + ).pipe( + HttpClientRequest.setUrlParams({ + from: options.params["from"] as any, + to: options.params["to"] as any, + providerId: options.params["providerId"] as any, + }), + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticReportingControllerGetDailyPerformance: (projectId, options) => + HttpClientRequest.get( + `/v1/programmatic/projects/${projectId}/reporting/performance` + ).pipe( + HttpClientRequest.setUrlParams({ + date: options.params["date"] as any, + limit: options.params["limit"] as any, + page: options.params["page"] as any, + providerId: options.params["providerId"] as any, + integrationId: options.params["integrationId"] as any, + }), + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticReportingControllerGetDailyPerformanceAggregates: ( + projectId, + options + ) => + HttpClientRequest.get( + `/v1/programmatic/projects/${projectId}/reporting/performance/aggregate` + ).pipe( + HttpClientRequest.setUrlParams({ + from: options.params["from"] as any, + to: options.params["to"] as any, + providerId: options.params["providerId"] as any, + }), + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticReportingControllerGetPerpActions: (projectId, options) => + HttpClientRequest.get( + `/v1/programmatic/projects/${projectId}/reporting/perps/actions` + ).pipe( + HttpClientRequest.setUrlParams({ + providerId: options.params["providerId"] as any, + address: options.params["address"] as any, + status: options.params["status"] as any, + type: options.params["type"] as any, + marketId: options.params["marketId"] as any, + limit: options.params["limit"] as any, + page: options.params["page"] as any, + }), + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + UsersMeControllerFindMe: (options) => + HttpClientRequest.get(`/v1/teams/users/me`).pipe( + onRequest(options?.config)(["2xx"]) + ), + UsersMeControllerPatchMe: (options) => + HttpClientRequest.patch(`/v1/teams/users/me`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + UsersMeControllerConfirmMe: (options) => + HttpClientRequest.post(`/v1/teams/users/me/activation`).pipe( + onRequest(options?.config)(["2xx"]) + ), + UsersControllerFindAll: (teamId, options) => + HttpClientRequest.get(`/v1/teams/${teamId}/users`).pipe( + HttpClientRequest.setUrlParams({ + limit: options?.params?.["limit"] as any, + page: options?.params?.["page"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + UsersControllerCreate: (teamId, options) => + HttpClientRequest.post(`/v1/teams/${teamId}/users`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + UsersControllerFindOne: (teamId, id, options) => + HttpClientRequest.get(`/v1/teams/${teamId}/users/${id}`).pipe( + onRequest(options?.config)(["2xx"]) + ), + UsersControllerRemoveTeamMember: (teamId, id, options) => + HttpClientRequest.delete(`/v1/teams/${teamId}/users/${id}`).pipe( + onRequest(options?.config)([]) + ), + UsersControllerUpdate: (teamId, id, options) => + HttpClientRequest.patch(`/v1/teams/${teamId}/users/${id}`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + ActionControllerGetAction: (actionId, options) => + HttpClientRequest.get(`/v1/actions/${actionId}`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "ActionControllerGetAction400", + "401": "ActionControllerGetAction401", + "404": "ActionControllerGetAction404", + "408": "ActionControllerGetAction408", + "410": "ActionControllerGetAction410", + "412": "ActionControllerGetAction412", + "429": "ActionControllerGetAction429", + "500": "ActionControllerGetAction500", + "503": "ActionControllerGetAction503", + }) + ), + ActionControllerGetGasEstimate: (actionId, options) => + HttpClientRequest.get(`/v1/actions/${actionId}/gas-estimate`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "ActionControllerGetGasEstimate400", + "401": "ActionControllerGetGasEstimate401", + "404": "ActionControllerGetGasEstimate404", + "408": "ActionControllerGetGasEstimate408", + "410": "ActionControllerGetGasEstimate410", + "412": "ActionControllerGetGasEstimate412", + "429": "ActionControllerGetGasEstimate429", + "500": "ActionControllerGetGasEstimate500", + "503": "ActionControllerGetGasEstimate503", + }) + ), + ActionControllerEnter: (options) => + HttpClientRequest.post(`/v1/actions/enter`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params?.["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "ActionControllerEnter400", + "401": "ActionControllerEnter401", + "403": "ActionControllerEnter403", + "404": "ActionControllerEnter404", + "408": "ActionControllerEnter408", + "410": "ActionControllerEnter410", + "412": "ActionControllerEnter412", + "429": "ActionControllerEnter429", + "500": "ActionControllerEnter500", + "503": "ActionControllerEnter503", + }) + ), + ActionControllerExit: (options) => + HttpClientRequest.post(`/v1/actions/exit`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params?.["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "ActionControllerExit400", + "401": "ActionControllerExit401", + "403": "ActionControllerExit403", + "404": "ActionControllerExit404", + "408": "ActionControllerExit408", + "410": "ActionControllerExit410", + "412": "ActionControllerExit412", + "429": "ActionControllerExit429", + "500": "ActionControllerExit500", + "503": "ActionControllerExit503", + }) + ), + ActionControllerPending: (options) => + HttpClientRequest.post(`/v1/actions/pending`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params?.["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "ActionControllerPending400", + "401": "ActionControllerPending401", + "403": "ActionControllerPending403", + "404": "ActionControllerPending404", + "408": "ActionControllerPending408", + "410": "ActionControllerPending410", + "412": "ActionControllerPending412", + "429": "ActionControllerPending429", + "500": "ActionControllerPending500", + "503": "ActionControllerPending503", + }) + ), + ActionControllerEnterGasEstimation: (options) => + HttpClientRequest.post(`/v1/actions/enter/estimate-gas`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params?.["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "ActionControllerEnterGasEstimation400", + "401": "ActionControllerEnterGasEstimation401", + "404": "ActionControllerEnterGasEstimation404", + "408": "ActionControllerEnterGasEstimation408", + "410": "ActionControllerEnterGasEstimation410", + "412": "ActionControllerEnterGasEstimation412", + "429": "ActionControllerEnterGasEstimation429", + "500": "ActionControllerEnterGasEstimation500", + "503": "ActionControllerEnterGasEstimation503", + }) + ), + ActionControllerExitGasEstimate: (options) => + HttpClientRequest.post(`/v1/actions/exit/estimate-gas`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params?.["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "ActionControllerExitGasEstimate400", + "401": "ActionControllerExitGasEstimate401", + "404": "ActionControllerExitGasEstimate404", + "408": "ActionControllerExitGasEstimate408", + "410": "ActionControllerExitGasEstimate410", + "412": "ActionControllerExitGasEstimate412", + "429": "ActionControllerExitGasEstimate429", + "500": "ActionControllerExitGasEstimate500", + "503": "ActionControllerExitGasEstimate503", + }) + ), + ActionControllerList: (options) => + HttpClientRequest.get(`/v1/actions`).pipe( + HttpClientRequest.setUrlParams({ + walletAddress: options.params["walletAddress"] as any, + statuses: options.params["statuses"] as any, + status: options.params["status"] as any, + type: options.params["type"] as any, + sort: options.params["sort"] as any, + network: options.params["network"] as any, + limit: options.params["limit"] as any, + page: options.params["page"] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params["X-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"], { + "400": "ActionControllerList400", + "401": "ActionControllerList401", + "404": "ActionControllerList404", + "408": "ActionControllerList408", + "410": "ActionControllerList410", + "412": "ActionControllerList412", + "429": "ActionControllerList429", + "500": "ActionControllerList500", + "503": "ActionControllerList503", + }) + ), + ActionControllerPendingGasEstimate: (options) => + HttpClientRequest.post(`/v1/actions/pending/estimate-gas`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params?.["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "ActionControllerPendingGasEstimate400", + "401": "ActionControllerPendingGasEstimate401", + "404": "ActionControllerPendingGasEstimate404", + "408": "ActionControllerPendingGasEstimate408", + "410": "ActionControllerPendingGasEstimate410", + "412": "ActionControllerPendingGasEstimate412", + "429": "ActionControllerPendingGasEstimate429", + "500": "ActionControllerPendingGasEstimate500", + "503": "ActionControllerPendingGasEstimate503", + }) + ), + NetworkAddressActionV2ControllerCreate: (network, address, options) => + HttpClientRequest.post( + `/v2/network/${network}/address/${address}/actions` + ).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "403": "NetworkAddressActionV2ControllerCreate403", + }) + ), + NetworkAddressActionV2ControllerGetById: ( + network, + address, + actionId, + options + ) => + HttpClientRequest.get( + `/v2/network/${network}/address/${address}/actions/${actionId}` + ).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"]) + ), + NetworkGasControllerV2GetGasPrices: (network, options) => + HttpClientRequest.get(`/v2/networks/${network}/gas`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"]) + ), + TransactionControllerGetTransaction: (transactionId, options) => + HttpClientRequest.get(`/v1/transactions/${transactionId}`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "TransactionControllerGetTransaction400", + "401": "TransactionControllerGetTransaction401", + "404": "TransactionControllerGetTransaction404", + "408": "TransactionControllerGetTransaction408", + "410": "TransactionControllerGetTransaction410", + "412": "TransactionControllerGetTransaction412", + "429": "TransactionControllerGetTransaction429", + "500": "TransactionControllerGetTransaction500", + "503": "TransactionControllerGetTransaction503", + }) + ), + TransactionControllerConstruct: (transactionId, options) => + HttpClientRequest.patch(`/v1/transactions/${transactionId}`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params?.["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "TransactionControllerConstruct400", + "401": "TransactionControllerConstruct401", + "403": "TransactionControllerConstruct403", + "404": "TransactionControllerConstruct404", + "408": "TransactionControllerConstruct408", + "410": "TransactionControllerConstruct410", + "412": "TransactionControllerConstruct412", + "429": "TransactionControllerConstruct429", + "500": "TransactionControllerConstruct500", + "503": "TransactionControllerConstruct503", + }) + ), + TransactionControllerSubmit: (transactionId, options) => + HttpClientRequest.post(`/v1/transactions/${transactionId}/submit`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params?.["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "TransactionControllerSubmit400", + "401": "TransactionControllerSubmit401", + "403": "TransactionControllerSubmit403", + "404": "TransactionControllerSubmit404", + "408": "TransactionControllerSubmit408", + "410": "TransactionControllerSubmit410", + "412": "TransactionControllerSubmit412", + "429": "TransactionControllerSubmit429", + "500": "TransactionControllerSubmit500", + "503": "TransactionControllerSubmit503", + }) + ), + TransactionControllerSubmitHash: (transactionId, options) => + HttpClientRequest.post( + `/v1/transactions/${transactionId}/submit_hash` + ).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params?.["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)([], { + "400": "TransactionControllerSubmitHash400", + "401": "TransactionControllerSubmitHash401", + "403": "TransactionControllerSubmitHash403", + "404": "TransactionControllerSubmitHash404", + "408": "TransactionControllerSubmitHash408", + "410": "TransactionControllerSubmitHash410", + "412": "TransactionControllerSubmitHash412", + "429": "TransactionControllerSubmitHash429", + "500": "TransactionControllerSubmitHash500", + "503": "TransactionControllerSubmitHash503", + }) + ), + TransactionControllerGetTransactionStatusFromId: (transactionId, options) => + HttpClientRequest.get(`/v1/transactions/${transactionId}/status`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "TransactionControllerGetTransactionStatusFromId400", + "401": "TransactionControllerGetTransactionStatusFromId401", + "404": "TransactionControllerGetTransactionStatusFromId404", + "408": "TransactionControllerGetTransactionStatusFromId408", + "410": "TransactionControllerGetTransactionStatusFromId410", + "412": "TransactionControllerGetTransactionStatusFromId412", + "429": "TransactionControllerGetTransactionStatusFromId429", + "500": "TransactionControllerGetTransactionStatusFromId500", + "503": "TransactionControllerGetTransactionStatusFromId503", + }) + ), + TransactionControllerGetGasForNetwork: (network, options) => + HttpClientRequest.get(`/v1/transactions/gas/${network}`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "TransactionControllerGetGasForNetwork400", + "401": "TransactionControllerGetGasForNetwork401", + "404": "TransactionControllerGetGasForNetwork404", + "408": "TransactionControllerGetGasForNetwork408", + "410": "TransactionControllerGetGasForNetwork410", + "412": "TransactionControllerGetGasForNetwork412", + "429": "TransactionControllerGetGasForNetwork429", + "500": "TransactionControllerGetGasForNetwork500", + "503": "TransactionControllerGetGasForNetwork503", + }) + ), + TransactionControllerGetTransactionStatusByNetworkAndHash: ( + network, + hash, + options + ) => + HttpClientRequest.get(`/v1/transactions/status/${network}/${hash}`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "TransactionControllerGetTransactionStatusByNetworkAndHash400", + "401": "TransactionControllerGetTransactionStatusByNetworkAndHash401", + "404": "TransactionControllerGetTransactionStatusByNetworkAndHash404", + "408": "TransactionControllerGetTransactionStatusByNetworkAndHash408", + "410": "TransactionControllerGetTransactionStatusByNetworkAndHash410", + "412": "TransactionControllerGetTransactionStatusByNetworkAndHash412", + "429": "TransactionControllerGetTransactionStatusByNetworkAndHash429", + "500": "TransactionControllerGetTransactionStatusByNetworkAndHash500", + "503": "TransactionControllerGetTransactionStatusByNetworkAndHash503", + }) + ), + TransactionControllerGetTransactionVerificationMessageForNetwork: ( + network, + options + ) => + HttpClientRequest.post(`/v1/transactions/verification/${network}`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params?.["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": + "TransactionControllerGetTransactionVerificationMessageForNetwork400", + "401": + "TransactionControllerGetTransactionVerificationMessageForNetwork401", + "403": + "TransactionControllerGetTransactionVerificationMessageForNetwork403", + "404": + "TransactionControllerGetTransactionVerificationMessageForNetwork404", + "408": + "TransactionControllerGetTransactionVerificationMessageForNetwork408", + "410": + "TransactionControllerGetTransactionVerificationMessageForNetwork410", + "412": + "TransactionControllerGetTransactionVerificationMessageForNetwork412", + "429": + "TransactionControllerGetTransactionVerificationMessageForNetwork429", + "500": + "TransactionControllerGetTransactionVerificationMessageForNetwork500", + "503": + "TransactionControllerGetTransactionVerificationMessageForNetwork503", + }) + ), + NetworkAddressesTokenV2ControllerGetTokenBalances: ( + network, + address, + options + ) => + HttpClientRequest.get( + `/v2/networks/${network}/addresses/${address}/tokens` + ).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "NetworkAddressesTokenV2ControllerGetTokenBalances400", + "401": "NetworkAddressesTokenV2ControllerGetTokenBalances401", + "404": "NetworkAddressesTokenV2ControllerGetTokenBalances404", + "408": "NetworkAddressesTokenV2ControllerGetTokenBalances408", + "410": "NetworkAddressesTokenV2ControllerGetTokenBalances410", + "412": "NetworkAddressesTokenV2ControllerGetTokenBalances412", + "429": "NetworkAddressesTokenV2ControllerGetTokenBalances429", + "500": "NetworkAddressesTokenV2ControllerGetTokenBalances500", + "503": "NetworkAddressesTokenV2ControllerGetTokenBalances503", + }) + ), + NetworkTokensV2ControllerGetTokens: (network, options) => + HttpClientRequest.get(`/v2/networks/${network}/addresses/tokens`).pipe( + HttpClientRequest.setUrlParams({ + enabledYieldsOnly: options?.params?.["enabledYieldsOnly"] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "NetworkTokensV2ControllerGetTokens400", + "401": "NetworkTokensV2ControllerGetTokens401", + "404": "NetworkTokensV2ControllerGetTokens404", + "408": "NetworkTokensV2ControllerGetTokens408", + "410": "NetworkTokensV2ControllerGetTokens410", + "412": "NetworkTokensV2ControllerGetTokens412", + "429": "NetworkTokensV2ControllerGetTokens429", + "500": "NetworkTokensV2ControllerGetTokens500", + "503": "NetworkTokensV2ControllerGetTokens503", + }) + ), + TokenControllerGetTokens: (options) => + HttpClientRequest.get(`/v1/tokens`).pipe( + HttpClientRequest.setUrlParams({ + enabledYieldsOnly: options?.params?.["enabledYieldsOnly"] as any, + network: options?.params?.["network"] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "TokenControllerGetTokens400", + "401": "TokenControllerGetTokens401", + "404": "TokenControllerGetTokens404", + "408": "TokenControllerGetTokens408", + "410": "TokenControllerGetTokens410", + "412": "TokenControllerGetTokens412", + "429": "TokenControllerGetTokens429", + "500": "TokenControllerGetTokens500", + "503": "TokenControllerGetTokens503", + }) + ), + TokenControllerGetTokenPrices: (options) => + HttpClientRequest.post(`/v1/tokens/prices`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params?.["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "TokenControllerGetTokenPrices400", + "401": "TokenControllerGetTokenPrices401", + "404": "TokenControllerGetTokenPrices404", + "408": "TokenControllerGetTokenPrices408", + "410": "TokenControllerGetTokenPrices410", + "412": "TokenControllerGetTokenPrices412", + "429": "TokenControllerGetTokenPrices429", + "500": "TokenControllerGetTokenPrices500", + "503": "TokenControllerGetTokenPrices503", + }) + ), + TokenControllerGetTokenBalances: (options) => + HttpClientRequest.post(`/v1/tokens/balances`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params?.["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "TokenControllerGetTokenBalances400", + "401": "TokenControllerGetTokenBalances401", + "404": "TokenControllerGetTokenBalances404", + "408": "TokenControllerGetTokenBalances408", + "410": "TokenControllerGetTokenBalances410", + "412": "TokenControllerGetTokenBalances412", + "429": "TokenControllerGetTokenBalances429", + "500": "TokenControllerGetTokenBalances500", + "503": "TokenControllerGetTokenBalances503", + }) + ), + TokenControllerTokenBalancesScan: (options) => + HttpClientRequest.post(`/v1/tokens/balances/scan`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params?.["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "TokenControllerTokenBalancesScan400", + "401": "TokenControllerTokenBalancesScan401", + "404": "TokenControllerTokenBalancesScan404", + "408": "TokenControllerTokenBalancesScan408", + "410": "TokenControllerTokenBalancesScan410", + "412": "TokenControllerTokenBalancesScan412", + "429": "TokenControllerTokenBalancesScan429", + "500": "TokenControllerTokenBalancesScan500", + "503": "TokenControllerTokenBalancesScan503", + }) + ), + CustomUrisControllerGet: (teamId, projectId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/customUris` + ).pipe(onRequest(options?.config)(["2xx"])), + CustomUrisControllerCreate: (teamId, projectId, options) => + HttpClientRequest.post( + `/v1/teams/${teamId}/projects/${projectId}/customUris` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + CustomUrisControllerDelete: (teamId, projectId, customUriId, options) => + HttpClientRequest.delete( + `/v1/teams/${teamId}/projects/${projectId}/customUris/${customUriId}` + ).pipe(onRequest(options?.config)([])), + CustomUrisControllerUpdate: (teamId, projectId, customUriId, options) => + HttpClientRequest.patch( + `/v1/teams/${teamId}/projects/${projectId}/customUris/${customUriId}` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + EnabledYieldControllerGetByProject: (teamId, projectId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/yields/enabled` + ).pipe( + HttpClientRequest.setUrlParams({ + limit: options?.params?.["limit"] as any, + page: options?.params?.["page"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + EnabledYieldControllerCreate: (teamId, projectId, options) => + HttpClientRequest.post( + `/v1/teams/${teamId}/projects/${projectId}/yields/enabled` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + EnabledYieldControllerDeleteMany: (teamId, projectId, options) => + HttpClientRequest.delete( + `/v1/teams/${teamId}/projects/${projectId}/yields/enabled` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)([]) + ), + EnabledYieldControllerDelete: (teamId, projectId, integrationId, options) => + HttpClientRequest.delete( + `/v1/teams/${teamId}/projects/${projectId}/yields/enabled/${integrationId}` + ).pipe(onRequest(options?.config)([])), + ProgrammaticEnabledYieldControllerGetByProject: (projectId, options) => + HttpClientRequest.get( + `/v1/programmatic/projects/${projectId}/yields/enabled` + ).pipe( + HttpClientRequest.setUrlParams({ + limit: options?.params?.["limit"] as any, + page: options?.params?.["page"] as any, + }), + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options?.params?.["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"]) + ), + ProgrammaticEnabledYieldControllerCreate: (projectId, options) => + HttpClientRequest.post( + `/v1/programmatic/projects/${projectId}/yields/enabled` + ).pipe( + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params?.["X-ADMIN-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticEnabledYieldControllerDeleteMany: (projectId, options) => + HttpClientRequest.delete( + `/v1/programmatic/projects/${projectId}/yields/enabled` + ).pipe( + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params?.["X-ADMIN-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)([]) + ), + ProgrammaticEnabledYieldControllerDelete: ( + projectId, + integrationId, + options + ) => + HttpClientRequest.delete( + `/v1/programmatic/projects/${projectId}/yields/enabled/${integrationId}` + ).pipe( + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options?.params?.["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options?.config)([]) + ), + OAVControllerFindAllTokens: (teamId, projectId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/oav/tokens` + ).pipe( + onRequest(options?.config)(["2xx"], { + "400": "OAVControllerFindAllTokens400", + "401": "OAVControllerFindAllTokens401", + "404": "OAVControllerFindAllTokens404", + "408": "OAVControllerFindAllTokens408", + "410": "OAVControllerFindAllTokens410", + "412": "OAVControllerFindAllTokens412", + "429": "OAVControllerFindAllTokens429", + "500": "OAVControllerFindAllTokens500", + "503": "OAVControllerFindAllTokens503", + }) + ), + OAVControllerFindYieldsByToken: (teamId, projectId, network, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/oav/yields/${network}` + ).pipe( + HttpClientRequest.setUrlParams({ + address: options?.params?.["address"] as any, + }), + onRequest(options?.config)(["2xx"], { + "400": "OAVControllerFindYieldsByToken400", + "401": "OAVControllerFindYieldsByToken401", + "408": "OAVControllerFindYieldsByToken408", + "410": "OAVControllerFindYieldsByToken410", + "412": "OAVControllerFindYieldsByToken412", + "429": "OAVControllerFindYieldsByToken429", + "500": "OAVControllerFindYieldsByToken500", + "503": "OAVControllerFindYieldsByToken503", + }) + ), + OAVControllerFindAll: (teamId, projectId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/oav` + ).pipe( + HttpClientRequest.setUrlParams({ + active: options?.params?.["active"] as any, + }), + onRequest(options?.config)(["2xx"], { + "400": "OAVControllerFindAll400", + "401": "OAVControllerFindAll401", + "404": "OAVControllerFindAll404", + "408": "OAVControllerFindAll408", + "410": "OAVControllerFindAll410", + "412": "OAVControllerFindAll412", + "429": "OAVControllerFindAll429", + "500": "OAVControllerFindAll500", + "503": "OAVControllerFindAll503", + }) + ), + OAVControllerCreate: (teamId, projectId, options) => + HttpClientRequest.post( + `/v1/teams/${teamId}/projects/${projectId}/oav` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "401": "OAVControllerCreate401", + "404": "OAVControllerCreate404", + "408": "OAVControllerCreate408", + "410": "OAVControllerCreate410", + "412": "OAVControllerCreate412", + "429": "OAVControllerCreate429", + "500": "OAVControllerCreate500", + "503": "OAVControllerCreate503", + }) + ), + OAVControllerRemove: (teamId, projectId, id, options) => + HttpClientRequest.delete( + `/v1/teams/${teamId}/projects/${projectId}/oav/${id}` + ).pipe( + onRequest(options?.config)([], { + "400": "OAVControllerRemove400", + "401": "OAVControllerRemove401", + "408": "OAVControllerRemove408", + "410": "OAVControllerRemove410", + "412": "OAVControllerRemove412", + "429": "OAVControllerRemove429", + "500": "OAVControllerRemove500", + "503": "OAVControllerRemove503", + }) + ), + OAVControllerUpdate: (teamId, projectId, id, options) => + HttpClientRequest.patch( + `/v1/teams/${teamId}/projects/${projectId}/oav/${id}` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "401": "OAVControllerUpdate401", + "408": "OAVControllerUpdate408", + "410": "OAVControllerUpdate410", + "412": "OAVControllerUpdate412", + "429": "OAVControllerUpdate429", + "500": "OAVControllerUpdate500", + "503": "OAVControllerUpdate503", + }) + ), + NetworkAddressesPositionsV2ControllerGetPositions: ( + network, + address, + options + ) => + HttpClientRequest.get( + `/v2/networks/${network}/addresses/${address}/positions` + ).pipe( + HttpClientRequest.setUrlParams({ + currency: options.params["currency"] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params["X-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"]) + ), + YieldControllerYields: (options) => + HttpClientRequest.get(`/v1/yields`).pipe( + HttpClientRequest.setUrlParams({ + preferredValidatorsOnly: options?.params?.[ + "preferredValidatorsOnly" + ] as any, + ledgerWalletAPICompatible: options?.params?.[ + "ledgerWalletAPICompatible" + ] as any, + type: options?.params?.["type"] as any, + sortBy: options?.params?.["sortBy"] as any, + revenueOption: options?.params?.["revenueOption"] as any, + page: options?.params?.["page"] as any, + chainId: options?.params?.["chainId"] as any, + network: options?.params?.["network"] as any, + limit: options?.params?.["limit"] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "YieldControllerYields400", + "401": "YieldControllerYields401", + "404": "YieldControllerYields404", + "408": "YieldControllerYields408", + "410": "YieldControllerYields410", + "412": "YieldControllerYields412", + "429": "YieldControllerYields429", + "500": "YieldControllerYields500", + "503": "YieldControllerYields503", + }) + ), + YieldControllerGetMultipleYieldBalances: (options) => + HttpClientRequest.post(`/v1/yields/balances`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params?.["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "YieldControllerGetMultipleYieldBalances400", + "401": "YieldControllerGetMultipleYieldBalances401", + "404": "YieldControllerGetMultipleYieldBalances404", + "408": "YieldControllerGetMultipleYieldBalances408", + "410": "YieldControllerGetMultipleYieldBalances410", + "412": "YieldControllerGetMultipleYieldBalances412", + "429": "YieldControllerGetMultipleYieldBalances429", + "500": "YieldControllerGetMultipleYieldBalances500", + "503": "YieldControllerGetMultipleYieldBalances503", + }) + ), + YieldControllerYieldBalancesScan: (options) => + HttpClientRequest.post(`/v1/yields/balances/scan`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params?.["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "YieldControllerYieldBalancesScan400", + "401": "YieldControllerYieldBalancesScan401", + "404": "YieldControllerYieldBalancesScan404", + "408": "YieldControllerYieldBalancesScan408", + "410": "YieldControllerYieldBalancesScan410", + "412": "YieldControllerYieldBalancesScan412", + "429": "YieldControllerYieldBalancesScan429", + "500": "YieldControllerYieldBalancesScan500", + "503": "YieldControllerYieldBalancesScan503", + }) + ), + YieldControllerYieldBalancesScanEvm: (options) => + HttpClientRequest.post(`/v1/yields/balances/scan/evm`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params?.["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "YieldControllerYieldBalancesScanEvm400", + "401": "YieldControllerYieldBalancesScanEvm401", + "404": "YieldControllerYieldBalancesScanEvm404", + "408": "YieldControllerYieldBalancesScanEvm408", + "410": "YieldControllerYieldBalancesScanEvm410", + "412": "YieldControllerYieldBalancesScanEvm412", + "429": "YieldControllerYieldBalancesScanEvm429", + "500": "YieldControllerYieldBalancesScanEvm500", + "503": "YieldControllerYieldBalancesScanEvm503", + }) + ), + YieldControllerGetMyYields: (options) => + HttpClientRequest.get(`/v1/yields/enabled`).pipe( + HttpClientRequest.setUrlParams({ + preferredValidatorsOnly: options?.params?.[ + "preferredValidatorsOnly" + ] as any, + ledgerWalletAPICompatible: options?.params?.[ + "ledgerWalletAPICompatible" + ] as any, + type: options?.params?.["type"] as any, + sortBy: options?.params?.["sortBy"] as any, + network: options?.params?.["network"] as any, + page: options?.params?.["page"] as any, + limit: options?.params?.["limit"] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "YieldControllerGetMyYields400", + "401": "YieldControllerGetMyYields401", + "404": "YieldControllerGetMyYields404", + "408": "YieldControllerGetMyYields408", + "410": "YieldControllerGetMyYields410", + "412": "YieldControllerGetMyYields412", + "429": "YieldControllerGetMyYields429", + "500": "YieldControllerGetMyYields500", + "503": "YieldControllerGetMyYields503", + }) + ), + YieldControllerGetMyNetworks: (options) => + HttpClientRequest.get(`/v1/yields/enabled/networks`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "YieldControllerGetMyNetworks400", + "401": "YieldControllerGetMyNetworks401", + "404": "YieldControllerGetMyNetworks404", + "408": "YieldControllerGetMyNetworks408", + "410": "YieldControllerGetMyNetworks410", + "412": "YieldControllerGetMyNetworks412", + "429": "YieldControllerGetMyNetworks429", + "500": "YieldControllerGetMyNetworks500", + "503": "YieldControllerGetMyNetworks503", + }) + ), + YieldControllerFindValidators: (options) => + HttpClientRequest.get(`/v1/yields/validators`).pipe( + HttpClientRequest.setUrlParams({ + ledgerWalletAPICompatible: options?.params?.[ + "ledgerWalletAPICompatible" + ] as any, + network: options?.params?.["network"] as any, + query: options?.params?.["query"] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "YieldControllerFindValidators400", + "401": "YieldControllerFindValidators401", + "404": "YieldControllerFindValidators404", + "408": "YieldControllerFindValidators408", + "410": "YieldControllerFindValidators410", + "412": "YieldControllerFindValidators412", + "429": "YieldControllerFindValidators429", + "500": "YieldControllerFindValidators500", + "503": "YieldControllerFindValidators503", + }) + ), + YieldControllerYieldOpportunity: (integrationId, options) => + HttpClientRequest.get(`/v1/yields/${integrationId}`).pipe( + HttpClientRequest.setUrlParams({ + preferredValidatorsOnly: options?.params?.[ + "preferredValidatorsOnly" + ] as any, + ledgerWalletAPICompatible: options?.params?.[ + "ledgerWalletAPICompatible" + ] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "YieldControllerYieldOpportunity400", + "401": "YieldControllerYieldOpportunity401", + "404": "YieldControllerYieldOpportunity404", + "408": "YieldControllerYieldOpportunity408", + "410": "YieldControllerYieldOpportunity410", + "412": "YieldControllerYieldOpportunity412", + "429": "YieldControllerYieldOpportunity429", + "500": "YieldControllerYieldOpportunity500", + "503": "YieldControllerYieldOpportunity503", + }) + ), + YieldControllerGetValidators: (integrationId, options) => + HttpClientRequest.get(`/v1/yields/${integrationId}/validators`).pipe( + HttpClientRequest.setUrlParams({ + preferredValidatorsOnly: options?.params?.[ + "preferredValidatorsOnly" + ] as any, + ledgerWalletAPICompatible: options?.params?.[ + "ledgerWalletAPICompatible" + ] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "YieldControllerGetValidators400", + "401": "YieldControllerGetValidators401", + "404": "YieldControllerGetValidators404", + "408": "YieldControllerGetValidators408", + "410": "YieldControllerGetValidators410", + "412": "YieldControllerGetValidators412", + "429": "YieldControllerGetValidators429", + "500": "YieldControllerGetValidators500", + "503": "YieldControllerGetValidators503", + }) + ), + YieldControllerGetSingleYieldBalances: (integrationId, options) => + HttpClientRequest.post(`/v1/yields/${integrationId}/balances`).pipe( + HttpClientRequest.setUrlParams({ + ledgerWalletAPICompatible: options.params?.[ + "ledgerWalletAPICompatible" + ] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params?.["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "YieldControllerGetSingleYieldBalances400", + "401": "YieldControllerGetSingleYieldBalances401", + "404": "YieldControllerGetSingleYieldBalances404", + "408": "YieldControllerGetSingleYieldBalances408", + "410": "YieldControllerGetSingleYieldBalances410", + "412": "YieldControllerGetSingleYieldBalances412", + "429": "YieldControllerGetSingleYieldBalances429", + "500": "YieldControllerGetSingleYieldBalances500", + "503": "YieldControllerGetSingleYieldBalances503", + }) + ), + YieldControllerGetSingleYieldRewardsSummary: (integrationId, options) => + HttpClientRequest.post( + `/v1/yields/${integrationId}/rewards-summary` + ).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params?.["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "YieldControllerGetSingleYieldRewardsSummary400", + "401": "YieldControllerGetSingleYieldRewardsSummary401", + "404": "YieldControllerGetSingleYieldRewardsSummary404", + "408": "YieldControllerGetSingleYieldRewardsSummary408", + "410": "YieldControllerGetSingleYieldRewardsSummary410", + "412": "YieldControllerGetSingleYieldRewardsSummary412", + "429": "YieldControllerGetSingleYieldRewardsSummary429", + "500": "YieldControllerGetSingleYieldRewardsSummary500", + "503": "YieldControllerGetSingleYieldRewardsSummary503", + }) + ), + YieldControllerGetFeeConfiguration: (integrationId, options) => + HttpClientRequest.get( + `/v1/yields/${integrationId}/fee-configuration` + ).pipe( + onRequest(options?.config)(["2xx"], { + "400": "YieldControllerGetFeeConfiguration400", + "401": "YieldControllerGetFeeConfiguration401", + "408": "YieldControllerGetFeeConfiguration408", + "410": "YieldControllerGetFeeConfiguration410", + "412": "YieldControllerGetFeeConfiguration412", + "429": "YieldControllerGetFeeConfiguration429", + "500": "YieldControllerGetFeeConfiguration500", + "503": "YieldControllerGetFeeConfiguration503", + }) + ), + YieldControllerCreateFeeConfiguration: (integrationId, options) => + HttpClientRequest.post( + `/v1/yields/${integrationId}/fee-configuration` + ).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params["X-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "YieldControllerCreateFeeConfiguration400", + "401": "YieldControllerCreateFeeConfiguration401", + "404": "YieldControllerCreateFeeConfiguration404", + "408": "YieldControllerCreateFeeConfiguration408", + "410": "YieldControllerCreateFeeConfiguration410", + "412": "YieldControllerCreateFeeConfiguration412", + "429": "YieldControllerCreateFeeConfiguration429", + "500": "YieldControllerCreateFeeConfiguration500", + "503": "YieldControllerCreateFeeConfiguration503", + }) + ), + YieldV2ControllerYields: (options) => + HttpClientRequest.get(`/v2/yields`).pipe( + HttpClientRequest.setUrlParams({ + providerId: options?.params?.["providerId"] as any, + inputToken: options?.params?.["inputToken"] as any, + enterStatus: options?.params?.["enterStatus"] as any, + preferredValidatorsOnly: options?.params?.[ + "preferredValidatorsOnly" + ] as any, + ledgerWalletAPICompatible: options?.params?.[ + "ledgerWalletAPICompatible" + ] as any, + type: options?.params?.["type"] as any, + sortBy: options?.params?.["sortBy"] as any, + revenueOption: options?.params?.["revenueOption"] as any, + page: options?.params?.["page"] as any, + network: options?.params?.["network"] as any, + limit: options?.params?.["limit"] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "YieldV2ControllerYields400", + "401": "YieldV2ControllerYields401", + "404": "YieldV2ControllerYields404", + "408": "YieldV2ControllerYields408", + "410": "YieldV2ControllerYields410", + "412": "YieldV2ControllerYields412", + "429": "YieldV2ControllerYields429", + "500": "YieldV2ControllerYields500", + "503": "YieldV2ControllerYields503", + }) + ), + YieldV2ControllerGetYieldById: (yieldId, options) => + HttpClientRequest.get(`/v2/yields/${yieldId}`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "YieldV2ControllerGetYieldById400", + "401": "YieldV2ControllerGetYieldById401", + "404": "YieldV2ControllerGetYieldById404", + "408": "YieldV2ControllerGetYieldById408", + "410": "YieldV2ControllerGetYieldById410", + "412": "YieldV2ControllerGetYieldById412", + "429": "YieldV2ControllerGetYieldById429", + "500": "YieldV2ControllerGetYieldById500", + "503": "YieldV2ControllerGetYieldById503", + }) + ), + YieldV2ControllerFindYieldValidators: (yieldId, options) => + HttpClientRequest.get(`/v2/yields/${yieldId}/validators`).pipe( + HttpClientRequest.setUrlParams({ + ledgerWalletAPICompatible: options?.params?.[ + "ledgerWalletAPICompatible" + ] as any, + network: options?.params?.["network"] as any, + query: options?.params?.["query"] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "YieldV2ControllerFindYieldValidators400", + "401": "YieldV2ControllerFindYieldValidators401", + "404": "YieldV2ControllerFindYieldValidators404", + "408": "YieldV2ControllerFindYieldValidators408", + "410": "YieldV2ControllerFindYieldValidators410", + "412": "YieldV2ControllerFindYieldValidators412", + "429": "YieldV2ControllerFindYieldValidators429", + "500": "YieldV2ControllerFindYieldValidators500", + "503": "YieldV2ControllerFindYieldValidators503", + }) + ), + YieldV2ControllerFindValidators: (options) => + HttpClientRequest.get(`/v2/yields/validators`).pipe( + HttpClientRequest.setUrlParams({ + preferredValidatorsOnly: options?.params?.[ + "preferredValidatorsOnly" + ] as any, + ledgerWalletAPICompatible: options?.params?.[ + "ledgerWalletAPICompatible" + ] as any, + network: options?.params?.["network"] as any, + query: options?.params?.["query"] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "400": "YieldV2ControllerFindValidators400", + "401": "YieldV2ControllerFindValidators401", + "404": "YieldV2ControllerFindValidators404", + "408": "YieldV2ControllerFindValidators408", + "410": "YieldV2ControllerFindValidators410", + "412": "YieldV2ControllerFindValidators412", + "429": "YieldV2ControllerFindValidators429", + "500": "YieldV2ControllerFindValidators500", + "503": "YieldV2ControllerFindValidators503", + }) + ), + YieldV2ControllerGetFeeConfigurations: (integrationId, options) => + HttpClientRequest.get( + `/v2/yields/${integrationId}/fee-configurations` + ).pipe( + HttpClientRequest.setUrlParams({ + page: options?.params?.["page"] as any, + limit: options?.params?.["limit"] as any, + }), + onRequest(options?.config)(["2xx"], { + "400": "YieldV2ControllerGetFeeConfigurations400", + "401": "YieldV2ControllerGetFeeConfigurations401", + "408": "YieldV2ControllerGetFeeConfigurations408", + "410": "YieldV2ControllerGetFeeConfigurations410", + "412": "YieldV2ControllerGetFeeConfigurations412", + "429": "YieldV2ControllerGetFeeConfigurations429", + "500": "YieldV2ControllerGetFeeConfigurations500", + "503": "YieldV2ControllerGetFeeConfigurations503", + }) + ), + EarnControllerGetStakes: (network, options) => + HttpClientRequest.get(`/v1/earn/${network}/stakes`).pipe( + HttpClientRequest.setUrlParams({ + stake_addresses: options.params["stake_addresses"] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options.params["X-API-KEY"] ?? undefined, + }), + onRequest(options.config)(["2xx"], { + "400": "EarnControllerGetStakes400", + "401": "EarnControllerGetStakes401", + "404": "EarnControllerGetStakes404", + "500": "EarnControllerGetStakes500", + }) + ), + EarnControllerGetGrow: (options) => + HttpClientRequest.get(`/v1/earn/grow`).pipe( + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"], { + "401": "EarnControllerGetGrow401", + "404": "EarnControllerGetGrow404", + "500": "EarnControllerGetGrow500", + }) + ), + FeeConfigurationControllerGet: (teamId, projectId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/fee-configuration` + ).pipe( + HttpClientRequest.setUrlParams({ + sort: options?.params?.["sort"] as any, + limit: options?.params?.["limit"] as any, + page: options?.params?.["page"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + FeeConfigurationControllerCreate: (teamId, projectId, options) => + HttpClientRequest.post( + `/v1/teams/${teamId}/projects/${projectId}/fee-configuration` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + FeeConfigurationControllerDelete: ( + teamId, + projectId, + feeConfigurationId, + options + ) => + HttpClientRequest.delete( + `/v1/teams/${teamId}/projects/${projectId}/fee-configuration/${feeConfigurationId}` + ).pipe(onRequest(options?.config)([])), + FeeConfigurationControllerUpdate: ( + teamId, + projectId, + feeConfigurationId, + options + ) => + HttpClientRequest.patch( + `/v1/teams/${teamId}/projects/${projectId}/fee-configuration/${feeConfigurationId}` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)([]) + ), + ProgrammaticFeeConfigurationControllerGet: (projectId, options) => + HttpClientRequest.get( + `/v1/programmatic/projects/${projectId}/fee-configuration` + ).pipe( + HttpClientRequest.setUrlParams({ + limit: options?.params?.["limit"] as any, + page: options?.params?.["page"] as any, + }), + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options?.params?.["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"]) + ), + ProgrammaticFeeConfigurationControllerCreate: (projectId, options) => + HttpClientRequest.post( + `/v1/programmatic/projects/${projectId}/fee-configuration` + ).pipe( + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params?.["X-ADMIN-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + ProgrammaticFeeConfigurationControllerDelete: ( + projectId, + feeConfigurationId, + options + ) => + HttpClientRequest.delete( + `/v1/programmatic/projects/${projectId}/fee-configuration/${feeConfigurationId}` + ).pipe( + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options?.params?.["X-ADMIN-API-KEY"] ?? undefined, + }), + onRequest(options?.config)([]) + ), + ProgrammaticFeeConfigurationControllerUpdate: ( + projectId, + feeConfigurationId, + options + ) => + HttpClientRequest.patch( + `/v1/programmatic/projects/${projectId}/fee-configuration/${feeConfigurationId}` + ).pipe( + HttpClientRequest.setHeaders({ + "X-ADMIN-API-KEY": options.params?.["X-ADMIN-API-KEY"] ?? undefined, + }), + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)([]) + ), + RiskParametersControllerFindMany: (options) => + HttpClientRequest.get(`/v1/risk-parameters`).pipe( + HttpClientRequest.setUrlParams({ + limit: options?.params?.["limit"] as any, + page: options?.params?.["page"] as any, + isDynamic: options?.params?.["isDynamic"] as any, + integrationId: options?.params?.["integrationId"] as any, + protocol: options?.params?.["protocol"] as any, + asset: options?.params?.["asset"] as any, + network: options?.params?.["network"] as any, + item: options?.params?.["item"] as any, + category: options?.params?.["category"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + RiskParametersControllerCreate: (options) => + HttpClientRequest.post(`/v1/risk-parameters`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + RiskParametersControllerFindOne: (riskParameterId, options) => + HttpClientRequest.get(`/v1/risk-parameters/${riskParameterId}`).pipe( + onRequest(options?.config)(["2xx"]) + ), + RiskParametersControllerDelete: (riskParameterId, options) => + HttpClientRequest.delete(`/v1/risk-parameters/${riskParameterId}`).pipe( + onRequest(options?.config)([]) + ), + RiskParametersControllerUpdate: (riskParameterId, options) => + HttpClientRequest.patch(`/v1/risk-parameters/${riskParameterId}`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + ShieldRegistryControllerGetRegistry: (options) => + HttpClientRequest.get(`/v1/shield/registry`).pipe( + onRequest(options?.config)([]) + ), + SsoControllerInitiate: (options) => + HttpClientRequest.post(`/v1/auth/sso/initiate`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + SsoControllerOidcCallback: (options) => + HttpClientRequest.get(`/v1/auth/sso/callback/oidc`).pipe( + HttpClientRequest.setUrlParams({ + code: options.params["code"] as any, + state: options.params["state"] as any, + }), + onRequest(options.config)([]) + ), + SsoConfigControllerGet: (teamId, options) => + HttpClientRequest.get(`/v1/teams/${teamId}/sso`).pipe( + onRequest(options?.config)(["2xx"]) + ), + SsoConfigControllerUpsert: (teamId, options) => + HttpClientRequest.put(`/v1/teams/${teamId}/sso`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + SsoConfigControllerDelete: (teamId, options) => + HttpClientRequest.delete(`/v1/teams/${teamId}/sso`).pipe( + onRequest(options?.config)([]) + ), + MfaControllerSetup: (options) => + HttpClientRequest.post(`/v1/auth/mfa/setup`).pipe( + onRequest(options?.config)(["2xx"]) + ), + MfaControllerVerifySetup: (options) => + HttpClientRequest.post(`/v1/auth/mfa/verify-setup`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + MfaControllerBeginReenrollment: (options) => + HttpClientRequest.post(`/v1/auth/mfa/begin-reenrollment`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)([]) + ), + MfaControllerGetStatus: (options) => + HttpClientRequest.get(`/v1/auth/mfa/status`).pipe( + onRequest(options?.config)(["2xx"]) + ), + MfaControllerVerify: (options) => + HttpClientRequest.post(`/v1/auth/mfa/verify`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + MfaControllerRecover: (options) => + HttpClientRequest.post(`/v1/auth/mfa/recover`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + MfaControllerDisable: (options) => + HttpClientRequest.post(`/v1/auth/mfa/disable`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)([]) + ), + PerpsFeeConfigurationControllerGet: (teamId, projectId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/perps-fee-configuration` + ).pipe(onRequest(options?.config)(["2xx"])), + PerpsFeeConfigurationControllerCreate: (teamId, projectId, options) => + HttpClientRequest.post( + `/v1/teams/${teamId}/projects/${projectId}/perps-fee-configuration` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + PerpsFeeConfigurationControllerDelete: (teamId, projectId, options) => + HttpClientRequest.delete( + `/v1/teams/${teamId}/projects/${projectId}/perps-fee-configuration` + ).pipe(onRequest(options?.config)([])), + PerpsFeeConfigurationControllerUpdate: (teamId, projectId, options) => + HttpClientRequest.patch( + `/v1/teams/${teamId}/projects/${projectId}/perps-fee-configuration` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + ValidatorControllerFindAllProviders: (options) => + HttpClientRequest.get(`/v1/validator/providers`).pipe( + HttpClientRequest.setUrlParams({ + limit: options?.params?.["limit"] as any, + page: options?.params?.["page"] as any, + preferred: options?.params?.["preferred"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + ValidatorControllerCreateProvider: (options) => + HttpClientRequest.post(`/v1/validator/providers`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + ValidatorControllerFindOneProvider: (id, options) => + HttpClientRequest.get(`/v1/validator/providers/${id}`).pipe( + onRequest(options?.config)(["2xx"]) + ), + ValidatorControllerUpdateProvider: (id, options) => + HttpClientRequest.put(`/v1/validator/providers/${id}`).pipe( + HttpClientRequest.bodyFormDataRecord(options.payload as any), + onRequest(options.config)(["2xx"]) + ), + ValidatorControllerRemoveProvider: (id, options) => + HttpClientRequest.delete(`/v1/validator/providers/${id}`).pipe( + onRequest(options?.config)([]) + ), + ValidatorControllerGetAllHistoricalRevshareChanges: (options) => + HttpClientRequest.get(`/v1/validator/historical-revshare-changes`).pipe( + HttpClientRequest.setUrlParams({ + validatorId: options.params["validatorId"] as any, + limit: options.params["limit"] as any, + page: options.params["page"] as any, + }), + onRequest(options.config)(["2xx"]) + ), + ValidatorControllerUpdateHistoricalRevshareChange: (id, options) => + HttpClientRequest.put( + `/v1/validator/historical-revshare-changes/${id}` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + ValidatorControllerFindAll: (options) => + HttpClientRequest.get(`/v1/validator`).pipe( + HttpClientRequest.setUrlParams({ + integrationId: options?.params?.["integrationId"] as any, + providerId: options?.params?.["providerId"] as any, + address: options?.params?.["address"] as any, + limit: options?.params?.["limit"] as any, + page: options?.params?.["page"] as any, + excludeNotFound: options?.params?.["excludeNotFound"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + ValidatorControllerCreate: (options) => + HttpClientRequest.post(`/v1/validator`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + ValidatorControllerFindOne: (id, options) => + HttpClientRequest.get(`/v1/validator/${id}`).pipe( + onRequest(options?.config)(["2xx"]) + ), + ValidatorControllerUpdate: (id, options) => + HttpClientRequest.put(`/v1/validator/${id}`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + ValidatorControllerRemove: (id, options) => + HttpClientRequest.delete(`/v1/validator/${id}`).pipe( + onRequest(options?.config)([]) + ), + AdminApiKeysControllerFindAll: (options) => + HttpClientRequest.get(`/v1/programmatic-api-keys`).pipe( + onRequest(options?.config)(["2xx"]) + ), + AdminApiKeysControllerCreate: (options) => + HttpClientRequest.post(`/v1/programmatic-api-keys`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + AdminApiKeysControllerFindOne: (id, options) => + HttpClientRequest.get(`/v1/programmatic-api-keys/${id}`).pipe( + onRequest(options?.config)(["2xx"]) + ), + AdminApiKeysControllerRemove: (id, options) => + HttpClientRequest.delete(`/v1/programmatic-api-keys/${id}`).pipe( + onRequest(options?.config)([]) + ), + AdminApiKeysControllerUpdate: (id, options) => + HttpClientRequest.patch(`/v1/programmatic-api-keys/${id}`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + WebhooksControllerGetEndpoints: (teamId, projectId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/webhooks/endpoints` + ).pipe( + onRequest(options?.config)(["2xx"], { + "400": "WebhooksControllerGetEndpoints400", + "500": "WebhooksControllerGetEndpoints500", + }) + ), + WebhooksControllerCreateEndpoint: (teamId, projectId, options) => + HttpClientRequest.post( + `/v1/teams/${teamId}/projects/${projectId}/webhooks/endpoints` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "WebhooksControllerCreateEndpoint400", + "500": "WebhooksControllerCreateEndpoint500", + }) + ), + WebhooksControllerGetEndpoint: (teamId, projectId, endpointId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/webhooks/endpoints/${endpointId}` + ).pipe( + onRequest(options?.config)(["2xx"], { + "400": "WebhooksControllerGetEndpoint400", + "500": "WebhooksControllerGetEndpoint500", + }) + ), + WebhooksControllerDeleteEndpoint: ( + teamId, + projectId, + endpointId, + options + ) => + HttpClientRequest.delete( + `/v1/teams/${teamId}/projects/${projectId}/webhooks/endpoints/${endpointId}` + ).pipe( + onRequest(options?.config)([], { + "500": "WebhooksControllerDeleteEndpoint500", + }) + ), + WebhooksControllerUpdateEndpoint: ( + teamId, + projectId, + endpointId, + options + ) => + HttpClientRequest.patch( + `/v1/teams/${teamId}/projects/${projectId}/webhooks/endpoints/${endpointId}` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "WebhooksControllerUpdateEndpoint400", + "500": "WebhooksControllerUpdateEndpoint500", + }) + ), + WebhooksControllerSetEndpointEnabled: ( + teamId, + projectId, + endpointId, + options + ) => + HttpClientRequest.patch( + `/v1/teams/${teamId}/projects/${projectId}/webhooks/endpoints/${endpointId}/enabled` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "WebhooksControllerSetEndpointEnabled400", + "500": "WebhooksControllerSetEndpointEnabled500", + }) + ), + WebhooksControllerGetSubscriptions: ( + teamId, + projectId, + endpointId, + options + ) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/webhooks/endpoints/${endpointId}/subscriptions` + ).pipe( + onRequest(options?.config)(["2xx"], { + "400": "WebhooksControllerGetSubscriptions400", + "500": "WebhooksControllerGetSubscriptions500", + }) + ), + WebhooksControllerCreateSubscription: ( + teamId, + projectId, + endpointId, + options + ) => + HttpClientRequest.post( + `/v1/teams/${teamId}/projects/${projectId}/webhooks/endpoints/${endpointId}/subscriptions` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "WebhooksControllerCreateSubscription400", + "500": "WebhooksControllerCreateSubscription500", + }) + ), + WebhooksControllerGetSubscription: ( + teamId, + projectId, + subscriptionId, + options + ) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/webhooks/subscriptions/${subscriptionId}` + ).pipe( + onRequest(options?.config)(["2xx"], { + "400": "WebhooksControllerGetSubscription400", + "500": "WebhooksControllerGetSubscription500", + }) + ), + WebhooksControllerDeleteSubscription: ( + teamId, + projectId, + subscriptionId, + options + ) => + HttpClientRequest.delete( + `/v1/teams/${teamId}/projects/${projectId}/webhooks/subscriptions/${subscriptionId}` + ).pipe( + onRequest(options?.config)([], { + "400": "WebhooksControllerDeleteSubscription400", + "500": "WebhooksControllerDeleteSubscription500", + }) + ), + WebhooksControllerUpdateSubscription: ( + teamId, + projectId, + subscriptionId, + options + ) => + HttpClientRequest.patch( + `/v1/teams/${teamId}/projects/${projectId}/webhooks/subscriptions/${subscriptionId}` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "WebhooksControllerUpdateSubscription400", + "500": "WebhooksControllerUpdateSubscription500", + }) + ), + WebhooksControllerGetEndpointDeliveries: ( + teamId, + projectId, + endpointId, + options + ) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/webhooks/endpoints/${endpointId}/deliveries` + ).pipe( + onRequest(options?.config)(["2xx"], { + "400": "WebhooksControllerGetEndpointDeliveries400", + "500": "WebhooksControllerGetEndpointDeliveries500", + }) + ), + WebhooksControllerGetDelivery: (teamId, projectId, deliveryId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/webhooks/deliveries/${deliveryId}` + ).pipe( + onRequest(options?.config)(["2xx"], { + "400": "WebhooksControllerGetDelivery400", + "500": "WebhooksControllerGetDelivery500", + }) + ), + WebhooksControllerGetEvent: (teamId, projectId, eventId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/webhooks/events/${eventId}` + ).pipe( + onRequest(options?.config)(["2xx"], { + "400": "WebhooksControllerGetEvent400", + "500": "WebhooksControllerGetEvent500", + }) + ), + TradeProviderConfigurationControllerList: (teamId, projectId, options) => + HttpClientRequest.get( + `/v1/teams/${teamId}/projects/${projectId}/trade/providers` + ).pipe(onRequest(options?.config)(["2xx"])), + TradeProviderConfigurationControllerUpdate: ( + teamId, + projectId, + providerId, + options + ) => + HttpClientRequest.put( + `/v1/teams/${teamId}/projects/${projectId}/trade/providers/${providerId}` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + YieldStatusControllerUpsert: (integrationId, options) => + HttpClientRequest.put(`/v1/yield-status/${integrationId}`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"]) + ), + YieldStatusControllerRemove: (integrationId, options) => + HttpClientRequest.delete(`/v1/yield-status/${integrationId}`).pipe( + onRequest(options?.config)([]) + ), + YieldStatusControllerFindAll: (options) => + HttpClientRequest.get(`/v1/yield-status`).pipe( + HttpClientRequest.setUrlParams({ + offset: options?.params?.["offset"] as any, + limit: options?.params?.["limit"] as any, + }), + onRequest(options?.config)(["2xx"]) + ), + NetworksV2ControllerGetNetworks: (options) => + HttpClientRequest.get(`/v2/networks`).pipe( + HttpClientRequest.setUrlParams({ + limit: options?.params?.["limit"] as any, + page: options?.params?.["page"] as any, + }), + HttpClientRequest.setHeaders({ + "X-API-KEY": options?.params?.["X-API-KEY"] ?? undefined, + }), + onRequest(options?.config)(["2xx"]) + ), + }; +}; + +export interface LegacyApi { + readonly httpClient: HttpClient.HttpClient; + readonly AuthControllerRequestLoginCode: < + Config extends OperationConfig, + >(options: { + readonly payload: AuthControllerRequestLoginCodeRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly AuthControllerVerifyLoginCode: < + Config extends OperationConfig, + >(options: { + readonly payload: AuthControllerVerifyLoginCodeRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly AuthControllerConfirmEmail: < + Config extends OperationConfig, + >(options: { + readonly payload: AuthControllerConfirmEmailRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly AuthControllerMe: ( + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly AuthControllerUpdate: (options: { + readonly payload: AuthControllerUpdateRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CampaignControllerList: ( + teamId: string, + projectId: string, + options: + | { + readonly params?: CampaignControllerListParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CampaignControllerCreate: ( + teamId: string, + projectId: string, + options: { + readonly payload: CampaignControllerCreateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CampaignControllerGetById: ( + teamId: string, + projectId: string, + campaignId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CampaignControllerUpdate: ( + teamId: string, + projectId: string, + campaignId: string, + options: { + readonly payload: CampaignControllerUpdateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CampaignControllerPause: ( + teamId: string, + projectId: string, + campaignId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CampaignControllerResume: ( + teamId: string, + projectId: string, + campaignId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CampaignControllerEnd: ( + teamId: string, + projectId: string, + campaignId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CampaignControllerGetSummary: ( + teamId: string, + projectId: string, + campaignId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CampaignControllerGetLiability: ( + teamId: string, + projectId: string, + campaignId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CampaignControllerGetBudgetProjection: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + campaignId: string, + options: + | { + readonly params?: + | CampaignControllerGetBudgetProjectionParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CampaignControllerSetUserPayoutEligibility: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + campaignId: string, + address: string, + options: { + readonly payload: CampaignControllerSetUserPayoutEligibilityRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CampaignControllerGetUserEntitlement: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + campaignId: string, + address: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CampaignControllerGetPayoutRuns: ( + teamId: string, + projectId: string, + campaignId: string, + options: + | { + readonly params?: CampaignControllerGetPayoutRunsParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CampaignControllerGetPayoutRunDetail: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + campaignId: string, + runId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CampaignControllerGetPayoutAudit: ( + teamId: string, + projectId: string, + campaignId: string, + options: + | { + readonly params?: CampaignControllerGetPayoutAuditParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CampaignControllerGetWeeklyDistribution: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + campaignId: string, + options: + | { + readonly params?: + | CampaignControllerGetWeeklyDistributionParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CampaignControllerGetEligibleUsers: ( + teamId: string, + projectId: string, + campaignId: string, + options: + | { + readonly params?: + | CampaignControllerGetEligibleUsersParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * List campaign configuration requests for a project + */ + readonly CampaignConfigurationRequestControllerListForProject: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + options: + | { + readonly params?: + | CampaignConfigurationRequestControllerListForProjectParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse< + CampaignConfigurationRequestControllerListForProject200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Submit a campaign configuration request + */ + readonly CampaignConfigurationRequestControllerCreate: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + options: { + readonly payload: CampaignConfigurationRequestControllerCreateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + CampaignConfigurationRequestControllerCreate201, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Get a single campaign configuration request + */ + readonly CampaignConfigurationRequestControllerGetById: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + requestId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse< + CampaignConfigurationRequestControllerGetById200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * List campaign configuration requests for a specific campaign + */ + readonly CampaignConfigurationRequestControllerListForCampaign: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + campaignId: string, + options: + | { + readonly params?: + | CampaignConfigurationRequestControllerListForCampaignParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse< + CampaignConfigurationRequestControllerListForCampaign200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Accept a pending campaign configuration request + */ + readonly CampaignConfigurationRequestControllerAccept: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + requestId: string, + options: { + readonly payload: CampaignConfigurationRequestControllerAcceptRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + CampaignConfigurationRequestControllerAccept200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Reject a pending campaign configuration request + */ + readonly CampaignConfigurationRequestControllerReject: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + requestId: string, + options: { + readonly payload: CampaignConfigurationRequestControllerRejectRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + CampaignConfigurationRequestControllerReject200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * List pending campaign configuration requests across all projects (SuperAdmin). + */ + readonly CampaignConfigurationRequestAdminControllerList: < + Config extends OperationConfig, + >( + options: + | { + readonly params?: + | CampaignConfigurationRequestAdminControllerListParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse< + CampaignConfigurationRequestAdminControllerList200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * List campaigns for a project + */ + readonly ProgrammaticCampaignControllerListCampaigns: < + Config extends OperationConfig, + >( + projectId: string, + options: { + readonly params: ProgrammaticCampaignControllerListCampaignsParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + ProgrammaticCampaignControllerListCampaigns200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Returns a paginated list of per-hour accrual summaries. When `runId` is provided, only entries within the actual window settled by that payout run are returned. + */ + readonly ProgrammaticCampaignControllerGetAccrualDetails: < + Config extends OperationConfig, + >( + projectId: string, + campaignId: string, + options: { + readonly params: ProgrammaticCampaignControllerGetAccrualDetailsParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + ProgrammaticCampaignControllerGetAccrualDetails200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Returns summary plus paginated per-user detail for a specific 1-based hour index. + */ + readonly ProgrammaticCampaignControllerGetAccrualDetailForHour: < + Config extends OperationConfig, + >( + projectId: string, + campaignId: string, + hour: string, + options: { + readonly params: ProgrammaticCampaignControllerGetAccrualDetailForHourParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + ProgrammaticCampaignControllerGetAccrualDetailForHour200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Per-hour qualification status, raw balance, capped balance, reward earned, and running cumulative total. + */ + readonly ProgrammaticCampaignControllerGetUserAccrualHistory: < + Config extends OperationConfig, + >( + projectId: string, + campaignId: string, + address: string, + options: { + readonly params: ProgrammaticCampaignControllerGetUserAccrualHistoryParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + ProgrammaticCampaignControllerGetUserAccrualHistory200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Lists all payout runs with recipient count and Safe tx status per run. + */ + readonly ProgrammaticCampaignControllerGetPayoutRuns: < + Config extends OperationConfig, + >( + projectId: string, + campaignId: string, + options: { + readonly params: ProgrammaticCampaignControllerGetPayoutRunsParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + ProgrammaticCampaignControllerGetPayoutRuns200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Per-recipient amounts and statuses, Safe tx details, and budget state before/after the run. + */ + readonly ProgrammaticCampaignControllerGetPayoutRunDetail: < + Config extends OperationConfig, + >( + projectId: string, + campaignId: string, + runId: string, + options: { + readonly params: ProgrammaticCampaignControllerGetPayoutRunDetailParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + ProgrammaticCampaignControllerGetPayoutRunDetail200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Per-recipient amounts and statuses scoped to a single Safe-tx batch within a payout run, plus the Safe transaction record for that batch. + */ + readonly ProgrammaticCampaignControllerGetPayoutBatchDetail: < + Config extends OperationConfig, + >( + projectId: string, + campaignId: string, + runId: string, + batchKey: string, + options: { + readonly params: ProgrammaticCampaignControllerGetPayoutBatchDetailParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + ProgrammaticCampaignControllerGetPayoutBatchDetail200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Returns the current on-chain balance of the campaign reward token held by the Safe. + */ + readonly ProgrammaticCampaignControllerGetCampaignSafeBalance: < + Config extends OperationConfig, + >( + projectId: string, + campaignId: string, + options: { + readonly params: ProgrammaticCampaignControllerGetCampaignSafeBalanceParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + ProgrammaticCampaignControllerGetCampaignSafeBalance200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Counts of qualified vs blacklisted addresses for the campaign. Blacklisted addresses are excluded from accrual and payout but their already-accrued balances remain in the database. + */ + readonly ProgrammaticCampaignControllerGetCampaignPayoutEligibilitySummary: < + Config extends OperationConfig, + >( + projectId: string, + campaignId: string, + options: { + readonly params: ProgrammaticCampaignControllerGetCampaignPayoutEligibilitySummaryParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + ProgrammaticCampaignControllerGetCampaignPayoutEligibilitySummary200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Per-user earned/paid/unpaid totals with current indexed balance. Includes campaign-level totals and data freshness timestamps. + */ + readonly ProgrammaticCampaignControllerGetCampaignBalances: < + Config extends OperationConfig, + >( + projectId: string, + campaignId: string, + options: { + readonly params: ProgrammaticCampaignControllerGetCampaignBalancesParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + ProgrammaticCampaignControllerGetCampaignBalances200, + Config + >, + HttpClientError.HttpClientError + >; + readonly MasterBannedRegionControllerList: ( + options: + | { + readonly params?: MasterBannedRegionControllerListParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly MasterBannedRegionControllerCreate: < + Config extends OperationConfig, + >(options: { + readonly payload: MasterBannedRegionControllerCreateRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly MasterBannedRegionControllerDelete: < + Config extends OperationConfig, + >(options: { + readonly payload: MasterBannedRegionControllerDeleteRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProjectBannedRegionControllerList: ( + teamId: string, + projectId: string, + options: + | { + readonly params?: ProjectBannedRegionControllerListParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProjectBannedRegionControllerCreate: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + options: { + readonly payload: ProjectBannedRegionControllerCreateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProjectBannedRegionControllerDelete: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + options: { + readonly payload: ProjectBannedRegionControllerDeleteRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly MasterBannedYieldControllerList: ( + options: + | { + readonly params?: MasterBannedYieldControllerListParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly TeamsControllerFindAll: ( + options: + | { + readonly params?: TeamsControllerFindAllParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly TeamsControllerCreate: (options: { + readonly payload: TeamsControllerCreateRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly TeamsControllerGetById: ( + teamId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly TeamsControllerSoftDelete: ( + teamId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly TeamsControllerUpdate: ( + teamId: string, + options: { + readonly payload: TeamsControllerUpdateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProjectsControllerGet: ( + teamId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProjectsControllerCreate: ( + teamId: string, + options: { + readonly payload: ProjectsControllerCreateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProjectsControllerDelete: ( + teamId: string, + projectId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProjectsControllerUpdate: ( + teamId: string, + projectId: string, + options: { + readonly payload: ProjectsControllerUpdateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProgrammaticProjectsControllerGet: ( + options: + | { + readonly params?: ProgrammaticProjectsControllerGetParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProgrammaticProjectsControllerCreate: < + Config extends OperationConfig, + >(options: { + readonly params?: ProgrammaticProjectsControllerCreateParams | undefined; + readonly payload: ProgrammaticProjectsControllerCreateRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProgrammaticProjectsControllerDelete: < + Config extends OperationConfig, + >( + projectId: string, + options: + | { + readonly params?: + | ProgrammaticProjectsControllerDeleteParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProgrammaticProjectsControllerUpdate: < + Config extends OperationConfig, + >( + projectId: string, + options: { + readonly params?: ProgrammaticProjectsControllerUpdateParams | undefined; + readonly payload: ProgrammaticProjectsControllerUpdateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly KeysControllerGet: ( + teamId: string, + projectId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly KeysControllerCreate: ( + teamId: string, + projectId: string, + options: { + readonly payload: KeysControllerCreateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly KeysControllerDelete: ( + teamId: string, + projectId: string, + keyId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly KeysControllerUpdate: ( + teamId: string, + projectId: string, + keyId: string, + options: { + readonly payload: KeysControllerUpdateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProgrammaticKeysControllerGet: ( + projectId: string, + options: + | { + readonly params?: ProgrammaticKeysControllerGetParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProgrammaticKeysControllerCreate: ( + projectId: string, + options: { + readonly params?: ProgrammaticKeysControllerCreateParams | undefined; + readonly payload: ProgrammaticKeysControllerCreateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProgrammaticKeysControllerDelete: ( + projectId: string, + keyId: string, + options: + | { + readonly params?: ProgrammaticKeysControllerDeleteParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProgrammaticKeysControllerUpdate: ( + projectId: string, + keyId: string, + options: { + readonly params?: ProgrammaticKeysControllerUpdateParams | undefined; + readonly payload: ProgrammaticKeysControllerUpdateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Get the health status of the API + */ + readonly HealthControllerHealthV2: ( + options: + | { + readonly params?: HealthControllerHealthV2Params | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError<"HealthControllerHealthV2400", HealthControllerHealthV2400> + | LegacyApiError<"HealthControllerHealthV2401", HealthControllerHealthV2401> + | LegacyApiError<"HealthControllerHealthV2404", HealthControllerHealthV2404> + | LegacyApiError<"HealthControllerHealthV2408", HealthControllerHealthV2408> + | LegacyApiError<"HealthControllerHealthV2410", HealthControllerHealthV2410> + | LegacyApiError<"HealthControllerHealthV2412", HealthControllerHealthV2412> + | LegacyApiError<"HealthControllerHealthV2429", HealthControllerHealthV2429> + | LegacyApiError<"HealthControllerHealthV2500", HealthControllerHealthV2500> + | LegacyApiError<"HealthControllerHealthV2503", HealthControllerHealthV2503> + >; + readonly HomeControllerAppInfo: ( + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly PayoutAddressesControllerGet: ( + teamId: string, + projectId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly PayoutAddressesControllerCreate: ( + teamId: string, + projectId: string, + options: { + readonly payload: PayoutAddressesControllerCreateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly PayoutAddressesControllerDelete: ( + teamId: string, + projectId: string, + payoutAddressId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly PayoutAddressesControllerUpdate: ( + teamId: string, + projectId: string, + payoutAddressId: string, + options: { + readonly payload: PayoutAddressesControllerUpdateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly NetworkAddressReferralControllerGetByAddress: < + Config extends OperationConfig, + >( + network: string, + address: string, + options: + | { + readonly params?: + | NetworkAddressReferralControllerGetByAddressParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse< + NetworkAddressReferralControllerGetByAddress200, + Config + >, + HttpClientError.HttpClientError + >; + readonly NetworkAddressReferralControllerCreate: < + Config extends OperationConfig, + >( + network: string, + address: string, + options: + | { + readonly params?: + | NetworkAddressReferralControllerCreateParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ReferralControllerGetByCode: ( + code: string, + options: + | { + readonly params?: ReferralControllerGetByCodeParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ReportEntryControllerList: ( + teamId: string, + options: + | { + readonly params?: ReportEntryControllerListParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ReportProjectControllerList: < + Config extends OperationConfig, + >(options: { + readonly params: ReportProjectControllerListParams; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ReportProjectControllerGetRewards: ( + integrationId: string, + options: { + readonly params: ReportProjectControllerGetRewardsParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ReportProjectControllerGetDailyRevenues: < + Config extends OperationConfig, + >(options: { + readonly params: ReportProjectControllerGetDailyRevenuesParams; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ReportProjectControllerGetDailyPerformance: < + Config extends OperationConfig, + >(options: { + readonly params: ReportProjectControllerGetDailyPerformanceParams; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProgrammaticReportEntryControllerList: < + Config extends OperationConfig, + >(options: { + readonly params: ProgrammaticReportEntryControllerListParams; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Daily aggregated revenue grouped by integration with fee split breakdown + */ + readonly ProgrammaticReportingControllerGetDailyRevenues: < + Config extends OperationConfig, + >( + projectId: string, + options: { + readonly params: ProgrammaticReportingControllerGetDailyRevenuesParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + ProgrammaticReportingControllerGetDailyRevenues200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Daily aggregated revenue totals across all integrations in the selected range + */ + readonly ProgrammaticReportingControllerGetDailyRevenueAggregates: < + Config extends OperationConfig, + >( + projectId: string, + options: { + readonly params: ProgrammaticReportingControllerGetDailyRevenueAggregatesParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + ProgrammaticReportingControllerGetDailyRevenueAggregates200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Daily performance stats (volume + TVL) grouped by integration + */ + readonly ProgrammaticReportingControllerGetDailyPerformance: < + Config extends OperationConfig, + >( + projectId: string, + options: { + readonly params: ProgrammaticReportingControllerGetDailyPerformanceParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + ProgrammaticReportingControllerGetDailyPerformance200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Daily aggregated performance totals across all integrations in the selected range + */ + readonly ProgrammaticReportingControllerGetDailyPerformanceAggregates: < + Config extends OperationConfig, + >( + projectId: string, + options: { + readonly params: ProgrammaticReportingControllerGetDailyPerformanceAggregatesParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + ProgrammaticReportingControllerGetDailyPerformanceAggregates200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Retrieve a paginated list of perp actions for a project owned by the authenticated team, with optional filtering by provider, address, status, action type, and market. + */ + readonly ProgrammaticReportingControllerGetPerpActions: < + Config extends OperationConfig, + >( + projectId: string, + options: { + readonly params: ProgrammaticReportingControllerGetPerpActionsParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + ProgrammaticReportingControllerGetPerpActions200, + Config + >, + HttpClientError.HttpClientError + >; + readonly UsersMeControllerFindMe: ( + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly UsersMeControllerPatchMe: (options: { + readonly payload: UsersMeControllerPatchMeRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly UsersMeControllerConfirmMe: ( + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly UsersControllerFindAll: ( + teamId: string, + options: + | { + readonly params?: UsersControllerFindAllParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly UsersControllerCreate: ( + teamId: string, + options: { + readonly payload: UsersControllerCreateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly UsersControllerFindOne: ( + teamId: string, + id: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly UsersControllerRemoveTeamMember: ( + teamId: string, + id: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly UsersControllerUpdate: ( + teamId: string, + id: string, + options: { + readonly payload: UsersControllerUpdateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Returns a action with associated transactions + */ + readonly ActionControllerGetAction: ( + actionId: string, + options: + | { + readonly params?: ActionControllerGetActionParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "ActionControllerGetAction400", + ActionControllerGetAction400 + > + | LegacyApiError< + "ActionControllerGetAction401", + ActionControllerGetAction401 + > + | LegacyApiError< + "ActionControllerGetAction404", + ActionControllerGetAction404 + > + | LegacyApiError< + "ActionControllerGetAction408", + ActionControllerGetAction408 + > + | LegacyApiError< + "ActionControllerGetAction410", + ActionControllerGetAction410 + > + | LegacyApiError< + "ActionControllerGetAction412", + ActionControllerGetAction412 + > + | LegacyApiError< + "ActionControllerGetAction429", + ActionControllerGetAction429 + > + | LegacyApiError< + "ActionControllerGetAction500", + ActionControllerGetAction500 + > + | LegacyApiError< + "ActionControllerGetAction503", + ActionControllerGetAction503 + > + >; + /** + * Returns a gas estimate + */ + readonly ActionControllerGetGasEstimate: ( + actionId: string, + options: + | { + readonly params?: ActionControllerGetGasEstimateParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "ActionControllerGetGasEstimate400", + ActionControllerGetGasEstimate400 + > + | LegacyApiError< + "ActionControllerGetGasEstimate401", + ActionControllerGetGasEstimate401 + > + | LegacyApiError< + "ActionControllerGetGasEstimate404", + ActionControllerGetGasEstimate404 + > + | LegacyApiError< + "ActionControllerGetGasEstimate408", + ActionControllerGetGasEstimate408 + > + | LegacyApiError< + "ActionControllerGetGasEstimate410", + ActionControllerGetGasEstimate410 + > + | LegacyApiError< + "ActionControllerGetGasEstimate412", + ActionControllerGetGasEstimate412 + > + | LegacyApiError< + "ActionControllerGetGasEstimate429", + ActionControllerGetGasEstimate429 + > + | LegacyApiError< + "ActionControllerGetGasEstimate500", + ActionControllerGetGasEstimate500 + > + | LegacyApiError< + "ActionControllerGetGasEstimate503", + ActionControllerGetGasEstimate503 + > + >; + /** + * Get the transactions necessary to enter a yield bearing position + */ + readonly ActionControllerEnter: (options: { + readonly params?: ActionControllerEnterParams | undefined; + readonly payload: ActionControllerEnterRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError<"ActionControllerEnter400", ActionControllerEnter400> + | LegacyApiError<"ActionControllerEnter401", ActionControllerEnter401> + | LegacyApiError<"ActionControllerEnter403", ActionControllerEnter403> + | LegacyApiError<"ActionControllerEnter404", ActionControllerEnter404> + | LegacyApiError<"ActionControllerEnter408", ActionControllerEnter408> + | LegacyApiError<"ActionControllerEnter410", ActionControllerEnter410> + | LegacyApiError<"ActionControllerEnter412", ActionControllerEnter412> + | LegacyApiError<"ActionControllerEnter429", ActionControllerEnter429> + | LegacyApiError<"ActionControllerEnter500", ActionControllerEnter500> + | LegacyApiError<"ActionControllerEnter503", ActionControllerEnter503> + >; + /** + * Get the transactions necessary to exit a yield bearing position + */ + readonly ActionControllerExit: (options: { + readonly params?: ActionControllerExitParams | undefined; + readonly payload: ActionControllerExitRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError<"ActionControllerExit400", ActionControllerExit400> + | LegacyApiError<"ActionControllerExit401", ActionControllerExit401> + | LegacyApiError<"ActionControllerExit403", ActionControllerExit403> + | LegacyApiError<"ActionControllerExit404", ActionControllerExit404> + | LegacyApiError<"ActionControllerExit408", ActionControllerExit408> + | LegacyApiError<"ActionControllerExit410", ActionControllerExit410> + | LegacyApiError<"ActionControllerExit412", ActionControllerExit412> + | LegacyApiError<"ActionControllerExit429", ActionControllerExit429> + | LegacyApiError<"ActionControllerExit500", ActionControllerExit500> + | LegacyApiError<"ActionControllerExit503", ActionControllerExit503> + >; + /** + * Get the transactions to apply a pending action + */ + readonly ActionControllerPending: (options: { + readonly params?: ActionControllerPendingParams | undefined; + readonly payload: ActionControllerPendingRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError<"ActionControllerPending400", ActionControllerPending400> + | LegacyApiError<"ActionControllerPending401", ActionControllerPending401> + | LegacyApiError<"ActionControllerPending403", ActionControllerPending403> + | LegacyApiError<"ActionControllerPending404", ActionControllerPending404> + | LegacyApiError<"ActionControllerPending408", ActionControllerPending408> + | LegacyApiError<"ActionControllerPending410", ActionControllerPending410> + | LegacyApiError<"ActionControllerPending412", ActionControllerPending412> + | LegacyApiError<"ActionControllerPending429", ActionControllerPending429> + | LegacyApiError<"ActionControllerPending500", ActionControllerPending500> + | LegacyApiError<"ActionControllerPending503", ActionControllerPending503> + >; + /** + * Get the estimated gas necessary to enter a yield bearing position + */ + readonly ActionControllerEnterGasEstimation: < + Config extends OperationConfig, + >(options: { + readonly params?: ActionControllerEnterGasEstimationParams | undefined; + readonly payload: ActionControllerEnterGasEstimationRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "ActionControllerEnterGasEstimation400", + ActionControllerEnterGasEstimation400 + > + | LegacyApiError< + "ActionControllerEnterGasEstimation401", + ActionControllerEnterGasEstimation401 + > + | LegacyApiError< + "ActionControllerEnterGasEstimation404", + ActionControllerEnterGasEstimation404 + > + | LegacyApiError< + "ActionControllerEnterGasEstimation408", + ActionControllerEnterGasEstimation408 + > + | LegacyApiError< + "ActionControllerEnterGasEstimation410", + ActionControllerEnterGasEstimation410 + > + | LegacyApiError< + "ActionControllerEnterGasEstimation412", + ActionControllerEnterGasEstimation412 + > + | LegacyApiError< + "ActionControllerEnterGasEstimation429", + ActionControllerEnterGasEstimation429 + > + | LegacyApiError< + "ActionControllerEnterGasEstimation500", + ActionControllerEnterGasEstimation500 + > + | LegacyApiError< + "ActionControllerEnterGasEstimation503", + ActionControllerEnterGasEstimation503 + > + >; + /** + * Get the estimated gas necessary to exit a yield bearing position + */ + readonly ActionControllerExitGasEstimate: < + Config extends OperationConfig, + >(options: { + readonly params?: ActionControllerExitGasEstimateParams | undefined; + readonly payload: ActionControllerExitGasEstimateRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "ActionControllerExitGasEstimate400", + ActionControllerExitGasEstimate400 + > + | LegacyApiError< + "ActionControllerExitGasEstimate401", + ActionControllerExitGasEstimate401 + > + | LegacyApiError< + "ActionControllerExitGasEstimate404", + ActionControllerExitGasEstimate404 + > + | LegacyApiError< + "ActionControllerExitGasEstimate408", + ActionControllerExitGasEstimate408 + > + | LegacyApiError< + "ActionControllerExitGasEstimate410", + ActionControllerExitGasEstimate410 + > + | LegacyApiError< + "ActionControllerExitGasEstimate412", + ActionControllerExitGasEstimate412 + > + | LegacyApiError< + "ActionControllerExitGasEstimate429", + ActionControllerExitGasEstimate429 + > + | LegacyApiError< + "ActionControllerExitGasEstimate500", + ActionControllerExitGasEstimate500 + > + | LegacyApiError< + "ActionControllerExitGasEstimate503", + ActionControllerExitGasEstimate503 + > + >; + /** + * Returns a paginated list of actions with associated transactions + */ + readonly ActionControllerList: (options: { + readonly params: ActionControllerListParams; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError<"ActionControllerList400", ActionControllerList400> + | LegacyApiError<"ActionControllerList401", ActionControllerList401> + | LegacyApiError<"ActionControllerList404", ActionControllerList404> + | LegacyApiError<"ActionControllerList408", ActionControllerList408> + | LegacyApiError<"ActionControllerList410", ActionControllerList410> + | LegacyApiError<"ActionControllerList412", ActionControllerList412> + | LegacyApiError<"ActionControllerList429", ActionControllerList429> + | LegacyApiError<"ActionControllerList500", ActionControllerList500> + | LegacyApiError<"ActionControllerList503", ActionControllerList503> + >; + /** + * Get the estimated gas necessary to apply a pending action + */ + readonly ActionControllerPendingGasEstimate: < + Config extends OperationConfig, + >(options: { + readonly params?: ActionControllerPendingGasEstimateParams | undefined; + readonly payload: ActionControllerPendingGasEstimateRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "ActionControllerPendingGasEstimate400", + ActionControllerPendingGasEstimate400 + > + | LegacyApiError< + "ActionControllerPendingGasEstimate401", + ActionControllerPendingGasEstimate401 + > + | LegacyApiError< + "ActionControllerPendingGasEstimate404", + ActionControllerPendingGasEstimate404 + > + | LegacyApiError< + "ActionControllerPendingGasEstimate408", + ActionControllerPendingGasEstimate408 + > + | LegacyApiError< + "ActionControllerPendingGasEstimate410", + ActionControllerPendingGasEstimate410 + > + | LegacyApiError< + "ActionControllerPendingGasEstimate412", + ActionControllerPendingGasEstimate412 + > + | LegacyApiError< + "ActionControllerPendingGasEstimate429", + ActionControllerPendingGasEstimate429 + > + | LegacyApiError< + "ActionControllerPendingGasEstimate500", + ActionControllerPendingGasEstimate500 + > + | LegacyApiError< + "ActionControllerPendingGasEstimate503", + ActionControllerPendingGasEstimate503 + > + >; + /** + * Get the transactions necessary to enter, exit or pending a yield bearing position + */ + readonly NetworkAddressActionV2ControllerCreate: < + Config extends OperationConfig, + >( + network: string, + address: string, + options: + | { + readonly params?: + | NetworkAddressActionV2ControllerCreateParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "NetworkAddressActionV2ControllerCreate403", + NetworkAddressActionV2ControllerCreate403 + > + >; + /** + * Get action given an action id + */ + readonly NetworkAddressActionV2ControllerGetById: < + Config extends OperationConfig, + >( + network: string, + address: string, + actionId: string, + options: + | { + readonly params?: + | NetworkAddressActionV2ControllerGetByIdParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Returns the gas for a given network + */ + readonly NetworkGasControllerV2GetGasPrices: ( + network: string, + options: + | { + readonly params?: + | NetworkGasControllerV2GetGasPricesParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Returns a transaction + */ + readonly TransactionControllerGetTransaction: < + Config extends OperationConfig, + >( + transactionId: string, + options: + | { + readonly params?: + | TransactionControllerGetTransactionParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "TransactionControllerGetTransaction400", + TransactionControllerGetTransaction400 + > + | LegacyApiError< + "TransactionControllerGetTransaction401", + TransactionControllerGetTransaction401 + > + | LegacyApiError< + "TransactionControllerGetTransaction404", + TransactionControllerGetTransaction404 + > + | LegacyApiError< + "TransactionControllerGetTransaction408", + TransactionControllerGetTransaction408 + > + | LegacyApiError< + "TransactionControllerGetTransaction410", + TransactionControllerGetTransaction410 + > + | LegacyApiError< + "TransactionControllerGetTransaction412", + TransactionControllerGetTransaction412 + > + | LegacyApiError< + "TransactionControllerGetTransaction429", + TransactionControllerGetTransaction429 + > + | LegacyApiError< + "TransactionControllerGetTransaction500", + TransactionControllerGetTransaction500 + > + | LegacyApiError< + "TransactionControllerGetTransaction503", + TransactionControllerGetTransaction503 + > + >; + /** + * Constructs an unsigned transaction given a transaction id and optional gas parameters + */ + readonly TransactionControllerConstruct: ( + transactionId: string, + options: { + readonly params?: TransactionControllerConstructParams | undefined; + readonly payload: TransactionControllerConstructRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "TransactionControllerConstruct400", + TransactionControllerConstruct400 + > + | LegacyApiError< + "TransactionControllerConstruct401", + TransactionControllerConstruct401 + > + | LegacyApiError< + "TransactionControllerConstruct403", + TransactionControllerConstruct403 + > + | LegacyApiError< + "TransactionControllerConstruct404", + TransactionControllerConstruct404 + > + | LegacyApiError< + "TransactionControllerConstruct408", + TransactionControllerConstruct408 + > + | LegacyApiError< + "TransactionControllerConstruct410", + TransactionControllerConstruct410 + > + | LegacyApiError< + "TransactionControllerConstruct412", + TransactionControllerConstruct412 + > + | LegacyApiError< + "TransactionControllerConstruct429", + TransactionControllerConstruct429 + > + | LegacyApiError< + "TransactionControllerConstruct500", + TransactionControllerConstruct500 + > + | LegacyApiError< + "TransactionControllerConstruct503", + TransactionControllerConstruct503 + > + >; + /** + * Submits the signed transactions for broadcasting + */ + readonly TransactionControllerSubmit: ( + transactionId: string, + options: { + readonly params?: TransactionControllerSubmitParams | undefined; + readonly payload: TransactionControllerSubmitRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "TransactionControllerSubmit400", + TransactionControllerSubmit400 + > + | LegacyApiError< + "TransactionControllerSubmit401", + TransactionControllerSubmit401 + > + | LegacyApiError< + "TransactionControllerSubmit403", + TransactionControllerSubmit403 + > + | LegacyApiError< + "TransactionControllerSubmit404", + TransactionControllerSubmit404 + > + | LegacyApiError< + "TransactionControllerSubmit408", + TransactionControllerSubmit408 + > + | LegacyApiError< + "TransactionControllerSubmit410", + TransactionControllerSubmit410 + > + | LegacyApiError< + "TransactionControllerSubmit412", + TransactionControllerSubmit412 + > + | LegacyApiError< + "TransactionControllerSubmit429", + TransactionControllerSubmit429 + > + | LegacyApiError< + "TransactionControllerSubmit500", + TransactionControllerSubmit500 + > + | LegacyApiError< + "TransactionControllerSubmit503", + TransactionControllerSubmit503 + > + >; + /** + * Submit a hash of an already broadcasted transaction + */ + readonly TransactionControllerSubmitHash: ( + transactionId: string, + options: { + readonly params?: TransactionControllerSubmitHashParams | undefined; + readonly payload: TransactionControllerSubmitHashRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "TransactionControllerSubmitHash400", + TransactionControllerSubmitHash400 + > + | LegacyApiError< + "TransactionControllerSubmitHash401", + TransactionControllerSubmitHash401 + > + | LegacyApiError< + "TransactionControllerSubmitHash403", + TransactionControllerSubmitHash403 + > + | LegacyApiError< + "TransactionControllerSubmitHash404", + TransactionControllerSubmitHash404 + > + | LegacyApiError< + "TransactionControllerSubmitHash408", + TransactionControllerSubmitHash408 + > + | LegacyApiError< + "TransactionControllerSubmitHash410", + TransactionControllerSubmitHash410 + > + | LegacyApiError< + "TransactionControllerSubmitHash412", + TransactionControllerSubmitHash412 + > + | LegacyApiError< + "TransactionControllerSubmitHash429", + TransactionControllerSubmitHash429 + > + | LegacyApiError< + "TransactionControllerSubmitHash500", + TransactionControllerSubmitHash500 + > + | LegacyApiError< + "TransactionControllerSubmitHash503", + TransactionControllerSubmitHash503 + > + >; + /** + * Returns the transaction status given a transaction id + */ + readonly TransactionControllerGetTransactionStatusFromId: < + Config extends OperationConfig, + >( + transactionId: string, + options: + | { + readonly params?: + | TransactionControllerGetTransactionStatusFromIdParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse< + TransactionControllerGetTransactionStatusFromId200, + Config + >, + | HttpClientError.HttpClientError + | LegacyApiError< + "TransactionControllerGetTransactionStatusFromId400", + TransactionControllerGetTransactionStatusFromId400 + > + | LegacyApiError< + "TransactionControllerGetTransactionStatusFromId401", + TransactionControllerGetTransactionStatusFromId401 + > + | LegacyApiError< + "TransactionControllerGetTransactionStatusFromId404", + TransactionControllerGetTransactionStatusFromId404 + > + | LegacyApiError< + "TransactionControllerGetTransactionStatusFromId408", + TransactionControllerGetTransactionStatusFromId408 + > + | LegacyApiError< + "TransactionControllerGetTransactionStatusFromId410", + TransactionControllerGetTransactionStatusFromId410 + > + | LegacyApiError< + "TransactionControllerGetTransactionStatusFromId412", + TransactionControllerGetTransactionStatusFromId412 + > + | LegacyApiError< + "TransactionControllerGetTransactionStatusFromId429", + TransactionControllerGetTransactionStatusFromId429 + > + | LegacyApiError< + "TransactionControllerGetTransactionStatusFromId500", + TransactionControllerGetTransactionStatusFromId500 + > + | LegacyApiError< + "TransactionControllerGetTransactionStatusFromId503", + TransactionControllerGetTransactionStatusFromId503 + > + >; + /** + * Returns the current gas parameters for a network + */ + readonly TransactionControllerGetGasForNetwork: < + Config extends OperationConfig, + >( + network: string, + options: + | { + readonly params?: + | TransactionControllerGetGasForNetworkParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "TransactionControllerGetGasForNetwork400", + TransactionControllerGetGasForNetwork400 + > + | LegacyApiError< + "TransactionControllerGetGasForNetwork401", + TransactionControllerGetGasForNetwork401 + > + | LegacyApiError< + "TransactionControllerGetGasForNetwork404", + TransactionControllerGetGasForNetwork404 + > + | LegacyApiError< + "TransactionControllerGetGasForNetwork408", + TransactionControllerGetGasForNetwork408 + > + | LegacyApiError< + "TransactionControllerGetGasForNetwork410", + TransactionControllerGetGasForNetwork410 + > + | LegacyApiError< + "TransactionControllerGetGasForNetwork412", + TransactionControllerGetGasForNetwork412 + > + | LegacyApiError< + "TransactionControllerGetGasForNetwork429", + TransactionControllerGetGasForNetwork429 + > + | LegacyApiError< + "TransactionControllerGetGasForNetwork500", + TransactionControllerGetGasForNetwork500 + > + | LegacyApiError< + "TransactionControllerGetGasForNetwork503", + TransactionControllerGetGasForNetwork503 + > + >; + /** + * Returns the transaction status given a transaction hash and a network + */ + readonly TransactionControllerGetTransactionStatusByNetworkAndHash: < + Config extends OperationConfig, + >( + network: string, + hash: string, + options: + | { + readonly params?: + | TransactionControllerGetTransactionStatusByNetworkAndHashParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse< + TransactionControllerGetTransactionStatusByNetworkAndHash200, + Config + >, + | HttpClientError.HttpClientError + | LegacyApiError< + "TransactionControllerGetTransactionStatusByNetworkAndHash400", + TransactionControllerGetTransactionStatusByNetworkAndHash400 + > + | LegacyApiError< + "TransactionControllerGetTransactionStatusByNetworkAndHash401", + TransactionControllerGetTransactionStatusByNetworkAndHash401 + > + | LegacyApiError< + "TransactionControllerGetTransactionStatusByNetworkAndHash404", + TransactionControllerGetTransactionStatusByNetworkAndHash404 + > + | LegacyApiError< + "TransactionControllerGetTransactionStatusByNetworkAndHash408", + TransactionControllerGetTransactionStatusByNetworkAndHash408 + > + | LegacyApiError< + "TransactionControllerGetTransactionStatusByNetworkAndHash410", + TransactionControllerGetTransactionStatusByNetworkAndHash410 + > + | LegacyApiError< + "TransactionControllerGetTransactionStatusByNetworkAndHash412", + TransactionControllerGetTransactionStatusByNetworkAndHash412 + > + | LegacyApiError< + "TransactionControllerGetTransactionStatusByNetworkAndHash429", + TransactionControllerGetTransactionStatusByNetworkAndHash429 + > + | LegacyApiError< + "TransactionControllerGetTransactionStatusByNetworkAndHash500", + TransactionControllerGetTransactionStatusByNetworkAndHash500 + > + | LegacyApiError< + "TransactionControllerGetTransactionStatusByNetworkAndHash503", + TransactionControllerGetTransactionStatusByNetworkAndHash503 + > + >; + /** + * Returns the transaction or message to sign to provide verification + */ + readonly TransactionControllerGetTransactionVerificationMessageForNetwork: < + Config extends OperationConfig, + >( + network: string, + options: { + readonly params?: + | TransactionControllerGetTransactionVerificationMessageForNetworkParams + | undefined; + readonly payload: TransactionControllerGetTransactionVerificationMessageForNetworkRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + TransactionControllerGetTransactionVerificationMessageForNetwork201, + Config + >, + | HttpClientError.HttpClientError + | LegacyApiError< + "TransactionControllerGetTransactionVerificationMessageForNetwork400", + TransactionControllerGetTransactionVerificationMessageForNetwork400 + > + | LegacyApiError< + "TransactionControllerGetTransactionVerificationMessageForNetwork401", + TransactionControllerGetTransactionVerificationMessageForNetwork401 + > + | LegacyApiError< + "TransactionControllerGetTransactionVerificationMessageForNetwork403", + TransactionControllerGetTransactionVerificationMessageForNetwork403 + > + | LegacyApiError< + "TransactionControllerGetTransactionVerificationMessageForNetwork404", + TransactionControllerGetTransactionVerificationMessageForNetwork404 + > + | LegacyApiError< + "TransactionControllerGetTransactionVerificationMessageForNetwork408", + TransactionControllerGetTransactionVerificationMessageForNetwork408 + > + | LegacyApiError< + "TransactionControllerGetTransactionVerificationMessageForNetwork410", + TransactionControllerGetTransactionVerificationMessageForNetwork410 + > + | LegacyApiError< + "TransactionControllerGetTransactionVerificationMessageForNetwork412", + TransactionControllerGetTransactionVerificationMessageForNetwork412 + > + | LegacyApiError< + "TransactionControllerGetTransactionVerificationMessageForNetwork429", + TransactionControllerGetTransactionVerificationMessageForNetwork429 + > + | LegacyApiError< + "TransactionControllerGetTransactionVerificationMessageForNetwork500", + TransactionControllerGetTransactionVerificationMessageForNetwork500 + > + | LegacyApiError< + "TransactionControllerGetTransactionVerificationMessageForNetwork503", + TransactionControllerGetTransactionVerificationMessageForNetwork503 + > + >; + /** + * Scans for tokens with balance with available yields + */ + readonly NetworkAddressesTokenV2ControllerGetTokenBalances: < + Config extends OperationConfig, + >( + network: string, + address: string, + options: + | { + readonly params?: + | NetworkAddressesTokenV2ControllerGetTokenBalancesParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse< + NetworkAddressesTokenV2ControllerGetTokenBalances200, + Config + >, + | HttpClientError.HttpClientError + | LegacyApiError< + "NetworkAddressesTokenV2ControllerGetTokenBalances400", + NetworkAddressesTokenV2ControllerGetTokenBalances400 + > + | LegacyApiError< + "NetworkAddressesTokenV2ControllerGetTokenBalances401", + NetworkAddressesTokenV2ControllerGetTokenBalances401 + > + | LegacyApiError< + "NetworkAddressesTokenV2ControllerGetTokenBalances404", + NetworkAddressesTokenV2ControllerGetTokenBalances404 + > + | LegacyApiError< + "NetworkAddressesTokenV2ControllerGetTokenBalances408", + NetworkAddressesTokenV2ControllerGetTokenBalances408 + > + | LegacyApiError< + "NetworkAddressesTokenV2ControllerGetTokenBalances410", + NetworkAddressesTokenV2ControllerGetTokenBalances410 + > + | LegacyApiError< + "NetworkAddressesTokenV2ControllerGetTokenBalances412", + NetworkAddressesTokenV2ControllerGetTokenBalances412 + > + | LegacyApiError< + "NetworkAddressesTokenV2ControllerGetTokenBalances429", + NetworkAddressesTokenV2ControllerGetTokenBalances429 + > + | LegacyApiError< + "NetworkAddressesTokenV2ControllerGetTokenBalances500", + NetworkAddressesTokenV2ControllerGetTokenBalances500 + > + | LegacyApiError< + "NetworkAddressesTokenV2ControllerGetTokenBalances503", + NetworkAddressesTokenV2ControllerGetTokenBalances503 + > + >; + /** + * Gets tokens with available yields + */ + readonly NetworkTokensV2ControllerGetTokens: ( + network: string, + options: + | { + readonly params?: + | NetworkTokensV2ControllerGetTokensParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "NetworkTokensV2ControllerGetTokens400", + NetworkTokensV2ControllerGetTokens400 + > + | LegacyApiError< + "NetworkTokensV2ControllerGetTokens401", + NetworkTokensV2ControllerGetTokens401 + > + | LegacyApiError< + "NetworkTokensV2ControllerGetTokens404", + NetworkTokensV2ControllerGetTokens404 + > + | LegacyApiError< + "NetworkTokensV2ControllerGetTokens408", + NetworkTokensV2ControllerGetTokens408 + > + | LegacyApiError< + "NetworkTokensV2ControllerGetTokens410", + NetworkTokensV2ControllerGetTokens410 + > + | LegacyApiError< + "NetworkTokensV2ControllerGetTokens412", + NetworkTokensV2ControllerGetTokens412 + > + | LegacyApiError< + "NetworkTokensV2ControllerGetTokens429", + NetworkTokensV2ControllerGetTokens429 + > + | LegacyApiError< + "NetworkTokensV2ControllerGetTokens500", + NetworkTokensV2ControllerGetTokens500 + > + | LegacyApiError< + "NetworkTokensV2ControllerGetTokens503", + NetworkTokensV2ControllerGetTokens503 + > + >; + /** + * Returns the input tokens of the enabled yields + */ + readonly TokenControllerGetTokens: ( + options: + | { + readonly params?: TokenControllerGetTokensParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError<"TokenControllerGetTokens400", TokenControllerGetTokens400> + | LegacyApiError<"TokenControllerGetTokens401", TokenControllerGetTokens401> + | LegacyApiError<"TokenControllerGetTokens404", TokenControllerGetTokens404> + | LegacyApiError<"TokenControllerGetTokens408", TokenControllerGetTokens408> + | LegacyApiError<"TokenControllerGetTokens410", TokenControllerGetTokens410> + | LegacyApiError<"TokenControllerGetTokens412", TokenControllerGetTokens412> + | LegacyApiError<"TokenControllerGetTokens429", TokenControllerGetTokens429> + | LegacyApiError<"TokenControllerGetTokens500", TokenControllerGetTokens500> + | LegacyApiError<"TokenControllerGetTokens503", TokenControllerGetTokens503> + >; + /** + * Returns the token prices for a specific list of tokens + */ + readonly TokenControllerGetTokenPrices: < + Config extends OperationConfig, + >(options: { + readonly params?: TokenControllerGetTokenPricesParams | undefined; + readonly payload: TokenControllerGetTokenPricesRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "TokenControllerGetTokenPrices400", + TokenControllerGetTokenPrices400 + > + | LegacyApiError< + "TokenControllerGetTokenPrices401", + TokenControllerGetTokenPrices401 + > + | LegacyApiError< + "TokenControllerGetTokenPrices404", + TokenControllerGetTokenPrices404 + > + | LegacyApiError< + "TokenControllerGetTokenPrices408", + TokenControllerGetTokenPrices408 + > + | LegacyApiError< + "TokenControllerGetTokenPrices410", + TokenControllerGetTokenPrices410 + > + | LegacyApiError< + "TokenControllerGetTokenPrices412", + TokenControllerGetTokenPrices412 + > + | LegacyApiError< + "TokenControllerGetTokenPrices429", + TokenControllerGetTokenPrices429 + > + | LegacyApiError< + "TokenControllerGetTokenPrices500", + TokenControllerGetTokenPrices500 + > + | LegacyApiError< + "TokenControllerGetTokenPrices503", + TokenControllerGetTokenPrices503 + > + >; + /** + * Returns the balances for specific addresses and token addresses + */ + readonly TokenControllerGetTokenBalances: < + Config extends OperationConfig, + >(options: { + readonly params?: TokenControllerGetTokenBalancesParams | undefined; + readonly payload: TokenControllerGetTokenBalancesRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "TokenControllerGetTokenBalances400", + TokenControllerGetTokenBalances400 + > + | LegacyApiError< + "TokenControllerGetTokenBalances401", + TokenControllerGetTokenBalances401 + > + | LegacyApiError< + "TokenControllerGetTokenBalances404", + TokenControllerGetTokenBalances404 + > + | LegacyApiError< + "TokenControllerGetTokenBalances408", + TokenControllerGetTokenBalances408 + > + | LegacyApiError< + "TokenControllerGetTokenBalances410", + TokenControllerGetTokenBalances410 + > + | LegacyApiError< + "TokenControllerGetTokenBalances412", + TokenControllerGetTokenBalances412 + > + | LegacyApiError< + "TokenControllerGetTokenBalances429", + TokenControllerGetTokenBalances429 + > + | LegacyApiError< + "TokenControllerGetTokenBalances500", + TokenControllerGetTokenBalances500 + > + | LegacyApiError< + "TokenControllerGetTokenBalances503", + TokenControllerGetTokenBalances503 + > + >; + /** + * Scans for tokens with balance with available yields + */ + readonly TokenControllerTokenBalancesScan: < + Config extends OperationConfig, + >(options: { + readonly params?: TokenControllerTokenBalancesScanParams | undefined; + readonly payload: TokenControllerTokenBalancesScanRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "TokenControllerTokenBalancesScan400", + TokenControllerTokenBalancesScan400 + > + | LegacyApiError< + "TokenControllerTokenBalancesScan401", + TokenControllerTokenBalancesScan401 + > + | LegacyApiError< + "TokenControllerTokenBalancesScan404", + TokenControllerTokenBalancesScan404 + > + | LegacyApiError< + "TokenControllerTokenBalancesScan408", + TokenControllerTokenBalancesScan408 + > + | LegacyApiError< + "TokenControllerTokenBalancesScan410", + TokenControllerTokenBalancesScan410 + > + | LegacyApiError< + "TokenControllerTokenBalancesScan412", + TokenControllerTokenBalancesScan412 + > + | LegacyApiError< + "TokenControllerTokenBalancesScan429", + TokenControllerTokenBalancesScan429 + > + | LegacyApiError< + "TokenControllerTokenBalancesScan500", + TokenControllerTokenBalancesScan500 + > + | LegacyApiError< + "TokenControllerTokenBalancesScan503", + TokenControllerTokenBalancesScan503 + > + >; + readonly CustomUrisControllerGet: ( + teamId: string, + projectId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CustomUrisControllerCreate: ( + teamId: string, + projectId: string, + options: { + readonly payload: CustomUrisControllerCreateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CustomUrisControllerDelete: ( + teamId: string, + projectId: string, + customUriId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly CustomUrisControllerUpdate: ( + teamId: string, + projectId: string, + customUriId: string, + options: { + readonly payload: CustomUrisControllerUpdateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly EnabledYieldControllerGetByProject: ( + teamId: string, + projectId: string, + options: + | { + readonly params?: + | EnabledYieldControllerGetByProjectParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly EnabledYieldControllerCreate: ( + teamId: string, + projectId: string, + options: { + readonly payload: EnabledYieldControllerCreateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly EnabledYieldControllerDeleteMany: ( + teamId: string, + projectId: string, + options: { + readonly payload: EnabledYieldControllerDeleteManyRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly EnabledYieldControllerDelete: ( + teamId: string, + projectId: string, + integrationId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProgrammaticEnabledYieldControllerGetByProject: < + Config extends OperationConfig, + >( + projectId: string, + options: + | { + readonly params?: + | ProgrammaticEnabledYieldControllerGetByProjectParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse< + ProgrammaticEnabledYieldControllerGetByProject200, + Config + >, + HttpClientError.HttpClientError + >; + readonly ProgrammaticEnabledYieldControllerCreate: < + Config extends OperationConfig, + >( + projectId: string, + options: { + readonly params?: + | ProgrammaticEnabledYieldControllerCreateParams + | undefined; + readonly payload: ProgrammaticEnabledYieldControllerCreateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProgrammaticEnabledYieldControllerDeleteMany: < + Config extends OperationConfig, + >( + projectId: string, + options: { + readonly params?: + | ProgrammaticEnabledYieldControllerDeleteManyParams + | undefined; + readonly payload: ProgrammaticEnabledYieldControllerDeleteManyRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly ProgrammaticEnabledYieldControllerDelete: < + Config extends OperationConfig, + >( + projectId: string, + integrationId: string, + options: + | { + readonly params?: + | ProgrammaticEnabledYieldControllerDeleteParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Retrieves all available OAV tokens + */ + readonly OAVControllerFindAllTokens: ( + teamId: string, + projectId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "OAVControllerFindAllTokens400", + OAVControllerFindAllTokens400 + > + | LegacyApiError< + "OAVControllerFindAllTokens401", + OAVControllerFindAllTokens401 + > + | LegacyApiError< + "OAVControllerFindAllTokens404", + OAVControllerFindAllTokens404 + > + | LegacyApiError< + "OAVControllerFindAllTokens408", + OAVControllerFindAllTokens408 + > + | LegacyApiError< + "OAVControllerFindAllTokens410", + OAVControllerFindAllTokens410 + > + | LegacyApiError< + "OAVControllerFindAllTokens412", + OAVControllerFindAllTokens412 + > + | LegacyApiError< + "OAVControllerFindAllTokens429", + OAVControllerFindAllTokens429 + > + | LegacyApiError< + "OAVControllerFindAllTokens500", + OAVControllerFindAllTokens500 + > + | LegacyApiError< + "OAVControllerFindAllTokens503", + OAVControllerFindAllTokens503 + > + >; + /** + * Retrieves all yields for a specific OAV token by network and address. If address is not provided, returns all yields for all tokens on the network. + */ + readonly OAVControllerFindYieldsByToken: ( + teamId: string, + projectId: string, + network: string, + options: + | { + readonly params?: OAVControllerFindYieldsByTokenParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "OAVControllerFindYieldsByToken400", + OAVControllerFindYieldsByToken400 + > + | LegacyApiError< + "OAVControllerFindYieldsByToken401", + OAVControllerFindYieldsByToken401 + > + | LegacyApiError< + "OAVControllerFindYieldsByToken408", + OAVControllerFindYieldsByToken408 + > + | LegacyApiError< + "OAVControllerFindYieldsByToken410", + OAVControllerFindYieldsByToken410 + > + | LegacyApiError< + "OAVControllerFindYieldsByToken412", + OAVControllerFindYieldsByToken412 + > + | LegacyApiError< + "OAVControllerFindYieldsByToken429", + OAVControllerFindYieldsByToken429 + > + | LegacyApiError< + "OAVControllerFindYieldsByToken500", + OAVControllerFindYieldsByToken500 + > + | LegacyApiError< + "OAVControllerFindYieldsByToken503", + OAVControllerFindYieldsByToken503 + > + >; + /** + * Retrieves all OAVs for a specific project + */ + readonly OAVControllerFindAll: ( + teamId: string, + projectId: string, + options: + | { + readonly params?: OAVControllerFindAllParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError<"OAVControllerFindAll400", OAVControllerFindAll400> + | LegacyApiError<"OAVControllerFindAll401", OAVControllerFindAll401> + | LegacyApiError<"OAVControllerFindAll404", OAVControllerFindAll404> + | LegacyApiError<"OAVControllerFindAll408", OAVControllerFindAll408> + | LegacyApiError<"OAVControllerFindAll410", OAVControllerFindAll410> + | LegacyApiError<"OAVControllerFindAll412", OAVControllerFindAll412> + | LegacyApiError<"OAVControllerFindAll429", OAVControllerFindAll429> + | LegacyApiError<"OAVControllerFindAll500", OAVControllerFindAll500> + | LegacyApiError<"OAVControllerFindAll503", OAVControllerFindAll503> + >; + /** + * Creates a new Optimized Asset Vault with strategies and weights + */ + readonly OAVControllerCreate: ( + teamId: string, + projectId: string, + options: { + readonly payload: OAVControllerCreateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError<"OAVControllerCreate401", OAVControllerCreate401> + | LegacyApiError<"OAVControllerCreate404", OAVControllerCreate404> + | LegacyApiError<"OAVControllerCreate408", OAVControllerCreate408> + | LegacyApiError<"OAVControllerCreate410", OAVControllerCreate410> + | LegacyApiError<"OAVControllerCreate412", OAVControllerCreate412> + | LegacyApiError<"OAVControllerCreate429", OAVControllerCreate429> + | LegacyApiError<"OAVControllerCreate500", OAVControllerCreate500> + | LegacyApiError<"OAVControllerCreate503", OAVControllerCreate503> + >; + /** + * Deletes an OAV + */ + readonly OAVControllerRemove: ( + teamId: string, + projectId: string, + id: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError<"OAVControllerRemove400", OAVControllerRemove400> + | LegacyApiError<"OAVControllerRemove401", OAVControllerRemove401> + | LegacyApiError<"OAVControllerRemove408", OAVControllerRemove408> + | LegacyApiError<"OAVControllerRemove410", OAVControllerRemove410> + | LegacyApiError<"OAVControllerRemove412", OAVControllerRemove412> + | LegacyApiError<"OAVControllerRemove429", OAVControllerRemove429> + | LegacyApiError<"OAVControllerRemove500", OAVControllerRemove500> + | LegacyApiError<"OAVControllerRemove503", OAVControllerRemove503> + >; + /** + * Updates an existing OAV + */ + readonly OAVControllerUpdate: ( + teamId: string, + projectId: string, + id: string, + options: { + readonly payload: OAVControllerUpdateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError<"OAVControllerUpdate401", OAVControllerUpdate401> + | LegacyApiError<"OAVControllerUpdate408", OAVControllerUpdate408> + | LegacyApiError<"OAVControllerUpdate410", OAVControllerUpdate410> + | LegacyApiError<"OAVControllerUpdate412", OAVControllerUpdate412> + | LegacyApiError<"OAVControllerUpdate429", OAVControllerUpdate429> + | LegacyApiError<"OAVControllerUpdate500", OAVControllerUpdate500> + | LegacyApiError<"OAVControllerUpdate503", OAVControllerUpdate503> + >; + /** + * Scans for positions among enabled yields. + */ + readonly NetworkAddressesPositionsV2ControllerGetPositions: < + Config extends OperationConfig, + >( + network: string, + address: string, + options: { + readonly params: NetworkAddressesPositionsV2ControllerGetPositionsParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + NetworkAddressesPositionsV2ControllerGetPositions200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Returns the available yields (staking, lending, vaults, etc) with associated configuration and metadata + */ + readonly YieldControllerYields: ( + options: + | { + readonly params?: YieldControllerYieldsParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError<"YieldControllerYields400", YieldControllerYields400> + | LegacyApiError<"YieldControllerYields401", YieldControllerYields401> + | LegacyApiError<"YieldControllerYields404", YieldControllerYields404> + | LegacyApiError<"YieldControllerYields408", YieldControllerYields408> + | LegacyApiError<"YieldControllerYields410", YieldControllerYields410> + | LegacyApiError<"YieldControllerYields412", YieldControllerYields412> + | LegacyApiError<"YieldControllerYields429", YieldControllerYields429> + | LegacyApiError<"YieldControllerYields500", YieldControllerYields500> + | LegacyApiError<"YieldControllerYields503", YieldControllerYields503> + >; + /** + * Given addresses and integration ids, returns respective balances and configuration. + */ + readonly YieldControllerGetMultipleYieldBalances: < + Config extends OperationConfig, + >(options: { + readonly params?: YieldControllerGetMultipleYieldBalancesParams | undefined; + readonly payload: YieldControllerGetMultipleYieldBalancesRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "YieldControllerGetMultipleYieldBalances400", + YieldControllerGetMultipleYieldBalances400 + > + | LegacyApiError< + "YieldControllerGetMultipleYieldBalances401", + YieldControllerGetMultipleYieldBalances401 + > + | LegacyApiError< + "YieldControllerGetMultipleYieldBalances404", + YieldControllerGetMultipleYieldBalances404 + > + | LegacyApiError< + "YieldControllerGetMultipleYieldBalances408", + YieldControllerGetMultipleYieldBalances408 + > + | LegacyApiError< + "YieldControllerGetMultipleYieldBalances410", + YieldControllerGetMultipleYieldBalances410 + > + | LegacyApiError< + "YieldControllerGetMultipleYieldBalances412", + YieldControllerGetMultipleYieldBalances412 + > + | LegacyApiError< + "YieldControllerGetMultipleYieldBalances429", + YieldControllerGetMultipleYieldBalances429 + > + | LegacyApiError< + "YieldControllerGetMultipleYieldBalances500", + YieldControllerGetMultipleYieldBalances500 + > + | LegacyApiError< + "YieldControllerGetMultipleYieldBalances503", + YieldControllerGetMultipleYieldBalances503 + > + >; + /** + * Scans for yield balances among enabled yields. + */ + readonly YieldControllerYieldBalancesScan: < + Config extends OperationConfig, + >(options: { + readonly params?: YieldControllerYieldBalancesScanParams | undefined; + readonly payload: YieldControllerYieldBalancesScanRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "YieldControllerYieldBalancesScan400", + YieldControllerYieldBalancesScan400 + > + | LegacyApiError< + "YieldControllerYieldBalancesScan401", + YieldControllerYieldBalancesScan401 + > + | LegacyApiError< + "YieldControllerYieldBalancesScan404", + YieldControllerYieldBalancesScan404 + > + | LegacyApiError< + "YieldControllerYieldBalancesScan408", + YieldControllerYieldBalancesScan408 + > + | LegacyApiError< + "YieldControllerYieldBalancesScan410", + YieldControllerYieldBalancesScan410 + > + | LegacyApiError< + "YieldControllerYieldBalancesScan412", + YieldControllerYieldBalancesScan412 + > + | LegacyApiError< + "YieldControllerYieldBalancesScan429", + YieldControllerYieldBalancesScan429 + > + | LegacyApiError< + "YieldControllerYieldBalancesScan500", + YieldControllerYieldBalancesScan500 + > + | LegacyApiError< + "YieldControllerYieldBalancesScan503", + YieldControllerYieldBalancesScan503 + > + >; + /** + * Scans for all EVM yield balances among enabled yields. + */ + readonly YieldControllerYieldBalancesScanEvm: < + Config extends OperationConfig, + >(options: { + readonly params?: YieldControllerYieldBalancesScanEvmParams | undefined; + readonly payload: YieldControllerYieldBalancesScanEvmRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "YieldControllerYieldBalancesScanEvm400", + YieldControllerYieldBalancesScanEvm400 + > + | LegacyApiError< + "YieldControllerYieldBalancesScanEvm401", + YieldControllerYieldBalancesScanEvm401 + > + | LegacyApiError< + "YieldControllerYieldBalancesScanEvm404", + YieldControllerYieldBalancesScanEvm404 + > + | LegacyApiError< + "YieldControllerYieldBalancesScanEvm408", + YieldControllerYieldBalancesScanEvm408 + > + | LegacyApiError< + "YieldControllerYieldBalancesScanEvm410", + YieldControllerYieldBalancesScanEvm410 + > + | LegacyApiError< + "YieldControllerYieldBalancesScanEvm412", + YieldControllerYieldBalancesScanEvm412 + > + | LegacyApiError< + "YieldControllerYieldBalancesScanEvm429", + YieldControllerYieldBalancesScanEvm429 + > + | LegacyApiError< + "YieldControllerYieldBalancesScanEvm500", + YieldControllerYieldBalancesScanEvm500 + > + | LegacyApiError< + "YieldControllerYieldBalancesScanEvm503", + YieldControllerYieldBalancesScanEvm503 + > + >; + /** + * Returns the enabled yields (staking, lending, vaults, etc) with configuration and metadata + */ + readonly YieldControllerGetMyYields: ( + options: + | { + readonly params?: YieldControllerGetMyYieldsParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "YieldControllerGetMyYields400", + YieldControllerGetMyYields400 + > + | LegacyApiError< + "YieldControllerGetMyYields401", + YieldControllerGetMyYields401 + > + | LegacyApiError< + "YieldControllerGetMyYields404", + YieldControllerGetMyYields404 + > + | LegacyApiError< + "YieldControllerGetMyYields408", + YieldControllerGetMyYields408 + > + | LegacyApiError< + "YieldControllerGetMyYields410", + YieldControllerGetMyYields410 + > + | LegacyApiError< + "YieldControllerGetMyYields412", + YieldControllerGetMyYields412 + > + | LegacyApiError< + "YieldControllerGetMyYields429", + YieldControllerGetMyYields429 + > + | LegacyApiError< + "YieldControllerGetMyYields500", + YieldControllerGetMyYields500 + > + | LegacyApiError< + "YieldControllerGetMyYields503", + YieldControllerGetMyYields503 + > + >; + /** + * Returns the networks of the enabled yields + */ + readonly YieldControllerGetMyNetworks: ( + options: + | { + readonly params?: YieldControllerGetMyNetworksParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "YieldControllerGetMyNetworks400", + YieldControllerGetMyNetworks400 + > + | LegacyApiError< + "YieldControllerGetMyNetworks401", + YieldControllerGetMyNetworks401 + > + | LegacyApiError< + "YieldControllerGetMyNetworks404", + YieldControllerGetMyNetworks404 + > + | LegacyApiError< + "YieldControllerGetMyNetworks408", + YieldControllerGetMyNetworks408 + > + | LegacyApiError< + "YieldControllerGetMyNetworks410", + YieldControllerGetMyNetworks410 + > + | LegacyApiError< + "YieldControllerGetMyNetworks412", + YieldControllerGetMyNetworks412 + > + | LegacyApiError< + "YieldControllerGetMyNetworks429", + YieldControllerGetMyNetworks429 + > + | LegacyApiError< + "YieldControllerGetMyNetworks500", + YieldControllerGetMyNetworks500 + > + | LegacyApiError< + "YieldControllerGetMyNetworks503", + YieldControllerGetMyNetworks503 + > + >; + /** + * Returns a list of available validators to specify when providing a `validatorAddress` property. + */ + readonly YieldControllerFindValidators: ( + options: + | { + readonly params?: YieldControllerFindValidatorsParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "YieldControllerFindValidators400", + YieldControllerFindValidators400 + > + | LegacyApiError< + "YieldControllerFindValidators401", + YieldControllerFindValidators401 + > + | LegacyApiError< + "YieldControllerFindValidators404", + YieldControllerFindValidators404 + > + | LegacyApiError< + "YieldControllerFindValidators408", + YieldControllerFindValidators408 + > + | LegacyApiError< + "YieldControllerFindValidators410", + YieldControllerFindValidators410 + > + | LegacyApiError< + "YieldControllerFindValidators412", + YieldControllerFindValidators412 + > + | LegacyApiError< + "YieldControllerFindValidators429", + YieldControllerFindValidators429 + > + | LegacyApiError< + "YieldControllerFindValidators500", + YieldControllerFindValidators500 + > + | LegacyApiError< + "YieldControllerFindValidators503", + YieldControllerFindValidators503 + > + >; + /** + * Returns a yield that is associated with given integration ID + */ + readonly YieldControllerYieldOpportunity: ( + integrationId: string, + options: + | { + readonly params?: YieldControllerYieldOpportunityParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "YieldControllerYieldOpportunity400", + YieldControllerYieldOpportunity400 + > + | LegacyApiError< + "YieldControllerYieldOpportunity401", + YieldControllerYieldOpportunity401 + > + | LegacyApiError< + "YieldControllerYieldOpportunity404", + YieldControllerYieldOpportunity404 + > + | LegacyApiError< + "YieldControllerYieldOpportunity408", + YieldControllerYieldOpportunity408 + > + | LegacyApiError< + "YieldControllerYieldOpportunity410", + YieldControllerYieldOpportunity410 + > + | LegacyApiError< + "YieldControllerYieldOpportunity412", + YieldControllerYieldOpportunity412 + > + | LegacyApiError< + "YieldControllerYieldOpportunity429", + YieldControllerYieldOpportunity429 + > + | LegacyApiError< + "YieldControllerYieldOpportunity500", + YieldControllerYieldOpportunity500 + > + | LegacyApiError< + "YieldControllerYieldOpportunity503", + YieldControllerYieldOpportunity503 + > + >; + /** + * Returns a list of available validators to specify when providing a `validatorAddress` property. + */ + readonly YieldControllerGetValidators: ( + integrationId: string, + options: + | { + readonly params?: YieldControllerGetValidatorsParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "YieldControllerGetValidators400", + YieldControllerGetValidators400 + > + | LegacyApiError< + "YieldControllerGetValidators401", + YieldControllerGetValidators401 + > + | LegacyApiError< + "YieldControllerGetValidators404", + YieldControllerGetValidators404 + > + | LegacyApiError< + "YieldControllerGetValidators408", + YieldControllerGetValidators408 + > + | LegacyApiError< + "YieldControllerGetValidators410", + YieldControllerGetValidators410 + > + | LegacyApiError< + "YieldControllerGetValidators412", + YieldControllerGetValidators412 + > + | LegacyApiError< + "YieldControllerGetValidators429", + YieldControllerGetValidators429 + > + | LegacyApiError< + "YieldControllerGetValidators500", + YieldControllerGetValidators500 + > + | LegacyApiError< + "YieldControllerGetValidators503", + YieldControllerGetValidators503 + > + >; + /** + * Given addresses, returns the available, deposited balance, pending actions and associated configuration for any yield + */ + readonly YieldControllerGetSingleYieldBalances: < + Config extends OperationConfig, + >( + integrationId: string, + options: { + readonly params?: YieldControllerGetSingleYieldBalancesParams | undefined; + readonly payload: YieldControllerGetSingleYieldBalancesRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "YieldControllerGetSingleYieldBalances400", + YieldControllerGetSingleYieldBalances400 + > + | LegacyApiError< + "YieldControllerGetSingleYieldBalances401", + YieldControllerGetSingleYieldBalances401 + > + | LegacyApiError< + "YieldControllerGetSingleYieldBalances404", + YieldControllerGetSingleYieldBalances404 + > + | LegacyApiError< + "YieldControllerGetSingleYieldBalances408", + YieldControllerGetSingleYieldBalances408 + > + | LegacyApiError< + "YieldControllerGetSingleYieldBalances410", + YieldControllerGetSingleYieldBalances410 + > + | LegacyApiError< + "YieldControllerGetSingleYieldBalances412", + YieldControllerGetSingleYieldBalances412 + > + | LegacyApiError< + "YieldControllerGetSingleYieldBalances429", + YieldControllerGetSingleYieldBalances429 + > + | LegacyApiError< + "YieldControllerGetSingleYieldBalances500", + YieldControllerGetSingleYieldBalances500 + > + | LegacyApiError< + "YieldControllerGetSingleYieldBalances503", + YieldControllerGetSingleYieldBalances503 + > + >; + /** + * Given addresses, returns a historic rewards summary for any yield + */ + readonly YieldControllerGetSingleYieldRewardsSummary: < + Config extends OperationConfig, + >( + integrationId: string, + options: { + readonly params?: + | YieldControllerGetSingleYieldRewardsSummaryParams + | undefined; + readonly payload: YieldControllerGetSingleYieldRewardsSummaryRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + YieldControllerGetSingleYieldRewardsSummary201, + Config + >, + | HttpClientError.HttpClientError + | LegacyApiError< + "YieldControllerGetSingleYieldRewardsSummary400", + YieldControllerGetSingleYieldRewardsSummary400 + > + | LegacyApiError< + "YieldControllerGetSingleYieldRewardsSummary401", + YieldControllerGetSingleYieldRewardsSummary401 + > + | LegacyApiError< + "YieldControllerGetSingleYieldRewardsSummary404", + YieldControllerGetSingleYieldRewardsSummary404 + > + | LegacyApiError< + "YieldControllerGetSingleYieldRewardsSummary408", + YieldControllerGetSingleYieldRewardsSummary408 + > + | LegacyApiError< + "YieldControllerGetSingleYieldRewardsSummary410", + YieldControllerGetSingleYieldRewardsSummary410 + > + | LegacyApiError< + "YieldControllerGetSingleYieldRewardsSummary412", + YieldControllerGetSingleYieldRewardsSummary412 + > + | LegacyApiError< + "YieldControllerGetSingleYieldRewardsSummary429", + YieldControllerGetSingleYieldRewardsSummary429 + > + | LegacyApiError< + "YieldControllerGetSingleYieldRewardsSummary500", + YieldControllerGetSingleYieldRewardsSummary500 + > + | LegacyApiError< + "YieldControllerGetSingleYieldRewardsSummary503", + YieldControllerGetSingleYieldRewardsSummary503 + > + >; + /** + * Returns a fee configuraion that contains details about fees taken when interacting with the yield. + */ + readonly YieldControllerGetFeeConfiguration: ( + integrationId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "YieldControllerGetFeeConfiguration400", + YieldControllerGetFeeConfiguration400 + > + | LegacyApiError< + "YieldControllerGetFeeConfiguration401", + YieldControllerGetFeeConfiguration401 + > + | LegacyApiError< + "YieldControllerGetFeeConfiguration408", + YieldControllerGetFeeConfiguration408 + > + | LegacyApiError< + "YieldControllerGetFeeConfiguration410", + YieldControllerGetFeeConfiguration410 + > + | LegacyApiError< + "YieldControllerGetFeeConfiguration412", + YieldControllerGetFeeConfiguration412 + > + | LegacyApiError< + "YieldControllerGetFeeConfiguration429", + YieldControllerGetFeeConfiguration429 + > + | LegacyApiError< + "YieldControllerGetFeeConfiguration500", + YieldControllerGetFeeConfiguration500 + > + | LegacyApiError< + "YieldControllerGetFeeConfiguration503", + YieldControllerGetFeeConfiguration503 + > + >; + /** + * Creates a fee configuration for a yield using a reporting key + */ + readonly YieldControllerCreateFeeConfiguration: < + Config extends OperationConfig, + >( + integrationId: string, + options: { + readonly params: YieldControllerCreateFeeConfigurationParams; + readonly payload: YieldControllerCreateFeeConfigurationRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "YieldControllerCreateFeeConfiguration400", + YieldControllerCreateFeeConfiguration400 + > + | LegacyApiError< + "YieldControllerCreateFeeConfiguration401", + YieldControllerCreateFeeConfiguration401 + > + | LegacyApiError< + "YieldControllerCreateFeeConfiguration404", + YieldControllerCreateFeeConfiguration404 + > + | LegacyApiError< + "YieldControllerCreateFeeConfiguration408", + YieldControllerCreateFeeConfiguration408 + > + | LegacyApiError< + "YieldControllerCreateFeeConfiguration410", + YieldControllerCreateFeeConfiguration410 + > + | LegacyApiError< + "YieldControllerCreateFeeConfiguration412", + YieldControllerCreateFeeConfiguration412 + > + | LegacyApiError< + "YieldControllerCreateFeeConfiguration429", + YieldControllerCreateFeeConfiguration429 + > + | LegacyApiError< + "YieldControllerCreateFeeConfiguration500", + YieldControllerCreateFeeConfiguration500 + > + | LegacyApiError< + "YieldControllerCreateFeeConfiguration503", + YieldControllerCreateFeeConfiguration503 + > + >; + /** + * Returns the available yields (staking, lending, vaults, etc) with associated configuration and metadata + */ + readonly YieldV2ControllerYields: ( + options: + | { + readonly params?: YieldV2ControllerYieldsParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError<"YieldV2ControllerYields400", YieldV2ControllerYields400> + | LegacyApiError<"YieldV2ControllerYields401", YieldV2ControllerYields401> + | LegacyApiError<"YieldV2ControllerYields404", YieldV2ControllerYields404> + | LegacyApiError<"YieldV2ControllerYields408", YieldV2ControllerYields408> + | LegacyApiError<"YieldV2ControllerYields410", YieldV2ControllerYields410> + | LegacyApiError<"YieldV2ControllerYields412", YieldV2ControllerYields412> + | LegacyApiError<"YieldV2ControllerYields429", YieldV2ControllerYields429> + | LegacyApiError<"YieldV2ControllerYields500", YieldV2ControllerYields500> + | LegacyApiError<"YieldV2ControllerYields503", YieldV2ControllerYields503> + >; + /** + * Returns yield given an id + */ + readonly YieldV2ControllerGetYieldById: ( + yieldId: string, + options: + | { + readonly params?: YieldV2ControllerGetYieldByIdParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "YieldV2ControllerGetYieldById400", + YieldV2ControllerGetYieldById400 + > + | LegacyApiError< + "YieldV2ControllerGetYieldById401", + YieldV2ControllerGetYieldById401 + > + | LegacyApiError< + "YieldV2ControllerGetYieldById404", + YieldV2ControllerGetYieldById404 + > + | LegacyApiError< + "YieldV2ControllerGetYieldById408", + YieldV2ControllerGetYieldById408 + > + | LegacyApiError< + "YieldV2ControllerGetYieldById410", + YieldV2ControllerGetYieldById410 + > + | LegacyApiError< + "YieldV2ControllerGetYieldById412", + YieldV2ControllerGetYieldById412 + > + | LegacyApiError< + "YieldV2ControllerGetYieldById429", + YieldV2ControllerGetYieldById429 + > + | LegacyApiError< + "YieldV2ControllerGetYieldById500", + YieldV2ControllerGetYieldById500 + > + | LegacyApiError< + "YieldV2ControllerGetYieldById503", + YieldV2ControllerGetYieldById503 + > + >; + /** + * Given a yield, returns a list of available validators to specify when providing a `validatorAddress` property. + */ + readonly YieldV2ControllerFindYieldValidators: < + Config extends OperationConfig, + >( + yieldId: string, + options: + | { + readonly params?: + | YieldV2ControllerFindYieldValidatorsParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "YieldV2ControllerFindYieldValidators400", + YieldV2ControllerFindYieldValidators400 + > + | LegacyApiError< + "YieldV2ControllerFindYieldValidators401", + YieldV2ControllerFindYieldValidators401 + > + | LegacyApiError< + "YieldV2ControllerFindYieldValidators404", + YieldV2ControllerFindYieldValidators404 + > + | LegacyApiError< + "YieldV2ControllerFindYieldValidators408", + YieldV2ControllerFindYieldValidators408 + > + | LegacyApiError< + "YieldV2ControllerFindYieldValidators410", + YieldV2ControllerFindYieldValidators410 + > + | LegacyApiError< + "YieldV2ControllerFindYieldValidators412", + YieldV2ControllerFindYieldValidators412 + > + | LegacyApiError< + "YieldV2ControllerFindYieldValidators429", + YieldV2ControllerFindYieldValidators429 + > + | LegacyApiError< + "YieldV2ControllerFindYieldValidators500", + YieldV2ControllerFindYieldValidators500 + > + | LegacyApiError< + "YieldV2ControllerFindYieldValidators503", + YieldV2ControllerFindYieldValidators503 + > + >; + /** + * Returns a list of available validators to specify when providing a `validatorAddress` property. + */ + readonly YieldV2ControllerFindValidators: ( + options: + | { + readonly params?: YieldV2ControllerFindValidatorsParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "YieldV2ControllerFindValidators400", + YieldV2ControllerFindValidators400 + > + | LegacyApiError< + "YieldV2ControllerFindValidators401", + YieldV2ControllerFindValidators401 + > + | LegacyApiError< + "YieldV2ControllerFindValidators404", + YieldV2ControllerFindValidators404 + > + | LegacyApiError< + "YieldV2ControllerFindValidators408", + YieldV2ControllerFindValidators408 + > + | LegacyApiError< + "YieldV2ControllerFindValidators410", + YieldV2ControllerFindValidators410 + > + | LegacyApiError< + "YieldV2ControllerFindValidators412", + YieldV2ControllerFindValidators412 + > + | LegacyApiError< + "YieldV2ControllerFindValidators429", + YieldV2ControllerFindValidators429 + > + | LegacyApiError< + "YieldV2ControllerFindValidators500", + YieldV2ControllerFindValidators500 + > + | LegacyApiError< + "YieldV2ControllerFindValidators503", + YieldV2ControllerFindValidators503 + > + >; + /** + * Returns a list of fee configurations that contains details about fees taken when interacting with the yield. + */ + readonly YieldV2ControllerGetFeeConfigurations: < + Config extends OperationConfig, + >( + integrationId: string, + options: + | { + readonly params?: + | YieldV2ControllerGetFeeConfigurationsParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "YieldV2ControllerGetFeeConfigurations400", + YieldV2ControllerGetFeeConfigurations400 + > + | LegacyApiError< + "YieldV2ControllerGetFeeConfigurations401", + YieldV2ControllerGetFeeConfigurations401 + > + | LegacyApiError< + "YieldV2ControllerGetFeeConfigurations408", + YieldV2ControllerGetFeeConfigurations408 + > + | LegacyApiError< + "YieldV2ControllerGetFeeConfigurations410", + YieldV2ControllerGetFeeConfigurations410 + > + | LegacyApiError< + "YieldV2ControllerGetFeeConfigurations412", + YieldV2ControllerGetFeeConfigurations412 + > + | LegacyApiError< + "YieldV2ControllerGetFeeConfigurations429", + YieldV2ControllerGetFeeConfigurations429 + > + | LegacyApiError< + "YieldV2ControllerGetFeeConfigurations500", + YieldV2ControllerGetFeeConfigurations500 + > + | LegacyApiError< + "YieldV2ControllerGetFeeConfigurations503", + YieldV2ControllerGetFeeConfigurations503 + > + >; + /** + * Get details about a user's staking position based on the provided network and stake addresses. + */ + readonly EarnControllerGetStakes: ( + network: string, + options: { + readonly params: EarnControllerGetStakesParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError<"EarnControllerGetStakes400", EarnControllerGetStakes400> + | LegacyApiError<"EarnControllerGetStakes401", EarnControllerGetStakes401> + | LegacyApiError<"EarnControllerGetStakes404", EarnControllerGetStakes404> + | LegacyApiError<"EarnControllerGetStakes500", EarnControllerGetStakes500> + >; + /** + * Get interest rates for all available networks + */ + readonly EarnControllerGetGrow: ( + options: + | { + readonly params?: EarnControllerGetGrowParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError<"EarnControllerGetGrow401", EarnControllerGetGrow401> + | LegacyApiError<"EarnControllerGetGrow404", EarnControllerGetGrow404> + | LegacyApiError<"EarnControllerGetGrow500", EarnControllerGetGrow500> + >; + /** + * Get a list of Fee Configurations + */ + readonly FeeConfigurationControllerGet: ( + teamId: string, + projectId: string, + options: + | { + readonly params?: FeeConfigurationControllerGetParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Creates a new Fee Configuration + */ + readonly FeeConfigurationControllerCreate: ( + teamId: string, + projectId: string, + options: { + readonly payload: FeeConfigurationControllerCreateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Deletes a Fee Configuration + */ + readonly FeeConfigurationControllerDelete: ( + teamId: string, + projectId: string, + feeConfigurationId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Updates a Fee Configuration + */ + readonly FeeConfigurationControllerUpdate: ( + teamId: string, + projectId: string, + feeConfigurationId: string, + options: { + readonly payload: FeeConfigurationControllerUpdateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Get a list of Fee Configurations + */ + readonly ProgrammaticFeeConfigurationControllerGet: < + Config extends OperationConfig, + >( + projectId: string, + options: + | { + readonly params?: + | ProgrammaticFeeConfigurationControllerGetParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Creates a new Fee Configuration + */ + readonly ProgrammaticFeeConfigurationControllerCreate: < + Config extends OperationConfig, + >( + projectId: string, + options: { + readonly params?: + | ProgrammaticFeeConfigurationControllerCreateParams + | undefined; + readonly payload: ProgrammaticFeeConfigurationControllerCreateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + ProgrammaticFeeConfigurationControllerCreate200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Deletes a Fee Configuration + */ + readonly ProgrammaticFeeConfigurationControllerDelete: < + Config extends OperationConfig, + >( + projectId: string, + feeConfigurationId: string, + options: + | { + readonly params?: + | ProgrammaticFeeConfigurationControllerDeleteParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Updates a Fee Configuration + */ + readonly ProgrammaticFeeConfigurationControllerUpdate: < + Config extends OperationConfig, + >( + projectId: string, + feeConfigurationId: string, + options: { + readonly params?: + | ProgrammaticFeeConfigurationControllerUpdateParams + | undefined; + readonly payload: ProgrammaticFeeConfigurationControllerUpdateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * List risk parameters + */ + readonly RiskParametersControllerFindMany: ( + options: + | { + readonly params?: RiskParametersControllerFindManyParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Create a risk parameter + */ + readonly RiskParametersControllerCreate: < + Config extends OperationConfig, + >(options: { + readonly payload: RiskParametersControllerCreateRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Get a risk parameter by ID + */ + readonly RiskParametersControllerFindOne: ( + riskParameterId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Delete a risk parameter + */ + readonly RiskParametersControllerDelete: ( + riskParameterId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Update a risk parameter + */ + readonly RiskParametersControllerUpdate: ( + riskParameterId: string, + options: { + readonly payload: RiskParametersControllerUpdateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Get the Shield vault registry + */ + readonly ShieldRegistryControllerGetRegistry: < + Config extends OperationConfig, + >( + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Initiate SSO login flow + */ + readonly SsoControllerInitiate: (options: { + readonly payload: SsoControllerInitiateRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * OIDC SSO callback — exchanges code for JWT and redirects to frontend + */ + readonly SsoControllerOidcCallback: < + Config extends OperationConfig, + >(options: { + readonly params: SsoControllerOidcCallbackParams; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Get SSO configuration for a team + */ + readonly SsoConfigControllerGet: ( + teamId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Create or update SSO configuration for a team + */ + readonly SsoConfigControllerUpsert: ( + teamId: string, + options: { + readonly payload: SsoConfigControllerUpsertRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Delete SSO configuration for a team + */ + readonly SsoConfigControllerDelete: ( + teamId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly MfaControllerSetup: ( + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly MfaControllerVerifySetup: (options: { + readonly payload: MfaControllerVerifySetupRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Requires current TOTP. MFA stays enabled. Then call POST setup (QR) and POST verify-setup with the new device. Same 24h window as after recovery-code login. + */ + readonly MfaControllerBeginReenrollment: < + Config extends OperationConfig, + >(options: { + readonly payload: MfaControllerBeginReenrollmentRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly MfaControllerGetStatus: ( + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly MfaControllerVerify: (options: { + readonly payload: MfaControllerVerifyRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly MfaControllerRecover: (options: { + readonly payload: MfaControllerRecoverRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly MfaControllerDisable: (options: { + readonly payload: MfaControllerDisableRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Gets the perps fee configuration for the project + */ + readonly PerpsFeeConfigurationControllerGet: ( + teamId: string, + projectId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Creates a new perps fee configuration for perpetuals trading. One per project. + */ + readonly PerpsFeeConfigurationControllerCreate: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + options: { + readonly payload: PerpsFeeConfigurationControllerCreateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Deletes the perps fee configuration for the project + */ + readonly PerpsFeeConfigurationControllerDelete: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Updates the perps fee configuration for the project + */ + readonly PerpsFeeConfigurationControllerUpdate: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + options: { + readonly payload: PerpsFeeConfigurationControllerUpdateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Get all validator providers + */ + readonly ValidatorControllerFindAllProviders: < + Config extends OperationConfig, + >( + options: + | { + readonly params?: + | ValidatorControllerFindAllProvidersParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Create a new validator provider + */ + readonly ValidatorControllerCreateProvider: < + Config extends OperationConfig, + >(options: { + readonly payload: ValidatorControllerCreateProviderRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Get validator provider by ID + */ + readonly ValidatorControllerFindOneProvider: ( + id: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Update validator provider + */ + readonly ValidatorControllerUpdateProvider: ( + id: string, + options: { + readonly payload: ValidatorControllerUpdateProviderRequestFormData; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Delete validator provider + */ + readonly ValidatorControllerRemoveProvider: ( + id: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Get all historical revshare changes for validator + */ + readonly ValidatorControllerGetAllHistoricalRevshareChanges: < + Config extends OperationConfig, + >(options: { + readonly params: ValidatorControllerGetAllHistoricalRevshareChangesParams; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse< + ValidatorControllerGetAllHistoricalRevshareChanges200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Update historical revshare change + */ + readonly ValidatorControllerUpdateHistoricalRevshareChange: < + Config extends OperationConfig, + >( + id: string, + options: { + readonly payload: ValidatorControllerUpdateHistoricalRevshareChangeRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + ValidatorControllerUpdateHistoricalRevshareChange200, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Get all validators + */ + readonly ValidatorControllerFindAll: ( + options: + | { + readonly params?: ValidatorControllerFindAllParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Create a new validator + */ + readonly ValidatorControllerCreate: < + Config extends OperationConfig, + >(options: { + readonly payload: ValidatorControllerCreateRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Get validator by ID + */ + readonly ValidatorControllerFindOne: ( + id: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Update validator + */ + readonly ValidatorControllerUpdate: ( + id: string, + options: { + readonly payload: ValidatorControllerUpdateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Delete validator + */ + readonly ValidatorControllerRemove: ( + id: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly AdminApiKeysControllerFindAll: ( + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly AdminApiKeysControllerCreate: < + Config extends OperationConfig, + >(options: { + readonly payload: AdminApiKeysControllerCreateRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly AdminApiKeysControllerFindOne: ( + id: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly AdminApiKeysControllerRemove: ( + id: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly AdminApiKeysControllerUpdate: ( + id: string, + options: { + readonly payload: AdminApiKeysControllerUpdateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Retrieve all webhook endpoints for your project. Each endpoint represents a URL where webhook events will be sent. + */ + readonly WebhooksControllerGetEndpoints: ( + teamId: string, + projectId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "WebhooksControllerGetEndpoints400", + WebhooksControllerGetEndpoints400 + > + | LegacyApiError< + "WebhooksControllerGetEndpoints500", + WebhooksControllerGetEndpoints500 + > + >; + /** + * Create a new webhook endpoint. The secret will be used to sign webhook payloads using HMAC SHA-256. Store the secret securely - you will need it to verify webhook signatures. + */ + readonly WebhooksControllerCreateEndpoint: ( + teamId: string, + projectId: string, + options: { + readonly payload: WebhooksControllerCreateEndpointRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "WebhooksControllerCreateEndpoint400", + WebhooksControllerCreateEndpoint400 + > + | LegacyApiError< + "WebhooksControllerCreateEndpoint500", + WebhooksControllerCreateEndpoint500 + > + >; + /** + * Retrieve details of a specific webhook endpoint. + */ + readonly WebhooksControllerGetEndpoint: ( + teamId: string, + projectId: string, + endpointId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "WebhooksControllerGetEndpoint400", + WebhooksControllerGetEndpoint400 + > + | LegacyApiError< + "WebhooksControllerGetEndpoint500", + WebhooksControllerGetEndpoint500 + > + >; + /** + * Delete a webhook endpoint. All subscriptions for this endpoint must be deleted first. + */ + readonly WebhooksControllerDeleteEndpoint: ( + teamId: string, + projectId: string, + endpointId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "WebhooksControllerDeleteEndpoint500", + WebhooksControllerDeleteEndpoint500 + > + >; + /** + * Update an existing webhook endpoint. You can update the URL, secret, description, or enable/disable the endpoint. + */ + readonly WebhooksControllerUpdateEndpoint: ( + teamId: string, + projectId: string, + endpointId: string, + options: { + readonly payload: WebhooksControllerUpdateEndpointRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "WebhooksControllerUpdateEndpoint400", + WebhooksControllerUpdateEndpoint400 + > + | LegacyApiError< + "WebhooksControllerUpdateEndpoint500", + WebhooksControllerUpdateEndpoint500 + > + >; + /** + * Toggle whether a webhook endpoint is enabled. When disabled, no webhook deliveries should be attempted for this endpoint. + */ + readonly WebhooksControllerSetEndpointEnabled: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + endpointId: string, + options: { + readonly payload: WebhooksControllerSetEndpointEnabledRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "WebhooksControllerSetEndpointEnabled400", + WebhooksControllerSetEndpointEnabled400 + > + | LegacyApiError< + "WebhooksControllerSetEndpointEnabled500", + WebhooksControllerSetEndpointEnabled500 + > + >; + /** + * Retrieve all subscriptions configured for a specific webhook endpoint. + */ + readonly WebhooksControllerGetSubscriptions: ( + teamId: string, + projectId: string, + endpointId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "WebhooksControllerGetSubscriptions400", + WebhooksControllerGetSubscriptions400 + > + | LegacyApiError< + "WebhooksControllerGetSubscriptions500", + WebhooksControllerGetSubscriptions500 + > + >; + /** + * Create a new webhook subscription. Define which events (resources) and actions you want to receive, optionally with filters. + */ + readonly WebhooksControllerCreateSubscription: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + endpointId: string, + options: { + readonly payload: WebhooksControllerCreateSubscriptionRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "WebhooksControllerCreateSubscription400", + WebhooksControllerCreateSubscription400 + > + | LegacyApiError< + "WebhooksControllerCreateSubscription500", + WebhooksControllerCreateSubscription500 + > + >; + /** + * Retrieve details of a specific webhook subscription. + */ + readonly WebhooksControllerGetSubscription: ( + teamId: string, + projectId: string, + subscriptionId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "WebhooksControllerGetSubscription400", + WebhooksControllerGetSubscription400 + > + | LegacyApiError< + "WebhooksControllerGetSubscription500", + WebhooksControllerGetSubscription500 + > + >; + /** + * Delete a webhook subscription. + */ + readonly WebhooksControllerDeleteSubscription: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + subscriptionId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "WebhooksControllerDeleteSubscription400", + WebhooksControllerDeleteSubscription400 + > + | LegacyApiError< + "WebhooksControllerDeleteSubscription500", + WebhooksControllerDeleteSubscription500 + > + >; + /** + * Update an existing webhook subscription. You can modify events, actions, filters, or enable/disable the subscription. + */ + readonly WebhooksControllerUpdateSubscription: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + subscriptionId: string, + options: { + readonly payload: WebhooksControllerUpdateSubscriptionRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "WebhooksControllerUpdateSubscription400", + WebhooksControllerUpdateSubscription400 + > + | LegacyApiError< + "WebhooksControllerUpdateSubscription500", + WebhooksControllerUpdateSubscription500 + > + >; + /** + * Retrieve delivery history for a webhook endpoint (success/failed/pending, attempt count, last status). + */ + readonly WebhooksControllerGetEndpointDeliveries: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + endpointId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "WebhooksControllerGetEndpointDeliveries400", + WebhooksControllerGetEndpointDeliveries400 + > + | LegacyApiError< + "WebhooksControllerGetEndpointDeliveries500", + WebhooksControllerGetEndpointDeliveries500 + > + >; + /** + * Retrieve details of a single webhook delivery attempt chain. + */ + readonly WebhooksControllerGetDelivery: ( + teamId: string, + projectId: string, + deliveryId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "WebhooksControllerGetDelivery400", + WebhooksControllerGetDelivery400 + > + | LegacyApiError< + "WebhooksControllerGetDelivery500", + WebhooksControllerGetDelivery500 + > + >; + /** + * Retrieve the stored webhook event payload by eventId. Use this together with delivery.eventId to inspect exactly what was sent. + */ + readonly WebhooksControllerGetEvent: ( + teamId: string, + projectId: string, + eventId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | LegacyApiError< + "WebhooksControllerGetEvent400", + WebhooksControllerGetEvent400 + > + | LegacyApiError< + "WebhooksControllerGetEvent500", + WebhooksControllerGetEvent500 + > + >; + /** + * List trade provider configurations for a project + */ + readonly TradeProviderConfigurationControllerList: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse< + TradeProviderConfigurationControllerListdefault, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Update trade provider configuration for a project + */ + readonly TradeProviderConfigurationControllerUpdate: < + Config extends OperationConfig, + >( + teamId: string, + projectId: string, + providerId: string, + options: { + readonly payload: TradeProviderConfigurationControllerUpdateRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + TradeProviderConfigurationControllerUpdatedefault, + Config + >, + HttpClientError.HttpClientError + >; + /** + * Upsert a manual yield status override + */ + readonly YieldStatusControllerUpsert: ( + integrationId: string, + options: { + readonly payload: YieldStatusControllerUpsertRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * Remove a manual yield status override + */ + readonly YieldStatusControllerRemove: ( + integrationId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + /** + * List all manual yield status overrides + */ + readonly YieldStatusControllerFindAll: ( + options: + | { + readonly params?: YieldStatusControllerFindAllParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; + readonly NetworksV2ControllerGetNetworks: ( + options: + | { + readonly params?: NetworksV2ControllerGetNetworksParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; +} + +export interface LegacyApiError { + readonly _tag: Tag; + readonly request: HttpClientRequest.HttpClientRequest; + readonly response: HttpClientResponse.HttpClientResponse; + readonly cause: E; +} + +class LegacyApiErrorImpl extends Data.Error<{ + _tag: string; + cause: any; + request: HttpClientRequest.HttpClientRequest; + response: HttpClientResponse.HttpClientResponse; +}> {} + +export const LegacyApiError = ( + tag: Tag, + cause: E, + response: HttpClientResponse.HttpClientResponse +): LegacyApiError => + new LegacyApiErrorImpl({ + _tag: tag, + cause, + response, + request: response.request, + }) as any; diff --git a/packages/widget/src/generated/api/yield.ts b/packages/widget/src/generated/api/yield.ts new file mode 100644 index 00000000..e8a1839f --- /dev/null +++ b/packages/widget/src/generated/api/yield.ts @@ -0,0 +1,5559 @@ +// @ts-nocheck +// biome-ignore-all lint: generated by Effect OpenAPI +import * as Data from "effect/Data"; +import * as Effect from "effect/Effect"; +import type * as HttpClient from "effect/unstable/http/HttpClient"; +import * as HttpClientError from "effect/unstable/http/HttpClientError"; +import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest"; +import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse"; +// non-recursive definitions +export type TokenDto = { + readonly symbol: string; + readonly name: string; + readonly decimals: number; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly address?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly coinGeckoId?: string; +}; +export type RewardDto = { + readonly rate: number; + readonly rateType: string; + readonly token: { + readonly symbol: string; + readonly name: string; + readonly decimals: number; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly address?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly coinGeckoId?: string; + }; + readonly yieldSource: + | "staking" + | "restaking" + | "protocol_incentive" + | "campaign_incentive" + | "points" + | "lending" + | "mev" + | "real_world_asset_yield" + | "vault"; + readonly description?: string; +}; +export type YieldRiskEntryDto = { + readonly rating: string; + readonly source: "credora" | "stakingRewards"; +}; +export type ERCStandards = "ERC20" | "ERC4626" | "ERC721" | "ERC1155"; +export type YieldType = + | "staking" + | "restaking" + | "lending" + | "vault" + | "fixed_yield" + | "real_world_asset" + | "concentrated_liquidity_pool" + | "liquidity_pool"; +export type RewardSchedule = + | "block" + | "hour" + | "day" + | "week" + | "month" + | "era" + | "epoch" + | "campaign"; +export type RewardClaiming = "auto" | "manual"; +export type ArgumentFieldDto = { + readonly name: + | "amount" + | "amounts" + | "validatorAddress" + | "validatorAddresses" + | "receiverAddress" + | "providerId" + | "duration" + | "inputToken" + | "inputTokenNetwork" + | "outputToken" + | "outputTokenNetwork" + | "subnetId" + | "tronResource" + | "feeConfigurationId" + | "cosmosPubKey" + | "tezosPubKey" + | "cAddressBech" + | "pAddressBech" + | "executionMode" + | "ledgerWalletApiCompatible" + | "useMaxAmount" + | "useInstantExecution" + | "rangeMin" + | "rangeMax" + | "percentage" + | "tokenId" + | "skipPrechecks" + | "useMaxAllowance" + | "feePayerAddress"; + readonly type: "string" | "number" | "address" | "enum" | "boolean"; + readonly label: string; + readonly description?: string; + readonly required?: boolean; + readonly options?: ReadonlyArray; + readonly optionsRef?: string; + readonly default?: {}; + readonly placeholder?: string; + readonly minimum?: string | null; + readonly maximum?: string | null; + readonly isArray?: boolean; +}; +export type AllocationDto = { + readonly address: string; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly name: string; + readonly yieldId?: string; + readonly providerId?: string; + readonly allocation: string; + readonly allocationUsd: string | null; + readonly weight: number; + readonly targetWeight: number; + readonly rewardRate: { + readonly total: number; + readonly rateType: string; + } | null; + readonly tvl: string | null; + readonly tvlUsd: string | null; + readonly maxCapacity: string | null; + readonly remainingCapacity: string | null; +}; +export type BalanceType = + | "active" + | "entering" + | "exiting" + | "withdrawable" + | "claimable" + | "locked"; +export type YieldErrorDto = { + readonly yieldId: string; + readonly error: string; +}; +export type BalancesQueryDto = { + readonly yieldId?: string; + readonly address: string; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly arguments?: { + readonly cAddressBech?: string; + readonly pAddressBech?: string; + readonly autoSweepDayOfMonth?: number; + readonly autoSweepTimezone?: string; + }; +}; +export type YieldBalancesRequestDto = { + readonly address: string; + readonly arguments?: { + readonly cAddressBech?: string; + readonly pAddressBech?: string; + readonly autoSweepDayOfMonth?: number; + readonly autoSweepTimezone?: string; + }; +}; +export type TransactionDto = { + readonly id: string; + readonly title: string; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly status: + | "NOT_FOUND" + | "CREATED" + | "BLOCKED" + | "WAITING_FOR_SIGNATURE" + | "SIGNED" + | "BROADCASTED" + | "PENDING" + | "CONFIRMED" + | "FAILED" + | "SKIPPED"; + readonly type: + | "SWAP" + | "DEPOSIT" + | "APPROVAL" + | "STAKE" + | "CLAIM_UNSTAKED" + | "CLAIM_REWARDS" + | "RESTAKE_REWARDS" + | "UNSTAKE" + | "SPLIT" + | "MERGE" + | "LOCK" + | "UNLOCK" + | "SUPPLY" + | "ADD_LIQUIDITY" + | "REMOVE_LIQUIDITY" + | "BRIDGE" + | "VOTE" + | "REVOKE" + | "RESTAKE" + | "REBOND" + | "WITHDRAW" + | "WITHDRAW_ALL" + | "CREATE_ACCOUNT" + | "REVEAL" + | "MIGRATE" + | "DELEGATE" + | "UNDELEGATE" + | "UTXO_P_TO_C_IMPORT" + | "UTXO_C_TO_P_IMPORT" + | "WRAP" + | "UNWRAP" + | "UNFREEZE_LEGACY" + | "UNFREEZE_LEGACY_BANDWIDTH" + | "UNFREEZE_LEGACY_ENERGY" + | "UNFREEZE_BANDWIDTH" + | "UNFREEZE_ENERGY" + | "FREEZE_BANDWIDTH" + | "FREEZE_ENERGY" + | "UNDELEGATE_BANDWIDTH" + | "UNDELEGATE_ENERGY" + | "P2P_NODE_REQUEST" + | "CREATE_EIGENPOD" + | "VERIFY_WITHDRAW_CREDENTIALS" + | "START_CHECKPOINT" + | "VERIFY_CHECKPOINT_PROOFS" + | "QUEUE_WITHDRAWALS" + | "COMPLETE_QUEUED_WITHDRAWALS" + | "LZ_DEPOSIT" + | "LZ_WITHDRAW" + | "LUGANODES_PROVISION" + | "LUGANODES_EXIT_REQUEST" + | "INFSTONES_PROVISION" + | "INFSTONES_EXIT_REQUEST" + | "INFSTONES_CLAIM_REQUEST" + | "BATCH"; + readonly hash: string | null; + readonly createdAt: string; + readonly broadcastedAt: string | null; + readonly signedTransaction: string | null; + readonly unsignedTransaction: string | {} | null; + readonly annotatedTransaction?: {} | null; + readonly structuredTransaction?: {} | null; + readonly stepIndex?: number; + readonly description?: string; + readonly error?: string | null; + readonly gasEstimate?: string; + readonly explorerUrl?: string | null; + readonly isMessage?: boolean; +}; +export type PaginatedResponseDto = { + readonly total: number; + readonly offset: number; + readonly limit: number; +}; +export type YieldRiskCredoraDto = { + readonly rating?: {}; + readonly score?: {}; + readonly psl?: {}; + readonly publishDate?: {}; + readonly curator?: {}; +}; +export type YieldRiskStakingRewardsMetricsDto = { readonly users?: {} }; +export type RewardRateHistoryResponseDto = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly yieldId: string; + readonly interval: "day" | "week" | "month"; + readonly from: string; + readonly to: string; +}; +export type TvlHistoryResponseDto = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly yieldId: string; + readonly interval: "day" | "week" | "month"; + readonly from: string; + readonly to: string; +}; +export type CampaignStatus = "draft" | "active" | "paused" | "ended"; +export type CampaignRewardMode = "normal" | "compound"; +export type CampaignQualificationType = "min_token_amount"; +export type CampaignPayoutFrequency = + | "weekly" + | "daily" + | "six_hourly" + | "end_of_campaign"; +export type CreateActionDto = { + readonly yieldId: string; + readonly address: string; + readonly arguments?: { + readonly amount?: string; + readonly amounts?: ReadonlyArray; + readonly validatorAddress?: string; + readonly validatorAddresses?: ReadonlyArray; + readonly providerId?: string; + readonly duration?: number; + readonly inputToken?: string; + readonly inputTokenNetwork?: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly outputToken?: string; + readonly outputTokenNetwork?: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly subnetId?: number; + readonly tronResource?: "BANDWIDTH" | "ENERGY"; + readonly feeConfigurationId?: string; + readonly cosmosPubKey?: string; + readonly tezosPubKey?: string; + readonly cAddressBech?: string; + readonly pAddressBech?: string; + readonly executionMode?: "individual" | "batched"; + readonly ledgerWalletApiCompatible?: boolean; + readonly useMaxAmount?: boolean; + readonly useInstantExecution?: boolean; + readonly skipPrechecks?: boolean; + readonly useMaxAllowance?: boolean; + readonly feePayerAddress?: string; + readonly receiverAddress?: string; + readonly rangeMin?: string; + readonly rangeMax?: string; + readonly percentage?: number; + readonly tokenId?: string; + }; +}; +export type CreateManageActionDto = { + readonly yieldId: string; + readonly address: string; + readonly arguments?: { + readonly amount?: string; + readonly amounts?: ReadonlyArray; + readonly validatorAddress?: string; + readonly validatorAddresses?: ReadonlyArray; + readonly providerId?: string; + readonly duration?: number; + readonly inputToken?: string; + readonly inputTokenNetwork?: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly outputToken?: string; + readonly outputTokenNetwork?: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly subnetId?: number; + readonly tronResource?: "BANDWIDTH" | "ENERGY"; + readonly feeConfigurationId?: string; + readonly cosmosPubKey?: string; + readonly tezosPubKey?: string; + readonly cAddressBech?: string; + readonly pAddressBech?: string; + readonly executionMode?: "individual" | "batched"; + readonly ledgerWalletApiCompatible?: boolean; + readonly useMaxAmount?: boolean; + readonly useInstantExecution?: boolean; + readonly skipPrechecks?: boolean; + readonly useMaxAllowance?: boolean; + readonly feePayerAddress?: string; + readonly receiverAddress?: string; + readonly rangeMin?: string; + readonly rangeMax?: string; + readonly percentage?: number; + readonly tokenId?: string; + }; + readonly action: + | "STAKE" + | "UNSTAKE" + | "CLAIM_REWARDS" + | "AUTO_SWEEP_UNSTAKE_REWARDS" + | "AUTO_SWEEP_WITHDRAW_REWARDS" + | "RESTAKE_REWARDS" + | "WITHDRAW" + | "WITHDRAW_ALL" + | "RESTAKE" + | "CLAIM_UNSTAKED" + | "UNLOCK_LOCKED" + | "STAKE_LOCKED" + | "VOTE" + | "REVOKE" + | "VOTE_LOCKED" + | "REVOTE" + | "REBOND" + | "MIGRATE" + | "VERIFY_WITHDRAW_CREDENTIALS" + | "DELEGATE"; + readonly passthrough: string; +}; +export type SubmitHashDto = { readonly hash: string }; +export type SubmitTransactionDto = { readonly signedTransaction: string }; +export type NetworkDto = { + readonly id: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly name: string; + readonly category: "evm" | "cosmos" | "substrate" | "misc"; + readonly logoURI: string; +}; +export type ProviderDto = { + readonly name: string; + readonly id: string; + readonly logoURI: string; + readonly description: string; + readonly website: string; + readonly tvlUsd: {} | null; + readonly type: "protocol" | "validator_provider"; + readonly references?: ReadonlyArray; +}; +export type HealthStatusDto = { + readonly status: "OK" | "FAIL"; + readonly timestamp: string; +}; +export type ValidatorDto = { + readonly address: string; + readonly name?: string; + readonly logoURI?: string; + readonly website?: string; + readonly rewardRate?: { + readonly total: number; + readonly rateType: string; + readonly components: ReadonlyArray; + }; + readonly provider?: { + readonly name: string; + readonly id: string; + readonly logoURI: string; + readonly description: string; + readonly website: string; + readonly tvlUsd: {} | null; + readonly type: "protocol" | "validator_provider"; + readonly references?: ReadonlyArray; + readonly rank: number; + readonly preferred: boolean; + readonly revshare?: { + readonly trial?: { + readonly minRevShare: number; + readonly maxRevShare: number; + }; + readonly standard?: { + readonly minRevShare: number; + readonly maxRevShare: number; + }; + readonly pro?: { + readonly minRevShare: number; + readonly maxRevShare: number; + }; + }; + readonly uniqueId?: string; + readonly createdAt?: string; + readonly updatedAt?: string; + }; + readonly commission?: number; + readonly tvlUsd?: string; + readonly tvl?: string; + readonly tvlRaw?: string; + readonly votingPower?: number; + readonly preferred?: boolean; + readonly minimumStake?: string; + readonly remainingPossibleStake?: string; + readonly remainingSlots?: number; + readonly nominatorCount?: number; + readonly status?: string; + readonly providerId?: string; + readonly pricePerShare?: string; + readonly subnetId?: number; + readonly subnetName?: string; + readonly marketCap?: string; + readonly tokenSymbol?: string; +}; +export type ArgumentSchemaDto = { + readonly fields: ReadonlyArray; + readonly notes?: string; +}; +export type PendingActionDto = { + readonly intent: "enter" | "manage" | "exit"; + readonly type: + | "STAKE" + | "UNSTAKE" + | "CLAIM_REWARDS" + | "AUTO_SWEEP_UNSTAKE_REWARDS" + | "AUTO_SWEEP_WITHDRAW_REWARDS" + | "RESTAKE_REWARDS" + | "WITHDRAW" + | "WITHDRAW_ALL" + | "RESTAKE" + | "CLAIM_UNSTAKED" + | "UNLOCK_LOCKED" + | "STAKE_LOCKED" + | "VOTE" + | "REVOKE" + | "VOTE_LOCKED" + | "REVOTE" + | "REBOND" + | "MIGRATE" + | "VERIFY_WITHDRAW_CREDENTIALS" + | "DELEGATE"; + readonly passthrough: string; + readonly arguments?: { + readonly fields: ReadonlyArray; + readonly notes?: string; + } | null; + readonly amount?: string | null; +}; +export type BalancesRequestDto = { + readonly queries: ReadonlyArray; +}; +export type ActionDto = { + readonly id: string; + readonly intent: "enter" | "manage" | "exit"; + readonly type: + | "STAKE" + | "UNSTAKE" + | "CLAIM_REWARDS" + | "AUTO_SWEEP_UNSTAKE_REWARDS" + | "AUTO_SWEEP_WITHDRAW_REWARDS" + | "RESTAKE_REWARDS" + | "WITHDRAW" + | "WITHDRAW_ALL" + | "RESTAKE" + | "CLAIM_UNSTAKED" + | "UNLOCK_LOCKED" + | "STAKE_LOCKED" + | "VOTE" + | "REVOKE" + | "VOTE_LOCKED" + | "REVOTE" + | "REBOND" + | "MIGRATE" + | "VERIFY_WITHDRAW_CREDENTIALS" + | "DELEGATE"; + readonly yieldId: string; + readonly address: string; + readonly amount: string | null; + readonly amountRaw: string | null; + readonly amountUsd: string | null; + readonly transactions: ReadonlyArray; + readonly executionPattern: "synchronous" | "asynchronous" | "batch"; + readonly rawArguments: { + readonly amount?: string; + readonly amounts?: ReadonlyArray; + readonly validatorAddress?: string; + readonly validatorAddresses?: ReadonlyArray; + readonly providerId?: string; + readonly duration?: number; + readonly inputToken?: string; + readonly inputTokenNetwork?: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly outputToken?: string; + readonly outputTokenNetwork?: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly subnetId?: number; + readonly tronResource?: "BANDWIDTH" | "ENERGY"; + readonly feeConfigurationId?: string; + readonly cosmosPubKey?: string; + readonly tezosPubKey?: string; + readonly cAddressBech?: string; + readonly pAddressBech?: string; + readonly executionMode?: "individual" | "batched"; + readonly ledgerWalletApiCompatible?: boolean; + readonly useMaxAmount?: boolean; + readonly useInstantExecution?: boolean; + readonly skipPrechecks?: boolean; + readonly useMaxAllowance?: boolean; + readonly feePayerAddress?: string; + readonly receiverAddress?: string; + readonly rangeMin?: string; + readonly rangeMax?: string; + readonly percentage?: number; + readonly tokenId?: string; + } | null; + readonly createdAt: string; + readonly completedAt: string | null; + readonly status: + | "CANCELED" + | "CREATED" + | "WAITING_FOR_NEXT" + | "PROCESSING" + | "FAILED" + | "SUCCESS" + | "STALE"; +}; +export type YieldRiskStakingRewardsDto = { + readonly rating?: {}; + readonly score?: {}; + readonly potentialRating?: {}; + readonly potentialScore?: {}; + readonly ratedAt?: {}; + readonly ratedSince?: {}; + readonly profileUrl?: {}; + readonly reportUrl?: {}; + readonly providerName?: {}; + readonly version?: {}; + readonly type?: {}; + readonly chain?: {}; + readonly contractAddress?: {}; + readonly riskMetrics?: YieldRiskStakingRewardsMetricsDto; +}; +export type YieldCampaignDto = { + readonly id: string; + readonly name?: string | null; + readonly createdAt: string; + readonly updatedAt: string; + readonly yieldId: string; + readonly status: CampaignStatus; + readonly rewardMode: CampaignRewardMode; + readonly rewardRate: { + readonly total: number; + readonly rateType: string; + readonly components: ReadonlyArray; + } | null; + readonly totalBudget: string; + readonly distributedBudget: string; + readonly remainingBudget: string; + readonly configuredHourlyEmission?: string | null; + readonly apyCeiling?: number | null; + readonly qualificationConfig: { + readonly type: CampaignQualificationType; + readonly threshold: string; + readonly maxIncentivizedTvlToken?: string | null; + }; + readonly startTime: string; + readonly endTime: string; + readonly lastProcessedHour?: string; + readonly nextPayoutDueAt?: string; + readonly payoutFrequency: CampaignPayoutFrequency; + readonly rewardToken: { + readonly symbol: string; + readonly name: string; + readonly decimals: number; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly address?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly coinGeckoId?: string; + }; +}; +export type YieldDto = { + readonly id: string; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly chainId?: string; + readonly inputTokens: ReadonlyArray; + readonly outputToken?: { + readonly symbol: string; + readonly name: string; + readonly decimals: number; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly address?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly coinGeckoId?: string; + }; + readonly token: { + readonly symbol: string; + readonly name: string; + readonly decimals: number; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly address?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly coinGeckoId?: string; + }; + readonly tokens: ReadonlyArray; + readonly rewardRate: { + readonly total: number; + readonly rateType: string; + readonly components: ReadonlyArray; + }; + readonly statistics?: { + readonly tvlUsd?: string | null; + readonly tvl?: string | null; + readonly tvlRaw?: string | null; + readonly uniqueUsers?: number | null; + readonly averagePositionSizeUsd?: string | null; + readonly averagePositionSize?: string | null; + }; + readonly risk?: { readonly ratings: ReadonlyArray }; + readonly status: { readonly enter: boolean; readonly exit: boolean }; + readonly metadata: { + readonly name: string; + readonly logoURI: string; + readonly description: string; + readonly documentation: string; + readonly underMaintenance: boolean; + readonly deprecated: boolean; + readonly supportedStandards: ReadonlyArray; + readonly supportsCampaigns: boolean; + }; + readonly mechanics: { + readonly type: YieldType; + readonly requiresValidatorSelection?: boolean; + readonly rewardSchedule: RewardSchedule; + readonly rewardClaiming: RewardClaiming; + readonly gasFeeToken: { + readonly symbol: string; + readonly name: string; + readonly decimals: number; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly address?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly coinGeckoId?: string; + }; + readonly lockupPeriod?: { readonly seconds: number }; + readonly cooldownPeriod?: { readonly seconds: number }; + readonly warmupPeriod?: { readonly seconds: number }; + readonly fee?: { + readonly deposit?: string; + readonly withdrawal?: string; + readonly management?: string; + readonly performance?: string; + }; + readonly entryLimits?: { + readonly minimum: string | null; + readonly maximum: string | null; + }; + readonly requirements?: { + readonly kycRequired: boolean; + readonly kycUrl?: string; + }; + readonly supportsLedgerWalletApi?: boolean; + readonly extraTransactionFormatsSupported?: ReadonlyArray< + "raw" | "default" + >; + readonly arguments?: { + readonly enter?: ArgumentSchemaDto; + readonly exit?: ArgumentSchemaDto; + readonly manage?: { readonly [x: string]: ArgumentSchemaDto }; + readonly balance?: { + readonly fields: ReadonlyArray; + readonly notes?: string; + }; + }; + readonly possibleFeeTakingMechanisms?: { + readonly depositFee: boolean; + readonly managementFee: boolean; + readonly performanceFee: boolean; + readonly validatorRebates: boolean; + }; + }; + readonly providerId: string; + readonly curator?: { + readonly name?: {} | null; + readonly description?: {} | null; + readonly logoURI?: {} | null; + }; + readonly tags?: ReadonlyArray; + readonly state?: { + readonly pricePerShareState?: { + readonly price: number; + readonly shareToken: { + readonly symbol: string; + readonly name: string; + readonly decimals: number; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly address?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly coinGeckoId?: string; + }; + readonly quoteToken: { + readonly symbol: string; + readonly name: string; + readonly decimals: number; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly address?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly coinGeckoId?: string; + }; + }; + readonly concentratedLiquidityPoolState?: { + readonly baseApr: number; + readonly price: number; + readonly tickSpacing: number; + readonly minTick: number; + readonly maxTick: number; + readonly volume24hUsd: number | null; + readonly fee24hUsd: number | null; + readonly tvlUsd: number | null; + readonly feeTier: number; + readonly baseToken: { + readonly symbol: string; + readonly name: string; + readonly decimals: number; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly address?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly coinGeckoId?: string; + }; + readonly quoteToken: { + readonly symbol: string; + readonly name: string; + readonly decimals: number; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly address?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly coinGeckoId?: string; + }; + }; + readonly capacityState?: { + readonly current: string; + readonly max?: string | null; + readonly remaining?: string | null; + }; + readonly liquidityState?: { + readonly liquidity?: {} | null; + readonly utilization?: {} | null; + }; + readonly allocations?: ReadonlyArray; + }; + readonly executionContracts?: { + readonly enter?: ReadonlyArray; + readonly exit?: ReadonlyArray; + }; +}; +export type BalanceDto = { + readonly address: string; + readonly type: BalanceType; + readonly amount: string; + readonly amountRaw: string; + readonly date?: string; + readonly feeConfigurationId?: string; + readonly pendingActions: ReadonlyArray; + readonly token: { + readonly symbol: string; + readonly name: string; + readonly decimals: number; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly address?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly coinGeckoId?: string; + }; + readonly validator?: { + readonly address: string; + readonly name?: string; + readonly logoURI?: string; + readonly website?: string; + readonly rewardRate?: { + readonly total: number; + readonly rateType: string; + readonly components: ReadonlyArray; + }; + readonly provider?: { + readonly name: string; + readonly id: string; + readonly logoURI: string; + readonly description: string; + readonly website: string; + readonly tvlUsd: {} | null; + readonly type: "protocol" | "validator_provider"; + readonly references?: ReadonlyArray; + readonly rank: number; + readonly preferred: boolean; + readonly revshare?: { + readonly trial?: { + readonly minRevShare: number; + readonly maxRevShare: number; + }; + readonly standard?: { + readonly minRevShare: number; + readonly maxRevShare: number; + }; + readonly pro?: { + readonly minRevShare: number; + readonly maxRevShare: number; + }; + }; + readonly uniqueId?: string; + readonly createdAt?: string; + readonly updatedAt?: string; + }; + readonly commission?: number; + readonly tvlUsd?: string; + readonly tvl?: string; + readonly tvlRaw?: string; + readonly votingPower?: number; + readonly preferred?: boolean; + readonly minimumStake?: string; + readonly remainingPossibleStake?: string; + readonly remainingSlots?: number; + readonly nominatorCount?: number; + readonly status?: string; + readonly providerId?: string; + readonly pricePerShare?: string; + readonly subnetId?: number; + readonly subnetName?: string; + readonly marketCap?: string; + readonly tokenSymbol?: string; + } | null; + readonly validators?: ReadonlyArray<{ + readonly address: string; + readonly name?: string; + readonly logoURI?: string; + readonly website?: string; + readonly rewardRate?: { + readonly total: number; + readonly rateType: string; + readonly components: ReadonlyArray; + }; + readonly provider?: { + readonly name: string; + readonly id: string; + readonly logoURI: string; + readonly description: string; + readonly website: string; + readonly tvlUsd: {} | null; + readonly type: "protocol" | "validator_provider"; + readonly references?: ReadonlyArray; + readonly rank: number; + readonly preferred: boolean; + readonly revshare?: { + readonly trial?: { + readonly minRevShare: number; + readonly maxRevShare: number; + }; + readonly standard?: { + readonly minRevShare: number; + readonly maxRevShare: number; + }; + readonly pro?: { + readonly minRevShare: number; + readonly maxRevShare: number; + }; + }; + readonly uniqueId?: string; + readonly createdAt?: string; + readonly updatedAt?: string; + }; + readonly commission?: number; + readonly tvlUsd?: string; + readonly tvl?: string; + readonly tvlRaw?: string; + readonly votingPower?: number; + readonly preferred?: boolean; + readonly minimumStake?: string; + readonly remainingPossibleStake?: string; + readonly remainingSlots?: number; + readonly nominatorCount?: number; + readonly status?: string; + readonly providerId?: string; + readonly pricePerShare?: string; + readonly subnetId?: number; + readonly subnetName?: string; + readonly marketCap?: string; + readonly tokenSymbol?: string; + }>; + readonly amountUsd?: string | null; + readonly isEarning: boolean; + readonly priceRange?: {}; + readonly tokenId?: string; + readonly shareAmount?: string; + readonly shareAmountRaw?: string; + readonly shareToken?: { + readonly symbol: string; + readonly name: string; + readonly decimals: number; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly address?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly coinGeckoId?: string; + }; +}; +export type YieldRiskDto = { + readonly updatedAt: string; + readonly credora?: YieldRiskCredoraDto; + readonly stakingRewards?: YieldRiskStakingRewardsDto; +}; +export type YieldBalancesDto = { + readonly yieldId: string; + readonly balances: ReadonlyArray; + readonly outputTokenBalance?: { + readonly address: string; + readonly type: BalanceType; + readonly amount: string; + readonly amountRaw: string; + readonly date?: string; + readonly feeConfigurationId?: string; + readonly pendingActions: ReadonlyArray; + readonly token: { + readonly symbol: string; + readonly name: string; + readonly decimals: number; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly address?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly coinGeckoId?: string; + }; + readonly validator?: { + readonly address: string; + readonly name?: string; + readonly logoURI?: string; + readonly website?: string; + readonly rewardRate?: { + readonly total: number; + readonly rateType: string; + readonly components: ReadonlyArray; + }; + readonly provider?: { + readonly name: string; + readonly id: string; + readonly logoURI: string; + readonly description: string; + readonly website: string; + readonly tvlUsd: {} | null; + readonly type: "protocol" | "validator_provider"; + readonly references?: ReadonlyArray; + readonly rank: number; + readonly preferred: boolean; + readonly revshare?: { + readonly trial?: { + readonly minRevShare: number; + readonly maxRevShare: number; + }; + readonly standard?: { + readonly minRevShare: number; + readonly maxRevShare: number; + }; + readonly pro?: { + readonly minRevShare: number; + readonly maxRevShare: number; + }; + }; + readonly uniqueId?: string; + readonly createdAt?: string; + readonly updatedAt?: string; + }; + readonly commission?: number; + readonly tvlUsd?: string; + readonly tvl?: string; + readonly tvlRaw?: string; + readonly votingPower?: number; + readonly preferred?: boolean; + readonly minimumStake?: string; + readonly remainingPossibleStake?: string; + readonly remainingSlots?: number; + readonly nominatorCount?: number; + readonly status?: string; + readonly providerId?: string; + readonly pricePerShare?: string; + readonly subnetId?: number; + readonly subnetName?: string; + readonly marketCap?: string; + readonly tokenSymbol?: string; + } | null; + readonly validators?: ReadonlyArray<{ + readonly address: string; + readonly name?: string; + readonly logoURI?: string; + readonly website?: string; + readonly rewardRate?: { + readonly total: number; + readonly rateType: string; + readonly components: ReadonlyArray; + }; + readonly provider?: { + readonly name: string; + readonly id: string; + readonly logoURI: string; + readonly description: string; + readonly website: string; + readonly tvlUsd: {} | null; + readonly type: "protocol" | "validator_provider"; + readonly references?: ReadonlyArray; + readonly rank: number; + readonly preferred: boolean; + readonly revshare?: { + readonly trial?: { + readonly minRevShare: number; + readonly maxRevShare: number; + }; + readonly standard?: { + readonly minRevShare: number; + readonly maxRevShare: number; + }; + readonly pro?: { + readonly minRevShare: number; + readonly maxRevShare: number; + }; + }; + readonly uniqueId?: string; + readonly createdAt?: string; + readonly updatedAt?: string; + }; + readonly commission?: number; + readonly tvlUsd?: string; + readonly tvl?: string; + readonly tvlRaw?: string; + readonly votingPower?: number; + readonly preferred?: boolean; + readonly minimumStake?: string; + readonly remainingPossibleStake?: string; + readonly remainingSlots?: number; + readonly nominatorCount?: number; + readonly status?: string; + readonly providerId?: string; + readonly pricePerShare?: string; + readonly subnetId?: number; + readonly subnetName?: string; + readonly marketCap?: string; + readonly tokenSymbol?: string; + }>; + readonly amountUsd?: string | null; + readonly isEarning: boolean; + readonly priceRange?: {}; + readonly tokenId?: string; + readonly shareAmount?: string; + readonly shareAmountRaw?: string; + readonly shareToken?: { + readonly symbol: string; + readonly name: string; + readonly decimals: number; + readonly network: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly address?: string; + readonly logoURI?: string; + readonly isPoints?: boolean; + readonly coinGeckoId?: string; + }; + } | null; + readonly rewardRate?: { + readonly total: number; + readonly rateType: string; + readonly components: ReadonlyArray; + } | null; +}; +export type BalanceHistorySnapshotDto = { + readonly timestamp: string; + readonly blockNumber: number; + readonly yieldId: string; + readonly balances: ReadonlyArray; +}; +export type BalancesResponseDto = { + readonly items: ReadonlyArray; + readonly errors: ReadonlyArray; +}; +// schemas +export type YieldsControllerGetYieldsParams = { + readonly offset?: number; + readonly limit?: number; + readonly network?: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; + readonly chainId?: string; + readonly networks?: string; + readonly yieldId?: string; + readonly yieldIds?: ReadonlyArray; + readonly type?: + | "staking" + | "restaking" + | "lending" + | "vault" + | "fixed_yield" + | "real_world_asset" + | "concentrated_liquidity_pool" + | "liquidity_pool"; + readonly types?: ReadonlyArray< + | "staking" + | "restaking" + | "lending" + | "vault" + | "fixed_yield" + | "real_world_asset" + | "concentrated_liquidity_pool" + | "liquidity_pool" + >; + readonly hasCooldownPeriod?: boolean; + readonly hasWarmupPeriod?: boolean; + readonly token?: string; + readonly inputToken?: string; + readonly inputTokens?: ReadonlyArray; + readonly provider?: string; + readonly providers?: ReadonlyArray; + readonly search?: string; + readonly sort?: + | "statusEnterAsc" + | "statusEnterDesc" + | "statusExitAsc" + | "statusExitDesc" + | "rewardRateAsc" + | "rewardRateDesc"; +}; +export type YieldsControllerGetYields200 = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items?: ReadonlyArray; +}; +export type YieldsControllerGetYields400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYields401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYields429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type YieldsControllerGetYields500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetAggregateBalancesRequestJson = + BalancesRequestDto; +export type YieldsControllerGetAggregateBalances200 = BalancesResponseDto; +export type YieldsControllerGetAggregateBalances400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetAggregateBalances401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetAggregateBalances429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type YieldsControllerGetAggregateBalances500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYield200 = YieldDto; +export type YieldsControllerGetYield400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYield401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYield429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type YieldsControllerGetYield500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldRisk200 = YieldRiskDto; +export type YieldsControllerGetYieldRisk400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldRisk401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldRisk429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type YieldsControllerGetYieldRisk500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetBalanceHistoryParams = { + readonly address: string; + readonly from?: string; + readonly to?: string; + readonly blockNumber?: number; + readonly interval?: "block" | "hour" | "day" | "week"; + readonly sort?: "asc" | "desc"; + readonly limit?: number; + readonly offset?: number; +}; +export type YieldsControllerGetBalanceHistory200 = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items?: ReadonlyArray; +}; +export type YieldsControllerGetBalanceHistory400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetBalanceHistory401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetBalanceHistory429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type YieldsControllerGetBalanceHistory500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldBalancesRequestJson = + YieldBalancesRequestDto; +export type YieldsControllerGetYieldBalances200 = YieldBalancesDto; +export type YieldsControllerGetYieldBalances400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldBalances401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldBalances429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type YieldsControllerGetYieldBalances500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldRewardsParams = { + readonly address: string; + readonly from?: string; + readonly to?: string; + readonly sort?: "asc" | "desc"; + readonly limit?: number; + readonly offset?: number; +}; +export type YieldsControllerGetYieldRewards200 = PaginatedResponseDto; +export type YieldsControllerGetYieldRewards400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldRewards401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldRewards429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type YieldsControllerGetYieldRewards500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldRewardRateHistoryParams = { + readonly offset?: number; + readonly limit?: number; + readonly from?: string; + readonly to?: string; + readonly period?: "1d" | "7d" | "30d" | "90d" | "1y" | "all"; + readonly interval?: "day" | "week" | "month"; +}; +export type YieldsControllerGetYieldRewardRateHistory200 = + RewardRateHistoryResponseDto; +export type YieldsControllerGetYieldRewardRateHistory400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldRewardRateHistory401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldRewardRateHistory429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type YieldsControllerGetYieldRewardRateHistory500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldTvlHistoryParams = { + readonly offset?: number; + readonly limit?: number; + readonly from?: string; + readonly to?: string; + readonly period?: "1d" | "7d" | "30d" | "90d" | "1y" | "all"; + readonly interval?: "day" | "week" | "month"; +}; +export type YieldsControllerGetYieldTvlHistory200 = TvlHistoryResponseDto; +export type YieldsControllerGetYieldTvlHistory400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldTvlHistory401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldTvlHistory429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type YieldsControllerGetYieldTvlHistory500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldValidatorsParams = { + readonly offset?: number; + readonly limit?: number; + readonly name?: string; + readonly address?: string; + readonly provider?: string; + readonly status?: string; + readonly preferred?: boolean; +}; +export type YieldsControllerGetYieldValidators200 = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items?: ReadonlyArray; +}; +export type YieldsControllerGetYieldValidators400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldValidators401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldValidators429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type YieldsControllerGetYieldValidators500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldCampaignsParams = { + readonly offset?: number; + readonly limit?: number; + readonly status?: CampaignStatus; +}; +export type YieldsControllerGetYieldCampaigns200 = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items?: ReadonlyArray; +}; +export type YieldsControllerGetYieldCampaigns400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldCampaigns401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type YieldsControllerGetYieldCampaigns429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type YieldsControllerGetYieldCampaigns500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ActionsControllerGetActionsParams = { + readonly offset?: number; + readonly limit?: number; + readonly address: string; + readonly status?: + | "CANCELED" + | "CREATED" + | "WAITING_FOR_NEXT" + | "PROCESSING" + | "FAILED" + | "SUCCESS" + | "STALE"; + readonly statuses?: ReadonlyArray< + | "CANCELED" + | "CREATED" + | "WAITING_FOR_NEXT" + | "PROCESSING" + | "FAILED" + | "SUCCESS" + | "STALE" + >; + readonly intent?: "enter" | "exit" | "manage"; + readonly type?: + | "STAKE" + | "UNSTAKE" + | "CLAIM_REWARDS" + | "AUTO_SWEEP_UNSTAKE_REWARDS" + | "AUTO_SWEEP_WITHDRAW_REWARDS" + | "RESTAKE_REWARDS" + | "WITHDRAW" + | "WITHDRAW_ALL" + | "RESTAKE" + | "CLAIM_UNSTAKED" + | "UNLOCK_LOCKED" + | "STAKE_LOCKED" + | "VOTE" + | "REVOKE" + | "VOTE_LOCKED" + | "REVOTE" + | "REBOND" + | "MIGRATE" + | "VERIFY_WITHDRAW_CREDENTIALS" + | "DELEGATE"; + readonly yieldId?: string; + readonly network?: + | "ethereum" + | "ethereum-goerli" + | "ethereum-holesky" + | "ethereum-sepolia" + | "ethereum-hoodi" + | "arbitrum" + | "base" + | "base-sepolia" + | "gnosis" + | "optimism" + | "polygon" + | "polygon-amoy" + | "starknet" + | "zksync" + | "linea" + | "unichain" + | "monad-testnet" + | "monad" + | "avalanche-c" + | "avalanche-c-atomic" + | "avalanche-p" + | "binance" + | "celo" + | "fantom" + | "harmony" + | "moonriver" + | "okc" + | "viction" + | "core" + | "sonic" + | "plasma" + | "katana" + | "hyperevm" + | "agoric" + | "akash" + | "axelar" + | "band-protocol" + | "bitsong" + | "canto" + | "chihuahua" + | "comdex" + | "coreum" + | "cosmos" + | "crescent" + | "cronos" + | "cudos" + | "desmos" + | "dydx" + | "evmos" + | "fetch-ai" + | "gravity-bridge" + | "injective" + | "irisnet" + | "juno" + | "kava" + | "ki-network" + | "mars-protocol" + | "nym" + | "okex-chain" + | "onomy" + | "osmosis" + | "persistence" + | "quicksilver" + | "regen" + | "secret" + | "sentinel" + | "sommelier" + | "stafi" + | "stargaze" + | "stride" + | "teritori" + | "tgrade" + | "umee" + | "sei" + | "mantra" + | "celestia" + | "saga" + | "zetachain" + | "dymension" + | "humansai" + | "neutron" + | "polkadot" + | "kusama" + | "westend" + | "bittensor" + | "aptos" + | "binancebeacon" + | "cardano" + | "near" + | "solana" + | "solana-devnet" + | "stellar" + | "stellar-testnet" + | "sui" + | "tezos" + | "tron" + | "ton" + | "ton-testnet" + | "hyperliquid"; +}; +export type ActionsControllerGetActions200 = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items?: ReadonlyArray; +}; +export type ActionsControllerGetActions400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ActionsControllerGetActions401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ActionsControllerGetActions429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type ActionsControllerGetActions500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ActionsControllerGetAction200 = ActionDto; +export type ActionsControllerGetAction400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ActionsControllerGetAction401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ActionsControllerGetAction429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type ActionsControllerGetAction500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ActionsControllerEnterYieldRequestJson = CreateActionDto; +export type ActionsControllerEnterYield201 = ActionDto; +export type ActionsControllerEnterYield400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ActionsControllerEnterYield401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ActionsControllerEnterYield403 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ActionsControllerEnterYield429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type ActionsControllerEnterYield500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ActionsControllerExitYieldRequestJson = CreateActionDto; +export type ActionsControllerExitYield201 = ActionDto; +export type ActionsControllerExitYield400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ActionsControllerExitYield401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ActionsControllerExitYield403 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ActionsControllerExitYield429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type ActionsControllerExitYield500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ActionsControllerManageYieldRequestJson = CreateManageActionDto; +export type ActionsControllerManageYield201 = ActionDto; +export type ActionsControllerManageYield400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ActionsControllerManageYield401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ActionsControllerManageYield403 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ActionsControllerManageYield429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type ActionsControllerManageYield500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type TransactionsControllerSubmitTransactionHashRequestJson = + SubmitHashDto; +export type TransactionsControllerSubmitTransactionHash200 = TransactionDto; +export type TransactionsControllerSubmitTransactionHash401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type TransactionsControllerSubmitTransactionHash429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type TransactionsControllerSubmitTransactionHash500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type TransactionsControllerSubmitTransactionRequestJson = + SubmitTransactionDto; +export type TransactionsControllerSubmitTransaction200 = TransactionDto; +export type TransactionsControllerSubmitTransaction401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type TransactionsControllerSubmitTransaction429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type TransactionsControllerSubmitTransaction500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type TransactionsControllerGetTransaction200 = TransactionDto; +export type TransactionsControllerGetTransaction400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type TransactionsControllerGetTransaction401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type TransactionsControllerGetTransaction429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type TransactionsControllerGetTransaction500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type NetworksControllerGetNetworks200 = ReadonlyArray; +export type NetworksControllerGetNetworks400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type NetworksControllerGetNetworks401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type NetworksControllerGetNetworks429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type NetworksControllerGetNetworks500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ProvidersControllerGetProvidersParams = { + readonly offset?: number; + readonly limit?: number; +}; +export type ProvidersControllerGetProviders200 = { + readonly total: number; + readonly offset: number; + readonly limit: number; + readonly items?: ReadonlyArray; +}; +export type ProvidersControllerGetProviders400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ProvidersControllerGetProviders401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ProvidersControllerGetProviders429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type ProvidersControllerGetProviders500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ProvidersControllerGetProvider200 = ProviderDto; +export type ProvidersControllerGetProvider400 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ProvidersControllerGetProvider401 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type ProvidersControllerGetProvider429 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; + readonly retryAfter?: number; +}; +export type ProvidersControllerGetProvider500 = { + readonly message?: string; + readonly error?: string; + readonly statusCode?: number; +}; +export type HealthControllerHealth200 = HealthStatusDto; + +export interface OperationConfig { + /** + * Whether or not the response should be included in the value returned from + * an operation. + * + * If set to `true`, a tuple of `[A, HttpClientResponse]` will be returned, + * where `A` is the success type of the operation. + * + * If set to `false`, only the success type of the operation will be returned. + */ + readonly includeResponse?: boolean | undefined; +} + +/** + * A utility type which optionally includes the response in the return result + * of an operation based upon the value of the `includeResponse` configuration + * option. + */ +export type WithOptionalResponse< + A, + Config extends OperationConfig, +> = Config extends { + readonly includeResponse: true; +} + ? [A, HttpClientResponse.HttpClientResponse] + : A; + +export const make = ( + httpClient: HttpClient.HttpClient, + options: { + readonly transformClient?: + | (( + client: HttpClient.HttpClient + ) => Effect.Effect) + | undefined; + } = {} +): YieldApi => { + const unexpectedStatus = (response: HttpClientResponse.HttpClientResponse) => + Effect.flatMap( + Effect.orElseSucceed(response.json, () => "Unexpected status code"), + (description) => + Effect.fail( + new HttpClientError.HttpClientError({ + reason: new HttpClientError.StatusCodeError({ + request: response.request, + response, + description: + typeof description === "string" + ? description + : JSON.stringify(description), + }), + }) + ) + ); + const withResponse = + (config: Config | undefined) => + ( + f: ( + response: HttpClientResponse.HttpClientResponse + ) => Effect.Effect + ): (( + request: HttpClientRequest.HttpClientRequest + ) => Effect.Effect) => { + const withOptionalResponse = ( + config?.includeResponse + ? (response: HttpClientResponse.HttpClientResponse) => + Effect.map(f(response), (a) => [a, response]) + : (response: HttpClientResponse.HttpClientResponse) => f(response) + ) as any; + return options?.transformClient + ? (request) => + Effect.flatMap( + Effect.flatMap(options.transformClient!(httpClient), (client) => + client.execute(request) + ), + withOptionalResponse + ) + : (request) => + Effect.flatMap(httpClient.execute(request), withOptionalResponse); + }; + const decodeSuccess = (response: HttpClientResponse.HttpClientResponse) => + response.json as Effect.Effect; + const decodeVoid = (_response: HttpClientResponse.HttpClientResponse) => + Effect.void; + const decodeError = + (tag: Tag) => + ( + response: HttpClientResponse.HttpClientResponse + ): Effect.Effect< + never, + YieldApiError | HttpClientError.HttpClientError + > => + Effect.flatMap( + response.json as Effect.Effect, + (cause) => Effect.fail(YieldApiError(tag, cause, response)) + ); + const onRequest = + (config: Config | undefined) => + ( + successCodes: ReadonlyArray, + errorCodes?: Record + ) => { + const cases: any = { orElse: unexpectedStatus }; + for (const code of successCodes) { + cases[code] = decodeSuccess; + } + if (errorCodes) { + for (const [code, tag] of Object.entries(errorCodes)) { + cases[code] = decodeError(tag); + } + } + if (successCodes.length === 0) { + cases["2xx"] = decodeVoid; + } + return withResponse(config)(HttpClientResponse.matchStatus(cases) as any); + }; + return { + httpClient, + YieldsControllerGetYields: (options) => + HttpClientRequest.get(`/v1/yields`).pipe( + HttpClientRequest.setUrlParams({ + offset: options?.params?.["offset"] as any, + limit: options?.params?.["limit"] as any, + network: options?.params?.["network"] as any, + chainId: options?.params?.["chainId"] as any, + networks: options?.params?.["networks"] as any, + yieldId: options?.params?.["yieldId"] as any, + yieldIds: options?.params?.["yieldIds"] as any, + type: options?.params?.["type"] as any, + types: options?.params?.["types"] as any, + hasCooldownPeriod: options?.params?.["hasCooldownPeriod"] as any, + hasWarmupPeriod: options?.params?.["hasWarmupPeriod"] as any, + token: options?.params?.["token"] as any, + inputToken: options?.params?.["inputToken"] as any, + inputTokens: options?.params?.["inputTokens"] as any, + provider: options?.params?.["provider"] as any, + providers: options?.params?.["providers"] as any, + search: options?.params?.["search"] as any, + sort: options?.params?.["sort"] as any, + }), + onRequest(options?.config)(["2xx"], { + "400": "YieldsControllerGetYields400", + "401": "YieldsControllerGetYields401", + "429": "YieldsControllerGetYields429", + "500": "YieldsControllerGetYields500", + }) + ), + YieldsControllerGetAggregateBalances: (options) => + HttpClientRequest.post(`/v1/yields/balances`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "YieldsControllerGetAggregateBalances400", + "401": "YieldsControllerGetAggregateBalances401", + "429": "YieldsControllerGetAggregateBalances429", + "500": "YieldsControllerGetAggregateBalances500", + }) + ), + YieldsControllerGetYield: (yieldId, options) => + HttpClientRequest.get(`/v1/yields/${yieldId}`).pipe( + onRequest(options?.config)(["2xx"], { + "400": "YieldsControllerGetYield400", + "401": "YieldsControllerGetYield401", + "429": "YieldsControllerGetYield429", + "500": "YieldsControllerGetYield500", + }) + ), + YieldsControllerGetYieldRisk: (yieldId, options) => + HttpClientRequest.get(`/v1/yields/${yieldId}/risk`).pipe( + onRequest(options?.config)(["2xx"], { + "400": "YieldsControllerGetYieldRisk400", + "401": "YieldsControllerGetYieldRisk401", + "429": "YieldsControllerGetYieldRisk429", + "500": "YieldsControllerGetYieldRisk500", + }) + ), + YieldsControllerGetBalanceHistory: (yieldId, options) => + HttpClientRequest.get(`/v1/yields/${yieldId}/balances/history`).pipe( + HttpClientRequest.setUrlParams({ + address: options.params["address"] as any, + from: options.params["from"] as any, + to: options.params["to"] as any, + blockNumber: options.params["blockNumber"] as any, + interval: options.params["interval"] as any, + sort: options.params["sort"] as any, + limit: options.params["limit"] as any, + offset: options.params["offset"] as any, + }), + onRequest(options.config)(["2xx"], { + "400": "YieldsControllerGetBalanceHistory400", + "401": "YieldsControllerGetBalanceHistory401", + "429": "YieldsControllerGetBalanceHistory429", + "500": "YieldsControllerGetBalanceHistory500", + }) + ), + YieldsControllerGetYieldBalances: (yieldId, options) => + HttpClientRequest.post(`/v1/yields/${yieldId}/balances`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "YieldsControllerGetYieldBalances400", + "401": "YieldsControllerGetYieldBalances401", + "429": "YieldsControllerGetYieldBalances429", + "500": "YieldsControllerGetYieldBalances500", + }) + ), + YieldsControllerGetYieldRewards: (yieldId, options) => + HttpClientRequest.get(`/v1/yields/${yieldId}/rewards/history`).pipe( + HttpClientRequest.setUrlParams({ + address: options.params["address"] as any, + from: options.params["from"] as any, + to: options.params["to"] as any, + sort: options.params["sort"] as any, + limit: options.params["limit"] as any, + offset: options.params["offset"] as any, + }), + onRequest(options.config)(["2xx"], { + "400": "YieldsControllerGetYieldRewards400", + "401": "YieldsControllerGetYieldRewards401", + "429": "YieldsControllerGetYieldRewards429", + "500": "YieldsControllerGetYieldRewards500", + }) + ), + YieldsControllerGetYieldRewardRateHistory: (yieldId, options) => + HttpClientRequest.get(`/v1/yields/${yieldId}/reward-rate/history`).pipe( + HttpClientRequest.setUrlParams({ + offset: options?.params?.["offset"] as any, + limit: options?.params?.["limit"] as any, + from: options?.params?.["from"] as any, + to: options?.params?.["to"] as any, + period: options?.params?.["period"] as any, + interval: options?.params?.["interval"] as any, + }), + onRequest(options?.config)(["2xx"], { + "400": "YieldsControllerGetYieldRewardRateHistory400", + "401": "YieldsControllerGetYieldRewardRateHistory401", + "429": "YieldsControllerGetYieldRewardRateHistory429", + "500": "YieldsControllerGetYieldRewardRateHistory500", + }) + ), + YieldsControllerGetYieldTvlHistory: (yieldId, options) => + HttpClientRequest.get(`/v1/yields/${yieldId}/tvl/history`).pipe( + HttpClientRequest.setUrlParams({ + offset: options?.params?.["offset"] as any, + limit: options?.params?.["limit"] as any, + from: options?.params?.["from"] as any, + to: options?.params?.["to"] as any, + period: options?.params?.["period"] as any, + interval: options?.params?.["interval"] as any, + }), + onRequest(options?.config)(["2xx"], { + "400": "YieldsControllerGetYieldTvlHistory400", + "401": "YieldsControllerGetYieldTvlHistory401", + "429": "YieldsControllerGetYieldTvlHistory429", + "500": "YieldsControllerGetYieldTvlHistory500", + }) + ), + YieldsControllerGetYieldValidators: (yieldId, options) => + HttpClientRequest.get(`/v1/yields/${yieldId}/validators`).pipe( + HttpClientRequest.setUrlParams({ + offset: options?.params?.["offset"] as any, + limit: options?.params?.["limit"] as any, + name: options?.params?.["name"] as any, + address: options?.params?.["address"] as any, + provider: options?.params?.["provider"] as any, + status: options?.params?.["status"] as any, + preferred: options?.params?.["preferred"] as any, + }), + onRequest(options?.config)(["2xx"], { + "400": "YieldsControllerGetYieldValidators400", + "401": "YieldsControllerGetYieldValidators401", + "429": "YieldsControllerGetYieldValidators429", + "500": "YieldsControllerGetYieldValidators500", + }) + ), + YieldsControllerGetYieldCampaigns: (yieldId, options) => + HttpClientRequest.get(`/v1/yields/${yieldId}/campaigns`).pipe( + HttpClientRequest.setUrlParams({ + offset: options?.params?.["offset"] as any, + limit: options?.params?.["limit"] as any, + status: options?.params?.["status"] as any, + }), + onRequest(options?.config)(["2xx"], { + "400": "YieldsControllerGetYieldCampaigns400", + "401": "YieldsControllerGetYieldCampaigns401", + "429": "YieldsControllerGetYieldCampaigns429", + "500": "YieldsControllerGetYieldCampaigns500", + }) + ), + ActionsControllerGetActions: (options) => + HttpClientRequest.get(`/v1/actions`).pipe( + HttpClientRequest.setUrlParams({ + offset: options.params["offset"] as any, + limit: options.params["limit"] as any, + address: options.params["address"] as any, + status: options.params["status"] as any, + statuses: options.params["statuses"] as any, + intent: options.params["intent"] as any, + type: options.params["type"] as any, + yieldId: options.params["yieldId"] as any, + network: options.params["network"] as any, + }), + onRequest(options.config)(["2xx"], { + "400": "ActionsControllerGetActions400", + "401": "ActionsControllerGetActions401", + "429": "ActionsControllerGetActions429", + "500": "ActionsControllerGetActions500", + }) + ), + ActionsControllerGetAction: (actionId, options) => + HttpClientRequest.get(`/v1/actions/${actionId}`).pipe( + onRequest(options?.config)(["2xx"], { + "400": "ActionsControllerGetAction400", + "401": "ActionsControllerGetAction401", + "429": "ActionsControllerGetAction429", + "500": "ActionsControllerGetAction500", + }) + ), + ActionsControllerEnterYield: (options) => + HttpClientRequest.post(`/v1/actions/enter`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "ActionsControllerEnterYield400", + "401": "ActionsControllerEnterYield401", + "403": "ActionsControllerEnterYield403", + "429": "ActionsControllerEnterYield429", + "500": "ActionsControllerEnterYield500", + }) + ), + ActionsControllerExitYield: (options) => + HttpClientRequest.post(`/v1/actions/exit`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "ActionsControllerExitYield400", + "401": "ActionsControllerExitYield401", + "403": "ActionsControllerExitYield403", + "429": "ActionsControllerExitYield429", + "500": "ActionsControllerExitYield500", + }) + ), + ActionsControllerManageYield: (options) => + HttpClientRequest.post(`/v1/actions/manage`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "400": "ActionsControllerManageYield400", + "401": "ActionsControllerManageYield401", + "403": "ActionsControllerManageYield403", + "429": "ActionsControllerManageYield429", + "500": "ActionsControllerManageYield500", + }) + ), + TransactionsControllerSubmitTransactionHash: (transactionId, options) => + HttpClientRequest.put( + `/v1/transactions/${transactionId}/submit-hash` + ).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "401": "TransactionsControllerSubmitTransactionHash401", + "429": "TransactionsControllerSubmitTransactionHash429", + "500": "TransactionsControllerSubmitTransactionHash500", + }) + ), + TransactionsControllerSubmitTransaction: (transactionId, options) => + HttpClientRequest.post(`/v1/transactions/${transactionId}/submit`).pipe( + HttpClientRequest.bodyJsonUnsafe(options.payload), + onRequest(options.config)(["2xx"], { + "401": "TransactionsControllerSubmitTransaction401", + "429": "TransactionsControllerSubmitTransaction429", + "500": "TransactionsControllerSubmitTransaction500", + }) + ), + TransactionsControllerGetTransaction: (transactionId, options) => + HttpClientRequest.get(`/v1/transactions/${transactionId}`).pipe( + onRequest(options?.config)(["2xx"], { + "400": "TransactionsControllerGetTransaction400", + "401": "TransactionsControllerGetTransaction401", + "429": "TransactionsControllerGetTransaction429", + "500": "TransactionsControllerGetTransaction500", + }) + ), + NetworksControllerGetNetworks: (options) => + HttpClientRequest.get(`/v1/networks`).pipe( + onRequest(options?.config)(["2xx"], { + "400": "NetworksControllerGetNetworks400", + "401": "NetworksControllerGetNetworks401", + "429": "NetworksControllerGetNetworks429", + "500": "NetworksControllerGetNetworks500", + }) + ), + ProvidersControllerGetProviders: (options) => + HttpClientRequest.get(`/v1/providers`).pipe( + HttpClientRequest.setUrlParams({ + offset: options?.params?.["offset"] as any, + limit: options?.params?.["limit"] as any, + }), + onRequest(options?.config)(["2xx"], { + "400": "ProvidersControllerGetProviders400", + "401": "ProvidersControllerGetProviders401", + "429": "ProvidersControllerGetProviders429", + "500": "ProvidersControllerGetProviders500", + }) + ), + ProvidersControllerGetProvider: (providerId, options) => + HttpClientRequest.get(`/v1/providers/${providerId}`).pipe( + onRequest(options?.config)(["2xx"], { + "400": "ProvidersControllerGetProvider400", + "401": "ProvidersControllerGetProvider401", + "429": "ProvidersControllerGetProvider429", + "500": "ProvidersControllerGetProvider500", + }) + ), + HealthControllerHealth: (options) => + HttpClientRequest.get(`/health`).pipe( + onRequest(options?.config)(["2xx"]) + ), + }; +}; + +export interface YieldApi { + readonly httpClient: HttpClient.HttpClient; + /** + * Retrieve a paginated list of available yield opportunities across all supported networks and protocols. + */ + readonly YieldsControllerGetYields: ( + options: + | { + readonly params?: YieldsControllerGetYieldsParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "YieldsControllerGetYields400", + YieldsControllerGetYields400 + > + | YieldApiError< + "YieldsControllerGetYields401", + YieldsControllerGetYields401 + > + | YieldApiError< + "YieldsControllerGetYields429", + YieldsControllerGetYields429 + > + | YieldApiError< + "YieldsControllerGetYields500", + YieldsControllerGetYields500 + > + >; + /** + * Retrieve balances for multiple wallet addresses across different networks and yield opportunities. Send an array of balance requests - each request can specify a yieldId (optional for chain scanning), address, network, and custom arguments. This is the same format as the single yield balance endpoint but in array form. Duplicate requests (same yieldId + address + network) are automatically deduplicated, with specific yield requests taking precedence over chain scans. + */ + readonly YieldsControllerGetAggregateBalances: < + Config extends OperationConfig, + >(options: { + readonly payload: YieldsControllerGetAggregateBalancesRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "YieldsControllerGetAggregateBalances400", + YieldsControllerGetAggregateBalances400 + > + | YieldApiError< + "YieldsControllerGetAggregateBalances401", + YieldsControllerGetAggregateBalances401 + > + | YieldApiError< + "YieldsControllerGetAggregateBalances429", + YieldsControllerGetAggregateBalances429 + > + | YieldApiError< + "YieldsControllerGetAggregateBalances500", + YieldsControllerGetAggregateBalances500 + > + >; + /** + * Retrieve detailed information about a specific yield opportunity including APY, tokens, protocol details, and more. + */ + readonly YieldsControllerGetYield: ( + yieldId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError<"YieldsControllerGetYield400", YieldsControllerGetYield400> + | YieldApiError<"YieldsControllerGetYield401", YieldsControllerGetYield401> + | YieldApiError<"YieldsControllerGetYield429", YieldsControllerGetYield429> + | YieldApiError<"YieldsControllerGetYield500", YieldsControllerGetYield500> + >; + /** + * Retrieve consolidated risk ratings from third-party providers for a yield. + */ + readonly YieldsControllerGetYieldRisk: ( + yieldId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "YieldsControllerGetYieldRisk400", + YieldsControllerGetYieldRisk400 + > + | YieldApiError< + "YieldsControllerGetYieldRisk401", + YieldsControllerGetYieldRisk401 + > + | YieldApiError< + "YieldsControllerGetYieldRisk429", + YieldsControllerGetYieldRisk429 + > + | YieldApiError< + "YieldsControllerGetYieldRisk500", + YieldsControllerGetYieldRisk500 + > + >; + /** + * Returns a chronological time series of balance snapshots for a wallet address within a yield. Each entry reflects the position at a specific timestamp or block. Supports configurable sampling intervals and point-in-time queries. Only available for ERC4626 vaults with indexed transfer history. + */ + readonly YieldsControllerGetBalanceHistory: ( + yieldId: string, + options: { + readonly params: YieldsControllerGetBalanceHistoryParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "YieldsControllerGetBalanceHistory400", + YieldsControllerGetBalanceHistory400 + > + | YieldApiError< + "YieldsControllerGetBalanceHistory401", + YieldsControllerGetBalanceHistory401 + > + | YieldApiError< + "YieldsControllerGetBalanceHistory429", + YieldsControllerGetBalanceHistory429 + > + | YieldApiError< + "YieldsControllerGetBalanceHistory500", + YieldsControllerGetBalanceHistory500 + > + >; + /** + * Retrieve all balances associated with a yield opportunity for a specific wallet address, including active, pending, claimable, and withdrawable balances. The network is automatically determined from the yield configuration. + */ + readonly YieldsControllerGetYieldBalances: ( + yieldId: string, + options: { + readonly payload: YieldsControllerGetYieldBalancesRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "YieldsControllerGetYieldBalances400", + YieldsControllerGetYieldBalances400 + > + | YieldApiError< + "YieldsControllerGetYieldBalances401", + YieldsControllerGetYieldBalances401 + > + | YieldApiError< + "YieldsControllerGetYieldBalances429", + YieldsControllerGetYieldBalances429 + > + | YieldApiError< + "YieldsControllerGetYieldBalances500", + YieldsControllerGetYieldBalances500 + > + >; + /** + * Retrieve a chronological list of on-chain reward events for an indexed yield. Each record includes timestamp, token metadata, amount, reward source, and transaction reference. + */ + readonly YieldsControllerGetYieldRewards: ( + yieldId: string, + options: { + readonly params: YieldsControllerGetYieldRewardsParams; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "YieldsControllerGetYieldRewards400", + YieldsControllerGetYieldRewards400 + > + | YieldApiError< + "YieldsControllerGetYieldRewards401", + YieldsControllerGetYieldRewards401 + > + | YieldApiError< + "YieldsControllerGetYieldRewards429", + YieldsControllerGetYieldRewards429 + > + | YieldApiError< + "YieldsControllerGetYieldRewards500", + YieldsControllerGetYieldRewards500 + > + >; + /** + * Returns a chronological time series of reward rate snapshots for the specified yield, suitable for charting and analytics. Supports configurable time ranges, sampling intervals (day/week/month), and pagination. + */ + readonly YieldsControllerGetYieldRewardRateHistory: < + Config extends OperationConfig, + >( + yieldId: string, + options: + | { + readonly params?: + | YieldsControllerGetYieldRewardRateHistoryParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "YieldsControllerGetYieldRewardRateHistory400", + YieldsControllerGetYieldRewardRateHistory400 + > + | YieldApiError< + "YieldsControllerGetYieldRewardRateHistory401", + YieldsControllerGetYieldRewardRateHistory401 + > + | YieldApiError< + "YieldsControllerGetYieldRewardRateHistory429", + YieldsControllerGetYieldRewardRateHistory429 + > + | YieldApiError< + "YieldsControllerGetYieldRewardRateHistory500", + YieldsControllerGetYieldRewardRateHistory500 + > + >; + /** + * Returns a chronological time series of Total Value Locked for the specified yield, expressed in underlying token units. Supports configurable time ranges, sampling intervals (day/week/month), and pagination. + */ + readonly YieldsControllerGetYieldTvlHistory: ( + yieldId: string, + options: + | { + readonly params?: + | YieldsControllerGetYieldTvlHistoryParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "YieldsControllerGetYieldTvlHistory400", + YieldsControllerGetYieldTvlHistory400 + > + | YieldApiError< + "YieldsControllerGetYieldTvlHistory401", + YieldsControllerGetYieldTvlHistory401 + > + | YieldApiError< + "YieldsControllerGetYieldTvlHistory429", + YieldsControllerGetYieldTvlHistory429 + > + | YieldApiError< + "YieldsControllerGetYieldTvlHistory500", + YieldsControllerGetYieldTvlHistory500 + > + >; + /** + * Retrieve a paginated list of validators available for staking or delegation for this yield opportunity. + */ + readonly YieldsControllerGetYieldValidators: ( + yieldId: string, + options: + | { + readonly params?: + | YieldsControllerGetYieldValidatorsParams + | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "YieldsControllerGetYieldValidators400", + YieldsControllerGetYieldValidators400 + > + | YieldApiError< + "YieldsControllerGetYieldValidators401", + YieldsControllerGetYieldValidators401 + > + | YieldApiError< + "YieldsControllerGetYieldValidators429", + YieldsControllerGetYieldValidators429 + > + | YieldApiError< + "YieldsControllerGetYieldValidators500", + YieldsControllerGetYieldValidators500 + > + >; + /** + * Returns campaign metadata for the given yield opportunity within the API key project scope. + */ + readonly YieldsControllerGetYieldCampaigns: ( + yieldId: string, + options: + | { + readonly params?: YieldsControllerGetYieldCampaignsParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "YieldsControllerGetYieldCampaigns400", + YieldsControllerGetYieldCampaigns400 + > + | YieldApiError< + "YieldsControllerGetYieldCampaigns401", + YieldsControllerGetYieldCampaigns401 + > + | YieldApiError< + "YieldsControllerGetYieldCampaigns429", + YieldsControllerGetYieldCampaigns429 + > + | YieldApiError< + "YieldsControllerGetYieldCampaigns500", + YieldsControllerGetYieldCampaigns500 + > + >; + /** + * Retrieve all actions performed by a user, with optional filtering by yield, status, category, etc. In the future, this may include personalized action recommendations. + */ + readonly ActionsControllerGetActions: < + Config extends OperationConfig, + >(options: { + readonly params: ActionsControllerGetActionsParams; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "ActionsControllerGetActions400", + ActionsControllerGetActions400 + > + | YieldApiError< + "ActionsControllerGetActions401", + ActionsControllerGetActions401 + > + | YieldApiError< + "ActionsControllerGetActions429", + ActionsControllerGetActions429 + > + | YieldApiError< + "ActionsControllerGetActions500", + ActionsControllerGetActions500 + > + >; + /** + * Retrieve detailed information about a specific action including current status, transactions, and execution details. + */ + readonly ActionsControllerGetAction: ( + actionId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "ActionsControllerGetAction400", + ActionsControllerGetAction400 + > + | YieldApiError< + "ActionsControllerGetAction401", + ActionsControllerGetAction401 + > + | YieldApiError< + "ActionsControllerGetAction429", + ActionsControllerGetAction429 + > + | YieldApiError< + "ActionsControllerGetAction500", + ActionsControllerGetAction500 + > + >; + /** + * Generate the transactions needed to enter a yield position with the provided parameters. + */ + readonly ActionsControllerEnterYield: < + Config extends OperationConfig, + >(options: { + readonly payload: ActionsControllerEnterYieldRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "ActionsControllerEnterYield400", + ActionsControllerEnterYield400 + > + | YieldApiError< + "ActionsControllerEnterYield401", + ActionsControllerEnterYield401 + > + | YieldApiError< + "ActionsControllerEnterYield403", + ActionsControllerEnterYield403 + > + | YieldApiError< + "ActionsControllerEnterYield429", + ActionsControllerEnterYield429 + > + | YieldApiError< + "ActionsControllerEnterYield500", + ActionsControllerEnterYield500 + > + >; + /** + * Generate the transactions needed to exit a yield position with the provided parameters. + */ + readonly ActionsControllerExitYield: < + Config extends OperationConfig, + >(options: { + readonly payload: ActionsControllerExitYieldRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "ActionsControllerExitYield400", + ActionsControllerExitYield400 + > + | YieldApiError< + "ActionsControllerExitYield401", + ActionsControllerExitYield401 + > + | YieldApiError< + "ActionsControllerExitYield403", + ActionsControllerExitYield403 + > + | YieldApiError< + "ActionsControllerExitYield429", + ActionsControllerExitYield429 + > + | YieldApiError< + "ActionsControllerExitYield500", + ActionsControllerExitYield500 + > + >; + /** + * Generate the transactions needed to perform management actions on a yield position. + */ + readonly ActionsControllerManageYield: < + Config extends OperationConfig, + >(options: { + readonly payload: ActionsControllerManageYieldRequestJson; + readonly config?: Config | undefined; + }) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "ActionsControllerManageYield400", + ActionsControllerManageYield400 + > + | YieldApiError< + "ActionsControllerManageYield401", + ActionsControllerManageYield401 + > + | YieldApiError< + "ActionsControllerManageYield403", + ActionsControllerManageYield403 + > + | YieldApiError< + "ActionsControllerManageYield429", + ActionsControllerManageYield429 + > + | YieldApiError< + "ActionsControllerManageYield500", + ActionsControllerManageYield500 + > + >; + /** + * Submit the transaction hash after broadcasting a transaction to the blockchain. This updates the transaction status and enables tracking. + */ + readonly TransactionsControllerSubmitTransactionHash: < + Config extends OperationConfig, + >( + transactionId: string, + options: { + readonly payload: TransactionsControllerSubmitTransactionHashRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse< + TransactionsControllerSubmitTransactionHash200, + Config + >, + | HttpClientError.HttpClientError + | YieldApiError< + "TransactionsControllerSubmitTransactionHash401", + TransactionsControllerSubmitTransactionHash401 + > + | YieldApiError< + "TransactionsControllerSubmitTransactionHash429", + TransactionsControllerSubmitTransactionHash429 + > + | YieldApiError< + "TransactionsControllerSubmitTransactionHash500", + TransactionsControllerSubmitTransactionHash500 + > + >; + /** + * Submit the transaction to the blockchain. + */ + readonly TransactionsControllerSubmitTransaction: < + Config extends OperationConfig, + >( + transactionId: string, + options: { + readonly payload: TransactionsControllerSubmitTransactionRequestJson; + readonly config?: Config | undefined; + } + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "TransactionsControllerSubmitTransaction401", + TransactionsControllerSubmitTransaction401 + > + | YieldApiError< + "TransactionsControllerSubmitTransaction429", + TransactionsControllerSubmitTransaction429 + > + | YieldApiError< + "TransactionsControllerSubmitTransaction500", + TransactionsControllerSubmitTransaction500 + > + >; + /** + * Retrieve detailed information about a specific transaction including current status, hash, and execution details. + */ + readonly TransactionsControllerGetTransaction: < + Config extends OperationConfig, + >( + transactionId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "TransactionsControllerGetTransaction400", + TransactionsControllerGetTransaction400 + > + | YieldApiError< + "TransactionsControllerGetTransaction401", + TransactionsControllerGetTransaction401 + > + | YieldApiError< + "TransactionsControllerGetTransaction429", + TransactionsControllerGetTransaction429 + > + | YieldApiError< + "TransactionsControllerGetTransaction500", + TransactionsControllerGetTransaction500 + > + >; + /** + * Retrieve a list of all supported networks that can be used for filtering yields and other operations. + */ + readonly NetworksControllerGetNetworks: ( + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "NetworksControllerGetNetworks400", + NetworksControllerGetNetworks400 + > + | YieldApiError< + "NetworksControllerGetNetworks401", + NetworksControllerGetNetworks401 + > + | YieldApiError< + "NetworksControllerGetNetworks429", + NetworksControllerGetNetworks429 + > + | YieldApiError< + "NetworksControllerGetNetworks500", + NetworksControllerGetNetworks500 + > + >; + /** + * Returns a paginated list of all providers, including both protocol and validator providers. + */ + readonly ProvidersControllerGetProviders: ( + options: + | { + readonly params?: ProvidersControllerGetProvidersParams | undefined; + readonly config?: Config | undefined; + } + | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "ProvidersControllerGetProviders400", + ProvidersControllerGetProviders400 + > + | YieldApiError< + "ProvidersControllerGetProviders401", + ProvidersControllerGetProviders401 + > + | YieldApiError< + "ProvidersControllerGetProviders429", + ProvidersControllerGetProviders429 + > + | YieldApiError< + "ProvidersControllerGetProviders500", + ProvidersControllerGetProviders500 + > + >; + /** + * Returns detailed information about a specific provider. + */ + readonly ProvidersControllerGetProvider: ( + providerId: string, + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + | HttpClientError.HttpClientError + | YieldApiError< + "ProvidersControllerGetProvider400", + ProvidersControllerGetProvider400 + > + | YieldApiError< + "ProvidersControllerGetProvider401", + ProvidersControllerGetProvider401 + > + | YieldApiError< + "ProvidersControllerGetProvider429", + ProvidersControllerGetProvider429 + > + | YieldApiError< + "ProvidersControllerGetProvider500", + ProvidersControllerGetProvider500 + > + >; + /** + * Get the health status of the yield API with current timestamp + */ + readonly HealthControllerHealth: ( + options: { readonly config?: Config | undefined } | undefined + ) => Effect.Effect< + WithOptionalResponse, + HttpClientError.HttpClientError + >; +} + +export interface YieldApiError { + readonly _tag: Tag; + readonly request: HttpClientRequest.HttpClientRequest; + readonly response: HttpClientResponse.HttpClientResponse; + readonly cause: E; +} + +class YieldApiErrorImpl extends Data.Error<{ + _tag: string; + cause: any; + request: HttpClientRequest.HttpClientRequest; + response: HttpClientResponse.HttpClientResponse; +}> {} + +export const YieldApiError = ( + tag: Tag, + cause: E, + response: HttpClientResponse.HttpClientResponse +): YieldApiError => + new YieldApiErrorImpl({ + _tag: tag, + cause, + response, + request: response.request, + }) as any; diff --git a/packages/widget/src/hooks/api/use-activity-actions.ts b/packages/widget/src/hooks/api/use-activity-actions.ts index b577c9a2..b3fc0db1 100644 --- a/packages/widget/src/hooks/api/use-activity-actions.ts +++ b/packages/widget/src/hooks/api/use-activity-actions.ts @@ -1,72 +1,87 @@ -import { - type ActionDto, - type ActionList200, - ActionStatus, - actionList, - getActionListQueryKey, -} from "@stakekit/api-hooks"; import { useInfiniteQuery } from "@tanstack/react-query"; import { EitherAsync } from "purify-ts"; import { useMemo } from "react"; +import { type ActionDto, getActionInputToken } from "../../domain/types/action"; +import type { Yield } from "../../domain/types/yields"; +import { useApiClient } from "../../providers/api/api-client-provider"; import { useSKQueryClient } from "../../providers/query-client"; import { useSKWallet } from "../../providers/sk-wallet"; -import { useValidatorsConfig } from "../use-validators-config"; import { getYieldOpportunity } from "./use-yield-opportunity/get-yield-opportunity"; -export const useActivityActions = () => { - const { address, network, isLedgerLive } = useSKWallet(); - const queryClient = useSKQueryClient(); +const PAGE_SIZE = 50; + +type ActivityActionItem = { + actionData: ActionDto; + yieldData: Yield; +}; - const validatorsConfig = useValidatorsConfig(); +type UseActivityActionsResult = ReturnType & { + allItems: ActivityActionItem[] | undefined; +}; + +export const useActivityActions = (): UseActivityActionsResult => { + const { address, isLedgerLive, network } = useSKWallet(); + const queryClient = useSKQueryClient(); + const apiClient = useApiClient(); const query = useInfiniteQuery({ enabled: !!address && !!network, - queryKey: getActionListQueryKey({ - network: network!, - walletAddress: address!, - }), - queryFn: async ({ pageParam = 1 }) => { + queryKey: ["activity-actions", address, network], + queryFn: async ({ pageParam = 0 }) => { return ( await EitherAsync(() => - actionList({ - page: pageParam, - walletAddress: address!, - network: network!, - sort: "createdAtDesc", + apiClient.yield.ActionsControllerGetActions({ + params: { + address: address!, + limit: PAGE_SIZE, + offset: pageParam, + network: network!, + statuses: [ + "SUCCESS", + "FAILED", + "CANCELED", + "PROCESSING", + "STALE", + "WAITING_FOR_NEXT", + ], + }, }) ) .mapLeft(() => new Error("Could not get action list")) - .map((actionList) => ({ - ...actionList, - data: actionList.data.filter( - (x) => x.status !== ActionStatus.CREATED - ), - })) .chain(async (actionList) => EitherAsync.all( - (actionList.data as ActionList200["data"]).map((action) => + (actionList.items ?? []).map((action) => getYieldOpportunity({ - yieldId: action.integrationId, + yieldId: action.yieldId, queryClient, isLedgerLive, - validatorsConfig, + apiClient, }) .map((yieldData) => ({ - actionData: action as typeof action & ActionDto, + actionData: action as ActionDto, yieldData, })) .chainLeft(() => EitherAsync(() => Promise.resolve(null))) ) ) .map((res) => res.filter((x) => x !== null)) - .map((res) => res.filter((x) => !!x.actionData.inputToken)) + .map((res) => + res.filter( + (x) => + !!getActionInputToken({ + actionDto: x.actionData, + yieldDto: x.yieldData, + }) + ) + ) .map((data) => ({ ...actionList, data })) ) ).unsafeCoerce(); }, - initialPageParam: 1, + initialPageParam: 0, getNextPageParam: (lastPage) => { - return lastPage.hasNextPage ? lastPage.page + 1 : undefined; + const nextOffset = (lastPage.offset ?? 0) + (lastPage.limit ?? PAGE_SIZE); + return nextOffset < (lastPage.total ?? 0) ? nextOffset : undefined; }, }); diff --git a/packages/widget/src/hooks/api/use-default-tokens.ts b/packages/widget/src/hooks/api/use-default-tokens.ts index 408ae0ee..831bb68f 100644 --- a/packages/widget/src/hooks/api/use-default-tokens.ts +++ b/packages/widget/src/hooks/api/use-default-tokens.ts @@ -1,23 +1,27 @@ -import type { - TokenBalanceScanResponseDto, - TokenGetTokensParams, -} from "@stakekit/api-hooks"; -import { getTokenGetTokensQueryKey, tokenGetTokens } from "@stakekit/api-hooks"; import type { QueryClient } from "@tanstack/react-query"; import { useQuery } from "@tanstack/react-query"; import { EitherAsync } from "purify-ts"; +import type { TokenBalanceScanResponseDto } from "../../domain/types/token-balance"; +import type { TokenGetTokensParams } from "../../domain/types/tokens"; +import type { ApiClient } from "../../providers/api/api-client"; +import { useApiClient } from "../../providers/api/api-client-provider"; import { useSettings } from "../../providers/settings"; import { useSKWallet } from "../../providers/sk-wallet"; +const getTokenGetTokensQueryKey = (params?: TokenGetTokensParams) => + ["/v1/tokens", ...(params ? [params] : [])] as const; + export const useDefaultTokens = () => { const { network } = useSKWallet(); const { tokensForEnabledYieldsOnly } = useSettings(); + const apiClient = useApiClient(); return useQuery({ queryKey: getTokenGetTokensQueryKey({ network: network ?? undefined }), queryFn: async () => ( await queryFn({ + apiClient, network: network ?? undefined, enabledYieldsOnly: !!tokensForEnabledYieldsOnly, }) @@ -42,14 +46,23 @@ export const getDefaultTokens = ( }); const queryFn = ({ + apiClient, network, enabledYieldsOnly, -}: Pick) => +}: Pick & { + apiClient: ApiClient; +}) => EitherAsync(() => - tokenGetTokens({ - network, - enabledYieldsOnly: enabledYieldsOnly || undefined, + apiClient.legacy.TokenControllerGetTokens({ + params: { + network, + enabledYieldsOnly: enabledYieldsOnly || undefined, + }, }) ).map((val) => - val.map((v) => ({ ...v, amount: "0" })) + val.map((v) => ({ + token: v.token, + availableYields: v.availableYields, + amount: "0", + })) ); diff --git a/packages/widget/src/hooks/api/use-multi-yields.ts b/packages/widget/src/hooks/api/use-multi-yields.ts index b2b263bb..a0d92434 100644 --- a/packages/widget/src/hooks/api/use-multi-yields.ts +++ b/packages/widget/src/hooks/api/use-multi-yields.ts @@ -1,7 +1,7 @@ -import type { YieldDto } from "@stakekit/api-hooks"; import { hashKey, type QueryClient, useQuery } from "@tanstack/react-query"; import { useSelector } from "@xstate/react"; import { createStore } from "@xstate/store"; +import type BigNumber from "bignumber.js"; import { EitherAsync, Maybe } from "purify-ts"; import { useEffect, useMemo } from "react"; import { createSelector } from "reselect"; @@ -32,9 +32,12 @@ import { } from "../../domain/types/stake"; import type { SKWallet } from "../../domain/types/wallet"; import { + hasYieldNftsArg, isNonZeroRewardRateYield, type ValidatorsConfig, + type Yield, } from "../../domain/types/yields"; +import { useApiClient } from "../../providers/api/api-client-provider"; import { useSKQueryClient } from "../../providers/query-client"; import { useSKWallet } from "../../providers/sk-wallet"; import { useSavedRef } from "../use-saved-ref"; @@ -42,11 +45,11 @@ import { useValidatorsConfig } from "../use-validators-config"; import { getYieldOpportunity } from "./use-yield-opportunity/get-yield-opportunity"; const multiYieldsStore = createStore({ - context: { data: new Map>() }, + context: { data: new Map>() }, on: { "yield-opportunity": ( context, - event: { data: { key: string; yieldDto: YieldDto } } + event: { data: { key: string; yieldDto: Yield } } ) => { const newMap = new Map(context.data); const prev = newMap.get(event.data.key) ?? new Map(); @@ -59,12 +62,14 @@ const multiYieldsStore = createStore({ }, }); -export const useStreamMultiYields = (yieldIds: string[]) => { +export const useStreamMultiYields = (yieldIds: ReadonlyArray) => { const { network, isConnected, isLedgerLive } = useSKWallet(); + const apiClient = useApiClient(); const argsRef = useSavedRef({ isLedgerLive, queryClient: useSKQueryClient(), + apiClient, network, isConnected, }); @@ -98,20 +103,22 @@ export const useStreamMultiYields = (yieldIds: string[]) => { }); }; -export const useMultiYields = ( - yieldIds: string[], +export const useMultiYields = ( + yieldIds: ReadonlyArray, opts?: { - select?: (val: YieldDto[]) => T; + select?: (val: Yield[]) => T; enabled?: boolean; } ) => { const { network, isConnected, isLedgerLive } = useSKWallet(); + const apiClient = useApiClient(); const validatorsConfig = useValidatorsConfig(); const argsRef = useSavedRef({ isLedgerLive, queryClient: useSKQueryClient(), + apiClient, network, isConnected, }); @@ -147,9 +154,10 @@ export const getFirstEligibleYield = ( const multipleYields$ = (args: { isLedgerLive: boolean; queryClient: QueryClient; + apiClient: ReturnType; isConnected: boolean; network: SKWallet["network"]; - yieldIds: string[]; + yieldIds: ReadonlyArray; validatorsConfig: ValidatorsConfig; }) => merge( @@ -159,14 +167,14 @@ const multipleYields$ = (args: { isLedgerLive: args.isLedgerLive, yieldId: v, queryClient: args.queryClient, - validatorsConfig: args.validatorsConfig, + apiClient: args.apiClient, }) ) ) ).pipe( map((v) => (v.isRight() ? v.extract() : null)), filter( - (v): v is YieldDto => + (v): v is Yield => !!( v && defaultFiltered({ @@ -182,16 +190,17 @@ const multipleYields$ = (args: { const firstEligibleYield$ = (args: { isLedgerLive: boolean; queryClient: QueryClient; + apiClient: ReturnType; isConnected: boolean; network: SKWallet["network"]; - yieldIds: string[]; + yieldIds: ReadonlyArray; initParams: InitParams; positionsData: PositionsData; tokenBalanceAmount: BigNumber; validatorsConfig: ValidatorsConfig; preferredTokenYieldsPerNetwork: PreferredTokenYieldsPerNetwork | null; }) => { - let defaultYield: YieldDto | null = null; + let defaultYield: Yield | null = null; const successStream = multipleYields$(args).pipe( tap((v) => { @@ -227,7 +236,7 @@ const firstEligibleYield$ = (args: { defaultIfEmpty(null) ); - return new Observable((subscriber) => { + return new Observable((subscriber) => { successStream.subscribe({ complete: () => subscriber.complete(), next: (v) => subscriber.next(v ?? defaultYield), @@ -237,7 +246,7 @@ const firstEligibleYield$ = (args: { }; type SelectorInputData = { - data: YieldDto[]; + data: Yield[]; isConnected: boolean; network: SKWallet["network"]; isLedgerLive: boolean; @@ -254,7 +263,7 @@ const defaultFiltered = createSelector( (data, isConnected, network) => data.filter((o) => { const defaultFilter = - !o.args.enter.args?.nfts && + !hasYieldNftsArg(o) && o.id !== "binance-bnb-native-staking" && o.id !== "binance-testnet-bnb-native-staking" && o.id !== "avax-native-staking" && @@ -267,7 +276,7 @@ const defaultFiltered = createSelector( }) ); -const getFirstEligibleYieldQueryKey = (yieldIds: string[]) => [ +const getFirstEligibleYieldQueryKey = (yieldIds: ReadonlyArray) => [ "first-eligible-yield", yieldIds, ]; @@ -277,8 +286,8 @@ export const getCachedFirstEligibleYield = ({ yieldIds, }: { queryClient: QueryClient; - yieldIds: string[]; + yieldIds: ReadonlyArray; }) => Maybe.fromNullable( - queryClient.getQueryData(getFirstEligibleYieldQueryKey(yieldIds)) + queryClient.getQueryData(getFirstEligibleYieldQueryKey(yieldIds)) ); diff --git a/packages/widget/src/hooks/api/use-prices.ts b/packages/widget/src/hooks/api/use-prices.ts index b048feec..ef9ca989 100644 --- a/packages/widget/src/hooks/api/use-prices.ts +++ b/packages/widget/src/hooks/api/use-prices.ts @@ -1,8 +1,14 @@ -import type { PriceRequestDto, PriceResponseDto } from "@stakekit/api-hooks"; -import { useTokenGetTokenPrices } from "@stakekit/api-hooks"; +import { useQuery } from "@tanstack/react-query"; import { useCallback } from "react"; import { createSelector } from "reselect"; -import type { Prices } from "../../domain/types/price"; +import type { StakeKitErrorDto } from "../../domain/types/errors"; +import type { + PriceRequestDto, + PriceResponseDto, + Prices, +} from "../../domain/types/price"; +import type { YieldTokenDto } from "../../domain/types/tokens"; +import { useApiClient } from "../../providers/api/api-client-provider"; import { priceResponseDtoToPrices } from "../../utils/mappers"; const defaultParam: PriceRequestDto = { @@ -17,28 +23,48 @@ const pricesSelector = createSelector( (val) => priceResponseDtoToPrices(val) ); +type PriceRequestInput = Omit & { + tokenList: (PriceRequestDto["tokenList"][number] | YieldTokenDto)[]; +}; + +const getTokenGetTokenPricesQueryKey = (priceRequestDto: PriceRequestDto) => + ["/v1/tokens/prices", priceRequestDto] as const; + export const usePrices = ( - priceRequestDto: PriceRequestDto | null | undefined, + priceRequestDto: PriceRequestInput | null | undefined, opts?: { enabled?: boolean; select?: (val: Prices) => T; } ) => { - return useTokenGetTokenPrices(priceRequestDto ?? defaultParam, { - query: { - enabled: !!priceRequestDto && opts?.enabled, - select: useCallback( - (res: PriceResponseDto): T => { - const mapped = pricesSelector(res); - - if (opts?.select) { - return opts.select(mapped); - } - - return mapped as T; - }, - [opts?.select] - ), - }, + const apiClient = useApiClient(); + const requestDto = priceRequestDto + ? ({ + ...priceRequestDto, + tokenList: priceRequestDto.tokenList.map((token) => ({ + ...token, + network: + token.network as PriceRequestDto["tokenList"][number]["network"], + })), + } satisfies PriceRequestDto) + : defaultParam; + + return useQuery({ + queryKey: getTokenGetTokenPricesQueryKey(requestDto), + queryFn: () => + apiClient.legacy.TokenControllerGetTokenPrices({ payload: requestDto }), + enabled: !!priceRequestDto && opts?.enabled, + select: useCallback( + (res: PriceResponseDto): T => { + const mapped = pricesSelector(res); + + if (opts?.select) { + return opts.select(mapped); + } + + return mapped as T; + }, + [opts?.select] + ), }); }; diff --git a/packages/widget/src/hooks/api/use-token-balances-scan.ts b/packages/widget/src/hooks/api/use-token-balances-scan.ts index 86e14f6d..e1183999 100644 --- a/packages/widget/src/hooks/api/use-token-balances-scan.ts +++ b/packages/widget/src/hooks/api/use-token-balances-scan.ts @@ -1,9 +1,10 @@ -import type { TokenBalanceScanDto } from "@stakekit/api-hooks"; import type { QueryClient } from "@tanstack/react-query"; import { useQuery } from "@tanstack/react-query"; import { EitherAsync, Just, Maybe } from "purify-ts"; import { useCallback, useMemo } from "react"; -import { tokenTokenBalancesScan } from "../../common/private-api"; +import type { TokenBalanceScanDto } from "../../domain/types/token-balance"; +import type { ApiClient } from "../../providers/api/api-client"; +import { useApiClient } from "../../providers/api/api-client-provider"; import { useSKQueryClient } from "../../providers/query-client"; import { useSKWallet } from "../../providers/sk-wallet"; @@ -14,6 +15,7 @@ export const useTokenBalancesScan = () => { network, isLedgerLiveAccountPlaceholder, } = useSKWallet(); + const apiClient = useApiClient(); const param = useMemo( () => @@ -50,6 +52,7 @@ export const useTokenBalancesScan = () => { queryFn: async () => ( await queryFn({ + apiClient, tokenBalanceScanDto: param.dto, }) ).unsafeCoerce(), @@ -70,16 +73,20 @@ export const getTokenBalancesScan = ( }); const queryFn = ({ + apiClient, tokenBalanceScanDto, }: { + apiClient: ApiClient; tokenBalanceScanDto: TokenBalanceScanDto; }) => - EitherAsync(() => tokenTokenBalancesScan(tokenBalanceScanDto)).mapLeft( - (e) => { - console.log(e); - return new Error("could not get token balances"); - } - ); + EitherAsync(() => + apiClient.legacy.TokenControllerTokenBalancesScan({ + payload: tokenBalanceScanDto, + }) + ).mapLeft((e) => { + console.log(e); + return new Error("could not get token balances"); + }); export const useInvalidateTokenBalances = () => { const queryClient = useSKQueryClient(); diff --git a/packages/widget/src/hooks/api/use-tokens-prices.ts b/packages/widget/src/hooks/api/use-tokens-prices.ts index 43a716be..5e9672f1 100644 --- a/packages/widget/src/hooks/api/use-tokens-prices.ts +++ b/packages/widget/src/hooks/api/use-tokens-prices.ts @@ -1,9 +1,8 @@ -import type { PriceRequestDto, TokenDto, YieldDto } from "@stakekit/api-hooks"; import { Maybe } from "purify-ts"; import { useMemo } from "react"; import { config } from "../../config"; -import { useBaseToken } from "../use-base-token"; -import { useGasFeeToken } from "../use-gas-fee-token"; +import type { TokenDto, YieldTokenDto } from "../../domain/types/tokens"; +import type { Yield } from "../../domain/types/yields"; import { usePrices } from "./use-prices"; /** @@ -13,21 +12,18 @@ export const useTokensPrices = ({ token, yieldDto, }: { - token: Maybe; - yieldDto: Maybe; + token: Maybe; + yieldDto: Maybe; }) => { - const baseToken = useBaseToken(yieldDto); - const gasFeeToken = useGasFeeToken(yieldDto); - const priceRequestDto = useMemo( () => - Maybe.fromRecord({ baseToken, gasFeeToken, token }) - .map((val) => ({ + Maybe.fromRecord({ yieldDto, token }) + .map((val) => ({ currency: config.currency, - tokenList: [val.token, val.baseToken, val.gasFeeToken], + tokenList: [val.token, val.token, val.yieldDto.mechanics.gasFeeToken], })) .extractNullable(), - [baseToken, gasFeeToken, token] + [yieldDto, token] ); return usePrices(priceRequestDto); diff --git a/packages/widget/src/hooks/api/use-yield-balances-scan.ts b/packages/widget/src/hooks/api/use-yield-balances-scan.ts index eed36cef..1cef1577 100644 --- a/packages/widget/src/hooks/api/use-yield-balances-scan.ts +++ b/packages/widget/src/hooks/api/use-yield-balances-scan.ts @@ -1,22 +1,22 @@ -import type { - YieldBalanceScanRequestDto, - YieldBalancesWithIntegrationIdDto, -} from "@stakekit/api-hooks"; -import { useQuery } from "@tanstack/react-query"; -import { Just, Maybe } from "purify-ts"; +import { type UseQueryResult, useQuery } from "@tanstack/react-query"; +import { Maybe } from "purify-ts"; import { useCallback, useMemo } from "react"; -import { yieldYieldBalancesScan } from "../../common/private-api"; +import type { + YieldBalancesByYieldDto, + YieldBalancesRequestDto, +} from "../../domain/types/positions"; +import { useApiClient } from "../../providers/api/api-client-provider"; import { useSKQueryClient } from "../../providers/query-client"; import { useSKWallet } from "../../providers/sk-wallet"; import { useActionHistoryData } from "../../providers/stake-history"; import { useInvalidateQueryNTimes } from "../use-invalidate-query-n-times"; -export const useYieldBalancesScan = < - T = YieldBalancesWithIntegrationIdDto[], ->(opts?: { - select?: (data: YieldBalancesWithIntegrationIdDto[]) => T; -}) => { - const { network, address, additionalAddresses } = useSKWallet(); +export const useYieldBalancesScan = (opts?: { + select?: (data: YieldBalancesByYieldDto[]) => T; + // biome-ignore lint/suspicious/noExplicitAny: fix later +}): UseQueryResult => { + const apiClient = useApiClient(); + const { network, address } = useSKWallet(); const actionHistoryData = useActionHistoryData(); @@ -28,37 +28,50 @@ export const useYieldBalancesScan = < const param = useMemo( () => Maybe.fromRecord({ - additionalAddresses: Just(additionalAddresses ?? undefined), address: Maybe.fromNullable(address), network: Maybe.fromNullable(network), - }).mapOrDefault<{ dto: YieldBalanceScanRequestDto; enabled: boolean }>( + }).mapOrDefault<{ dto: YieldBalancesRequestDto; enabled: boolean }>( (val) => ({ enabled: true, dto: { - addresses: { - address: val.address, - additionalAddresses: val.additionalAddresses, - }, - network: val.network, + queries: [ + { + address: val.address, + network: + val.network as YieldBalancesRequestDto["queries"][number]["network"], + }, + ], }, }), { enabled: false, dto: { - addresses: { address: "", additionalAddresses: undefined }, - network: "ethereum", + queries: [{ address: "", network: "ethereum" }], }, } ), - [additionalAddresses, address, network] + [address, network] ); const res = useQuery({ queryKey: getYieldYieldBalancesScanQueryKey(param.dto), - queryFn: () => yieldYieldBalancesScan(param.dto), enabled: param.enabled, - select: opts?.select, refetchInterval: 1000 * 60, + queryFn: ({ signal }) => + apiClient + .withRunOptions({ signal }) + .yield.YieldsControllerGetAggregateBalances({ + payload: param.dto, + }), + select: (data) => { + const items = data.items as YieldBalancesByYieldDto[]; + + if (opts?.select) { + return opts.select(items); + } + + return items as T; + }, }); /** @@ -67,7 +80,7 @@ export const useYieldBalancesScan = < useInvalidateQueryNTimes({ enabled: !!lastActionTimestamp, key: ["yield-balances-refetch", lastActionTimestamp], - queryKey: [getYieldYieldBalancesScanQueryKey(param.dto)[0]], + queryKey: getYieldYieldBalancesScanQueryKey(), waitMs: 4000, shouldRefetch: () => !!lastActionTimestamp && Date.now() - lastActionTimestamp < 1000 * 12, @@ -82,18 +95,11 @@ export const useInvalidateYieldBalances = () => { return useCallback( () => queryClient.invalidateQueries({ - queryKey: [ - getYieldYieldBalancesScanQueryKey( - {} as YieldBalanceScanRequestDto - )[0], - ], + queryKey: getYieldYieldBalancesScanQueryKey(), }), [queryClient] ); }; -const getYieldYieldBalancesScanQueryKey = ( - yieldBalanceScanRequestDto: YieldBalanceScanRequestDto -) => { - return ["/v1/yields/balances/scan", yieldBalanceScanRequestDto] as const; -}; +const getYieldYieldBalancesScanQueryKey = (dto?: YieldBalancesRequestDto) => + ["post", "/v1/yields/balances", ...(dto ? [dto] : [])] as const; diff --git a/packages/widget/src/hooks/api/use-yield-opportunity/get-yield-opportunity.ts b/packages/widget/src/hooks/api/use-yield-opportunity/get-yield-opportunity.ts index 0c248f47..675a522a 100644 --- a/packages/widget/src/hooks/api/use-yield-opportunity/get-yield-opportunity.ts +++ b/packages/widget/src/hooks/api/use-yield-opportunity/get-yield-opportunity.ts @@ -1,19 +1,12 @@ -import type { YieldDto } from "@stakekit/api-hooks"; import type { QueryClient } from "@tanstack/react-query"; import { EitherAsync } from "purify-ts"; -import { yieldYieldOpportunity } from "../../../common/private-api"; -import { - filterMapValidators, - getComputedRewardRate, - isBittensorStaking, - isEthenaUsdeStaking, - type ValidatorsConfig, -} from "../../../domain/types/yields"; +import { isEthenaUsdeStaking, type Yield } from "../../../domain/types/yields"; +import type { ApiClient } from "../../../providers/api/api-client"; type Params = { yieldId: string; isLedgerLive: boolean; - validatorsConfig: ValidatorsConfig; + apiClient: ApiClient; signal?: AbortSignal; }; @@ -50,38 +43,37 @@ const fn = ({ isLedgerLive, yieldId, signal, - validatorsConfig, + apiClient, }: Params & { signal?: AbortSignal; -}) => - EitherAsync(() => - yieldYieldOpportunity( - yieldId, - { - ledgerWalletAPICompatible: isLedgerLive, - }, - signal - ) - ) - .map((y) => filterMapValidators(validatorsConfig, y)) +}) => { + return EitherAsync(async () => { + const client = apiClient.withRunOptions({ signal }); + const [newYieldResult, legacyYieldResult] = await Promise.all([ + client.yield.YieldsControllerGetYield(yieldId, undefined), + client.legacy.YieldControllerYieldOpportunity(yieldId, { + params: { ledgerWalletAPICompatible: isLedgerLive }, + }), + ]); + + return { + ...newYieldResult, + __fallback__: legacyYieldResult, + } satisfies Yield; + }) .map((y) => isEthenaUsdeStaking(y.id) ? ({ ...y, - rewardRate: getComputedRewardRate(y), metadata: { ...y.metadata, name: y.metadata.name.replace(/staking/i, ""), }, - } satisfies YieldDto) - : isBittensorStaking(y.id) - ? { - ...y, - validators: y.validators.filter((v) => v.name?.match(/yuma/i)), - } - : y + } satisfies Yield) + : y ) .mapLeft((e) => { console.log(e); return new Error("Could not get yield opportunity"); }); +}; diff --git a/packages/widget/src/hooks/api/use-yield-opportunity/index.ts b/packages/widget/src/hooks/api/use-yield-opportunity/index.ts index b8a7ba38..5f793c5c 100644 --- a/packages/widget/src/hooks/api/use-yield-opportunity/index.ts +++ b/packages/widget/src/hooks/api/use-yield-opportunity/index.ts @@ -1,13 +1,12 @@ import { useQuery } from "@tanstack/react-query"; -import type { ValidatorsConfig } from "../../../domain/types/yields"; +import { useApiClient } from "../../../providers/api/api-client-provider"; import { useSKWallet } from "../../../providers/sk-wallet"; -import { useValidatorsConfig } from "../../use-validators-config"; import { queryFn } from "./get-yield-opportunity"; type Params = { yieldId: string; isLedgerLive: boolean; - validatorsConfig: ValidatorsConfig; + apiClient: ReturnType; signal?: AbortSignal; }; @@ -20,16 +19,24 @@ const getKey = (params: Params) => [ export const useYieldOpportunity = (integrationId: string | undefined) => { const { isLedgerLive } = useSKWallet(); - - const validatorsConfig = useValidatorsConfig(); + const apiClient = useApiClient(); const yieldId = integrationId ?? ""; return useQuery({ - queryKey: getKey({ yieldId, isLedgerLive, validatorsConfig }), + queryKey: getKey({ + yieldId, + isLedgerLive, + apiClient, + }), enabled: !!integrationId, staleTime, queryFn: ({ signal }) => - queryFn({ yieldId, isLedgerLive, signal, validatorsConfig }), + queryFn({ + yieldId, + isLedgerLive, + signal, + apiClient, + }), }); }; diff --git a/packages/widget/src/hooks/api/use-yield-validators.ts b/packages/widget/src/hooks/api/use-yield-validators.ts new file mode 100644 index 00000000..f306978e --- /dev/null +++ b/packages/widget/src/hooks/api/use-yield-validators.ts @@ -0,0 +1,96 @@ +import { useQuery } from "@tanstack/react-query"; +import type { ValidatorDto } from "../../domain/types/validators"; +import type { ValidatorsConfig } from "../../domain/types/yields"; +import { filterValidators, type Yield } from "../../domain/types/yields"; +import { useApiClient } from "../../providers/api/api-client-provider"; +import { useValidatorsConfig } from "../use-validators-config"; + +const PAGE_SIZE = 100; +const staleTime = 1000 * 60 * 2; + +type Params = { + yieldId: string; + network?: Yield["token"]["network"]; + validatorsConfig: ValidatorsConfig; + apiClient: ReturnType; + signal?: AbortSignal; +}; + +const getYieldValidatorsQueryKey = ({ yieldId }: Pick) => [ + "yield-validators", + yieldId, +]; + +const getYieldValidatorsQueryFn = async ({ + yieldId, + network, + validatorsConfig, + apiClient, + signal, +}: Params): Promise => { + const fetchPage = (offset: number) => + apiClient + .withRunOptions({ signal }) + .yield.YieldsControllerGetYieldValidators(yieldId, { + params: { + offset, + limit: PAGE_SIZE, + }, + }); + + const firstPage = await fetchPage(0); + + const remainingOffsets = Array.from( + { length: Math.ceil(firstPage.total / PAGE_SIZE) - 1 }, + (_, index) => (index + 1) * PAGE_SIZE + ); + + const remainingPages = await Promise.all( + remainingOffsets.map((offset) => + fetchPage(offset).catch(() => ({ items: [] })) + ) + ); + + const validators = [firstPage, ...remainingPages].flatMap( + (page) => page.items ?? [] + ); + + return network + ? filterValidators({ + validatorsConfig, + validators, + network, + yieldId, + }) + : validators; +}; + +const getYieldValidatorsQueryOptions = (params: Params) => ({ + queryKey: getYieldValidatorsQueryKey(params), + staleTime, + queryFn: ({ signal }: { signal?: AbortSignal }) => + getYieldValidatorsQueryFn({ ...params, signal }), +}); + +export const useYieldValidators = ({ + enabled = true, + yieldId, + network, +}: { + enabled?: boolean; + yieldId?: string; + network?: Yield["token"]["network"]; +}) => { + const apiClient = useApiClient(); + const validatorsConfig = useValidatorsConfig(); + + return useQuery({ + ...getYieldValidatorsQueryOptions({ + yieldId: yieldId ?? "", + network, + validatorsConfig, + apiClient, + }), + enabled: enabled && !!yieldId, + }); +}; diff --git a/packages/widget/src/hooks/get-init-params.ts b/packages/widget/src/hooks/get-init-params.ts new file mode 100644 index 00000000..9713c758 --- /dev/null +++ b/packages/widget/src/hooks/get-init-params.ts @@ -0,0 +1,67 @@ +import type { QueryClient } from "@tanstack/react-query"; +import { EitherAsync, Right } from "purify-ts"; +import type { SupportedSKChains } from "../domain/types/chains"; +import type { InitParams } from "../domain/types/init-params"; +import type { SKExternalProviders } from "../domain/types/wallets"; +import type { ApiClient } from "../providers/api/api-client"; +import { getYieldOpportunity } from "./api/use-yield-opportunity/get-yield-opportunity"; +import { getAndValidateInitParams } from "./use-init-query-params"; + +export const initParamsQueryKey = ["init-params"]; +export const initParamsStaleTime = 0; +export const initParamsCacheTime = 0; + +type InitParamsQueryParams = { + isLedgerLive: boolean; + queryClient: QueryClient; + apiClient: ApiClient; + externalProviders: SKExternalProviders | undefined; +}; + +export const getInitParams = (params: InitParamsQueryParams) => + EitherAsync(() => + params.queryClient.fetchQuery({ + queryKey: initParamsQueryKey, + staleTime: initParamsStaleTime, + gcTime: initParamsCacheTime, + queryFn: () => queryInitParams(params), + }) + ).mapLeft((e) => { + console.log(e); + return new Error("could not get init query params"); + }); + +export const queryInitParams = async (params: InitParamsQueryParams) => + (await resolveInitParams(params)).unsafeCoerce(); + +const resolveInitParams = ({ + isLedgerLive, + queryClient, + apiClient, + externalProviders, +}: InitParamsQueryParams): EitherAsync => + EitherAsync.liftEither( + getAndValidateInitParams({ + externalProviderInitToken: externalProviders?.initToken, + }).toEither(new Error("missing query params")) + ).chain((val) => { + const yId = val.yieldId; + + if (yId) { + return getYieldOpportunity({ + isLedgerLive, + yieldId: yId, + queryClient, + apiClient, + }) + .map((yieldData) => ({ + ...val, + network: yieldData.token.network as SupportedSKChains, + token: yieldData.token.symbol, + yieldData, + })) + .chainLeft(async () => Right({ ...val, yieldData: null })); + } + + return EitherAsync.liftEither(Right({ ...val, yieldData: null })); + }); diff --git a/packages/widget/src/hooks/navigation/use-dashboard-tabs-page-match.ts b/packages/widget/src/hooks/navigation/use-dashboard-tabs-page-match.ts deleted file mode 100644 index 4233a279..00000000 --- a/packages/widget/src/hooks/navigation/use-dashboard-tabs-page-match.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { useMatch } from "react-router"; - -export const useDashboardTabsPageMatch = () => { - const rootMatch = useMatch("/"); - const rewardsMatch = useMatch("/rewards"); - const activityMatch = useMatch("/activity"); - - return !!(rootMatch || rewardsMatch || activityMatch); -}; diff --git a/packages/widget/src/hooks/navigation/use-pending-action-select-validator-match.ts b/packages/widget/src/hooks/navigation/use-pending-action-select-validator-match.ts index b72a39a6..07d549b2 100644 --- a/packages/widget/src/hooks/navigation/use-pending-action-select-validator-match.ts +++ b/packages/widget/src/hooks/navigation/use-pending-action-select-validator-match.ts @@ -1,7 +1,6 @@ import { useMatch } from "react-router"; export const usePendingActionSelectValidatorMatch = () => - useMatch< - "integrationId" | "balanceId" | "pendingActionType", + useMatch( "positions/:integrationId/:balanceId/select-validator/:pendingActionType" - >("positions/:integrationId/:balanceId/select-validator/:pendingActionType"); + ); diff --git a/packages/widget/src/hooks/navigation/use-unstake-or-pending-action-match.ts b/packages/widget/src/hooks/navigation/use-unstake-or-pending-action-match.ts index 85005c67..0ebdbb75 100644 --- a/packages/widget/src/hooks/navigation/use-unstake-or-pending-action-match.ts +++ b/packages/widget/src/hooks/navigation/use-unstake-or-pending-action-match.ts @@ -1,7 +1,4 @@ import { useMatch } from "react-router"; export const useUnstakeOrPendingActionMatch = (path?: string) => - useMatch< - "integrationId" | "balanceId", - `positions/:integrationId/:balanceId/${string}` - >(`positions/:integrationId/:balanceId/${path ?? "*"}`); + useMatch(`positions/:integrationId/:balanceId/${path ?? "*"}`); diff --git a/packages/widget/src/hooks/navigation/use-unstake-or-pending-action-params.ts b/packages/widget/src/hooks/navigation/use-unstake-or-pending-action-params.ts index e17ea5dd..933429e1 100644 --- a/packages/widget/src/hooks/navigation/use-unstake-or-pending-action-params.ts +++ b/packages/widget/src/hooks/navigation/use-unstake-or-pending-action-params.ts @@ -1,6 +1,6 @@ -import type { ActionTypes } from "@stakekit/api-hooks"; import { Maybe } from "purify-ts"; import { useMemo } from "react"; +import type { YieldPendingActionType } from "../../domain/types/pending-action"; import { usePendingActionSelectValidatorMatch } from "./use-pending-action-select-validator-match"; import { useUnstakeOrPendingActionMatch } from "./use-unstake-or-pending-action-match"; @@ -16,7 +16,7 @@ export const useUnstakeOrPendingActionParams = () => { {}; const pendingActionType = pendingActionSelectValidatorMatch?.params - .pendingActionType as ActionTypes | undefined; + .pendingActionType as YieldPendingActionType | undefined; return { balanceId: Maybe.fromNullable(balanceId), diff --git a/packages/widget/src/hooks/tracking/use-track-page.ts b/packages/widget/src/hooks/tracking/use-track-page.ts index 8cf73921..32d40210 100644 --- a/packages/widget/src/hooks/tracking/use-track-page.ts +++ b/packages/widget/src/hooks/tracking/use-track-page.ts @@ -1,6 +1,6 @@ import { useEffect } from "react"; -import type { Properties, TrackPageKey } from "../../providers/tracking"; import { useTracking } from "../../providers/tracking"; +import type { Properties, TrackPageKey } from "../../providers/tracking/types"; import { useSavedRef } from "../use-saved-ref"; export const useTrackPage = ( diff --git a/packages/widget/src/hooks/use-base-token.ts b/packages/widget/src/hooks/use-base-token.ts deleted file mode 100644 index be048069..00000000 --- a/packages/widget/src/hooks/use-base-token.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { YieldDto } from "@stakekit/api-hooks"; -import type { Maybe } from "purify-ts"; -import { useMemo } from "react"; -import { getBaseToken } from "../domain"; - -export const useBaseToken = (yieldDto: Maybe) => - useMemo(() => yieldDto.map((val) => getBaseToken(val)), [yieldDto]); diff --git a/packages/widget/src/hooks/use-estimated-rewards.ts b/packages/widget/src/hooks/use-estimated-rewards.ts index bc6e7bdb..ebcc619a 100644 --- a/packages/widget/src/hooks/use-estimated-rewards.ts +++ b/packages/widget/src/hooks/use-estimated-rewards.ts @@ -1,9 +1,12 @@ -import type { YieldDto } from "@stakekit/api-hooks"; import BigNumber from "bignumber.js"; import { List, Maybe } from "purify-ts"; import { useMemo } from "react"; -import { isBittensorStaking } from "../domain/types/yields"; -import type { State } from "../pages/details/earn-page/state/types"; +import type { ValidatorDto } from "../domain/types/validators"; +import { + getYieldRewardType, + isBittensorStaking, + type Yield, +} from "../domain/types/yields"; import { formatNumber } from "../utils"; import { getRewardRateFormatted } from "../utils/formatters"; import { useProvidersDetails } from "./use-provider-details"; @@ -14,10 +17,10 @@ export const useEstimatedRewards = ({ selectedValidators, selectedProviderYieldId, }: { - selectedStake: Maybe; - stakeAmount: State["stakeAmount"]; - selectedValidators: State["selectedValidators"]; - selectedProviderYieldId: State["selectedProviderYieldId"]; + selectedStake: Maybe; + stakeAmount: BigNumber; + selectedValidators: Map; + selectedProviderYieldId: Maybe; }) => { const providersDetails = useProvidersDetails({ integrationData: selectedStake, @@ -51,9 +54,11 @@ export const useEstimatedRewards = ({ .dividedBy(val.providersDetails.length), })) .map((val) => ({ + rewardRateAverage: val.rewardRateAverage, + rewardType: getYieldRewardType(val.selectedStake), percentage: getRewardRateFormatted({ rewardRate: val.rewardRateAverage.toNumber(), - rewardType: val.selectedStake.rewardType, + rewardType: getYieldRewardType(val.selectedStake), }), yearly: val.rewardRateAverage.isGreaterThan(0) ? formatNumber( diff --git a/packages/widget/src/hooks/use-force-max-amount.ts b/packages/widget/src/hooks/use-force-max-amount.ts index b9e396d2..4904751a 100644 --- a/packages/widget/src/hooks/use-force-max-amount.ts +++ b/packages/widget/src/hooks/use-force-max-amount.ts @@ -1,6 +1,6 @@ -import type { YieldDto } from "@stakekit/api-hooks"; import type { Maybe } from "purify-ts"; import { isForceMaxAmount } from "../domain/types/stake"; +import { getYieldActionArg, type Yield } from "../domain/types/yields"; /** * Check if we need to use max amount for staking/unstaking @@ -11,11 +11,9 @@ export const useForceMaxAmount = ({ integration, }: { type: "enter" | "exit"; - integration: Maybe; + integration: Maybe; }) => integration - .chainNullable((v) => - type === "enter" ? v.args.enter.args?.amount : v.args.exit?.args?.amount - ) + .chainNullable((v) => getYieldActionArg(v, type, "amount")) .map(isForceMaxAmount) .orDefault(false); diff --git a/packages/widget/src/hooks/use-gas-fee-token.ts b/packages/widget/src/hooks/use-gas-fee-token.ts deleted file mode 100644 index cd85ba37..00000000 --- a/packages/widget/src/hooks/use-gas-fee-token.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { YieldDto } from "@stakekit/api-hooks"; -import type { Maybe } from "purify-ts"; -import { useMemo } from "react"; -import { getGasFeeToken } from "../domain"; - -export const useGasFeeToken = (yieldDto: Maybe) => - useMemo(() => yieldDto.map((val) => getGasFeeToken(val)), [yieldDto]); diff --git a/packages/widget/src/hooks/use-gas-warning-check.ts b/packages/widget/src/hooks/use-gas-warning-check.ts index 62b60e53..f3616a58 100644 --- a/packages/widget/src/hooks/use-gas-warning-check.ts +++ b/packages/widget/src/hooks/use-gas-warning-check.ts @@ -1,4 +1,3 @@ -import type { AddressesDto, TokenDto } from "@stakekit/api-hooks"; import { useQuery } from "@tanstack/react-query"; import type BigNumber from "bignumber.js"; import { EitherAsync, type Maybe } from "purify-ts"; @@ -8,6 +7,9 @@ import { GasTokenMissingError, NotEnoughGasTokenError, } from "../common/check-gas-amount"; +import type { AddressesDto } from "../domain/types/addresses"; +import type { TokenDto } from "../domain/types/tokens"; +import { useApiClient } from "../providers/api/api-client-provider"; export const useGasWarningCheck = ( props: { @@ -21,6 +23,7 @@ export const useGasWarningCheck = ( | { isStake: false } ) ) => { + const apiClient = useApiClient(); const requestData = useMemo( () => props.gasAmount.map((v) => ({ @@ -48,14 +51,21 @@ export const useGasWarningCheck = ( ) .chain((val) => checkGasAmount({ + apiClient, gasEstimate: { amount: val.gasAmount, - token: val.gasFeeToken, + token: val.gasFeeToken as NonNullable< + Parameters[0]["gasEstimate"] + >["token"], }, addressWithTokenDto: { address: val.address, - additionalAddresses: val.additionalAddresses, - network: val.gasFeeToken.network, + additionalAddresses: val.additionalAddresses as Parameters< + typeof checkGasAmount + >[0]["addressWithTokenDto"]["additionalAddresses"], + network: val.gasFeeToken.network as Parameters< + typeof checkGasAmount + >[0]["addressWithTokenDto"]["network"], tokenAddress: val.gasFeeToken.address, }, ...val.stakeData, diff --git a/packages/widget/src/hooks/use-geo-block.ts b/packages/widget/src/hooks/use-geo-block.ts index 6b55e5df..20e4f6f5 100644 --- a/packages/widget/src/hooks/use-geo-block.ts +++ b/packages/widget/src/hooks/use-geo-block.ts @@ -1,7 +1,8 @@ -import type { GeolocationError } from "@stakekit/api-hooks"; -import { GeolocationErrorType } from "@stakekit/api-hooks"; -import type { AxiosInstance } from "axios"; import { useCallback, useSyncExternalStore } from "react"; +import { + type GeolocationError, + GeolocationErrorType, +} from "../domain/types/errors"; let _isGeoBlocked: | false @@ -19,26 +20,32 @@ const subscribe = (callback: (val: typeof _isGeoBlocked) => void) => { return () => subs.delete(callback); }; -export const attachGeoBlockInterceptor = (apiClient: AxiosInstance) => - apiClient.interceptors.response.use(undefined, (error) => { - if ( - error?.response?.status === 403 && - error.response.data?.type === GeolocationErrorType.GEO_LOCATION - ) { - const geoLocationErr = error.response.data as GeolocationError; - - const regionCode = (geoLocationErr.regionCode as unknown as string) ?? ""; // wrong type in API - - _isGeoBlocked = { - tags: new Set(geoLocationErr.tags ?? []), - countryCode: geoLocationErr.countryCode ?? "", - regionCode, - }; - notify(); - } - - return Promise.reject(error); - }); +const isGeoLocationError = (data: unknown): data is GeolocationError => + typeof data === "object" && + data !== null && + "type" in data && + data.type === GeolocationErrorType.GEO_LOCATION; + +export const handleGeoBlockResponse = ({ + data, + status, +}: { + data: unknown; + status?: number; +}) => { + if (status !== 403 || !isGeoLocationError(data)) { + return; + } + + const regionCode = (data.regionCode as unknown as string) ?? ""; // wrong type in API + + _isGeoBlocked = { + tags: new Set(data.tags ?? []), + countryCode: data.countryCode ?? "", + regionCode, + }; + notify(); +}; export const useGeoBlock = () => useSyncExternalStore( diff --git a/packages/widget/src/hooks/use-handle-deep-links.ts b/packages/widget/src/hooks/use-handle-deep-links.ts index 4ab9dfc2..82b1ce27 100644 --- a/packages/widget/src/hooks/use-handle-deep-links.ts +++ b/packages/widget/src/hooks/use-handle-deep-links.ts @@ -63,7 +63,7 @@ export const useHandleDeepLinks = () => { gasFeeToken: val.pendingActionDto.gasFeeToken, integrationData: val.pendingActionDto.integrationData, interactedToken: val.balance.token, - pendingActionType: val.pendingActionDto.requestDto.type, + pendingActionType: val.pendingActionDto.requestDto.action, }, }); navigateRef.current( diff --git a/packages/widget/src/hooks/use-init-params.ts b/packages/widget/src/hooks/use-init-params.ts index 449a02cb..829923fb 100644 --- a/packages/widget/src/hooks/use-init-params.ts +++ b/packages/widget/src/hooks/use-init-params.ts @@ -1,20 +1,17 @@ -import type { QueryClient } from "@tanstack/react-query"; import { useQuery } from "@tanstack/react-query"; -import { EitherAsync, Right } from "purify-ts"; -import type { SupportedSKChains } from "../domain/types/chains"; import type { InitParams } from "../domain/types/init-params"; -import type { ValidatorsConfig } from "../domain/types/yields"; +import { useApiClient } from "../providers/api/api-client-provider"; import { useSKQueryClient } from "../providers/query-client"; import { useSettings } from "../providers/settings"; -import type { SettingsContextType } from "../providers/settings/types"; import { useSKWallet } from "../providers/sk-wallet"; -import { getYieldOpportunity } from "./api/use-yield-opportunity/get-yield-opportunity"; -import { getAndValidateInitParams } from "./use-init-query-params"; -import { useValidatorsConfig } from "./use-validators-config"; +import { + initParamsCacheTime, + initParamsQueryKey, + initParamsStaleTime, + queryInitParams, +} from "./get-init-params"; -const queryKey = ["init-params"]; -const staleTime = 0; -const cacheTime = 0; +export { getInitParams } from "./get-init-params"; export const useInitParams = (opts?: { select: (val: InitParams) => T; @@ -22,74 +19,19 @@ export const useInitParams = (opts?: { const { isLedgerLive } = useSKWallet(); const { externalProviders } = useSettings(); const queryClient = useSKQueryClient(); - const validatorsConfig = useValidatorsConfig(); + const apiClient = useApiClient(); return useQuery({ - queryKey, - staleTime, - gcTime: cacheTime, + queryKey: initParamsQueryKey, + staleTime: initParamsStaleTime, + gcTime: initParamsCacheTime, queryFn: () => - queryFn({ + queryInitParams({ isLedgerLive, queryClient, + apiClient, externalProviders, - validatorsConfig, }), select: opts?.select, }); }; - -export const getInitParams = ( - params: Parameters[0] & { queryClient: QueryClient } -) => - EitherAsync(() => - params.queryClient.fetchQuery({ - queryKey, - staleTime, - gcTime: cacheTime, - queryFn: () => queryFn(params), - }) - ).mapLeft((e) => { - console.log(e); - return new Error("could not get init query params"); - }); - -const queryFn = async (params: Parameters[0]) => - (await fn(params)).unsafeCoerce(); - -const fn = ({ - isLedgerLive, - queryClient, - externalProviders, - validatorsConfig, -}: { - isLedgerLive: boolean; - queryClient: QueryClient; - externalProviders: SettingsContextType["externalProviders"]; - validatorsConfig: ValidatorsConfig; -}): EitherAsync => - EitherAsync.liftEither( - getAndValidateInitParams({ - externalProviderInitToken: externalProviders?.initToken, - }).toEither(new Error("missing query params")) - ).chain((val) => { - const yId = val.yieldId; - - if (yId) { - return getYieldOpportunity({ - isLedgerLive, - yieldId: yId, - queryClient, - validatorsConfig, - }) - .map((yieldData) => ({ - ...val, - network: yieldData.token.network as SupportedSKChains, - token: yieldData.token.symbol, - yieldData, - })) - .chainLeft(async () => Right({ ...val, yieldData: null })); - } - - return EitherAsync.liftEither(Right({ ...val, yieldData: null })); - }); diff --git a/packages/widget/src/hooks/use-init-query-params.ts b/packages/widget/src/hooks/use-init-query-params.ts index 7f02e4b1..806eab97 100644 --- a/packages/widget/src/hooks/use-init-query-params.ts +++ b/packages/widget/src/hooks/use-init-query-params.ts @@ -1,10 +1,10 @@ -import { ActionTypes } from "@stakekit/api-hooks"; import { Codec, Left, Right, string } from "purify-ts"; import { useMemo } from "react"; import { isSupportedChain, type SupportedSKChains, } from "../domain/types/chains"; +import type { YieldPendingActionType } from "../domain/types/pending-action"; import type { TokenString } from "../domain/types/tokens"; import { useSettings } from "../providers/settings"; import { MaybeWindow } from "../utils/maybe-window"; @@ -21,13 +21,13 @@ export const useInitQueryParams = () => { ); }; -const pendingActionCodec = Codec.custom({ +const pendingActionCodec = Codec.custom({ decode: (val) => string .decode(val) .chain((v) => - v in ActionTypes - ? Right(v as ActionTypes) + /^[A-Z_]+$/.test(v) + ? Right(v as YieldPendingActionType) : Left("invalid pending action") ), encode: (val) => val, diff --git a/packages/widget/src/hooks/use-max-min-yield-amount.ts b/packages/widget/src/hooks/use-max-min-yield-amount.ts index 7b2463d9..2db678e9 100644 --- a/packages/widget/src/hooks/use-max-min-yield-amount.ts +++ b/packages/widget/src/hooks/use-max-min-yield-amount.ts @@ -1,14 +1,14 @@ -import type { YieldDto } from "@stakekit/api-hooks"; import BigNumber from "bignumber.js"; import type { Maybe } from "purify-ts"; import { useMemo } from "react"; import { getMaxAmount } from "../domain"; import type { PositionsData } from "../domain/types/positions"; import { getMinStakeAmount, getMinUnstakeAmount } from "../domain/types/stake"; +import { getYieldActionArg, type Yield } from "../domain/types/yields"; import { useForceMaxAmount } from "./use-force-max-amount"; type Args = { - yieldOpportunity: Maybe; + yieldOpportunity: Maybe; availableAmount: Maybe; } & ( | { type: "enter"; positionsData: PositionsData; pricePerShare?: never } @@ -52,11 +52,7 @@ export const useMaxMinYieldAmount = ({ return isForceMax ? availableAmount : yieldOpportunity - .chainNullable( - (y) => - (type === "enter" ? y.args.enter : y.args.exit)?.args?.amount - ?.maximum - ) + .chainNullable((y) => getYieldActionArg(y, type, "amount")?.maximum) .map((a) => new BigNumber(a)) .filter((v) => v.isGreaterThan(0)); }, [availableAmount, isForceMax, type, yieldOpportunity]); diff --git a/packages/widget/src/hooks/use-position-balance-by-type.ts b/packages/widget/src/hooks/use-position-balance-by-type.ts index 5a9967db..9aff08d1 100644 --- a/packages/widget/src/hooks/use-position-balance-by-type.ts +++ b/packages/widget/src/hooks/use-position-balance-by-type.ts @@ -1,72 +1,50 @@ -import type { TokenDto, YieldBalanceDto } from "@stakekit/api-hooks"; import BigNumber from "bignumber.js"; -import { Maybe } from "purify-ts"; import { useMemo } from "react"; import { createSelector } from "reselect"; -import { getTokenPriceInUSD } from "../domain"; -import type { PositionBalancesByType } from "../domain/types/positions"; -import type { Prices } from "../domain/types/price"; -import type { usePrices } from "./api/use-prices"; +import type { + PositionBalancesByType, + YieldBalanceDto, +} from "../domain/types/positions"; import type { usePositionBalances } from "./use-position-balances"; export const usePositionBalanceByType = ({ positionBalancesData, - prices, - baseToken, }: { positionBalancesData: ReturnType["data"]; - prices: ReturnType>; - baseToken: Maybe; }) => { /** * @summary Position balance by type */ return useMemo( () => - Maybe.fromRecord({ positionBalancesData, baseToken }).map((val) => - getPositionBalanceByTypeWithPrices({ - baseToken: val.baseToken, - prices: prices.data, - pvd: val.positionBalancesData.balances, + positionBalancesData.map((val) => + getPositionBalanceByTypeWithUsd({ + pvd: val.balances, }) ), - [positionBalancesData, prices, baseToken] + [positionBalancesData] ); }; type Args = { - prices: Prices | undefined; pvd: YieldBalanceDto[]; - baseToken: TokenDto; }; -const selectPrices = (val: Args) => val.prices; const selectPvd = (val: Args) => val.pvd; -const selectBaseToken = (val: Args) => val.baseToken; -export const getPositionBalanceByTypeWithPrices = createSelector( - selectPrices, - selectPvd, - selectBaseToken, - (prices, pvd, baseToken) => - pvd.reduce((acc, cur) => { - const amount = new BigNumber(cur.amount); - if (amount.isZero() || amount.isNaN()) return acc; +const getPositionBalanceByTypeWithUsd = createSelector(selectPvd, (pvd) => + pvd.reduce((acc, cur) => { + const amount = new BigNumber(cur.amount); + if (amount.isZero() || amount.isNaN()) return acc; - const tokenPriceInUsd = prices - ? getTokenPriceInUSD({ - amount: cur.amount, - prices, - token: cur.token, - pricePerShare: cur.pricePerShare, - baseToken, - }) - : new BigNumber(0); + const tokenPriceInUsd = new BigNumber( + String(cur.amountUsd ?? 0).replace(/,/g, "") + ); - const prev = acc.get(cur.type); + const prev = acc.get(cur.type); - acc.set(cur.type, [...(prev ?? []), { ...cur, tokenPriceInUsd }]); + acc.set(cur.type, [...(prev ?? []), { ...cur, tokenPriceInUsd }]); - return acc; - }, new Map() as PositionBalancesByType) + return acc; + }, new Map() as PositionBalancesByType) ); diff --git a/packages/widget/src/hooks/use-position-balances.ts b/packages/widget/src/hooks/use-position-balances.ts index 85ef2568..613e8641 100644 --- a/packages/widget/src/hooks/use-position-balances.ts +++ b/packages/widget/src/hooks/use-position-balances.ts @@ -1,5 +1,6 @@ import { Maybe } from "purify-ts"; import { useMemo } from "react"; +import type { BalanceDataKey } from "../domain/types/positions"; import { usePositionData } from "./use-position-data"; export const usePositionBalances = ({ @@ -15,10 +16,21 @@ export const usePositionBalances = ({ () => Maybe.fromRecord({ positionData: data, - balanceId: Maybe.fromNullable(balanceId), - }).chainNullable((val) => - val.positionData.balanceData.get(val.balanceId) - ), + balanceId: Maybe.fromNullable(balanceId as BalanceDataKey), + }).chainNullable((val) => { + const balanceData = + val.positionData.balanceData.get(val.balanceId) ?? + val.positionData.balanceData.values().next().value; + + if (!balanceData) { + return undefined; + } + + return { + ...balanceData, + rewardRate: val.positionData.rewardRate, + }; + }), [balanceId, data] ); diff --git a/packages/widget/src/hooks/use-positions-data.ts b/packages/widget/src/hooks/use-positions-data.ts index 1ad3b2b5..440d0e31 100644 --- a/packages/widget/src/hooks/use-positions-data.ts +++ b/packages/widget/src/hooks/use-positions-data.ts @@ -1,10 +1,12 @@ -import type { - YieldBalanceDto, - YieldBalancesWithIntegrationIdDto, -} from "@stakekit/api-hooks"; import { useMemo } from "react"; import { createSelector } from "reselect"; -import type { PositionsData } from "../domain/types/positions"; +import { + type BalanceDataKey, + getPositionBalanceDataKey, + type PositionsData, + type YieldBalanceDto, + type YieldBalancesByYieldDto, +} from "../domain/types/positions"; import { useYieldBalancesScan } from "./api/use-yield-balances-scan"; export const usePositionsData = () => { @@ -20,41 +22,44 @@ export const usePositionsData = () => { return { data: val, ...rest }; }; -type YieldBalanceDtoID = YieldBalanceDto["groupId"]; - const positionsDataSelector = createSelector( - (balancesData: YieldBalancesWithIntegrationIdDto[]) => balancesData, + (balancesData: YieldBalancesByYieldDto[]) => balancesData, (balancesData) => balancesData.reduce((acc, val) => { - acc.set(val.integrationId, { - integrationId: val.integrationId, + acc.set(val.yieldId, { + yieldId: val.yieldId, + rewardRate: val.rewardRate, balanceData: [...val.balances] - .sort((a, b) => (a.groupId ?? "").localeCompare(b.groupId ?? "")) + .sort((a, b) => + getPositionBalanceDataKey(a).localeCompare( + getPositionBalanceDataKey(b) + ) + ) .reduce((acc, b) => { - const prev = acc.get(b.groupId); + const key = getPositionBalanceDataKey(b); + const prev = acc.get(key); + const validatorsAddresses = getBalanceValidatorAddresses(b); if (prev) { prev.balances.push(b); } else { - if (b.validatorAddresses || b.validatorAddress || b.providerId) { - acc.set(b.groupId, { + if (key === "default") { + acc.set(key, { balances: [b], - type: "validators", - validatorsAddresses: - b.validatorAddresses ?? - (b.providerId ? [b.providerId] : [b.validatorAddress!]), + type: "default", }); } else { - acc.set(b.groupId, { + acc.set(key, { balances: [b], - type: "default", + type: "validators", + validatorsAddresses, }); } } return acc; }, new Map< - YieldBalanceDtoID, + BalanceDataKey, { balances: YieldBalanceDto[] } & ( | { type: "validators"; validatorsAddresses: string[] } | { type: "default" } @@ -65,3 +70,9 @@ const positionsDataSelector = createSelector( return acc; }, new Map() as PositionsData) ); + +const getBalanceValidatorAddresses = (balance: YieldBalanceDto) => + ( + balance.validators?.map((validator) => validator.address) ?? + (balance.validator?.address ? [balance.validator.address] : []) + ).filter(Boolean); diff --git a/packages/widget/src/hooks/use-provider-details.ts b/packages/widget/src/hooks/use-provider-details.ts index 9975dee5..671a921b 100644 --- a/packages/widget/src/hooks/use-provider-details.ts +++ b/packages/widget/src/hooks/use-provider-details.ts @@ -1,13 +1,18 @@ -import type { RewardTypes, ValidatorDto, YieldDto } from "@stakekit/api-hooks"; import { List, Maybe } from "purify-ts"; import { useMemo } from "react"; +import type { RewardTypes } from "../domain/types/reward-rate"; +import type { ValidatorDto } from "../domain/types/validators"; import { + getYieldProviderDetails, getYieldProviderYieldIds, + getYieldRewardType, isYieldWithProviderOptions, + type Yield, } from "../domain/types/yields"; import type { GetMaybeJust } from "../types/utils"; import { getRewardRateFormatted } from "../utils/formatters"; import { useMultiYields } from "./api/use-multi-yields"; +import { useYieldValidators } from "./api/use-yield-validators"; type Res = Maybe<{ logo: string | undefined; @@ -16,7 +21,7 @@ type Res = Maybe<{ rewardRate: number | undefined; rewardType: RewardTypes; address?: string; - stakedBalance?: ValidatorDto["stakedBalance"]; + stakedBalance?: ValidatorDto["tvl"]; votingPower?: ValidatorDto["votingPower"]; commission?: ValidatorDto["commission"]; website?: ValidatorDto["website"]; @@ -29,27 +34,31 @@ export const getProviderDetails = ({ validatorAddress, yields, selectedProviderYieldId, + validatorsData, }: { - integrationData: Maybe; + integrationData: Maybe; validatorAddress: Maybe; - yields: Maybe; + yields: Maybe>; selectedProviderYieldId: Maybe; + validatorsData?: ReadonlyArray; }): Res => { const def = integrationData.chain((val) => { - const rewardRate = val.rewardRate; + const rewardRate = val.rewardRate.total; + const rewardType = getYieldRewardType(val); + const provider = getYieldProviderDetails(val); const rewardRateFormatted = getRewardRateFormatted({ rewardRate, - rewardType: val.rewardType, + rewardType, }); - return Maybe.fromNullable(val.metadata.provider) + return Maybe.fromNullable(provider) .map>((v) => ({ logo: v.logoURI, name: v.name, rewardRateFormatted, rewardRate, - rewardType: val.rewardType, + rewardType, website: v.externalLink, address: validatorAddress.extract(), })) @@ -59,7 +68,7 @@ export const getProviderDetails = ({ name: val.metadata.name, rewardRateFormatted, rewardRate, - rewardType: val.rewardType, + rewardType, address: validatorAddress.extract(), }) ); @@ -69,36 +78,44 @@ export const getProviderDetails = ({ validatorAddress .chain>((addr) => List.find( - (v) => v.address === addr || v.providerId === addr, - yieldDto.validators + (v) => + v.address === addr || + v.providerId === addr || + v.provider?.id === addr, + [...(validatorsData ?? [])] ).map((validator) => { const { rewardRate, rewardType } = Maybe.fromRecord({ _: Maybe.fromFalsy(isYieldWithProviderOptions(yieldDto)), selectedProviderYieldId, }) .chain(({ selectedProviderYieldId }) => - yields.chain(List.find((v) => v.id === selectedProviderYieldId)) + yields.chain((list) => + List.find((v) => v.id === selectedProviderYieldId, [...list]) + ) ) - .map((v) => v.rewardRate + v.rewardRate) + .map((v) => v.rewardRate.total + v.rewardRate.total) .map<{ rewardRate: number | undefined; rewardType: RewardTypes }>( - (res) => ({ rewardRate: res, rewardType: yieldDto.rewardType }) + (res) => ({ + rewardRate: res, + rewardType: getYieldRewardType(yieldDto), + }) ) .orDefault({ - rewardRate: validator.apr, - rewardType: yieldDto.rewardType, + rewardRate: validator.rewardRate?.total, + rewardType: getYieldRewardType(yieldDto), }); return { - logo: validator.image, + logo: validator.logoURI, name: validator.name ?? validator.address, rewardRateFormatted: getRewardRateFormatted({ rewardRate, rewardType, }), rewardRate, - rewardType: yieldDto.rewardType, + rewardType: getYieldRewardType(yieldDto), address: validator.address, - stakedBalance: validator.stakedBalance, + stakedBalance: validator.tvl, votingPower: validator.votingPower, commission: validator.commission, status: validator.status, @@ -115,15 +132,51 @@ export const useProvidersDetails = ({ integrationData, validatorsAddresses, selectedProviderYieldId, + validatorsData, }: { - integrationData: Maybe; - validatorsAddresses: Maybe>; + integrationData: Maybe; + validatorsAddresses: Maybe | Map>; selectedProviderYieldId: Maybe; + validatorsData?: Maybe>; }) => { const yields = useMultiYields( integrationData.map(getYieldProviderYieldIds).orDefault([]) ); + const shouldFetchValidators = validatorsAddresses + .filter((val): val is ReadonlyArray => !(val instanceof Map)) + .map((val) => val.length > 0) + .chain((val) => + validatorsData?.isJust() ? Maybe.of(false) : Maybe.of(val) + ) + .orDefault(false); + + const yieldValidators = useYieldValidators({ + enabled: shouldFetchValidators, + yieldId: + integrationData.map((val) => val.id).extractNullable() ?? undefined, + network: + integrationData.map((val) => val.token.network).extractNullable() ?? + undefined, + }); + + const resolvedValidatorsData = useMemo( + () => + validatorsData?.altLazy(() => + validatorsAddresses.chain((val) => + val instanceof Map + ? Maybe.of([...val.values()]) + : Maybe.fromNullable(yieldValidators.data) + ) + ) ?? + validatorsAddresses.chain((val) => + val instanceof Map + ? Maybe.of([...val.values()]) + : Maybe.fromNullable(yieldValidators.data) + ), + [validatorsAddresses, validatorsData, yieldValidators.data] + ); + return useMemo>[]>>( () => validatorsAddresses.chain((val) => @@ -137,6 +190,8 @@ export const useProvidersDetails = ({ validatorAddress: Maybe.of(v), yields: Maybe.fromNullable(yields.data), selectedProviderYieldId, + validatorsData: + resolvedValidatorsData.extractNullable() ?? undefined, }) ) ).chain((val) => @@ -150,6 +205,12 @@ export const useProvidersDetails = ({ }).map((v) => [v]) ) ), - [integrationData, validatorsAddresses, yields.data, selectedProviderYieldId] + [ + integrationData, + validatorsAddresses, + yields.data, + selectedProviderYieldId, + resolvedValidatorsData, + ] ); }; diff --git a/packages/widget/src/hooks/use-reward-token-details/get-reward-token-symbols.tsx b/packages/widget/src/hooks/use-reward-token-details/get-reward-token-symbols.tsx index 2b01f97f..2d37b8a8 100644 --- a/packages/widget/src/hooks/use-reward-token-details/get-reward-token-symbols.tsx +++ b/packages/widget/src/hooks/use-reward-token-details/get-reward-token-symbols.tsx @@ -1,7 +1,7 @@ -import type { TokenDto } from "@stakekit/api-hooks"; import React from "react"; import { Box } from "../../components/atoms/box"; import { tokenString } from "../../domain"; +import type { TokenDto } from "../../domain/types/tokens"; import { symbolIcon } from "./style.css"; export const getRewardTokenSymbols = (rewardTokens: TokenDto[]) => diff --git a/packages/widget/src/hooks/use-reward-token-details/index.ts b/packages/widget/src/hooks/use-reward-token-details/index.ts index 3d0769fc..f45aa3c3 100644 --- a/packages/widget/src/hooks/use-reward-token-details/index.ts +++ b/packages/widget/src/hooks/use-reward-token-details/index.ts @@ -1,18 +1,21 @@ import { Maybe } from "purify-ts"; import { useMemo } from "react"; -import type { ExtraData } from "../../pages/details/earn-page/state/types"; +import { + getYieldProviderDetails, + getYieldRewardTokens, + type Yield, +} from "../../domain/types/yields"; import { getRewardTokenSymbols } from "./get-reward-token-symbols"; -export const useRewardTokenDetails = ( - yieldOpportunity: ExtraData["selectedStake"] -) => { +export const useRewardTokenDetails = (yieldOpportunity: Maybe) => { return useMemo( () => yieldOpportunity .chain((y) => - Maybe.fromNullable(y.metadata.rewardTokens).chain((rt) => - Maybe.fromNullable(y.metadata.provider).map((p) => ({ rt, p })) - ) + Maybe.fromNullable(getYieldProviderDetails(y)).map((p) => ({ + p, + rt: getYieldRewardTokens(y), + })) ) .map(({ p, rt }) => ({ logoUri: p.logoURI ?? null, diff --git a/packages/widget/src/hooks/use-rewards-summary.ts b/packages/widget/src/hooks/use-rewards-summary.ts index e85447b5..b1650e7b 100644 --- a/packages/widget/src/hooks/use-rewards-summary.ts +++ b/packages/widget/src/hooks/use-rewards-summary.ts @@ -1,20 +1,21 @@ -import { - type AddressesDto, - type YieldDto, - type YieldRewardsSummaryResponseDto, - yieldGetSingleYieldRewardsSummary, -} from "@stakekit/api-hooks"; import { type QueryClient, useQuery } from "@tanstack/react-query"; import { useMemo } from "react"; import { type EnabledRewardsSummaryYieldId, isValidYieldIdForRewardsSummary, } from "../domain/types/rewards"; +import type { Yield } from "../domain/types/yields"; +import type { + AddressesDto, + YieldRewardsSummaryResponseDto, +} from "../generated/api/legacy"; +import type { ApiClient } from "../providers/api/api-client"; +import { useApiClient } from "../providers/api/api-client-provider"; import { useSKQueryClient } from "../providers/query-client"; import { useSKWallet } from "../providers/sk-wallet"; export const useMultiRewardsSummary = ( - yieldIds: YieldDto["id"][], + yieldIds: Yield["id"][], opts?: { select?: (val: RewardsSummaryResult) => T } ) => { const filteredYieldIds = useMemo( @@ -25,6 +26,7 @@ export const useMultiRewardsSummary = ( const { address, additionalAddresses } = useSKWallet(); const queryClient = useSKQueryClient(); + const apiClient = useApiClient(); return useQuery({ enabled: !!address, @@ -41,6 +43,7 @@ export const useMultiRewardsSummary = ( filteredYieldIds.map((id) => getSingleYieldRewardsSummary({ queryClient, + apiClient, yieldId: id, addresses: { address: address!, @@ -51,8 +54,7 @@ export const useMultiRewardsSummary = ( ).then((res) => res.reduce( (acc, next) => { - acc[next.yieldId] = - next.data as unknown as YieldRewardsSummaryResponseDto; + acc[next.yieldId] = next.data; return acc; }, {} as Record< @@ -64,10 +66,11 @@ export const useMultiRewardsSummary = ( }); }; -export const useRewardsSummary = (yieldId: YieldDto["id"]) => { +export const useRewardsSummary = (yieldId: Yield["id"]) => { const { address, additionalAddresses } = useSKWallet(); const queryClient = useSKQueryClient(); + const apiClient = useApiClient(); return useQuery({ enabled: isValidYieldIdForRewardsSummary(yieldId) && !!address, @@ -76,6 +79,7 @@ export const useRewardsSummary = (yieldId: YieldDto["id"]) => { queryFn: () => getSingleYieldRewardsSummary({ queryClient, + apiClient, yieldId: yieldId as EnabledRewardsSummaryYieldId, addresses: { address: address!, @@ -90,16 +94,21 @@ export const useRewardsSummary = (yieldId: YieldDto["id"]) => { const getSingleYieldRewardsSummary = ({ queryClient, + apiClient, yieldId, addresses, }: { queryClient: QueryClient; + apiClient: ApiClient; yieldId: EnabledRewardsSummaryYieldId; addresses: AddressesDto; }) => queryClient.fetchQuery({ queryKey: ["yield-rewards-summary", yieldId, addresses], - queryFn: () => yieldGetSingleYieldRewardsSummary(yieldId, { addresses }), + queryFn: () => + apiClient.legacy.YieldControllerGetSingleYieldRewardsSummary(yieldId, { + payload: { addresses }, + }), }); export type RewardsSummaryResult = Record< diff --git a/packages/widget/src/hooks/use-rich-errors.ts b/packages/widget/src/hooks/use-rich-errors.ts index fe75657e..a761cae7 100644 --- a/packages/widget/src/hooks/use-rich-errors.ts +++ b/packages/widget/src/hooks/use-rich-errors.ts @@ -1,7 +1,6 @@ -import type { AxiosInstance } from "axios"; -import type { i18n } from "i18next"; import { useCallback, useSyncExternalStore } from "react"; import { BehaviorSubject } from "rxjs"; +import { config } from "../config"; interface RichError { message: string; @@ -10,20 +9,38 @@ interface RichError { const $richError = new BehaviorSubject(null); -export const attachRichErrorsInterceptor = ( - apiClient: AxiosInstance, - i18n: i18n -) => - apiClient.interceptors.response.use(undefined, (error) => { - if ( - i18n.exists(`errors.${error?.response?.data?.message}`) && - !error?.config?.url.includes("gas-estimate") // temp ignore gas estimate errors - ) { - $richError.next(error.response.data); - } - - return Promise.reject(error); - }); +const isRecord = (value: unknown): value is Record => + typeof value === "object" && value !== null; + +const isRichError = (error: unknown): error is RichError => + isRecord(error) && + "message" in error && + typeof error.message === "string" && + error.type !== "GEO_LOCATION"; + +const resetRichError = () => $richError.next(null); + +const allowedUrls = [config.env.apiUrl, config.env.yieldsApiUrl]; + +export const handleRichErrorResponse = ({ + data, + url, +}: { + data: unknown; + url?: string; +}) => { + if ( + !isRichError(data) || + !url || + !allowedUrls.some((allowedUrl) => url.startsWith(allowedUrl)) + ) { + return; + } + + if (!url?.includes("gas-estimate")) { + $richError.next(data); + } +}; export const useRichErrors = () => { const error = useSyncExternalStore( @@ -38,7 +55,5 @@ export const useRichErrors = () => { useCallback(() => $richError.value, []) ); - const resetError = () => $richError.next(null); - - return { error, resetError }; + return { error, resetError: resetRichError }; }; diff --git a/packages/widget/src/hooks/use-staked-or-liquid-balance.ts b/packages/widget/src/hooks/use-staked-or-liquid-balance.ts index 9a19eedd..544a81eb 100644 --- a/packages/widget/src/hooks/use-staked-or-liquid-balance.ts +++ b/packages/widget/src/hooks/use-staked-or-liquid-balance.ts @@ -8,9 +8,7 @@ export const useStakedOrLiquidBalance = ( return useMemo( () => positionBalancesByType.chain((pbbt) => - Maybe.fromNullable(pbbt.get("staked")).altLazy(() => - Maybe.fromNullable(pbbt.get("available")) - ) + Maybe.fromNullable(pbbt.get("active")) ), [positionBalancesByType] ); diff --git a/packages/widget/src/hooks/use-summary.tsx b/packages/widget/src/hooks/use-summary.tsx index 50f30cc1..d7a609b0 100644 --- a/packages/widget/src/hooks/use-summary.tsx +++ b/packages/widget/src/hooks/use-summary.tsx @@ -1,13 +1,14 @@ -import type { StakeKitErrorDto, YieldDto } from "@stakekit/api-hooks"; import type { UseQueryResult } from "@tanstack/react-query"; import BigNumber from "bignumber.js"; import { List, Maybe } from "purify-ts"; import { createContext, useCallback, useContext, useMemo } from "react"; import { config } from "../config"; -import { getBaseToken, getTokenPriceInUSD } from "../domain"; +import { getTokenPriceInUSD } from "../domain"; +import type { StakeKitErrorDto } from "../domain/types/errors"; import { getPositionTotalAmount } from "../domain/types/positions"; import type { Prices } from "../domain/types/price"; import type { EnabledRewardsSummaryYieldId } from "../domain/types/rewards"; +import type { Yield } from "../domain/types/yields"; import { usePositions } from "../pages/details/positions-page/hooks/use-positions"; import { useMultiYields } from "./api/use-multi-yields"; import { usePrices } from "./api/use-prices"; @@ -20,17 +21,19 @@ import { const SummaryContext = createContext< | { - allPositionsQuery: UseQueryResult< - { - allPositions: { - yieldName: string; - usdAmount: number; - providerDetails: ReturnType; - }[]; - allPositionsSum: BigNumber; - }, - StakeKitErrorDto - >; + allPositionsQuery: { + data: + | { + allPositions: { + yieldName: string; + usdAmount: number; + providerDetails: ReturnType; + }[]; + allPositionsSum: BigNumber; + } + | undefined; + isLoading: boolean; + }; rewardsPositionsQuery: UseQueryResult< { rewardsPositions: { @@ -45,7 +48,10 @@ const SummaryContext = createContext< }, StakeKitErrorDto >; - averageApyQuery: UseQueryResult; + averageApyQuery: { + data: BigNumber | undefined; + isLoading: boolean; + }; availableBalanceSumQuery: UseQueryResult; } | undefined @@ -65,7 +71,7 @@ export const SummaryProvider = ({ const multiYieldsMapQuery = useMultiYields(yieldIds, { select: useCallback( - (val: YieldDto[]) => new Map(val.map((y) => [y.id, y])), + (val: Yield[]) => new Map(val.map((y) => [y.id, y])), [] ), }); @@ -86,84 +92,57 @@ export const SummaryProvider = ({ ), }); - const allPositionsQuery = usePrices( - { - currency: config.currency, - tokenList: useMemo(() => { - if (!multiYieldsMapQuery.data) return []; - - return positionsData.data.flatMap((v) => { - const yieldDto = multiYieldsMapQuery.data.get(v.integrationId); - - if (!yieldDto) return []; - - const baseToken = getBaseToken(yieldDto); - - return [...v.allBalances.map((b) => b.token), baseToken]; - }); - }, [multiYieldsMapQuery.data, positionsData.data]), - }, - { - enabled: !multiYieldsMapQuery.isLoading, - select: useCallback( - (prices: Prices) => { - if (!positionsData.data || !multiYieldsMapQuery.data) { - return { allPositions: [], allPositionsSum: new BigNumber(0) }; - } - - const allPositions = positionsData.data.flatMap((p) => { - const yieldDto = multiYieldsMapQuery.data.get(p.integrationId); - - if (!yieldDto) return []; - - const baseToken = getBaseToken(yieldDto); - - const pricePerShare = "1"; - - const positionTotalAmount = getPositionTotalAmount({ - token: { ...baseToken, pricePerShare }, - balances: p.balancesWithAmount, - }); - - const yields = [...multiYieldsMapQuery.data.values()]; - - const providerDetails = getProviderDetails({ - integrationData: Maybe.of(yieldDto), - validatorAddress: - p.type === "validators" - ? List.head(p.validatorsAddresses) - : Maybe.empty(), - selectedProviderYieldId: Maybe.empty(), - yields: Maybe.of(yields), - }); - - return { - yieldName: yieldDto.metadata.name, - providerDetails, - usdAmount: getTokenPriceInUSD({ - baseToken, - amount: positionTotalAmount, - pricePerShare, - token: baseToken, - prices, - }).toNumber(), - }; - }); - - const allPositionsSum = allPositions.reduce( - (acc, p) => acc.plus(p.usdAmount), - new BigNumber(0) - ); - - return { - allPositions, - allPositionsSum, - }; - }, - [multiYieldsMapQuery.data, positionsData.data] - ), + const allPositionsQuery = useMemo(() => { + if (!multiYieldsMapQuery.data) { + return { + data: undefined as undefined, + isLoading: multiYieldsMapQuery.isLoading, + }; } - ); + + const allPositions = positionsData.data.flatMap((p) => { + const yieldDto = multiYieldsMapQuery.data.get(p.integrationId); + + if (!yieldDto) return []; + + const positionTotalAmount = getPositionTotalAmount( + p.balancesWithAmount, + yieldDto.token + ); + + const yields = [...multiYieldsMapQuery.data.values()]; + + const providerDetails = getProviderDetails({ + integrationData: Maybe.of(yieldDto), + validatorAddress: + p.type === "validators" + ? List.head(p.validatorsAddresses) + : Maybe.empty(), + selectedProviderYieldId: Maybe.empty(), + yields: Maybe.of(yields), + }); + + return { + yieldName: yieldDto.metadata.name, + providerDetails, + usdAmount: positionTotalAmount.amountUsd.toNumber(), + }; + }); + + const allPositionsSum = allPositions.reduce( + (acc, p) => acc.plus(p.usdAmount), + new BigNumber(0) + ); + + return { + data: { allPositions, allPositionsSum }, + isLoading: false as const, + }; + }, [ + multiYieldsMapQuery.data, + multiYieldsMapQuery.isLoading, + positionsData.data, + ]); const rewardsPositionsQuery = usePrices( { @@ -193,11 +172,9 @@ export const SummaryProvider = ({ if (!yieldDto) return []; - const baseToken = getBaseToken(yieldDto); - const common = { pricePerShare: "1", - baseToken, + baseToken: yieldDto.token, token: rewardSummary.token, prices, }; @@ -246,81 +223,56 @@ export const SummaryProvider = ({ } ); - const averageApyQuery = usePrices( - { - currency: config.currency, - tokenList: useMemo(() => { - if (!multiYieldsMapQuery.data) return []; + const averageApyQuery = useMemo(() => { + if (!multiYieldsMapQuery.data) { + return { + data: undefined as undefined, + isLoading: multiYieldsMapQuery.isLoading, + }; + } - return positionsData.data.flatMap((v) => { - const yieldDto = multiYieldsMapQuery.data.get(v.integrationId); + const { totalWeightedApy, totalValue } = positionsData.data.reduce( + (acc, p) => { + const yieldDto = multiYieldsMapQuery.data.get(p.integrationId); - if (!yieldDto) return []; + if (!yieldDto) return acc; - const baseToken = getBaseToken(yieldDto); + const positionTotalAmount = getPositionTotalAmount( + p.balancesWithAmount, + yieldDto.token + ); - return [...v.allBalances.map((b) => b.token), baseToken]; - }); - }, [multiYieldsMapQuery.data, positionsData.data]), - }, - { - enabled: !multiYieldsMapQuery.isLoading, - select: useCallback( - (prices: Prices) => { - if (!positionsData.data || !multiYieldsMapQuery.data) { - return new BigNumber(0); - } + const usdAmount = positionTotalAmount.amountUsd; - const { totalWeightedApy, totalValue } = positionsData.data.reduce( - (acc, p) => { - const yieldDto = multiYieldsMapQuery.data.get(p.integrationId); - - if (!yieldDto) return acc; - - const baseToken = getBaseToken(yieldDto); - - const pricePerShare = "1"; - - const positionTotalAmount = getPositionTotalAmount({ - token: { ...baseToken, pricePerShare }, - balances: p.balancesWithAmount, - }); - - const usdAmount = getTokenPriceInUSD({ - baseToken, - amount: positionTotalAmount, - pricePerShare, - token: baseToken, - prices, - }); - - if (yieldDto.rewardRate > 0 && usdAmount.gt(0)) { - return { - totalWeightedApy: acc.totalWeightedApy.plus( - usdAmount.times(yieldDto.rewardRate * 100) - ), - totalValue: acc.totalValue.plus(usdAmount), - }; - } - - return acc; - }, - { - totalWeightedApy: new BigNumber(0), - totalValue: new BigNumber(0), - } - ); + const rewardRate = yieldDto.rewardRate.total; - if (totalValue.gt(0)) { - return totalWeightedApy.div(totalValue); - } + if (rewardRate > 0 && usdAmount.gt(0)) { + return { + totalWeightedApy: acc.totalWeightedApy.plus( + usdAmount.times(rewardRate * 100) + ), + totalValue: acc.totalValue.plus(usdAmount), + }; + } - return new BigNumber(0); - }, - [multiYieldsMapQuery.data, positionsData.data] - ), - } - ); + return acc; + }, + { + totalWeightedApy: new BigNumber(0), + totalValue: new BigNumber(0), + } + ); + + const data = totalValue.gt(0) + ? totalWeightedApy.div(totalValue) + : new BigNumber(0); + + return { data, isLoading: false as const }; + }, [ + multiYieldsMapQuery.data, + multiYieldsMapQuery.isLoading, + positionsData.data, + ]); const tokenBalancesScan = useTokenBalancesScan(); diff --git a/packages/widget/src/hooks/use-under-maintenance.ts b/packages/widget/src/hooks/use-under-maintenance.ts index 1ab719e3..5532cf5f 100644 --- a/packages/widget/src/hooks/use-under-maintenance.ts +++ b/packages/widget/src/hooks/use-under-maintenance.ts @@ -1,11 +1,33 @@ -import { type HealthStatusDto, useHealthHealthV2 } from "@stakekit/api-hooks"; -import type { AxiosError } from "axios"; +import { useQuery } from "@tanstack/react-query"; +import type { HealthStatusDto } from "../generated/api/yield"; +import { useApiClient } from "../providers/api/api-client-provider"; export const useUnderMaintenance = () => { - const { data, error } = useHealthHealthV2({ - query: { refetchInterval: 1000 * 30 }, + const apiClient = useApiClient(); + const { data, error } = useQuery({ + queryKey: ["yield-api-health"], + queryFn: ({ signal }) => + apiClient + .withRunOptions({ signal }) + .yield.HealthControllerHealth(undefined), + refetchInterval: 1000 * 30, }); - if (error?.status === 500 || (data?.db && data.db !== "OK")) return true; + const status = + error instanceof Error && + "response" in error && + typeof error.response === "object" && + error.response !== null && + "status" in error.response && + typeof error.response.status === "number" + ? error.response.status + : undefined; + const isServiceUnavailable = status !== undefined && status >= 500; + const isUnhealthy = data?.status !== undefined && data.status !== "OK"; + + if (isServiceUnavailable || isUnhealthy) { + return true; + } + return false; }; diff --git a/packages/widget/src/hooks/use-yield-meta-info.tsx b/packages/widget/src/hooks/use-yield-meta-info.tsx index b614624b..cf7b8232 100644 --- a/packages/widget/src/hooks/use-yield-meta-info.tsx +++ b/packages/widget/src/hooks/use-yield-meta-info.tsx @@ -1,10 +1,23 @@ -import type { TokenDto, ValidatorDto, YieldDto } from "@stakekit/api-hooks"; -import { MiscNetworks } from "@stakekit/common"; import { List, Maybe } from "purify-ts"; import { type ReactNode, useMemo } from "react"; import { Trans, useTranslation } from "react-i18next"; import { SKAnchor } from "../components/atoms/anchor"; -import { isEthenaUsdeStaking } from "../domain/types/yields"; +import { MiscNetworks } from "../domain/types/chains/networks"; +import type { TokenDto, YieldTokenDto } from "../domain/types/tokens"; +import type { ValidatorDto } from "../domain/types/validators"; +import { + getBaseYieldType, + getYieldCooldownPeriod, + getYieldLockupPeriod, + getYieldProviderDetails, + getYieldRewardTokens, + getYieldRewardType, + getYieldWarmupPeriod, + getYieldWithdrawPeriod, + hasYieldFeeConfigurationEnabled, + isEthenaUsdeStaking, + type Yield, +} from "../domain/types/yields"; import { capitalizeFirstLowerRest } from "../utils/text"; export const useYieldMetaInfo = ({ @@ -12,11 +25,11 @@ export const useYieldMetaInfo = ({ validators, tokenDto, }: { - selectedStake: Maybe; + selectedStake: Maybe; validators: { [Key in keyof Pick]?: ValidatorDto[Key]; }[]; - tokenDto: Maybe; + tokenDto: Maybe; }) => { const { t } = useTranslation(); @@ -38,27 +51,26 @@ export const useYieldMetaInfo = ({ typeof ifNotFound >(({ selectedStake: y, tokenDto }) => { const sv = validatorsFormatted.extract(); - - const haveFeeConfigurationEnabled = y.feeConfigurations.length > 0; - + const haveFeeConfigurationEnabled = hasYieldFeeConfigurationEnabled(y); const stakeToken = tokenDto.symbol; - const rewardTokens = - y.metadata.rewardTokens - ?.filter((t) => !t.isPoints) - .map((t) => t.symbol) - .join(", ") ?? ""; - const providerName = - sv ?? - (y.metadata.provider ? y.metadata.provider.name : y.metadata.name); - const rewardSchedule = y.metadata.rewardSchedule; - const cooldownPeriodDays = y.metadata.cooldownPeriod?.days ?? 0; - const warmupPeriodDays = y.metadata.warmupPeriod?.days ?? 0; - const rewardClaiming = y.metadata.rewardClaiming; + const rewardTokens = getYieldRewardTokens(y) + .filter((t) => !t.isPoints) + .map((t) => t.symbol) + .join(", "); + const provider = getYieldProviderDetails(y); + const providerName = sv ?? (provider ? provider.name : y.metadata.name); + const rewardSchedule = y.mechanics.rewardSchedule; + const cooldownPeriodDays = getYieldCooldownPeriod(y)?.days ?? 0; + const warmupPeriodDays = getYieldWarmupPeriod(y)?.days ?? 0; + const rewardClaiming = y.mechanics.rewardClaiming; + const lockupPeriodDays = getYieldLockupPeriod(y)?.days; + const yieldType = getBaseYieldType(y); + const withdrawPeriodDays = getYieldWithdrawPeriod(y)?.days ?? 0; const isCompound = providerName.includes("Compound"); if ( - y.metadata.rewardSchedule === "campaign" && + rewardSchedule === "campaign" && stakeToken.toUpperCase() === "SUSD" ) { return { @@ -98,7 +110,7 @@ export const useYieldMetaInfo = ({ const def = { campaign: - y.metadata.rewardSchedule === "campaign" ? ( + rewardSchedule === "campaign" ? ( ) : null, - lockupPeriod: y.metadata.lockupPeriod?.days + lockupPeriod: lockupPeriodDays ? t("details.lockup_period", { - count: y.metadata.lockupPeriod?.days, + count: lockupPeriodDays, }) : null, extra: - y.rewardType === "variable" + getYieldRewardType(y) === "variable" ? t("details.reward_type_varialbe", { symbol: capitalizeFirstLowerRest(y.token.symbol), }) - : y.metadata.token.network === MiscNetworks.Tezos + : y.token.network === MiscNetworks.Tezos ? t("details.extra_tezos") : undefined, }; - switch (y.metadata.type) { + switch (yieldType) { case "staking": { return { description: null, @@ -242,12 +254,12 @@ export const useYieldMetaInfo = ({ }), withdrawnTime: y.status.exit ? cooldownPeriodDays > 0 - ? (y.metadata.withdrawPeriod?.days ?? 0) > 0 + ? withdrawPeriodDays > 0 ? t("details.liquid_stake.unstake_time_days_with_claim", { unstakeTime: t("details.liquid_stake.unstake_time", { count: cooldownPeriodDays, }), - count: y.metadata.withdrawPeriod?.days, + count: withdrawPeriodDays, }) : t("details.liquid_stake.unstake_time", { count: cooldownPeriodDays, diff --git a/packages/widget/src/hooks/use-yield-type.ts b/packages/widget/src/hooks/use-yield-type.ts index 61504681..58e0c1b3 100644 --- a/packages/widget/src/hooks/use-yield-type.ts +++ b/packages/widget/src/hooks/use-yield-type.ts @@ -1,9 +1,8 @@ -import type { YieldDto } from "@stakekit/api-hooks"; import type { Maybe } from "purify-ts"; import { useTranslation } from "react-i18next"; -import { getYieldTypeLabels } from "../domain/types/yields"; +import { getYieldTypeLabels, type Yield } from "../domain/types/yields"; -export const useYieldType = (yieldOpportunity: Maybe) => { +export const useYieldType = (yieldOpportunity: Maybe) => { const { t } = useTranslation(); return yieldOpportunity.chainNullable((s) => getYieldTypeLabels(s, t)); diff --git a/packages/widget/src/navigation/dashboard-containers/animation-layout.tsx b/packages/widget/src/navigation/dashboard-containers/animation-layout.tsx deleted file mode 100644 index c8a3cd90..00000000 --- a/packages/widget/src/navigation/dashboard-containers/animation-layout.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { motion } from "motion/react"; -import type { PropsWithChildren } from "react"; -import { animationContainer } from "./styles.css"; - -export const AnimationLayout = ({ children }: PropsWithChildren) => { - return ( - - {children} - - ); -}; diff --git a/packages/widget/src/navigation/dashboard-containers/styles.css.ts b/packages/widget/src/navigation/dashboard-containers/styles.css.ts deleted file mode 100644 index 0a167a0d..00000000 --- a/packages/widget/src/navigation/dashboard-containers/styles.css.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { createContainer, style } from "@vanilla-extract/css"; - -export const widgetContainerName = createContainer(); -export const widgetContainerMaxWidth = 400; - -export const animationContainer = style([ - { - position: "relative", - overflow: "hidden", - display: "flex", - flexDirection: "column", - containerType: "inline-size", - containerName: widgetContainerName, - maxWidth: "1000px", - }, -]); diff --git a/packages/widget/src/pages-dashboard/activity/action-list-item/index.tsx b/packages/widget/src/pages-dashboard/activity/action-list-item/index.tsx index f1bf0061..776fe234 100644 --- a/packages/widget/src/pages-dashboard/activity/action-list-item/index.tsx +++ b/packages/widget/src/pages-dashboard/activity/action-list-item/index.tsx @@ -1,4 +1,3 @@ -import type { ActionDto, YieldDto } from "@stakekit/api-hooks"; import clsx from "clsx"; import { List } from "purify-ts"; import { useTranslation } from "react-i18next"; @@ -7,7 +6,9 @@ import { ContentLoaderSquare } from "../../../components/atoms/content-loader"; import { ListItem } from "../../../components/atoms/list/list-item"; import { TokenIcon } from "../../../components/atoms/token-icon"; import { Text } from "../../../components/atoms/typography/text"; +import { getYieldProviderDetails } from "../../../domain/types/yields"; import { useActionListItem } from "../../../pages/details/activity-page/hooks/use-action-list-item"; +import type { ActionYieldDto } from "../../../pages/details/activity-page/types"; import { badgeText, listItemContainer, @@ -22,11 +23,6 @@ import { viaText, } from "./style.css"; -type ActionYieldDto = { - actionData: ActionDto; - yieldData: YieldDto; -}; - export const ActionListItem = ({ action, onActionSelect, @@ -68,7 +64,14 @@ export const ActionListItem = ({ justifyContent="flex-start" alignItems="center" > - + { value={{ urls, onViewTransactionClick, - unstakeMatch: selectedAction.type === ActionTypes.UNSTAKE, + unstakeMatch: selectedAction.type === "UNSTAKE", pendingActionMatch: - selectedAction.type !== ActionTypes.STAKE && - selectedAction.type !== ActionTypes.UNSTAKE, + selectedAction.type !== "STAKE" && selectedAction.type !== "UNSTAKE", }} > { network={network} amount={amount} pendingActionType={selectedAction.type} - integrationId={selectedAction.integrationId} + integrationId={selectedAction.yieldId} /> ); diff --git a/packages/widget/src/pages-dashboard/activity/activity.page.tsx b/packages/widget/src/pages-dashboard/activity/activity.page.tsx index 7c30bf8a..62ed1f5c 100644 --- a/packages/widget/src/pages-dashboard/activity/activity.page.tsx +++ b/packages/widget/src/pages-dashboard/activity/activity.page.tsx @@ -1,4 +1,3 @@ -import { ActionStatus } from "@stakekit/api-hooks"; import { useConnectModal } from "@stakekit/rainbowkit"; import { useSelector } from "@xstate/store/react"; import { List, Maybe } from "purify-ts"; @@ -7,14 +6,15 @@ import { useTranslation } from "react-i18next"; import { Box } from "../../components/atoms/box"; import { Text } from "../../components/atoms/typography/text"; import { GroupedVirtualList } from "../../components/atoms/virtual-list"; +import { ActionStatus } from "../../domain/types/action"; import ListItemBullet from "../../pages/details/activity-page/components/list-item-bullet"; import { useActivityPage } from "../../pages/details/activity-page/hooks/use-activity-page"; +import { ItemBulletType } from "../../pages/details/activity-page/item-bullet-type"; import { ActivityPageContext, ActivityPageContextProvider, useActivityPageContext, } from "../../pages/details/activity-page/state/activity-page.context"; -import { ItemBulletType } from "../../pages/details/activity-page/state/types"; import { type ActionYieldDto, dateGroupLabels, diff --git a/packages/widget/src/pages-dashboard/activity/position-balances.tsx b/packages/widget/src/pages-dashboard/activity/position-balances.tsx deleted file mode 100644 index 6faab230..00000000 --- a/packages/widget/src/pages-dashboard/activity/position-balances.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import type { YieldBalanceDto, YieldDto } from "@stakekit/api-hooks"; -import type BigNumber from "bignumber.js"; -import { useTranslation } from "react-i18next"; -import { Box } from "../../components/atoms/box"; -import { TokenIcon } from "../../components/atoms/token-icon"; -import { Text } from "../../components/atoms/typography/text"; -import { defaultFormattedNumber } from "../../utils"; - -export const PositionBalances = ({ - yieldBalance, - integrationData, -}: { - yieldBalance: YieldBalanceDto & { tokenPriceInUsd: BigNumber }; - integrationData: YieldDto; -}) => { - const { t } = useTranslation(); - - const yieldType = integrationData.metadata.type; - - const balanceTypeContext = - yieldType === "vault" || yieldType === "lending" - ? "yearn_or_deposit" - : undefined; - - return ( - - - {t(`position_details.balance_type.${yieldBalance.type}`, { - context: balanceTypeContext, - })} - - - - - {yieldBalance.token.isPoints && ( - - - - )} - - {yieldBalance.token.symbol} - {!yieldBalance.token.isPoints && - ` ($${defaultFormattedNumber(yieldBalance.tokenPriceInUsd)})`} - - - - - ); -}; diff --git a/packages/widget/src/pages-dashboard/common/components/back-button.tsx b/packages/widget/src/pages-dashboard/common/components/back-button.tsx index 25d828c9..55bf273d 100644 --- a/packages/widget/src/pages-dashboard/common/components/back-button.tsx +++ b/packages/widget/src/pages-dashboard/common/components/back-button.tsx @@ -3,7 +3,7 @@ import { Box } from "../../../components/atoms/box"; import { CaretLeftIcon } from "../../../components/atoms/icons/caret-left"; import { useHeader } from "../../../components/molecules/header/use-header"; -export const BackButtonContext = createContext(false); +const BackButtonContext = createContext(false); export const BackButtonProvider = ({ children }: PropsWithChildren) => { return ( diff --git a/packages/widget/src/pages-dashboard/common/components/footer-outlet/styles.css.ts b/packages/widget/src/pages-dashboard/common/components/footer-outlet/styles.css.ts deleted file mode 100644 index c19c65b7..00000000 --- a/packages/widget/src/pages-dashboard/common/components/footer-outlet/styles.css.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { style } from "@vanilla-extract/css"; - -export const footerContainer = style({ zIndex: 1 }); diff --git a/packages/widget/src/pages-dashboard/common/components/tabs/index.tsx b/packages/widget/src/pages-dashboard/common/components/tabs/index.tsx index 733aa2fa..1d57b552 100644 --- a/packages/widget/src/pages-dashboard/common/components/tabs/index.tsx +++ b/packages/widget/src/pages-dashboard/common/components/tabs/index.tsx @@ -19,10 +19,6 @@ const TABS_MAP = { activity: "/activity", }; -export type TabsProps = { - pendingActionsCount?: number; -}; - export const Tabs = () => { const trackEvent = useTrackEvent(); const navigate = useNavigate(); diff --git a/packages/widget/src/pages-dashboard/overview/earn-page/utila-select-validator-section.tsx b/packages/widget/src/pages-dashboard/overview/earn-page/utila-select-validator-section.tsx index 5c2e2981..a3d7a23f 100644 --- a/packages/widget/src/pages-dashboard/overview/earn-page/utila-select-validator-section.tsx +++ b/packages/widget/src/pages-dashboard/overview/earn-page/utila-select-validator-section.tsx @@ -2,6 +2,7 @@ import { Maybe } from "purify-ts"; import { Box } from "../../../components/atoms/box"; import { ContentLoaderSquare } from "../../../components/atoms/content-loader"; import { SelectValidator } from "../../../components/molecules/select-validator"; +import { isYieldActionArgRequired } from "../../../domain/types/yields"; import { useSelectValidator } from "../../../pages/details/earn-page/components/select-validator-section/use-select-validator"; import { SelectValidatorTrigger } from "./utila-select-validator-trigger"; @@ -25,12 +26,15 @@ export const UtilaSelectValidatorSection = () => { ) : ( Maybe.fromRecord({ selectedStake, validatorsData }) - .filter((val) => !!val.selectedStake.validators.length) + .filter((val) => !!val.validatorsData.length) .map((val) => { const selectedValidatorsArr = [...selectedValidators.values()]; - const multiSelect = - !!val.selectedStake.args.enter.args?.validatorAddresses?.required; + const multiSelect = isYieldActionArgRequired( + val.selectedStake, + "enter", + "validatorAddresses" + ); return ( - - - } + wrapperProps={{ hw: "5", marginLeft: "1" }} + imgProps={{ borderRadius: "full" }} + src={v.logoURI} + fallbackName={nameOrAddress} /> diff --git a/packages/widget/src/pages-dashboard/overview/positions/components/positions-list-item.tsx b/packages/widget/src/pages-dashboard/overview/positions/components/positions-list-item.tsx index 9b204254..50d2aee6 100644 --- a/packages/widget/src/pages-dashboard/overview/positions/components/positions-list-item.tsx +++ b/packages/widget/src/pages-dashboard/overview/positions/components/positions-list-item.tsx @@ -10,6 +10,7 @@ import { TokenIcon } from "../../../../components/atoms/token-icon"; import { ToolTip } from "../../../../components/atoms/tooltip"; import { Text } from "../../../../components/atoms/typography/text"; import type { PositionDetailsLabelType } from "../../../../domain/types/positions"; +import { getYieldProviderDetails } from "../../../../domain/types/yields"; import { columnContainer, listItem, @@ -61,7 +62,14 @@ export const PositionsListItem = memo( > {item.token.mapOrDefault( (val) => ( - + ), diff --git a/packages/widget/src/pages-dashboard/overview/positions/components/styles.css.ts b/packages/widget/src/pages-dashboard/overview/positions/components/styles.css.ts deleted file mode 100644 index d3c30eda..00000000 --- a/packages/widget/src/pages-dashboard/overview/positions/components/styles.css.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { style } from "@vanilla-extract/css"; -import { atoms } from "../../../../styles/theme/atoms.css"; -import { vars } from "../../../../styles/theme/contract.css"; - -export const selectItemText = style({ - color: vars.color.tokenSelect, - fontWeight: vars.fontWeight.tokenSelect, -}); - -export const validatorAddress = style({ - overflow: "hidden", - textOverflow: "ellipsis", - whiteSpace: "nowrap", -}); - -export const importValidatorContainer = style({ - minHeight: "50px", -}); - -export const noWrap = style({ whiteSpace: "nowrap" }); - -export const listItem = style([ - atoms({ gap: "1" }), - { flexDirection: "column" }, -]); diff --git a/packages/widget/src/pages-dashboard/overview/positions/hooks/use-position-list-item.ts b/packages/widget/src/pages-dashboard/overview/positions/hooks/use-position-list-item.ts index 91d6e7ee..f58a28b5 100644 --- a/packages/widget/src/pages-dashboard/overview/positions/hooks/use-position-list-item.ts +++ b/packages/widget/src/pages-dashboard/overview/positions/hooks/use-position-list-item.ts @@ -18,9 +18,8 @@ export const usePositionListItem = ( rewardRateAverage, inactiveValidator, baseToken, - totalAmount, + totalAmountUsd, totalAmountFormatted, - tokenToDisplay, } = useBasePositionListItem(item); const rewardsSummaryQuery = useRewardsSummary(item.integrationId); @@ -37,7 +36,6 @@ export const usePositionListItem = ( currency: config.currency, tokenList: [ ...baseToken.mapOrDefault((v) => [v], []), - ...tokenToDisplay.mapOrDefault((v) => [v], []), ...rewardsSummary.mapOrDefault((v) => [v.token], []), ], }); @@ -52,23 +50,10 @@ export const usePositionListItem = ( const totalAmountPriceFormatted = useMemo( () => - Maybe.fromRecord({ - totalAmount, - baseToken, - prices: Maybe.fromNullable(prices.data), - tokenToDisplay, - }) - .map((val) => - getTokenPriceInUSD({ - baseToken: val.baseToken, - amount: val.totalAmount, - pricePerShare: val.tokenToDisplay.pricePerShare, - token: val.tokenToDisplay, - prices: val.prices, - }) - ) + totalAmountUsd + .filter((v) => v.isGreaterThan(0)) .map(defaultFormattedNumber), - [totalAmount, baseToken, prices, tokenToDisplay] + [totalAmountUsd] ); const rewardsAmountPriceFormatted = useMemo( diff --git a/packages/widget/src/pages-dashboard/position-details/components/position-details-actions.tsx b/packages/widget/src/pages-dashboard/position-details/components/position-details-actions.tsx index 70e67d52..481a42ce 100644 --- a/packages/widget/src/pages-dashboard/position-details/components/position-details-actions.tsx +++ b/packages/widget/src/pages-dashboard/position-details/components/position-details-actions.tsx @@ -1,10 +1,11 @@ -import type { ActionTypes } from "@stakekit/api-hooks"; import { Maybe } from "purify-ts"; import { useTranslation } from "react-i18next"; import { Box } from "../../../components/atoms/box"; import { Button } from "../../../components/atoms/button"; import { Spinner } from "../../../components/atoms/spinner"; import { SelectValidator } from "../../../components/molecules/select-validator"; +import type { YieldPendingActionType } from "../../../domain/types/pending-action"; +import { getBaseYieldType } from "../../../domain/types/yields"; import { AmountBlock } from "../../../pages/position-details/components/amount-block"; import { StaticActionBlock } from "../../../pages/position-details/components/static-action-block"; import { usePositionDetails } from "../../../pages/position-details/hooks/use-position-details"; @@ -34,6 +35,7 @@ export const PositionDetailsActions = () => { const { isLoading, integrationData, + validatorsData, positionBalancesByType, unstakeToken, providersDetails, @@ -102,7 +104,7 @@ export const PositionDetailsActions = () => { } label={t( `position_details.pending_action_button.${ - val.pendingActionDto.type.toLowerCase() as Lowercase + val.pendingActionDto.type.toLowerCase() as Lowercase }` )} onMaxClick={null} @@ -150,7 +152,7 @@ export const PositionDetailsActions = () => { unstakeAmountError={unstakeAmountError} onMaxClick={onMaxClick} label={t( - `position_details.unstake_label.${v.integrationData.metadata.type}` + `position_details.unstake_label.${getBaseYieldType(v.integrationData)}` )} formattedAmount={unstakeFormattedAmount} balance={reducedStakedOrLiquidBalance} @@ -173,7 +175,7 @@ export const PositionDetailsActions = () => { onValidatorsSubmit([val.address]); }} selectedStake={v.integrationData} - validators={v.integrationData.validators} + validators={validatorsData} multiSelect={validatorAddressesHandling.multiSelect} state={validatorAddressesHandling.modalState} > diff --git a/packages/widget/src/pages-dashboard/position-details/components/position-details-info.tsx b/packages/widget/src/pages-dashboard/position-details/components/position-details-info.tsx index 0e666712..1d1b4785 100644 --- a/packages/widget/src/pages-dashboard/position-details/components/position-details-info.tsx +++ b/packages/widget/src/pages-dashboard/position-details/components/position-details-info.tsx @@ -7,9 +7,9 @@ import { CollapsibleRoot, CollapsibleTrigger, } from "../../../components/atoms/collapsible"; -import { InfoIcon } from "../../../components/atoms/icons/info"; import { Spinner } from "../../../components/atoms/spinner"; import { Text } from "../../../components/atoms/typography/text"; +import { getBaseYieldType } from "../../../domain/types/yields"; import { PositionBalances } from "../../../pages/position-details/components/position-balances"; import { usePositionDetails } from "../../../pages/position-details/hooks/use-position-details"; import { ProviderDetails } from "./provider-details"; @@ -21,8 +21,7 @@ export const PositionDetailsInfo = () => { integrationData, positionBalancesByType, providersDetails, - positionLabel, - liquidTokensToNativeConversion, + shareToAmountConversions, } = usePositionDetails(); const { t } = useTranslation(); @@ -51,38 +50,6 @@ export const PositionDetailsInfo = () => { px="4" py="4" > - {positionLabel - .map((l) => ( - - - - - - - - { - t( - `position_details.labels.${l.type}.details`, - l.params - ) as string - } - - - - )) - .extractNullable()} - {providersDetails .map((pd) => @@ -91,7 +58,7 @@ export const PositionDetailsInfo = () => { {...p} key={p.address ?? idx} stakeType={t( - `position_details.stake_type.${val.integrationData.metadata.type}` + `position_details.stake_type.${getBaseYieldType(val.integrationData)}` )} integrationData={val.integrationData} /> @@ -134,7 +101,7 @@ export const PositionDetailsInfo = () => { )} - {liquidTokensToNativeConversion + {shareToAmountConversions .filter((val) => val.size > 0) .map((val) => ( - - - } + fallbackName={nameOrAddress} /> diff --git a/packages/widget/src/pages-dashboard/position-details/components/top-header.tsx b/packages/widget/src/pages-dashboard/position-details/components/top-header.tsx index 3c597dda..9931569a 100644 --- a/packages/widget/src/pages-dashboard/position-details/components/top-header.tsx +++ b/packages/widget/src/pages-dashboard/position-details/components/top-header.tsx @@ -2,6 +2,7 @@ import { Just, Maybe } from "purify-ts"; import { Box } from "../../../components/atoms/box"; import { TokenIcon } from "../../../components/atoms/token-icon"; import { Text } from "../../../components/atoms/typography/text"; +import { getYieldProviderDetails } from "../../../domain/types/yields"; import { usePositionDetails } from "../../../pages/position-details/hooks/use-position-details"; import { topHeaderYieldName } from "./styles.css"; @@ -18,7 +19,12 @@ export const TopHeader = () => { <> ["positionsData"]["data"][number]; - }) => { - const { t } = useTranslation(); - - const { - integrationData, - providersDetails, - inactiveValidator, - rewardRateAverage, - rewardsAmountFormatted, - rewardsAmountPriceFormatted, - } = usePositionListItem(item); - - return ( - - - {integrationData.mapOrDefault( - (d) => ( - - - {/* Yield */} - - {item.token.mapOrDefault( - (val) => ( - - ), - - - - )} - - - - {item.token - .map((t) => {t.symbol}) - .extractNullable()} - - {item.yieldLabelDto - .map((label) => { - return ( - - | undefined - )} - > - - - {t( - `position_details.labels.${label.type as PositionDetailsLabelType}.label` - )} - - - - ); - }) - .extractNullable()} - - {(item.actionRequired || - item.hasPendingClaimRewards || - !!inactiveValidator) && ( - - - {t( - item.actionRequired - ? "positions.action_required" - : inactiveValidator - ? inactiveValidator === "jailed" - ? "details.validators_jailed" - : "details.validators_inactive" - : "positions.claim_rewards" - )} - - - )} - - {providersDetails - .chain((val) => - List.head(val).map((p) => ( - - {t("positions.via", { - providerName: p.name ?? p.address, - count: Math.max(val.length - 1, 1), - })} - - )) - ) - .extractNullable()} - - - - {/* Reward Rate */} - - {rewardRateAverage - .map((v) => {v}) - .orDefaultLazy(() => ( - - - ))} - - - {/* Rewards */} - - {rewardsAmountFormatted - .map((v) => ( - <> - {v} - - - {rewardsAmountPriceFormatted - .map((v) => <>{v}$) - .orDefault( - - - )} - - - )) - .orDefault( - - - )} - - - - {item.pointsRewardTokenBalances.length > 0 && ( - - {item.pointsRewardTokenBalances.map((val, i) => ( - - - - - {val.amount} - - - ))} - - )} - - ), - - )} - - - ); - } -); diff --git a/packages/widget/src/pages-dashboard/rewards/components/styles.css.ts b/packages/widget/src/pages-dashboard/rewards/components/styles.css.ts deleted file mode 100644 index a52872f9..00000000 --- a/packages/widget/src/pages-dashboard/rewards/components/styles.css.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { style } from "@vanilla-extract/css"; -import { atoms } from "../../../styles/theme/atoms.css"; -import { vars } from "../../../styles/theme/contract.css"; - -export const selectItemText = style({ - color: vars.color.tokenSelect, - fontWeight: vars.fontWeight.tokenSelect, -}); - -export const validatorAddress = style({ - overflow: "hidden", - textOverflow: "ellipsis", - whiteSpace: "nowrap", -}); - -export const importValidatorContainer = style({ - minHeight: "50px", -}); - -export const noWrap = style({ whiteSpace: "nowrap" }); - -export const listItem = style([ - atoms({ gap: "1" }), - { flexDirection: "column" }, -]); diff --git a/packages/widget/src/pages-dashboard/rewards/components/summary.tsx b/packages/widget/src/pages-dashboard/rewards/components/summary.tsx deleted file mode 100644 index 683e7f2f..00000000 --- a/packages/widget/src/pages-dashboard/rewards/components/summary.tsx +++ /dev/null @@ -1,51 +0,0 @@ -// import { Box } from "../../../components/atoms/box"; -// import { SummaryItem } from "../../../components/molecules/summary-item"; -// import { summaryContainer } from "../../../components/molecules/summary-item/index.css"; -// import { useSummary } from "../../../hooks/use-summary"; -// import { useSettings } from "../../../providers/settings"; -// import { combineRecipeWithVariant } from "../../../utils/styles"; -// import { useTranslation } from "react-i18next"; - -// export const Summary = () => { -// const { rewardsPositionsQuery } = useSummary(); - -// const { t } = useTranslation(); - -// const { variant } = useSettings(); - -// return ( -// -// - -// - -// -// -// ); -// }; diff --git a/packages/widget/src/pages-dashboard/rewards/hooks/use-reward-details-tab.hook.ts b/packages/widget/src/pages-dashboard/rewards/hooks/use-reward-details-tab.hook.ts deleted file mode 100644 index 3c0e02ce..00000000 --- a/packages/widget/src/pages-dashboard/rewards/hooks/use-reward-details-tab.hook.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { useSummary } from "../../../hooks/use-summary"; - -export const useRewardDetails = () => { - const { - allPositionsQuery, - // rewardsPositionsQuery - } = useSummary(); - - return { - allPositionsQuery, - // rewardsPositionsQuery, - }; -}; diff --git a/packages/widget/src/pages-dashboard/rewards/index.tsx b/packages/widget/src/pages-dashboard/rewards/index.tsx deleted file mode 100644 index 08abc553..00000000 --- a/packages/widget/src/pages-dashboard/rewards/index.tsx +++ /dev/null @@ -1,34 +0,0 @@ -// import { Box } from "../../components/atoms/box"; -// import { AnimationPage } from "../../navigation/containers/animation-page"; -// import { VerticalDivider } from "../common/components/divider"; -// import { TabPageContainer } from "../common/components/tab-page-container"; -// import { Summary } from "./components/summary"; -// import { RewardsPage } from "./rewards.page"; -// import { rewardDetailsContainer } from "./styles.css"; -// import { lazy } from "react"; - -// const RewardsDetailsTab = lazy(() => -// import("./reward-details.tab").then((mod) => ({ -// default: mod.RewardsDetailsTab, -// })) -// ); - -// export const RewardsTabPage = () => { -// return ( -// -// -// - -// -// - -// - -// -// -// -// -// -// -// ); -// }; diff --git a/packages/widget/src/pages-dashboard/rewards/reward-details.tab.tsx b/packages/widget/src/pages-dashboard/rewards/reward-details.tab.tsx deleted file mode 100644 index 25e9ec3d..00000000 --- a/packages/widget/src/pages-dashboard/rewards/reward-details.tab.tsx +++ /dev/null @@ -1,177 +0,0 @@ -// import { Box } from "../../components/atoms/box"; -// import { Dropdown } from "../../components/atoms/dropdown"; -// import { Text } from "../../components/atoms/typography/text"; -// import { useRewardDetails } from "./hooks/use-reward-details-tab.hook"; -// import { formatNumber } from "../../utils"; -// import { -// ArcElement, -// Chart as ChartJS, -// Colors, -// Legend, -// Tooltip, -// } from "chart.js"; -// import annotationPlugin, { -// type DoughnutLabelOptions, -// } from "chartjs-plugin-annotation"; -// import { useMemo, useState } from "react"; -// import { Doughnut } from "react-chartjs-2"; -// import { useTranslation } from "react-i18next"; - -// ChartJS.register(ArcElement, Tooltip, Legend, Colors, annotationPlugin); - -// export const RewardsDetailsTab = () => { -// const { -// rewardsPositionsQuery, allPositionsQuery } = useRewardDetails(); - -// const [selectedOption, setSelectedOption] = useState< -// | { label: "Positions"; value: "positions" } -// | { label: "Rewards"; value: "rewards" } -// >({ label: "Positions", value: "positions" }); - -// const dataToUse = useMemo(() => { -// return ( -// (selectedOption.value === "positions" -// ? allPositionsQuery.data?.allPositions.map((v) => ({ -// name: v.providerDetails.mapOrDefault( -// (pd) => `${v.yieldName} - ${pd.name ?? pd.address}`, -// v.yieldName -// ), -// value: v.usdAmount, -// })) -// : rewardsPositionsQuery.data?.rewardsPositions.map((v) => ({ -// name: v.yieldName, -// value: v.total.toNumber(), -// }))) ?? [] -// ); -// }, [ -// allPositionsQuery.data, -// rewardsPositionsQuery.data, -// selectedOption.value, -// ]); - -// const data = useMemo(() => { -// return { -// labels: dataToUse.map((v) => v.name), -// datasets: [ -// { -// label: "Position value in USD", -// data: dataToUse.map((v) => v.value), -// backgroundColor: dataToUse.map( -// (_, i) => colors[i % colors.length].background -// ), -// borderColor: dataToUse.map( -// (_, i) => colors[i % colors.length].borderColor -// ), -// borderWidth: 1, -// }, -// ], -// }; -// }, [dataToUse]); - -// const { t } = useTranslation(); - -// return ( -// -// -// -// setSelectedOption( -// val === "positions" -// ? { label: "Positions", value: "positions" } -// : { label: "Rewards", value: "rewards" } -// ) -// } -// selectedOption={selectedOption} -// placeholder="Select an option" -// /> -// -// -// {dataToUse.length > 0 ? ( -// -// `$${formatNumber(context.parsed, 2)}`, -// }, -// }, -// annotation: { -// annotations: { -// dLabel: { -// type: "doughnutLabel", -// content: ({ chart }) => [ -// `Total: ${formatNumber((chart.getDatasetMeta(0) as { total: number }).total, 2)}$`, -// ], -// font: [{ size: 30 }], -// color: ["#373737"], -// } as DoughnutLabelOptions, -// }, -// }, -// }, -// }} -// /> -// ) : ( -// -// {t("dashboard.rewards.no_data")} -// -// )} -// -// -// ); -// }; - -// const colors = [ -// { -// background: "rgba(255, 99, 132, 0.2)", -// borderColor: "rgba(255, 99, 132, 1)", -// }, -// { -// background: "rgba(54, 162, 235, 0.2)", -// borderColor: "rgba(54, 162, 235, 1)", -// }, -// { -// background: "rgba(255, 206, 86, 0.2)", -// borderColor: "rgba(255, 206, 86, 1)", -// }, -// { -// background: "rgba(75, 192, 192, 0.2)", -// borderColor: "rgba(75, 192, 192, 1)", -// }, -// { -// background: "rgba(153, 102, 255, 0.2)", -// borderColor: "rgba(153, 102, 255, 1)", -// }, -// { -// background: "rgba(255, 159, 64, 0.2)", -// borderColor: "rgba(255, 159, 64, 1)", -// }, -// { -// background: "rgba(255, 105, 180, 0.2)", -// borderColor: "rgba(255, 105, 180, 1)", -// }, -// { -// background: "rgba(60, 179, 113, 0.2)", -// borderColor: "rgba(60, 179, 113, 1)", -// }, -// { -// background: "rgba(255, 140, 0, 0.2)", -// borderColor: "rgba(255, 140, 0, 1)", -// }, -// ]; diff --git a/packages/widget/src/pages-dashboard/rewards/rewards.page.tsx b/packages/widget/src/pages-dashboard/rewards/rewards.page.tsx deleted file mode 100644 index 24846c0e..00000000 --- a/packages/widget/src/pages-dashboard/rewards/rewards.page.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import { useMemo } from "react"; -import { Box } from "../../components/atoms/box"; -import { Text } from "../../components/atoms/typography/text"; -import { VirtualList } from "../../components/atoms/virtual-list"; -import { ZerionChainModal } from "../../components/molecules/zerion-chain-modal"; -import { FallbackContent } from "../../pages/details/positions-page/components/fallback-content"; -import { usePositions } from "../../pages/details/positions-page/hooks/use-positions"; -import { useSKWallet } from "../../providers/sk-wallet"; -import { PositionsListItem } from "./components/positions-list-item"; -import { container, headerContainer } from "./styles.css"; - -export const RewardsPage = () => { - const { positionsData, listData, showPositions } = usePositions(); - - const { isConnected, isConnecting } = useSKWallet(); - - const content = useMemo(() => { - if (positionsData.isLoading && positionsData.isFetching && isConnected) { - return ; - } - if (!isConnected && !isConnecting) { - return ; - } - if (positionsData.isError && !positionsData.data.length) { - return ; - } - - return null; - }, [ - isConnected, - isConnecting, - positionsData.data.length, - positionsData.isError, - positionsData.isFetching, - positionsData.isLoading, - ]); - - return ( - - {content} - - {showPositions && ( - - - - 60} - data={listData} - itemContent={(_, item) => - item === "header" ? ( - <> - - - {isConnected && !positionsData.data.length && ( - - - - )} - - ) : ( - - ) - } - /> - - )} - - ); -}; - -function THead() { - return ( - - Yield - Reward Rate - Rewards - - ); -} diff --git a/packages/widget/src/pages-dashboard/rewards/styles.css.ts b/packages/widget/src/pages-dashboard/rewards/styles.css.ts deleted file mode 100644 index b75ff2ac..00000000 --- a/packages/widget/src/pages-dashboard/rewards/styles.css.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { style } from "@vanilla-extract/css"; -import { recipe } from "@vanilla-extract/recipes"; -import { widgetContainerMaxWidth, widgetContainerName } from "../../style.css"; -import { atoms } from "../../styles/theme/atoms.css"; -import { minContainerWidth } from "../../styles/tokens/breakpoints"; - -export const container = style({ - minHeight: "300px", -}); - -export const listItemWrapper = style([ - atoms({ - display: "flex", - gap: "3", - paddingLeft: "1", - }), -]); - -export const rewardDetailsContainer = style([ - atoms({ background: "dashboardDetailsSectionBackground" }), - { - borderRadius: "16px", - minHeight: "400px", - display: "flex", - flexDirection: "row", - justifyContent: "center", - alignItems: "center", - }, -]); - -export const listItemContainer = recipe({ - base: [atoms({ borderRadius: "base" }), { padding: "2px 4px" }], - - variants: { - type: { - claim: atoms({ background: "positionsClaimRewardsBackground" }), - actionRequired: atoms({ - background: "positionsActionRequiredBackground", - }), - pending: atoms({ background: "positionsPendingBackground" }), - }, - }, -}); - -export const positionDetailsContainer = style([ - atoms({ gap: { mobile: "1", tablet: "2" } }), - { - display: "flex", - - justifyContent: "center", - - alignItems: "flex-start", - flexDirection: "column-reverse", - - "@container": { - [minContainerWidth(widgetContainerName, widgetContainerMaxWidth)]: { - alignItems: "center", - flexDirection: "row", - }, - }, - }, -]); - -export const viaText = style({ - textOverflow: "ellipsis", - overflow: "hidden", -}); - -export const headerContainer = style({ - paddingLeft: "10px", - paddingRight: "10px", - textAlign: "left", -}); diff --git a/packages/widget/src/pages/complete/hooks/use-activity-complete.hook.ts b/packages/widget/src/pages/complete/hooks/use-activity-complete.hook.ts index 529d2a95..e43c0fcf 100644 --- a/packages/widget/src/pages/complete/hooks/use-activity-complete.hook.ts +++ b/packages/widget/src/pages/complete/hooks/use-activity-complete.hook.ts @@ -1,7 +1,12 @@ -import type { TokenDto } from "@stakekit/api-hooks"; import { useSelector } from "@xstate/store/react"; import { Maybe } from "purify-ts"; import { useMemo } from "react"; +import { + getActionInputToken, + getActionValidatorAddresses, +} from "../../../domain/types/action"; +import type { TokenDto } from "../../../domain/types/tokens"; +import { getYieldProviderDetails } from "../../../domain/types/yields"; import { useTrackPage } from "../../../hooks/tracking/use-track-page"; import { useProvidersDetails } from "../../../hooks/use-provider-details"; import { useYieldType } from "../../../hooks/use-yield-type"; @@ -34,12 +39,23 @@ export const useActivityComplete = () => { const yieldType = useYieldType(selectedYield).map((v) => v.type); const inputToken = useMemo( - () => Maybe.fromNullable(selectedAction).map((y) => y.inputToken), - [selectedAction] + () => + Maybe.fromNullable( + getActionInputToken({ + actionDto: selectedAction, + yieldDto: selectedYield.extractNullable() ?? undefined, + }) + ), + [selectedAction, selectedYield] ) as Maybe; const metadata = useMemo( - () => selectedYield.map((y) => y.metadata), + () => + selectedYield.map((yieldDto) => ({ + logoURI: yieldDto.metadata.logoURI, + name: yieldDto.metadata.name, + provider: getYieldProviderDetails(yieldDto) ?? undefined, + })), [selectedYield] ); @@ -47,8 +63,10 @@ export const useActivityComplete = () => { const providerDetails = useProvidersDetails({ integrationData: selectedYield, - validatorsAddresses: Maybe.of(selectedAction.validatorAddresses ?? []), - selectedProviderYieldId: Maybe.of(selectedAction.integrationId), + validatorsAddresses: Maybe.of( + getActionValidatorAddresses(selectedAction) ?? [] + ), + selectedProviderYieldId: Maybe.of(selectedAction.yieldId), }); return { diff --git a/packages/widget/src/pages/complete/hooks/use-complete.hook.ts b/packages/widget/src/pages/complete/hooks/use-complete.hook.ts index 044e4584..f30093b2 100644 --- a/packages/widget/src/pages/complete/hooks/use-complete.hook.ts +++ b/packages/widget/src/pages/complete/hooks/use-complete.hook.ts @@ -1,7 +1,7 @@ -import type { TransactionType } from "@stakekit/api-hooks"; import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { useLocation, useNavigate } from "react-router"; +import type { TransactionType } from "../../../domain/types/action"; import { useActivityPendingActionMatch } from "../../../hooks/navigation/use-activity-pending-action-match"; import { useActivityReviewMatch } from "../../../hooks/navigation/use-activity-review.match"; import { useActivityUnstakeActionMatch } from "../../../hooks/navigation/use-activity-unstake.match"; diff --git a/packages/widget/src/pages/complete/pages/activity-complete.page.tsx b/packages/widget/src/pages/complete/pages/activity-complete.page.tsx index c09d5c2c..fefe0a06 100644 --- a/packages/widget/src/pages/complete/pages/activity-complete.page.tsx +++ b/packages/widget/src/pages/complete/pages/activity-complete.page.tsx @@ -21,7 +21,7 @@ export const ActivityCompletePage = () => { network={network} amount={amount} pendingActionType={selectedAction.type} - integrationId={selectedAction.integrationId} + integrationId={selectedAction.yieldId} /> ); }; diff --git a/packages/widget/src/pages/complete/pages/common.page.tsx b/packages/widget/src/pages/complete/pages/common.page.tsx index c2621c1f..cd1e4f9a 100644 --- a/packages/widget/src/pages/complete/pages/common.page.tsx +++ b/packages/widget/src/pages/complete/pages/common.page.tsx @@ -1,19 +1,15 @@ -import type { - ActionTypes, - TokenDto, - YieldDto, - YieldMetadataDto, -} from "@stakekit/api-hooks"; import { motion } from "motion/react"; import { Just, Maybe } from "purify-ts"; +import type { ComponentProps } from "react"; import { useTranslation } from "react-i18next"; import { Box } from "../../../components/atoms/box"; import { CheckCircleIcon } from "../../../components/atoms/icons/check-circle"; import { Image } from "../../../components/atoms/image"; -import { ImageFallback } from "../../../components/atoms/image-fallback"; import { TokenIcon } from "../../../components/atoms/token-icon"; import { Heading } from "../../../components/atoms/typography/heading"; import { Text } from "../../../components/atoms/typography/text"; +import type { YieldPendingActionType } from "../../../domain/types/pending-action"; +import type { TokenDto, YieldTokenDto } from "../../../domain/types/tokens"; import { type ExtendedYieldType, isEthenaUsdeStaking, @@ -28,11 +24,11 @@ import { } from "../state"; type Props = { - token: Maybe; - metadata: Maybe; + token: Maybe; + metadata: Maybe["metadata"]>; network: string; amount: string; - pendingActionType?: ActionTypes; + pendingActionType?: YieldPendingActionType; providersDetails: Maybe< { logo: string | undefined; @@ -40,7 +36,7 @@ type Props = { }[] >; yieldType: Maybe; - integrationId: YieldDto["id"]; + integrationId: string; }; export const CompletePageComponent = ({ @@ -133,7 +129,7 @@ export const CompletePageComponent = ({ tokenNetwork: network, pendingAction: t( `complete.pending_action.${ - pendingActionType?.toLowerCase() as Lowercase + pendingActionType?.toLowerCase() as Lowercase }` as const, { context: isEthenaUsdeStaking(integrationId) @@ -160,15 +156,10 @@ export const CompletePageComponent = ({ > {v.logo && ( - } + fallbackName={v.name || v.logo} /> )} @@ -201,12 +192,16 @@ export const CompletePageComponent = ({ {t("complete.view_transaction", { type: Just(val.type) - .map((v) => - t(`steps.tx_type.${v}`, { - context: isEthenaUsdeStaking(integrationId) - ? "ETHENA_USDE" - : undefined, - }) + .map( + (v) => + t( + `steps.tx_type.${v}` as never, + { + context: isEthenaUsdeStaking(integrationId) + ? "ETHENA_USDE" + : undefined, + } as never + ) as unknown as string ) .map(capitalizeFirstLowerRest) .extract(), diff --git a/packages/widget/src/pages/complete/pages/pending-complete.page.tsx b/packages/widget/src/pages/complete/pages/pending-complete.page.tsx index b47d1c11..f83fd03a 100644 --- a/packages/widget/src/pages/complete/pages/pending-complete.page.tsx +++ b/packages/widget/src/pages/complete/pages/pending-complete.page.tsx @@ -2,13 +2,14 @@ import { useSelector } from "@xstate/store/react"; import BigNumber from "bignumber.js"; import { Maybe } from "purify-ts"; import { useMemo } from "react"; +import { getYieldProviderDetails } from "../../../domain/types/yields"; import { useUnstakeOrPendingActionParams } from "../../../hooks/navigation/use-unstake-or-pending-action-params"; import { useTrackPage } from "../../../hooks/tracking/use-track-page"; import { usePositionBalances } from "../../../hooks/use-position-balances"; import { useProvidersDetails } from "../../../hooks/use-provider-details"; import { useYieldType } from "../../../hooks/use-yield-type"; import { usePendingActionStore } from "../../../providers/pending-action-store"; -import { formatNumber } from "../../../utils"; +import { defaultFormattedNumber } from "../../../utils"; import { CompletePage } from "./common.page"; export const PendingCompletePage = () => { @@ -44,14 +45,18 @@ export const PendingCompletePage = () => { selectedProviderYieldId: Maybe.empty(), }); - const metadata = integrationData.map((d) => d.metadata); + const metadata = integrationData.map((yieldDto) => ({ + logoURI: yieldDto.metadata.logoURI, + name: yieldDto.metadata.name, + provider: getYieldProviderDetails(yieldDto) ?? undefined, + })); const network = token.mapOrDefault((t) => t.symbol, ""); const amount = useMemo( () => - Maybe.fromNullable(pendingRequest.requestDto.args?.amount) + Maybe.fromNullable(pendingRequest.requestDto.arguments?.amount) .map((val) => new BigNumber(val ?? 0)) - .mapOrDefault((v) => formatNumber(v), ""), - [pendingRequest.requestDto.args?.amount] + .mapOrDefault((v) => defaultFormattedNumber(v), ""), + [pendingRequest.requestDto.arguments?.amount] ); const yieldType = useYieldType(integrationData).map((v) => v.type); diff --git a/packages/widget/src/pages/complete/pages/stake-complete.page.tsx b/packages/widget/src/pages/complete/pages/stake-complete.page.tsx index 04c70429..fcf4dffe 100644 --- a/packages/widget/src/pages/complete/pages/stake-complete.page.tsx +++ b/packages/widget/src/pages/complete/pages/stake-complete.page.tsx @@ -2,11 +2,12 @@ import { useSelector } from "@xstate/store/react"; import BigNumber from "bignumber.js"; import { Maybe } from "purify-ts"; import { useMemo } from "react"; +import { getYieldProviderDetails } from "../../../domain/types/yields"; import { useTrackPage } from "../../../hooks/tracking/use-track-page"; import { useProvidersDetails } from "../../../hooks/use-provider-details"; import { useYieldType } from "../../../hooks/use-yield-type"; import { useEnterStakeStore } from "../../../providers/enter-stake-store"; -import { formatNumber } from "../../../utils"; +import { defaultFormattedNumber } from "../../../utils"; import { CompletePage } from "./common.page"; export const StakeCompletePage = () => { @@ -27,20 +28,27 @@ export const StakeCompletePage = () => { [enterRequest.selectedToken] ); - const metadata = selectedStake.map((y) => y.metadata); + const metadata = selectedStake.map((yieldDto) => ({ + logoURI: yieldDto.metadata.logoURI, + name: yieldDto.metadata.name, + provider: getYieldProviderDetails(yieldDto) ?? undefined, + })); const network = selectedToken.mapOrDefault((y) => y.symbol, ""); const amount = useMemo( - () => formatNumber(new BigNumber(enterRequest.requestDto.args.amount)), - [enterRequest.requestDto.args.amount] + () => + defaultFormattedNumber( + new BigNumber(enterRequest.requestDto.arguments?.amount ?? 0) + ), + [enterRequest.requestDto.arguments?.amount] ); const yieldType = useYieldType(selectedStake).map((v) => v.type); const selectedProviderYieldId = useMemo( - () => Maybe.fromNullable(enterRequest.requestDto.args.providerId), - [enterRequest.requestDto.args.providerId] + () => Maybe.fromNullable(enterRequest.requestDto.arguments?.providerId), + [enterRequest.requestDto.arguments?.providerId] ); const providerDetails = useProvidersDetails({ diff --git a/packages/widget/src/pages/complete/pages/unstake-complete.page.tsx b/packages/widget/src/pages/complete/pages/unstake-complete.page.tsx index b6f5b2cd..9f9a81e5 100644 --- a/packages/widget/src/pages/complete/pages/unstake-complete.page.tsx +++ b/packages/widget/src/pages/complete/pages/unstake-complete.page.tsx @@ -1,13 +1,14 @@ import { useSelector } from "@xstate/store/react"; import { Maybe } from "purify-ts"; import { useMemo } from "react"; +import { getYieldProviderDetails } from "../../../domain/types/yields"; import { useUnstakeOrPendingActionParams } from "../../../hooks/navigation/use-unstake-or-pending-action-params"; import { useTrackPage } from "../../../hooks/tracking/use-track-page"; import { usePositionBalances } from "../../../hooks/use-position-balances"; import { useProvidersDetails } from "../../../hooks/use-provider-details"; import { useYieldType } from "../../../hooks/use-yield-type"; import { useExitStakeStore } from "../../../providers/exit-stake-store"; -import { formatNumber } from "../../../utils"; +import { defaultFormattedNumber } from "../../../utils"; import { CompletePage } from "./common.page"; export const UnstakeCompletePage = () => { @@ -42,11 +43,15 @@ export const UnstakeCompletePage = () => { [exitRequest.unstakeToken] ); - const metadata = integrationData.map((d) => d.metadata); + const metadata = integrationData.map((yieldDto) => ({ + logoURI: yieldDto.metadata.logoURI, + name: yieldDto.metadata.name, + provider: getYieldProviderDetails(yieldDto) ?? undefined, + })); const network = token.mapOrDefault((t) => t.symbol, ""); const amount = useMemo( - () => formatNumber(exitRequest.requestDto.args.amount), - [exitRequest.requestDto.args.amount] + () => defaultFormattedNumber(exitRequest.requestDto.arguments?.amount ?? 0), + [exitRequest.requestDto.arguments?.amount] ); const yieldType = useYieldType(integrationData).map((v) => v.type); diff --git a/packages/widget/src/pages/complete/state/index.tsx b/packages/widget/src/pages/complete/state/index.tsx index 8e6a6902..945e8827 100644 --- a/packages/widget/src/pages/complete/state/index.tsx +++ b/packages/widget/src/pages/complete/state/index.tsx @@ -1,5 +1,5 @@ -import type { TransactionType } from "@stakekit/api-hooks"; import { createContext, type PropsWithChildren, useContext } from "react"; +import type { TransactionType } from "../../../domain/types/action"; type CompleteCommonContextType = { urls: { @@ -11,7 +11,7 @@ type CompleteCommonContextType = { onViewTransactionClick: (url: string) => void; }; -export const CompleteCommonContext = createContext({ +const CompleteCommonContext = createContext({ urls: [], unstakeMatch: false, pendingActionMatch: false, diff --git a/packages/widget/src/pages/components/footer-outlet/index.tsx b/packages/widget/src/pages/components/footer-outlet/index.tsx index b5f26391..7256529d 100644 --- a/packages/widget/src/pages/components/footer-outlet/index.tsx +++ b/packages/widget/src/pages/components/footer-outlet/index.tsx @@ -121,23 +121,3 @@ export const AnimatedFooterContent = () => { return ; }; - -export const FooterContent = () => { - const [val] = useFooterButton(); - - const { containerRef } = useSyncFooterHeight(); - - const [, setFooterHeight] = useFooterHeight(); - - useEffect(() => { - !val && setFooterHeight(0); - }, [setFooterHeight, val]); - - if (!val) return null; - - return ( - - - - ); -}; diff --git a/packages/widget/src/pages/components/meta-info/index.tsx b/packages/widget/src/pages/components/meta-info/index.tsx index 408be515..406da3ca 100644 --- a/packages/widget/src/pages/components/meta-info/index.tsx +++ b/packages/widget/src/pages/components/meta-info/index.tsx @@ -1,4 +1,3 @@ -import type { TokenDto, ValidatorDto, YieldDto } from "@stakekit/api-hooks"; import type { Maybe } from "purify-ts"; import { type JSX, type ReactNode, useMemo } from "react"; import { Box } from "../../../components/atoms/box"; @@ -8,12 +7,15 @@ import { ClockClockWiseIcon } from "../../../components/atoms/icons/clock-clock- import { GifIcon } from "../../../components/atoms/icons/gift"; import { InfoIcon } from "../../../components/atoms/icons/info"; import { Text } from "../../../components/atoms/typography/text"; +import type { TokenDto } from "../../../domain/types/tokens"; +import type { ValidatorDto } from "../../../domain/types/validators"; +import type { Yield } from "../../../domain/types/yields"; import { useYieldMetaInfo } from "../../../hooks/use-yield-meta-info"; import { dotContainer, dotText } from "./styles.css"; type Props = { isLoading?: boolean; - selectedStake: Maybe; + selectedStake: Maybe; selectedValidators: Map; selectedToken: Maybe; }; diff --git a/packages/widget/src/pages/details/activity-page/activity.page.tsx b/packages/widget/src/pages/details/activity-page/activity.page.tsx index 94785722..f6b34cb0 100644 --- a/packages/widget/src/pages/details/activity-page/activity.page.tsx +++ b/packages/widget/src/pages/details/activity-page/activity.page.tsx @@ -8,12 +8,12 @@ import { PageContainer } from "../../components/page-container"; import { ActionListItem } from "./components/action-list-item"; import ListItemBullet from "./components/list-item-bullet"; import { useActivityPage } from "./hooks/use-activity-page"; +import { ItemBulletType } from "./item-bullet-type"; import { ActivityPageContextProvider } from "./state/activity-page.context"; -import { ItemBulletType } from "./state/types"; import { container, listItemWrapper } from "./style.css"; import { type ActionYieldDto, dateGroupLabels } from "./types"; -export const ActivityPageComponent = () => { +const ActivityPageComponent = () => { const { content, allData, diff --git a/packages/widget/src/pages/details/activity-page/components/action-list-item/index.tsx b/packages/widget/src/pages/details/activity-page/components/action-list-item/index.tsx index fdd550c0..07127712 100644 --- a/packages/widget/src/pages/details/activity-page/components/action-list-item/index.tsx +++ b/packages/widget/src/pages/details/activity-page/components/action-list-item/index.tsx @@ -1,4 +1,3 @@ -import type { ActionDto, YieldDto } from "@stakekit/api-hooks"; import { List } from "purify-ts"; import { useTranslation } from "react-i18next"; import { Box } from "../../../../../components/atoms/box"; @@ -6,6 +5,7 @@ import { ContentLoaderSquare } from "../../../../../components/atoms/content-loa import { ListItem } from "../../../../../components/atoms/list/list-item"; import { TokenIcon } from "../../../../../components/atoms/token-icon"; import { Text } from "../../../../../components/atoms/typography/text"; +import { getYieldProviderDetails } from "../../../../../domain/types/yields"; import { listItemContainer } from "../../../positions-page/style.css"; import { useActionListItem } from "../../hooks/use-action-list-item"; import { @@ -15,10 +15,7 @@ import { viaText, } from "../../style.css"; -type ActionYieldDto = { - actionData: ActionDto; - yieldData: YieldDto; -}; +import type { ActionYieldDto } from "../../types"; export const ActionListItem = ({ action, @@ -53,7 +50,14 @@ export const ActionListItem = ({ justifyContent="flex-start" alignItems="center" > - + { const providersDetails = useProvidersDetails({ integrationData, - validatorsAddresses: Maybe.of(action.actionData.validatorAddresses ?? []), + validatorsAddresses: Maybe.of( + getActionValidatorAddresses(action.actionData) ?? [] + ), selectedProviderYieldId: Maybe.empty(), }); diff --git a/packages/widget/src/pages/details/activity-page/hooks/use-activity-page.tsx b/packages/widget/src/pages/details/activity-page/hooks/use-activity-page.tsx index 3b97bca0..daa0e7a3 100644 --- a/packages/widget/src/pages/details/activity-page/hooks/use-activity-page.tsx +++ b/packages/widget/src/pages/details/activity-page/hooks/use-activity-page.tsx @@ -1,4 +1,4 @@ -import { useMemo } from "react"; +import { type ReactNode, useMemo } from "react"; import { useTranslation } from "react-i18next"; import { Box } from "../../../../components/atoms/box"; import { ContentLoaderSquare } from "../../../../components/atoms/content-loader"; @@ -6,9 +6,23 @@ import { Text } from "../../../../components/atoms/typography/text"; import { useTrackPage } from "../../../../hooks/tracking/use-track-page"; import { useSKWallet } from "../../../../providers/sk-wallet"; import { FallbackContent } from "../../positions-page/components/fallback-content"; +import type { ItemBulletType } from "../item-bullet-type"; import { useActivityPageContext } from "../state/activity-page.context"; +import type { ActionYieldDto } from "../types"; -export const useActivityPage = () => { +type UseActivityPageResult = { + content: ReactNode; + onActionSelect: (val: ActionYieldDto) => void; + labels: string[]; + counts: number[]; + bulletLines: ItemBulletType[]; + allData: ReturnType< + typeof useActivityPageContext + >["activityActions"]["allItems"]; + activityActions: ReturnType["activityActions"]; +}; + +export const useActivityPage = (): UseActivityPageResult => { useTrackPage("activity"); const { isConnected, isConnecting } = useSKWallet(); @@ -26,15 +40,24 @@ export const useActivityPage = () => { - - {t("dashboard.details.activity_connect_wallet")} - + + {t("dashboard.details.activity_connect_wallet")} + + + + ); } diff --git a/packages/widget/src/pages/details/activity-page/item-bullet-type.ts b/packages/widget/src/pages/details/activity-page/item-bullet-type.ts new file mode 100644 index 00000000..5fcd556e --- /dev/null +++ b/packages/widget/src/pages/details/activity-page/item-bullet-type.ts @@ -0,0 +1,18 @@ +export const ItemBulletType = { + ALONE: "alone", + FIRST: "first", + MIDDLE: "middle", + LAST: "last", +}; + +export type ItemBulletType = + (typeof ItemBulletType)[keyof typeof ItemBulletType]; + +export const createSubArray = (val: number): ItemBulletType[] => { + return Array.from({ length: val }, (_, i) => { + if (val === 1) return ItemBulletType.ALONE; + if (i === 0) return ItemBulletType.FIRST; + if (i === val - 1) return ItemBulletType.LAST; + return ItemBulletType.MIDDLE; + }); +}; diff --git a/packages/widget/src/pages/details/activity-page/state/activity-page.context.tsx b/packages/widget/src/pages/details/activity-page/state/activity-page.context.tsx index 269b0550..d51451b1 100644 --- a/packages/widget/src/pages/details/activity-page/state/activity-page.context.tsx +++ b/packages/widget/src/pages/details/activity-page/state/activity-page.context.tsx @@ -1,8 +1,3 @@ -import { - ActionStatus, - ActionTypes, - type TransactionType, -} from "@stakekit/api-hooks"; import { useConnectModal } from "@stakekit/rainbowkit"; import { Maybe } from "purify-ts"; import { @@ -13,12 +8,17 @@ import { } from "react"; import { useTranslation } from "react-i18next"; import { useNavigate } from "react-router"; +import { + ActionStatus, + type TransactionType, +} from "../../../../domain/types/action"; import { useActivityActions } from "../../../../hooks/api/use-activity-actions"; import { useActivityContext } from "../../../../providers/activity-provider"; import { useSKWallet } from "../../../../providers/sk-wallet"; -import { createSubArray, groupDateStrings } from "../../../../utils"; +import { groupDateStrings } from "../../../../utils"; +import { createSubArray, type ItemBulletType } from "../item-bullet-type"; import type { ActionYieldDto } from "../types"; -import type { ActivityPageContextType, ItemBulletType } from "./types"; +import type { ActivityPageContextType } from "./types"; export const ActivityPageContext = createContext< ActivityPageContextType | undefined @@ -55,9 +55,9 @@ export const ActivityPageContextProvider = ({ ); const path = - data.actionData.type === ActionTypes.UNSTAKE + data.actionData.type === "UNSTAKE" ? "unstake" - : data.actionData.type === ActionTypes.STAKE + : data.actionData.type === "STAKE" ? "stake" : "pending"; diff --git a/packages/widget/src/pages/details/activity-page/state/types.ts b/packages/widget/src/pages/details/activity-page/state/types.ts index 36e6883e..e90326f0 100644 --- a/packages/widget/src/pages/details/activity-page/state/types.ts +++ b/packages/widget/src/pages/details/activity-page/state/types.ts @@ -1,4 +1,5 @@ import type { useActivityActions } from "../../../../hooks/api/use-activity-actions"; +import type { ItemBulletType } from "../item-bullet-type"; import type { ActionYieldDto } from "../types"; export type ActivityPageContextType = { @@ -8,13 +9,3 @@ export type ActivityPageContextType = { counts: number[]; bulletLines: ItemBulletType[]; }; - -export const ItemBulletType = { - ALONE: "alone", - FIRST: "first", - MIDDLE: "middle", - LAST: "last", -}; - -export type ItemBulletType = - (typeof ItemBulletType)[keyof typeof ItemBulletType]; diff --git a/packages/widget/src/pages/details/activity-page/types.ts b/packages/widget/src/pages/details/activity-page/types.ts index b0ccb094..b62c78e2 100644 --- a/packages/widget/src/pages/details/activity-page/types.ts +++ b/packages/widget/src/pages/details/activity-page/types.ts @@ -1,9 +1,10 @@ -import type { ActionDto, YieldDto } from "@stakekit/api-hooks"; import type { TFunction } from "i18next"; +import type { ActionDto } from "../../../domain/types/action"; +import type { Yield } from "../../../domain/types/yields"; export type ActionYieldDto = { actionData: ActionDto; - yieldData: YieldDto; + yieldData: Yield; }; type DateGroupLabels = "today" | "yesterday" | string; diff --git a/packages/widget/src/pages/details/details-page/components/tabs.tsx b/packages/widget/src/pages/details/details-page/components/tabs.tsx index 9ff6a51e..409869a5 100644 --- a/packages/widget/src/pages/details/details-page/components/tabs.tsx +++ b/packages/widget/src/pages/details/details-page/components/tabs.tsx @@ -19,11 +19,11 @@ const TABS_MAP = { activity: "/activity", }; -export type TabsProps = { +type TabsProps = { pendingActionsCount?: number; }; -export const Tabs = ({ pendingActionsCount }: TabsProps) => { +const Tabs = ({ pendingActionsCount }: TabsProps) => { const trackEvent = useTrackEvent(); const navigate = useNavigate(); diff --git a/packages/widget/src/pages/details/earn-page/components/extra-args-selection/index.tsx b/packages/widget/src/pages/details/earn-page/components/extra-args-selection/index.tsx index a72c95d1..08dd056d 100644 --- a/packages/widget/src/pages/details/earn-page/components/extra-args-selection/index.tsx +++ b/packages/widget/src/pages/details/earn-page/components/extra-args-selection/index.tsx @@ -1,9 +1,10 @@ -import type { TronResourceType } from "@stakekit/api-hooks"; import { useTranslation } from "react-i18next"; import { Box } from "../../../../../components/atoms/box"; import { Divider } from "../../../../../components/atoms/divider"; import { Dropdown } from "../../../../../components/atoms/dropdown"; import { Text } from "../../../../../components/atoms/typography/text"; +import type { TronResourceType } from "../../../../../domain/types/tron"; +import { getYieldActionArg } from "../../../../../domain/types/yields"; import { useIsDashboard } from "../../../../../pages-dashboard/providers/dashboard-context"; import { useEarnPageContext } from "../../state/earn-page-context"; @@ -16,9 +17,9 @@ export const ExtraArgsSelection = () => { const isDashboard = useIsDashboard(); return selectedStake - .chainNullable((ss) => ss.args.enter.args?.tronResource) + .chainNullable((ss) => getYieldActionArg(ss, "enter", "tronResource")) .map((tronResources) => { - const options = tronResources.options.map((v) => ({ + const options = (tronResources.options ?? []).map((v) => ({ label: v, value: v as TronResourceType, })); diff --git a/packages/widget/src/pages/details/earn-page/components/select-provider/index.tsx b/packages/widget/src/pages/details/earn-page/components/select-provider/index.tsx index 93019a48..3531d97a 100644 --- a/packages/widget/src/pages/details/earn-page/components/select-provider/index.tsx +++ b/packages/widget/src/pages/details/earn-page/components/select-provider/index.tsx @@ -5,10 +5,13 @@ import { Box } from "../../../../../components/atoms/box"; import { ContentLoaderSquare } from "../../../../../components/atoms/content-loader"; import { CaretDownIcon } from "../../../../../components/atoms/icons/caret-down"; import { Image } from "../../../../../components/atoms/image"; -import { ImageFallback } from "../../../../../components/atoms/image-fallback"; import { Text } from "../../../../../components/atoms/typography/text"; import { SelectYield } from "../../../../../components/molecules/select-yield"; -import { getYieldProviderYieldIds } from "../../../../../domain/types/yields"; +import { + getYieldProviderDetails, + getYieldProviderYieldIds, + isYieldWithProviderOptions, +} from "../../../../../domain/types/yields"; import { useMultiYields } from "../../../../../hooks/api/use-multi-yields"; import { useEarnPageContext } from "../../state/earn-page-context"; import { @@ -26,7 +29,7 @@ export const SelectProvider = () => { const { t } = useTranslation(); const providerYieldIdOptions = selectedStake - .filter((ss) => !!ss.args.enter.args?.providerId?.required) + .filter(isYieldWithProviderOptions) .map(getYieldProviderYieldIds); const yields = useMultiYields(providerYieldIdOptions.orDefault([])); @@ -38,16 +41,25 @@ export const SelectProvider = () => { val.yields.find((v) => v.id === val.selectedProviderYieldId) ); + const providerSelection = Maybe.fromRecord({ + selectedStake, + providerYieldIdOptions, + selectedProviderYield, + }).chain((val) => + Maybe.fromNullable(getYieldProviderDetails(val.selectedProviderYield)).map( + (provider) => ({ + ...val, + provider, + }) + ) + ); + return appLoading ? ( ) : ( - Maybe.fromRecord({ - selectedStake, - providerYieldIdOptions, - selectedProviderYield, - }) + providerSelection .map((val) => ( @@ -71,32 +83,15 @@ export const SelectProvider = () => { > - - - } + wrapperProps={{ hw: "5" }} + imgProps={{ borderRadius: "full" }} + src={val.provider.logoURI} + fallbackName={val.provider.name} /> - {val.selectedProviderYield.metadata.provider?.name} + {val.provider.name} diff --git a/packages/widget/src/pages/details/earn-page/components/select-token-section/index.tsx b/packages/widget/src/pages/details/earn-page/components/select-token-section/index.tsx index 80567ff4..1fed6f5d 100644 --- a/packages/widget/src/pages/details/earn-page/components/select-token-section/index.tsx +++ b/packages/widget/src/pages/details/earn-page/components/select-token-section/index.tsx @@ -194,7 +194,10 @@ export const SelectTokenSection = () => { }} data-state={errorBalance ? "error" : "valid"} className={clsx( - combineRecipeWithVariant({ rec: selectTokenBalance, variant }) + combineRecipeWithVariant({ + rec: selectTokenBalance, + variant, + }) )} > {selectedTokenAvailableAmount diff --git a/packages/widget/src/pages/details/earn-page/components/select-token-section/select-token-list-item.tsx b/packages/widget/src/pages/details/earn-page/components/select-token-section/select-token-list-item.tsx index d16258a4..1fcf3faf 100644 --- a/packages/widget/src/pages/details/earn-page/components/select-token-section/select-token-list-item.tsx +++ b/packages/widget/src/pages/details/earn-page/components/select-token-section/select-token-list-item.tsx @@ -1,4 +1,3 @@ -import type { TokenBalanceScanResponseDto } from "@stakekit/api-hooks"; import BigNumber from "bignumber.js"; import type { ComponentProps } from "react"; import { memo, useMemo } from "react"; @@ -9,6 +8,7 @@ import { } from "../../../../../components/atoms/select-modal"; import { TokenIcon } from "../../../../../components/atoms/token-icon"; import { Text } from "../../../../../components/atoms/typography/text"; +import type { TokenBalanceScanResponseDto } from "../../../../../domain/types/token-balance"; import { useTrackEvent } from "../../../../../hooks/tracking/use-track-event"; import { defaultFormattedNumber } from "../../../../../utils"; import { selectItemText } from "../../styles.css"; diff --git a/packages/widget/src/pages/details/earn-page/components/select-token-section/title.tsx b/packages/widget/src/pages/details/earn-page/components/select-token-section/title.tsx index c54fc912..05cf4af2 100644 --- a/packages/widget/src/pages/details/earn-page/components/select-token-section/title.tsx +++ b/packages/widget/src/pages/details/earn-page/components/select-token-section/title.tsx @@ -12,7 +12,6 @@ export const SelectTokenTitle = () => { yieldType, selectTokenIsLoading, selectYieldIsLoading, - selectValidatorIsLoading, footerIsLoading, } = useEarnPageContext(); @@ -20,7 +19,6 @@ export const SelectTokenTitle = () => { appLoading || selectTokenIsLoading || selectYieldIsLoading || - selectValidatorIsLoading || footerIsLoading; const { variant } = useSettings(); diff --git a/packages/widget/src/pages/details/earn-page/components/select-validator-section/index.tsx b/packages/widget/src/pages/details/earn-page/components/select-validator-section/index.tsx index def33fb8..4f72b879 100644 --- a/packages/widget/src/pages/details/earn-page/components/select-validator-section/index.tsx +++ b/packages/widget/src/pages/details/earn-page/components/select-validator-section/index.tsx @@ -2,7 +2,10 @@ import { Maybe } from "purify-ts"; import { Box } from "../../../../../components/atoms/box"; import { ContentLoaderSquare } from "../../../../../components/atoms/content-loader"; import { SelectValidator } from "../../../../../components/molecules/select-validator"; -import { isYieldWithProviderOptions } from "../../../../../domain/types/yields"; +import { + isYieldActionArgRequired, + isYieldWithProviderOptions, +} from "../../../../../domain/types/yields"; import { SelectValidatorTrigger } from "./select-validator-trigger"; import { useSelectValidator } from "./use-select-validator"; @@ -27,12 +30,15 @@ export const SelectValidatorSection = () => { ) : ( Maybe.fromRecord({ selectedStake, validatorsData }) - .filter((val) => !!val.selectedStake.validators.length) + .filter((val) => !!val.validatorsData.length) .map((val) => { const selectedValidatorsArr = [...selectedValidators.values()]; - const multiSelect = - !!val.selectedStake.args.enter.args?.validatorAddresses?.required; + const multiSelect = isYieldActionArgRequired( + val.selectedStake, + "enter", + "validatorAddresses" + ); return ( - - - } + wrapperProps={{ hw: "5" }} + imgProps={{ borderRadius: "full" }} + src={sv.logoURI} + fallbackName={nameOrAddress} /> diff --git a/packages/widget/src/pages/details/earn-page/components/select-validator-section/use-select-validator.ts b/packages/widget/src/pages/details/earn-page/components/select-validator-section/use-select-validator.ts index d4ccadc8..1ae82740 100644 --- a/packages/widget/src/pages/details/earn-page/components/select-validator-section/use-select-validator.ts +++ b/packages/widget/src/pages/details/earn-page/components/select-validator-section/use-select-validator.ts @@ -1,4 +1,4 @@ -import type { ValidatorDto } from "@stakekit/api-hooks"; +import type { ValidatorDto } from "../../../../../domain/types/validators"; import { useTrackEvent } from "../../../../../hooks/tracking/use-track-event"; import { useEarnPageContext } from "../../state/earn-page-context"; diff --git a/packages/widget/src/pages/details/earn-page/components/select-yield-section/index.tsx b/packages/widget/src/pages/details/earn-page/components/select-yield-section/index.tsx index b12f36b0..1d670230 100644 --- a/packages/widget/src/pages/details/earn-page/components/select-yield-section/index.tsx +++ b/packages/widget/src/pages/details/earn-page/components/select-yield-section/index.tsx @@ -5,6 +5,8 @@ import { ContentLoaderSquare } from "../../../../../components/atoms/content-loa import { Divider } from "../../../../../components/atoms/divider"; import { ToolTip } from "../../../../../components/atoms/tooltip"; import { Text } from "../../../../../components/atoms/typography/text"; +import { YieldRiskRatingSummary } from "../../../../../components/molecules/yield-risk"; +import { getYieldRewardType } from "../../../../../domain/types/yields"; import { useSettings } from "../../../../../providers/settings"; import { combineRecipeWithVariant } from "../../../../../utils/styles"; import { useEarnPageContext } from "../../state/earn-page-context"; @@ -30,6 +32,9 @@ export const SelectYieldSection = () => { const isLoading = appLoading || selectYieldIsLoading; const yieldPerc = useAnimateYieldPercent(estimatedRewards); + const riskSummary = selectedStake + .map((yieldDto) => ) + .extractNullable(); return isLoading ? ( @@ -85,7 +90,7 @@ export const SelectYieldSection = () => { data-testid="estimated-reward__percent" > {selectedStake - .filter((pd) => pd.rewardType === "variable") + .filter((pd) => getYieldRewardType(pd) === "variable") .map(() => ( { {variant !== "zerion" && } + {variant !== "zerion" && riskSummary} + {variant === "zerion" && ( + {riskSummary} + )} diff --git a/packages/widget/src/pages/details/earn-page/components/select-yield-section/select-opportunity.tsx b/packages/widget/src/pages/details/earn-page/components/select-yield-section/select-opportunity.tsx index 7dd35396..3118a9ac 100644 --- a/packages/widget/src/pages/details/earn-page/components/select-yield-section/select-opportunity.tsx +++ b/packages/widget/src/pages/details/earn-page/components/select-yield-section/select-opportunity.tsx @@ -13,6 +13,7 @@ import { ProviderIcon } from "../../../../../components/atoms/token-icon/provide import { Text } from "../../../../../components/atoms/typography/text"; import { GroupedVirtualList } from "../../../../../components/atoms/virtual-list"; import { SelectOpportunityListItem } from "../../../../../components/molecules/select-opportunity-list-item"; +import { getYieldProviderDetails } from "../../../../../domain/types/yields"; import { useTrackEvent } from "../../../../../hooks/tracking/use-track-event"; import { useSettings } from "../../../../../providers/settings"; import { combineRecipeWithVariant } from "../../../../../utils/styles"; @@ -82,7 +83,14 @@ export const SelectOpportunity = () => { justifyContent="center" alignItems="center" > - + {data.ss.token.symbol} diff --git a/packages/widget/src/pages/details/earn-page/components/select-yield-section/select-yield-reward-details.tsx b/packages/widget/src/pages/details/earn-page/components/select-yield-section/select-yield-reward-details.tsx index 031a622a..2c7cdf9d 100644 --- a/packages/widget/src/pages/details/earn-page/components/select-yield-section/select-yield-reward-details.tsx +++ b/packages/widget/src/pages/details/earn-page/components/select-yield-section/select-yield-reward-details.tsx @@ -3,12 +3,13 @@ import { Trans, useTranslation } from "react-i18next"; import { Box } from "../../../../../components/atoms/box"; import { MorphoStarsIcon } from "../../../../../components/atoms/icons/morpho-stars"; import { Image } from "../../../../../components/atoms/image"; -import { ImageFallback } from "../../../../../components/atoms/image-fallback"; import { Text } from "../../../../../components/atoms/typography/text"; +import { RewardRateBreakdown } from "../../../../../components/molecules/reward-rate-breakdown"; import { isMorphoProvider, RewardTokenDetails, } from "../../../../../components/molecules/reward-token-details"; +import { getYieldRewardRateDetails } from "../../../../../domain/types/reward-rate"; import { VerticalDivider } from "../../../../../pages-dashboard/common/components/divider"; import { useSettings } from "../../../../../providers/settings"; import { combineRecipeWithVariant } from "../../../../../utils/styles"; @@ -17,10 +18,15 @@ import { selectYieldRewardsText } from "./styles.css"; export const SelectYieldRewardDetails = () => { const { variant } = useSettings(); + const { t } = useTranslation(); - const { rewardToken, estimatedRewards, rewardsTokenSymbol } = + const { rewardToken, estimatedRewards, rewardsTokenSymbol, selectedStake } = useEarnPageContext(); + const rewardRateDetails = selectedStake.chainNullable( + getYieldRewardRateDetails + ); + const earnYearly = estimatedRewards.mapOrDefault( (e) => `${e.yearly} ${rewardsTokenSymbol}`, "" @@ -76,15 +82,10 @@ export const SelectYieldRewardDetails = () => { gap="1" > - } + fallbackName={rt.providerName} /> {isMorphoProvider(rt.providerName) && ( @@ -113,6 +114,17 @@ export const SelectYieldRewardDetails = () => { earnYearly={earnYearly} /> )} + + {rewardRateDetails + .map((rewardRate) => ( + + )) + .extractNullable()} ); diff --git a/packages/widget/src/pages/details/earn-page/components/select-yield-section/staked-via.tsx b/packages/widget/src/pages/details/earn-page/components/select-yield-section/staked-via.tsx index da8af183..3b83a3c4 100644 --- a/packages/widget/src/pages/details/earn-page/components/select-yield-section/staked-via.tsx +++ b/packages/widget/src/pages/details/earn-page/components/select-yield-section/staked-via.tsx @@ -1,8 +1,12 @@ import { useTranslation } from "react-i18next"; import { Box } from "../../../../../components/atoms/box"; import { Image } from "../../../../../components/atoms/image"; -import { ImageFallback } from "../../../../../components/atoms/image-fallback"; import { Text } from "../../../../../components/atoms/typography/text"; +import { + getBaseYieldType, + getYieldProviderDetails, + isYieldActionArgRequired, +} from "../../../../../domain/types/yields"; import { useEarnPageContext } from "../../state/earn-page-context"; export const StakedVia = () => { @@ -14,12 +18,13 @@ export const StakedVia = () => { .filter( (val) => !!( - val.metadata.type === "staking" && - !val.validators.length && - val.metadata.provider + getBaseYieldType(val) === "staking" && + !isYieldActionArgRequired(val, "enter", "validatorAddress") && + !isYieldActionArgRequired(val, "enter", "validatorAddresses") && + getYieldProviderDetails(val) ) ) - .chainNullable((val) => val.metadata.provider) + .chainNullable((val) => getYieldProviderDetails(val)) .map((val) => ( { } + fallbackName={val.name} /> )) diff --git a/packages/widget/src/pages/details/earn-page/components/select-yield-section/use-animate-yield-percent.ts b/packages/widget/src/pages/details/earn-page/components/select-yield-section/use-animate-yield-percent.ts index b9e392ca..01dfaeea 100644 --- a/packages/widget/src/pages/details/earn-page/components/select-yield-section/use-animate-yield-percent.ts +++ b/packages/widget/src/pages/details/earn-page/components/select-yield-section/use-animate-yield-percent.ts @@ -1,6 +1,7 @@ import { animate, useMotionValue, useTransform } from "motion/react"; import { useEffect } from "react"; import { config } from "../../../../../config"; +import { APToPercentage } from "../../../../../utils"; import type { EarnPageContextType } from "../../state/types"; export const useAnimateYieldPercent = ( @@ -8,11 +9,14 @@ export const useAnimateYieldPercent = ( ) => { const perReward = estimatedRewards .map((val) => { - const parsedNum = Number.parseFloat(val.percentage); - - if (Number.isNaN(parsedNum)) return val.percentage; - - return parsedNum; + if ( + val.rewardType === "variable" || + !val.rewardRateAverage.isPositive() + ) { + return "- %"; + } + + return val.rewardRateAverage.toNumber(); }) .extractNullable(); @@ -33,7 +37,7 @@ export const useAnimateYieldPercent = ( const transformedMotionValue = useTransform( rewardPercMotionValue, - (val) => `${val.toFixed(2)}%` + (val) => `${APToPercentage(val)}%` ); return typeof perReward === "string" || config.env.isTestMode diff --git a/packages/widget/src/pages/details/earn-page/earn.page.tsx b/packages/widget/src/pages/details/earn-page/earn.page.tsx index 51b91ae8..156d4b55 100644 --- a/packages/widget/src/pages/details/earn-page/earn.page.tsx +++ b/packages/widget/src/pages/details/earn-page/earn.page.tsx @@ -67,7 +67,7 @@ const EarnPageComponent = () => { ); }; -export const EarnPage = () => ( +const EarnPage = () => ( diff --git a/packages/widget/src/pages/details/earn-page/state/earn-page-context.tsx b/packages/widget/src/pages/details/earn-page/state/earn-page-context.tsx index b08348e3..e687acee 100644 --- a/packages/widget/src/pages/details/earn-page/state/earn-page-context.tsx +++ b/packages/widget/src/pages/details/earn-page/state/earn-page-context.tsx @@ -1,9 +1,3 @@ -import type { - TokenBalanceScanResponseDto, - TronResourceType, - ValidatorDto, - YieldDto, -} from "@stakekit/api-hooks"; import { useConnectModal } from "@stakekit/rainbowkit"; import { useMutation } from "@tanstack/react-query"; import BigNumber from "bignumber.js"; @@ -16,6 +10,7 @@ import { useDeferredValue, useEffect, useMemo, + useRef, useState, } from "react"; import { useTranslation } from "react-i18next"; @@ -26,24 +21,33 @@ import { stakeTokenSameAsGasToken, tokenString, } from "../../../../domain"; +import { getInitSelectedValidators } from "../../../../domain/types/stake"; +import type { TokenBalanceScanResponseDto } from "../../../../domain/types/token-balance"; +import type { TronResourceType } from "../../../../domain/types/tron"; +import type { ValidatorDto } from "../../../../domain/types/validators"; import { type ExtendedYieldType, getExtendedYieldType, + getYieldRewardTokens, getYieldTypeLabels, getYieldTypesSortRank, isBittensorStaking, isNonZeroRewardRateYield, + isYieldActionArgRequired, + isYieldValidatorSelectionRequired, + type Yield, } from "../../../../domain/types/yields"; import { useDefaultTokens } from "../../../../hooks/api/use-default-tokens"; import { useStreamMultiYields } from "../../../../hooks/api/use-multi-yields"; import { useTokenBalancesScan } from "../../../../hooks/api/use-token-balances-scan"; import { useTokensPrices } from "../../../../hooks/api/use-tokens-prices"; import { useYieldOpportunity } from "../../../../hooks/api/use-yield-opportunity"; +import { useYieldValidators } from "../../../../hooks/api/use-yield-validators"; import { useNavigateWithScrollToTop } from "../../../../hooks/navigation/use-navigate-with-scroll-to-top"; import { useTrackEvent } from "../../../../hooks/tracking/use-track-event"; import { useAddLedgerAccount } from "../../../../hooks/use-add-ledger-account"; -import { useBaseToken } from "../../../../hooks/use-base-token"; import { useEstimatedRewards } from "../../../../hooks/use-estimated-rewards"; +import { useInitParams } from "../../../../hooks/use-init-params"; import { useMaxMinYieldAmount } from "../../../../hooks/use-max-min-yield-amount"; import { usePositionsData } from "../../../../hooks/use-positions-data"; import { useProvidersDetails } from "../../../../hooks/use-provider-details"; @@ -92,8 +96,7 @@ export const EarnPageContextProvider = ({ children }: PropsWithChildren) => { const dispatch = useEarnPageDispatch(); const { t } = useTranslation(); - - const baseToken = useBaseToken(selectedStake); + const initParams = useInitParams(); const { externalProviders, variant } = useSettings(); @@ -118,7 +121,7 @@ export const EarnPageContextProvider = ({ children }: PropsWithChildren) => { const pointsRewardTokens = useMemo( () => selectedStake - .chainNullable((val) => val.metadata.rewardTokens) + .map(getYieldRewardTokens) .map((val) => val.filter((rt) => rt.isPoints)), [selectedStake] ); @@ -143,11 +146,11 @@ export const EarnPageContextProvider = ({ children }: PropsWithChildren) => { Maybe.fromRecord({ prices: Maybe.fromNullable(pricesState.data), selectedToken, - baseToken, + selectedStake, }) .map((val) => getTokenPriceInUSD({ - baseToken: val.baseToken, + baseToken: val.selectedStake.token, amount: stakeAmount, token: val.selectedToken, prices: val.prices, @@ -155,7 +158,7 @@ export const EarnPageContextProvider = ({ children }: PropsWithChildren) => { }) ) .mapOrDefault((v) => `$${defaultFormattedNumber(v)}`, ""), - [baseToken, pricesState.data, selectedToken, stakeAmount] + [pricesState.data, selectedToken, stakeAmount, selectedStake] ); const selectedTokenAvailableAmount = useMemo( @@ -236,7 +239,9 @@ export const EarnPageContextProvider = ({ children }: PropsWithChildren) => { const selectedStakeData = useMemo>( () => Maybe.of(multiYields) - .map((val) => [...val].sort((a, b) => b.rewardRate - a.rewardRate)) + .map((val) => + [...val].sort((a, b) => b.rewardRate.total - a.rewardRate.total) + ) .map((val) => val.filter(isNonZeroRewardRateYield)) .chain((yieldDtos) => Maybe.of(deferredStakeSearch) @@ -250,7 +255,7 @@ export const EarnPageContextProvider = ({ children }: PropsWithChildren) => { d.token.name.toLowerCase().includes(lowerSearch) || d.token.symbol.toLowerCase().includes(lowerSearch) || d.metadata.name.toLowerCase().includes(lowerSearch) || - d.metadata.rewardTokens?.some( + getYieldRewardTokens(d).some( (rt) => rt.name.toLowerCase().includes(lowerSearch) || rt.symbol.toLowerCase().includes(lowerSearch) @@ -276,7 +281,7 @@ export const EarnPageContextProvider = ({ children }: PropsWithChildren) => { items: [curr], }); } else { - acc.get(extendedYieldType)!.items.push(curr); + acc.get(extendedYieldType)?.items.push(curr); } return acc; @@ -286,7 +291,7 @@ export const EarnPageContextProvider = ({ children }: PropsWithChildren) => { { type: ExtendedYieldType; title: ReturnType["title"]; - items: YieldDto[]; + items: Yield[]; } >() ) @@ -314,30 +319,106 @@ export const EarnPageContextProvider = ({ children }: PropsWithChildren) => { [deferredStakeSearch, multiYields, t] ); + const shouldFetchValidators = selectedStake + .map(isYieldValidatorSelectionRequired) + .orDefault(false); + + const yieldValidators = useYieldValidators({ + enabled: shouldFetchValidators, + yieldId: selectedStake.extract()?.id, + network: selectedStake.extract()?.token.network, + }); + + const initialValidatorSelectionYieldIdRef = useRef(null); + + useEffect(() => { + const currentYieldId = selectedStake.map((val) => val.id).extractNullable(); + + if (!currentYieldId) { + initialValidatorSelectionYieldIdRef.current = null; + return; + } + + if (selectedValidators.size > 0) { + initialValidatorSelectionYieldIdRef.current = currentYieldId; + return; + } + + const shouldSelectDefaultValidator = selectedStake + .map(isYieldValidatorSelectionRequired) + .orDefault(false); + + if (!shouldSelectDefaultValidator) { + return; + } + + if (initialValidatorSelectionYieldIdRef.current === currentYieldId) { + return; + } + + if (!yieldValidators.isFetched && !yieldValidators.isError) { + return; + } + + initialValidatorSelectionYieldIdRef.current = currentYieldId; + + const nextValidator = List.head([ + ...getInitSelectedValidators({ + initQueryParams: Maybe.fromNullable(initParams.data), + validators: yieldValidators.data ?? [], + }).values(), + ]).extractNullable(); + + if (nextValidator) { + dispatch({ type: "validator/select", data: nextValidator }); + } + }, [ + dispatch, + initParams.data, + selectedStake, + selectedValidators, + yieldValidators.data, + yieldValidators.isError, + yieldValidators.isFetched, + ]); + const validatorsData = useMemo( () => - selectedStake.chain((ss) => - Maybe.fromNullable(deferredValidatorSearch) - .map((val) => val.toLowerCase()) - .map((searchInput) => - ss.validators.filter( - (validator) => - validator.name?.toLowerCase().includes(searchInput) || - validator.address.toLowerCase().includes(searchInput) - ) - ) - .alt(Maybe.of(ss.validators)) - .map((validators) => { - if (variant === "utila" || variant === "porto") { - return [...validators].sort( - (a, b) => (b.apr ?? 0) - (a.apr ?? 0) + selectedStake + .filter(() => shouldFetchValidators) + .chain(() => + Maybe.fromNullable(yieldValidators.data) + .map((validators) => { + const searchInput = deferredValidatorSearch.toLowerCase(); + + if (!searchInput) { + return validators; + } + + return validators.filter( + (validator) => + validator.name?.toLowerCase().includes(searchInput) || + validator.address.toLowerCase().includes(searchInput) ); - } + }) + .map((validators) => { + if (variant === "utila" || variant === "porto") { + return [...validators].sort( + (a, b) => + (b.rewardRate?.total ?? 0) - (a.rewardRate?.total ?? 0) + ); + } - return validators; - }) - ), - [deferredValidatorSearch, selectedStake, variant] + return validators; + }) + ), + [ + deferredValidatorSearch, + selectedStake, + shouldFetchValidators, + variant, + yieldValidators.data, + ] ); const onYieldSearch: SelectModalProps["onSearch"] = (val) => @@ -363,7 +444,7 @@ export const EarnPageContextProvider = ({ children }: PropsWithChildren) => { const onValidatorSelect = (item: ValidatorDto) => selectedStake.ifJust((ss) => - ss.args.enter.args?.validatorAddresses?.required + isYieldActionArgRequired(ss, "enter", "validatorAddresses") ? dispatch({ type: "validator/multiselect", data: item }) : dispatch({ type: "validator/select", data: item }) ); @@ -384,6 +465,7 @@ export const EarnPageContextProvider = ({ children }: PropsWithChildren) => { const onClickHandler = useMutation({ mutationFn: async () => { if (validation.hasErrors) return; + if (stakeEnterRequestDto.isNothing()) return; if (!isConnected) return openConnectModal?.(); @@ -395,6 +477,7 @@ export const EarnPageContextProvider = ({ children }: PropsWithChildren) => { enterStakeStore.send({ type: "initFlow", data: { + addresses: val.stakeEnterRequestDto.addresses, requestDto: val.stakeEnterRequestDto.dto, selectedToken: val.selectedToken, gasFeeToken: val.stakeEnterRequestDto.gasFeeToken, @@ -430,7 +513,7 @@ export const EarnPageContextProvider = ({ children }: PropsWithChildren) => { selectedStake.ifJust((ss) => { if ( - ss.args.enter.args?.tronResource?.required && + isYieldActionArgRequired(ss, "enter", "tronResource") && tronResource.isNothing() ) { val.errors.tronResource = true; @@ -583,7 +666,9 @@ export const EarnPageContextProvider = ({ children }: PropsWithChildren) => { defaultTokensIsLoading || tokenBalancesScanLoading || initYieldRes.isLoading || - yieldOpportunityLoading; + yieldOpportunityLoading || + (shouldFetchValidators && + (yieldValidators.isLoading || yieldValidators.isFetching)); const footerIsLoading = defaultTokensIsLoading || diff --git a/packages/widget/src/pages/details/earn-page/state/earn-page-state-context.tsx b/packages/widget/src/pages/details/earn-page/state/earn-page-state-context.tsx index 1b12b3a8..850ecd2b 100644 --- a/packages/widget/src/pages/details/earn-page/state/earn-page-state-context.tsx +++ b/packages/widget/src/pages/details/earn-page/state/earn-page-state-context.tsx @@ -1,5 +1,3 @@ -import type { TokenDto, YieldDto } from "@stakekit/api-hooks"; -import type { Networks } from "@stakekit/common"; import BigNumber from "bignumber.js"; import { Maybe } from "purify-ts"; import type { Dispatch, PropsWithChildren } from "react"; @@ -12,9 +10,11 @@ import { useReducer, } from "react"; import { equalTokens } from "../../../../domain"; +import type { Networks } from "../../../../domain/types/chains/networks"; import { isNetworkWithEnterMinBasedOnPosition } from "../../../../domain/types/stake"; +import type { TokenDto } from "../../../../domain/types/tokens"; +import type { Yield } from "../../../../domain/types/yields"; import { useYieldOpportunity } from "../../../../hooks/api/use-yield-opportunity"; -import { useInitParams } from "../../../../hooks/use-init-params"; import { useMaxMinYieldAmount } from "../../../../hooks/use-max-min-yield-amount"; import { usePositionsData } from "../../../../hooks/use-positions-data"; import { useSavedRef } from "../../../../hooks/use-saved-ref"; @@ -51,12 +51,12 @@ const getInitialState = (): State => ({ selectedStakeId: Maybe.empty(), selectedValidators: new Map(), stakeAmount: new BigNumber(0), + useMaxAmount: false, tronResource: Maybe.empty(), selectedProviderYieldId: Maybe.empty(), }); export const EarnPageStateProvider = ({ children }: PropsWithChildren) => { - const initParams = useInitParams(); const { network, isConnected } = useSKWallet(); const getInitYield = useGetInitYield(); @@ -75,7 +75,6 @@ export const EarnPageStateProvider = ({ children }: PropsWithChildren) => { getInitYield({ selectedToken: action.data }) .map | null>((val) => onYieldSelectState({ - initParams: Maybe.fromNullable(initParams.data), yieldDto: val, positionsData: positionsData.data, }) @@ -96,7 +95,6 @@ export const EarnPageStateProvider = ({ children }: PropsWithChildren) => { ) .map(() => onYieldSelectState({ - initParams: Maybe.fromNullable(initParams.data), yieldDto: action.data, positionsData: positionsData.data, }) @@ -154,6 +152,7 @@ export const EarnPageStateProvider = ({ children }: PropsWithChildren) => { return { ...state, stakeAmount: action.data, + useMaxAmount: false, }; } @@ -161,6 +160,7 @@ export const EarnPageStateProvider = ({ children }: PropsWithChildren) => { return { ...state, stakeAmount: action.data, + useMaxAmount: true, }; } @@ -184,6 +184,7 @@ export const EarnPageStateProvider = ({ children }: PropsWithChildren) => { selectedStakeId, selectedValidators, stakeAmount: _stakeAmount, + useMaxAmount, tronResource, selectedProviderYieldId, } = state; @@ -233,7 +234,7 @@ export const EarnPageStateProvider = ({ children }: PropsWithChildren) => { ); const setYield = useCallback( - (yieldDto: YieldDto) => dispatch({ type: "yield/select", data: yieldDto }), + (yieldDto: Yield) => dispatch({ type: "yield/select", data: yieldDto }), [] ); @@ -344,6 +345,7 @@ export const EarnPageStateProvider = ({ children }: PropsWithChildren) => { selectedStake, selectedValidators, stakeAmount, + useMaxAmount, actions, tronResource, stakeAmountGreaterThanAvailableAmount, @@ -362,6 +364,7 @@ export const EarnPageStateProvider = ({ children }: PropsWithChildren) => { selectedToken, selectedValidators, stakeAmount, + useMaxAmount, actions, tronResource, stakeAmountGreaterThanAvailableAmount, diff --git a/packages/widget/src/pages/details/earn-page/state/types.ts b/packages/widget/src/pages/details/earn-page/state/types.ts index b81bc4bd..5fd3000a 100644 --- a/packages/widget/src/pages/details/earn-page/state/types.ts +++ b/packages/widget/src/pages/details/earn-page/state/types.ts @@ -1,12 +1,10 @@ -import type { - TokenBalanceScanResponseDto, - TokenDto, - TronResourceType, - ValidatorDto, - YieldDto, -} from "@stakekit/api-hooks"; import type BigNumber from "bignumber.js"; import type { Maybe } from "purify-ts"; +import type { TokenBalanceScanResponseDto } from "../../../../domain/types/token-balance"; +import type { TokenDto } from "../../../../domain/types/tokens"; +import type { TronResourceType } from "../../../../domain/types/tron"; +import type { ValidatorDto } from "../../../../domain/types/validators"; +import type { Yield } from "../../../../domain/types/yields"; import type { useEstimatedRewards } from "../../../../hooks/use-estimated-rewards"; import type { useProvidersDetails } from "../../../../hooks/use-provider-details"; import type { useRewardTokenDetails } from "../../../../hooks/use-reward-token-details"; @@ -14,18 +12,19 @@ import type { Action } from "../../../../types/utils"; import type { SelectedStakeData } from "../types"; export type State = { - selectedToken: Maybe; + selectedToken: Maybe; selectedStakeId: Maybe< TokenBalanceScanResponseDto["availableYields"][number] >; selectedValidators: Map; stakeAmount: BigNumber; + useMaxAmount: boolean; tronResource: Maybe; - selectedProviderYieldId: Maybe; + selectedProviderYieldId: Maybe; }; type TokenBalanceSelectAction = Action<"token/select", TokenDto>; -type YieldSelectAction = Action<"yield/select", YieldDto>; +type YieldSelectAction = Action<"yield/select", Yield>; type StakeAmountChangeAction = Action<"stakeAmount/change", BigNumber>; type StakeAmountMaxAction = Action<"stakeAmount/max", BigNumber>; @@ -39,7 +38,7 @@ type SelectTronResourceAction = Action<"tronResource/select", TronResourceType>; type ProviderYieldIdSelectAction = Action< "providerYieldId/select", - YieldDto["id"] + Yield["id"] >; export type Actions = @@ -56,7 +55,7 @@ export type Actions = export type ExtraData = { actions: { onMaxClick: () => void }; - selectedStake: Maybe; + selectedStake: Maybe; stakeAmountLessThanMin: boolean; stakeAmountGreaterThanMax: boolean; stakeAmountGreaterThanAvailableAmount: boolean; @@ -127,7 +126,7 @@ export type EarnPageContextType = { stakeAmountIsZero: boolean; }; }; - pointsRewardTokens: Maybe; + pointsRewardTokens: Maybe<(TokenDto & { isPoints?: boolean })[]>; selectTokenIsLoading: boolean; selectYieldIsLoading: boolean; selectValidatorIsLoading: boolean; diff --git a/packages/widget/src/pages/details/earn-page/state/use-get-init-yield.ts b/packages/widget/src/pages/details/earn-page/state/use-get-init-yield.ts index fb594af6..96b29523 100644 --- a/packages/widget/src/pages/details/earn-page/state/use-get-init-yield.ts +++ b/packages/widget/src/pages/details/earn-page/state/use-get-init-yield.ts @@ -1,7 +1,7 @@ -import type { TokenDto } from "@stakekit/api-hooks"; import { Maybe } from "purify-ts"; import { useCallback } from "react"; import { tokenString } from "../../../../domain"; +import type { TokenDto } from "../../../../domain/types/tokens"; import { getCachedFirstEligibleYield } from "../../../../hooks/api/use-multi-yields"; import { useSKQueryClient } from "../../../../providers/query-client"; import { useTokenBalancesMap } from "./use-token-balances-map"; diff --git a/packages/widget/src/pages/details/earn-page/state/use-get-token-balances-map.ts b/packages/widget/src/pages/details/earn-page/state/use-get-token-balances-map.ts index 0565abc3..539ed54f 100644 --- a/packages/widget/src/pages/details/earn-page/state/use-get-token-balances-map.ts +++ b/packages/widget/src/pages/details/earn-page/state/use-get-token-balances-map.ts @@ -1,6 +1,6 @@ -import type { TokenBalanceScanResponseDto } from "@stakekit/api-hooks"; import { useCallback } from "react"; import { tokenString } from "../../../../domain"; +import type { TokenBalanceScanResponseDto } from "../../../../domain/types/token-balance"; import type { TokenString } from "../../../../domain/types/tokens"; export const useGetTokenBalancesMap = () => @@ -9,8 +9,8 @@ export const useGetTokenBalancesMap = () => defaultTokens, tokenBalancesScan, }: { - tokenBalancesScan: TokenBalanceScanResponseDto[]; - defaultTokens: TokenBalanceScanResponseDto[]; + tokenBalancesScan: ReadonlyArray; + defaultTokens: ReadonlyArray; }) => new Map([ ...(defaultTokens ?? []).map((v) => [tokenString(v.token), v] as const), diff --git a/packages/widget/src/pages/details/earn-page/state/use-init-token.ts b/packages/widget/src/pages/details/earn-page/state/use-init-token.ts index d89e7f41..8bb31cfb 100644 --- a/packages/widget/src/pages/details/earn-page/state/use-init-token.ts +++ b/packages/widget/src/pages/details/earn-page/state/use-init-token.ts @@ -8,6 +8,7 @@ import { getFirstEligibleYield } from "../../../../hooks/api/use-multi-yields"; import { getInitParams } from "../../../../hooks/use-init-params"; import { usePositionsData } from "../../../../hooks/use-positions-data"; import { useValidatorsConfig } from "../../../../hooks/use-validators-config"; +import { useApiClient } from "../../../../providers/api/api-client-provider"; import { useSKQueryClient } from "../../../../providers/query-client"; import { useSettings } from "../../../../providers/settings"; import { useSKWallet } from "../../../../providers/sk-wallet"; @@ -28,6 +29,7 @@ export const useInitToken = () => { isConnecting, } = useSKWallet(); const queryClient = useSKQueryClient(); + const apiClient = useApiClient(); const { data: positionsData } = usePositionsData(); const { @@ -53,6 +55,7 @@ export const useInitToken = () => { await getTokenBalances({ additionalAddresses, address, + apiClient, network, queryClient, tokensForEnabledYieldsOnly, @@ -60,8 +63,8 @@ export const useInitToken = () => { getInitParams({ isLedgerLive, queryClient, + apiClient, externalProviders, - validatorsConfig, }).chain((initParams) => EitherAsync.liftEither( getInitialToken({ @@ -83,6 +86,7 @@ export const useInitToken = () => { isConnected, isLedgerLive, queryClient, + apiClient, network, yieldIds: tokenBalance.availableYields, initParams: initParams, diff --git a/packages/widget/src/pages/details/earn-page/state/use-init-yield.ts b/packages/widget/src/pages/details/earn-page/state/use-init-yield.ts index de775868..13cb3fcd 100644 --- a/packages/widget/src/pages/details/earn-page/state/use-init-yield.ts +++ b/packages/widget/src/pages/details/earn-page/state/use-init-yield.ts @@ -1,13 +1,14 @@ -import type { TokenDto } from "@stakekit/api-hooks"; import { useQuery } from "@tanstack/react-query"; import BigNumber from "bignumber.js"; import { EitherAsync, Maybe } from "purify-ts"; import { getTokenBalances } from "../../../../common/get-token-balances"; import { tokenString } from "../../../../domain"; +import type { TokenDto } from "../../../../domain/types/tokens"; import { getFirstEligibleYield } from "../../../../hooks/api/use-multi-yields"; import { getInitParams } from "../../../../hooks/use-init-params"; import { usePositionsData } from "../../../../hooks/use-positions-data"; import { useValidatorsConfig } from "../../../../hooks/use-validators-config"; +import { useApiClient } from "../../../../providers/api/api-client-provider"; import { useSKQueryClient } from "../../../../providers/query-client"; import { useSettings } from "../../../../providers/settings"; import { useSKWallet } from "../../../../providers/sk-wallet"; @@ -28,6 +29,7 @@ export const useInitYield = ({ isConnecting, } = useSKWallet(); const queryClient = useSKQueryClient(); + const apiClient = useApiClient(); const { externalProviders, tokensForEnabledYieldsOnly, @@ -56,6 +58,7 @@ export const useInitYield = ({ getTokenBalances({ additionalAddresses, address, + apiClient, network, queryClient, tokensForEnabledYieldsOnly, @@ -71,13 +74,14 @@ export const useInitYield = ({ getInitParams({ isLedgerLive, queryClient, + apiClient, externalProviders, - validatorsConfig, }).chain((initParams) => getFirstEligibleYield({ isConnected, isLedgerLive, queryClient, + apiClient, network, yieldIds: val.availableYields, initParams: initParams, diff --git a/packages/widget/src/pages/details/earn-page/state/use-pending-action-deep-link.ts b/packages/widget/src/pages/details/earn-page/state/use-pending-action-deep-link.ts index b32a301c..2fb1e52d 100644 --- a/packages/widget/src/pages/details/earn-page/state/use-pending-action-deep-link.ts +++ b/packages/widget/src/pages/details/earn-page/state/use-pending-action-deep-link.ts @@ -1,10 +1,3 @@ -import { - type AddressWithTokenDtoAdditionalAddresses, - type PendingActionDto, - type YieldBalanceDto, - type YieldDto, - yieldGetSingleYieldBalances, -} from "@stakekit/api-hooks"; import type { QueryClient } from "@tanstack/react-query"; import { useQuery } from "@tanstack/react-query"; import { EitherAsync, Left, Maybe, Right } from "purify-ts"; @@ -12,10 +5,17 @@ import { PAMultiValidatorsRequired, PASingleValidatorRequired, } from "../../../../domain"; -import type { ValidatorsConfig } from "../../../../domain/types/yields"; +import type { AddressWithTokenDtoAdditionalAddresses } from "../../../../domain/types/addresses"; +import type { YieldPendingActionDto } from "../../../../domain/types/pending-action"; +import { + getPositionBalanceDataKey, + type YieldBalanceDto, +} from "../../../../domain/types/positions"; +import type { Yield } from "../../../../domain/types/yields"; import { getYieldOpportunity } from "../../../../hooks/api/use-yield-opportunity/get-yield-opportunity"; import { getInitParams } from "../../../../hooks/use-init-params"; -import { useValidatorsConfig } from "../../../../hooks/use-validators-config"; +import type { ApiClient } from "../../../../providers/api/api-client"; +import { useApiClient } from "../../../../providers/api/api-client-provider"; import { useSKQueryClient } from "../../../../providers/query-client"; import { useSettings } from "../../../../providers/settings"; import { useSKWallet } from "../../../../providers/sk-wallet"; @@ -27,11 +27,10 @@ export const usePendingActionDeepLink = () => { useSKWallet(); const queryClient = useSKQueryClient(); + const apiClient = useApiClient(); const { externalProviders } = useSettings(); - const validatorsConfig = useValidatorsConfig(); - return useQuery({ staleTime: Number.POSITIVE_INFINITY, gcTime: Number.POSITIVE_INFINITY, @@ -49,8 +48,8 @@ export const usePendingActionDeepLink = () => { additionalAddresses, address: addr, queryClient, + apiClient, externalProviders, - validatorsConfig, }) ) ).unsafeCoerce(), @@ -62,21 +61,21 @@ const fn = ({ additionalAddresses, address, queryClient, + apiClient, externalProviders, - validatorsConfig, }: { isLedgerLive: boolean; address: string; additionalAddresses: AddressWithTokenDtoAdditionalAddresses | null; queryClient: QueryClient; + apiClient: ApiClient; externalProviders: ReturnType["externalProviders"]; - validatorsConfig: ValidatorsConfig; }) => getInitParams({ isLedgerLive, queryClient, + apiClient, externalProviders, - validatorsConfig, }).chain((val) => { const initQueryParams = Maybe.of(val) .filter( @@ -94,22 +93,20 @@ const fn = ({ return EitherAsync.liftEither(initQueryParams) .chain((initQueryParams) => EitherAsync(() => - yieldGetSingleYieldBalances(initQueryParams.yieldId, { - addresses: { - address, - additionalAddresses: additionalAddresses ?? undefined, - }, - }) - ) - .mapLeft(() => new Error("could not get yield balances")) - .map((val) => ({ - yieldId: initQueryParams.yieldId, - pendingaction: initQueryParams.pendingaction, - validatorAddress: initQueryParams.validator, - singleYieldBalances: val, - address: address, - additionalAddresses: additionalAddresses ?? undefined, - })) + apiClient.yield.YieldsControllerGetYieldBalances( + initQueryParams.yieldId, + { + payload: { address }, + } + ) + ).map((val) => ({ + yieldId: initQueryParams.yieldId, + pendingaction: initQueryParams.pendingaction, + validatorAddress: initQueryParams.validator, + singleYieldBalances: val.balances, + address: address, + additionalAddresses: additionalAddresses ?? undefined, + })) ) .chain((data) => EitherAsync.liftEither( @@ -117,7 +114,10 @@ const fn = ({ for (const balance of balances) { if ( data.validatorAddress && - balance.validatorAddress !== data.validatorAddress + balance.validator?.address !== data.validatorAddress && + !balance.validators?.some( + (validator) => validator.address === data.validatorAddress + ) ) { continue; } @@ -130,7 +130,7 @@ const fn = ({ return Right({ pendingAction, balance, - balanceId: balance.groupId ?? "default", + balanceId: getPositionBalanceDataKey(balance), }); } } @@ -143,21 +143,21 @@ const fn = ({ isLedgerLive, yieldId: data.yieldId, queryClient, - validatorsConfig, + apiClient, }).map((yieldOp) => ({ ...val, yieldOp })) ) .chain< Error, | { type: "positionDetails"; - yieldOp: YieldDto; - pendingAction: PendingActionDto; + yieldOp: Yield; + pendingAction: YieldPendingActionDto; balance: YieldBalanceDto; balanceId: string; } | { type: "review"; - yieldOp: YieldDto; + yieldOp: Yield; balance: YieldBalanceDto; balanceId: string; pendingActionDto: GetEitherRight< diff --git a/packages/widget/src/pages/details/earn-page/state/use-stake-enter-request-dto.ts b/packages/widget/src/pages/details/earn-page/state/use-stake-enter-request-dto.ts index 235ddd5f..33571106 100644 --- a/packages/widget/src/pages/details/earn-page/state/use-stake-enter-request-dto.ts +++ b/packages/widget/src/pages/details/earn-page/state/use-stake-enter-request-dto.ts @@ -1,10 +1,13 @@ -import type { - ActionRequestDto, - ValidatorDto, - YieldDto, -} from "@stakekit/api-hooks"; -import { Just, List, Maybe } from "purify-ts"; +import { List, Maybe } from "purify-ts"; import { useMemo } from "react"; +import type { YieldCreateActionDto } from "../../../../domain/types/action"; +import type { AddressesDto } from "../../../../domain/types/addresses"; +import type { ValidatorDto } from "../../../../domain/types/validators"; +import { + getYieldActionArg, + isYieldIntegrationAggregator, + type Yield, +} from "../../../../domain/types/yields"; import { useSKWallet } from "../../../../providers/sk-wallet"; import { useEarnPageState } from "./earn-page-state-context"; @@ -12,6 +15,7 @@ export const useStakeEnterRequestDto = () => { const { selectedStake, stakeAmount, + useMaxAmount, selectedValidators, tronResource, selectedToken, @@ -25,61 +29,92 @@ export const useStakeEnterRequestDto = () => { address: Maybe.fromNullable(address), selectedStake, selectedToken, - }).map<{ - gasFeeToken: YieldDto["token"]; - dto: ActionRequestDto; + }).chain<{ + addresses: AddressesDto; + gasFeeToken: Yield["token"]; + dto: YieldCreateActionDto; selectedValidators: Map; - selectedStake: YieldDto; + selectedStake: Yield; }>(({ address, selectedStake, selectedToken }) => { - const validatorsOrProvider = Just(selectedStake) - .chain< - | Pick - | Pick - | Pick - >((val) => { - const validators = [...selectedValidators.values()]; + const validators = [...selectedValidators.values()]; + const providerIdRequired = !!getYieldActionArg( + selectedStake, + "enter", + "providerId" + )?.required; + const providerId = selectedProviderYieldId.extract(); - if (val.metadata.isIntegrationAggregator) { - return List.head(validators).map((v) => ({ - providerId: v.providerId, - })); - } - if (val.args.enter.args?.validatorAddresses?.required) { - return Just({ - validatorAddresses: validators.map((v) => v.address), - }); - } - - const subnetIdRequired = - !!selectedStake.args.enter.args?.subnetId?.required; + if ( + providerIdRequired && + !providerId && + !isYieldIntegrationAggregator(selectedStake) + ) { + return Maybe.empty(); + } + const validatorsOrProvider = (() => { + if (isYieldIntegrationAggregator(selectedStake)) { return List.head(validators).map((v) => ({ - validatorAddress: v.address, - subnetId: subnetIdRequired ? v.subnetId : undefined, + providerId: v.providerId, })); - }) - .orDefault({}); + } + + if ( + getYieldActionArg(selectedStake, "enter", "validatorAddresses") + ?.required + ) { + return validators.length > 0 + ? Maybe.of({ + validatorAddresses: validators.map((v) => v.address), + }) + : Maybe.empty(); + } + + const subnetIdRequired = !!getYieldActionArg( + selectedStake, + "enter", + "subnetId" + )?.required; + + const validatorAddressRequired = !!getYieldActionArg( + selectedStake, + "enter", + "validatorAddress" + )?.required; - return { + if (!validatorAddressRequired && !subnetIdRequired) { + return Maybe.of({}); + } + + return List.head(validators).map((v) => ({ + validatorAddress: v.address, + subnetId: subnetIdRequired ? v.subnetId : undefined, + })); + })(); + + return validatorsOrProvider.map((validatorsOrProvider) => ({ selectedValidators, selectedStake: selectedStake, - gasFeeToken: selectedStake.metadata.gasFeeToken, + gasFeeToken: selectedStake.mechanics.gasFeeToken, + addresses: { + address, + additionalAddresses: additionalAddresses ?? undefined, + }, dto: { - addresses: { - address: address, - additionalAddresses: additionalAddresses ?? undefined, - }, - integrationId: selectedStake.id, - args: { - inputToken: selectedToken, - ledgerWalletAPICompatible: isLedgerLive ?? undefined, + address, + yieldId: selectedStake.id, + arguments: { + inputToken: selectedToken.address, + ledgerWalletApiCompatible: isLedgerLive ?? undefined, tronResource: tronResource.extract(), amount: stakeAmount.toString(10), - providerId: selectedProviderYieldId.extract(), + useMaxAmount: useMaxAmount || undefined, + providerId, ...validatorsOrProvider, + ...(additionalAddresses ?? {}), }, }, - }; + })); }), [ additionalAddresses, @@ -89,6 +124,7 @@ export const useStakeEnterRequestDto = () => { selectedToken, selectedValidators, stakeAmount, + useMaxAmount, tronResource, selectedProviderYieldId, ] diff --git a/packages/widget/src/pages/details/earn-page/state/use-token-balance.ts b/packages/widget/src/pages/details/earn-page/state/use-token-balance.ts index c383afe8..bc183714 100644 --- a/packages/widget/src/pages/details/earn-page/state/use-token-balance.ts +++ b/packages/widget/src/pages/details/earn-page/state/use-token-balance.ts @@ -1,8 +1,8 @@ -import type { TokenDto } from "@stakekit/api-hooks"; import BigNumber from "bignumber.js"; import type { Maybe } from "purify-ts"; import { useMemo } from "react"; import { tokenString } from "../../../../domain"; +import type { TokenDto } from "../../../../domain/types/tokens"; import { useTokenBalancesMap } from "./use-token-balances-map"; export const useTokenBalance = ({ diff --git a/packages/widget/src/pages/details/earn-page/state/use-track-state-events.ts b/packages/widget/src/pages/details/earn-page/state/use-track-state-events.ts index 18ff759f..c72f161f 100644 --- a/packages/widget/src/pages/details/earn-page/state/use-track-state-events.ts +++ b/packages/widget/src/pages/details/earn-page/state/use-track-state-events.ts @@ -1,6 +1,7 @@ -import type { TokenDto, YieldDto } from "@stakekit/api-hooks"; import type { Maybe } from "purify-ts"; import { useEffect } from "react"; +import type { TokenDto } from "../../../../domain/types/tokens"; +import type { Yield } from "../../../../domain/types/yields"; import { useTrackEvent } from "../../../../hooks/tracking/use-track-event"; export const useTrackStateEvents = ({ @@ -8,7 +9,7 @@ export const useTrackStateEvents = ({ initYield, }: { initToken: Maybe; - initYield: Maybe; + initYield: Maybe; }) => { const trackEvent = useTrackEvent(); diff --git a/packages/widget/src/pages/details/earn-page/state/utils.ts b/packages/widget/src/pages/details/earn-page/state/utils.ts index 146eff39..c874a776 100644 --- a/packages/widget/src/pages/details/earn-page/state/utils.ts +++ b/packages/widget/src/pages/details/earn-page/state/utils.ts @@ -1,21 +1,15 @@ -import type { YieldDto } from "@stakekit/api-hooks"; import { List, Maybe } from "purify-ts"; -import type { InitParams } from "../../../../domain/types/init-params"; import type { PositionsData } from "../../../../domain/types/positions"; -import { - getInitSelectedValidators, - getMinStakeAmount, -} from "../../../../domain/types/stake"; +import { getMinStakeAmount } from "../../../../domain/types/stake"; +import { getYieldActionArg, type Yield } from "../../../../domain/types/yields"; import type { State } from "./types"; export const onYieldSelectState = ({ yieldDto, positionsData, - initParams, }: { - yieldDto: YieldDto; + yieldDto: Yield; positionsData: PositionsData; - initParams: Maybe; }): Pick< State, | "selectedStakeId" @@ -26,16 +20,13 @@ export const onYieldSelectState = ({ > => ({ selectedStakeId: Maybe.of(yieldDto.id), stakeAmount: getMinStakeAmount(yieldDto, positionsData), - selectedValidators: getInitSelectedValidators({ - initQueryParams: initParams, - yieldDto: yieldDto, - }), + selectedValidators: new Map(), tronResource: Maybe.fromFalsy( - yieldDto.args.enter.args?.tronResource?.required + getYieldActionArg(yieldDto, "enter", "tronResource")?.required ).map(() => "ENERGY"), selectedProviderYieldId: Maybe.fromNullable( - yieldDto.args.enter.args?.providerId + getYieldActionArg(yieldDto, "enter", "providerId") ) - .filter((val) => val.required) - .chain((val) => List.head(val.options)), + .filter((val) => !!val.required && !!val.options?.length) + .chain((val) => List.head(val.options ?? [])), }); diff --git a/packages/widget/src/pages/details/earn-page/types.ts b/packages/widget/src/pages/details/earn-page/types.ts index 9cc45873..cff6fd89 100644 --- a/packages/widget/src/pages/details/earn-page/types.ts +++ b/packages/widget/src/pages/details/earn-page/types.ts @@ -1,9 +1,8 @@ -import type { YieldDto } from "@stakekit/api-hooks"; -import type { ExtendedYieldType } from "../../../domain/types/yields"; +import type { ExtendedYieldType, Yield } from "../../../domain/types/yields"; export type SelectedStakeData = { - all: YieldDto[]; - filtered: YieldDto[]; + all: Yield[]; + filtered: Yield[]; groupsWithCounts: Map< ExtendedYieldType, { diff --git a/packages/widget/src/pages/details/positions-page/components/positions-list-item.tsx b/packages/widget/src/pages/details/positions-page/components/positions-list-item.tsx index 44f23441..fbf262ec 100644 --- a/packages/widget/src/pages/details/positions-page/components/positions-list-item.tsx +++ b/packages/widget/src/pages/details/positions-page/components/positions-list-item.tsx @@ -10,6 +10,7 @@ import { TokenIcon } from "../../../../components/atoms/token-icon"; import { ToolTip } from "../../../../components/atoms/tooltip"; import { Text } from "../../../../components/atoms/typography/text"; import type { PositionDetailsLabelType } from "../../../../domain/types/positions"; +import { getYieldProviderDetails } from "../../../../domain/types/yields"; import { usePositionListItem } from "../hooks/use-position-list-item"; import type { usePositions } from "../hooks/use-positions"; import { @@ -57,7 +58,14 @@ export const PositionsListItem = memo( > {item.token.mapOrDefault( (val) => ( - + ), diff --git a/packages/widget/src/pages/details/positions-page/components/styles.css.ts b/packages/widget/src/pages/details/positions-page/components/styles.css.ts index a93ff1b3..e24bac77 100644 --- a/packages/widget/src/pages/details/positions-page/components/styles.css.ts +++ b/packages/widget/src/pages/details/positions-page/components/styles.css.ts @@ -1,21 +1,5 @@ import { style } from "@vanilla-extract/css"; import { atoms } from "../../../../styles/theme/atoms.css"; -import { vars } from "../../../../styles/theme/contract.css"; - -export const selectItemText = style({ - color: vars.color.tokenSelect, - fontWeight: vars.fontWeight.tokenSelect, -}); - -export const validatorAddress = style({ - overflow: "hidden", - textOverflow: "ellipsis", - whiteSpace: "nowrap", -}); - -export const importValidatorContainer = style({ - minHeight: "50px", -}); export const noWrap = style({ whiteSpace: "nowrap" }); diff --git a/packages/widget/src/pages/details/positions-page/hooks/use-position-list-item.ts b/packages/widget/src/pages/details/positions-page/hooks/use-position-list-item.ts index 28f99e26..2d1fc2da 100644 --- a/packages/widget/src/pages/details/positions-page/hooks/use-position-list-item.ts +++ b/packages/widget/src/pages/details/positions-page/hooks/use-position-list-item.ts @@ -1,8 +1,8 @@ import BigNumber from "bignumber.js"; import { List, Maybe } from "purify-ts"; import { useMemo } from "react"; -import { getBaseToken } from "../../../../domain"; import { getPositionTotalAmount } from "../../../../domain/types/positions"; +import { getYieldRewardType } from "../../../../domain/types/yields"; import { useYieldOpportunity } from "../../../../hooks/api/use-yield-opportunity"; import { useProvidersDetails } from "../../../../hooks/use-provider-details"; import { defaultFormattedNumber } from "../../../../utils"; @@ -41,7 +41,7 @@ export const usePositionListItem = ( .map((val) => getRewardRateFormatted({ rewardRate: val.rewardRateAverage.toNumber(), - rewardType: val.integrationData.rewardType, + rewardType: getYieldRewardType(val.integrationData), }) ), [integrationData, providersDetails] @@ -59,19 +59,21 @@ export const usePositionListItem = ( const tokenToDisplay = item.token; const baseToken = useMemo( - () => integrationData.map((y) => getBaseToken(y)), + () => integrationData.map((y) => y.token), [integrationData] ); - const totalAmount = useMemo( + const amounts = useMemo( () => - tokenToDisplay.map((val) => - getPositionTotalAmount({ - token: val, - balances: item.balancesWithAmount, - }) - ), - [item.balancesWithAmount, tokenToDisplay] + baseToken.map((b) => getPositionTotalAmount(item.balancesWithAmount, b)), + [item.balancesWithAmount, baseToken] + ); + + const totalAmount = useMemo(() => amounts.map((v) => v.amount), [amounts]); + + const totalAmountUsd = useMemo( + () => amounts.map((v) => v.amountUsd), + [amounts] ); const totalAmountFormatted = useMemo( @@ -85,6 +87,7 @@ export const usePositionListItem = ( rewardRateAverage, inactiveValidator, totalAmount, + totalAmountUsd, totalAmountFormatted, baseToken, tokenToDisplay, diff --git a/packages/widget/src/pages/details/positions-page/hooks/use-positions.ts b/packages/widget/src/pages/details/positions-page/hooks/use-positions.ts index bdba10cb..5b3394a6 100644 --- a/packages/widget/src/pages/details/positions-page/hooks/use-positions.ts +++ b/packages/widget/src/pages/details/positions-page/hooks/use-positions.ts @@ -1,13 +1,12 @@ -import type { - YieldBalanceDto, - YieldBalanceLabelDto, - YieldBalancesWithIntegrationIdDto, -} from "@stakekit/api-hooks"; import BigNumber from "bignumber.js"; -import { compare, Just, List, type Maybe } from "purify-ts"; +import { compare, Just, List, Maybe } from "purify-ts"; import { useMemo } from "react"; import { createSelector } from "reselect"; -import type { YieldFindValidatorsParams } from "../../../../common/private-api"; +import type { + YieldBalanceDto, + YieldBalanceType, +} from "../../../../domain/types/positions"; +import type { YieldBalanceLabelDto } from "../../../../domain/types/token-balance"; import { usePositionsData } from "../../../../hooks/use-positions-data"; import { useSettings } from "../../../../providers/settings"; import type { SettingsContextType } from "../../../../providers/settings/types"; @@ -72,26 +71,20 @@ const positionsTableDataSelector = createSelector( .ifJust((v) => acc.push({ ...value, - integrationId: val.integrationId, + integrationId: val.yieldId, balancesWithAmount: v, balanceId: id, allBalances: value.balances, - yieldLabelDto: List.find( - (b) => !!b.label, - value.balances - ).chainNullable((v) => v.label), + yieldLabelDto: Maybe.empty() as Maybe, token: List.head( List.sort( (a, b) => compare(priorityOrder[a.type], priorityOrder[b.type]), value.balances ) - ).map((v) => ({ - ...v.token, - pricePerShare: v.pricePerShare, - })), + ).map((v) => v.token), actionRequired: v.some( - (b) => b.type === "locked" || b.type === "unstaked" + (b) => b.type === "locked" || b.type === "claimable" ), pointsRewardTokenBalances: v .filter((v) => !!v.token.isPoints) @@ -99,17 +92,11 @@ const positionsTableDataSelector = createSelector( ...v, amount: defaultFormattedNumber(v.amount), })), - hasPendingClaimRewards: List.find( - (b) => b.type === "rewards", - v - ) - .chain((b) => - List.find( - (a) => a.type === "CLAIM_REWARDS", - b.pendingActions - ) + hasPendingClaimRewards: v.some((balance) => + balance.pendingActions.some( + (action) => action.type === "CLAIM_REWARDS" ) - .isJust(), + ), }) ); }); @@ -117,14 +104,14 @@ const positionsTableDataSelector = createSelector( return acc; }, [] as ({ - integrationId: YieldBalancesWithIntegrationIdDto["integrationId"]; + integrationId: string; balancesWithAmount: YieldBalanceDto[]; allBalances: YieldBalanceDto[]; - balanceId: YieldBalanceDto["groupId"]; + balanceId: string; actionRequired: boolean; pointsRewardTokenBalances: YieldBalanceDto[]; hasPendingClaimRewards: boolean; - token: Maybe; + token: Maybe; yieldLabelDto: Maybe; } & ( | { type: "validators"; validatorsAddresses: string[] } @@ -144,19 +131,11 @@ const positionsTableDataSelector = createSelector( .unsafeCoerce() ); -const priorityOrder: { [key in YieldBalanceDto["type"]]: number } = { - available: 1, - staked: 2, - unstaking: 3, - unstaked: 4, - preparing: 5, +const priorityOrder: Record = { + active: 1, + entering: 2, + exiting: 3, + withdrawable: 4, + claimable: 5, locked: 6, - unlocking: 7, - rewards: 8, -}; - -export const getYieldFindValidatorsQueryKey = ( - params?: YieldFindValidatorsParams -) => { - return ["/v1/yields/validators", ...(params ? [params] : [])] as const; }; diff --git a/packages/widget/src/pages/details/positions-page/positions.page.tsx b/packages/widget/src/pages/details/positions-page/positions.page.tsx index a0bb740b..8dcb5aea 100644 --- a/packages/widget/src/pages/details/positions-page/positions.page.tsx +++ b/packages/widget/src/pages/details/positions-page/positions.page.tsx @@ -1,6 +1,8 @@ import { motion } from "motion/react"; import { useMemo } from "react"; +import { useTranslation } from "react-i18next"; import { Box } from "../../../components/atoms/box"; +import { Text } from "../../../components/atoms/typography/text"; import { VirtualList } from "../../../components/atoms/virtual-list"; import { ZerionChainModal } from "../../../components/molecules/zerion-chain-modal"; import { useTrackPage } from "../../../hooks/tracking/use-track-page"; @@ -12,19 +14,44 @@ import { PositionsListItem } from "./components/positions-list-item"; import { usePositions } from "./hooks/use-positions"; import { container } from "./style.css"; -export const PositionsPage = () => { +const PositionsPage = () => { useTrackPage("positions"); const { positionsData, listData, showPositions } = usePositions(); const { isConnected, isConnecting } = useSKWallet(); + const { t } = useTranslation(); + const content = useMemo(() => { if (positionsData.isLoading && positionsData.isFetching && isConnected) { return ; } if (!isConnected && !isConnecting) { - return ; + return ( + + + + {t("positions.connect_wallet_manage")} + + + + + + ); } if (positionsData.isError && !positionsData.data.length) { return ; @@ -38,6 +65,7 @@ export const PositionsPage = () => { positionsData.isError, positionsData.isFetching, positionsData.isLoading, + t, ]); return ( diff --git a/packages/widget/src/pages/position-details/components/amount-block.tsx b/packages/widget/src/pages/position-details/components/amount-block.tsx index 4244598b..b311bf66 100644 --- a/packages/widget/src/pages/position-details/components/amount-block.tsx +++ b/packages/widget/src/pages/position-details/components/amount-block.tsx @@ -1,4 +1,3 @@ -import type { TokenDto, ValidatorDto, YieldDto } from "@stakekit/api-hooks"; import BigNumber from "bignumber.js"; import { Just, Maybe } from "purify-ts"; import { useMemo } from "react"; @@ -13,6 +12,9 @@ import { } from "../../../components/atoms/number-input"; import { Text } from "../../../components/atoms/typography/text"; import * as AmountToggle from "../../../components/molecules/amount-toggle"; +import type { TokenDto, YieldTokenDto } from "../../../domain/types/tokens"; +import type { ValidatorDto } from "../../../domain/types/validators"; +import type { Yield } from "../../../domain/types/yields"; import { useYieldMetaInfo } from "../../../hooks/use-yield-meta-info"; import { defaultFormattedNumber, formatNumber } from "../../../utils"; import { priceTxt } from "../styles.css"; @@ -27,12 +29,12 @@ type AmountBlockProps = { onMaxClick: (() => void) | null; label: string; formattedAmount: string; - balance: { amount: BigNumber; token: TokenDto } | null; + balance: { amount: BigNumber; token: TokenDto | YieldTokenDto } | null; } & ( | { variant: "unstake"; - unstakeToken: TokenDto; - yieldDto: YieldDto; + unstakeToken: TokenDto | YieldTokenDto; + yieldDto: Yield; validators: { [Key in keyof Pick< ValidatorDto, @@ -217,11 +219,11 @@ const UnstakeInfo = ({ yieldDto, unstakeToken, }: { - yieldDto: YieldDto; + yieldDto: Yield; validators: { [Key in keyof Pick]?: ValidatorDto[Key]; }[]; - unstakeToken: TokenDto; + unstakeToken: TokenDto | YieldTokenDto; }) => { const { withdrawnTime, withdrawnNotAvailable, positionLocked } = useYieldMetaInfo({ diff --git a/packages/widget/src/pages/position-details/components/position-balances.tsx b/packages/widget/src/pages/position-details/components/position-balances.tsx index 1322140a..bc41ca5f 100644 --- a/packages/widget/src/pages/position-details/components/position-balances.tsx +++ b/packages/widget/src/pages/position-details/components/position-balances.tsx @@ -1,4 +1,3 @@ -import type { YieldBalanceDto, YieldDto } from "@stakekit/api-hooks"; import BigNumber from "bignumber.js"; import { isPast } from "date-fns"; import { useMemo } from "react"; @@ -6,6 +5,8 @@ import { useTranslation } from "react-i18next"; import { Box } from "../../../components/atoms/box"; import { TokenIcon } from "../../../components/atoms/token-icon"; import { Text } from "../../../components/atoms/typography/text"; +import type { YieldBalanceDto } from "../../../domain/types/positions"; +import { getBaseYieldType, type Yield } from "../../../domain/types/yields"; import { defaultFormattedNumber } from "../../../utils"; import { formatDurationUntilDate } from "../../../utils/date"; @@ -14,16 +15,14 @@ export const PositionBalances = ({ integrationData, }: { yieldBalance: YieldBalanceDto & { tokenPriceInUsd: BigNumber }; - integrationData: YieldDto; + integrationData: Yield; }) => { const { t } = useTranslation(); const durationUntilDate = useMemo(() => { if ( !yieldBalance.date || - (yieldBalance.type !== "unstaking" && - yieldBalance.type !== "unlocking" && - yieldBalance.type !== "preparing") + (yieldBalance.type !== "entering" && yieldBalance.type !== "exiting") ) { return null; } @@ -43,7 +42,7 @@ export const PositionBalances = ({ return t("position_details.unstaking_duration", { duration }); }, [yieldBalance.date, yieldBalance.type, t]); - const yieldType = integrationData.metadata.type; + const yieldType = getBaseYieldType(integrationData); const balanceTypeContext = yieldType === "vault" || yieldType === "lending" diff --git a/packages/widget/src/pages/position-details/components/provider-details.tsx b/packages/widget/src/pages/position-details/components/provider-details.tsx index 8cbdaa93..cfe1d7fb 100644 --- a/packages/widget/src/pages/position-details/components/provider-details.tsx +++ b/packages/widget/src/pages/position-details/components/provider-details.tsx @@ -1,4 +1,3 @@ -import type { RewardTypes, YieldDto } from "@stakekit/api-hooks"; import { memo } from "react"; import { useTranslation } from "react-i18next"; import { Box } from "../../../components/atoms/box"; @@ -11,9 +10,10 @@ import { import { Divider } from "../../../components/atoms/divider"; import { PreferredIcon } from "../../../components/atoms/icons/preferred"; import { Image } from "../../../components/atoms/image"; -import { ImageFallback } from "../../../components/atoms/image-fallback"; import { Text } from "../../../components/atoms/typography/text"; import { useMetaInfo } from "../../../components/molecules/select-validator/meta-info"; +import type { RewardTypes } from "../../../domain/types/reward-rate"; +import type { Yield } from "../../../domain/types/yields"; import type { useProvidersDetails } from "../../../hooks/use-provider-details"; import type { GetMaybeJust } from "../../../types/utils"; import { inactiveContainer, noWrap } from "../styles.css"; @@ -24,16 +24,19 @@ export const ProviderDetails = ({ integrationData, logo, ...providerDetails -}: { +}: Omit< + GetMaybeJust>[0], + "rewardType" +> & { isFirst: boolean; stakeType: string; - integrationData: YieldDto; + integrationData: Yield; logo: string | undefined; name: string; rewardRateFormatted: string; rewardRate: number | undefined; - rewardType: RewardTypes; -} & GetMaybeJust>[0]) => { + rewardType?: RewardTypes; +}) => { const { t } = useTranslation(); const nameOrAddress = providerDetails.name ?? providerDetails ?? ""; @@ -52,18 +55,10 @@ export const ProviderDetails = ({ - - - } + fallbackName={nameOrAddress} /> diff --git a/packages/widget/src/pages/position-details/components/static-action-block.tsx b/packages/widget/src/pages/position-details/components/static-action-block.tsx index 4dd6f267..0aa39069 100644 --- a/packages/widget/src/pages/position-details/components/static-action-block.tsx +++ b/packages/widget/src/pages/position-details/components/static-action-block.tsx @@ -1,27 +1,26 @@ -import type { - ActionTypes, - PendingActionDto, - YieldBalanceDto, - YieldDto, -} from "@stakekit/api-hooks"; import BigNumber from "bignumber.js"; import { Trans, useTranslation } from "react-i18next"; import { Box } from "../../../components/atoms/box"; import { Button } from "../../../components/atoms/button"; import { Text } from "../../../components/atoms/typography/text"; -import { isEthenaUsdeStaking } from "../../../domain/types/yields"; -import { formatNumber } from "../../../utils"; +import type { + YieldPendingActionDto, + YieldPendingActionType, +} from "../../../domain/types/pending-action"; +import type { YieldBalanceDto } from "../../../domain/types/positions"; +import { isEthenaUsdeStaking, type Yield } from "../../../domain/types/yields"; +import { defaultFormattedNumber } from "../../../utils"; import type { usePositionDetails } from "../hooks/use-position-details"; type StaticActionBlockProps = { - pendingActionDto: PendingActionDto; + pendingActionDto: YieldPendingActionDto; yieldBalance: YieldBalanceDto & { tokenPriceInUsd: BigNumber; }; onPendingActionClick: ReturnType< typeof usePositionDetails >["onPendingActionClick"]; - yieldId: YieldDto["id"]; + yieldId: Yield["id"]; }; export const StaticActionBlock = ({ @@ -49,11 +48,13 @@ export const StaticActionBlock = ({ + pendingActionDto.type.toLowerCase() as Lowercase }`, { context: isEthenaUsdeStaking(yieldId) @@ -91,7 +92,7 @@ export const StaticActionBlock = ({ {t( `position_details.pending_action_button.${ - pendingActionDto.type.toLowerCase() as Lowercase + pendingActionDto.type.toLowerCase() as Lowercase }` )} diff --git a/packages/widget/src/pages/position-details/hooks/use-pending-actions.ts b/packages/widget/src/pages/position-details/hooks/use-pending-actions.ts index 820a3802..a9658bd6 100644 --- a/packages/widget/src/pages/position-details/hooks/use-pending-actions.ts +++ b/packages/widget/src/pages/position-details/hooks/use-pending-actions.ts @@ -1,9 +1,3 @@ -import type { - PendingActionDto, - ValidatorDto, - YieldBalanceDto, - YieldDto, -} from "@stakekit/api-hooks"; import BigNumber from "bignumber.js"; import { Left, List, Maybe, Right } from "purify-ts"; import { useEffect, useMemo, useRef } from "react"; @@ -13,9 +7,15 @@ import { PAMultiValidatorsRequired, PASingleValidatorRequired, } from "../../../domain"; +import { + isPendingActionAmountRequired, + type YieldPendingActionDto, +} from "../../../domain/types/pending-action"; +import type { YieldBalanceDto } from "../../../domain/types/positions"; +import type { ValidatorDto } from "../../../domain/types/validators"; +import type { Yield } from "../../../domain/types/yields"; import { usePendingActionSelectValidatorMatch } from "../../../hooks/navigation/use-pending-action-select-validator-match"; import { useTrackEvent } from "../../../hooks/tracking/use-track-event"; -import { useBaseToken } from "../../../hooks/use-base-token"; import { useSavedRef } from "../../../hooks/use-saved-ref"; import { usePendingActionStore } from "../../../providers/pending-action-store"; import { useSKWallet } from "../../../providers/sk-wallet"; @@ -39,7 +39,7 @@ export const usePendingActions = () => { positionBalancePrices, } = useUnstakeOrPendingActionState(); - const baseToken = useBaseToken(integrationData); + const baseToken = integrationData.map((val) => val.token); const pendingActionDispatch = useUnstakeOrPendingActionDispatch(); @@ -54,8 +54,8 @@ export const usePendingActions = () => { val.flatMap((balance) => balance.pendingActions.map((pa) => { const amount = Maybe.fromPredicate( - (v) => !!v, - pa.args?.args?.amount?.required + (v) => v, + isPendingActionAmountRequired(pa) ).chain(() => Maybe.fromNullable( pendingActionsState.get( @@ -79,7 +79,7 @@ export const usePendingActions = () => { amount: val.amount, token: val.reducedStakedOrLiquidBalance.token, prices: val.prices, - pricePerShare: balance.pricePerShare, + pricePerShare: null, baseToken: val.baseToken, }) ) @@ -150,7 +150,7 @@ export const usePendingActions = () => { yieldBalance, pendingActionDto, }: { - pendingActionDto: PendingActionDto; + pendingActionDto: YieldPendingActionDto; yieldBalance: YieldBalanceDto; }) => { trackEvent("pendingActionClicked", { @@ -234,8 +234,8 @@ export const usePendingActions = () => { yieldBalance, selectedValidators, }: { - integrationData: YieldDto; - pendingActionDto: PendingActionDto; + integrationData: Yield; + pendingActionDto: YieldPendingActionDto; yieldBalance: YieldBalanceDto; selectedValidators: ValidatorDto["address"][]; }) => { diff --git a/packages/widget/src/pages/position-details/hooks/use-position-details.ts b/packages/widget/src/pages/position-details/hooks/use-position-details.ts index 57c40ca6..e17380e5 100644 --- a/packages/widget/src/pages/position-details/hooks/use-position-details.ts +++ b/packages/widget/src/pages/position-details/hooks/use-position-details.ts @@ -1,13 +1,20 @@ -import type { TokenDto } from "@stakekit/api-hooks"; import { useMutation } from "@tanstack/react-query"; import BigNumber from "bignumber.js"; import { Maybe } from "purify-ts"; import { useMemo } from "react"; import { useNavigate } from "react-router"; -import { equalTokens, getTokenPriceInUSD } from "../../../domain"; +import { + getRewardRateBreakdown, + type YieldRewardRateDto, +} from "../../../domain/types/reward-rate"; import { isForceMaxAmount } from "../../../domain/types/stake"; +import type { TokenDto } from "../../../domain/types/tokens"; +import { + getYieldActionArg, + isYieldValidatorSelectionRequired, +} from "../../../domain/types/yields"; +import { useYieldValidators } from "../../../hooks/api/use-yield-validators"; import { useTrackEvent } from "../../../hooks/tracking/use-track-event"; -import { useBaseToken } from "../../../hooks/use-base-token"; import { useProvidersDetails } from "../../../hooks/use-provider-details"; import { useExitStakeStore } from "../../../providers/exit-stake-store"; import { defaultFormattedNumber } from "../../../utils"; @@ -18,6 +25,11 @@ import { import { usePendingActions } from "./use-pending-actions"; import { useStakeExitRequestDto } from "./use-stake-exit-request-dto"; +const hasCampaignRewardRate = ( + rewardRate: YieldRewardRateDto | null | undefined +) => + !!getRewardRateBreakdown(rewardRate).find((item) => item.key === "campaign"); + export const usePositionDetails = () => { const { unstakeAmount, @@ -43,7 +55,7 @@ export const usePositionDetails = () => { const unstakeMaxAmount = useMemo( () => integrationData - .chainNullable((val) => val.args.exit?.args?.amount) + .chainNullable((val) => getYieldActionArg(val, "exit", "amount")) .filter((val) => !isForceMaxAmount(val)) .chainNullable((val) => val.maximum), [integrationData] @@ -52,7 +64,7 @@ export const usePositionDetails = () => { const unstakeMinAmount = useMemo( () => integrationData - .chainNullable((val) => val.args.exit?.args?.amount) + .chainNullable((val) => getYieldActionArg(val, "exit", "amount")) .filter((val) => !isForceMaxAmount(val)) .map(() => minUnstakeAmount.toNumber()) .filter((val) => new BigNumber(val).isGreaterThan(0)), @@ -72,6 +84,7 @@ export const usePositionDetails = () => { exitStore.send({ type: "initFlow", data: { + addresses: val.stakeExitRequestDto.addresses, gasFeeToken: val.stakeExitRequestDto.gasFeeToken, integrationData: val.integrationData, requestDto: val.stakeExitRequestDto.dto, @@ -90,19 +103,28 @@ export const usePositionDetails = () => { const _unstakeAmountError = onClickHandler.isError || unstakeAmountError; - const positionLabel = useMemo( - () => - positionBalances.data.chainNullable( - (b) => b.balances.find((b) => b.label)?.label - ), - [positionBalances.data] - ); - const dispatch = useUnstakeOrPendingActionDispatch(); const trackEvent = useTrackEvent(); - const baseToken = useBaseToken(integrationData); + const baseToken = integrationData.map((val) => val.token); + + const shouldFetchValidators = integrationData + .map(isYieldValidatorSelectionRequired) + .orDefault(false); + + const yieldValidators = useYieldValidators({ + enabled: shouldFetchValidators, + yieldId: + integrationData.map((val) => val.id).extractNullable() ?? undefined, + network: + integrationData.map((val) => val.token.network).extractNullable() ?? + undefined, + }); + + const validatorsData = shouldFetchValidators + ? yieldValidators.data + : undefined; const providersDetails = useProvidersDetails({ integrationData, @@ -110,36 +132,42 @@ export const usePositionDetails = () => { return b.type === "validators" ? b.validatorsAddresses : []; }), selectedProviderYieldId: Maybe.empty(), + validatorsData: Maybe.fromNullable(validatorsData), }); - const canUnstake = integrationData.filter((d) => !!d.args.exit).isJust(); + const personalizedRewardRate = useMemo( + () => + positionBalances.data + .map((balanceData) => balanceData.rewardRate) + .filter(hasCampaignRewardRate) + .extractNullable(), + [positionBalances.data] + ); + + const fallbackRewardRate = useMemo( + () => + integrationData + .map((yieldData) => yieldData.rewardRate) + .filter(hasCampaignRewardRate) + .extractNullable(), + [integrationData] + ); + + const apyCompositionRewardRate = personalizedRewardRate ?? fallbackRewardRate; + const apyCompositionShowsUpToCampaign = + !personalizedRewardRate && !!fallbackRewardRate; + + const canUnstake = integrationData.filter((d) => !!d.status.exit).isJust(); const onUnstakeAmountChange = (value: BigNumber) => dispatch({ type: "unstake/amount/change", data: value }); const unstakeFormattedAmount = useMemo( () => - Maybe.fromRecord({ - prices: Maybe.fromNullable(positionBalancePrices.data), - reducedStakedOrLiquidBalance, - baseToken, - }) - .map((val) => - getTokenPriceInUSD({ - amount: unstakeAmount, - token: val.reducedStakedOrLiquidBalance.token, - prices: val.prices, - pricePerShare: val.reducedStakedOrLiquidBalance.pricePerShare, - baseToken: val.baseToken, - }) - ) + reducedStakedOrLiquidBalance + .map((val) => val.amountUsd) .mapOrDefault((v) => `$${defaultFormattedNumber(v)}`, ""), - [ - positionBalancePrices.data, - reducedStakedOrLiquidBalance, - unstakeAmount, - baseToken, - ] + [reducedStakedOrLiquidBalance] ); const onMaxClick = () => { @@ -163,7 +191,7 @@ export const usePositionDetails = () => { validatorAddressesHandling, } = usePendingActions(); - const liquidTokensToNativeConversion = useMemo( + const shareToAmountConversions = useMemo( () => Maybe.fromRecord({ integrationData, @@ -172,18 +200,15 @@ export const usePositionDetails = () => { }).map((v) => [...v.positionBalancesByType.values()].reduce((acc, curr) => { curr - .filter( - (yb) => - !yb.token.isPoints && - yb.pricePerShare && - !equalTokens(yb.token, v.baseToken) - ) + .filter((yb) => yb.shareAmount && yb.amount && !yb.token.isPoints) .forEach((yb) => { acc.set( yb.token.symbol, `1 ${yb.token.symbol} = ${defaultFormattedNumber( - new BigNumber(yb.pricePerShare) - )} ${v.baseToken.symbol}` + new BigNumber(yb.shareAmount ?? 0).dividedBy( + new BigNumber(yb.amount ?? 0) + ) + )} ${yb.shareToken?.symbol}` ); }); @@ -198,10 +223,12 @@ export const usePositionDetails = () => { const isLoading = positionBalances.isLoading || positionBalancePrices.isLoading || - yieldOpportunity.isLoading; + yieldOpportunity.isLoading || + yieldValidators.isLoading; return { integrationData, + validatorsData: validatorsData ?? [], reducedStakedOrLiquidBalance, positionBalancesByType, canUnstake, @@ -215,13 +242,15 @@ export const usePositionDetails = () => { isLoading, onPendingActionClick, providersDetails, + personalizedRewardRate, + apyCompositionRewardRate, + apyCompositionShowsUpToCampaign, pendingActions, - liquidTokensToNativeConversion, + shareToAmountConversions, validatorAddressesHandling, onValidatorsSubmit, onPendingActionAmountChange, unstakeToken, - positionLabel, unstakeAmountError: _unstakeAmountError, unstakeMaxAmount, unstakeMinAmount, diff --git a/packages/widget/src/pages/position-details/hooks/use-stake-exit-request-dto.ts b/packages/widget/src/pages/position-details/hooks/use-stake-exit-request-dto.ts index 83b93997..f9cd6bd7 100644 --- a/packages/widget/src/pages/position-details/hooks/use-stake-exit-request-dto.ts +++ b/packages/widget/src/pages/position-details/hooks/use-stake-exit-request-dto.ts @@ -1,13 +1,23 @@ -import type { ActionRequestDto, YieldDto } from "@stakekit/api-hooks"; import { Just, List, Maybe } from "purify-ts"; import { useMemo } from "react"; +import type { YieldCreateActionDto } from "../../../domain/types/action"; +import type { AddressesDto } from "../../../domain/types/addresses"; +import { + getYieldActionArg, + isYieldIntegrationAggregator, + type Yield, +} from "../../../domain/types/yields"; import { useSKWallet } from "../../../providers/sk-wallet"; import { useUnstakeOrPendingActionState } from "../state"; export const useStakeExitRequestDto = () => { const { address, additionalAddresses } = useSKWallet(); - const { unstakeAmount, integrationData, stakedOrLiquidBalances } = - useUnstakeOrPendingActionState(); + const { + unstakeAmount, + unstakeUseMaxAmount, + integrationData, + stakedOrLiquidBalances, + } = useUnstakeOrPendingActionState(); return useMemo( () => @@ -16,52 +26,64 @@ export const useStakeExitRequestDto = () => { integrationData, stakedOrLiquidBalances, }).map<{ - gasFeeToken: YieldDto["token"]; - dto: ActionRequestDto; + addresses: AddressesDto; + gasFeeToken: Yield["token"]; + dto: YieldCreateActionDto; }>((val) => { const validatorsOrProvider = Just(null) .chain< - | Pick - | Pick - | Pick + | Pick< + NonNullable, + "validatorAddresses" + > + | Pick< + NonNullable, + "validatorAddress" | "subnetId" + > + | Pick, "providerId"> >(() => { - if (val.integrationData.metadata.isIntegrationAggregator) { + if (isYieldIntegrationAggregator(val.integrationData)) { return List.find( - (b) => !!b.providerId, + (b) => !!b.validator?.providerId, val.stakedOrLiquidBalances ).map((b) => ({ - providerId: b.providerId, - validatorAddress: b.validatorAddress, + providerId: b.validator?.providerId, + validatorAddress: b.validator?.address, })); } if ( - val.integrationData.args.exit?.args?.validatorAddresses?.required + getYieldActionArg( + val.integrationData, + "exit", + "validatorAddresses" + )?.required ) { return List.find( - (b) => !!b.validatorAddresses, + (b) => !!b.validators?.length, val.stakedOrLiquidBalances - ).map((b) => ({ validatorAddresses: b.validatorAddresses })); + ).map((b) => ({ + validatorAddresses: + b.validators?.map((validator) => validator.address) ?? [], + })); } if ( - val.integrationData.args.exit?.args?.validatorAddress?.required + getYieldActionArg(val.integrationData, "exit", "validatorAddress") + ?.required ) { return List.find( - (b) => !!b.validatorAddress, + (b) => !!b.validator?.address, val.stakedOrLiquidBalances ).map((b) => { const subnetId = Maybe.fromNullable( - val.integrationData.args.exit?.args?.subnetId?.required + getYieldActionArg(val.integrationData, "exit", "subnetId") + ?.required ) - .chainNullable(() => - val.integrationData.validators.find( - (v) => v.address === b.validatorAddress - ) - ) + .chainNullable(() => b.validator) .map((validator) => validator.subnetId) .extract(); return { - validatorAddress: b.validatorAddress, + validatorAddress: b.validator?.address, subnetId, }; }); @@ -72,16 +94,19 @@ export const useStakeExitRequestDto = () => { .orDefault({}); return { - gasFeeToken: val.integrationData.metadata.gasFeeToken, + gasFeeToken: val.integrationData.mechanics.gasFeeToken, + addresses: { + address: val.address, + additionalAddresses: additionalAddresses ?? undefined, + }, dto: { - addresses: { - address: val.address, - additionalAddresses: additionalAddresses ?? undefined, - }, - integrationId: val.integrationData.id, - args: { + address: val.address, + yieldId: val.integrationData.id, + arguments: { amount: unstakeAmount.toString(10), + useMaxAmount: unstakeUseMaxAmount || undefined, ...validatorsOrProvider, + ...(additionalAddresses ?? {}), }, }, }; @@ -92,6 +117,7 @@ export const useStakeExitRequestDto = () => { stakedOrLiquidBalances, integrationData, unstakeAmount, + unstakeUseMaxAmount, ] ); }; diff --git a/packages/widget/src/pages/position-details/hooks/use-unstake-machine.ts b/packages/widget/src/pages/position-details/hooks/use-unstake-machine.ts index 82b76cb8..670411aa 100644 --- a/packages/widget/src/pages/position-details/hooks/use-unstake-machine.ts +++ b/packages/widget/src/pages/position-details/hooks/use-unstake-machine.ts @@ -1,8 +1,3 @@ -import type { TransactionVerificationMessageDto } from "@stakekit/api-hooks"; -import { - actionExit, - transactionGetTransactionVerificationMessageForNetwork, -} from "@stakekit/api-hooks"; import { useMachine } from "@xstate/react"; import type { SnapshotFromStore } from "@xstate/store"; import { useSelector } from "@xstate/store/react"; @@ -10,9 +5,12 @@ import { EitherAsync, Maybe } from "purify-ts"; import { type RefObject, useState } from "react"; import { assign, setup } from "xstate"; import { getValidStakeSessionTx } from "../../../domain"; +import type { TransactionVerificationMessageDto } from "../../../domain/types/transaction"; import type { SKWallet } from "../../../domain/types/wallet"; +import { hasYieldExitSignatureVerification } from "../../../domain/types/yields"; import { useTrackEvent } from "../../../hooks/tracking/use-track-event"; import { useSavedRef } from "../../../hooks/use-saved-ref"; +import { useApiClient } from "../../../providers/api/api-client-provider"; import { useExitStakeStore } from "../../../providers/exit-stake-store"; import { useSKWallet } from "../../../providers/sk-wallet"; import type { GetMaybeJust } from "../../../types/utils"; @@ -26,20 +24,30 @@ export const useUnstakeMachine = ({ onDone }: { onDone: () => void }) => { (state) => state.context.data ).unsafeCoerce(); + const apiClient = useApiClient(); const { network, address, additionalAddresses, signMessage } = useSKWallet(); const machineParams = useSavedRef({ onDone, trackEvent, exitStore, - actionExit, + apiClient, signMessage, - transactionGetTransactionVerificationMessageForNetwork, getData: () => Maybe.fromRecord({ network: Maybe.fromNullable(network), address: Maybe.fromNullable(address), - }).map((val) => ({ ...val, ...exitRequest, additionalAddresses })), + }).map((val) => ({ + ...val, + ...exitRequest, + addresses: { + ...exitRequest.addresses, + additionalAddresses: + exitRequest.addresses.additionalAddresses ?? + additionalAddresses ?? + undefined, + }, + })), }); return useMachine(useState(() => getMachine(machineParams))[0]); @@ -52,6 +60,7 @@ const getMachine = ( exitStore: ReturnType; signMessage: ReturnType["signMessage"]; trackEvent: ReturnType; + apiClient: ReturnType; getData: () => Maybe< GetMaybeJust< SnapshotFromStore< @@ -60,7 +69,6 @@ const getMachine = ( > & { network: NonNullable; address: NonNullable; - additionalAddresses: SKWallet["additionalAddresses"]; } >; }> @@ -126,13 +134,10 @@ const getMachine = ( Just: (val) => { ref.current.trackEvent("unstakeClicked", { yieldId: val.integrationData.id, - amount: val.requestDto.args.amount, + amount: val.requestDto.arguments?.amount, }); - if ( - val.integrationData.args.exit?.args?.signatureVerification - ?.required - ) { + if (hasYieldExitSignatureVerification(val.integrationData)) { self.send({ type: "__GET_VERIFICATION_MESSAGE__", val }); } else { self.send({ type: "__SUBMIT__", val }); @@ -168,13 +173,15 @@ const getMachine = ( ) .chain((val) => EitherAsync(() => - transactionGetTransactionVerificationMessageForNetwork( + ref.current.apiClient.legacy.TransactionControllerGetTransactionVerificationMessageForNetwork( val.network, { - addresses: { - address: val.address, - additionalAddresses: - val.additionalAddresses ?? undefined, + payload: { + addresses: { + address: val.addresses.address, + additionalAddresses: + val.addresses.additionalAddresses ?? undefined, + }, }, } ) @@ -270,40 +277,52 @@ const getMachine = ( }) => EitherAsync.liftEither( data - .map((val) => val.requestDto) - .map((requestDto) => + .map((val) => Maybe.fromRecord({ + data: Maybe.of(val), + requestDto: Maybe.of(val.requestDto), transactionVerificationMessageDto, signedMessage, }) - .map( + .map( (val) => ({ - ...requestDto, - args: { - ...requestDto.args, - signatureVerification: { - message: - val.transactionVerificationMessageDto.message, - signed: val.signedMessage, - }, + ...val.data, + requestDto: { + ...val.requestDto, + address: val.data.addresses.address, + arguments: { + ...(val.requestDto.arguments ?? {}), + // The backend still accepts this legacy verification bag + // even though the checked-in schema does not expose it yet. + signatureVerification: { + message: + val.transactionVerificationMessageDto + .message, + signed: val.signedMessage, + }, + } as typeof val.requestDto.arguments, }, - }) satisfies typeof requestDto + }) as typeof val.data ) - .orDefault(requestDto) + .orDefault(val) ) .toEither(new Error("Missing params")) ) .chain((val) => - EitherAsync(() => actionExit(val)) + EitherAsync(() => + ref.current.apiClient.yield.ActionsControllerExitYield({ + payload: val.requestDto, + }) + ) .mapLeft(() => new Error("Stake exit error")) .chain((actionDto) => EitherAsync.liftEither(getValidStakeSessionTx(actionDto)) ) - .ifRight((val) => + .ifRight((result) => ref.current.exitStore.send({ type: "setActionDto", - data: val, + data: result, }) ) ) diff --git a/packages/widget/src/pages/position-details/hooks/use-validator-addresses-handling.ts b/packages/widget/src/pages/position-details/hooks/use-validator-addresses-handling.ts index e24391c2..b24ef676 100644 --- a/packages/widget/src/pages/position-details/hooks/use-validator-addresses-handling.ts +++ b/packages/widget/src/pages/position-details/hooks/use-validator-addresses-handling.ts @@ -1,10 +1,11 @@ -import type { - PendingActionDto, - ValidatorDto, - YieldBalanceDto, -} from "@stakekit/api-hooks"; import { useCallback, useMemo, useReducer } from "react"; import type { SelectModalProps } from "../../../components/atoms/select-modal"; +import { + isPendingActionValidatorAddressesRequired, + type YieldPendingActionDto, +} from "../../../domain/types/pending-action"; +import type { YieldBalanceDto } from "../../../domain/types/positions"; +import type { ValidatorDto } from "../../../domain/types/validators"; import type { Action } from "../../../types/utils"; type State = { @@ -14,7 +15,7 @@ type State = { | { showValidatorsModal: true; yieldBalance: YieldBalanceDto; - pendingActionDto: PendingActionDto; + pendingActionDto: YieldPendingActionDto; } | { showValidatorsModal: false; @@ -25,7 +26,7 @@ type State = { type ValidatorOpenAction = Action< "validator/open", - { yieldBalance: YieldBalanceDto; pendingActionDto: PendingActionDto } + { yieldBalance: YieldBalanceDto; pendingActionDto: YieldPendingActionDto } >; type ValidatorCloseAction = Action<"validator/close">; type ValidatorMultiSelectAction = Action< @@ -82,15 +83,18 @@ const reducer = (state: State, action: Actions): State => { } case "validator/open": { - const newSelectedValidators: State["selectedValidators"] = new Set( - action.data.yieldBalance.validatorAddresses - ); + const newSelectedValidators: State["selectedValidators"] = new Set([ + ...(action.data.yieldBalance.validators?.map((v) => v.address) ?? []), + ...(action.data.yieldBalance.validator?.address + ? [action.data.yieldBalance.validator.address] + : []), + ]); return { ...state, - multiSelect: - !!action.data.pendingActionDto.args?.args?.validatorAddresses - ?.required, + multiSelect: isPendingActionValidatorAddressesRequired( + action.data.pendingActionDto + ), selectedValidators: newSelectedValidators, pendingActionDto: action.data.pendingActionDto, yieldBalance: action.data.yieldBalance, @@ -122,7 +126,7 @@ export const useValidatorAddressesHandling = () => { const openModal = useCallback( (args: { yieldBalance: YieldBalanceDto; - pendingActionDto: PendingActionDto; + pendingActionDto: YieldPendingActionDto; }) => dispatch({ type: "validator/open", data: args }), [] ); diff --git a/packages/widget/src/pages/position-details/hooks/utils.ts b/packages/widget/src/pages/position-details/hooks/utils.ts index a8261931..1d56fdcf 100644 --- a/packages/widget/src/pages/position-details/hooks/utils.ts +++ b/packages/widget/src/pages/position-details/hooks/utils.ts @@ -1,16 +1,27 @@ -import type { - PendingActionDto, - PendingActionRequestDto, - ValidatorDto, - YieldBalanceDto, - YieldDto, -} from "@stakekit/api-hooks"; import type { Either } from "purify-ts"; import { List, Maybe } from "purify-ts"; +import type { YieldCreateManageActionDto } from "../../../domain/types/action"; +import { + type AnyPendingActionDto, + isPendingActionAmountRequired, + isPendingActionValidatorAddressesRequired, + isPendingActionValidatorAddressRequired, + type YieldPendingActionType, +} from "../../../domain/types/pending-action"; +import type { YieldBalanceDto } from "../../../domain/types/positions"; +import type { YieldTokenDto } from "../../../domain/types/tokens"; +import type { ValidatorDto } from "../../../domain/types/validators"; import type { SKWallet } from "../../../domain/types/wallet"; +import type { Yield } from "../../../domain/types/yields"; import type { State } from "../state/types"; import { getBalanceTokenActionType } from "../state/utils"; +type AnyYieldBalanceDto = { + amount: string; + token: YieldTokenDto; + type: YieldBalanceDto["type"]; +}; + export const preparePendingActionRequestDto = ({ pendingActionsState, additionalAddresses, @@ -23,16 +34,16 @@ export const preparePendingActionRequestDto = ({ pendingActionsState: State["pendingActions"]; address: SKWallet["address"]; additionalAddresses: SKWallet["additionalAddresses"]; - pendingActionDto: PendingActionDto; - yieldBalance: YieldBalanceDto; - integration: YieldDto; + pendingActionDto: AnyPendingActionDto; + yieldBalance: AnyYieldBalanceDto; + integration: Yield; selectedValidators: ValidatorDto["address"][]; }): Either< Error, { - requestDto: PendingActionRequestDto; - integrationData: YieldDto; - gasFeeToken: YieldDto["token"]; + requestDto: YieldCreateManageActionDto; + integrationData: Yield; + gasFeeToken: Yield["token"]; address: NonNullable; additionalAddresses: | NonNullable @@ -42,43 +53,49 @@ export const preparePendingActionRequestDto = ({ Maybe.fromNullable(address) .toEither(new Error("missing address")) .map((val) => { - const args: PendingActionRequestDto["args"] = { + const validatorArgs = + selectedValidators.length && + isPendingActionValidatorAddressesRequired(pendingActionDto) + ? { validatorAddresses: selectedValidators } + : selectedValidators.length && + isPendingActionValidatorAddressRequired(pendingActionDto) + ? { validatorAddress: List.head(selectedValidators).orDefault("") } + : {}; + + const args = { amount: Maybe.fromPredicate( Boolean, - pendingActionDto.args?.args?.amount?.required + isPendingActionAmountRequired(pendingActionDto) ) .chainNullable(() => pendingActionsState.get( getBalanceTokenActionType({ - balanceType: yieldBalance.type, + balanceType: yieldBalance.type as YieldBalanceDto["type"], token: yieldBalance.token, - actionType: pendingActionDto.type, + actionType: pendingActionDto.type as YieldPendingActionType, }) ) ) .map((v) => v.toString()) .alt(Maybe.of(yieldBalance.amount)) .extract(), - }; - - if (selectedValidators.length) { - if (pendingActionDto.args?.args?.validatorAddresses?.required) { - args.validatorAddresses = selectedValidators; - } else if (pendingActionDto.args?.args?.validatorAddress?.required) { - args.validatorAddress = List.head(selectedValidators).orDefault(""); - } - } + ...validatorArgs, + } satisfies NonNullable; return { requestDto: { - args, - integrationId: integration.id, + action: pendingActionDto.type as YieldPendingActionType, + address: val, + arguments: { + ...args, + ...(additionalAddresses ?? {}), + }, passthrough: pendingActionDto.passthrough, - type: pendingActionDto.type, + yieldId: integration.id, }, address: val, additionalAddresses: additionalAddresses ?? undefined, - gasFeeToken: integration.metadata.gasFeeToken, + gasFeeToken: integration.mechanics.gasFeeToken, integrationData: integration, }; }); diff --git a/packages/widget/src/pages/position-details/position-details.page.tsx b/packages/widget/src/pages/position-details/position-details.page.tsx index c45311b8..ead3c428 100644 --- a/packages/widget/src/pages/position-details/position-details.page.tsx +++ b/packages/widget/src/pages/position-details/position-details.page.tsx @@ -1,16 +1,22 @@ -import type { ActionTypes } from "@stakekit/api-hooks"; import { Just, Maybe } from "purify-ts"; import { useTranslation } from "react-i18next"; import { Box } from "../../components/atoms/box"; import { Button } from "../../components/atoms/button"; -import { InfoIcon } from "../../components/atoms/icons/info"; import { Spinner } from "../../components/atoms/spinner"; import { TokenIcon } from "../../components/atoms/token-icon"; import { Heading } from "../../components/atoms/typography/heading"; import { Text } from "../../components/atoms/typography/text"; +import { RewardRateBreakdown } from "../../components/molecules/reward-rate-breakdown"; import { SelectValidator } from "../../components/molecules/select-validator"; +import type { YieldPendingActionType } from "../../domain/types/pending-action"; +import { getRewardTypeFromRateType } from "../../domain/types/reward-rate"; +import { + getBaseYieldType, + getYieldProviderDetails, +} from "../../domain/types/yields"; import { useTrackPage } from "../../hooks/tracking/use-track-page"; import { AnimationPage } from "../../navigation/containers/animation-page"; +import { getRewardRateFormatted } from "../../utils/formatters"; import { PageContainer } from "../components/page-container"; import { AmountBlock } from "./components/amount-block"; import { PositionBalances } from "./components/position-balances"; @@ -24,6 +30,7 @@ const PositionDetails = () => { const { onPendingActionAmountChange, integrationData, + validatorsData, isLoading, reducedStakedOrLiquidBalance, positionBalancesByType, @@ -37,16 +44,18 @@ const PositionDetails = () => { onPendingActionClick, pendingActions, providersDetails, - liquidTokensToNativeConversion, + shareToAmountConversions, validatorAddressesHandling, onValidatorsSubmit, unstakeToken, canUnstake, unstakeAmountError, - positionLabel, unstakeMaxAmount, unstakeMinAmount, unstakeIsGreaterOrLessIntegrationLimitError, + personalizedRewardRate, + apyCompositionRewardRate, + apyCompositionShowsUpToCampaign, } = usePositionDetails(); useTrackPage("positionDetails", { @@ -87,7 +96,13 @@ const PositionDetails = () => { alignItems="center" > @@ -108,41 +123,49 @@ const PositionDetails = () => { )) .extractNullable()} - {positionLabel - .map((l) => ( + {personalizedRewardRate ? ( + - - - - + + {t("position_details.personalized_apy")} + - - { - t( - `position_details.labels.${l.type}.details`, - l.params - ) as string - } - - + + {getRewardRateFormatted({ + rewardRate: personalizedRewardRate.total, + rewardType: getRewardTypeFromRateType( + personalizedRewardRate.rateType + ), + })} + - )) - .extractNullable()} + + + + ) : null} + + {!personalizedRewardRate && apyCompositionRewardRate ? ( + + + + ) : null} {providersDetails @@ -152,8 +175,14 @@ const PositionDetails = () => { {...p} key={p.address ?? idx} isFirst={idx === 0} + rewardRate={ + personalizedRewardRate ? undefined : p.rewardRate + } + rewardType={ + personalizedRewardRate ? undefined : p.rewardType + } stakeType={t( - `position_details.stake_type.${integrationData.metadata.type}` + `position_details.stake_type.${getBaseYieldType(integrationData)}` )} integrationData={integrationData} /> @@ -174,7 +203,7 @@ const PositionDetails = () => { )) )} - {liquidTokensToNativeConversion + {shareToAmountConversions .map((val) => ( { } label={t( `position_details.pending_action_button.${ - val.pendingActionDto.type.toLowerCase() as Lowercase + val.pendingActionDto.type.toLowerCase() as Lowercase }` )} onMaxClick={null} @@ -276,7 +305,7 @@ const PositionDetails = () => { unstakeAmountError={unstakeAmountError} onMaxClick={onMaxClick} label={t( - `position_details.unstake_label.${integrationData.metadata.type}` + `position_details.unstake_label.${getBaseYieldType(integrationData)}` )} formattedAmount={unstakeFormattedAmount} balance={reducedStakedOrLiquidBalance} @@ -300,7 +329,7 @@ const PositionDetails = () => { onValidatorsSubmit([val.address]); }} selectedStake={integrationData} - validators={integrationData.validators} + validators={validatorsData} multiSelect={validatorAddressesHandling.multiSelect} state={validatorAddressesHandling.modalState} > diff --git a/packages/widget/src/pages/position-details/state/index.tsx b/packages/widget/src/pages/position-details/state/index.tsx index 45e59edc..cebcac30 100644 --- a/packages/widget/src/pages/position-details/state/index.tsx +++ b/packages/widget/src/pages/position-details/state/index.tsx @@ -1,10 +1,3 @@ -import type { - ActionTypes, - PendingActionDto, - PriceRequestDto, - TokenDto, - YieldBalanceDto, -} from "@stakekit/api-hooks"; import BigNumber from "bignumber.js"; import { List, Maybe } from "purify-ts"; import type { Dispatch, PropsWithChildren } from "react"; @@ -17,12 +10,17 @@ import { useRef, } from "react"; import { config } from "../../../config"; -import { isForceMaxAmount } from "../../../domain/types/stake"; -import { isERC4626 } from "../../../domain/types/yields"; +import { + getPendingActionAmountConfig, + type YieldPendingActionDto, + type YieldPendingActionType, +} from "../../../domain/types/pending-action"; +import type { YieldBalanceDto } from "../../../domain/types/positions"; +import type { YieldTokenDto } from "../../../domain/types/tokens"; +import { getYieldActionArg, isERC4626 } from "../../../domain/types/yields"; import { usePrices } from "../../../hooks/api/use-prices"; import { useYieldOpportunity } from "../../../hooks/api/use-yield-opportunity"; import { useUnstakeOrPendingActionParams } from "../../../hooks/navigation/use-unstake-or-pending-action-params"; -import { useBaseToken } from "../../../hooks/use-base-token"; import { useMaxMinYieldAmount } from "../../../hooks/use-max-min-yield-amount"; import { usePositionBalanceByType } from "../../../hooks/use-position-balance-by-type"; import { usePositionBalances } from "../../../hooks/use-position-balances"; @@ -58,7 +56,7 @@ export const UnstakeOrPendingActionProvider = ({ [yieldOpportunity.data] ); - const baseToken = useBaseToken(integrationData); + const baseToken = integrationData.map((val) => val.token); const positionBalancesRemote = usePositionBalances({ balanceId, @@ -89,7 +87,7 @@ export const UnstakeOrPendingActionProvider = ({ positionBalances: positionBalances.data, baseToken, }) - .map((val) => ({ + .map((val) => ({ currency: config.currency, tokenList: [ val.baseToken, @@ -105,9 +103,7 @@ export const UnstakeOrPendingActionProvider = ({ * @summary Position balance by type */ const positionBalancesByType = usePositionBalanceByType({ - baseToken, positionBalancesData: positionBalances.data, - prices: positionBalancePrices, }); const stakedOrLiquidBalances = useStakedOrLiquidBalance( @@ -120,15 +116,17 @@ export const UnstakeOrPendingActionProvider = ({ b.reduce( (acc, next) => { acc.amount = acc.amount.plus(new BigNumber(next.amount)); + acc.amountUsd = acc.amountUsd.plus( + new BigNumber(next.amountUsd ?? 0) + ); acc.token = next.token; - acc.pricePerShare = next.pricePerShare; return acc; }, { + amountUsd: new BigNumber(0), amount: new BigNumber(0), token: b[0].token, - pricePerShare: b[0].pricePerShare, } ) ), @@ -139,10 +137,7 @@ export const UnstakeOrPendingActionProvider = ({ () => stakedOrLiquidBalances .chain((balances) => List.head(balances)) - .map((v) => ({ - ...v.token, - pricePerShare: v.pricePerShare, - })), + .map((v) => v.token), [stakedOrLiquidBalances] ); @@ -155,19 +150,22 @@ export const UnstakeOrPendingActionProvider = ({ yieldOpportunity: integrationData, type: "exit", availableAmount: reducedStakedOrLiquidBalance.map((v) => v.amount), - pricePerShare: unstakeToken.map((v) => v.pricePerShare).extractNullable(), + pricePerShare: null, }); const canChangeUnstakeAmount = integrationData.map( (d) => - !!(!isForceMax && (d.args.exit?.args?.amount?.required || isERC4626(d))) + !!( + !isForceMax && + (getYieldActionArg(d, "exit", "amount")?.required || isERC4626(d)) + ) ); const positionBalancesByTypePendingActions = useMemo( () => new Map< BalanceTokenActionType, - { pendingAction: PendingActionDto; balance: YieldBalanceDto } + { pendingAction: YieldPendingActionDto; balance: YieldBalanceDto } >( positionBalancesByType .map((pbbt) => @@ -201,8 +199,8 @@ export const UnstakeOrPendingActionProvider = ({ }: { state: State["pendingActions"]; balanceType: YieldBalanceDto["type"]; - token: TokenDto; - actionType: ActionTypes; + token: YieldTokenDto; + actionType: YieldPendingActionType; amount: BigNumber; }) => { const key = getBalanceTokenActionType({ actionType, balanceType, token }); @@ -213,20 +211,13 @@ export const UnstakeOrPendingActionProvider = ({ const newMap = new Map(state); newMap.set(key, amount); + const amountConfig = getPendingActionAmountConfig(val.pendingAction); const max = new BigNumber( - val.pendingAction.args?.args?.amount?.maximum ?? - Number.POSITIVE_INFINITY - ); - const min = new BigNumber( - val.pendingAction.args?.args?.amount?.minimum ?? 0 + amountConfig?.maximum ?? Number.POSITIVE_INFINITY ); + const min = new BigNumber(amountConfig?.minimum ?? 0); - if ( - Maybe.fromNullable(val.pendingAction.args?.args?.amount).mapOrDefault( - isForceMaxAmount, - false - ) - ) { + if (amountConfig?.forceMax) { newMap.set(key, new BigNumber(val.balance.amount)); } else if (amount.isLessThan(min)) { newMap.set(key, min); @@ -244,6 +235,7 @@ export const UnstakeOrPendingActionProvider = ({ return { ...state, unstakeAmount: action.data, + unstakeUseMaxAmount: false, }; } @@ -251,6 +243,7 @@ export const UnstakeOrPendingActionProvider = ({ return { ...state, unstakeAmount: maxEnterOrExitAmount, + unstakeUseMaxAmount: true, }; } @@ -271,10 +264,15 @@ export const UnstakeOrPendingActionProvider = ({ const [state, dispatch] = useReducer(reducer, { unstakeAmount: minEnterOrExitAmount, + unstakeUseMaxAmount: false, pendingActions: new Map(), }); - const { pendingActions, unstakeAmount: _ustankeAmount } = state; + const { + pendingActions, + unstakeAmount: _ustankeAmount, + unstakeUseMaxAmount, + } = state; const unstakeAmount = useMemo( () => @@ -346,6 +344,7 @@ export const UnstakeOrPendingActionProvider = ({ unstakeAmountError, unstakeToken, unstakeAmount, + unstakeUseMaxAmount, pendingActions, positionBalancePrices, reducedStakedOrLiquidBalance, @@ -364,6 +363,7 @@ export const UnstakeOrPendingActionProvider = ({ unstakeAmountError, unstakeToken, unstakeAmount, + unstakeUseMaxAmount, pendingActions, positionBalancePrices, reducedStakedOrLiquidBalance, diff --git a/packages/widget/src/pages/position-details/state/types.ts b/packages/widget/src/pages/position-details/state/types.ts index 60c4957c..0fcbec22 100644 --- a/packages/widget/src/pages/position-details/state/types.ts +++ b/packages/widget/src/pages/position-details/state/types.ts @@ -1,14 +1,17 @@ -import type { - ActionTypes, - TokenDto, - YieldBalanceDto, - YieldDto, -} from "@stakekit/api-hooks"; import type BigNumber from "bignumber.js"; import type { Maybe } from "purify-ts"; -import type { PositionBalancesByType } from "../../../domain/types/positions"; +import type { YieldPendingActionType } from "../../../domain/types/pending-action"; +import type { + PositionBalancesByType, + YieldBalanceType, +} from "../../../domain/types/positions"; import type { Prices } from "../../../domain/types/price"; -import type { TokenString } from "../../../domain/types/tokens"; +import type { + TokenDto, + TokenString, + YieldTokenDto, +} from "../../../domain/types/tokens"; +import type { Yield } from "../../../domain/types/yields"; import type { usePrices } from "../../../hooks/api/use-prices"; import type { useYieldOpportunity } from "../../../hooks/api/use-yield-opportunity"; import type { usePositionBalances } from "../../../hooks/use-position-balances"; @@ -19,14 +22,14 @@ type UnstakeAmountChange = Action<"unstake/amount/change", BigNumber>; type UnstakeAmountMax = Action<"unstake/amount/max">; export type BalanceTokenActionType = - `${YieldBalanceDto["type"]}-${TokenString}-${ActionTypes}`; + `${YieldBalanceType}-${TokenString}-${YieldPendingActionType}`; export type PendingActionAmountChange = Action< "pendingAction/amount/change", { - balanceType: YieldBalanceDto["type"]; - token: TokenDto; - actionType: ActionTypes; + balanceType: YieldBalanceType; + token: TokenDto | YieldTokenDto; + actionType: YieldPendingActionType; amount: BigNumber; } >; @@ -38,24 +41,25 @@ export type Actions = export type State = { unstakeAmount: BigNumber; + unstakeUseMaxAmount: boolean; pendingActions: Map; }; export type ExtraData = { - pendingActionType: Maybe; - integrationData: Maybe; + pendingActionType: Maybe; + integrationData: Maybe; positionBalances: ReturnType; yieldOpportunity: ReturnType; positionBalancesByType: Maybe; stakedOrLiquidBalances: ReturnType; reducedStakedOrLiquidBalance: Maybe<{ amount: BigNumber; - token: TokenDto; - pricePerShare: string; + amountUsd: BigNumber; + token: TokenDto | YieldTokenDto; }>; positionBalancePrices: ReturnType>; unstakeAmountValid: boolean; - unstakeToken: Maybe; + unstakeToken: Maybe; unstakeAmountError: boolean; canChangeUnstakeAmount: Maybe; unstakeIsGreaterOrLessIntegrationLimitError: boolean; diff --git a/packages/widget/src/pages/position-details/state/utils.ts b/packages/widget/src/pages/position-details/state/utils.ts index d07f150b..0cc6f5e1 100644 --- a/packages/widget/src/pages/position-details/state/utils.ts +++ b/packages/widget/src/pages/position-details/state/utils.ts @@ -1,9 +1,7 @@ -import type { - ActionTypes, - TokenDto, - YieldBalanceDto, -} from "@stakekit/api-hooks"; import { tokenString } from "../../../domain"; +import type { YieldPendingActionType } from "../../../domain/types/pending-action"; +import type { YieldBalanceType } from "../../../domain/types/positions"; +import type { TokenDto, YieldTokenDto } from "../../../domain/types/tokens"; import type { BalanceTokenActionType } from "./types"; export const getBalanceTokenActionType = ({ @@ -11,8 +9,8 @@ export const getBalanceTokenActionType = ({ balanceType, token, }: { - balanceType: YieldBalanceDto["type"]; - token: TokenDto; - actionType: ActionTypes; + balanceType: YieldBalanceType; + token: TokenDto | YieldTokenDto; + actionType: YieldPendingActionType; }): BalanceTokenActionType => `${balanceType}-${tokenString(token)}-${actionType}`; diff --git a/packages/widget/src/pages/review/hooks/use-action-review.hook.ts b/packages/widget/src/pages/review/hooks/use-action-review.hook.ts index 96c1b7e3..50ed9b23 100644 --- a/packages/widget/src/pages/review/hooks/use-action-review.hook.ts +++ b/packages/widget/src/pages/review/hooks/use-action-review.hook.ts @@ -1,13 +1,16 @@ -import { - ActionTypes, - type TokenDto, - TransactionStatus, -} from "@stakekit/api-hooks"; import { useSelector } from "@xstate/store/react"; import { List, Maybe } from "purify-ts"; import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { useNavigate } from "react-router"; +import { + type ActionType, + ActionTypes, + getActionInputToken, + TransactionStatus, +} from "../../../domain/types/action"; +import type { TokenDto } from "../../../domain/types/tokens"; +import { getBaseYieldType } from "../../../domain/types/yields"; import { useTrackPage } from "../../../hooks/tracking/use-track-page"; import { useYieldType } from "../../../hooks/use-yield-type"; import { useActivityContext } from "../../../providers/activity-provider"; @@ -29,21 +32,29 @@ export const useActionReview = () => { (state) => state.context.selectedAction ).unsafeCoerce(); - const inputToken = useMemo( - () => Maybe.of(selectedAction.inputToken), - [selectedAction] - ) as Maybe; - const selectedYield = useSelector( activityContext, (state) => state.context.selectedYield ).unsafeCoerce(); + const inputToken = useMemo( + () => + Maybe.fromNullable( + getActionInputToken({ + actionDto: selectedAction, + yieldDto: selectedYield, + }) + ), + [selectedAction, selectedYield] + ) as Maybe; + const transactions = useMemo( () => Maybe.fromNullable(selectedAction) .map((a) => a.transactions) - .map((tx) => tx.sort((a, b) => a.stepIndex - b.stepIndex)), + .map((tx) => + [...tx].sort((a, b) => (a.stepIndex ?? 0) - (b.stepIndex ?? 0)) + ), [selectedAction] ); @@ -58,7 +69,7 @@ export const useActionReview = () => { ); const unstakeTitle = useMemo(() => { - switch (selectedYield.metadata.type) { + switch (getBaseYieldType(selectedYield)) { case "staking": case "liquid-staking": return t("position_details.unstake") as string; @@ -72,9 +83,9 @@ export const useActionReview = () => { () => t( `position_details.pending_action_button.${ - selectedAction.type.toLowerCase() as Lowercase - }` as const - ), + selectedAction.type.toLowerCase() as Lowercase + }` as never + ) as string, [selectedAction.type, t] ); @@ -114,7 +125,7 @@ export const useActionReview = () => { (tx) => tx.status === TransactionStatus.WAITING_FOR_SIGNATURE, txs ).chain((tx) => - List.findIndex((i) => i === tx, txs) + List.findIndex((val) => val.id === tx.id, txs) .chainNullable((index) => txs[index - 1]) .filter((prevTx) => prevTx.status === TransactionStatus.CONFIRMED) .map(() => "continue" as LabelKey) diff --git a/packages/widget/src/pages/review/hooks/use-fees.ts b/packages/widget/src/pages/review/hooks/use-fees.ts index 73d1a94b..d8b80b98 100644 --- a/packages/widget/src/pages/review/hooks/use-fees.ts +++ b/packages/widget/src/pages/review/hooks/use-fees.ts @@ -1,9 +1,10 @@ -import type { FeeConfigurationDto, TokenDto } from "@stakekit/api-hooks"; import BigNumber from "bignumber.js"; import { Just, type Maybe } from "purify-ts"; import { useCallback, useMemo } from "react"; import { useTranslation } from "react-i18next"; +import type { FeeConfigurationDto } from "../../../domain/types/fees"; import type { Prices } from "../../../domain/types/price"; +import type { TokenDto, YieldTokenDto } from "../../../domain/types/tokens"; import { bpsToAmount, bpsToPercentage } from "../../../utils"; import { getFeesInUSD } from "../../../utils/formatters"; import type { FeesBps } from "../types"; @@ -11,13 +12,19 @@ import type { FeesBps } from "../types"; export const useFees = ({ amount, feeConfigDto, + yieldFee, prices, token, }: { prices: Maybe; - token: Maybe; + token: Maybe; amount: BigNumber; feeConfigDto: Maybe; + yieldFee?: { + deposit?: string; + management?: string; + performance?: string; + } | null; }): { depositFee: Maybe; managementFee: Maybe; @@ -40,6 +47,21 @@ export const useFees = ({ [] ); + const getPercentAmount = useCallback( + (val: string) => amount.multipliedBy(val).dividedBy(100), + [amount] + ); + + const getPercentInUsd = useCallback( + (val: string) => + getFeesInUSD({ + amount: Just(getPercentAmount(val)), + prices, + token, + }), + [getPercentAmount, prices, token] + ); + const depositFee = useMemo( () => feeConfigDto @@ -49,8 +71,25 @@ export const useFees = ({ inPercentage: getBpsInPercentage(val), explanation: t("review.deposit_fee_explanation"), label: t("review.deposit_fee"), - })), - [feeConfigDto, getFeeInUSD, getBpsInPercentage, t] + })) + .altLazy(() => + Just(yieldFee?.deposit) + .chainNullable((v) => v) + .map((val) => ({ + inUSD: getPercentInUsd(val), + inPercentage: `${val}%`, + explanation: t("review.deposit_fee_explanation"), + label: t("review.deposit_fee"), + })) + ), + [ + feeConfigDto, + getFeeInUSD, + getBpsInPercentage, + getPercentInUsd, + t, + yieldFee, + ] ); const managementFee = useMemo( @@ -62,8 +101,25 @@ export const useFees = ({ inPercentage: getBpsInPercentage(val), explanation: t("review.management_fee_explanation"), label: t("review.management_fee"), - })), - [feeConfigDto, getFeeInUSD, getBpsInPercentage, t] + })) + .altLazy(() => + Just(yieldFee?.management) + .chainNullable((v) => v) + .map((val) => ({ + inUSD: getPercentInUsd(val), + inPercentage: `${val}%`, + explanation: t("review.management_fee_explanation"), + label: t("review.management_fee"), + })) + ), + [ + feeConfigDto, + getFeeInUSD, + getBpsInPercentage, + getPercentInUsd, + t, + yieldFee, + ] ); const performanceFee = useMemo( @@ -75,8 +131,25 @@ export const useFees = ({ inPercentage: getBpsInPercentage(val), explanation: t("review.performance_fee_explanation"), label: t("review.performance_fee"), - })), - [feeConfigDto, getFeeInUSD, getBpsInPercentage, t] + })) + .altLazy(() => + Just(yieldFee?.performance) + .chainNullable((v) => v) + .map((val) => ({ + inUSD: getPercentInUsd(val), + inPercentage: `${val}%`, + explanation: t("review.performance_fee_explanation"), + label: t("review.performance_fee"), + })) + ), + [ + feeConfigDto, + getFeeInUSD, + getBpsInPercentage, + getPercentInUsd, + t, + yieldFee, + ] ); return { depositFee, managementFee, performanceFee }; diff --git a/packages/widget/src/pages/review/hooks/use-pending-review.hook.ts b/packages/widget/src/pages/review/hooks/use-pending-review.hook.ts index c9a63cbb..0986c3c0 100644 --- a/packages/widget/src/pages/review/hooks/use-pending-review.hook.ts +++ b/packages/widget/src/pages/review/hooks/use-pending-review.hook.ts @@ -1,50 +1,63 @@ -import { - type ActionTypes, - actionPending, - useActionPendingGasEstimate, -} from "@stakekit/api-hooks"; -import { useMutation } from "@tanstack/react-query"; +import { useMutation, useQuery } from "@tanstack/react-query"; import { useSelector } from "@xstate/store/react"; import BigNumber from "bignumber.js"; -import { EitherAsync, Maybe } from "purify-ts"; +import { Maybe } from "purify-ts"; import type { ComponentProps } from "react"; import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { useNavigate } from "react-router"; import type { RewardTokenDetails } from "../../../components/molecules/reward-token-details"; -import { getValidStakeSessionTx } from "../../../domain"; +import { getTransactionGasEstimate } from "../../../domain/types/action"; +import type { YieldPendingActionType } from "../../../domain/types/pending-action"; +import { getYieldProviderDetails } from "../../../domain/types/yields"; import { useTokensPrices } from "../../../hooks/api/use-tokens-prices"; import { useGasWarningCheck } from "../../../hooks/use-gas-warning-check"; import { getRewardTokenSymbols } from "../../../hooks/use-reward-token-details/get-reward-token-symbols"; import { useSavedRef } from "../../../hooks/use-saved-ref"; +import { useApiClient } from "../../../providers/api/api-client-provider"; import { usePendingActionStore } from "../../../providers/pending-action-store"; -import { formatNumber } from "../../../utils"; +import { defaultFormattedNumber } from "../../../utils"; import { getGasFeeInUSD } from "../../../utils/formatters"; import { useRegisterFooterButton } from "../../components/footer-outlet/context"; import type { MetaInfoProps } from "../pages/common-page/common.page"; export const usePendingActionReview = () => { const pendingActionStore = usePendingActionStore(); + const apiClient = useApiClient(); const pendingRequest = useSelector( pendingActionStore, (state) => state.context.data ).unsafeCoerce(); - const actionPendingGasEstimate = useActionPendingGasEstimate( - pendingRequest.requestDto, - { query: { staleTime: 0, gcTime: 0 } } - ); + const actionPreviewQuery = useQuery({ + enabled: !!pendingRequest, + queryKey: ["pending-review-action-preview", pendingRequest.requestDto], + retry: false, + queryFn: () => + apiClient.yield.ActionsControllerManageYield({ + payload: pendingRequest.requestDto, + }), + }); const pendingTxGas = useMemo( () => - Maybe.fromNullable(actionPendingGasEstimate.data?.amount).map(BigNumber), - [actionPendingGasEstimate.data] + Maybe.fromNullable(actionPreviewQuery.data) + .map((actionDto) => + actionDto.transactions.reduce((acc, transaction) => { + const decoded = getTransactionGasEstimate(transaction); + + return acc.plus(decoded?.amount ?? 0); + }, new BigNumber(0)) + ) + .map((value) => (value.isZero() ? null : value)) + .chainNullable((value) => value), + [actionPreviewQuery.data] ); const amount = useMemo( - () => new BigNumber(pendingRequest.requestDto.args?.amount ?? 0), - [pendingRequest.requestDto.args?.amount] + () => new BigNumber(pendingRequest.requestDto.arguments?.amount ?? 0), + [pendingRequest.requestDto.arguments?.amount] ); const interactedToken = useMemo( @@ -77,11 +90,11 @@ export const usePendingActionReview = () => { Maybe.of( t( `position_details.pending_action_button.${ - pendingRequest.requestDto.type.toLowerCase() as Lowercase + pendingRequest.requestDto.action.toLowerCase() as Lowercase }` as const ) ), - [pendingRequest.requestDto.type, t] + [pendingRequest.requestDto.action, t] ); const navigate = useNavigate(); @@ -98,13 +111,9 @@ export const usePendingActionReview = () => { const actionPendingMutation = useMutation({ mutationFn: async () => - ( - await EitherAsync(() => actionPending(pendingRequest.requestDto)) - .mapLeft(() => new Error("Pending actions error")) - .chain((actionDto) => - EitherAsync.liftEither(getValidStakeSessionTx(actionDto)) - ) - ).unsafeCoerce(), + actionPreviewQuery.data ?? + (await actionPreviewQuery.refetch()).data ?? + Promise.reject(new Error("Pending actions error")), onSuccess: (data) => { pendingActionStore.send({ type: "setActionDto", data }); navigate("../steps", { relative: "path" }); @@ -116,11 +125,11 @@ export const usePendingActionReview = () => { const rewardTokenDetailsProps = useMemo( () => integrationData - .chainNullable((v) => - v.metadata.provider - ? { provider: v.metadata.provider, rest: v } - : null - ) + .chainNullable((v) => { + const provider = getYieldProviderDetails(v); + + return provider ? { provider, rest: v } : null; + }) .map((v) => { const rewardToken = Maybe.of({ logoUri: v.provider.logoURI, @@ -131,11 +140,11 @@ export const usePendingActionReview = () => { return { type: "pendingAction", - pendingAction: pendingRequest.requestDto.type, + pendingAction: pendingRequest.requestDto.action, rewardToken, } satisfies ComponentProps; }), - [integrationData, pendingRequest.requestDto.type] + [integrationData, pendingRequest.requestDto.action] ); const onClickRef = useSavedRef(onClick); @@ -154,7 +163,10 @@ export const usePendingActionReview = () => { const metaInfo: MetaInfoProps = useMemo(() => ({ showMetaInfo: false }), []); - const formattedAmount = useMemo(() => formatNumber(amount), [amount]); + const formattedAmount = useMemo( + () => defaultFormattedNumber(amount), + [amount] + ); return { integrationData, @@ -166,6 +178,8 @@ export const usePendingActionReview = () => { metaInfo, isGasCheckWarning: !!gasWarningCheck.data, gasCheckLoading: - actionPendingGasEstimate.isLoading || gasWarningCheck.isLoading, + actionPreviewQuery.isLoading || + actionPreviewQuery.isFetching || + gasWarningCheck.isLoading, }; }; diff --git a/packages/widget/src/pages/review/hooks/use-stake-review.hook.ts b/packages/widget/src/pages/review/hooks/use-stake-review.hook.ts index f400daba..1def1333 100644 --- a/packages/widget/src/pages/review/hooks/use-stake-review.hook.ts +++ b/packages/widget/src/pages/review/hooks/use-stake-review.hook.ts @@ -1,26 +1,25 @@ -import { - actionEnter, - useActionEnterGasEstimation, - useYieldGetFeeConfiguration, -} from "@stakekit/api-hooks"; -import { useMutation } from "@tanstack/react-query"; +import { useMutation, useQuery } from "@tanstack/react-query"; import { useSelector } from "@xstate/store/react"; -import { isAxiosError } from "axios"; import BigNumber from "bignumber.js"; -import { EitherAsync, Maybe } from "purify-ts"; +import { Maybe } from "purify-ts"; import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { useNavigate } from "react-router"; -import { getValidStakeSessionTx } from "../../../domain"; +import { getTransactionGasEstimate } from "../../../domain/types/action"; +import { + getYieldCommission, + getYieldProviderDetails, +} from "../../../domain/types/yields"; import { useTokensPrices } from "../../../hooks/api/use-tokens-prices"; import { useEstimatedRewards } from "../../../hooks/use-estimated-rewards"; import { useGasWarningCheck } from "../../../hooks/use-gas-warning-check"; import { useRewardTokenDetails } from "../../../hooks/use-reward-token-details"; import { useSavedRef } from "../../../hooks/use-saved-ref"; import { useYieldType } from "../../../hooks/use-yield-type"; +import { useApiClient } from "../../../providers/api/api-client-provider"; import { useEnterStakeStore } from "../../../providers/enter-stake-store"; import { useSettings } from "../../../providers/settings"; -import { APToPercentage, formatNumber } from "../../../utils"; +import { APToPercentage, defaultFormattedNumber } from "../../../utils"; import { getGasFeeInUSD } from "../../../utils/formatters"; import { useRegisterFooterButton } from "../../components/footer-outlet/context"; import type { MetaInfoProps } from "../pages/common-page/common.page"; @@ -34,30 +33,43 @@ export const useStakeReview = () => { (state) => state.context.data ).unsafeCoerce(); - const integrationId = enterRequest.requestDto.integrationId; - const feeConfigDto = useYieldGetFeeConfiguration(integrationId); + const apiClient = useApiClient(); const stakeAmount = useMemo( - () => new BigNumber(enterRequest.requestDto.args.amount), + () => new BigNumber(enterRequest.requestDto.arguments?.amount ?? 0), [enterRequest] ); - const actionEnterGasEstimation = useActionEnterGasEstimation( - enterRequest.requestDto, - { query: { staleTime: 0, gcTime: 0 } } - ); + const actionPreviewQuery = useQuery({ + enabled: !!enterRequest, + queryKey: ["stake-review-action-preview", enterRequest.requestDto], + retry: false, + queryFn: () => + apiClient.yield.ActionsControllerEnterYield({ + payload: enterRequest.requestDto, + }), + }); const stakeEnterTxGas = useMemo( () => - Maybe.fromNullable(actionEnterGasEstimation.data?.amount).map(BigNumber), - [actionEnterGasEstimation.data] + Maybe.fromNullable(actionPreviewQuery.data) + .map((actionDto) => + actionDto.transactions.reduce((acc, transaction) => { + const decoded = getTransactionGasEstimate(transaction); + + return acc.plus(decoded?.amount ?? 0); + }, new BigNumber(0)) + ) + .map((value) => (value.isZero() ? null : value)) + .chainNullable((value) => value), + [actionPreviewQuery.data] ); const gasCheckWarning = useGasWarningCheck({ gasAmount: stakeEnterTxGas, gasFeeToken: enterRequest.gasFeeToken, - address: enterRequest.requestDto.addresses.address, - additionalAddresses: enterRequest.requestDto.addresses.additionalAddresses, + address: enterRequest.addresses.address, + additionalAddresses: enterRequest.addresses.additionalAddresses, isStake: true, stakeAmount, stakeToken: enterRequest.selectedToken, @@ -73,8 +85,8 @@ export const useStakeReview = () => { ); const selectedProviderYieldId = useMemo( - () => Maybe.fromNullable(enterRequest.requestDto.args.providerId), - [enterRequest.requestDto.args.providerId] + () => Maybe.fromNullable(enterRequest.requestDto.arguments?.providerId), + [enterRequest.requestDto.arguments?.providerId] ); const rewardToken = useRewardTokenDetails(selectedStake); @@ -89,7 +101,10 @@ export const useStakeReview = () => { "" ); - const amount = useMemo(() => formatNumber(stakeAmount), [stakeAmount]); + const amount = useMemo( + () => defaultFormattedNumber(stakeAmount), + [stakeAmount] + ); const interestRate = useMemo( () => estimatedRewards.mapOrDefault((r) => r.percentage.toString(), ""), [estimatedRewards] @@ -113,9 +128,21 @@ export const useStakeReview = () => { const { depositFee, managementFee, performanceFee } = useFees({ amount: stakeAmount, token: selectedToken, - feeConfigDto: useMemo( - () => Maybe.fromNullable(feeConfigDto.data), - [feeConfigDto.data] + feeConfigDto: Maybe.empty(), + yieldFee: useMemo( + () => + ( + enterRequest.selectedStake as typeof enterRequest.selectedStake & { + mechanics?: { + fee?: { + deposit?: string; + management?: string; + performance?: string; + }; + }; + } + ).mechanics?.fee ?? null, + [enterRequest.selectedStake] ), prices: useMemo( () => Maybe.fromNullable(pricesState.data), @@ -123,30 +150,19 @@ export const useStakeReview = () => { ), }); - const metadata = selectedStake.map((y) => y.metadata); + const metadata = selectedStake.map((yieldDto) => ({ + logoURI: yieldDto.metadata.logoURI, + name: yieldDto.metadata.name, + provider: getYieldProviderDetails(yieldDto) ?? undefined, + })); const navigate = useNavigate(); const enterMutation = useMutation({ mutationFn: async () => - ( - await EitherAsync(() => actionEnter(enterRequest.requestDto)) - .mapLeft((e) => { - if ( - isAxiosError(e) && - StakingNotAllowedError.isStakingNotAllowedErrorDto( - e.response?.data - ) - ) { - return new StakingNotAllowedError(); - } - - return new Error("Stake enter error"); - }) - .chain((actionDto) => - EitherAsync.liftEither(getValidStakeSessionTx(actionDto)) - ) - ).unsafeCoerce(), + actionPreviewQuery.data ?? + (await actionPreviewQuery.refetch()).data ?? + Promise.reject(new Error("Stake enter error")), onSuccess: (data) => { enterStore.send({ type: "setActionDto", data }); navigate("/steps"); @@ -191,9 +207,9 @@ export const useStakeReview = () => { const commissionFee = useMemo( () => selectedStake - .chainNullable((y) => y.metadata.commission) + .chainNullable(getYieldCommission) .map((commission) => - commission.reduce((acc, curr) => acc + curr.value, 0) + commission.reduce((acc, curr) => acc + curr.value, 0) ) .map((val) => `${APToPercentage(val)}%`), [selectedStake] @@ -210,23 +226,13 @@ export const useStakeReview = () => { metaInfo, isGasCheckWarning: !!gasCheckWarning.data, gasCheckLoading: - actionEnterGasEstimation.isLoading || gasCheckWarning.isLoading, + actionPreviewQuery.isLoading || + actionPreviewQuery.isFetching || + gasCheckWarning.isLoading, depositFee, managementFee, performanceFee, - feeConfigLoading: feeConfigDto.isPending, + feeConfigLoading: actionPreviewQuery.isLoading, commissionFee, }; }; - -class StakingNotAllowedError extends Error { - static isStakingNotAllowedErrorDto = (e: unknown) => { - const dto = e as undefined | { type: string; code: number }; - - return dto && dto.code === 422 && dto.type === "STAKING_ERROR"; - }; - - constructor() { - super("Staking not allowed, needs unstaking and trying again"); - } -} diff --git a/packages/widget/src/pages/review/hooks/use-unstake-review.hook.ts b/packages/widget/src/pages/review/hooks/use-unstake-review.hook.ts index 974778b8..17eaa908 100644 --- a/packages/widget/src/pages/review/hooks/use-unstake-review.hook.ts +++ b/packages/widget/src/pages/review/hooks/use-unstake-review.hook.ts @@ -1,4 +1,4 @@ -import { useActionExitGasEstimate } from "@stakekit/api-hooks"; +import { useQuery } from "@tanstack/react-query"; import { useSelector } from "@xstate/store/react"; import BigNumber from "bignumber.js"; import { Maybe } from "purify-ts"; @@ -7,12 +7,18 @@ import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { useNavigate } from "react-router"; import type { RewardTokenDetails } from "../../../components/molecules/reward-token-details"; +import { getTransactionGasEstimate } from "../../../domain/types/action"; +import { + getBaseYieldType, + getYieldProviderDetails, +} from "../../../domain/types/yields"; import { useTokensPrices } from "../../../hooks/api/use-tokens-prices"; import { useGasWarningCheck } from "../../../hooks/use-gas-warning-check"; import { getRewardTokenSymbols } from "../../../hooks/use-reward-token-details/get-reward-token-symbols"; import { useSavedRef } from "../../../hooks/use-saved-ref"; +import { useApiClient } from "../../../providers/api/api-client-provider"; import { useExitStakeStore } from "../../../providers/exit-stake-store"; -import { formatNumber } from "../../../utils"; +import { defaultFormattedNumber } from "../../../utils"; import { getGasFeeInUSD } from "../../../utils/formatters"; import { useRegisterFooterButton } from "../../components/footer-outlet/context"; import { useUnstakeMachine } from "../../position-details/hooks/use-unstake-machine"; @@ -24,14 +30,31 @@ export const useUnstakeActionReview = () => { (state) => state.context.data ).unsafeCoerce(); - const actionExitGasEstimate = useActionExitGasEstimate( - exitRequest.requestDto, - { query: { staleTime: 0, gcTime: 0 } } - ); + const apiClient = useApiClient(); + + const actionPreviewQuery = useQuery({ + enabled: !!exitRequest, + queryKey: ["unstake-review-action-preview", exitRequest.requestDto], + retry: false, + queryFn: () => + apiClient.yield.ActionsControllerExitYield({ + payload: exitRequest.requestDto, + }), + }); const stakeExitTxGas = useMemo( - () => Maybe.fromNullable(actionExitGasEstimate.data?.amount).map(BigNumber), - [actionExitGasEstimate.data] + () => + Maybe.fromNullable(actionPreviewQuery.data) + .map((actionDto) => + actionDto.transactions.reduce((acc, transaction) => { + const decoded = getTransactionGasEstimate(transaction); + + return acc.plus(decoded?.amount ?? 0); + }, new BigNumber(0)) + ) + .map((value) => (value.isZero() ? null : value)) + .chainNullable((value) => value), + [actionPreviewQuery.data] ); const interactedToken = useMemo( @@ -50,24 +73,27 @@ export const useUnstakeActionReview = () => { }); const amount = useMemo( - () => new BigNumber(exitRequest.requestDto.args.amount ?? 0), - [exitRequest.requestDto.args.amount] + () => new BigNumber(exitRequest.requestDto.arguments?.amount ?? 0), + [exitRequest.requestDto.arguments?.amount] ); const gasWarningCheck = useGasWarningCheck({ gasAmount: stakeExitTxGas, gasFeeToken: exitRequest.gasFeeToken, - address: exitRequest.requestDto.addresses.address, - additionalAddresses: exitRequest.requestDto.addresses.additionalAddresses, + address: exitRequest.addresses.address, + additionalAddresses: exitRequest.addresses.additionalAddresses, isStake: false, }); const { t } = useTranslation(); - const formattedAmount = useMemo(() => formatNumber(amount), [amount]); + const formattedAmount = useMemo( + () => defaultFormattedNumber(amount), + [amount] + ); const title: Maybe = integrationData.map((d) => { - switch (d.metadata.type) { + switch (getBaseYieldType(d)) { case "staking": case "liquid-staking": return t("position_details.unstake") as string; @@ -90,9 +116,11 @@ export const useUnstakeActionReview = () => { ); const rewardTokenDetailsProps = integrationData - .chainNullable((v) => - v.metadata.provider ? { provider: v.metadata.provider, rest: v } : null - ) + .chainNullable((v) => { + const provider = getYieldProviderDetails(v); + + return provider ? { provider, rest: v } : null; + }) .map((v) => { const rewardToken = Maybe.of({ logoUri: v.provider.logoURI, @@ -156,7 +184,9 @@ export const useUnstakeActionReview = () => { onCloseUnstakeSignMessage, showUnstakeSignMessagePopup, gasCheckLoading: - actionExitGasEstimate.isLoading || gasWarningCheck.isLoading, + actionPreviewQuery.isLoading || + actionPreviewQuery.isFetching || + gasWarningCheck.isLoading, isGasCheckWarning: !!gasWarningCheck.data, }; }; diff --git a/packages/widget/src/pages/review/pages/action-review.page.tsx b/packages/widget/src/pages/review/pages/action-review.page.tsx index 5dbf07fc..0f26cd6a 100644 --- a/packages/widget/src/pages/review/pages/action-review.page.tsx +++ b/packages/widget/src/pages/review/pages/action-review.page.tsx @@ -6,6 +6,7 @@ import { Divider } from "../../../components/atoms/divider"; import { InfoIcon } from "../../../components/atoms/icons/info"; import { ToolTip } from "../../../components/atoms/tooltip"; import { Text } from "../../../components/atoms/typography/text"; +import { getYieldProviderDetails } from "../../../domain/types/yields"; import { useTrackEvent } from "../../../hooks/tracking/use-track-event"; import { AnimationPage } from "../../../navigation/containers/animation-page"; import { capitalizeFirstLetters } from "../../../utils/formatters"; @@ -40,7 +41,11 @@ export const ActionReviewPage = () => { diff --git a/packages/widget/src/pages/review/pages/common-page/common.page.tsx b/packages/widget/src/pages/review/pages/common-page/common.page.tsx index 0e62d7c8..92038dac 100644 --- a/packages/widget/src/pages/review/pages/common-page/common.page.tsx +++ b/packages/widget/src/pages/review/pages/common-page/common.page.tsx @@ -1,4 +1,3 @@ -import type { TokenDto, YieldMetadataDto } from "@stakekit/api-hooks"; import type { Maybe } from "purify-ts"; import type { ComponentProps, ReactNode } from "react"; import { Trans, useTranslation } from "react-i18next"; @@ -10,6 +9,7 @@ import { ToolTip } from "../../../../components/atoms/tooltip"; import { Text } from "../../../../components/atoms/typography/text"; import { WarningBox } from "../../../../components/atoms/warning-box"; import type { RewardTokenDetails } from "../../../../components/molecules/reward-token-details"; +import type { TokenDto, YieldTokenDto } from "../../../../domain/types/tokens"; import { useTrackEvent } from "../../../../hooks/tracking/use-track-event"; import { AnimationPage } from "../../../../navigation/containers/animation-page"; import { MetaInfo } from "../../../components/meta-info"; @@ -25,8 +25,8 @@ export type MetaInfoProps = type ReviewPageProps = { fee: string; title: string; - token: Maybe; - metadata: Maybe; + token: Maybe; + metadata: ComponentProps["metadata"]; info: ReactNode; rewardTokenDetailsProps: Maybe>; isGasCheckError: boolean; diff --git a/packages/widget/src/pages/review/pages/common-page/components/review-top-section.tsx b/packages/widget/src/pages/review/pages/common-page/components/review-top-section.tsx index fdfad48b..472de350 100644 --- a/packages/widget/src/pages/review/pages/common-page/components/review-top-section.tsx +++ b/packages/widget/src/pages/review/pages/common-page/components/review-top-section.tsx @@ -1,4 +1,3 @@ -import type { TokenDto, YieldMetadataDto } from "@stakekit/api-hooks"; import { motion } from "motion/react"; import { Maybe } from "purify-ts"; import type { ComponentProps, ReactNode } from "react"; @@ -8,12 +7,16 @@ import { TokenIcon } from "../../../../../components/atoms/token-icon"; import { Heading } from "../../../../../components/atoms/typography/heading"; import { Text } from "../../../../../components/atoms/typography/text"; import type { RewardTokenDetails } from "../../../../../components/molecules/reward-token-details"; +import type { + TokenDto, + YieldTokenDto, +} from "../../../../../domain/types/tokens"; import { headingStyles } from "../../style.css"; type Props = { title: string; - token: Maybe; - metadata: Maybe; + token: Maybe; + metadata: Maybe["metadata"]>; info: ReactNode; rewardTokenDetailsProps?: Maybe>; }; diff --git a/packages/widget/src/pages/review/pages/pending-review.page.tsx b/packages/widget/src/pages/review/pages/pending-review.page.tsx index 8cd53ff0..ef380663 100644 --- a/packages/widget/src/pages/review/pages/pending-review.page.tsx +++ b/packages/widget/src/pages/review/pages/pending-review.page.tsx @@ -1,5 +1,6 @@ import { Maybe } from "purify-ts"; import { useMemo } from "react"; +import { getYieldProviderDetails } from "../../../domain/types/yields"; import { useTrackPage } from "../../../hooks/tracking/use-track-page"; import { usePendingActionReview } from "../hooks/use-pending-review.hook"; import { ReviewPage } from "./common-page/common.page"; @@ -45,7 +46,11 @@ export const PendingReviewPage = () => { performanceFee={performanceFee} feeConfigLoading={feeConfigLoading} info={info} - metadata={integrationData.map((val) => val.metadata)} + metadata={integrationData.map((yieldDto) => ({ + logoURI: yieldDto.metadata.logoURI, + name: yieldDto.metadata.name, + provider: getYieldProviderDetails(yieldDto) ?? undefined, + }))} token={token} isGasCheckError={isGasCheckWarning} loading={gasCheckLoading} diff --git a/packages/widget/src/pages/review/pages/unstake-review.page.tsx b/packages/widget/src/pages/review/pages/unstake-review.page.tsx index db55b463..d9f6a0a6 100644 --- a/packages/widget/src/pages/review/pages/unstake-review.page.tsx +++ b/packages/widget/src/pages/review/pages/unstake-review.page.tsx @@ -1,5 +1,6 @@ import { Maybe } from "purify-ts"; import { useMemo } from "react"; +import { getYieldProviderDetails } from "../../../domain/types/yields"; import { useTrackPage } from "../../../hooks/tracking/use-track-page"; import { UnstakeSignPopup } from "../../position-details/components/unstake-sign-popup"; import { useUnstakeActionReview } from "../hooks/use-unstake-review.hook"; @@ -50,7 +51,11 @@ export const UnstakeReviewPage = () => { performanceFee={performanceFee} feeConfigLoading={feeConfigLoading} info={info} - metadata={integrationData.map((d) => d.metadata)} + metadata={integrationData.map((yieldDto) => ({ + logoURI: yieldDto.metadata.logoURI, + name: yieldDto.metadata.name, + provider: getYieldProviderDetails(yieldDto) ?? undefined, + }))} token={token} isGasCheckError={isGasCheckWarning} loading={gasCheckLoading} diff --git a/packages/widget/src/pages/steps/hooks/errors.ts b/packages/widget/src/pages/steps/hooks/errors.ts index 221529ec..9231bb96 100644 --- a/packages/widget/src/pages/steps/hooks/errors.ts +++ b/packages/widget/src/pages/steps/hooks/errors.ts @@ -14,14 +14,6 @@ export class SignError extends Error { export class GetStakeSessionError extends Error { name = "GetStakeSessionError"; } -export class TransactionConstructError extends Error { - _tag = "TransactionConstructError"; - - constructor(message?: string) { - super(message); - this._tag = "TransactionConstructError"; - } -} export class TXCheckError extends Error { name = "TXCheckError"; } diff --git a/packages/widget/src/pages/steps/hooks/use-steps-machine.hook.ts b/packages/widget/src/pages/steps/hooks/use-steps-machine.hook.ts index f9fc8019..55c18bf5 100644 --- a/packages/widget/src/pages/steps/hooks/use-steps-machine.hook.ts +++ b/packages/widget/src/pages/steps/hooks/use-steps-machine.hook.ts @@ -1,27 +1,13 @@ -import type { - ActionDto, - TransactionDto, - TransactionFormat, -} from "@stakekit/api-hooks"; -import { - transactionConstruct, - transactionGetTransaction, - transactionGetTransactionStatusFromId, - transactionSubmit, - transactionSubmitHash, -} from "@stakekit/api-hooks"; import { useMachine } from "@xstate/react"; -import { isAxiosError } from "axios"; import { EitherAsync, Left, List, Maybe, Right } from "purify-ts"; import { type RefObject, useMemo, useState } from "react"; import { assign, emit, setup } from "xstate"; -import { getAverageGasMode } from "../../../common/get-gas-mode-value"; -import { withRequestErrorRetry } from "../../../common/utils"; import { isTxError } from "../../../domain"; +import type { ActionDto, TransactionDto } from "../../../domain/types/action"; import type { ActionMeta } from "../../../domain/types/wallets/generic-wallet"; import { useTrackEvent } from "../../../hooks/tracking/use-track-event"; import { useSavedRef } from "../../../hooks/use-saved-ref"; -import { useSettings } from "../../../providers/settings"; +import { useApiClient } from "../../../providers/api/api-client-provider"; import { useSKWallet } from "../../../providers/sk-wallet"; import type { SendTransactionError, @@ -32,7 +18,6 @@ import { SignError, SubmitError, SubmitHashError, - TransactionConstructError, TXCheckError, } from "./errors"; @@ -40,11 +25,7 @@ type TxMeta = { url: string | null; signedTx: string | null; broadcasted: boolean | null; - signError: - | SendTransactionError - | TransactionDecodeError - | TransactionConstructError - | null; + signError: SendTransactionError | TransactionDecodeError | null; txCheckError: GetStakeSessionError | null; done: boolean; }; @@ -66,31 +47,31 @@ type SignRes = export const useStepsMachine = ({ transactions, - integrationId, + yieldId, actionMeta, }: { transactions: ActionDto["transactions"]; - integrationId: ActionDto["integrationId"]; + yieldId: ActionDto["yieldId"]; actionMeta: ActionMeta; }) => { - const { signTransaction, signMessage, isLedgerLive } = useSKWallet(); - const { preferredTransactionFormat } = useSettings(); + const { signTransaction, signMessage } = useSKWallet(); + const apiClient = useApiClient(); const trackEvent = useTrackEvent(); const sortedTransactions = useMemo( - () => transactions.sort((a, b) => a.stepIndex - b.stepIndex), + () => + [...transactions].sort((a, b) => (a.stepIndex ?? 0) - (b.stepIndex ?? 0)), [transactions] ); const machineParams = useSavedRef({ transactions: sortedTransactions, - integrationId, - isLedgerLive, + yieldId, trackEvent, signMessage, signTransaction, actionMeta, - preferredTransactionFormat, + apiClient, }); return useMachine(useState(() => getMachine(machineParams))[0]); @@ -100,26 +81,18 @@ const getMachine = ( ref: Readonly< RefObject<{ transactions: ActionDto["transactions"]; - integrationId: ActionDto["integrationId"]; - isLedgerLive: boolean; + yieldId: ActionDto["yieldId"]; trackEvent: ReturnType; signMessage: ReturnType["signMessage"]; signTransaction: ReturnType["signTransaction"]; actionMeta: ActionMeta; - preferredTransactionFormat?: TransactionFormat; + apiClient: ReturnType; }> > ) => { - const txConstruct = (...params: Parameters) => - withRequestErrorRetry({ - fn: () => transactionConstruct(...params), - shouldRetry: (e, retryCount) => - retryCount <= 3 && isAxiosError(e) && e.response?.status === 404, - }).mapLeft(() => new Error("Transaction construct error")); - const initContext = getInitContext( ref.current.transactions, - ref.current.integrationId + ref.current.yieldId ); return setup({ @@ -139,11 +112,7 @@ const getMachine = ( } | { type: "__SIGN_ERROR__"; - val: - | SendTransactionError - | TransactionDecodeError - | TransactionConstructError - | SignError; + val: SendTransactionError | TransactionDecodeError | SignError; } | { type: "__BROADCAST_SUCCESS__" } | { type: "__BROADCAST_ERROR__"; val: Error | SubmitHashError } @@ -237,94 +206,83 @@ const getMachine = ( EitherAsync.liftEither( context.currentTxMeta .chainNullable((v) => context.txStates[v.idx].tx) - .toEither(new TransactionConstructError("missing tx")) + .toEither(new SignError({ network: "unknown", txId: "unknown" })) ) .chain< - | TransactionConstructError - | SendTransactionError - | TransactionDecodeError - | SignError, + SendTransactionError | TransactionDecodeError | SignError, SignRes - >((tx) => - getAverageGasMode({ network: tx.network }) - .chainLeft(async () => Right(null)) - .chain((gas) => - txConstruct(tx.id, { - gasArgs: gas?.gasArgs, - ledgerWalletAPICompatible: ref.current.isLedgerLive, - ...(!!ref.current.preferredTransactionFormat && { - transactionFormat: ref.current.preferredTransactionFormat, - }), - }).mapLeft(() => new TransactionConstructError()) - ) - .chain< - | TransactionConstructError - | SendTransactionError - | TransactionDecodeError - | SignError, - SignRes - >((constructedTx) => { - if ( - constructedTx.status === "BROADCASTED" || - constructedTx.status === "CONFIRMED" - ) { - return EitherAsync.liftEither( - Right({ type: "broadcasted" }) - ); - } - - if (!constructedTx.unsignedTransaction) { - return EitherAsync.liftEither( - Left(new TransactionConstructError()) - ); - } - - if (constructedTx.isMessage) { - return ref.current - .signMessage(constructedTx.unsignedTransaction) - .map((val) => ({ - type: "regular" as const, - data: { signedTx: val, broadcasted: false }, - })) - .mapLeft( - () => - new SignError({ - network: constructedTx.network, - txId: constructedTx.id, - }) - ); - } + >((tx) => { + if (tx.status === "BROADCASTED" || tx.status === "CONFIRMED") { + return EitherAsync.liftEither(Right({ type: "broadcasted" })); + } - return ref.current - .signTransaction({ - tx: constructedTx.unsignedTransaction, - ledgerHwAppId: constructedTx.ledgerHwAppId, - txMeta: { - ...ref.current.actionMeta, - txId: constructedTx.id, - txType: constructedTx.type, - annotatedTransaction: - constructedTx.annotatedTransaction, - structuredTransaction: - constructedTx.structuredTransaction, - }, - network: constructedTx.network, + if (!tx.unsignedTransaction) { + return EitherAsync.liftEither( + Left( + new SignError({ + network: tx.network, + txId: tx.id, }) - .map((val) => ({ - ...val, - network: constructedTx.network, - txId: constructedTx.id, - })) - .ifRight(() => - ref.current.trackEvent("txSigned", { - txId: constructedTx.id, - network: constructedTx.network, - yieldId: context.yieldId, + ) + ); + } + + if (tx.isMessage) { + const unsignedMessage = + typeof tx.unsignedTransaction === "string" + ? tx.unsignedTransaction + : JSON.stringify(tx.unsignedTransaction); + + return ref.current + .signMessage(unsignedMessage) + .map((val) => ({ + type: "regular" as const, + data: { signedTx: val, broadcasted: false }, + })) + .mapLeft( + () => + new SignError({ + network: tx.network, + txId: tx.id, }) - ) - .map((val) => ({ type: "regular", data: val })); + ); + } + + const unsignedTransaction = + typeof tx.unsignedTransaction === "string" + ? tx.unsignedTransaction + : JSON.stringify(tx.unsignedTransaction); + + return ref.current + .signTransaction({ + tx: unsignedTransaction, + ledgerHwAppId: null, + txMeta: { + ...ref.current.actionMeta, + txId: tx.id, + txType: tx.type, + annotatedTransaction: tx.annotatedTransaction, + gasEstimate: tx.gasEstimate, + structuredTransaction: tx.structuredTransaction, + }, + network: tx.network as Parameters< + typeof ref.current.signTransaction + >[0]["network"], }) - ) + .map((val) => ({ + ...val, + network: tx.network, + txId: tx.id, + })) + .ifRight(() => + ref.current.trackEvent("txSigned", { + txId: tx.id, + network: tx.network, + yieldId: context.yieldId, + }) + ) + .map((val) => ({ type: "regular", data: val })); + }) .caseOf({ Left: (l) => { console.log(l); @@ -401,9 +359,10 @@ const getMachine = ( .chain((currentTx) => { if (currentTx.meta.broadcasted) { return EitherAsync(() => - transactionSubmitHash(currentTx.tx.id, { - hash: currentTx.meta.signedTx!, - }) + ref.current.apiClient.yield.TransactionsControllerSubmitTransactionHash( + currentTx.tx.id, + { payload: { hash: currentTx.meta.signedTx! } } + ) ) .mapLeft(() => new SubmitHashError()) .ifRight(() => { @@ -417,9 +376,14 @@ const getMachine = ( } return EitherAsync(() => - transactionSubmit(currentTx.tx.id, { - signedTransaction: currentTx.meta.signedTx!, - }) + ref.current.apiClient.yield.TransactionsControllerSubmitTransaction( + currentTx.tx.id, + { + payload: { + signedTransaction: currentTx.meta.signedTx!, + }, + } + ) ) .mapLeft(() => new SubmitError()) .ifRight(() => { @@ -490,23 +454,16 @@ const getMachine = ( .toEither(new Error("missing tx")) ) .chain((currentTx) => - withRequestErrorRetry({ - fn: () => - transactionGetTransactionStatusFromId(currentTx.tx.id), - shouldRetry: (e, retryCount) => - retryCount <= 3 && - isAxiosError(e) && - e.response?.status === 404, - }) - .map((res) => ({ url: res.url, status: res.status })) - .chainLeft(() => - EitherAsync(() => - transactionGetTransaction(currentTx.tx.id) - ).map((res) => ({ - url: res.explorerUrl, - status: res.status, - })) + EitherAsync(() => + ref.current.apiClient.yield.TransactionsControllerGetTransaction( + currentTx.tx.id, + undefined ) + ) + .map((res) => ({ + url: res.explorerUrl, + status: res.status, + })) .mapLeft(() => new TXCheckError()) .chain((val) => EitherAsync.liftEither( @@ -549,7 +506,7 @@ const getMachine = ( ...val.meta, signError: null, txCheckError: null, - url: v.url, + url: v.url ?? null, done: true, }, } @@ -618,7 +575,7 @@ const getMachine = ( const getInitContext = ( transactions: ActionDto["transactions"], - integrationId: ActionDto["integrationId"] + yieldId: ActionDto["yieldId"] ) => { if (!transactions.length) { return { @@ -632,16 +589,28 @@ const getInitContext = ( const txStates = transactions.map((dto) => ({ tx: dto, meta: { - broadcasted: null, + broadcasted: + dto.status === "BROADCASTED" || dto.status === "CONFIRMED" + ? true + : null, signedTx: null, - url: null, + url: dto.explorerUrl ?? null, signError: null, txCheckError: null, - done: false, + done: dto.status === "CONFIRMED" || dto.status === "SKIPPED", }, })); - const currentTxIdx = 0; + const currentTxIdx = txStates.findIndex((txState) => !txState.meta.done); + + if (currentTxIdx === -1) { + return { + enabled: false, + txStates, + currentTxMeta: null, + yieldId, + }; + } const currentTxMeta = { idx: currentTxIdx, @@ -652,6 +621,6 @@ const getInitContext = ( enabled: true, txStates, currentTxMeta, - yieldId: integrationId, + yieldId, }; }; diff --git a/packages/widget/src/pages/steps/hooks/use-steps.hook.ts b/packages/widget/src/pages/steps/hooks/use-steps.hook.ts index 48c9bbb6..69f4f2bd 100644 --- a/packages/widget/src/pages/steps/hooks/use-steps.hook.ts +++ b/packages/widget/src/pages/steps/hooks/use-steps.hook.ts @@ -1,7 +1,8 @@ -import type { ActionDto, TransactionType } from "@stakekit/api-hooks"; import { useEffect, useLayoutEffect, useMemo } from "react"; import { useTranslation } from "react-i18next"; import { useNavigate } from "react-router"; +import type { ActionDto, TransactionType } from "../../../domain/types/action"; +import type { TokenDto, YieldTokenDto } from "../../../domain/types/tokens"; import type { ActionMeta } from "../../../domain/types/wallets/generic-wallet"; import { useInvalidateTokenBalances } from "../../../hooks/api/use-token-balances-scan"; import { useInvalidateYieldBalances } from "../../../hooks/api/use-yield-balances-scan"; @@ -14,12 +15,14 @@ import type { TxState } from "./use-steps-machine.hook"; import { useStepsMachine } from "./use-steps-machine.hook"; export const useSteps = ({ + inputToken, session, onSignSuccess, providersDetails, }: { onSignSuccess?: () => void; session: ActionDto; + inputToken?: TokenDto | YieldTokenDto; providersDetails: ReturnType; }) => { const navigate = useNavigate(); @@ -30,8 +33,12 @@ export const useSteps = ({ (): ActionMeta => ({ actionId: session.id, actionType: session.type, + address: session.address, amount: session.amount, - inputToken: session.inputToken, + amountRaw: session.amountRaw, + rawArguments: session.rawArguments, + yieldId: session.yieldId, + inputToken, providersDetails: providersDetails .map((providerDetail) => providerDetail.map((v) => ({ @@ -45,12 +52,12 @@ export const useSteps = ({ ) .orDefault([]), }), - [session, providersDetails] + [session, providersDetails, inputToken] ); const [machineState, send, actorRef] = useStepsMachine({ transactions: session.transactions, - integrationId: session.integrationId, + yieldId: session.yieldId, actionMeta, }); diff --git a/packages/widget/src/pages/steps/pages/activity-steps.page.tsx b/packages/widget/src/pages/steps/pages/activity-steps.page.tsx index c946e7e3..1b41c0bd 100644 --- a/packages/widget/src/pages/steps/pages/activity-steps.page.tsx +++ b/packages/widget/src/pages/steps/pages/activity-steps.page.tsx @@ -1,6 +1,10 @@ import { useSelector } from "@xstate/store/react"; import { Maybe } from "purify-ts"; import { useMemo } from "react"; +import { + getActionInputToken, + getActionValidatorAddresses, +} from "../../../domain/types/action"; import { useTrackPage } from "../../../hooks/tracking/use-track-page"; import { useProvidersDetails } from "../../../hooks/use-provider-details"; import { useActivityContext } from "../../../providers/activity-provider"; @@ -24,13 +28,20 @@ export const ActivityStepsPage = () => { const providersDetails = useProvidersDetails({ integrationData: useMemo(() => Maybe.of(selectedYield), [selectedYield]), validatorsAddresses: useMemo( - () => Maybe.of(selectedAction.validatorAddresses ?? []), - [selectedAction.validatorAddresses] + () => Maybe.of(getActionValidatorAddresses(selectedAction) ?? []), + [selectedAction] ), selectedProviderYieldId: Maybe.empty(), }); return ( - + ); }; diff --git a/packages/widget/src/pages/steps/pages/common.page.tsx b/packages/widget/src/pages/steps/pages/common.page.tsx index 86e310e4..b195400a 100644 --- a/packages/widget/src/pages/steps/pages/common.page.tsx +++ b/packages/widget/src/pages/steps/pages/common.page.tsx @@ -1,9 +1,10 @@ -import type { ActionDto } from "@stakekit/api-hooks"; import { motion } from "motion/react"; import { useTranslation } from "react-i18next"; import { Box } from "../../../components/atoms/box"; import { Button } from "../../../components/atoms/button"; import { Heading } from "../../../components/atoms/typography/heading"; +import type { ActionDto } from "../../../domain/types/action"; +import type { TokenDto, YieldTokenDto } from "../../../domain/types/tokens"; import type { useProvidersDetails } from "../../../hooks/use-provider-details"; import { AnimationPage } from "../../../navigation/containers/animation-page"; import { useIsDashboard } from "../../../pages-dashboard/providers/dashboard-context"; @@ -15,12 +16,14 @@ import { TxState } from "./tx-state"; type StepsPageProps = { session: ActionDto; + inputToken?: TokenDto | YieldTokenDto; onSignSuccess?: () => void; providersDetails: ReturnType; }; export const StepsPage = ({ session, + inputToken, onSignSuccess, providersDetails, }: StepsPageProps) => { @@ -28,6 +31,7 @@ export const StepsPage = ({ const isDashboard = useIsDashboard(); const { retry, txStates } = useSteps({ + inputToken, session, onSignSuccess, providersDetails, diff --git a/packages/widget/src/pages/steps/pages/pending-steps.page.tsx b/packages/widget/src/pages/steps/pages/pending-steps.page.tsx index e7fcb46e..ae34ece4 100644 --- a/packages/widget/src/pages/steps/pages/pending-steps.page.tsx +++ b/packages/widget/src/pages/steps/pages/pending-steps.page.tsx @@ -36,6 +36,7 @@ export const PendingStepsPage = () => { return ( diff --git a/packages/widget/src/pages/steps/pages/stake-steps.page.tsx b/packages/widget/src/pages/steps/pages/stake-steps.page.tsx index ea71c918..27a0daa6 100644 --- a/packages/widget/src/pages/steps/pages/stake-steps.page.tsx +++ b/packages/widget/src/pages/steps/pages/stake-steps.page.tsx @@ -37,6 +37,7 @@ export const StakeStepsPage = () => { return ( { {t("steps.tx_of", { count: count.total, current: count.current, - type: t(`steps.tx_type.${txState.tx.type}`, { - context: isEthenaUsdeStaking(session.integrationId) - ? "ETHENA_USDE" - : undefined, - }), + type: t( + `steps.tx_type.${txState.tx.type}` as never, + { + context: isEthenaUsdeStaking(session.yieldId) + ? "ETHENA_USDE" + : undefined, + } as never + ) as unknown as string, })} diff --git a/packages/widget/src/pages/steps/pages/unstake-steps.page.tsx b/packages/widget/src/pages/steps/pages/unstake-steps.page.tsx index 2c0ab520..56baef36 100644 --- a/packages/widget/src/pages/steps/pages/unstake-steps.page.tsx +++ b/packages/widget/src/pages/steps/pages/unstake-steps.page.tsx @@ -35,6 +35,7 @@ export const UnstakeStepsPage = () => { return ( diff --git a/packages/widget/src/providers/activity-provider/index.tsx b/packages/widget/src/providers/activity-provider/index.tsx index 23eaa620..4d7a167b 100644 --- a/packages/widget/src/providers/activity-provider/index.tsx +++ b/packages/widget/src/providers/activity-provider/index.tsx @@ -1,18 +1,19 @@ -import type { ActionDto, YieldDto } from "@stakekit/api-hooks"; import { createStore } from "@xstate/store"; import { Maybe } from "purify-ts"; import { createContext, type PropsWithChildren, useContext } from "react"; +import type { ActionDto } from "../../domain/types/action"; +import type { Yield } from "../../domain/types/yields"; const store = createStore({ context: { selectedAction: Maybe.empty() as Maybe, - selectedYield: Maybe.empty() as Maybe, + selectedYield: Maybe.empty() as Maybe, }, on: { setSelectedAction: ( _, event: { - data: Maybe<{ selectedAction: ActionDto; selectedYield: YieldDto }>; + data: Maybe<{ selectedAction: ActionDto; selectedYield: Yield }>; } ) => ({ selectedAction: event.data.map(({ selectedAction }) => selectedAction), diff --git a/packages/widget/src/providers/api/api-client-provider.tsx b/packages/widget/src/providers/api/api-client-provider.tsx index 95341e35..078cffa2 100644 --- a/packages/widget/src/providers/api/api-client-provider.tsx +++ b/packages/widget/src/providers/api/api-client-provider.tsx @@ -1,65 +1,25 @@ -import { StakeKitApiClient } from "@stakekit/api-hooks"; -import type { AxiosInstance } from "axios"; -import axios, { AxiosHeaders } from "axios"; import type { PropsWithChildren } from "react"; -import { createContext, useContext, useState } from "react"; -import { useTranslation } from "react-i18next"; -import { attachDelayInterceptor } from "../../common/delay-api-requests"; -import { withRequestErrorRetry } from "../../common/utils"; +import { createContext, useContext, useEffect, useMemo } from "react"; import { config } from "../../config"; -import { attachGeoBlockInterceptor } from "../../hooks/use-geo-block"; -import { attachRichErrorsInterceptor } from "../../hooks/use-rich-errors"; import { useSettings } from "../settings"; +import { type ApiClient, createApiClient } from "./api-client"; -const Context = createContext(undefined); +const Context = createContext(undefined); export const SKApiClientProvider = ({ children }: PropsWithChildren) => { - const { apiKey, baseUrl } = useSettings(); - const { i18n } = useTranslation(); + const { apiKey, baseUrl, yieldsApiUrl } = useSettings(); - const url = baseUrl ?? config.env.apiUrl; + const apiClient = useMemo( + () => + createApiClient({ + apiKey, + baseUrl: baseUrl ?? config.env.apiUrl, + yieldsApiUrl: yieldsApiUrl ?? config.env.yieldsApiUrl, + }), + [apiKey, baseUrl, yieldsApiUrl] + ); - const [apiClient] = useState(() => { - const instance = axios.create({ - baseURL: url, - headers: { "X-API-KEY": apiKey }, - adapter: "fetch", - }); - - attachDelayInterceptor(instance); - attachGeoBlockInterceptor(instance); - attachRichErrorsInterceptor(instance, i18n); - - return instance; - }); - - StakeKitApiClient.configure({ - apiKey, - baseURL: url, - fetchInstance: (url, requestInit) => { - const headers = new Headers(requestInit.headers); - - const axiosHeaders = new AxiosHeaders(); - - for (const [key, value] of headers.entries()) { - axiosHeaders.set(key, value); - } - - const signal = requestInit.signal ?? undefined; - - return withRequestErrorRetry({ - fn: () => - apiClient(url, { - ...requestInit, - headers: axiosHeaders, - data: requestInit.body, - signal, - }).then((response) => response.data), - }) - .run() - .then((res) => res.unsafeCoerce()); - }, - }); + useEffect(() => () => void apiClient.dispose(), [apiClient]); return {children}; }; @@ -68,7 +28,7 @@ export const useApiClient = () => { const value = useContext(Context); if (!value) { - throw new Error("ApiClient must be used within a ApiHooksProvider"); + throw new Error("useApiClient must be used within a SKApiClientProvider"); } return value; diff --git a/packages/widget/src/providers/api/api-client.ts b/packages/widget/src/providers/api/api-client.ts new file mode 100644 index 00000000..f441f2eb --- /dev/null +++ b/packages/widget/src/providers/api/api-client.ts @@ -0,0 +1,258 @@ +import { Effect, flow, ManagedRuntime } from "effect"; +import { + FetchHttpClient, + HttpClient, + HttpClientRequest, + type HttpClientResponse, +} from "effect/unstable/http"; +import { waitForDelayedApiRequests } from "../../common/delay-api-requests"; +import * as LegacyApi from "../../generated/api/legacy"; +import * as YieldApi from "../../generated/api/yield"; +import { handleGeoBlockResponse } from "../../hooks/use-geo-block"; +import { handleRichErrorResponse } from "../../hooks/use-rich-errors"; + +type WidgetApiClientOptions = { + readonly apiKey: string; + readonly baseUrl: string; + readonly yieldsApiUrl: string; +}; + +type RunOptions = { + readonly signal?: AbortSignal; +}; + +const inspectResponse = ({ + response, +}: { + readonly response: HttpClientResponse.HttpClientResponse; +}) => + Effect.gen(function* () { + yield* Effect.promise(waitForDelayedApiRequests); + + if (response.status < 400) { + return; + } + + const data = yield* Effect.orElseSucceed(response.json, () => undefined); + + handleGeoBlockResponse({ + data, + status: response.status, + }); + handleRichErrorResponse({ + data, + url: response.request.url, + }); + }); + +const configureClient = ({ + apiKey, + baseUrl, + client, +}: { + readonly apiKey: string; + readonly baseUrl: string; + readonly client: HttpClient.HttpClient; +}): HttpClient.HttpClient => + client.pipe( + HttpClient.mapRequest( + flow( + HttpClientRequest.prependUrl(baseUrl), + HttpClientRequest.setHeader("X-API-KEY", apiKey), + HttpClientRequest.acceptJson + ) + ), + HttpClient.retryTransient({ times: 3 }), + HttpClient.tap((response) => inspectResponse({ response })) + ); + +type ApiRuntime = ManagedRuntime.ManagedRuntime; + +type BoundOperation = Operation extends ( + ...args: infer Args +) => Effect.Effect + ? (...args: Args) => Promise + : never; + +const bindOperation = < + Operation extends (...args: never[]) => Effect.Effect, +>( + runtime: ApiRuntime, + operation: Operation, + runOptions?: RunOptions +): BoundOperation => + ((...args: Parameters) => + runtime.runPromise( + operation(...args), + runOptions + )) as BoundOperation; + +const bindLegacyApi = ({ + api, + runOptions, + runtime, +}: { + readonly api: LegacyApi.LegacyApi; + readonly runOptions?: RunOptions; + readonly runtime: ApiRuntime; +}) => ({ + TokenControllerGetTokenBalances: bindOperation( + runtime, + api.TokenControllerGetTokenBalances, + runOptions + ), + TokenControllerGetTokenPrices: bindOperation( + runtime, + api.TokenControllerGetTokenPrices, + runOptions + ), + TokenControllerGetTokens: bindOperation( + runtime, + api.TokenControllerGetTokens, + runOptions + ), + TokenControllerTokenBalancesScan: bindOperation( + runtime, + api.TokenControllerTokenBalancesScan, + runOptions + ), + TransactionControllerGetTransactionVerificationMessageForNetwork: + bindOperation( + runtime, + api.TransactionControllerGetTransactionVerificationMessageForNetwork, + runOptions + ), + YieldControllerGetSingleYieldRewardsSummary: bindOperation( + runtime, + api.YieldControllerGetSingleYieldRewardsSummary, + runOptions + ), + YieldControllerYieldOpportunity: bindOperation( + runtime, + api.YieldControllerYieldOpportunity, + runOptions + ), +}); + +const bindYieldApi = ({ + api, + runOptions, + runtime, +}: { + readonly api: YieldApi.YieldApi; + readonly runOptions?: RunOptions; + readonly runtime: ApiRuntime; +}) => ({ + ActionsControllerEnterYield: bindOperation( + runtime, + api.ActionsControllerEnterYield, + runOptions + ), + ActionsControllerExitYield: bindOperation( + runtime, + api.ActionsControllerExitYield, + runOptions + ), + ActionsControllerGetActions: bindOperation( + runtime, + api.ActionsControllerGetActions, + runOptions + ), + ActionsControllerManageYield: bindOperation( + runtime, + api.ActionsControllerManageYield, + runOptions + ), + HealthControllerHealth: bindOperation( + runtime, + api.HealthControllerHealth, + runOptions + ), + NetworksControllerGetNetworks: bindOperation( + runtime, + api.NetworksControllerGetNetworks, + runOptions + ), + TransactionsControllerGetTransaction: bindOperation( + runtime, + api.TransactionsControllerGetTransaction, + runOptions + ), + TransactionsControllerSubmitTransaction: bindOperation( + runtime, + api.TransactionsControllerSubmitTransaction, + runOptions + ), + TransactionsControllerSubmitTransactionHash: bindOperation( + runtime, + api.TransactionsControllerSubmitTransactionHash, + runOptions + ), + YieldsControllerGetAggregateBalances: bindOperation( + runtime, + api.YieldsControllerGetAggregateBalances, + runOptions + ), + YieldsControllerGetYield: bindOperation( + runtime, + api.YieldsControllerGetYield, + runOptions + ), + YieldsControllerGetYieldBalances: bindOperation( + runtime, + api.YieldsControllerGetYieldBalances, + runOptions + ), + YieldsControllerGetYieldValidators: bindOperation( + runtime, + api.YieldsControllerGetYieldValidators, + runOptions + ), +}); + +const bindApiClients = ({ + legacyApi, + runOptions, + runtime, + yieldApi, +}: { + readonly legacyApi: LegacyApi.LegacyApi; + readonly runOptions?: RunOptions; + readonly runtime: ApiRuntime; + readonly yieldApi: YieldApi.YieldApi; +}) => ({ + legacy: bindLegacyApi({ api: legacyApi, runOptions, runtime }), + yield: bindYieldApi({ api: yieldApi, runOptions, runtime }), +}); + +export const createApiClient = ({ + apiKey, + baseUrl, + yieldsApiUrl, +}: WidgetApiClientOptions) => { + const runtime = ManagedRuntime.make(FetchHttpClient.layer); + const baseClient = runtime.runSync(HttpClient.HttpClient); + + const legacyHttpClient = configureClient({ + apiKey, + baseUrl, + client: baseClient, + }); + const yieldHttpClient = configureClient({ + apiKey, + baseUrl: yieldsApiUrl, + client: baseClient, + }); + const legacyApi = LegacyApi.make(legacyHttpClient); + const yieldApi = YieldApi.make(yieldHttpClient); + const boundClients = bindApiClients({ legacyApi, runtime, yieldApi }); + + return { + ...boundClients, + withRunOptions: (runOptions: RunOptions) => + bindApiClients({ legacyApi, runOptions, runtime, yieldApi }), + dispose: () => runtime.dispose(), + }; +}; + +export type ApiClient = ReturnType; diff --git a/packages/widget/src/providers/cosmos/chains/get-chain-registry.ts b/packages/widget/src/providers/cosmos/chains/get-chain-registry.ts index 915d3790..5ae1cc0f 100644 --- a/packages/widget/src/providers/cosmos/chains/get-chain-registry.ts +++ b/packages/widget/src/providers/cosmos/chains/get-chain-registry.ts @@ -1,12 +1,13 @@ -import { CosmosNetworks } from "@stakekit/common"; import { assets, chains as RegistryChains } from "chain-registry"; import { type SupportedCosmosChains, supportedCosmosChains, } from "../../../domain/types/chains/cosmos"; +import { CosmosNetworks } from "../../../domain/types/chains/networks"; import type { CosmosChain, WithWagmiName } from "./types"; type AssetList = (typeof assets)[number]; +type Asset = AssetList["assets"][number]; const mantra: CosmosChain = { $schema: "../chain.schema.json", @@ -211,9 +212,83 @@ const assetMapper = ( return val; }; +const pickGasPrices = ( + feeToken: NonNullable["fee_tokens"][number] +) => ({ + denom: feeToken.denom, + low_gas_price: feeToken.low_gas_price, + average_gas_price: feeToken.average_gas_price, + high_gas_price: feeToken.high_gas_price, +}); + +const trimChain = ( + chain: WithWagmiName +): WithWagmiName => + ({ + chain_name: chain.chain_name, + pretty_name: chain.pretty_name, + chain_id: chain.chain_id, + bech32_prefix: chain.bech32_prefix, + slip44: chain.slip44, + fees: chain.fees + ? { + fee_tokens: chain.fees.fee_tokens.map(pickGasPrices), + } + : undefined, + staking: chain.staking + ? { + staking_tokens: chain.staking.staking_tokens.map((stakingToken) => ({ + denom: stakingToken.denom, + })), + } + : undefined, + apis: { + rpc: chain.apis?.rpc?.map(({ address }) => ({ address })), + rest: chain.apis?.rest?.map(({ address }) => ({ address })), + }, + codebase: chain.codebase + ? { + cosmos_sdk_version: chain.codebase.cosmos_sdk_version, + cosmwasm_enabled: chain.codebase.cosmwasm_enabled, + cosmwasm_version: chain.codebase.cosmwasm_version, + sdk: chain.codebase.sdk, + cosmwasm: chain.codebase.cosmwasm, + } + : undefined, + logo_URIs: chain.logo_URIs, + explorers: chain.explorers?.map(({ url }) => ({ url })), + wagmiName: chain.wagmiName, + }) as WithWagmiName; + +const trimAsset = (asset: Asset): Asset => + ({ + base: asset.base, + name: asset.name, + display: asset.display, + symbol: asset.symbol, + denom_units: asset.denom_units.map(({ denom, exponent }) => ({ + denom, + exponent, + })), + logo_URIs: asset.logo_URIs, + coingecko_id: asset.coingecko_id, + type_asset: asset.type_asset, + }) as Asset; + +const trimAssetList = ( + assetList: WithWagmiName> +): WithWagmiName> => + ({ + chain_name: assetList.chain_name, + assets: assetList.assets.map(trimAsset), + wagmiName: assetList.wagmiName, + chain_id: assetList.chain_id, + }) as WithWagmiName>; + const cosmosRegistryChains: WithWagmiName[] = chains .filter((c) => registryIdsSet.has(c.chain_id)) .map(chainMapper) + .map(trimChain) .sort((a, b) => a.wagmiName.localeCompare(b.wagmiName)); export const getCosmosRegistryChains = (): WithWagmiName[] => @@ -245,4 +320,5 @@ export const getCosmosAssets = (): WithWagmiName< chain_id, }; }) - .map(assetMapper); + .map(assetMapper) + .map(trimAssetList); diff --git a/packages/widget/src/providers/cosmos/chains/index.ts b/packages/widget/src/providers/cosmos/chains/index.ts index f26aed03..28b549cd 100644 --- a/packages/widget/src/providers/cosmos/chains/index.ts +++ b/packages/widget/src/providers/cosmos/chains/index.ts @@ -1,7 +1,10 @@ -import { CosmosNetworks, type Networks } from "@stakekit/common"; import type { Chain } from "@stakekit/rainbowkit"; import { Just } from "purify-ts"; import { mainnet } from "viem/chains"; +import { + CosmosNetworks, + type Networks, +} from "../../../domain/types/chains/networks"; import { getNetworkLogo, getTokenLogo } from "../../../utils"; import type { CosmosChainsAssets } from "./types"; diff --git a/packages/widget/src/providers/cosmos/config.ts b/packages/widget/src/providers/cosmos/config.ts index 76d36fd8..a5a4caca 100644 --- a/packages/widget/src/providers/cosmos/config.ts +++ b/packages/widget/src/providers/cosmos/config.ts @@ -1,24 +1,27 @@ import type { Chain, WalletList } from "@stakekit/rainbowkit"; import type { QueryClient } from "@tanstack/react-query"; import { EitherAsync, Maybe, Right } from "purify-ts"; +import { getEnabledNetworks } from "../../common/get-enabled-networks"; import { config } from "../../config"; import type { CosmosChainsMap } from "../../domain/types/chains/cosmos"; import { supportedCosmosChains } from "../../domain/types/chains/cosmos"; import { typeSafeObjectEntries, typeSafeObjectFromEntries } from "../../utils"; -import { getEnabledNetworks } from "../api/get-enabled-networks"; +import type { ApiClient } from "../api/api-client"; import { getWagmiChain } from "./chains"; const queryKey = [config.appPrefix, "cosmos-config"]; const staleTime = Number.POSITIVE_INFINITY; const queryFn = async ({ + apiClient, queryClient, forceWalletConnectOnly, }: { + apiClient: ApiClient; queryClient: QueryClient; forceWalletConnectOnly: boolean; }) => - getEnabledNetworks({ queryClient }) + getEnabledNetworks({ apiClient, queryClient }) .chain< Error, { diff --git a/packages/widget/src/providers/cosmos/cosmos-connector.ts b/packages/widget/src/providers/cosmos/cosmos-connector.ts index a41844b0..dd9a2dbf 100644 --- a/packages/widget/src/providers/cosmos/cosmos-connector.ts +++ b/packages/widget/src/providers/cosmos/cosmos-connector.ts @@ -6,7 +6,6 @@ import type { MainWalletBase, } from "@cosmos-kit/core"; import type { WCClient } from "@cosmos-kit/walletconnect"; -import { CosmosNetworks } from "@stakekit/common"; import type { Wallet } from "@stakekit/rainbowkit"; import { SignDoc, TxRaw } from "cosmjs-types/cosmos/tx/v1beta1/tx"; import EventEmitter from "eventemitter3"; @@ -16,11 +15,20 @@ import type { Address, Chain } from "viem"; import type { CreateConnectorFn } from "wagmi"; import { createConnector } from "wagmi"; import type { CosmosChainsMap } from "../../domain/types/chains/cosmos"; +import { CosmosNetworks } from "../../domain/types/chains/networks"; import { getStorageItem, setStorageItem } from "../../services/local-storage"; import { getNetworkLogo, waitForMs } from "../../utils"; import type { ExtraProps } from "./cosmos-connector-meta"; import { configMeta } from "./cosmos-connector-meta"; +const getCosmosWalletInstalled = ( + wallet: MainWalletBase +): boolean | undefined => { + if (wallet.walletInfo.mode !== "extension") return undefined; + + return wallet.clientMutable.state === "Done" && !!wallet.client; +}; + export const createCosmosConnector = ({ wallet, cosmosChainsMap, @@ -52,7 +60,7 @@ export const createCosmosConnector = ({ title: "Cosmos", id: "cosmos", }, - installed: false, + installed: getCosmosWalletInstalled(wallet), createConnector: (walletDetailsParams) => createConnector((config) => { const provider = new EventEmitter(); @@ -97,18 +105,32 @@ export const createCosmosConnector = ({ config.emitter.emit("message", { type: "connecting" }); const cw = $chainWallet.getValue(); + const getConnectResult = (chainWallet: ChainWalletBase) => { + if (!chainWallet.address || !chainWallet.chainId) { + throw new Error( + chainWallet.message ?? "Cosmos wallet did not return an account" + ); + } + + return { + accounts: args?.withCapabilities + ? [ + { + address: chainWallet.address as Address, + capabilities: {}, + }, + ] + : [chainWallet.address as Address], + chainId: chainWallet.chainId as unknown as number, + } as never; + }; if (cw.address && cw.chainId) { if (cw.walletInfo.mode === "wallet-connect") { await (cw.client as WCClient).init(); } - return { - accounts: args?.withCapabilities - ? [{ address: cw.address as Address, capabilities: {} }] - : [cw.address as Address], - chainId: cw.chainId as unknown as number, - } as never; + return getConnectResult(cw); } const checkForQRCode = async (timesCheck: number) => { @@ -129,14 +151,11 @@ export const createCosmosConnector = ({ await cw.connect(); + const result = getConnectResult(cw); + await getAndSavePubKeyToStorage(); - return { - accounts: args?.withCapabilities - ? [{ address: cw.address as Address, capabilities: {} }] - : [cw.address as Address], - chainId: cw.chainId as unknown as number, - } as never; + return result; }; const getAndSavePubKeyToStorage = async () => { @@ -212,7 +231,9 @@ export const createCosmosConnector = ({ const getAccounts: ReturnType["getAccounts"] = async () => { - return [$chainWallet.getValue().address as Address]; + const address = $chainWallet.getValue().address; + + return address ? [address as Address] : []; }; const isAuthorized: ReturnType["isAuthorized"] = diff --git a/packages/widget/src/providers/cosmos/wallet-manager.ts b/packages/widget/src/providers/cosmos/wallet-manager.ts index 1e711316..e537421b 100644 --- a/packages/widget/src/providers/cosmos/wallet-manager.ts +++ b/packages/widget/src/providers/cosmos/wallet-manager.ts @@ -2,11 +2,11 @@ import type { MainWalletBase } from "@cosmos-kit/core"; import { Logger, WalletManager } from "@cosmos-kit/core"; import { wallets as keplrWallets } from "@cosmos-kit/keplr"; import { wallets as leapWallets } from "@cosmos-kit/leap"; -import { CosmosNetworks } from "@stakekit/common"; import type { Chain, WalletList } from "@stakekit/rainbowkit"; import { Just } from "purify-ts"; import { config } from "../../config"; import type { CosmosChainsMap } from "../../domain/types/chains/cosmos"; +import { CosmosNetworks } from "../../domain/types/chains/networks"; import { cosmosAssets, registryIdsToSKCosmosNetworks, diff --git a/packages/widget/src/providers/enter-stake-store/index.tsx b/packages/widget/src/providers/enter-stake-store/index.tsx index f1da4d09..2149e647 100644 --- a/packages/widget/src/providers/enter-stake-store/index.tsx +++ b/packages/widget/src/providers/enter-stake-store/index.tsx @@ -1,18 +1,20 @@ -import type { - ActionDto, - ActionRequestDto, - TokenDto, - ValidatorDto, - YieldDto, -} from "@stakekit/api-hooks"; import { createStore } from "@xstate/store"; import { Maybe } from "purify-ts"; import { createContext, type PropsWithChildren, useContext } from "react"; +import type { + ActionDto, + YieldCreateActionDto, +} from "../../domain/types/action"; +import type { AddressesDto } from "../../domain/types/addresses"; +import type { TokenDto } from "../../domain/types/tokens"; +import type { ValidatorDto } from "../../domain/types/validators"; +import type { Yield } from "../../domain/types/yields"; type InitData = { - requestDto: ActionRequestDto; - gasFeeToken: YieldDto["token"]; - selectedStake: YieldDto; + requestDto: YieldCreateActionDto; + addresses: AddressesDto; + gasFeeToken: Yield["token"]; + selectedStake: Yield; selectedValidators: Map; selectedToken: TokenDto; }; diff --git a/packages/widget/src/providers/ethereum/config.ts b/packages/widget/src/providers/ethereum/config.ts index 24afaa8a..77e040cb 100644 --- a/packages/widget/src/providers/ethereum/config.ts +++ b/packages/widget/src/providers/ethereum/config.ts @@ -9,20 +9,23 @@ import { import type { QueryClient } from "@tanstack/react-query"; import { EitherAsync, Maybe } from "purify-ts"; import portoIcon from "../../assets/images/porto.svg"; +import { getEnabledNetworks } from "../../common/get-enabled-networks"; import { config } from "../../config"; import { evmChainGroup } from "../../domain/types/chains"; import { type EvmChainsMap, evmChainsMap } from "../../domain/types/chains/evm"; import { typeSafeObjectEntries, typeSafeObjectFromEntries } from "../../utils"; -import { getEnabledNetworks } from "../api/get-enabled-networks"; +import type { ApiClient } from "../api/api-client"; import type { VariantProps } from "../settings/types"; import { createFineryWallets } from "./finery-wallet-list"; import { passCorrectChainsToWallet } from "./utils"; const queryFn = async ({ + apiClient, queryClient, forceWalletConnectOnly, variant, }: { + apiClient: ApiClient; queryClient: QueryClient; forceWalletConnectOnly: boolean; variant: VariantProps["variant"]; @@ -32,7 +35,7 @@ const queryFn = async ({ connector: Maybe; fineryWallets: ReturnType | null; }> => - getEnabledNetworks({ queryClient }).caseOf({ + getEnabledNetworks({ apiClient, queryClient }).caseOf({ Right: (networks) => { const filteredEvmChainsMap: Partial = typeSafeObjectFromEntries( diff --git a/packages/widget/src/providers/ethereum/finery-wallet-list/custom-wallet-icons/copper-icon.ts b/packages/widget/src/providers/ethereum/finery-wallet-list/custom-wallet-icons/copper-icon.ts deleted file mode 100644 index 99b91383..00000000 --- a/packages/widget/src/providers/ethereum/finery-wallet-list/custom-wallet-icons/copper-icon.ts +++ /dev/null @@ -1,2 +0,0 @@ -export const copperIcon = - "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDIiIGhlaWdodD0iMzgiIHZpZXdCb3g9Ii0yIC0yIDQ0IDQwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWFzayBpZD0ibWFzazAiIG1hc2tUeXBlPSJhbHBoYSIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeD0iMCIgeT0iMCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjM2Ij4KPHBhdGggZD0iTTMzLjQ0MTggMjkuMDM2N0wzMy40MzA3IDI5LjA0OTVDMzEuNzM3NyAzMS4wMTQ4IDI5Ljg0NTkgMzIuMDIxOSAyOC41NTcyIDMyLjUyMDZDMjQuOTU5NCAzMy45MTI4IDIxLjMyNjMgMzMuODU2NCAxNy43NTkxIDMyLjM1MzJDMTQuMTIyNiAzMC44MjEgMTAuODY4OCAyNy42NDgyIDkuMjY3MjUgMjQuMDcyOEM4LjU1MzY2IDIyLjQ4MDIgOC4xNzA5NSAyMC44MDQzIDguMTI5NyAxOS4wOTE4QzguMTIwOTYgMTguNzM2NyA4LjEwODM5IDE4LjMyNTMgOC4xMDYwOSAxOC4yNDc2TDguMTA1MTcgMTguMTcyMUw4LjEwNDcxIDE4LjEzNzhMOC4xMDQ1NSAxOC4xMjc2TDguMTA0MDkgMTguMDkxMUM4LjEwMzYzIDE4LjA1ODIgOC4xMDMxNyAxOC4wMjUzIDguMTAzMTcgMTcuOTkyM0w4LjEwMzAyIDE3Ljk3OTRDOC4xMDMxNyAxNy44ODk3IDguMTA0NCAxNy44MDA1IDguMTA2MzkgMTcuNzExNkM4LjE2MTQ0IDE1LjI2MDcgOS4xMDMwMyAxMi45MDgxIDEwLjc1NzYgMTEuMDg2N0MxMS41MDAyIDEwLjI2OTIgMTIuMzcwMyA5LjYzMjA3IDEzLjM0MzQgOS4xOTI4MUMxNC4zMTU4IDguNzU0MDMgMTUuMzgyMiA4LjUxOTMgMTYuNTE1OSA4LjQ5MzgxQzE2LjEyNTcgOC44MTM2NiAxNS43NTYgOS4xNjQ5NyAxNS40MDg5IDkuNTQ3MjdDMTMuNDIzNyAxMS43MzI0IDEyLjMzMDUgMTQuNzM0NiAxMi4zMzA1IDE4LjAwMDlDMTIuMzMwNSAyMS4yNjcgMTMuNDIzNyAyNC4yNjkzIDE1LjQwODkgMjYuNDU0NEMxNi41NTEgMjcuNzExOSAxNy45MTc2IDI4LjYzMDEgMTkuNDcwNCAyOS4xODMyQzIwLjU3MyAyOS41NzYxIDIxLjc2MDQgMjkuNzc1MSAyMi45OTk0IDI5Ljc3NTFDMjUuMDgwMyAyOS43NzUxIDI4LjA3OTUgMjkuMjAwNyAzMC41NTI2IDI2LjQ2NEMzMS4zOTU2IDI1LjUzMTUgMzIuMDc2NCAyNC40NTE2IDMyLjU4MzcgMjMuMjQ2NkgzNi42NTg2QzM1Ljk4NTUgMjUuNDI3IDM0Ljg4NzggMjcuNDA3OCAzMy40NDE4IDI5LjAzNjdaTTYuMzIzMzMgMjkuMDMyN0MzLjY4MzYxIDI2LjE2MDMgMi4yMjk4OSAyMi4yMzcxIDIuMjI5ODkgMTcuOTg2MUMyLjIyOTg5IDEzLjcyMzMgMy42ODc3NSA5Ljc3MDgzIDYuMzM1MTMgNi44NTY5OEM5LjAxMTggMy45MTA0MSAxMi43MDExIDIuMjg3OSAxNi43MjM0IDIuMjg3OUMxNy43MjYgMi4yODc5IDE4LjcxODYgMi4zODgyOCAxOS42NzM2IDIuNTg2NjdIMTkuNjczN0MyNC43NjI2IDMuNjQzNTkgMjguNzYzMSA3LjQ3NzE3IDMwLjM4MzIgMTIuNzQwMkgyNi4zMDg0QzI1LjgwMDkgMTEuNTM1MiAyNS4xMTk3IDEwLjQ1NTggMjQuMjc2NyA5LjUyMjg4QzIzLjE0NTcgOC4yNzE1MSAyMS43OTAxIDcuMzU2OTcgMjAuMjQ3OCA2LjgwNTA3QzE5LjE0NzggNi40MTEyOCAxNy45NjE5IDYuMjExNzkgMTYuNzIzNCA2LjIxMTc5QzE1LjIwMiA2LjIxMTc5IDEzLjc2MzkgNi41MTI3NSAxMi40NDg4IDcuMTA2MzVDMTEuMTk4IDcuNjcwOTkgMTAuMDgyIDguNDg3MiA5LjEzMjYzIDkuNTMyNDhDOC44OTc4OCA5Ljc5MDk3IDguNjc1NTUgMTAuMDU4NCA4LjQ2NDU3IDEwLjMzMzZDNy4xMjQ3OCAxMS44NDk2IDYuMjY4NDMgMTMuODQ1NyA1Ljk4Njc3IDE2LjMzMkM1LjkyOTczIDE2Ljc3MDUgNS44OTU1NCAxNy4yMTMzIDUuODg1NDIgMTcuNjU5TDUuODkyOTMgMTcuNjU5Mkw1Ljg4NTQyIDE3LjY1OUM1Ljg4Mjk2IDE3Ljc2NzcgNS44ODE1OCAxNy44NzY2IDUuODgxNTggMTcuOTg2MUw1Ljg4MTc0IDE4LjAwMDlINS44ODE1OEM1Ljg4MTU4IDE4LjAzNjUgNS44ODIwNCAxOC4wNzIgNS44ODI2NiAxOC4xMDc0VjE4LjExMzFDNS44ODI4MSAxOC4xMTYyIDUuODgyODEgMTguMTE5MSA1Ljg4MjgxIDE4LjEyMjJMNS44ODMxMiAxOC4xNTAyTDUuODgzMjcgMTguMTYyMkw1Ljg4MzQyIDE4LjE2NjZWMTguMTY5Mkw1Ljg4Mzg4IDE4LjIwODRDNS44ODM4OCAxOC40ODIyIDUuODkxNyAxOC43NTU5IDUuOTA1ODEgMTkuMDI5NUM1LjkwNjg4IDE5LjA2OTUgNS45MDc5NiAxOS4xMDkxIDUuOTA4ODggMTkuMTQ4MUM1Ljk1NzY0IDIxLjE3MiA2LjQwODQyIDIzLjE0OTMgNy4yNDg2NyAyNS4wMjQ5QzguNzY0MDIgMjguNDA3NiAxMS41NzEyIDMxLjQ3MTIgMTQuODQ0NSAzMy40MTI1QzExLjU0NzQgMzIuOTk3MyA4LjU3MTE0IDMxLjQ3ODUgNi4zMjMzMyAyOS4wMzI3Wk0zMi4xNzk3IDUuNjA5ODZDMzQuMzQxNCA3LjQ2NTUyIDM1Ljg0MDkgOS45MTEwMSAzNi41NjQ5IDEyLjc0MDJIMzIuNjk4OUMzMS41MTg0IDguMzI3ODMgMjguODk4MyA0LjcyMTc1IDI1LjM4NCAyLjQ4ODY1QzI3LjkzMDUgMi44OTI2NyAzMC4yNDc1IDMuOTUxMTYgMzIuMTc5NyA1LjYwOTg2Wk0yNC4yNzY3IDI2LjQ0OTNDMjUuMTE5NyAyNS41MTY2IDI1LjgwMDkgMjQuNDM3IDI2LjMwODQgMjMuMjMySDMwLjExNTlDMjkuNzc5NCAyMy44NDU2IDI5LjM4MTIgMjQuNDA4MiAyOC45MjM2IDI0LjkxNDJDMjcuMDY3NyAyNi45NjgxIDI0LjgxMzkgMjcuNDU5NyAyMy4xODY4IDI3LjQ5MzVDMjMuNTY5NCAyNy4xNzcgMjMuOTMzNCAyNi44MjkxIDI0LjI3NjcgMjYuNDQ5M1pNMzkuMjQxNiAyMC45NTI1SDMzLjIwNTdIMjQuNzY4NUwyNC41MDU3IDIxLjcxMDJDMjQuMDgyNiAyMi45MzA0IDIzLjQ1NzQgMjQuMDAzNCAyMi42NDc3IDI0Ljg5OTRDMjEuODQzMyAyNS43ODkyIDIwLjg5OTQgMjYuNDU3MSAxOS44Mzc5IDI2Ljg4OTlDMTguNzc4NyAyNi40NTE0IDE3LjgzNjcgMjUuNzgzOSAxNy4wMzM4IDI0LjkwMDJDMTUuNDMzNSAyMy4xMzg2IDE0LjU1MjEgMjAuNjg4NCAxNC41NTIxIDE4LjAwMDlDMTQuNTUyMSAxNS4zMTM0IDE1LjQzMzUgMTIuODYzMiAxNy4wMzM4IDExLjEwMTVDMTcuNzc2NCAxMC4yODQyIDE4LjY0NjQgOS42NDY4NiAxOS42MTk2IDkuMjA3NkMxOS43MDM1IDkuMTY5NjkgMTkuNzkwNCA5LjEzMzUgMTkuODc3NSA5LjA5ODFDMjAuOTI1MyA5LjUzNDM3IDIxLjg1NTkgMTAuMTk2OSAyMi42NDc3IDExLjA3MjdDMjMuNDU3NCAxMS45NjkgMjQuMDgyNiAxMy4wNDIgMjQuNTA1NyAxNC4yNjJMMjQuNzY4NSAxNS4wMTk3SDMxLjgyMzFIMzEuODMxNUgzMy4yMTg4SDM5LjI1MjJDMzkuMjUyMiAxMC41NDE2IDM2LjQ2ODUgNi4zMTk0IDMzLjYwNTIgMy44NjE0OEMzMC42Nzk5IDEuMzUwMzkgMjcuMDEyNSAwLjAyMzAyODUgMjIuOTk5NCAwLjAyMzAyODVDMjEuOTU1MyAwLjAyMzAyODUgMjAuOTEyOSAwLjEyMDU3MSAxOS44OTczIDAuMzEwNDY0QzE4Ljg2NDggMC4xMTA4MTcgMTcuNzk4MyAwLjAwODIzOTc1IDE2LjcyMzQgMC4wMDgyMzk3NUMxMi4wNzgxIDAuMDA4MjM5NzUgNy44MTE2OSAxLjg4ODQ1IDQuNzA5OTkgNS4zMDI3NUMxLjY3ODIxIDguNjM5OTcgMC4wMDgzMDA3OCAxMy4xNDQ0IDAuMDA4MzAwNzggMTcuOTg2MUMwLjAwODMwMDc4IDIyLjgyMDkgMS42NzcxNCAyNy4yOTk0IDQuNzA3MDggMzAuNTk2M0M3Ljc5NTQ0IDMzLjk1NzEgMTIuMDU3NyAzNS44MDgxIDE2LjcwODUgMzUuODA4MUMxNy43NjY5IDM1LjgwODEgMTkuMzI3MiAzNS44MDc2IDIwLjQ5NTYgMzUuNTQ0NkMyMS40NDY1IDM1LjcyMDUgMjIuMzk5NiAzNS44MDg5IDIzLjM1MzggMzUuODA4OUMyNS4zNTAxIDM1LjgwODkgMjcuMzUwMiAzNS40MjM3IDI5LjM0MSAzNC42NTM1QzMwLjg2MjMgMzQuMDY0NyAzMy4wOTIzIDMyLjg3ODggMzUuMDg0MSAzMC41NzE4QzM1LjA4NDkgMzAuNTcxIDM1LjA4NTUgMzAuNTcwMiAzNS4wODYyIDMwLjU2OTRDMzUuMDg5MSAzMC41NjYgMzUuMDkyMiAzMC41NjI1IDM1LjA5NTEgMzAuNTU5MlYzMC41NTlDMzcuMDk2NCAyOC4yOTk4IDM5LjAxMjEgMjQuOTgyIDM5LjI0MTYgMjAuOTUyNVoiIGZpbGw9IndoaXRlIi8+CjwvbWFzaz4KPGcgbWFzaz0idXJsKCNtYXNrMCkiPgo8cGF0aCBkPSJNMzMuNDQxOCAyOS4wMzY3TDMzLjQzMDcgMjkuMDQ5NUMzMS43Mzc3IDMxLjAxNDggMjkuODQ1OSAzMi4wMjE5IDI4LjU1NzIgMzIuNTIwNkMyNC45NTk0IDMzLjkxMjggMjEuMzI2MyAzMy44NTY0IDE3Ljc1OTEgMzIuMzUzMkMxNC4xMjI2IDMwLjgyMSAxMC44Njg4IDI3LjY0ODIgOS4yNjcyNSAyNC4wNzI4QzguNTUzNjYgMjIuNDgwMiA4LjE3MDk1IDIwLjgwNDMgOC4xMjk3IDE5LjA5MThDOC4xMjA5NiAxOC43MzY3IDguMTA4MzkgMTguMzI1MyA4LjEwNjA5IDE4LjI0NzZMOC4xMDUxNyAxOC4xNzIxTDguMTA0NzEgMTguMTM3OEw4LjEwNDU1IDE4LjEyNzZMOC4xMDQwOSAxOC4wOTExQzguMTAzNjMgMTguMDU4MiA4LjEwMzE3IDE4LjAyNTMgOC4xMDMxNyAxNy45OTIzTDguMTAzMDIgMTcuOTc5NEM4LjEwMzE3IDE3Ljg4OTcgOC4xMDQ0IDE3LjgwMDUgOC4xMDYzOSAxNy43MTE2QzguMTYxNDQgMTUuMjYwNyA5LjEwMzAzIDEyLjkwODEgMTAuNzU3NiAxMS4wODY3QzExLjUwMDIgMTAuMjY5MiAxMi4zNzAzIDkuNjMyMDcgMTMuMzQzNCA5LjE5MjgxQzE0LjMxNTggOC43NTQwMyAxNS4zODIyIDguNTE5MyAxNi41MTU5IDguNDkzODFDMTYuMTI1NyA4LjgxMzY2IDE1Ljc1NiA5LjE2NDk3IDE1LjQwODkgOS41NDcyN0MxMy40MjM3IDExLjczMjQgMTIuMzMwNSAxNC43MzQ2IDEyLjMzMDUgMTguMDAwOUMxMi4zMzA1IDIxLjI2NyAxMy40MjM3IDI0LjI2OTMgMTUuNDA4OSAyNi40NTQ0QzE2LjU1MSAyNy43MTE5IDE3LjkxNzYgMjguNjMwMSAxOS40NzA0IDI5LjE4MzJDMjAuNTczIDI5LjU3NjEgMjEuNzYwNCAyOS43NzUxIDIyLjk5OTQgMjkuNzc1MUMyNS4wODAzIDI5Ljc3NTEgMjguMDc5NSAyOS4yMDA3IDMwLjU1MjYgMjYuNDY0QzMxLjM5NTYgMjUuNTMxNSAzMi4wNzY0IDI0LjQ1MTYgMzIuNTgzNyAyMy4yNDY2SDM2LjY1ODZDMzUuOTg1NSAyNS40MjcgMzQuODg3OCAyNy40MDc4IDMzLjQ0MTggMjkuMDM2N1pNNi4zMjMzMyAyOS4wMzI3QzMuNjgzNjEgMjYuMTYwMyAyLjIyOTg5IDIyLjIzNzEgMi4yMjk4OSAxNy45ODYxQzIuMjI5ODkgMTMuNzIzMyAzLjY4Nzc1IDkuNzcwODMgNi4zMzUxMyA2Ljg1Njk4QzkuMDExOCAzLjkxMDQxIDEyLjcwMTEgMi4yODc5IDE2LjcyMzQgMi4yODc5QzE3LjcyNiAyLjI4NzkgMTguNzE4NiAyLjM4ODI4IDE5LjY3MzYgMi41ODY2N0gxOS42NzM3QzI0Ljc2MjYgMy42NDM1OSAyOC43NjMxIDcuNDc3MTcgMzAuMzgzMiAxMi43NDAySDI2LjMwODRDMjUuODAwOSAxMS41MzUyIDI1LjExOTcgMTAuNDU1OCAyNC4yNzY3IDkuNTIyODhDMjMuMTQ1NyA4LjI3MTUxIDIxLjc5MDEgNy4zNTY5NyAyMC4yNDc4IDYuODA1MDdDMTkuMTQ3OCA2LjQxMTI4IDE3Ljk2MTkgNi4yMTE3OSAxNi43MjM0IDYuMjExNzlDMTUuMjAyIDYuMjExNzkgMTMuNzYzOSA2LjUxMjc1IDEyLjQ0ODggNy4xMDYzNUMxMS4xOTggNy42NzA5OSAxMC4wODIgOC40ODcyIDkuMTMyNjMgOS41MzI0OEM4Ljg5Nzg4IDkuNzkwOTcgOC42NzU1NSAxMC4wNTg0IDguNDY0NTcgMTAuMzMzNkM3LjEyNDc4IDExLjg0OTYgNi4yNjg0MyAxMy44NDU3IDUuOTg2NzcgMTYuMzMyQzUuOTI5NzMgMTYuNzcwNSA1Ljg5NTU0IDE3LjIxMzMgNS44ODU0MiAxNy42NTlMNS44OTI5MyAxNy42NTkyTDUuODg1NDIgMTcuNjU5QzUuODgyOTYgMTcuNzY3NyA1Ljg4MTU4IDE3Ljg3NjYgNS44ODE1OCAxNy45ODYxTDUuODgxNzQgMTguMDAwOUg1Ljg4MTU4QzUuODgxNTggMTguMDM2NSA1Ljg4MjA0IDE4LjA3MiA1Ljg4MjY2IDE4LjEwNzRWMTguMTEzMUM1Ljg4MjgxIDE4LjExNjIgNS44ODI4MSAxOC4xMTkxIDUuODgyODEgMTguMTIyMkw1Ljg4MzEyIDE4LjE1MDJMNS44ODMyNyAxOC4xNjIyTDUuODgzNDIgMTguMTY2NlYxOC4xNjkyTDUuODgzODggMTguMjA4NEM1Ljg4Mzg4IDE4LjQ4MjIgNS44OTE3IDE4Ljc1NTkgNS45MDU4MSAxOS4wMjk1QzUuOTA2ODggMTkuMDY5NSA1LjkwNzk2IDE5LjEwOTEgNS45MDg4OCAxOS4xNDgxQzUuOTU3NjQgMjEuMTcyIDYuNDA4NDIgMjMuMTQ5MyA3LjI0ODY3IDI1LjAyNDlDOC43NjQwMiAyOC40MDc2IDExLjU3MTIgMzEuNDcxMiAxNC44NDQ1IDMzLjQxMjVDMTEuNTQ3NCAzMi45OTczIDguNTcxMTQgMzEuNDc4NSA2LjMyMzMzIDI5LjAzMjdaTTMyLjE3OTcgNS42MDk4NkMzNC4zNDE0IDcuNDY1NTIgMzUuODQwOSA5LjkxMTAxIDM2LjU2NDkgMTIuNzQwMkgzMi42OTg5QzMxLjUxODQgOC4zMjc4MyAyOC44OTgzIDQuNzIxNzUgMjUuMzg0IDIuNDg4NjVDMjcuOTMwNSAyLjg5MjY3IDMwLjI0NzUgMy45NTExNiAzMi4xNzk3IDUuNjA5ODZaTTI0LjI3NjcgMjYuNDQ5M0MyNS4xMTk3IDI1LjUxNjYgMjUuODAwOSAyNC40MzcgMjYuMzA4NCAyMy4yMzJIMzAuMTE1OUMyOS43Nzk0IDIzLjg0NTYgMjkuMzgxMiAyNC40MDgyIDI4LjkyMzYgMjQuOTE0MkMyNy4wNjc3IDI2Ljk2ODEgMjQuODEzOSAyNy40NTk3IDIzLjE4NjggMjcuNDkzNUMyMy41Njk0IDI3LjE3NyAyMy45MzM0IDI2LjgyOTEgMjQuMjc2NyAyNi40NDkzWk0zOS4yNDE2IDIwLjk1MjVIMzMuMjA1N0gyNC43Njg1TDI0LjUwNTcgMjEuNzEwMkMyNC4wODI2IDIyLjkzMDQgMjMuNDU3NCAyNC4wMDM0IDIyLjY0NzcgMjQuODk5NEMyMS44NDMzIDI1Ljc4OTIgMjAuODk5NCAyNi40NTcxIDE5LjgzNzkgMjYuODg5OUMxOC43Nzg3IDI2LjQ1MTQgMTcuODM2NyAyNS43ODM5IDE3LjAzMzggMjQuOTAwMkMxNS40MzM1IDIzLjEzODYgMTQuNTUyMSAyMC42ODg0IDE0LjU1MjEgMTguMDAwOUMxNC41NTIxIDE1LjMxMzQgMTUuNDMzNSAxMi44NjMyIDE3LjAzMzggMTEuMTAxNUMxNy43NzY0IDEwLjI4NDIgMTguNjQ2NCA5LjY0Njg2IDE5LjYxOTYgOS4yMDc2QzE5LjcwMzUgOS4xNjk2OSAxOS43OTA0IDkuMTMzNSAxOS44Nzc1IDkuMDk4MUMyMC45MjUzIDkuNTM0MzcgMjEuODU1OSAxMC4xOTY5IDIyLjY0NzcgMTEuMDcyN0MyMy40NTc0IDExLjk2OSAyNC4wODI2IDEzLjA0MiAyNC41MDU3IDE0LjI2MkwyNC43Njg1IDE1LjAxOTdIMzEuODIzMUgzMS44MzE1SDMzLjIxODhIMzkuMjUyMkMzOS4yNTIyIDEwLjU0MTYgMzYuNDY4NSA2LjMxOTQgMzMuNjA1MiAzLjg2MTQ4QzMwLjY3OTkgMS4zNTAzOSAyNy4wMTI1IDAuMDIzMDI4NSAyMi45OTk0IDAuMDIzMDI4NUMyMS45NTUzIDAuMDIzMDI4NSAyMC45MTI5IDAuMTIwNTcxIDE5Ljg5NzMgMC4zMTA0NjRDMTguODY0OCAwLjExMDgxNyAxNy43OTgzIDAuMDA4MjM5NzUgMTYuNzIzNCAwLjAwODIzOTc1QzEyLjA3ODEgMC4wMDgyMzk3NSA3LjgxMTY5IDEuODg4NDUgNC43MDk5OSA1LjMwMjc1QzEuNjc4MjEgOC42Mzk5NyAwLjAwODMwMDc4IDEzLjE0NDQgMC4wMDgzMDA3OCAxNy45ODYxQzAuMDA4MzAwNzggMjIuODIwOSAxLjY3NzE0IDI3LjI5OTQgNC43MDcwOCAzMC41OTYzQzcuNzk1NDQgMzMuOTU3MSAxMi4wNTc3IDM1LjgwODEgMTYuNzA4NSAzNS44MDgxQzE3Ljc2NjkgMzUuODA4MSAxOS4zMjcyIDM1LjgwNzYgMjAuNDk1NiAzNS41NDQ2QzIxLjQ0NjUgMzUuNzIwNSAyMi4zOTk2IDM1LjgwODkgMjMuMzUzOCAzNS44MDg5QzI1LjM1MDEgMzUuODA4OSAyNy4zNTAyIDM1LjQyMzcgMjkuMzQxIDM0LjY1MzVDMzAuODYyMyAzNC4wNjQ3IDMzLjA5MjMgMzIuODc4OCAzNS4wODQxIDMwLjU3MThDMzUuMDg0OSAzMC41NzEgMzUuMDg1NSAzMC41NzAyIDM1LjA4NjIgMzAuNTY5NEMzNS4wODkxIDMwLjU2NiAzNS4wOTIyIDMwLjU2MjUgMzUuMDk1MSAzMC41NTkyVjMwLjU1OUMzNy4wOTY0IDI4LjI5OTggMzkuMDEyMSAyNC45ODIgMzkuMjQxNiAyMC45NTI1WiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyKSIvPgo8cGF0aCBvcGFjaXR5PSIwLjYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMS4wODA1NyAyNS4wMjIyVjM2Ljc0MjlIMjEuNjgyNFYzNS43MzAzQzE0LjI2NjggMzQuODU1IDguODEzNzggMjkuMjIxOSA3LjIxMzY0IDI1LjAyMjJIMS4wODA1N1oiIGZpbGw9InVybCgjcGFpbnQxX2xpbmVhcikiLz4KPHBhdGggb3BhY2l0eT0iMC42MDE2MTgiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTIuMjczNCAxNS4wMzYxSDE5Ljg2MzlWMTEuODU3OUMyMC40NTM5IDEyLjIwMTUgMjAuOTg4MSAxMi42MDcxIDIxLjQ3NTIgMTMuMDIyNkMyMi42MTUyIDEyLjM2NTMgMjMuNjk2NSAxMi4zNjUzIDIyLjY5OTggMTEuMTc3NEMyMS43MDMyIDkuOTg5NTEgMjAuMDE2NiA4Ljg5NjE1IDE4LjE0ODcgOC41NjQ4OUMxNi4zMzAzIDguMjQyNDEgMTQuMDM0IDguODI1NDIgMTMuMDUwNyA5LjM5MzIyQzEyLjYyMjQgOS42NDAyMiAxMi42NjUgMTAuNTA4OCAxMy4yMjQ1IDExLjMwNzlMMTIuMjczNCAxNS4wMzYxWiIgZmlsbD0idXJsKCNwYWludDJfbGluZWFyKSIvPgo8L2c+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXIiIHgxPSIzMi42MzM5IiB5MT0iMzQuMDQxIiB4Mj0iNi41NjczNCIgeTI9Ii0xLjQ2NjYzIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiNCOTc3NUQiLz4KPHN0b3Agb2Zmc2V0PSIwLjIxODMyOSIgc3RvcC1jb2xvcj0iI0U4OTA3NyIvPgo8c3RvcCBvZmZzZXQ9IjAuNzgwNjU5IiBzdG9wLWNvbG9yPSIjRkRCREE0Ii8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0I1NzM1OSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXIiIHgxPSIxLjA4MDU3IiB5MT0iMzAuODgyNSIgeDI9IjIxLjY4MjQiIHkyPSIzMC44ODI1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMzMDM1M0IiIHN0b3Atb3BhY2l0eT0iMCIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDM1M0IiIHN0b3Atb3BhY2l0eT0iMC42Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQyX2xpbmVhciIgeDE9IjE3LjY4MyIgeTE9IjE1LjAzNjEiIHgyPSIxNy42ODMiIHkyPSI4LjQ3MjY5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMzMDM1M0IiIHN0b3Atb3BhY2l0eT0iMCIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDM1M0IiIHN0b3Atb3BhY2l0eT0iMC42Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg=="; diff --git a/packages/widget/src/providers/ethereum/finery-wallet-list/index.ts b/packages/widget/src/providers/ethereum/finery-wallet-list/index.ts index 2b6c4f96..f01c13a5 100644 --- a/packages/widget/src/providers/ethereum/finery-wallet-list/index.ts +++ b/packages/widget/src/providers/ethereum/finery-wallet-list/index.ts @@ -9,6 +9,7 @@ import { } from "@stakekit/rainbowkit/wallets"; import { createStore } from "mipd"; import { Maybe } from "purify-ts"; +import type { EIP1193Provider } from "viem"; import { injected } from "wagmi"; import { evmChainGroup } from "../../../domain/types/chains"; import { MaybeWindow } from "../../../utils/maybe-window"; @@ -156,6 +157,10 @@ const safeWalletWC: CommonWalletOptions = Maybe.of(safeWallet()) ) .unsafeCoerce(); +const asEip1193Provider = ( + provider: Record | undefined +): EIP1193Provider | undefined => provider as EIP1193Provider | undefined; + export const createFineryWallets: (evmChains: Chain[]) => { primaryWallets: WalletList[number]["wallets"]; otherWallets: WalletList[number]["wallets"]; @@ -209,7 +214,7 @@ export const createFineryWallets: (evmChains: Chain[]) => { target: { id: "cactusLink", name: "Cactus Link", - provider: cactusProvider?.provider as typeof window.ethereum, + provider: () => asEip1193Provider(cactusProvider?.provider), icon: cactusProvider?.info.icon ?? cactusIcon, }, })(config), @@ -228,7 +233,7 @@ export const createFineryWallets: (evmChains: Chain[]) => { target: { id: "mpcvaultPlugin", name: "MPC Vault", - provider: mpcVaultProvider?.provider as typeof window.ethereum, + provider: () => asEip1193Provider(mpcVaultProvider?.provider), icon: mpcVaultProvider?.info.icon ?? mpcVaultIcon, }, })(config), @@ -266,7 +271,7 @@ export const createFineryWallets: (evmChains: Chain[]) => { target: { id: "fireblocks", name: "Fireblocks", - provider: fireblocksProvider?.provider as typeof window.ethereum, + provider: () => asEip1193Provider(fireblocksProvider?.provider), icon: fireblocksProvider?.info.icon ?? fireblocksIcon, }, })(config), diff --git a/packages/widget/src/providers/exit-stake-store/index.tsx b/packages/widget/src/providers/exit-stake-store/index.tsx index 5542f1e9..3083df69 100644 --- a/packages/widget/src/providers/exit-stake-store/index.tsx +++ b/packages/widget/src/providers/exit-stake-store/index.tsx @@ -1,20 +1,22 @@ -import type { - ActionDto, - ActionRequestDto, - TokenDto, - YieldDto, -} from "@stakekit/api-hooks"; import { createStore } from "@xstate/store"; import type BigNumber from "bignumber.js"; import { Maybe } from "purify-ts"; import { createContext, type PropsWithChildren, useContext } from "react"; +import type { + ActionDto, + YieldCreateActionDto, +} from "../../domain/types/action"; +import type { AddressesDto } from "../../domain/types/addresses"; +import type { TokenDto, YieldTokenDto } from "../../domain/types/tokens"; +import type { Yield } from "../../domain/types/yields"; type InitData = { - requestDto: ActionRequestDto; - gasFeeToken: YieldDto["token"]; + requestDto: YieldCreateActionDto; + addresses: AddressesDto; + gasFeeToken: Yield["token"]; unstakeAmount: BigNumber; - integrationData: YieldDto; - unstakeToken: TokenDto; + integrationData: Yield; + unstakeToken: TokenDto | YieldTokenDto; }; type Store = Maybe }>; diff --git a/packages/widget/src/providers/index.tsx b/packages/widget/src/providers/index.tsx index 10ab2017..a63bebcf 100644 --- a/packages/widget/src/providers/index.tsx +++ b/packages/widget/src/providers/index.tsx @@ -41,8 +41,8 @@ export const Providers = ({ - - + + @@ -80,8 +80,8 @@ export const Providers = ({ - - + + diff --git a/packages/widget/src/providers/ledger/ledger-connector.ts b/packages/widget/src/providers/ledger/ledger-connector.ts index a71a07d3..22c80230 100644 --- a/packages/widget/src/providers/ledger/ledger-connector.ts +++ b/packages/widget/src/providers/ledger/ledger-connector.ts @@ -24,6 +24,7 @@ import { import type { InitParams } from "../../domain/types/init-params"; import { isLedgerDappBrowserProvider } from "../../utils"; import { configMeta, type ExtraProps } from "./ledger-live-connector-meta"; +import { prepareLedgerLiveTransaction } from "./prepare-ledger-live-transaction"; import { getFilteredSupportedLedgerFamiliesWithCurrency, getLedgerCurrencies, @@ -387,6 +388,7 @@ const createLedgerLiveConnector = ({ $disabledChains: $disabledChains.asObservable(), noAccountPlaceholder, deserializeTransaction, + prepareTransaction: prepareLedgerLiveTransaction, }; }); diff --git a/packages/widget/src/providers/ledger/ledger-live-connector-meta.ts b/packages/widget/src/providers/ledger/ledger-live-connector-meta.ts index 2b3a1f50..f79bb2fb 100644 --- a/packages/widget/src/providers/ledger/ledger-live-connector-meta.ts +++ b/packages/widget/src/providers/ledger/ledger-live-connector-meta.ts @@ -3,12 +3,14 @@ import type { deserializeTransaction, WalletAPIClient, } from "@ledgerhq/wallet-api-client"; +import type { RawTransaction } from "@ledgerhq/wallet-api-core"; import type { Chain } from "@stakekit/rainbowkit"; -import type { EitherAsync } from "purify-ts"; +import type { Either, EitherAsync } from "purify-ts"; import type { Observable } from "rxjs"; import type { Address } from "viem"; import type { Connector } from "wagmi"; import type { ConnectorWithFilteredChains } from "../../domain/types/connectors"; +import type { SKTxMeta } from "../../domain/types/wallets/generic-wallet"; export const configMeta = { id: "ledgerLive", @@ -25,6 +27,15 @@ export type ExtraProps = ConnectorWithFilteredChains & { switchAccount: (account: Account) => void; noAccountPlaceholder: Address; deserializeTransaction: typeof deserializeTransaction; + prepareTransaction: ({ + network, + tx, + txMeta, + }: { + network: string; + tx: string; + txMeta: SKTxMeta; + }) => Either; }; type LedgerLiveConnector = Connector & ExtraProps; diff --git a/packages/widget/src/providers/ledger/prepare-ledger-live-transaction.ts b/packages/widget/src/providers/ledger/prepare-ledger-live-transaction.ts new file mode 100644 index 00000000..29f4cac6 --- /dev/null +++ b/packages/widget/src/providers/ledger/prepare-ledger-live-transaction.ts @@ -0,0 +1,610 @@ +import type { + RawEthereumTransaction, + RawTransaction, + RawTronTransaction, +} from "@ledgerhq/wallet-api-core"; +import { TypeRegistry } from "@polkadot/types"; +import { + Cell, + type CommonMessageInfoRelaxedInternal, + loadMessageRelaxed, +} from "@ton/core"; +import BigNumber from "bignumber.js"; +import { Either, Left, Right } from "purify-ts"; +import { hexToBytes } from "viem"; +import { isEvmChain } from "../../domain/types/chains"; +import { + CosmosNetworks, + EvmNetworks, + MiscNetworks, + SubstrateNetworks, +} from "../../domain/types/chains/networks"; +import { + substratePayloadCodec, + unsignedEVMTransactionCodec, + unsignedTonTransactionCodec, + unsignedTronTransactionCodec, +} from "../../domain/types/transaction"; +import type { SKTxMeta } from "../../domain/types/wallets/generic-wallet"; + +type PrepareLedgerLiveTransactionParams = { + tx: string; + network: string; + txMeta: SKTxMeta; +}; + +type GasEstimate = { + amount?: string | null; + gasLimit?: string | null; + token?: { + decimals: number; + } | null; +} | null; + +type SubstrateHumanMethod = { + section: string; + method: string; + args: Record | null; +}; + +const eip1559FieldsUnsupportedNetworks = new Set([ + EvmNetworks.Polygon, + EvmNetworks.Optimism, + EvmNetworks.Arbitrum, + EvmNetworks.AvalancheC, + EvmNetworks.Core, +]); + +export const prepareLedgerLiveTransaction = ({ + network, + tx, + txMeta, +}: PrepareLedgerLiveTransactionParams): Either => { + const parsedTx = parseJson(tx); + + if (parsedTx.isLeft()) { + return parsedTx; + } + + if (isEvmChain(network)) { + return parsedTx.chain((value) => + unsignedEVMTransactionCodec + .decode(value) + .mapLeft(String) + .map((decodedTx) => + buildEthereumLedgerTransaction({ + network, + tx: decodedTx, + }) + ) + ); + } + + switch (network) { + case SubstrateNetworks.Polkadot: + return parsedTx.chain((value) => + substratePayloadCodec + .decode(value) + .mapLeft(String) + .chain((payload) => + buildPolkadotLedgerTransaction({ + gasEstimate: parseGasEstimate(txMeta.gasEstimate), + payload, + txMeta, + }) + ) + ); + case MiscNetworks.Tron: + return parsedTx.chain((value) => + unsignedTronTransactionCodec + .decode(value) + .mapLeft(String) + .chain(() => buildTronLedgerTransaction(txMeta)) + ); + case MiscNetworks.Near: + return buildNearLedgerTransaction(txMeta); + case MiscNetworks.Tezos: + return buildTezosLedgerTransaction(txMeta); + case MiscNetworks.Ton: + return parsedTx.chain((value) => + unsignedTonTransactionCodec + .decode(value) + .mapLeft(String) + .chain((decodedTx) => buildTonLedgerTransaction(decodedTx, txMeta)) + ); + default: + if (isCosmosNetwork(network)) { + return buildCosmosLedgerTransaction(txMeta); + } + + return parsedTx.map((value) => value as RawTransaction); + } +}; + +const parseJson = (value: string): Either => + Either.encase(() => JSON.parse(value)).mapLeft(() => "Failed to parse tx"); + +const buildEthereumLedgerTransaction = ({ + network, + tx, +}: { + network: string; + tx: ReturnType extends Either< + string, + infer T + > + ? T + : never; +}): RawTransaction => { + const ledgerTx: RawEthereumTransaction = { + amount: (tx.value ?? 0n).toString(), + recipient: tx.to, + family: "ethereum", + nonce: tx.nonce, + gasLimit: tx.gasLimit.toString(), + data: Buffer.from(hexToBytes(tx.data)).toString("hex"), + }; + + if ( + tx.maxFeePerGas && + tx.maxPriorityFeePerGas && + !eip1559FieldsUnsupportedNetworks.has(network) + ) { + ledgerTx.maxFeePerGas = tx.maxFeePerGas.toString(); + ledgerTx.maxPriorityFeePerGas = tx.maxPriorityFeePerGas.toString(); + } else if (tx.gasPrice) { + ledgerTx.gasPrice = tx.gasPrice.toString(); + } + + return ledgerTx as RawTransaction; +}; + +const buildPolkadotLedgerTransaction = ({ + gasEstimate, + payload, + txMeta, +}: { + gasEstimate: GasEstimate; + payload: ReturnType extends Either< + string, + infer T + > + ? T + : never; + txMeta: SKTxMeta; +}): Either => + Either.encase(() => { + const registry = new TypeRegistry(); + registry.setMetadata( + registry.createType("Metadata", payload.tx.metadataRpc) + ); + + const extrinsic = registry.createType( + "Extrinsic", + { method: payload.tx.method }, + { version: payload.tx.version } + ); + const humanMethod = extrinsic.method.toHuman() as SubstrateHumanMethod; + const args = formatSubstrateArgs(humanMethod.args); + const fee = getFeeInBaseUnits(gasEstimate); + const recipient = payload.tx.address; + + const ledgerTx = (() => { + switch (humanMethod.method) { + case "bond": + return { + mode: "bond", + family: "polkadot", + amount: readString(args.value, txMeta.amountRaw), + recipient, + fee: fee.toString(), + rewardDestination: args.rewardDestination, + }; + case "bondExtra": + return { + mode: "bond", + family: "polkadot", + amount: readString(args.maxAdditional), + recipient, + fee: fee.toString(), + rewardDestination: "Stash", + }; + case "unbond": + return { + mode: "unbond", + family: "polkadot", + amount: readString(args.value, txMeta.amountRaw), + recipient, + fee: fee.toString(), + }; + case "nominate": + return { + mode: "nominate", + family: "polkadot", + amount: "0", + recipient, + fee: fee.toString(), + validators: readValidatorTargets(args.targets), + }; + case "chill": + return { + mode: "chill", + family: "polkadot", + amount: "0", + recipient, + fee: fee.toString(), + }; + case "rebond": + return { + mode: "rebond", + family: "polkadot", + amount: readString(args.value, txMeta.amountRaw), + recipient, + fee: fee.toString(), + }; + case "withdrawUnbonded": + return { + mode: "withdrawUnbonded", + family: "polkadot", + amount: readString(args.value, "0"), + recipient, + numOfSlashingSpans: Number( + readString(args.numOfSlashingSpans, "0") + ), + fee: fee.toString(), + }; + default: + throw new Error( + `Unsupported Polkadot Ledger method: ${humanMethod.method}` + ); + } + })(); + + return ledgerTx as RawTransaction; + }).mapLeft((error) => + error instanceof Error ? error.message : "Invalid Polkadot transaction" + ); + +const buildCosmosLedgerTransaction = ( + txMeta: SKTxMeta +): Either => { + const validatorAddress = txMeta.rawArguments?.validatorAddress; + const amount = getActionAmountInBaseUnits(txMeta); + + if (!validatorAddress || !amount) { + return Left("Missing Cosmos Ledger arguments"); + } + + return Right({ + family: "cosmos", + mode: getCosmosMode(txMeta.txType), + validators: [ + { + address: validatorAddress, + amount: amount.toString(), + }, + ], + amount: amount.toString(), + recipient: validatorAddress, + memo: "via StakeKit CID-1009", + } as RawTransaction); +}; + +const buildTronLedgerTransaction = ( + txMeta: SKTxMeta +): Either => { + const amount = getActionAmountInBaseUnits(txMeta); + const resource = txMeta.rawArguments?.tronResource; + const validatorAddress = + txMeta.rawArguments?.validatorAddress ?? + txMeta.rawArguments?.validatorAddresses?.[0]; + + const tronLedgerTx = (() => { + switch (txMeta.txType) { + case "FREEZE_BANDWIDTH": + case "FREEZE_ENERGY": + if (!amount || !resource) return Left("Missing Tron freeze arguments"); + return Right({ + amount: amount.toString(), + recipient: txMeta.address ?? "", + family: "tron", + mode: "freeze", + resource, + } as RawTronTransaction); + case "VOTE": + if (!amount || !txMeta.rawArguments?.validatorAddresses?.length) { + return Left("Missing Tron vote arguments"); + } + return Right({ + amount: amount.toString(), + recipient: txMeta.address ?? "", + family: "tron", + mode: "vote", + votes: txMeta.rawArguments.validatorAddresses.map((address) => ({ + address, + voteCount: amount + .dividedToIntegerBy( + txMeta.rawArguments?.validatorAddresses?.length ?? 1 + ) + .toNumber(), + })), + } as RawTronTransaction); + case "UNDELEGATE_BANDWIDTH": + case "UNDELEGATE_ENERGY": + if (!amount || !resource || !validatorAddress) { + return Left("Missing Tron undelegate arguments"); + } + return Right({ + amount: amount.toString(), + recipient: validatorAddress, + family: "tron", + mode: "unDelegateResource", + resource, + } as RawTronTransaction); + case "UNFREEZE_LEGACY_BANDWIDTH": + case "UNFREEZE_LEGACY_ENERGY": + return Right({ + amount: "0", + recipient: "", + family: "tron", + mode: "legacyUnfreeze", + resource, + } as RawTronTransaction); + case "UNFREEZE_BANDWIDTH": + case "UNFREEZE_ENERGY": + if (!amount || !resource) + return Left("Missing Tron unfreeze arguments"); + return Right({ + amount: amount.toString(), + recipient: txMeta.address ?? "", + family: "tron", + mode: "unfreeze", + resource, + } as RawTronTransaction); + case "CLAIM_REWARDS": + return Right({ + amount: "0", + recipient: txMeta.address ?? "", + family: "tron", + mode: "claimReward", + } as RawTronTransaction); + default: + return Left( + `Unsupported Tron Ledger transaction type: ${txMeta.txType}` + ); + } + })(); + + return tronLedgerTx.map((tx) => ({ ...tx, votes: tx.votes ?? [] })); +}; + +const buildNearLedgerTransaction = ( + txMeta: SKTxMeta +): Either => { + const validatorAddress = txMeta.rawArguments?.validatorAddress; + const amount = getActionAmountInBaseUnits(txMeta); + + if (!validatorAddress || !amount) { + return Left("Missing Near Ledger arguments"); + } + + return Right({ + amount: amount.toString(), + recipient: validatorAddress, + family: "near", + mode: getNearMode(txMeta.txType), + fees: getFeeInBaseUnits(parseGasEstimate(txMeta.gasEstimate)).toString(), + } as RawTransaction); +}; + +const buildTezosLedgerTransaction = ( + txMeta: SKTxMeta +): Either => { + const gasEstimate = parseGasEstimate(txMeta.gasEstimate); + const isUnstake = txMeta.txType === "UNSTAKE"; + const recipient = isUnstake ? "" : txMeta.rawArguments?.validatorAddress; + + if (!isUnstake && !recipient) { + return Left("Missing Tezos Ledger validator"); + } + + return Right({ + family: "tezos", + mode: isUnstake ? "undelegate" : "delegate", + amount: "0", + recipient: recipient ?? "", + fees: getFeeInBaseUnits(gasEstimate).toString(), + gasLimit: String(gasEstimate?.gasLimit ?? 0), + } as RawTransaction); +}; + +const buildTonLedgerTransaction = ( + tx: ReturnType extends Either< + string, + infer T + > + ? T + : never, + txMeta: SKTxMeta +): Either => { + const gasEstimate = parseGasEstimate(txMeta.gasEstimate); + + if (Array.isArray(tx)) { + const firstMessage = tx[0]; + + if (!firstMessage) { + return Left("Unsupported Ton Ledger transaction payload"); + } + + return Right({ + family: "ton", + amount: firstMessage.amount, + recipient: firstMessage.address, + fees: getFeeInBaseUnits(gasEstimate).toString(), + comment: { + text: firstMessage.payload, + isEncrypted: false, + }, + } as RawTransaction); + } + + return Either.encase(() => { + const parsedTx = loadMessageRelaxed( + Cell.fromBase64(tx.message).beginParse() + ); + const info = parsedTx.info as CommonMessageInfoRelaxedInternal; + + return { + family: "ton", + amount: info.value.coins.toString(), + recipient: info.dest.toString(), + fees: getFeeInBaseUnits(gasEstimate).toString(), + comment: { + text: parsedTx.body.toBoc().toString("base64"), + isEncrypted: false, + }, + } as RawTransaction; + }).mapLeft(() => "Unsupported Ton Ledger transaction payload"); +}; + +const isCosmosNetwork = (network: string): network is CosmosNetworks => + Object.values(CosmosNetworks).includes(network as CosmosNetworks); + +const parseGasEstimate = ( + gasEstimate: SKTxMeta["gasEstimate"] +): GasEstimate => { + if (!gasEstimate) return null; + + return Either.encase(() => JSON.parse(gasEstimate) as GasEstimate).orDefault( + null + ); +}; + +const getActionAmountInBaseUnits = (txMeta: SKTxMeta): BigNumber | null => { + if (txMeta.amountRaw) { + return new BigNumber(txMeta.amountRaw); + } + + const amount = txMeta.rawArguments?.amount ?? txMeta.amount; + const decimals = txMeta.inputToken?.decimals; + + if (!amount || decimals === undefined) { + return null; + } + + return new BigNumber(amount).multipliedBy(new BigNumber(10).pow(decimals)); +}; + +const getFeeInBaseUnits = (gasEstimate: GasEstimate): BigNumber => { + if (!gasEstimate?.amount || !gasEstimate.token) { + return new BigNumber(0); + } + + return new BigNumber(gasEstimate.amount).multipliedBy( + new BigNumber(10).pow(gasEstimate.token.decimals) + ); +}; + +const getCosmosMode = (txType: SKTxMeta["txType"]): string => { + switch (txType) { + case "STAKE": + return "delegate"; + case "UNSTAKE": + return "undelegate"; + case "RESTAKE": + case "REBOND": + return "redelegate"; + case "RESTAKE_REWARDS": + return "claimRewardCompound"; + case "CLAIM_REWARDS": + return "claimReward"; + default: + return "delegate"; + } +}; + +const getNearMode = (txType: SKTxMeta["txType"]): string => { + switch (txType) { + case "STAKE": + return "stake"; + case "UNSTAKE": + return "unstake"; + case "WITHDRAW": + case "CLAIM_UNSTAKED": + return "withdraw"; + default: + return "stake"; + } +}; + +const formatSubstrateArgs = ( + args: Record | null +): Record => { + if (!args) return {}; + + return Object.entries(args).reduce>( + (acc, [key, value]) => { + acc[toCamelCase(key)] = normalizeSubstrateValue(value); + + return acc; + }, + {} + ); +}; + +const normalizeSubstrateValue = (value: unknown): unknown => { + if (Array.isArray(value)) { + return value.map(normalizeSubstrateValue); + } + + if (typeof value === "string") { + const normalized = value.replace(/,/g, ""); + return new BigNumber(normalized).isNaN() ? value : normalized; + } + + if (typeof value === "object" && value !== null) { + return formatSubstrateArgs(value as Record); + } + + return value; +}; + +const toCamelCase = (key: string): string => + key.includes("-") || key.includes("_") + ? key + .toLowerCase() + .replace(/([-_][a-z])/g, (group) => + group.toUpperCase().replace("-", "").replace("_", "") + ) + : key; + +const readString = ( + value: unknown, + fallback: string | null | undefined = undefined +): string => { + if (typeof value === "string") return value; + if (typeof value === "number" || typeof value === "bigint") { + return value.toString(); + } + if (fallback) return fallback; + + return "0"; +}; + +const readValidatorTargets = (value: unknown): string[] => { + if (!Array.isArray(value)) return []; + + return value.flatMap((item) => { + if (typeof item === "string") return [item]; + if (typeof item === "object" && item !== null && "Id" in item) { + const id = (item as { Id?: unknown }).Id; + return typeof id === "string" ? [id] : []; + } + if (typeof item === "object" && item !== null && "id" in item) { + const id = (item as { id?: unknown }).id; + return typeof id === "string" ? [id] : []; + } + + return []; + }); +}; diff --git a/packages/widget/src/providers/misc/cardano-connector.ts b/packages/widget/src/providers/misc/cardano-connector.ts index e6027cca..7a3acf9f 100644 --- a/packages/widget/src/providers/misc/cardano-connector.ts +++ b/packages/widget/src/providers/misc/cardano-connector.ts @@ -1,11 +1,11 @@ import { BrowserWallet } from "@meshsdk/wallet"; -import { MiscNetworks } from "@stakekit/common"; import type { WalletDetailsParams, WalletList } from "@stakekit/rainbowkit"; import { EitherAsync } from "purify-ts"; import { BehaviorSubject } from "rxjs"; import type { Address, Chain } from "viem"; import { createConnector } from "wagmi"; import { cardano } from "../../domain/types/chains/misc"; +import { MiscNetworks } from "../../domain/types/chains/networks"; import { getNetworkLogo } from "../../utils"; import { configMeta, diff --git a/packages/widget/src/providers/misc/config.ts b/packages/widget/src/providers/misc/config.ts index 324208cc..b9caaf9a 100644 --- a/packages/widget/src/providers/misc/config.ts +++ b/packages/widget/src/providers/misc/config.ts @@ -1,6 +1,5 @@ import type { Wallet } from "@solana/wallet-adapter-react"; import type { Connection } from "@solana/web3.js"; -import type { Networks } from "@stakekit/common"; import type { Chain, WalletList } from "@stakekit/rainbowkit"; import type { QueryClient } from "@tanstack/react-query"; import { EitherAsync, Maybe, MaybeAsync } from "purify-ts"; @@ -9,6 +8,7 @@ import { type MiscChainsMap, miscChainsMap, } from "../../domain/types/chains/misc"; +import type { Networks } from "../../domain/types/chains/networks"; import { typeSafeObjectEntries, typeSafeObjectFromEntries } from "../../utils"; import type { VariantProps } from "../settings/types"; diff --git a/packages/widget/src/providers/misc/solana-connector.ts b/packages/widget/src/providers/misc/solana-connector.ts index 4a9982ec..468b2d4e 100644 --- a/packages/widget/src/providers/misc/solana-connector.ts +++ b/packages/widget/src/providers/misc/solana-connector.ts @@ -5,7 +5,6 @@ import { Transaction, VersionedTransaction, } from "@solana/web3.js"; -import { MiscNetworks } from "@stakekit/common"; import type { Chain, WalletDetailsParams, @@ -17,6 +16,7 @@ import type { Address } from "viem"; import { createConnector } from "wagmi"; import portoIcon from "../../assets/images/porto.svg"; import { solana } from "../../domain/types/chains/misc"; +import { MiscNetworks } from "../../domain/types/chains/networks"; import { getNetworkLogo } from "../../utils"; import type { VariantProps } from "../settings/types"; import { @@ -105,6 +105,16 @@ const createSolanaConnector = ({ if (isDisconnected) return false; + const recentConnectorId = + await config.storage?.getItem("recentConnectorId"); + + if ( + recentConnectorId && + recentConnectorId === solanaWallet.adapter.name + ) { + await solanaWallet.adapter.autoConnect(); + } + return !!( solanaWallet.adapter.connected && solanaWallet.adapter.publicKey?.toBase58() diff --git a/packages/widget/src/providers/misc/ton-connector.ts b/packages/widget/src/providers/misc/ton-connector.ts index c468f1bd..f61a768b 100644 --- a/packages/widget/src/providers/misc/ton-connector.ts +++ b/packages/widget/src/providers/misc/ton-connector.ts @@ -1,4 +1,3 @@ -import { MiscNetworks } from "@stakekit/common"; import type { WalletDetailsParams, WalletList } from "@stakekit/rainbowkit"; import { Cell, @@ -15,6 +14,7 @@ import { BehaviorSubject } from "rxjs"; import type { Address, Chain } from "viem"; import { createConnector } from "wagmi"; import { ton } from "../../domain/types/chains/misc"; +import { MiscNetworks } from "../../domain/types/chains/networks"; import { unsignedTonTransactionTonConnectCodec } from "../../domain/types/transaction"; import { getNetworkLogo } from "../../utils"; import { diff --git a/packages/widget/src/providers/misc/tron-connector.ts b/packages/widget/src/providers/misc/tron-connector.ts index 1d0b809f..6d929f56 100644 --- a/packages/widget/src/providers/misc/tron-connector.ts +++ b/packages/widget/src/providers/misc/tron-connector.ts @@ -1,4 +1,3 @@ -import { MiscNetworks } from "@stakekit/common"; import type { Chain, ChainGroup, @@ -17,6 +16,7 @@ import { createConnector } from "wagmi"; import { images } from "../../assets/images"; import { config } from "../../config"; import { tron } from "../../domain/types/chains/misc"; +import { MiscNetworks } from "../../domain/types/chains/networks"; import { getNetworkLogo, getTokenLogo } from "../../utils"; import type { ExtraProps, StorageItem } from "./tron-connector-meta"; import { configMeta } from "./tron-connector-meta"; diff --git a/packages/widget/src/providers/pending-action-store/index.tsx b/packages/widget/src/providers/pending-action-store/index.tsx index 2350baff..6a612f39 100644 --- a/packages/widget/src/providers/pending-action-store/index.tsx +++ b/packages/widget/src/providers/pending-action-store/index.tsx @@ -1,21 +1,21 @@ -import type { - ActionDto, - ActionTypes, - AddressesDto, - PendingActionRequestDto, - TokenDto, - YieldDto, -} from "@stakekit/api-hooks"; import { createStore } from "@xstate/store"; import { Maybe } from "purify-ts"; import { createContext, type PropsWithChildren, useContext } from "react"; +import type { + ActionDto, + YieldCreateManageActionDto, +} from "../../domain/types/action"; +import type { AddressesDto } from "../../domain/types/addresses"; +import type { YieldPendingActionType } from "../../domain/types/pending-action"; +import type { TokenDto, YieldTokenDto } from "../../domain/types/tokens"; +import type { Yield } from "../../domain/types/yields"; type InitData = { - requestDto: PendingActionRequestDto; + requestDto: YieldCreateManageActionDto; addresses: AddressesDto; - pendingActionType: ActionTypes; - integrationData: YieldDto; - interactedToken: TokenDto; + pendingActionType: YieldPendingActionType; + integrationData: Yield; + interactedToken: TokenDto | YieldTokenDto; gasFeeToken: TokenDto; }; diff --git a/packages/widget/src/providers/settings/types.ts b/packages/widget/src/providers/settings/types.ts index ba141092..29e98c4e 100644 --- a/packages/widget/src/providers/settings/types.ts +++ b/packages/widget/src/providers/settings/types.ts @@ -1,16 +1,21 @@ -import type { TokenDto, TransactionFormat } from "@stakekit/api-hooks"; +import type { Chain, WalletList } from "@stakekit/rainbowkit"; import type { ReactNode } from "react"; import type { SupportedSKChainIds, SupportedSKChains, } from "../../domain/types/chains"; +import type { TransactionFormat } from "../../domain/types/settings"; import type { PreferredTokenYieldsPerNetwork } from "../../domain/types/stake"; +import type { TokenDto } from "../../domain/types/tokens"; import type { SKExternalProviders } from "../../domain/types/wallets"; -import type { Languages, localResources } from "../../translation"; +import type { Languages, localResources } from "../../translation/resources"; import type { RecursivePartial } from "../../types/utils"; -import type { ThemeWrapperTheme } from "../theme-wrapper"; -import type { Properties, TrackEventVal, TrackPageVal } from "../tracking"; -import type { BuildWagmiConfig } from "../wagmi"; +import type { ThemeWrapperTheme } from "../theme-wrapper-types"; +import type { + Properties, + TrackEventVal, + TrackPageVal, +} from "../tracking/types"; export type VariantProps = | { @@ -29,6 +34,7 @@ export type VariantProps = export type SettingsProps = { apiKey: string; baseUrl?: string; + yieldsApiUrl?: string; theme?: ThemeWrapperTheme; tracking?: { trackEvent?: (event: TrackEventVal, properties?: Properties) => void; @@ -37,7 +43,7 @@ export type SettingsProps = { onMountAnimationComplete?: () => void; wagmi?: { forceWalletConnectOnly?: boolean; - __customConnectors__?: Parameters[0]["customConnectors"]; + __customConnectors__?: (chains: Chain[]) => WalletList; }; externalProviders?: SKExternalProviders; disableGasCheck?: boolean; @@ -48,8 +54,17 @@ export type SettingsProps = { language?: Languages; isSafe?: boolean; disableInjectedProviderDiscovery?: boolean; - mapWalletFn?: Parameters[0]["mapWalletFn"]; - mapWalletListFn?: Parameters[0]["mapWalletListFn"]; + mapWalletFn?: (props: { + id: string; + iconUrl: string | (() => Promise); + name: string; + iconBackground: string; + }) => { + iconUrl: string | (() => Promise); + name: string; + iconBackground: string; + }; + mapWalletListFn?: (val: WalletList) => WalletList; customTranslations?: RecursivePartial; tokensForEnabledYieldsOnly?: boolean; preferredTransactionFormat?: TransactionFormat; diff --git a/packages/widget/src/providers/sk-wallet/errors.ts b/packages/widget/src/providers/sk-wallet/errors.ts index 2418f6b6..f3b4756b 100644 --- a/packages/widget/src/providers/sk-wallet/errors.ts +++ b/packages/widget/src/providers/sk-wallet/errors.ts @@ -11,8 +11,8 @@ export class SafeFailedError extends Error { export class SendTransactionError extends Error { _tag = "SendTransactionError"; - constructor(message?: string) { - super(message); + constructor(cause?: unknown) { + super("Send transaction failed", { cause }); this._tag = "SendTransactionError"; } @@ -20,8 +20,8 @@ export class SendTransactionError extends Error { export class TransactionDecodeError extends Error { _tag = "TransactionDecodeError"; - constructor(message?: string) { - super(message); + constructor(message?: string, cause?: unknown) { + super(message, { cause }); this._tag = "TransactionDecodeError"; } diff --git a/packages/widget/src/providers/sk-wallet/index.tsx b/packages/widget/src/providers/sk-wallet/index.tsx index 945f0a1f..f7f1d24e 100644 --- a/packages/widget/src/providers/sk-wallet/index.tsx +++ b/packages/widget/src/providers/sk-wallet/index.tsx @@ -1,4 +1,6 @@ import type { Account } from "@ledgerhq/wallet-api-client"; +import type { GatewayTransactionDetails } from "@safe-global/safe-apps-sdk"; +import { Effect, Schedule } from "effect"; import { Either, EitherAsync, Left, Maybe, Right } from "purify-ts"; import type { PropsWithChildren } from "react"; import { @@ -15,7 +17,6 @@ import { useSendTransaction, useSignMessage, } from "wagmi"; -import { withRequestErrorRetry } from "../../common/utils"; import { config } from "../../config"; import { isBittensorChain, @@ -186,10 +187,16 @@ export const SKWalletProvider = ({ children }: PropsWithChildren) => { ) .chain((val) => EitherAsync.liftEither( - Either.encase(() => JSON.parse(tx)) - - .chain((parsedTx) => - Either.encase(() => conn.deserializeTransaction(parsedTx)) + conn + .prepareTransaction({ + network, + tx, + txMeta, + }) + .chain((preparedTx) => + Either.encase(() => + conn.deserializeTransaction(preparedTx) + ) ) .mapLeft(() => new TransactionDecodeError()) ).map((deserializedTransaction) => ({ @@ -389,38 +396,54 @@ export const SKWalletProvider = ({ children }: PropsWithChildren) => { .map((res) => res.safeTxHash) ) .chain((safeTxHash) => - withRequestErrorRetry({ - fn: () => - conn - .getTxStatus(safeTxHash) - .chain((res) => - !res.txHash || res.txStatus !== conn.txStatus.SUCCESS - ? EitherAsync.liftEither( - Left( - new SafeFailedError( - res.txStatus === conn.txStatus.FAILED || - res.txStatus === conn.txStatus.CANCELLED - ? "FAILED" - : "NOT_READY" - ) - ) - ) - : EitherAsync.liftEither(Right(res.txHash)) - ) - .run() - .then((res) => res.unsafeCoerce()), - shouldRetry: (error, retryCount) => - Maybe.fromNullable(error) - .chainNullable((e) => - (e as SafeFailedError)._tag === "SafeFailedError" - ? (e as SafeFailedError) - : null + EitherAsync(() => + Effect.gen(function* () { + const txStatusResult = yield* Effect.tryPromise({ + try: () => conn.getTxStatus(safeTxHash).run(), + catch: (error) => + error instanceof Error + ? error + : new Error("Could not get Safe transaction status", { + cause: error, + }), + }); + + if (txStatusResult.isLeft()) { + return yield* Effect.fail( + txStatusResult.extract() as Error + ); + } + + const txStatus = + txStatusResult.extract() as GatewayTransactionDetails; + + if ( + txStatus.txHash && + txStatus.txStatus === conn.txStatus.SUCCESS + ) { + return txStatus.txHash; + } + + return yield* Effect.fail( + new SafeFailedError( + txStatus.txStatus === conn.txStatus.FAILED || + txStatus.txStatus === conn.txStatus.CANCELLED + ? "FAILED" + : "NOT_READY" ) - .filter((e) => e.type !== "FAILED" && !checkIsUnmounted()) - .map(() => retryCount < 120) - .orDefault(false), - retryWaitForMs: () => 7000, - }) + ); + }).pipe( + Effect.retry({ + schedule: Schedule.spaced("7 seconds"), + times: 120, + while: (error) => + error instanceof SafeFailedError && + error.type !== "FAILED" && + !checkIsUnmounted(), + }), + Effect.runPromise + ) + ) ) .mapLeft(() => new SendTransactionError()) .map((val) => ({ signedTx: val as Hash, broadcasted: true })); @@ -437,23 +460,32 @@ export const SKWalletProvider = ({ children }: PropsWithChildren) => { return new TransactionDecodeError(); }) ).chain((val) => - EitherAsync(() => + EitherAsync(() => { /** * Params need to be in strict format, don't spread the object(val)! */ - sendTransactionAsync({ + const tx = { data: val.data, to: val.to, value: val.value, - nonce: val.nonce, - maxFeePerGas: val.maxFeePerGas, - maxPriorityFeePerGas: val.maxPriorityFeePerGas, chainId: val.chainId, gas: val.gasLimit, - type: val.maxFeePerGas ? "eip1559" : "legacy", - }) - ) - .mapLeft(() => new SendTransactionError()) + }; + + return val.maxFeePerGas !== undefined + ? sendTransactionAsync({ + ...tx, + type: "eip1559", + maxFeePerGas: val.maxFeePerGas, + maxPriorityFeePerGas: val.maxPriorityFeePerGas, + }) + : sendTransactionAsync({ + ...tx, + type: "legacy", + gasPrice: val.gasPrice, + }); + }) + .mapLeft((e) => new SendTransactionError(e)) .map((val) => ({ signedTx: val, broadcasted: true })) ); }), diff --git a/packages/widget/src/providers/sk-wallet/use-additional-addresses.ts b/packages/widget/src/providers/sk-wallet/use-additional-addresses.ts index 1fd7590d..10d88740 100644 --- a/packages/widget/src/providers/sk-wallet/use-additional-addresses.ts +++ b/packages/widget/src/providers/sk-wallet/use-additional-addresses.ts @@ -1,8 +1,8 @@ import type { ChainWalletBase } from "@cosmos-kit/core"; -import type { AddressWithTokenDtoAdditionalAddresses } from "@stakekit/api-hooks"; import { useQuery } from "@tanstack/react-query"; import { EitherAsync, Left, List, Right } from "purify-ts"; import type { Connector } from "wagmi"; +import type { AddressWithTokenDtoAdditionalAddresses } from "../../domain/types/addresses"; import { getStorageItem } from "../../services/local-storage"; import type { CosmosConnector } from "../cosmos/cosmos-connector-meta"; import { isCosmosConnector } from "../cosmos/cosmos-connector-meta"; diff --git a/packages/widget/src/providers/substrate/config.ts b/packages/widget/src/providers/substrate/config.ts index 1ba6936d..98eefedd 100644 --- a/packages/widget/src/providers/substrate/config.ts +++ b/packages/widget/src/providers/substrate/config.ts @@ -2,6 +2,7 @@ import type { Chain as LunoKitChain } from "@luno-kit/core/chains"; import type { Chain, WalletList } from "@stakekit/rainbowkit"; import type { QueryClient } from "@tanstack/react-query"; import { EitherAsync, Maybe } from "purify-ts"; +import { getEnabledNetworks } from "../../common/get-enabled-networks"; import { config } from "../../config"; import { type SubstrateChainsMap, @@ -12,16 +13,17 @@ import { typeSafeObjectEntries, typeSafeObjectFromEntries, } from "../../utils"; -import { getEnabledNetworks } from "../api/get-enabled-networks"; -import { getSubstrateConnectors } from "./substrate-connector"; +import type { ApiClient } from "../api/api-client"; const queryKey = [config.appPrefix, "substrate-config"]; const staleTime = Number.POSITIVE_INFINITY; const queryFn = async ({ + apiClient, queryClient, forceWalletConnectOnly, }: { + apiClient: ApiClient; queryClient: QueryClient; forceWalletConnectOnly: boolean; }): Promise<{ @@ -32,8 +34,8 @@ const queryFn = async ({ wallets: WalletList[number]["wallets"]; }>; }> => - getEnabledNetworks({ queryClient }).caseOf({ - Right: (networks) => { + getEnabledNetworks({ apiClient, queryClient }).caseOf({ + Right: async (networks) => { const filteredSubstrateChainsMap: Partial = typeSafeObjectFromEntries( typeSafeObjectEntries(substrateChainsMap).filter( @@ -61,17 +63,21 @@ const queryFn = async ({ }) ); - return Promise.resolve({ + const connector = substrateChains.length + ? Maybe.of( + (await import("./substrate-connector")).getSubstrateConnectors( + substrateChains, + lunoKitChains, + forceWalletConnectOnly + ) + ) + : Maybe.empty(); + + return { substrateChainsMap: filteredSubstrateChainsMap, substrateChains, - connector: Maybe.fromFalsy(substrateChains.length > 0).map(() => - getSubstrateConnectors( - substrateChains, - lunoKitChains, - forceWalletConnectOnly - ) - ), - }); + connector, + }; }, Left: (l) => Promise.reject(l), }); diff --git a/packages/widget/src/providers/substrate/substrate-connector.ts b/packages/widget/src/providers/substrate/substrate-connector.ts index 882eb889..c2ca22dc 100644 --- a/packages/widget/src/providers/substrate/substrate-connector.ts +++ b/packages/widget/src/providers/substrate/substrate-connector.ts @@ -8,7 +8,6 @@ import { import { TypeRegistry } from "@polkadot/types"; import type { SignerPayloadJSON } from "@polkadot/types/types"; import { u8aToHex } from "@polkadot/util"; -import { SubstrateNetworks } from "@stakekit/common"; import type { WalletDetailsParams, WalletList } from "@stakekit/rainbowkit"; import { Either, EitherAsync, Maybe, Right } from "purify-ts"; import { BehaviorSubject } from "rxjs"; @@ -16,6 +15,7 @@ import type { Address } from "viem"; import { createConnector } from "wagmi"; import type { Chain } from "wagmi/chains"; import { config } from "../../config"; +import { SubstrateNetworks } from "../../domain/types/chains/networks"; import { getNetworkLogo } from "../../utils"; import { configMeta, diff --git a/packages/widget/src/providers/theme-wrapper-types.ts b/packages/widget/src/providers/theme-wrapper-types.ts new file mode 100644 index 00000000..52476b8b --- /dev/null +++ b/packages/widget/src/providers/theme-wrapper-types.ts @@ -0,0 +1,9 @@ +import type { darkTheme, lightTheme } from "../styles/theme/themes"; +import type { RecursivePartial } from "../types/utils"; + +export type ThemeWrapperTheme = + | RecursivePartial + | { + lightMode?: RecursivePartial; + darkMode?: RecursivePartial; + }; diff --git a/packages/widget/src/providers/theme-wrapper.tsx b/packages/widget/src/providers/theme-wrapper.tsx index 2f0ec63b..95bc18f0 100644 --- a/packages/widget/src/providers/theme-wrapper.tsx +++ b/packages/widget/src/providers/theme-wrapper.tsx @@ -9,16 +9,8 @@ import { darkTheme, lightTheme } from "../styles/theme/themes"; import { fineryThemeOverrides } from "../styles/theme/variant-overrides/finery"; import { portoThemeOverrides } from "../styles/theme/variant-overrides/porto"; import { utilaThemeOverrides } from "../styles/theme/variant-overrides/utila"; -import type { RecursivePartial } from "../types/utils"; import { useSettings } from "./settings"; -export type ThemeWrapperTheme = - | RecursivePartial - | { - lightMode?: RecursivePartial; - darkMode?: RecursivePartial; - }; - export const ThemeWrapper = ({ children }: PropsWithChildren) => { const { theme = { lightMode: lightTheme }, variant } = useSettings(); diff --git a/packages/widget/src/providers/tracking/index.tsx b/packages/widget/src/providers/tracking/index.tsx index 5649ac47..4dd9e5a2 100644 --- a/packages/widget/src/providers/tracking/index.tsx +++ b/packages/widget/src/providers/tracking/index.tsx @@ -1,73 +1,15 @@ import type { PropsWithChildren } from "react"; import { createContext, useCallback, useContext, useMemo } from "react"; import type { SettingsContextType } from "../settings/types"; +import { + type Properties, + type TrackEventKey, + type TrackPageKey, + trackEventMap, + trackPageMap, +} from "./types"; import { useTrackingProps } from "./use-tracking-props"; -const trackPageMap = { - earn: "Earn", - positions: "Positions", - activity: "Activity", - positionDetails: "Position details", - stakeReview: "Stake review", - unstakeReview: "Unstake review", - pendingActionReview: "Pending action review", - stakingSteps: "Staking steps", - unstakeSteps: "Unstake steps", - activitySteps: "Activity steps", - pendingActionSteps: "Pending action steps", - stakeComplete: "Stake complete", - activityComplete: "Activity complete", - unstakeComplete: "Unstake complete", - pendingActionCompelete: "Pending action complete", -} as const; - -export type TrackPageKey = keyof typeof trackPageMap; -export type TrackPageVal = (typeof trackPageMap)[TrackPageKey]; - -const trackEventMap = { - tabClicked: "Tab clicked", - connectWalletClicked: "Connect wallet clicked", - addLedgerAccountClicked: "Add ledger account clicked", - selectTokenModalOpened: "Select token modal opened", - tokenSelected: "Token selected", - selectYieldModalOpened: "Select yield modal opened", - yieldSelected: "Yield selected", - selectValidatorModalOpened: "Select validator modal opened", - selectValidatorModalClosed: "Select validator modal closed", - selectValidatorViewMoreClicked: "Select validator view more clicked", - validatorSelected: "Validator selected", - validatorRemoved: "Validator removed", - widgetDisconnectClicked: "Widget disconnect clicked", - backClicked: "Back clicked", - helpModalOpened: "Help modal opened", - termsModalOpened: "Terms modal opened", - termsModalAccepted: "Terms modal accepted", - termsModalDeclined: "Terms modal declined", - earnPageMaxClicked: "Earn page max clicked", - connectedWallet: "Connected wallet", - importValidatorModalOpened: "Import validator modal opened", - chainModalOpened: "Chain modal opened", - accountModalOpened: "Account modal opened", - termsClicked: "Terms clicked", - txSigned: "Transaction signed", - txSubmitted: "Transaction submitted", - txNotConfirmed: "Transaction not confirmed", - positionDetailsPageMaxClicked: "Position details page max clicked", - unstakeClicked: "Unstake clicked", - pendingActionClicked: "Pending action clicked", - validatorsSubmitted: "Validators submitted", - validatorImported: "Validator imported", - viewTxClicked: "View transaction clicked", - actionStepsCancelled: "Action steps cancelled", - initYield: "system/initYield", - initToken: "system/initToken", -} as const; - -type TrackEventKey = keyof typeof trackEventMap; -export type TrackEventVal = (typeof trackEventMap)[TrackEventKey]; - -export type Properties = Record; - type TrackingContextType = { trackEvent: (event: TrackEventKey, properties?: Properties) => void; trackPageView: (page: TrackPageKey, properties?: Properties) => void; diff --git a/packages/widget/src/providers/tracking/types.ts b/packages/widget/src/providers/tracking/types.ts new file mode 100644 index 00000000..51ee563d --- /dev/null +++ b/packages/widget/src/providers/tracking/types.ts @@ -0,0 +1,64 @@ +export const trackPageMap = { + earn: "Earn", + positions: "Positions", + activity: "Activity", + positionDetails: "Position details", + stakeReview: "Stake review", + unstakeReview: "Unstake review", + pendingActionReview: "Pending action review", + stakingSteps: "Staking steps", + unstakeSteps: "Unstake steps", + activitySteps: "Activity steps", + pendingActionSteps: "Pending action steps", + stakeComplete: "Stake complete", + activityComplete: "Activity complete", + unstakeComplete: "Unstake complete", + pendingActionCompelete: "Pending action complete", +} as const; + +export type TrackPageKey = keyof typeof trackPageMap; +export type TrackPageVal = (typeof trackPageMap)[TrackPageKey]; + +export const trackEventMap = { + tabClicked: "Tab clicked", + connectWalletClicked: "Connect wallet clicked", + addLedgerAccountClicked: "Add ledger account clicked", + selectTokenModalOpened: "Select token modal opened", + tokenSelected: "Token selected", + selectYieldModalOpened: "Select yield modal opened", + yieldSelected: "Yield selected", + selectValidatorModalOpened: "Select validator modal opened", + selectValidatorModalClosed: "Select validator modal closed", + selectValidatorViewMoreClicked: "Select validator view more clicked", + validatorSelected: "Validator selected", + validatorRemoved: "Validator removed", + widgetDisconnectClicked: "Widget disconnect clicked", + backClicked: "Back clicked", + helpModalOpened: "Help modal opened", + termsModalOpened: "Terms modal opened", + termsModalAccepted: "Terms modal accepted", + termsModalDeclined: "Terms modal declined", + earnPageMaxClicked: "Earn page max clicked", + connectedWallet: "Connected wallet", + importValidatorModalOpened: "Import validator modal opened", + chainModalOpened: "Chain modal opened", + accountModalOpened: "Account modal opened", + termsClicked: "Terms clicked", + txSigned: "Transaction signed", + txSubmitted: "Transaction submitted", + txNotConfirmed: "Transaction not confirmed", + positionDetailsPageMaxClicked: "Position details page max clicked", + unstakeClicked: "Unstake clicked", + pendingActionClicked: "Pending action clicked", + validatorsSubmitted: "Validators submitted", + validatorImported: "Validator imported", + viewTxClicked: "View transaction clicked", + actionStepsCancelled: "Action steps cancelled", + initYield: "system/initYield", + initToken: "system/initToken", +} as const; + +export type TrackEventKey = keyof typeof trackEventMap; +export type TrackEventVal = (typeof trackEventMap)[TrackEventKey]; + +export type Properties = Record; diff --git a/packages/widget/src/providers/wagmi/index.ts b/packages/widget/src/providers/wagmi/index.ts index d8edb078..524920dd 100644 --- a/packages/widget/src/providers/wagmi/index.ts +++ b/packages/widget/src/providers/wagmi/index.ts @@ -4,7 +4,6 @@ import { useWallet as useSolanaWallet, } from "@solana/wallet-adapter-react"; import type { Connection } from "@solana/web3.js"; -import type { Networks } from "@stakekit/common"; import type { Chain as RainbowkitChain, Wallet, @@ -21,21 +20,22 @@ import { createClient } from "viem"; import { createConfig, http } from "wagmi"; import type { Chain } from "wagmi/chains"; import { mainnet } from "wagmi/chains"; +import { getEnabledNetworks } from "../../common/get-enabled-networks"; import { getVariantNetworkUrl } from "../../components/atoms/token-icon/token-icon-container/hooks/use-variant-network-urls"; import { config } from "../../config"; import { evmChainGroup } from "../../domain/types/chains"; import type { CosmosChainsMap } from "../../domain/types/chains/cosmos"; import type { EvmChainsMap } from "../../domain/types/chains/evm"; import type { MiscChainsMap } from "../../domain/types/chains/misc"; +import type { Networks } from "../../domain/types/chains/networks"; import type { SubstrateChainsMap } from "../../domain/types/chains/substrate"; import type { SKExternalProviders } from "../../domain/types/wallets"; -import type { ValidatorsConfig } from "../../domain/types/yields"; -import { getInitParams } from "../../hooks/use-init-params"; +import { getInitParams } from "../../hooks/get-init-params"; import { useSavedRef } from "../../hooks/use-saved-ref"; -import { useValidatorsConfig } from "../../hooks/use-validators-config"; import type { GetEitherAsyncRight } from "../../types/utils"; import { isLedgerDappBrowserProvider } from "../../utils"; -import { getEnabledNetworks } from "../api/get-enabled-networks"; +import type { ApiClient } from "../api/api-client"; +import { useApiClient } from "../api/api-client-provider"; import { getConfig as getCosmosConfig } from "../cosmos/config"; import { getConfig as getEvmConfig } from "../ethereum/config"; import { externalProviderConnector } from "../external-provider"; @@ -49,6 +49,17 @@ import { getConfig as getSubstrateConfig } from "../substrate/config"; const mipdStore = createStore(); +const omitEnsUniversalResolver = (chain: T): T => { + if (!chain.contracts?.ensUniversalResolver) return chain; + + const { ensUniversalResolver: _ensUniversalResolver, ...contracts } = + chain.contracts; + + // RainbowKit resolves ENS profiles whenever mainnet exposes this contract. + // We do not render ENS data, and viem's default mainnet RPC is eth.merkle.io. + return { ...chain, contracts } as T; +}; + export type BuildWagmiConfig = typeof buildWagmiConfig; const buildWagmiConfig = async (opts: { @@ -67,9 +78,9 @@ const buildWagmiConfig = async (opts: { forceWalletConnectOnly: boolean; customConnectors?: (chains: Chain[]) => WalletList; queryClient: QueryClient; + apiClient: ApiClient; isLedgerLive: boolean; isSafe: boolean; - validatorsConfig: ValidatorsConfig; chainIconMapping: SettingsProps["chainIconMapping"]; variant: VariantProps["variant"]; solanaWallets: SolanaWallet[]; @@ -84,7 +95,10 @@ const buildWagmiConfig = async (opts: { wagmiConfig: ReturnType; queryParamsInitChainId: number | undefined; }> => { - return getEnabledNetworks({ queryClient: opts.queryClient }) + return getEnabledNetworks({ + apiClient: opts.apiClient, + queryClient: opts.queryClient, + }) .chain((networks) => EitherAsync.fromPromise(() => Promise.all([ @@ -92,10 +106,12 @@ const buildWagmiConfig = async (opts: { forceWalletConnectOnly: opts.forceWalletConnectOnly, queryClient: opts.queryClient, variant: opts.variant, + apiClient: opts.apiClient, }), getCosmosConfig({ forceWalletConnectOnly: opts.forceWalletConnectOnly, queryClient: opts.queryClient, + apiClient: opts.apiClient, }), getMiscConfig({ enabledNetworks: networks, @@ -109,12 +125,13 @@ const buildWagmiConfig = async (opts: { getSubstrateConfig({ queryClient: opts.queryClient, forceWalletConnectOnly: opts.forceWalletConnectOnly, + apiClient: opts.apiClient, }), getInitParams({ isLedgerLive: opts.isLedgerLive, queryClient: opts.queryClient, + apiClient: opts.apiClient, externalProviders: opts.externalProviders?.current, - validatorsConfig: opts.validatorsConfig, }), ]).then(([evm, cosmos, misc, substrate, queryParams]) => evm.chain((e) => @@ -200,6 +217,10 @@ const buildWagmiConfig = async (opts: { ] as [RainbowkitChain, ...RainbowkitChain[]]; }); + const chainsWithoutEnsProfileLookups = chains.map( + omitEnsUniversalResolver + ) as [RainbowkitChain, ...RainbowkitChain[]]; + const multiInjectedProviderDiscovery = !opts.disableInjectedProviderDiscovery && !opts.externalProviders && @@ -310,7 +331,7 @@ const buildWagmiConfig = async (opts: { .extract(); const wagmiConfig = createConfig({ - chains, + chains: chainsWithoutEnsProfileLookups, client: ({ chain }) => createClient({ chain, transport: http() }), multiInjectedProviderDiscovery: false, connectors: connectorsForWallets(walletList, { @@ -379,13 +400,11 @@ export const useWagmiConfig = () => { mapWalletListFn, tonConnectManifestUrl, } = useSettings(); - const solanaWallets = useSolanaWallet(); const solanaConnection = useSolanaConnection(); const queryClient = useSKQueryClient(); - - const validatorsConfig = useValidatorsConfig(); + const apiClient = useApiClient(); const externalProvidersRef = useSavedRef(externalProviders) as | RefObject @@ -401,12 +420,12 @@ export const useWagmiConfig = () => { forceWalletConnectOnly: !!wagmi?.forceWalletConnectOnly, customConnectors: wagmi?.__customConnectors__, queryClient, + apiClient, isLedgerLive: isLedgerDappBrowserProvider(), isSafe: !!isSafe, ...(externalProvidersRef.current && { externalProviders: externalProvidersRef, }), - validatorsConfig, chainIconMapping, variant, solanaWallets: solanaWallets.wallets, @@ -420,7 +439,7 @@ export const useWagmiConfig = () => { }; export const defaultConfig = createConfig({ - chains: [mainnet], + chains: [omitEnsUniversalResolver(mainnet)], client: ({ chain }) => createClient({ chain, diff --git a/packages/widget/src/providers/wagmi/utils.ts b/packages/widget/src/providers/wagmi/utils.ts index e81efadb..c32e85d5 100644 --- a/packages/widget/src/providers/wagmi/utils.ts +++ b/packages/widget/src/providers/wagmi/utils.ts @@ -1,7 +1,7 @@ import type { Wallet, WalletList } from "@stakekit/rainbowkit"; import { walletConnectWallet } from "@stakekit/rainbowkit/wallets"; import type { CreateConnectorFn } from "wagmi"; -import { evmChainGroup } from "../../index.package"; +import { evmChainGroup } from "../../domain/types/chains"; /** * diff --git a/packages/widget/src/translation/English/translations.json b/packages/widget/src/translation/English/translations.json index f4f13e8d..d4ad99e1 100644 --- a/packages/widget/src/translation/English/translations.json +++ b/packages/widget/src/translation/English/translations.json @@ -63,6 +63,16 @@ "label": "Resource", "placeholder": "Select resource" }, + "risk": { + "title": "Risk rating", + "rated_by": "Rated by {{source}}", + "tooltip": "Risk ratings are provided by third-party risk assessment providers.", + "info_aria_label": "Risk rating details", + "sources": { + "credora": "Credora", + "staking_rewards": "Staking Rewards" + } + }, "reward_rate_estimate_tooltip": "Reward rate can't be accurately estimated", "unstake_before": "You already have delegated your balance to a validator. Unstake and try again", "no_opportunities": "No yield opportunities for this token", @@ -157,7 +167,14 @@ "validators_nominator_count": "Nominator count", "validators_subnet_name": "Subnet name", "validators_market_cap": "Market cap", - "validators_token_symbol": "Token symbol" + "validators_token_symbol": "Token symbol", + "apy_composition": { + "title": "APY composition", + "native": "Native APY", + "protocol_incentive": "Protocol incentive APY", + "campaign": "Campaign APY", + "up_to": "Up to {{value}}" + } }, "dashboard": { "details": { @@ -328,6 +345,8 @@ "stake": "staked", "unstake": "unstaked", "claim_rewards": "claimed rewards", + "auto_sweep_unstake_rewards": "unstaked rewards", + "auto_sweep_withdraw_rewards": "withdrew rewards", "restake_rewards": "restaked rewards", "withdraw": "withdrawn", "restake": "restaked", @@ -384,6 +403,7 @@ "via_one": "via {{providerName}}", "via_other": "via {{providerName}} + {{count}} more", "connect_wallet": "Connect wallet", + "connect_wallet_manage": "Connect wallet to manage your positions", "no_current_positions": "No active positions", "claim_rewards": "Claim rewards", "action_required": "Action required", @@ -445,6 +465,7 @@ "unstake": "Unstake", "withdraw": "Withdraw", "available": "{{amount}} {{symbol}} available", + "personalized_apy": "Personalized APY", "select_validators": { "submit": "Submit" }, @@ -463,6 +484,15 @@ "restaking": "Unstake" }, "balance_type": { + "active": "Active", + "active_yearn_or_deposit": "Deposited", + "entering": "Entering", + "entering_yearn_or_deposit": "Depositing", + "exiting": "Exiting", + "exiting_yearn_or_deposit": "Withdrawing", + "withdrawable": "Withdrawable", + "withdrawable_yearn_or_deposit": "Available to withdraw", + "claimable": "Claimable", "available": "Available", "staked": "Staked", "staked_yearn_or_deposit": "Deposited", @@ -481,6 +511,8 @@ "stake": "Stake", "unstake": "Unstake", "claim_rewards": "Claim rewards", + "auto_sweep_unstake_rewards": "Unstake rewards", + "auto_sweep_withdraw_rewards": "Withdraw rewards", "restake_rewards": "Restake rewards", "withdraw": "Withdraw", "withdraw_all": "Withdraw all", @@ -509,6 +541,8 @@ "stake": "Stake", "unstake": "Unstake", "claim_rewards": "Claim", + "auto_sweep_unstake_rewards": "Unstake rewards", + "auto_sweep_withdraw_rewards": "Withdraw rewards", "restake_rewards": "Restake", "withdraw": "Withdraw", "withdraw_all": "Withdraw all", @@ -540,6 +574,8 @@ "stake": "Stake with {{providerName}}", "unstake": "Unstake from {{providerName}}", "claim_rewards": "Claim rewards from {{providerName}}", + "auto_sweep_unstake_rewards": "Unstake rewards from {{providerName}}", + "auto_sweep_withdraw_rewards": "Withdraw rewards from {{providerName}}", "restake_rewards": "Restake rewards with {{providerName}}", "withdraw": "Withdraw from {{providerName}}", "withdraw_all": "Withdraw all from {{providerName}}", diff --git a/packages/widget/src/translation/French/translations.json b/packages/widget/src/translation/French/translations.json index 0ca0efac..50ad0f2d 100644 --- a/packages/widget/src/translation/French/translations.json +++ b/packages/widget/src/translation/French/translations.json @@ -62,6 +62,16 @@ "label": "Ressource", "placeholder": "Sélectionnez une ressource" }, + "risk": { + "title": "Note de risque", + "rated_by": "Évalué par {{source}}", + "tooltip": "Les notes de risque sont fournies par des prestataires tiers d'évaluation du risque.", + "info_aria_label": "Détails de la note de risque", + "sources": { + "credora": "Credora", + "staking_rewards": "Staking Rewards" + } + }, "reward_rate_estimate_tooltip": "Le taux de récompense ne peut pas être estimé de façon précise", "unstake_before": "Vous avez déjà délégué vos fonds à un validateur. Déstakez et réessayez", "no_opportunities": "Pas d'opportunité de yield pour ce token", @@ -154,7 +164,14 @@ "validators_nominator_count": "Nombre de nominators", "validators_subnet_name": "Nom du sous-réseau", "validators_market_cap": "Capitalisation boursière", - "validators_token_symbol": "Symbole du token" + "validators_token_symbol": "Symbole du token", + "apy_composition": { + "title": "Composition de l'APY", + "native": "APY natif", + "protocol_incentive": "APY d'incitation protocolaire", + "campaign": "APY de campagne", + "up_to": "Jusqu'a {{value}}" + } }, "review": { "estimated_reward": "Récompenses estimées", @@ -278,6 +295,8 @@ "stake": "staké", "unstake": "déstaké", "claim_rewards": "récompenses réclamées", + "auto_sweep_unstake_rewards": "récompenses retirées", + "auto_sweep_withdraw_rewards": "récompenses retirées", "restake_rewards": "récompenses restakées", "withdraw": "reitré", "restake": "restaké", @@ -334,6 +353,7 @@ "via_one": "via {{providerName}}", "via_other": "via {{providerName}} + {{count}} autres", "connect_wallet": "Connecter un portefeuille", + "connect_wallet_manage": "Connectez un portefeuille pour gérer vos positions", "no_current_positions": "Aucune position", "claim_rewards": "Réclamer les récompenses", "action_required": "Action requise", @@ -395,6 +415,7 @@ "unstake": "Déstaker", "withdraw": "Retirer", "available": "{{amount}} {{symbol}} disponibles", + "personalized_apy": "APY personnalise", "select_validators": { "submit": "Envoyer" }, @@ -413,6 +434,15 @@ "restaking": "Déstaker" }, "balance_type": { + "active": "Actif", + "active_yearn_or_deposit": "Déposé", + "entering": "En cours d'entrée", + "entering_yearn_or_deposit": "En cours de dépôt", + "exiting": "En cours de sortie", + "exiting_yearn_or_deposit": "En cours de retrait", + "withdrawable": "Retirable", + "withdrawable_yearn_or_deposit": "Disponible au retrait", + "claimable": "Réclamable", "available": "Disponible", "staked": "Staké", "staked_yearn_or_deposit": "Déposé", @@ -431,6 +461,8 @@ "stake": "Staker", "unstake": "Déstaker", "claim_rewards": "Réclamer les récompenses", + "auto_sweep_unstake_rewards": "Retirer les récompenses", + "auto_sweep_withdraw_rewards": "Retirer les récompenses", "restake_rewards": "Restaker les récompenses", "withdraw": "Retirer", "withdraw_all": "Retirer tout", @@ -459,6 +491,8 @@ "stake": "Staker", "unstake": "Déstaker", "claim_rewards": "Réclamer", + "auto_sweep_unstake_rewards": "Retirer les récompenses", + "auto_sweep_withdraw_rewards": "Retirer les récompenses", "restake_rewards": "Restaker", "withdraw": "Retirer", "withdraw_all": "Retirer tout", @@ -490,6 +524,8 @@ "stake": "Staker avec {{providerName}}", "unstake": "Déstaker de {{providerName}}", "claim_rewards": "Réclamer les récompenses de {{providerName}}", + "auto_sweep_unstake_rewards": "Retirer les récompenses de {{providerName}}", + "auto_sweep_withdraw_rewards": "Retirer les récompenses de {{providerName}}", "restake_rewards": "Restaker les récompenses avec {{providerName}}", "withdraw": "Retirer de {{providerName}}", "withdraw_all": "Retirer tout de {{providerName}}", diff --git a/packages/widget/src/translation/i18next.d.ts b/packages/widget/src/translation/i18next.d.ts index 8b6d681a..8369b1a1 100644 --- a/packages/widget/src/translation/i18next.d.ts +++ b/packages/widget/src/translation/i18next.d.ts @@ -1,6 +1,6 @@ import "i18next"; -import type { localResources } from "."; +import type { localResources } from "./resources"; declare module "i18next" { interface CustomTypeOptions { diff --git a/packages/widget/src/translation/index.ts b/packages/widget/src/translation/index.ts index 74d5bc46..12761923 100644 --- a/packages/widget/src/translation/index.ts +++ b/packages/widget/src/translation/index.ts @@ -5,19 +5,10 @@ import { createInstance } from "i18next"; import LanguageDetector from "i18next-browser-languagedetector"; import { EitherAsync } from "purify-ts"; import { initReactI18next, useTranslation } from "react-i18next"; -import { useApiClient } from "../providers/api/api-client-provider"; -import translationEN from "./English/translations.json"; -import translationFR from "./French/translations.json"; +import { localResources } from "./resources"; export const i18nInstance: ReturnType = createInstance(); -export const localResources = { - en: { translation: translationEN }, - fr: { translation: translationFR }, -} as const; - -export type Languages = keyof typeof localResources; - i18nInstance .use(initReactI18next) .use(LanguageDetector) @@ -43,8 +34,6 @@ i18nInstance.services.formatter?.add("lowercase", (value, _, __) => ); export const useLoadErrorTranslations = () => { - const apiClient = useApiClient(); - const { i18n } = useTranslation(); const [lng] = i18n.language.split("-"); @@ -55,13 +44,19 @@ export const useLoadErrorTranslations = () => { gcTime: Number.POSITIVE_INFINITY, queryFn: async () => ( - await EitherAsync(() => - apiClient.get>( + await EitherAsync(async () => { + const response = await fetch( `https://i18n.stakek.it/locales/${lng}/errors.json` - ) - ).ifRight((res) => + ); + + if (!response.ok) { + throw new Error("Could not load error translations"); + } + + return response.json() as Promise>; + }).ifRight((errors) => i18n.addResourceBundle(i18n.language, "translation", { - errors: res.data, + errors, }) ) ).unsafeCoerce(), diff --git a/packages/widget/src/translation/resources.ts b/packages/widget/src/translation/resources.ts new file mode 100644 index 00000000..8a5f8eab --- /dev/null +++ b/packages/widget/src/translation/resources.ts @@ -0,0 +1,9 @@ +import translationEN from "./English/translations.json"; +import translationFR from "./French/translations.json"; + +export const localResources = { + en: { translation: translationEN }, + fr: { translation: translationFR }, +} as const; + +export type Languages = keyof typeof localResources; diff --git a/packages/widget/src/utils/formatters.ts b/packages/widget/src/utils/formatters.ts index 82d8dc56..64c3e4ce 100644 --- a/packages/widget/src/utils/formatters.ts +++ b/packages/widget/src/utils/formatters.ts @@ -1,8 +1,10 @@ -import type { TokenDto, YieldDto } from "@stakekit/api-hooks"; import type BigNumber from "bignumber.js"; import { Maybe } from "purify-ts"; import { getTokenPriceInUSD } from "../domain"; import { Prices } from "../domain/types/price"; +import type { RewardTypes } from "../domain/types/reward-rate"; +import type { TokenDto, YieldTokenDto } from "../domain/types/tokens"; +import type { Yield } from "../domain/types/yields"; import { APToPercentage, defaultFormattedNumber, formatNumber } from "."; export const formatCountryCode = ({ @@ -15,9 +17,10 @@ export const formatCountryCode = ({ return new Intl.DisplayNames([language], { type: "region" }).of(countryCode); }; -export const getRewardRateFormatted = ( - opts: Pick & { rewardRate: number | undefined } -) => { +export const getRewardRateFormatted = (opts: { + rewardType: RewardTypes; + rewardRate: number | undefined; +}) => { const { rewardRate, rewardType } = opts; if (rewardType === "variable" || !rewardRate) { @@ -27,7 +30,7 @@ export const getRewardRateFormatted = ( return `${APToPercentage(rewardRate)}%`; }; -export const getRewardTypeFormatted = (rewardType: YieldDto["rewardType"]) => { +export const getRewardTypeFormatted = (rewardType: RewardTypes) => { switch (rewardType) { case "apr": return "APR"; @@ -45,7 +48,7 @@ export const getGasFeeInUSD = ({ gas, prices, }: { - yieldDto: Maybe; + yieldDto: Maybe; gas: Maybe; prices: Maybe; }) => @@ -58,14 +61,14 @@ export const getGasFeeInUSD = ({ gasFeeInUSD: getTokenPriceInUSD({ amount: val.gas.toString(), prices: prices.orDefault(new Prices(new Map())), - token: val.yieldDto.metadata.gasFeeToken, + token: val.yieldDto.mechanics.gasFeeToken, pricePerShare: null, baseToken: null, }), })) .mapOrDefault( (val) => - `${formatNumber(val.gas, 10)} ${val.yieldDto.metadata.gasFeeToken.symbol} ${ + `${formatNumber(val.gas, 10)} ${val.yieldDto.mechanics.gasFeeToken.symbol} ${ val.gasFeeInUSD.isGreaterThan(0) ? ` ($${defaultFormattedNumber(val.gasFeeInUSD)})` : "" @@ -79,7 +82,7 @@ export const getFeesInUSD = ({ token, }: { amount: Maybe; - token: Maybe; + token: Maybe; prices: Maybe; }) => Maybe.fromRecord({ token, amount }) diff --git a/packages/widget/src/utils/index.ts b/packages/widget/src/utils/index.ts index e3a18578..21b544ce 100644 --- a/packages/widget/src/utils/index.ts +++ b/packages/widget/src/utils/index.ts @@ -1,9 +1,8 @@ -import type { Networks } from "@stakekit/common"; import BigNumber from "bignumber.js"; import type { i18n } from "i18next"; import { Just } from "purify-ts"; import { config } from "../config"; -import { ItemBulletType } from "../pages/details/activity-page/state/types"; +import type { Networks } from "../domain/types/chains/networks"; import { MaybeWindow } from "./maybe-window"; BigNumber.config({ @@ -22,25 +21,33 @@ BigNumber.config({ export const formatNumber = ( number: string | BigNumber | number, decimals?: number -) => - Just(BigNumber(number)) - .map((v) => - typeof decimals === "number" - ? v.decimalPlaces(decimals, BigNumber.ROUND_DOWN) - : v - ) +) => { + const value = BigNumber(number); + + return Just(value) + .map((v) => { + if (typeof decimals !== "number") return v; + + const formattedValue = v.decimalPlaces(decimals, BigNumber.ROUND_DOWN); + + return decimals > 0 && !v.isZero() && formattedValue.isZero() + ? v.precision(decimals, BigNumber.ROUND_DOWN) + : formattedValue; + }) .map((v) => v.toFormat()) .unsafeCoerce(); +}; export const fromWei = (amount: string | BigNumber, decimals: number) => BigNumber(amount) .dividedBy(10 ** decimals) .toFixed(); -export const defaultFormattedNumber = (number: string | BigNumber) => +export const defaultFormattedNumber = (number: string | BigNumber | number) => formatNumber(number, 6); -export const APToPercentage = (ap: number) => (ap * 100).toFixed(2); +export const APToPercentage = (ap: number) => + formatNumber((ap * 100).toFixed(2)); const colorsTuple = ["#6B69D6", "#F1C40F", "#1ABC9C", "#E74C3C"]; @@ -198,12 +205,3 @@ export const groupDateStrings = ( return [labels, counts]; }; - -export const createSubArray = (val: number): ItemBulletType[] => { - return Array.from({ length: val }, (_, i) => { - if (val === 1) return ItemBulletType.ALONE; - if (i === 0) return ItemBulletType.FIRST; - if (i === val - 1) return ItemBulletType.LAST; - return ItemBulletType.MIDDLE; - }); -}; diff --git a/packages/widget/src/utils/mappers.ts b/packages/widget/src/utils/mappers.ts index dee70454..91cf1781 100644 --- a/packages/widget/src/utils/mappers.ts +++ b/packages/widget/src/utils/mappers.ts @@ -1,5 +1,4 @@ -import type { PriceResponseDto } from "@stakekit/api-hooks"; -import type { Price } from "../domain/types/price"; +import type { Price, PriceResponseDto } from "../domain/types/price"; import { Prices } from "../domain/types/price"; import type { TokenString } from "../domain/types/tokens"; diff --git a/packages/widget/src/utils/region-iso-3166-codes.ts b/packages/widget/src/utils/region-iso-3166-codes.ts index 592e2742..b5f1b9b6 100644 --- a/packages/widget/src/utils/region-iso-3166-codes.ts +++ b/packages/widget/src/utils/region-iso-3166-codes.ts @@ -1 +1,7305 @@ -export const countries = {"AD-07":{"countryCode":"AD","subdivisionName":"Andorra la Vella","code":"AD-07"},"AD-02":{"countryCode":"AD","subdivisionName":"Canillo","code":"AD-02"},"AD-03":{"countryCode":"AD","subdivisionName":"Encamp","code":"AD-03"},"AD-08":{"countryCode":"AD","subdivisionName":"Escaldes-Engordany","code":"AD-08"},"AD-04":{"countryCode":"AD","subdivisionName":"La Massana","code":"AD-04"},"AD-05":{"countryCode":"AD","subdivisionName":"Ordino","code":"AD-05"},"AD-06":{"countryCode":"AD","subdivisionName":"Sant Julia de Loria","code":"AD-06"},"AE-AJ":{"countryCode":"AE","subdivisionName":"'Ajman","code":"AE-AJ"},"AE-AZ":{"countryCode":"AE","subdivisionName":"Abu Zaby","code":"AE-AZ"},"AE-FU":{"countryCode":"AE","subdivisionName":"Al Fujayrah","code":"AE-FU"},"AE-SH":{"countryCode":"AE","subdivisionName":"Ash Shariqah","code":"AE-SH"},"AE-DU":{"countryCode":"AE","subdivisionName":"Dubayy","code":"AE-DU"},"AE-RK":{"countryCode":"AE","subdivisionName":"Ra's al Khaymah","code":"AE-RK"},"AE-UQ":{"countryCode":"AE","subdivisionName":"Umm al Qaywayn","code":"AE-UQ"},"AF-BDG":{"countryCode":"AF","subdivisionName":"Badghis","code":"AF-BDG"},"AF-BGL":{"countryCode":"AF","subdivisionName":"Baghlan","code":"AF-BGL"},"AF-BAL":{"countryCode":"AF","subdivisionName":"Balkh","code":"AF-BAL"},"AF-BAM":{"countryCode":"AF","subdivisionName":"Bamyan","code":"AF-BAM"},"AF-DAY":{"countryCode":"AF","subdivisionName":"Daykundi","code":"AF-DAY"},"AF-FRA":{"countryCode":"AF","subdivisionName":"Farah","code":"AF-FRA"},"AF-FYB":{"countryCode":"AF","subdivisionName":"Faryab","code":"AF-FYB"},"AF-GHA":{"countryCode":"AF","subdivisionName":"Ghazni","code":"AF-GHA"},"AF-GHO":{"countryCode":"AF","subdivisionName":"Ghor","code":"AF-GHO"},"AF-HEL":{"countryCode":"AF","subdivisionName":"Helmand","code":"AF-HEL"},"AF-HER":{"countryCode":"AF","subdivisionName":"Herat","code":"AF-HER"},"AF-JOW":{"countryCode":"AF","subdivisionName":"Jowzjan","code":"AF-JOW"},"AF-KAB":{"countryCode":"AF","subdivisionName":"Kabul","code":"AF-KAB"},"AF-KAN":{"countryCode":"AF","subdivisionName":"Kandahar","code":"AF-KAN"},"AF-KHO":{"countryCode":"AF","subdivisionName":"Khost","code":"AF-KHO"},"AF-KDZ":{"countryCode":"AF","subdivisionName":"Kunduz","code":"AF-KDZ"},"AF-LAG":{"countryCode":"AF","subdivisionName":"Laghman","code":"AF-LAG"},"AF-LOG":{"countryCode":"AF","subdivisionName":"Logar","code":"AF-LOG"},"AF-NAN":{"countryCode":"AF","subdivisionName":"Nangarhar","code":"AF-NAN"},"AF-NIM":{"countryCode":"AF","subdivisionName":"Nimroz","code":"AF-NIM"},"AF-PKA":{"countryCode":"AF","subdivisionName":"Paktika","code":"AF-PKA"},"AF-PIA":{"countryCode":"AF","subdivisionName":"Paktiya","code":"AF-PIA"},"AF-PAR":{"countryCode":"AF","subdivisionName":"Parwan","code":"AF-PAR"},"AF-SAM":{"countryCode":"AF","subdivisionName":"Samangan","code":"AF-SAM"},"AF-SAR":{"countryCode":"AF","subdivisionName":"Sar-e Pul","code":"AF-SAR"},"AF-TAK":{"countryCode":"AF","subdivisionName":"Takhar","code":"AF-TAK"},"AF-URU":{"countryCode":"AF","subdivisionName":"Uruzgan","code":"AF-URU"},"AF-WAR":{"countryCode":"AF","subdivisionName":"Wardak","code":"AF-WAR"},"AG-10":{"countryCode":"AG","subdivisionName":"Barbuda","code":"AG-10"},"AG-11":{"countryCode":"AG","subdivisionName":"Redonda","code":"AG-11"},"AG-03":{"countryCode":"AG","subdivisionName":"Saint George","code":"AG-03"},"AG-04":{"countryCode":"AG","subdivisionName":"Saint John","code":"AG-04"},"AG-05":{"countryCode":"AG","subdivisionName":"Saint Mary","code":"AG-05"},"AG-07":{"countryCode":"AG","subdivisionName":"Saint Peter","code":"AG-07"},"AG-08":{"countryCode":"AG","subdivisionName":"Saint Philip","code":"AG-08"},"-":{"countryCode":"YT","subdivisionName":"Tsingoni","code":"-"},"AL-01":{"countryCode":"AL","subdivisionName":"Berat","code":"AL-01"},"AL-09":{"countryCode":"AL","subdivisionName":"Diber","code":"AL-09"},"AL-02":{"countryCode":"AL","subdivisionName":"Durres","code":"AL-02"},"AL-03":{"countryCode":"AL","subdivisionName":"Elbasan","code":"AL-03"},"AL-04":{"countryCode":"AL","subdivisionName":"Fier","code":"AL-04"},"AL-05":{"countryCode":"AL","subdivisionName":"Gjirokaster","code":"AL-05"},"AL-06":{"countryCode":"AL","subdivisionName":"Korce","code":"AL-06"},"AL-07":{"countryCode":"AL","subdivisionName":"Kukes","code":"AL-07"},"AL-08":{"countryCode":"AL","subdivisionName":"Lezhe","code":"AL-08"},"AL-10":{"countryCode":"AL","subdivisionName":"Shkoder","code":"AL-10"},"AL-11":{"countryCode":"AL","subdivisionName":"Tirane","code":"AL-11"},"AL-12":{"countryCode":"AL","subdivisionName":"Vlore","code":"AL-12"},"AM-AG":{"countryCode":"AM","subdivisionName":"Aragacotn","code":"AM-AG"},"AM-AR":{"countryCode":"AM","subdivisionName":"Ararat","code":"AM-AR"},"AM-AV":{"countryCode":"AM","subdivisionName":"Armavir","code":"AM-AV"},"AM-ER":{"countryCode":"AM","subdivisionName":"Erevan","code":"AM-ER"},"AM-GR":{"countryCode":"AM","subdivisionName":"Gegark'unik'","code":"AM-GR"},"AM-KT":{"countryCode":"AM","subdivisionName":"Kotayk'","code":"AM-KT"},"AM-LO":{"countryCode":"AM","subdivisionName":"Lori","code":"AM-LO"},"AM-SH":{"countryCode":"AM","subdivisionName":"Sirak","code":"AM-SH"},"AM-SU":{"countryCode":"AM","subdivisionName":"Syunik'","code":"AM-SU"},"AM-TV":{"countryCode":"AM","subdivisionName":"Tavus","code":"AM-TV"},"AM-VD":{"countryCode":"AM","subdivisionName":"Vayoc Jor","code":"AM-VD"},"AO-BGO":{"countryCode":"AO","subdivisionName":"Bengo","code":"AO-BGO"},"AO-BGU":{"countryCode":"AO","subdivisionName":"Benguela","code":"AO-BGU"},"AO-BIE":{"countryCode":"AO","subdivisionName":"Bie","code":"AO-BIE"},"AO-CAB":{"countryCode":"AO","subdivisionName":"Cabinda","code":"AO-CAB"},"AO-CCU":{"countryCode":"AO","subdivisionName":"Cuando Cubango","code":"AO-CCU"},"AO-CNO":{"countryCode":"AO","subdivisionName":"Cuanza-Norte","code":"AO-CNO"},"AO-CUS":{"countryCode":"AO","subdivisionName":"Cuanza-Sul","code":"AO-CUS"},"AO-CNN":{"countryCode":"AO","subdivisionName":"Cunene","code":"AO-CNN"},"AO-HUA":{"countryCode":"AO","subdivisionName":"Huambo","code":"AO-HUA"},"AO-HUI":{"countryCode":"AO","subdivisionName":"Huila","code":"AO-HUI"},"AO-LUA":{"countryCode":"AO","subdivisionName":"Luanda","code":"AO-LUA"},"AO-LNO":{"countryCode":"AO","subdivisionName":"Lunda-Norte","code":"AO-LNO"},"AO-LSU":{"countryCode":"AO","subdivisionName":"Lunda-Sul","code":"AO-LSU"},"AO-MAL":{"countryCode":"AO","subdivisionName":"Malange","code":"AO-MAL"},"AO-MOX":{"countryCode":"AO","subdivisionName":"Moxico","code":"AO-MOX"},"AO-NAM":{"countryCode":"AO","subdivisionName":"Namibe","code":"AO-NAM"},"AO-UIG":{"countryCode":"AO","subdivisionName":"Uige","code":"AO-UIG"},"AO-ZAI":{"countryCode":"AO","subdivisionName":"Zaire","code":"AO-ZAI"},"AR-B":{"countryCode":"AR","subdivisionName":"Buenos Aires","code":"AR-B"},"AR-K":{"countryCode":"AR","subdivisionName":"Catamarca","code":"AR-K"},"AR-H":{"countryCode":"AR","subdivisionName":"Chaco","code":"AR-H"},"AR-U":{"countryCode":"AR","subdivisionName":"Chubut","code":"AR-U"},"AR-C":{"countryCode":"AR","subdivisionName":"Ciudad Autonoma de Buenos Aires","code":"AR-C"},"AR-X":{"countryCode":"AR","subdivisionName":"Cordoba","code":"AR-X"},"AR-W":{"countryCode":"AR","subdivisionName":"Corrientes","code":"AR-W"},"AR-E":{"countryCode":"AR","subdivisionName":"Entre Rios","code":"AR-E"},"AR-P":{"countryCode":"AR","subdivisionName":"Formosa","code":"AR-P"},"AR-Y":{"countryCode":"AR","subdivisionName":"Jujuy","code":"AR-Y"},"AR-L":{"countryCode":"AR","subdivisionName":"La Pampa","code":"AR-L"},"AR-F":{"countryCode":"AR","subdivisionName":"La Rioja","code":"AR-F"},"AR-M":{"countryCode":"AR","subdivisionName":"Mendoza","code":"AR-M"},"AR-N":{"countryCode":"AR","subdivisionName":"Misiones","code":"AR-N"},"AR-Q":{"countryCode":"AR","subdivisionName":"Neuquen","code":"AR-Q"},"AR-R":{"countryCode":"AR","subdivisionName":"Rio Negro","code":"AR-R"},"AR-A":{"countryCode":"AR","subdivisionName":"Salta","code":"AR-A"},"AR-J":{"countryCode":"AR","subdivisionName":"San Juan","code":"AR-J"},"AR-D":{"countryCode":"AR","subdivisionName":"San Luis","code":"AR-D"},"AR-Z":{"countryCode":"AR","subdivisionName":"Santa Cruz","code":"AR-Z"},"AR-S":{"countryCode":"AR","subdivisionName":"Santa Fe","code":"AR-S"},"AR-G":{"countryCode":"AR","subdivisionName":"Santiago del Estero","code":"AR-G"},"AR-V":{"countryCode":"AR","subdivisionName":"Tierra del Fuego","code":"AR-V"},"AR-T":{"countryCode":"AR","subdivisionName":"Tucuman","code":"AR-T"},"AT-1":{"countryCode":"AT","subdivisionName":"Burgenland","code":"AT-1"},"AT-2":{"countryCode":"AT","subdivisionName":"Karnten","code":"AT-2"},"AT-3":{"countryCode":"AT","subdivisionName":"Niederosterreich","code":"AT-3"},"AT-4":{"countryCode":"AT","subdivisionName":"Oberosterreich","code":"AT-4"},"AT-5":{"countryCode":"AT","subdivisionName":"Salzburg","code":"AT-5"},"AT-6":{"countryCode":"AT","subdivisionName":"Steiermark","code":"AT-6"},"AT-7":{"countryCode":"AT","subdivisionName":"Tirol","code":"AT-7"},"AT-8":{"countryCode":"AT","subdivisionName":"Vorarlberg","code":"AT-8"},"AT-9":{"countryCode":"AT","subdivisionName":"Wien","code":"AT-9"},"AU-ACT":{"countryCode":"AU","subdivisionName":"Australian Capital Territory","code":"AU-ACT"},"AU-NSW":{"countryCode":"AU","subdivisionName":"New South Wales","code":"AU-NSW"},"AU-NT":{"countryCode":"AU","subdivisionName":"Northern Territory","code":"AU-NT"},"AU-QLD":{"countryCode":"AU","subdivisionName":"Queensland","code":"AU-QLD"},"AU-SA":{"countryCode":"AU","subdivisionName":"South Australia","code":"AU-SA"},"AU-TAS":{"countryCode":"AU","subdivisionName":"Tasmania","code":"AU-TAS"},"AU-VIC":{"countryCode":"AU","subdivisionName":"Victoria","code":"AU-VIC"},"AU-WA":{"countryCode":"AU","subdivisionName":"Western Australia","code":"AU-WA"},"AZ-ABS":{"countryCode":"AZ","subdivisionName":"Abseron","code":"AZ-ABS"},"AZ-AGC":{"countryCode":"AZ","subdivisionName":"Agcabadi","code":"AZ-AGC"},"AZ-AGS":{"countryCode":"AZ","subdivisionName":"Agdas","code":"AZ-AGS"},"AZ-AGA":{"countryCode":"AZ","subdivisionName":"Agstafa","code":"AZ-AGA"},"AZ-AGU":{"countryCode":"AZ","subdivisionName":"Agsu","code":"AZ-AGU"},"AZ-AST":{"countryCode":"AZ","subdivisionName":"Astara","code":"AZ-AST"},"AZ-BA":{"countryCode":"AZ","subdivisionName":"Baki","code":"AZ-BA"},"AZ-BAL":{"countryCode":"AZ","subdivisionName":"Balakan","code":"AZ-BAL"},"AZ-BAR":{"countryCode":"AZ","subdivisionName":"Barda","code":"AZ-BAR"},"AZ-BEY":{"countryCode":"AZ","subdivisionName":"Beylaqan","code":"AZ-BEY"},"AZ-BIL":{"countryCode":"AZ","subdivisionName":"Bilasuvar","code":"AZ-BIL"},"AZ-CAL":{"countryCode":"AZ","subdivisionName":"Calilabad","code":"AZ-CAL"},"AZ-DAS":{"countryCode":"AZ","subdivisionName":"Daskasan","code":"AZ-DAS"},"AZ-FUZ":{"countryCode":"AZ","subdivisionName":"Fuzuli","code":"AZ-FUZ"},"AZ-GAD":{"countryCode":"AZ","subdivisionName":"Gadabay","code":"AZ-GAD"},"AZ-GA":{"countryCode":"AZ","subdivisionName":"Ganca","code":"AZ-GA"},"AZ-GOY":{"countryCode":"AZ","subdivisionName":"Goycay","code":"AZ-GOY"},"AZ-GYG":{"countryCode":"AZ","subdivisionName":"Goygol","code":"AZ-GYG"},"AZ-IMI":{"countryCode":"AZ","subdivisionName":"Imisli","code":"AZ-IMI"},"AZ-ISM":{"countryCode":"AZ","subdivisionName":"Ismayilli","code":"AZ-ISM"},"AZ-KUR":{"countryCode":"AZ","subdivisionName":"Kurdamir","code":"AZ-KUR"},"AZ-LA":{"countryCode":"AZ","subdivisionName":"Lankaran","code":"AZ-LA"},"AZ-MAS":{"countryCode":"AZ","subdivisionName":"Masalli","code":"AZ-MAS"},"AZ-MI":{"countryCode":"AZ","subdivisionName":"Mingacevir","code":"AZ-MI"},"AZ-NA":{"countryCode":"AZ","subdivisionName":"Naftalan","code":"AZ-NA"},"AZ-NX":{"countryCode":"AZ","subdivisionName":"Naxcivan","code":"AZ-NX"},"AZ-NEF":{"countryCode":"AZ","subdivisionName":"Neftcala","code":"AZ-NEF"},"AZ-OGU":{"countryCode":"AZ","subdivisionName":"Oguz","code":"AZ-OGU"},"AZ-QAB":{"countryCode":"AZ","subdivisionName":"Qabala","code":"AZ-QAB"},"AZ-QAX":{"countryCode":"AZ","subdivisionName":"Qax","code":"AZ-QAX"},"AZ-QAZ":{"countryCode":"AZ","subdivisionName":"Qazax","code":"AZ-QAZ"},"AZ-QBA":{"countryCode":"AZ","subdivisionName":"Quba","code":"AZ-QBA"},"AZ-QUS":{"countryCode":"AZ","subdivisionName":"Qusar","code":"AZ-QUS"},"AZ-SAT":{"countryCode":"AZ","subdivisionName":"Saatli","code":"AZ-SAT"},"AZ-SAB":{"countryCode":"AZ","subdivisionName":"Sabirabad","code":"AZ-SAB"},"AZ-SAK":{"countryCode":"AZ","subdivisionName":"Saki","code":"AZ-SAK"},"AZ-SAL":{"countryCode":"AZ","subdivisionName":"Salyan","code":"AZ-SAL"},"AZ-SMI":{"countryCode":"AZ","subdivisionName":"Samaxi","code":"AZ-SMI"},"AZ-SKR":{"countryCode":"AZ","subdivisionName":"Samkir","code":"AZ-SKR"},"AZ-SMX":{"countryCode":"AZ","subdivisionName":"Samux","code":"AZ-SMX"},"AZ-SR":{"countryCode":"AZ","subdivisionName":"Sirvan","code":"AZ-SR"},"AZ-SIY":{"countryCode":"AZ","subdivisionName":"Siyazan","code":"AZ-SIY"},"AZ-SM":{"countryCode":"AZ","subdivisionName":"Sumqayit","code":"AZ-SM"},"AZ-TAR":{"countryCode":"AZ","subdivisionName":"Tartar","code":"AZ-TAR"},"AZ-TOV":{"countryCode":"AZ","subdivisionName":"Tovuz","code":"AZ-TOV"},"AZ-UCA":{"countryCode":"AZ","subdivisionName":"Ucar","code":"AZ-UCA"},"AZ-XAC":{"countryCode":"AZ","subdivisionName":"Xacmaz","code":"AZ-XAC"},"AZ-XIZ":{"countryCode":"AZ","subdivisionName":"Xizi","code":"AZ-XIZ"},"AZ-YAR":{"countryCode":"AZ","subdivisionName":"Yardimli","code":"AZ-YAR"},"AZ-YEV":{"countryCode":"AZ","subdivisionName":"Yevlax","code":"AZ-YEV"},"AZ-ZAQ":{"countryCode":"AZ","subdivisionName":"Zaqatala","code":"AZ-ZAQ"},"AZ-ZAR":{"countryCode":"AZ","subdivisionName":"Zardab","code":"AZ-ZAR"},"BA-BRC":{"countryCode":"BA","subdivisionName":"Brcko distrikt","code":"BA-BRC"},"BA-BIH":{"countryCode":"BA","subdivisionName":"Federacija Bosne i Hercegovine","code":"BA-BIH"},"BA-SRP":{"countryCode":"BA","subdivisionName":"Republika Srpska","code":"BA-SRP"},"BB-01":{"countryCode":"BB","subdivisionName":"Christ Church","code":"BB-01"},"BB-02":{"countryCode":"BB","subdivisionName":"Saint Andrew","code":"BB-02"},"BB-03":{"countryCode":"BB","subdivisionName":"Saint George","code":"BB-03"},"BB-04":{"countryCode":"BB","subdivisionName":"Saint James","code":"BB-04"},"BB-05":{"countryCode":"BB","subdivisionName":"Saint John","code":"BB-05"},"BB-07":{"countryCode":"BB","subdivisionName":"Saint Lucy","code":"BB-07"},"BB-08":{"countryCode":"BB","subdivisionName":"Saint Michael","code":"BB-08"},"BB-09":{"countryCode":"BB","subdivisionName":"Saint Peter","code":"BB-09"},"BB-10":{"countryCode":"BB","subdivisionName":"Saint Philip","code":"BB-10"},"BB-11":{"countryCode":"BB","subdivisionName":"Saint Thomas","code":"BB-11"},"BD-A":{"countryCode":"BD","subdivisionName":"Barishal","code":"BD-A"},"BD-B":{"countryCode":"BD","subdivisionName":"Chattogram","code":"BD-B"},"BD-C":{"countryCode":"BD","subdivisionName":"Dhaka","code":"BD-C"},"BD-D":{"countryCode":"BD","subdivisionName":"Khulna","code":"BD-D"},"BD-E":{"countryCode":"BD","subdivisionName":"Rajshahi","code":"BD-E"},"BD-F":{"countryCode":"BD","subdivisionName":"Rangpur","code":"BD-F"},"BD-G":{"countryCode":"BD","subdivisionName":"Sylhet","code":"BD-G"},"BE-VAN":{"countryCode":"BE","subdivisionName":"Antwerpen","code":"BE-VAN"},"BE-WBR":{"countryCode":"BE","subdivisionName":"Brabant wallon","code":"BE-WBR"},"BE-BRU":{"countryCode":"BE","subdivisionName":"Brussels Hoofdstedelijk Gewest","code":"BE-BRU"},"BE-WHT":{"countryCode":"BE","subdivisionName":"Hainaut","code":"BE-WHT"},"BE-WLG":{"countryCode":"BE","subdivisionName":"Liege","code":"BE-WLG"},"BE-VLI":{"countryCode":"BE","subdivisionName":"Limburg","code":"BE-VLI"},"BE-WLX":{"countryCode":"BE","subdivisionName":"Luxembourg","code":"BE-WLX"},"BE-WNA":{"countryCode":"BE","subdivisionName":"Namur","code":"BE-WNA"},"BE-VOV":{"countryCode":"BE","subdivisionName":"Oost-Vlaanderen","code":"BE-VOV"},"BE-VBR":{"countryCode":"BE","subdivisionName":"Vlaams-Brabant","code":"BE-VBR"},"BE-VWV":{"countryCode":"BE","subdivisionName":"West-Vlaanderen","code":"BE-VWV"},"BF-BAL":{"countryCode":"BF","subdivisionName":"Bale","code":"BF-BAL"},"BF-BAM":{"countryCode":"BF","subdivisionName":"Bam","code":"BF-BAM"},"BF-BAN":{"countryCode":"BF","subdivisionName":"Banwa","code":"BF-BAN"},"BF-BAZ":{"countryCode":"BF","subdivisionName":"Bazega","code":"BF-BAZ"},"BF-BGR":{"countryCode":"BF","subdivisionName":"Bougouriba","code":"BF-BGR"},"BF-BLG":{"countryCode":"BF","subdivisionName":"Boulgou","code":"BF-BLG"},"BF-BLK":{"countryCode":"BF","subdivisionName":"Boulkiemde","code":"BF-BLK"},"BF-COM":{"countryCode":"BF","subdivisionName":"Comoe","code":"BF-COM"},"BF-GAN":{"countryCode":"BF","subdivisionName":"Ganzourgou","code":"BF-GAN"},"BF-GNA":{"countryCode":"BF","subdivisionName":"Gnagna","code":"BF-GNA"},"BF-GOU":{"countryCode":"BF","subdivisionName":"Gourma","code":"BF-GOU"},"BF-HOU":{"countryCode":"BF","subdivisionName":"Houet","code":"BF-HOU"},"BF-IOB":{"countryCode":"BF","subdivisionName":"Ioba","code":"BF-IOB"},"BF-KAD":{"countryCode":"BF","subdivisionName":"Kadiogo","code":"BF-KAD"},"BF-KEN":{"countryCode":"BF","subdivisionName":"Kenedougou","code":"BF-KEN"},"BF-KMP":{"countryCode":"BF","subdivisionName":"Kompienga","code":"BF-KMP"},"BF-KOS":{"countryCode":"BF","subdivisionName":"Kossi","code":"BF-KOS"},"BF-KOT":{"countryCode":"BF","subdivisionName":"Kouritenga","code":"BF-KOT"},"BF-KOW":{"countryCode":"BF","subdivisionName":"Kourweogo","code":"BF-KOW"},"BF-LER":{"countryCode":"BF","subdivisionName":"Leraba","code":"BF-LER"},"BF-LOR":{"countryCode":"BF","subdivisionName":"Loroum","code":"BF-LOR"},"BF-MOU":{"countryCode":"BF","subdivisionName":"Mouhoun","code":"BF-MOU"},"BF-NAO":{"countryCode":"BF","subdivisionName":"Nahouri","code":"BF-NAO"},"BF-NAM":{"countryCode":"BF","subdivisionName":"Namentenga","code":"BF-NAM"},"BF-NAY":{"countryCode":"BF","subdivisionName":"Nayala","code":"BF-NAY"},"BF-OUB":{"countryCode":"BF","subdivisionName":"Oubritenga","code":"BF-OUB"},"BF-OUD":{"countryCode":"BF","subdivisionName":"Oudalan","code":"BF-OUD"},"BF-PAS":{"countryCode":"BF","subdivisionName":"Passore","code":"BF-PAS"},"BF-SMT":{"countryCode":"BF","subdivisionName":"Sanmatenga","code":"BF-SMT"},"BF-SEN":{"countryCode":"BF","subdivisionName":"Seno","code":"BF-SEN"},"BF-SIS":{"countryCode":"BF","subdivisionName":"Sissili","code":"BF-SIS"},"BF-SOM":{"countryCode":"BF","subdivisionName":"Soum","code":"BF-SOM"},"BF-SOR":{"countryCode":"BF","subdivisionName":"Sourou","code":"BF-SOR"},"BF-TAP":{"countryCode":"BF","subdivisionName":"Tapoa","code":"BF-TAP"},"BF-TUI":{"countryCode":"BF","subdivisionName":"Tuy","code":"BF-TUI"},"BF-YAT":{"countryCode":"BF","subdivisionName":"Yatenga","code":"BF-YAT"},"BF-ZIR":{"countryCode":"BF","subdivisionName":"Ziro","code":"BF-ZIR"},"BF-ZON":{"countryCode":"BF","subdivisionName":"Zondoma","code":"BF-ZON"},"BF-ZOU":{"countryCode":"BF","subdivisionName":"Zoundweogo","code":"BF-ZOU"},"BG-01":{"countryCode":"BG","subdivisionName":"Blagoevgrad","code":"BG-01"},"BG-02":{"countryCode":"BG","subdivisionName":"Burgas","code":"BG-02"},"BG-08":{"countryCode":"BG","subdivisionName":"Dobrich","code":"BG-08"},"BG-07":{"countryCode":"BG","subdivisionName":"Gabrovo","code":"BG-07"},"BG-26":{"countryCode":"BG","subdivisionName":"Haskovo","code":"BG-26"},"BG-09":{"countryCode":"BG","subdivisionName":"Kardzhali","code":"BG-09"},"BG-10":{"countryCode":"BG","subdivisionName":"Kyustendil","code":"BG-10"},"BG-11":{"countryCode":"BG","subdivisionName":"Lovech","code":"BG-11"},"BG-12":{"countryCode":"BG","subdivisionName":"Montana","code":"BG-12"},"BG-13":{"countryCode":"BG","subdivisionName":"Pazardzhik","code":"BG-13"},"BG-14":{"countryCode":"BG","subdivisionName":"Pernik","code":"BG-14"},"BG-15":{"countryCode":"BG","subdivisionName":"Pleven","code":"BG-15"},"BG-16":{"countryCode":"BG","subdivisionName":"Plovdiv","code":"BG-16"},"BG-17":{"countryCode":"BG","subdivisionName":"Razgrad","code":"BG-17"},"BG-18":{"countryCode":"BG","subdivisionName":"Ruse","code":"BG-18"},"BG-27":{"countryCode":"BG","subdivisionName":"Shumen","code":"BG-27"},"BG-19":{"countryCode":"BG","subdivisionName":"Silistra","code":"BG-19"},"BG-20":{"countryCode":"BG","subdivisionName":"Sliven","code":"BG-20"},"BG-21":{"countryCode":"BG","subdivisionName":"Smolyan","code":"BG-21"},"BG-23":{"countryCode":"BG","subdivisionName":"Sofia","code":"BG-23"},"BG-22":{"countryCode":"BG","subdivisionName":"Sofia (stolitsa)","code":"BG-22"},"BG-24":{"countryCode":"BG","subdivisionName":"Stara Zagora","code":"BG-24"},"BG-25":{"countryCode":"BG","subdivisionName":"Targovishte","code":"BG-25"},"BG-03":{"countryCode":"BG","subdivisionName":"Varna","code":"BG-03"},"BG-04":{"countryCode":"BG","subdivisionName":"Veliko Tarnovo","code":"BG-04"},"BG-05":{"countryCode":"BG","subdivisionName":"Vidin","code":"BG-05"},"BG-06":{"countryCode":"BG","subdivisionName":"Vratsa","code":"BG-06"},"BG-28":{"countryCode":"BG","subdivisionName":"Yambol","code":"BG-28"},"BH-13":{"countryCode":"BH","subdivisionName":"Al 'Asimah","code":"BH-13"},"BH-14":{"countryCode":"BH","subdivisionName":"Al Janubiyah","code":"BH-14"},"BH-15":{"countryCode":"BH","subdivisionName":"Al Muharraq","code":"BH-15"},"BH-17":{"countryCode":"BH","subdivisionName":"Ash Shamaliyah","code":"BH-17"},"BI-BM":{"countryCode":"BI","subdivisionName":"Bujumbura Mairie","code":"BI-BM"},"BI-BR":{"countryCode":"BI","subdivisionName":"Bururi","code":"BI-BR"},"BI-CI":{"countryCode":"BI","subdivisionName":"Cibitoke","code":"BI-CI"},"BI-GI":{"countryCode":"BI","subdivisionName":"Gitega","code":"BI-GI"},"BI-KI":{"countryCode":"BI","subdivisionName":"Kirundo","code":"BI-KI"},"BI-MW":{"countryCode":"BI","subdivisionName":"Mwaro","code":"BI-MW"},"BI-NG":{"countryCode":"BI","subdivisionName":"Ngozi","code":"BI-NG"},"BI-RM":{"countryCode":"BI","subdivisionName":"Rumonge","code":"BI-RM"},"BI-RT":{"countryCode":"BI","subdivisionName":"Rutana","code":"BI-RT"},"BI-RY":{"countryCode":"BI","subdivisionName":"Ruyigi","code":"BI-RY"},"BJ-AK":{"countryCode":"BJ","subdivisionName":"Atacora","code":"BJ-AK"},"BJ-AQ":{"countryCode":"BJ","subdivisionName":"Atlantique","code":"BJ-AQ"},"BJ-BO":{"countryCode":"BJ","subdivisionName":"Borgou","code":"BJ-BO"},"BJ-CO":{"countryCode":"BJ","subdivisionName":"Collines","code":"BJ-CO"},"BJ-DO":{"countryCode":"BJ","subdivisionName":"Donga","code":"BJ-DO"},"BJ-LI":{"countryCode":"BJ","subdivisionName":"Littoral","code":"BJ-LI"},"BJ-MO":{"countryCode":"BJ","subdivisionName":"Mono","code":"BJ-MO"},"BJ-OU":{"countryCode":"BJ","subdivisionName":"Oueme","code":"BJ-OU"},"BJ-PL":{"countryCode":"BJ","subdivisionName":"Plateau","code":"BJ-PL"},"BJ-ZO":{"countryCode":"BJ","subdivisionName":"Zou","code":"BJ-ZO"},"BN-BE":{"countryCode":"BN","subdivisionName":"Belait","code":"BN-BE"},"BN-BM":{"countryCode":"BN","subdivisionName":"Brunei-Muara","code":"BN-BM"},"BN-TE":{"countryCode":"BN","subdivisionName":"Temburong","code":"BN-TE"},"BN-TU":{"countryCode":"BN","subdivisionName":"Tutong","code":"BN-TU"},"BO-H":{"countryCode":"BO","subdivisionName":"Chuquisaca","code":"BO-H"},"BO-C":{"countryCode":"BO","subdivisionName":"Cochabamba","code":"BO-C"},"BO-B":{"countryCode":"BO","subdivisionName":"El Beni","code":"BO-B"},"BO-L":{"countryCode":"BO","subdivisionName":"La Paz","code":"BO-L"},"BO-O":{"countryCode":"BO","subdivisionName":"Oruro","code":"BO-O"},"BO-N":{"countryCode":"BO","subdivisionName":"Pando","code":"BO-N"},"BO-P":{"countryCode":"BO","subdivisionName":"Potosi","code":"BO-P"},"BO-S":{"countryCode":"BO","subdivisionName":"Santa Cruz","code":"BO-S"},"BO-T":{"countryCode":"BO","subdivisionName":"Tarija","code":"BO-T"},"BQ-BO":{"countryCode":"BQ","subdivisionName":"Bonaire","code":"BQ-BO"},"BQ-SA":{"countryCode":"BQ","subdivisionName":"Saba","code":"BQ-SA"},"BQ-SE":{"countryCode":"BQ","subdivisionName":"Sint Eustatius","code":"BQ-SE"},"BR-AC":{"countryCode":"BR","subdivisionName":"Acre","code":"BR-AC"},"BR-AL":{"countryCode":"BR","subdivisionName":"Alagoas","code":"BR-AL"},"BR-AP":{"countryCode":"BR","subdivisionName":"Amapa","code":"BR-AP"},"BR-AM":{"countryCode":"BR","subdivisionName":"Amazonas","code":"BR-AM"},"BR-BA":{"countryCode":"BR","subdivisionName":"Bahia","code":"BR-BA"},"BR-CE":{"countryCode":"BR","subdivisionName":"Ceara","code":"BR-CE"},"BR-DF":{"countryCode":"BR","subdivisionName":"Distrito Federal","code":"BR-DF"},"BR-ES":{"countryCode":"BR","subdivisionName":"Espirito Santo","code":"BR-ES"},"BR-GO":{"countryCode":"BR","subdivisionName":"Goias","code":"BR-GO"},"BR-MA":{"countryCode":"BR","subdivisionName":"Maranhao","code":"BR-MA"},"BR-MT":{"countryCode":"BR","subdivisionName":"Mato Grosso","code":"BR-MT"},"BR-MS":{"countryCode":"BR","subdivisionName":"Mato Grosso do Sul","code":"BR-MS"},"BR-MG":{"countryCode":"BR","subdivisionName":"Minas Gerais","code":"BR-MG"},"BR-PA":{"countryCode":"BR","subdivisionName":"Para","code":"BR-PA"},"BR-PB":{"countryCode":"BR","subdivisionName":"Paraiba","code":"BR-PB"},"BR-PR":{"countryCode":"BR","subdivisionName":"Parana","code":"BR-PR"},"BR-PE":{"countryCode":"BR","subdivisionName":"Pernambuco","code":"BR-PE"},"BR-PI":{"countryCode":"BR","subdivisionName":"Piaui","code":"BR-PI"},"BR-RN":{"countryCode":"BR","subdivisionName":"Rio Grande do Norte","code":"BR-RN"},"BR-RS":{"countryCode":"BR","subdivisionName":"Rio Grande do Sul","code":"BR-RS"},"BR-RJ":{"countryCode":"BR","subdivisionName":"Rio de Janeiro","code":"BR-RJ"},"BR-RO":{"countryCode":"BR","subdivisionName":"Rondonia","code":"BR-RO"},"BR-RR":{"countryCode":"BR","subdivisionName":"Roraima","code":"BR-RR"},"BR-SC":{"countryCode":"BR","subdivisionName":"Santa Catarina","code":"BR-SC"},"BR-SP":{"countryCode":"BR","subdivisionName":"Sao Paulo","code":"BR-SP"},"BR-SE":{"countryCode":"BR","subdivisionName":"Sergipe","code":"BR-SE"},"BR-TO":{"countryCode":"BR","subdivisionName":"Tocantins","code":"BR-TO"},"BS-BP":{"countryCode":"BS","subdivisionName":"Black Point","code":"BS-BP"},"BS-CO":{"countryCode":"BS","subdivisionName":"Central Abaco","code":"BS-CO"},"BS-FP":{"countryCode":"BS","subdivisionName":"City of Freeport","code":"BS-FP"},"BS-EG":{"countryCode":"BS","subdivisionName":"East Grand Bahama","code":"BS-EG"},"BS-HI":{"countryCode":"BS","subdivisionName":"Harbour Island","code":"BS-HI"},"BS-LI":{"countryCode":"BS","subdivisionName":"Long Island","code":"BS-LI"},"BS-NP":{"countryCode":"BS","subdivisionName":"New Providence","code":"BS-NP"},"BS-NS":{"countryCode":"BS","subdivisionName":"North Andros","code":"BS-NS"},"BS-NE":{"countryCode":"BS","subdivisionName":"North Eleuthera","code":"BS-NE"},"BS-SS":{"countryCode":"BS","subdivisionName":"San Salvador","code":"BS-SS"},"BS-SE":{"countryCode":"BS","subdivisionName":"South Eleuthera","code":"BS-SE"},"BS-WG":{"countryCode":"BS","subdivisionName":"West Grand Bahama","code":"BS-WG"},"BT-33":{"countryCode":"BT","subdivisionName":"Bumthang","code":"BT-33"},"BT-12":{"countryCode":"BT","subdivisionName":"Chhukha","code":"BT-12"},"BT-22":{"countryCode":"BT","subdivisionName":"Dagana","code":"BT-22"},"BT-GA":{"countryCode":"BT","subdivisionName":"Gasa","code":"BT-GA"},"BT-44":{"countryCode":"BT","subdivisionName":"Lhuentse","code":"BT-44"},"BT-42":{"countryCode":"BT","subdivisionName":"Monggar","code":"BT-42"},"BT-11":{"countryCode":"BT","subdivisionName":"Paro","code":"BT-11"},"BT-43":{"countryCode":"BT","subdivisionName":"Pema Gatshel","code":"BT-43"},"BT-23":{"countryCode":"BT","subdivisionName":"Punakha","code":"BT-23"},"BT-45":{"countryCode":"BT","subdivisionName":"Samdrup Jongkhar","code":"BT-45"},"BT-14":{"countryCode":"BT","subdivisionName":"Samtse","code":"BT-14"},"BT-31":{"countryCode":"BT","subdivisionName":"Sarpang","code":"BT-31"},"BT-15":{"countryCode":"BT","subdivisionName":"Thimphu","code":"BT-15"},"BT-41":{"countryCode":"BT","subdivisionName":"Trashigang","code":"BT-41"},"BT-32":{"countryCode":"BT","subdivisionName":"Trongsa","code":"BT-32"},"BT-21":{"countryCode":"BT","subdivisionName":"Tsirang","code":"BT-21"},"BT-24":{"countryCode":"BT","subdivisionName":"Wangdue Phodrang","code":"BT-24"},"BT-34":{"countryCode":"BT","subdivisionName":"Zhemgang","code":"BT-34"},"BW-CE":{"countryCode":"BW","subdivisionName":"Central","code":"BW-CE"},"BW-CH":{"countryCode":"BW","subdivisionName":"Chobe","code":"BW-CH"},"BW-GH":{"countryCode":"BW","subdivisionName":"Ghanzi","code":"BW-GH"},"BW-KG":{"countryCode":"BW","subdivisionName":"Kgalagadi","code":"BW-KG"},"BW-KL":{"countryCode":"BW","subdivisionName":"Kgatleng","code":"BW-KL"},"BW-KW":{"countryCode":"BW","subdivisionName":"Kweneng","code":"BW-KW"},"BW-NE":{"countryCode":"BW","subdivisionName":"North East","code":"BW-NE"},"BW-NW":{"countryCode":"BW","subdivisionName":"North West","code":"BW-NW"},"BW-SE":{"countryCode":"BW","subdivisionName":"South East","code":"BW-SE"},"BW-SO":{"countryCode":"BW","subdivisionName":"Southern","code":"BW-SO"},"BY-BR":{"countryCode":"BY","subdivisionName":"Brestskaya voblasts'","code":"BY-BR"},"BY-HO":{"countryCode":"BY","subdivisionName":"Homyel'skaya voblasts'","code":"BY-HO"},"BY-HM":{"countryCode":"BY","subdivisionName":"Horad Minsk","code":"BY-HM"},"BY-HR":{"countryCode":"BY","subdivisionName":"Hrodzyenskaya voblasts'","code":"BY-HR"},"BY-MA":{"countryCode":"BY","subdivisionName":"Mahilyowskaya voblasts'","code":"BY-MA"},"BY-MI":{"countryCode":"BY","subdivisionName":"Minskaya voblasts'","code":"BY-MI"},"BY-VI":{"countryCode":"BY","subdivisionName":"Vitsyebskaya voblasts'","code":"BY-VI"},"BZ-BZ":{"countryCode":"BZ","subdivisionName":"Belize","code":"BZ-BZ"},"BZ-CY":{"countryCode":"BZ","subdivisionName":"Cayo","code":"BZ-CY"},"BZ-CZL":{"countryCode":"BZ","subdivisionName":"Corozal","code":"BZ-CZL"},"BZ-OW":{"countryCode":"BZ","subdivisionName":"Orange Walk","code":"BZ-OW"},"BZ-SC":{"countryCode":"BZ","subdivisionName":"Stann Creek","code":"BZ-SC"},"BZ-TOL":{"countryCode":"BZ","subdivisionName":"Toledo","code":"BZ-TOL"},"CA-AB":{"countryCode":"CA","subdivisionName":"Alberta","code":"CA-AB"},"CA-BC":{"countryCode":"CA","subdivisionName":"British Columbia","code":"CA-BC"},"CA-MB":{"countryCode":"CA","subdivisionName":"Manitoba","code":"CA-MB"},"CA-NB":{"countryCode":"CA","subdivisionName":"New Brunswick","code":"CA-NB"},"CA-NL":{"countryCode":"CA","subdivisionName":"Newfoundland and Labrador","code":"CA-NL"},"CA-NT":{"countryCode":"CA","subdivisionName":"Northwest Territories","code":"CA-NT"},"CA-NS":{"countryCode":"CA","subdivisionName":"Nova Scotia","code":"CA-NS"},"CA-NU":{"countryCode":"CA","subdivisionName":"Nunavut","code":"CA-NU"},"CA-ON":{"countryCode":"CA","subdivisionName":"Ontario","code":"CA-ON"},"CA-PE":{"countryCode":"CA","subdivisionName":"Prince Edward Island","code":"CA-PE"},"CA-QC":{"countryCode":"CA","subdivisionName":"Quebec","code":"CA-QC"},"CA-SK":{"countryCode":"CA","subdivisionName":"Saskatchewan","code":"CA-SK"},"CA-YT":{"countryCode":"CA","subdivisionName":"Yukon","code":"CA-YT"},"CD-EQ":{"countryCode":"CD","subdivisionName":"Equateur","code":"CD-EQ"},"CD-HK":{"countryCode":"CD","subdivisionName":"Haut-Katanga","code":"CD-HK"},"CD-HL":{"countryCode":"CD","subdivisionName":"Haut-Lomami","code":"CD-HL"},"CD-IT":{"countryCode":"CD","subdivisionName":"Ituri","code":"CD-IT"},"CD-KS":{"countryCode":"CD","subdivisionName":"Kasai","code":"CD-KS"},"CD-KC":{"countryCode":"CD","subdivisionName":"Kasai Central","code":"CD-KC"},"CD-KE":{"countryCode":"CD","subdivisionName":"Kasai Oriental","code":"CD-KE"},"CD-KN":{"countryCode":"CD","subdivisionName":"Kinshasa","code":"CD-KN"},"CD-LU":{"countryCode":"CD","subdivisionName":"Lualaba","code":"CD-LU"},"CD-MA":{"countryCode":"CD","subdivisionName":"Maniema","code":"CD-MA"},"CD-NK":{"countryCode":"CD","subdivisionName":"Nord-Kivu","code":"CD-NK"},"CD-SA":{"countryCode":"CD","subdivisionName":"Sankuru","code":"CD-SA"},"CD-SK":{"countryCode":"CD","subdivisionName":"Sud-Kivu","code":"CD-SK"},"CD-TA":{"countryCode":"CD","subdivisionName":"Tanganyika","code":"CD-TA"},"CD-TO":{"countryCode":"CD","subdivisionName":"Tshopo","code":"CD-TO"},"CF-BB":{"countryCode":"CF","subdivisionName":"Bamingui-Bangoran","code":"CF-BB"},"CF-BGF":{"countryCode":"CF","subdivisionName":"Bangui","code":"CF-BGF"},"CF-KB":{"countryCode":"CF","subdivisionName":"Gribingui","code":"CF-KB"},"CF-KG":{"countryCode":"CF","subdivisionName":"Kemo-Gribingui","code":"CF-KG"},"CF-HS":{"countryCode":"CF","subdivisionName":"Mambere-Kadei","code":"CF-HS"},"CF-NM":{"countryCode":"CF","subdivisionName":"Nana-Mambere","code":"CF-NM"},"CF-UK":{"countryCode":"CF","subdivisionName":"Ouaka","code":"CF-UK"},"CF-AC":{"countryCode":"CF","subdivisionName":"Ouham","code":"CF-AC"},"CF-OP":{"countryCode":"CF","subdivisionName":"Ouham-Pende","code":"CF-OP"},"CF-VK":{"countryCode":"CF","subdivisionName":"Vakaga","code":"CF-VK"},"CG-11":{"countryCode":"CG","subdivisionName":"Bouenza","code":"CG-11"},"CG-BZV":{"countryCode":"CG","subdivisionName":"Brazzaville","code":"CG-BZV"},"CG-8":{"countryCode":"CG","subdivisionName":"Cuvette","code":"CG-8"},"CG-9":{"countryCode":"CG","subdivisionName":"Niari","code":"CG-9"},"CG-14":{"countryCode":"CG","subdivisionName":"Plateaux","code":"CG-14"},"CG-16":{"countryCode":"CG","subdivisionName":"Pointe-Noire","code":"CG-16"},"CG-13":{"countryCode":"CG","subdivisionName":"Sangha","code":"CG-13"},"CH-AG":{"countryCode":"CH","subdivisionName":"Aargau","code":"CH-AG"},"CH-AR":{"countryCode":"CH","subdivisionName":"Appenzell Ausserrhoden","code":"CH-AR"},"CH-AI":{"countryCode":"CH","subdivisionName":"Appenzell Innerrhoden","code":"CH-AI"},"CH-BL":{"countryCode":"CH","subdivisionName":"Basel-Landschaft","code":"CH-BL"},"CH-BS":{"countryCode":"CH","subdivisionName":"Basel-Stadt","code":"CH-BS"},"CH-BE":{"countryCode":"CH","subdivisionName":"Bern","code":"CH-BE"},"CH-FR":{"countryCode":"CH","subdivisionName":"Fribourg","code":"CH-FR"},"CH-GE":{"countryCode":"CH","subdivisionName":"Geneve","code":"CH-GE"},"CH-GL":{"countryCode":"CH","subdivisionName":"Glarus","code":"CH-GL"},"CH-GR":{"countryCode":"CH","subdivisionName":"Graubunden","code":"CH-GR"},"CH-JU":{"countryCode":"CH","subdivisionName":"Jura","code":"CH-JU"},"CH-LU":{"countryCode":"CH","subdivisionName":"Luzern","code":"CH-LU"},"CH-NE":{"countryCode":"CH","subdivisionName":"Neuchatel","code":"CH-NE"},"CH-NW":{"countryCode":"CH","subdivisionName":"Nidwalden","code":"CH-NW"},"CH-OW":{"countryCode":"CH","subdivisionName":"Obwalden","code":"CH-OW"},"CH-SG":{"countryCode":"CH","subdivisionName":"Sankt Gallen","code":"CH-SG"},"CH-SH":{"countryCode":"CH","subdivisionName":"Schaffhausen","code":"CH-SH"},"CH-SZ":{"countryCode":"CH","subdivisionName":"Schwyz","code":"CH-SZ"},"CH-SO":{"countryCode":"CH","subdivisionName":"Solothurn","code":"CH-SO"},"CH-TG":{"countryCode":"CH","subdivisionName":"Thurgau","code":"CH-TG"},"CH-TI":{"countryCode":"CH","subdivisionName":"Ticino","code":"CH-TI"},"CH-UR":{"countryCode":"CH","subdivisionName":"Uri","code":"CH-UR"},"CH-VS":{"countryCode":"CH","subdivisionName":"Valais","code":"CH-VS"},"CH-VD":{"countryCode":"CH","subdivisionName":"Vaud","code":"CH-VD"},"CH-ZG":{"countryCode":"CH","subdivisionName":"Zug","code":"CH-ZG"},"CH-ZH":{"countryCode":"CH","subdivisionName":"Zurich","code":"CH-ZH"},"CI-AB":{"countryCode":"CI","subdivisionName":"Abidjan","code":"CI-AB"},"CI-BS":{"countryCode":"CI","subdivisionName":"Bas-Sassandra","code":"CI-BS"},"CI-CM":{"countryCode":"CI","subdivisionName":"Comoe","code":"CI-CM"},"CI-DN":{"countryCode":"CI","subdivisionName":"Denguele","code":"CI-DN"},"CI-GD":{"countryCode":"CI","subdivisionName":"Goh-Djiboua","code":"CI-GD"},"CI-LC":{"countryCode":"CI","subdivisionName":"Lacs","code":"CI-LC"},"CI-LG":{"countryCode":"CI","subdivisionName":"Lagunes","code":"CI-LG"},"CI-MG":{"countryCode":"CI","subdivisionName":"Montagnes","code":"CI-MG"},"CI-SM":{"countryCode":"CI","subdivisionName":"Sassandra-Marahoue","code":"CI-SM"},"CI-SV":{"countryCode":"CI","subdivisionName":"Savanes","code":"CI-SV"},"CI-VB":{"countryCode":"CI","subdivisionName":"Vallee du Bandama","code":"CI-VB"},"CI-WR":{"countryCode":"CI","subdivisionName":"Woroba","code":"CI-WR"},"CI-YM":{"countryCode":"CI","subdivisionName":"Yamoussoukro","code":"CI-YM"},"CI-ZZ":{"countryCode":"CI","subdivisionName":"Zanzan","code":"CI-ZZ"},"CL-AI":{"countryCode":"CL","subdivisionName":"Aisen del General Carlos Ibanez del Campo","code":"CL-AI"},"CL-AN":{"countryCode":"CL","subdivisionName":"Antofagasta","code":"CL-AN"},"CL-AP":{"countryCode":"CL","subdivisionName":"Arica y Parinacota","code":"CL-AP"},"CL-AT":{"countryCode":"CL","subdivisionName":"Atacama","code":"CL-AT"},"CL-BI":{"countryCode":"CL","subdivisionName":"Biobio","code":"CL-BI"},"CL-CO":{"countryCode":"CL","subdivisionName":"Coquimbo","code":"CL-CO"},"CL-AR":{"countryCode":"CL","subdivisionName":"La Araucania","code":"CL-AR"},"CL-LI":{"countryCode":"CL","subdivisionName":"Libertador General Bernardo O'Higgins","code":"CL-LI"},"CL-LL":{"countryCode":"CL","subdivisionName":"Los Lagos","code":"CL-LL"},"CL-LR":{"countryCode":"CL","subdivisionName":"Los Rios","code":"CL-LR"},"CL-MA":{"countryCode":"CL","subdivisionName":"Magallanes","code":"CL-MA"},"CL-ML":{"countryCode":"CL","subdivisionName":"Maule","code":"CL-ML"},"CL-NB":{"countryCode":"CL","subdivisionName":"Nuble","code":"CL-NB"},"CL-RM":{"countryCode":"CL","subdivisionName":"Region Metropolitana de Santiago","code":"CL-RM"},"CL-TA":{"countryCode":"CL","subdivisionName":"Tarapaca","code":"CL-TA"},"CL-VS":{"countryCode":"CL","subdivisionName":"Valparaiso","code":"CL-VS"},"CM-AD":{"countryCode":"CM","subdivisionName":"Adamaoua","code":"CM-AD"},"CM-CE":{"countryCode":"CM","subdivisionName":"Centre","code":"CM-CE"},"CM-ES":{"countryCode":"CM","subdivisionName":"Est","code":"CM-ES"},"CM-EN":{"countryCode":"CM","subdivisionName":"Extreme-Nord","code":"CM-EN"},"CM-LT":{"countryCode":"CM","subdivisionName":"Littoral","code":"CM-LT"},"CM-NO":{"countryCode":"CM","subdivisionName":"Nord","code":"CM-NO"},"CM-NW":{"countryCode":"CM","subdivisionName":"Nord-Ouest","code":"CM-NW"},"CM-OU":{"countryCode":"CM","subdivisionName":"Ouest","code":"CM-OU"},"CM-SU":{"countryCode":"CM","subdivisionName":"Sud","code":"CM-SU"},"CM-SW":{"countryCode":"CM","subdivisionName":"Sud-Ouest","code":"CM-SW"},"CN-AH":{"countryCode":"CN","subdivisionName":"Anhui","code":"CN-AH"},"CN-BJ":{"countryCode":"CN","subdivisionName":"Beijing","code":"CN-BJ"},"CN-CQ":{"countryCode":"CN","subdivisionName":"Chongqing","code":"CN-CQ"},"CN-FJ":{"countryCode":"CN","subdivisionName":"Fujian","code":"CN-FJ"},"CN-GS":{"countryCode":"CN","subdivisionName":"Gansu","code":"CN-GS"},"CN-GD":{"countryCode":"CN","subdivisionName":"Guangdong","code":"CN-GD"},"CN-GX":{"countryCode":"CN","subdivisionName":"Guangxi Zhuangzu","code":"CN-GX"},"CN-GZ":{"countryCode":"CN","subdivisionName":"Guizhou","code":"CN-GZ"},"CN-HI":{"countryCode":"CN","subdivisionName":"Hainan","code":"CN-HI"},"CN-HE":{"countryCode":"CN","subdivisionName":"Hebei","code":"CN-HE"},"CN-HL":{"countryCode":"CN","subdivisionName":"Heilongjiang","code":"CN-HL"},"CN-HA":{"countryCode":"CN","subdivisionName":"Henan","code":"CN-HA"},"CN-HB":{"countryCode":"CN","subdivisionName":"Hubei","code":"CN-HB"},"CN-HN":{"countryCode":"CN","subdivisionName":"Hunan","code":"CN-HN"},"CN-JS":{"countryCode":"CN","subdivisionName":"Jiangsu","code":"CN-JS"},"CN-JX":{"countryCode":"CN","subdivisionName":"Jiangxi","code":"CN-JX"},"CN-JL":{"countryCode":"CN","subdivisionName":"Jilin","code":"CN-JL"},"CN-LN":{"countryCode":"CN","subdivisionName":"Liaoning","code":"CN-LN"},"CN-NM":{"countryCode":"CN","subdivisionName":"Nei Mongol","code":"CN-NM"},"CN-NX":{"countryCode":"CN","subdivisionName":"Ningxia Huizu","code":"CN-NX"},"CN-QH":{"countryCode":"CN","subdivisionName":"Qinghai","code":"CN-QH"},"CN-SN":{"countryCode":"CN","subdivisionName":"Shaanxi","code":"CN-SN"},"CN-SD":{"countryCode":"CN","subdivisionName":"Shandong","code":"CN-SD"},"CN-SH":{"countryCode":"CN","subdivisionName":"Shanghai","code":"CN-SH"},"CN-SX":{"countryCode":"CN","subdivisionName":"Shanxi","code":"CN-SX"},"CN-SC":{"countryCode":"CN","subdivisionName":"Sichuan","code":"CN-SC"},"CN-TJ":{"countryCode":"CN","subdivisionName":"Tianjin","code":"CN-TJ"},"CN-XJ":{"countryCode":"CN","subdivisionName":"Xinjiang Uygur","code":"CN-XJ"},"CN-XZ":{"countryCode":"CN","subdivisionName":"Xizang","code":"CN-XZ"},"CN-YN":{"countryCode":"CN","subdivisionName":"Yunnan","code":"CN-YN"},"CN-ZJ":{"countryCode":"CN","subdivisionName":"Zhejiang","code":"CN-ZJ"},"CO-AMA":{"countryCode":"CO","subdivisionName":"Amazonas","code":"CO-AMA"},"CO-ANT":{"countryCode":"CO","subdivisionName":"Antioquia","code":"CO-ANT"},"CO-ARA":{"countryCode":"CO","subdivisionName":"Arauca","code":"CO-ARA"},"CO-ATL":{"countryCode":"CO","subdivisionName":"Atlantico","code":"CO-ATL"},"CO-BOL":{"countryCode":"CO","subdivisionName":"Bolivar","code":"CO-BOL"},"CO-BOY":{"countryCode":"CO","subdivisionName":"Boyaca","code":"CO-BOY"},"CO-CAL":{"countryCode":"CO","subdivisionName":"Caldas","code":"CO-CAL"},"CO-CAQ":{"countryCode":"CO","subdivisionName":"Caqueta","code":"CO-CAQ"},"CO-CAS":{"countryCode":"CO","subdivisionName":"Casanare","code":"CO-CAS"},"CO-CAU":{"countryCode":"CO","subdivisionName":"Cauca","code":"CO-CAU"},"CO-CES":{"countryCode":"CO","subdivisionName":"Cesar","code":"CO-CES"},"CO-CHO":{"countryCode":"CO","subdivisionName":"Choco","code":"CO-CHO"},"CO-COR":{"countryCode":"CO","subdivisionName":"Cordoba","code":"CO-COR"},"CO-CUN":{"countryCode":"CO","subdivisionName":"Cundinamarca","code":"CO-CUN"},"CO-DC":{"countryCode":"CO","subdivisionName":"Distrito Capital de Bogota","code":"CO-DC"},"CO-GUA":{"countryCode":"CO","subdivisionName":"Guainia","code":"CO-GUA"},"CO-GUV":{"countryCode":"CO","subdivisionName":"Guaviare","code":"CO-GUV"},"CO-HUI":{"countryCode":"CO","subdivisionName":"Huila","code":"CO-HUI"},"CO-LAG":{"countryCode":"CO","subdivisionName":"La Guajira","code":"CO-LAG"},"CO-MAG":{"countryCode":"CO","subdivisionName":"Magdalena","code":"CO-MAG"},"CO-MET":{"countryCode":"CO","subdivisionName":"Meta","code":"CO-MET"},"CO-NAR":{"countryCode":"CO","subdivisionName":"Narino","code":"CO-NAR"},"CO-NSA":{"countryCode":"CO","subdivisionName":"Norte de Santander","code":"CO-NSA"},"CO-PUT":{"countryCode":"CO","subdivisionName":"Putumayo","code":"CO-PUT"},"CO-QUI":{"countryCode":"CO","subdivisionName":"Quindio","code":"CO-QUI"},"CO-RIS":{"countryCode":"CO","subdivisionName":"Risaralda","code":"CO-RIS"},"CO-SAP":{"countryCode":"CO","subdivisionName":"San Andres, Providencia y Santa Catalina","code":"CO-SAP"},"CO-SAN":{"countryCode":"CO","subdivisionName":"Santander","code":"CO-SAN"},"CO-SUC":{"countryCode":"CO","subdivisionName":"Sucre","code":"CO-SUC"},"CO-TOL":{"countryCode":"CO","subdivisionName":"Tolima","code":"CO-TOL"},"CO-VAC":{"countryCode":"CO","subdivisionName":"Valle del Cauca","code":"CO-VAC"},"CO-VID":{"countryCode":"CO","subdivisionName":"Vichada","code":"CO-VID"},"CR-A":{"countryCode":"CR","subdivisionName":"Alajuela","code":"CR-A"},"CR-C":{"countryCode":"CR","subdivisionName":"Cartago","code":"CR-C"},"CR-G":{"countryCode":"CR","subdivisionName":"Guanacaste","code":"CR-G"},"CR-H":{"countryCode":"CR","subdivisionName":"Heredia","code":"CR-H"},"CR-L":{"countryCode":"CR","subdivisionName":"Limon","code":"CR-L"},"CR-P":{"countryCode":"CR","subdivisionName":"Puntarenas","code":"CR-P"},"CR-SJ":{"countryCode":"CR","subdivisionName":"San Jose","code":"CR-SJ"},"CU-15":{"countryCode":"CU","subdivisionName":"Artemisa","code":"CU-15"},"CU-09":{"countryCode":"CU","subdivisionName":"Camaguey","code":"CU-09"},"CU-08":{"countryCode":"CU","subdivisionName":"Ciego de Avila","code":"CU-08"},"CU-06":{"countryCode":"CU","subdivisionName":"Cienfuegos","code":"CU-06"},"CU-12":{"countryCode":"CU","subdivisionName":"Granma","code":"CU-12"},"CU-14":{"countryCode":"CU","subdivisionName":"Guantanamo","code":"CU-14"},"CU-11":{"countryCode":"CU","subdivisionName":"Holguin","code":"CU-11"},"CU-99":{"countryCode":"CU","subdivisionName":"Isla de la Juventud","code":"CU-99"},"CU-03":{"countryCode":"CU","subdivisionName":"La Habana","code":"CU-03"},"CU-10":{"countryCode":"CU","subdivisionName":"Las Tunas","code":"CU-10"},"CU-04":{"countryCode":"CU","subdivisionName":"Matanzas","code":"CU-04"},"CU-16":{"countryCode":"CU","subdivisionName":"Mayabeque","code":"CU-16"},"CU-01":{"countryCode":"CU","subdivisionName":"Pinar del Rio","code":"CU-01"},"CU-07":{"countryCode":"CU","subdivisionName":"Sancti Spiritus","code":"CU-07"},"CU-13":{"countryCode":"CU","subdivisionName":"Santiago de Cuba","code":"CU-13"},"CU-05":{"countryCode":"CU","subdivisionName":"Villa Clara","code":"CU-05"},"CV-BV":{"countryCode":"CV","subdivisionName":"Boa Vista","code":"CV-BV"},"CV-BR":{"countryCode":"CV","subdivisionName":"Brava","code":"CV-BR"},"CV-MO":{"countryCode":"CV","subdivisionName":"Mosteiros","code":"CV-MO"},"CV-PN":{"countryCode":"CV","subdivisionName":"Porto Novo","code":"CV-PN"},"CV-PR":{"countryCode":"CV","subdivisionName":"Praia","code":"CV-PR"},"CV-RS":{"countryCode":"CV","subdivisionName":"Ribeira Grande de Santiago","code":"CV-RS"},"CV-SL":{"countryCode":"CV","subdivisionName":"Sal","code":"CV-SL"},"CV-SV":{"countryCode":"CV","subdivisionName":"Sao Vicente","code":"CV-SV"},"CV-TA":{"countryCode":"CV","subdivisionName":"Tarrafal","code":"CV-TA"},"CY-04":{"countryCode":"CY","subdivisionName":"Ammochostos","code":"CY-04"},"CY-06":{"countryCode":"CY","subdivisionName":"Keryneia","code":"CY-06"},"CY-03":{"countryCode":"CY","subdivisionName":"Larnaka","code":"CY-03"},"CY-01":{"countryCode":"CY","subdivisionName":"Lefkosia","code":"CY-01"},"CY-02":{"countryCode":"CY","subdivisionName":"Lemesos","code":"CY-02"},"CY-05":{"countryCode":"CY","subdivisionName":"Pafos","code":"CY-05"},"CZ-31":{"countryCode":"CZ","subdivisionName":"Jihocesky kraj","code":"CZ-31"},"CZ-64":{"countryCode":"CZ","subdivisionName":"Jihomoravsky kraj","code":"CZ-64"},"CZ-41":{"countryCode":"CZ","subdivisionName":"Karlovarsky kraj","code":"CZ-41"},"CZ-63":{"countryCode":"CZ","subdivisionName":"Kraj Vysocina","code":"CZ-63"},"CZ-52":{"countryCode":"CZ","subdivisionName":"Kralovehradecky kraj","code":"CZ-52"},"CZ-51":{"countryCode":"CZ","subdivisionName":"Liberecky kraj","code":"CZ-51"},"CZ-80":{"countryCode":"CZ","subdivisionName":"Moravskoslezsky kraj","code":"CZ-80"},"CZ-71":{"countryCode":"CZ","subdivisionName":"Olomoucky kraj","code":"CZ-71"},"CZ-53":{"countryCode":"CZ","subdivisionName":"Pardubicky kraj","code":"CZ-53"},"CZ-32":{"countryCode":"CZ","subdivisionName":"Plzensky kraj","code":"CZ-32"},"CZ-10":{"countryCode":"CZ","subdivisionName":"Praha, Hlavni mesto","code":"CZ-10"},"CZ-20":{"countryCode":"CZ","subdivisionName":"Stredocesky kraj","code":"CZ-20"},"CZ-42":{"countryCode":"CZ","subdivisionName":"Ustecky kraj","code":"CZ-42"},"CZ-72":{"countryCode":"CZ","subdivisionName":"Zlinsky kraj","code":"CZ-72"},"DE-BW":{"countryCode":"DE","subdivisionName":"Baden-Wurttemberg","code":"DE-BW"},"DE-BY":{"countryCode":"DE","subdivisionName":"Bayern","code":"DE-BY"},"DE-BE":{"countryCode":"DE","subdivisionName":"Berlin","code":"DE-BE"},"DE-BB":{"countryCode":"DE","subdivisionName":"Brandenburg","code":"DE-BB"},"DE-HB":{"countryCode":"DE","subdivisionName":"Bremen","code":"DE-HB"},"DE-HH":{"countryCode":"DE","subdivisionName":"Hamburg","code":"DE-HH"},"DE-HE":{"countryCode":"DE","subdivisionName":"Hessen","code":"DE-HE"},"DE-MV":{"countryCode":"DE","subdivisionName":"Mecklenburg-Vorpommern","code":"DE-MV"},"DE-NI":{"countryCode":"DE","subdivisionName":"Niedersachsen","code":"DE-NI"},"DE-NW":{"countryCode":"DE","subdivisionName":"Nordrhein-Westfalen","code":"DE-NW"},"DE-RP":{"countryCode":"DE","subdivisionName":"Rheinland-Pfalz","code":"DE-RP"},"DE-SL":{"countryCode":"DE","subdivisionName":"Saarland","code":"DE-SL"},"DE-SN":{"countryCode":"DE","subdivisionName":"Sachsen","code":"DE-SN"},"DE-ST":{"countryCode":"DE","subdivisionName":"Sachsen-Anhalt","code":"DE-ST"},"DE-SH":{"countryCode":"DE","subdivisionName":"Schleswig-Holstein","code":"DE-SH"},"DE-TH":{"countryCode":"DE","subdivisionName":"Thuringen","code":"DE-TH"},"DJ-AR":{"countryCode":"DJ","subdivisionName":"Arta","code":"DJ-AR"},"DJ-DI":{"countryCode":"DJ","subdivisionName":"Dikhil","code":"DJ-DI"},"DJ-DJ":{"countryCode":"DJ","subdivisionName":"Djibouti","code":"DJ-DJ"},"DK-84":{"countryCode":"DK","subdivisionName":"Hovedstaden","code":"DK-84"},"DK-82":{"countryCode":"DK","subdivisionName":"Midtjylland","code":"DK-82"},"DK-81":{"countryCode":"DK","subdivisionName":"Nordjylland","code":"DK-81"},"DK-85":{"countryCode":"DK","subdivisionName":"Sjaelland","code":"DK-85"},"DK-83":{"countryCode":"DK","subdivisionName":"Syddanmark","code":"DK-83"},"DM-02":{"countryCode":"DM","subdivisionName":"Saint Andrew","code":"DM-02"},"DM-04":{"countryCode":"DM","subdivisionName":"Saint George","code":"DM-04"},"DM-05":{"countryCode":"DM","subdivisionName":"Saint John","code":"DM-05"},"DM-06":{"countryCode":"DM","subdivisionName":"Saint Joseph","code":"DM-06"},"DM-07":{"countryCode":"DM","subdivisionName":"Saint Luke","code":"DM-07"},"DM-09":{"countryCode":"DM","subdivisionName":"Saint Patrick","code":"DM-09"},"DM-10":{"countryCode":"DM","subdivisionName":"Saint Paul","code":"DM-10"},"DO-02":{"countryCode":"DO","subdivisionName":"Azua","code":"DO-02"},"DO-03":{"countryCode":"DO","subdivisionName":"Baoruco","code":"DO-03"},"DO-04":{"countryCode":"DO","subdivisionName":"Barahona","code":"DO-04"},"DO-05":{"countryCode":"DO","subdivisionName":"Dajabon","code":"DO-05"},"DO-01":{"countryCode":"DO","subdivisionName":"Distrito Nacional (Santo Domingo)","code":"DO-01"},"DO-06":{"countryCode":"DO","subdivisionName":"Duarte","code":"DO-06"},"DO-08":{"countryCode":"DO","subdivisionName":"El Seibo","code":"DO-08"},"DO-07":{"countryCode":"DO","subdivisionName":"Elias Pina","code":"DO-07"},"DO-09":{"countryCode":"DO","subdivisionName":"Espaillat","code":"DO-09"},"DO-30":{"countryCode":"DO","subdivisionName":"Hato Mayor","code":"DO-30"},"DO-19":{"countryCode":"DO","subdivisionName":"Hermanas Mirabal","code":"DO-19"},"DO-10":{"countryCode":"DO","subdivisionName":"Independencia","code":"DO-10"},"DO-11":{"countryCode":"DO","subdivisionName":"La Altagracia","code":"DO-11"},"DO-12":{"countryCode":"DO","subdivisionName":"La Romana","code":"DO-12"},"DO-13":{"countryCode":"DO","subdivisionName":"La Vega","code":"DO-13"},"DO-14":{"countryCode":"DO","subdivisionName":"Maria Trinidad Sanchez","code":"DO-14"},"DO-28":{"countryCode":"DO","subdivisionName":"Monsenor Nouel","code":"DO-28"},"DO-15":{"countryCode":"DO","subdivisionName":"Monte Cristi","code":"DO-15"},"DO-29":{"countryCode":"DO","subdivisionName":"Monte Plata","code":"DO-29"},"DO-16":{"countryCode":"DO","subdivisionName":"Pedernales","code":"DO-16"},"DO-17":{"countryCode":"DO","subdivisionName":"Peravia","code":"DO-17"},"DO-18":{"countryCode":"DO","subdivisionName":"Puerto Plata","code":"DO-18"},"DO-20":{"countryCode":"DO","subdivisionName":"Samana","code":"DO-20"},"DO-21":{"countryCode":"DO","subdivisionName":"San Cristobal","code":"DO-21"},"DO-31":{"countryCode":"DO","subdivisionName":"San Jose de Ocoa","code":"DO-31"},"DO-22":{"countryCode":"DO","subdivisionName":"San Juan","code":"DO-22"},"DO-23":{"countryCode":"DO","subdivisionName":"San Pedro de Macoris","code":"DO-23"},"DO-24":{"countryCode":"DO","subdivisionName":"Sanchez Ramirez","code":"DO-24"},"DO-25":{"countryCode":"DO","subdivisionName":"Santiago","code":"DO-25"},"DO-26":{"countryCode":"DO","subdivisionName":"Santiago Rodriguez","code":"DO-26"},"DO-27":{"countryCode":"DO","subdivisionName":"Valverde","code":"DO-27"},"DZ-01":{"countryCode":"DZ","subdivisionName":"Adrar","code":"DZ-01"},"DZ-44":{"countryCode":"DZ","subdivisionName":"Ain Defla","code":"DZ-44"},"DZ-46":{"countryCode":"DZ","subdivisionName":"Ain Temouchent","code":"DZ-46"},"DZ-16":{"countryCode":"DZ","subdivisionName":"Alger","code":"DZ-16"},"DZ-23":{"countryCode":"DZ","subdivisionName":"Annaba","code":"DZ-23"},"DZ-05":{"countryCode":"DZ","subdivisionName":"Batna","code":"DZ-05"},"DZ-08":{"countryCode":"DZ","subdivisionName":"Bechar","code":"DZ-08"},"DZ-06":{"countryCode":"DZ","subdivisionName":"Bejaia","code":"DZ-06"},"DZ-07":{"countryCode":"DZ","subdivisionName":"Biskra","code":"DZ-07"},"DZ-09":{"countryCode":"DZ","subdivisionName":"Blida","code":"DZ-09"},"DZ-34":{"countryCode":"DZ","subdivisionName":"Bordj Bou Arreridj","code":"DZ-34"},"DZ-10":{"countryCode":"DZ","subdivisionName":"Bouira","code":"DZ-10"},"DZ-35":{"countryCode":"DZ","subdivisionName":"Boumerdes","code":"DZ-35"},"DZ-02":{"countryCode":"DZ","subdivisionName":"Chlef","code":"DZ-02"},"DZ-25":{"countryCode":"DZ","subdivisionName":"Constantine","code":"DZ-25"},"DZ-56":{"countryCode":"DZ","subdivisionName":"Djanet","code":"DZ-56"},"DZ-17":{"countryCode":"DZ","subdivisionName":"Djelfa","code":"DZ-17"},"DZ-32":{"countryCode":"DZ","subdivisionName":"El Bayadh","code":"DZ-32"},"DZ-57":{"countryCode":"DZ","subdivisionName":"El Meghaier","code":"DZ-57"},"DZ-39":{"countryCode":"DZ","subdivisionName":"El Oued","code":"DZ-39"},"DZ-36":{"countryCode":"DZ","subdivisionName":"El Tarf","code":"DZ-36"},"DZ-47":{"countryCode":"DZ","subdivisionName":"Ghardaia","code":"DZ-47"},"DZ-24":{"countryCode":"DZ","subdivisionName":"Guelma","code":"DZ-24"},"DZ-33":{"countryCode":"DZ","subdivisionName":"Illizi","code":"DZ-33"},"DZ-53":{"countryCode":"DZ","subdivisionName":"In Salah","code":"DZ-53"},"DZ-18":{"countryCode":"DZ","subdivisionName":"Jijel","code":"DZ-18"},"DZ-40":{"countryCode":"DZ","subdivisionName":"Khenchela","code":"DZ-40"},"DZ-03":{"countryCode":"DZ","subdivisionName":"Laghouat","code":"DZ-03"},"DZ-28":{"countryCode":"DZ","subdivisionName":"M'sila","code":"DZ-28"},"DZ-29":{"countryCode":"DZ","subdivisionName":"Mascara","code":"DZ-29"},"DZ-26":{"countryCode":"DZ","subdivisionName":"Medea","code":"DZ-26"},"DZ-43":{"countryCode":"DZ","subdivisionName":"Mila","code":"DZ-43"},"DZ-27":{"countryCode":"DZ","subdivisionName":"Mostaganem","code":"DZ-27"},"DZ-45":{"countryCode":"DZ","subdivisionName":"Naama","code":"DZ-45"},"DZ-31":{"countryCode":"DZ","subdivisionName":"Oran","code":"DZ-31"},"DZ-30":{"countryCode":"DZ","subdivisionName":"Ouargla","code":"DZ-30"},"DZ-51":{"countryCode":"DZ","subdivisionName":"Ouled Djellal","code":"DZ-51"},"DZ-04":{"countryCode":"DZ","subdivisionName":"Oum el Bouaghi","code":"DZ-04"},"DZ-48":{"countryCode":"DZ","subdivisionName":"Relizane","code":"DZ-48"},"DZ-20":{"countryCode":"DZ","subdivisionName":"Saida","code":"DZ-20"},"DZ-19":{"countryCode":"DZ","subdivisionName":"Setif","code":"DZ-19"},"DZ-22":{"countryCode":"DZ","subdivisionName":"Sidi Bel Abbes","code":"DZ-22"},"DZ-21":{"countryCode":"DZ","subdivisionName":"Skikda","code":"DZ-21"},"DZ-41":{"countryCode":"DZ","subdivisionName":"Souk Ahras","code":"DZ-41"},"DZ-11":{"countryCode":"DZ","subdivisionName":"Tamanrasset","code":"DZ-11"},"DZ-12":{"countryCode":"DZ","subdivisionName":"Tebessa","code":"DZ-12"},"DZ-14":{"countryCode":"DZ","subdivisionName":"Tiaret","code":"DZ-14"},"DZ-49":{"countryCode":"DZ","subdivisionName":"Timimoun","code":"DZ-49"},"DZ-37":{"countryCode":"DZ","subdivisionName":"Tindouf","code":"DZ-37"},"DZ-42":{"countryCode":"DZ","subdivisionName":"Tipaza","code":"DZ-42"},"DZ-38":{"countryCode":"DZ","subdivisionName":"Tissemsilt","code":"DZ-38"},"DZ-15":{"countryCode":"DZ","subdivisionName":"Tizi Ouzou","code":"DZ-15"},"DZ-13":{"countryCode":"DZ","subdivisionName":"Tlemcen","code":"DZ-13"},"DZ-55":{"countryCode":"DZ","subdivisionName":"Touggourt","code":"DZ-55"},"EC-A":{"countryCode":"EC","subdivisionName":"Azuay","code":"EC-A"},"EC-B":{"countryCode":"EC","subdivisionName":"Bolivar","code":"EC-B"},"EC-F":{"countryCode":"EC","subdivisionName":"Canar","code":"EC-F"},"EC-C":{"countryCode":"EC","subdivisionName":"Carchi","code":"EC-C"},"EC-H":{"countryCode":"EC","subdivisionName":"Chimborazo","code":"EC-H"},"EC-X":{"countryCode":"EC","subdivisionName":"Cotopaxi","code":"EC-X"},"EC-O":{"countryCode":"EC","subdivisionName":"El Oro","code":"EC-O"},"EC-E":{"countryCode":"EC","subdivisionName":"Esmeraldas","code":"EC-E"},"EC-W":{"countryCode":"EC","subdivisionName":"Galapagos","code":"EC-W"},"EC-G":{"countryCode":"EC","subdivisionName":"Guayas","code":"EC-G"},"EC-I":{"countryCode":"EC","subdivisionName":"Imbabura","code":"EC-I"},"EC-L":{"countryCode":"EC","subdivisionName":"Loja","code":"EC-L"},"EC-R":{"countryCode":"EC","subdivisionName":"Los Rios","code":"EC-R"},"EC-M":{"countryCode":"EC","subdivisionName":"Manabi","code":"EC-M"},"EC-S":{"countryCode":"EC","subdivisionName":"Morona Santiago","code":"EC-S"},"EC-N":{"countryCode":"EC","subdivisionName":"Napo","code":"EC-N"},"EC-D":{"countryCode":"EC","subdivisionName":"Orellana","code":"EC-D"},"EC-Y":{"countryCode":"EC","subdivisionName":"Pastaza","code":"EC-Y"},"EC-P":{"countryCode":"EC","subdivisionName":"Pichincha","code":"EC-P"},"EC-SE":{"countryCode":"EC","subdivisionName":"Santa Elena","code":"EC-SE"},"EC-SD":{"countryCode":"EC","subdivisionName":"Santo Domingo de los Tsachilas","code":"EC-SD"},"EC-U":{"countryCode":"EC","subdivisionName":"Sucumbios","code":"EC-U"},"EC-T":{"countryCode":"EC","subdivisionName":"Tungurahua","code":"EC-T"},"EC-Z":{"countryCode":"EC","subdivisionName":"Zamora Chinchipe","code":"EC-Z"},"EE-37":{"countryCode":"EE","subdivisionName":"Harjumaa","code":"EE-37"},"EE-39":{"countryCode":"EE","subdivisionName":"Hiiumaa","code":"EE-39"},"EE-45":{"countryCode":"EE","subdivisionName":"Ida-Virumaa","code":"EE-45"},"EE-52":{"countryCode":"EE","subdivisionName":"Jarvamaa","code":"EE-52"},"EE-50":{"countryCode":"EE","subdivisionName":"Jogevamaa","code":"EE-50"},"EE-60":{"countryCode":"EE","subdivisionName":"Laane-Virumaa","code":"EE-60"},"EE-56":{"countryCode":"EE","subdivisionName":"Laanemaa","code":"EE-56"},"EE-68":{"countryCode":"EE","subdivisionName":"Parnumaa","code":"EE-68"},"EE-64":{"countryCode":"EE","subdivisionName":"Polvamaa","code":"EE-64"},"EE-71":{"countryCode":"EE","subdivisionName":"Raplamaa","code":"EE-71"},"EE-74":{"countryCode":"EE","subdivisionName":"Saaremaa","code":"EE-74"},"EE-79":{"countryCode":"EE","subdivisionName":"Tartumaa","code":"EE-79"},"EE-81":{"countryCode":"EE","subdivisionName":"Valgamaa","code":"EE-81"},"EE-84":{"countryCode":"EE","subdivisionName":"Viljandimaa","code":"EE-84"},"EE-87":{"countryCode":"EE","subdivisionName":"Vorumaa","code":"EE-87"},"EG-DK":{"countryCode":"EG","subdivisionName":"Ad Daqahliyah","code":"EG-DK"},"EG-BA":{"countryCode":"EG","subdivisionName":"Al Bahr al Ahmar","code":"EG-BA"},"EG-BH":{"countryCode":"EG","subdivisionName":"Al Buhayrah","code":"EG-BH"},"EG-FYM":{"countryCode":"EG","subdivisionName":"Al Fayyum","code":"EG-FYM"},"EG-GH":{"countryCode":"EG","subdivisionName":"Al Gharbiyah","code":"EG-GH"},"EG-ALX":{"countryCode":"EG","subdivisionName":"Al Iskandariyah","code":"EG-ALX"},"EG-IS":{"countryCode":"EG","subdivisionName":"Al Isma'iliyah","code":"EG-IS"},"EG-GZ":{"countryCode":"EG","subdivisionName":"Al Jizah","code":"EG-GZ"},"EG-MNF":{"countryCode":"EG","subdivisionName":"Al Minufiyah","code":"EG-MNF"},"EG-MN":{"countryCode":"EG","subdivisionName":"Al Minya","code":"EG-MN"},"EG-C":{"countryCode":"EG","subdivisionName":"Al Qahirah","code":"EG-C"},"EG-KB":{"countryCode":"EG","subdivisionName":"Al Qalyubiyah","code":"EG-KB"},"EG-LX":{"countryCode":"EG","subdivisionName":"Al Uqsur","code":"EG-LX"},"EG-WAD":{"countryCode":"EG","subdivisionName":"Al Wadi al Jadid","code":"EG-WAD"},"EG-SUZ":{"countryCode":"EG","subdivisionName":"As Suways","code":"EG-SUZ"},"EG-SHR":{"countryCode":"EG","subdivisionName":"Ash Sharqiyah","code":"EG-SHR"},"EG-ASN":{"countryCode":"EG","subdivisionName":"Aswan","code":"EG-ASN"},"EG-AST":{"countryCode":"EG","subdivisionName":"Asyut","code":"EG-AST"},"EG-BNS":{"countryCode":"EG","subdivisionName":"Bani Suwayf","code":"EG-BNS"},"EG-PTS":{"countryCode":"EG","subdivisionName":"Bur Sa'id","code":"EG-PTS"},"EG-DT":{"countryCode":"EG","subdivisionName":"Dumyat","code":"EG-DT"},"EG-JS":{"countryCode":"EG","subdivisionName":"Janub Sina'","code":"EG-JS"},"EG-KFS":{"countryCode":"EG","subdivisionName":"Kafr ash Shaykh","code":"EG-KFS"},"EG-MT":{"countryCode":"EG","subdivisionName":"Matruh","code":"EG-MT"},"EG-KN":{"countryCode":"EG","subdivisionName":"Qina","code":"EG-KN"},"EG-SIN":{"countryCode":"EG","subdivisionName":"Shamal Sina'","code":"EG-SIN"},"EG-SHG":{"countryCode":"EG","subdivisionName":"Suhaj","code":"EG-SHG"},"ER-MA":{"countryCode":"ER","subdivisionName":"Al Awsat","code":"ER-MA"},"ER-GB":{"countryCode":"ER","subdivisionName":"Qash-Barkah","code":"ER-GB"},"ES-AN":{"countryCode":"ES","subdivisionName":"Andalucia","code":"ES-AN"},"ES-AR":{"countryCode":"ES","subdivisionName":"Aragon","code":"ES-AR"},"ES-AS":{"countryCode":"ES","subdivisionName":"Asturias, Principado de","code":"ES-AS"},"ES-CN":{"countryCode":"ES","subdivisionName":"Canarias","code":"ES-CN"},"ES-CB":{"countryCode":"ES","subdivisionName":"Cantabria","code":"ES-CB"},"ES-CL":{"countryCode":"ES","subdivisionName":"Castilla y Leon","code":"ES-CL"},"ES-CM":{"countryCode":"ES","subdivisionName":"Castilla-La Mancha","code":"ES-CM"},"ES-CT":{"countryCode":"ES","subdivisionName":"Catalunya","code":"ES-CT"},"ES-CE":{"countryCode":"ES","subdivisionName":"Ceuta","code":"ES-CE"},"ES-EX":{"countryCode":"ES","subdivisionName":"Extremadura","code":"ES-EX"},"ES-GA":{"countryCode":"ES","subdivisionName":"Galicia","code":"ES-GA"},"ES-IB":{"countryCode":"ES","subdivisionName":"Illes Balears","code":"ES-IB"},"ES-RI":{"countryCode":"ES","subdivisionName":"La Rioja","code":"ES-RI"},"ES-MD":{"countryCode":"ES","subdivisionName":"Madrid, Comunidad de","code":"ES-MD"},"ES-ML":{"countryCode":"ES","subdivisionName":"Melilla","code":"ES-ML"},"ES-MC":{"countryCode":"ES","subdivisionName":"Murcia, Region de","code":"ES-MC"},"ES-NC":{"countryCode":"ES","subdivisionName":"Navarra, Comunidad Foral de","code":"ES-NC"},"ES-PV":{"countryCode":"ES","subdivisionName":"Pais Vasco","code":"ES-PV"},"ES-VC":{"countryCode":"ES","subdivisionName":"Valenciana, Comunidad","code":"ES-VC"},"ET-AA":{"countryCode":"ET","subdivisionName":"Addis Ababa","code":"ET-AA"},"ET-AF":{"countryCode":"ET","subdivisionName":"Afar","code":"ET-AF"},"ET-AM":{"countryCode":"ET","subdivisionName":"Amara","code":"ET-AM"},"ET-BE":{"countryCode":"ET","subdivisionName":"Benshangul-Gumaz","code":"ET-BE"},"ET-DD":{"countryCode":"ET","subdivisionName":"Dire Dawa","code":"ET-DD"},"ET-HA":{"countryCode":"ET","subdivisionName":"Harari People","code":"ET-HA"},"ET-OR":{"countryCode":"ET","subdivisionName":"Oromia","code":"ET-OR"},"ET-SO":{"countryCode":"ET","subdivisionName":"Somali","code":"ET-SO"},"ET-SN":{"countryCode":"ET","subdivisionName":"Southern Nations, Nationalities and Peoples","code":"ET-SN"},"ET-TI":{"countryCode":"ET","subdivisionName":"Tigrai","code":"ET-TI"},"FI-02":{"countryCode":"FI","subdivisionName":"Etela-Karjala","code":"FI-02"},"FI-03":{"countryCode":"FI","subdivisionName":"Etela-Pohjanmaa","code":"FI-03"},"FI-04":{"countryCode":"FI","subdivisionName":"Etela-Savo","code":"FI-04"},"FI-05":{"countryCode":"FI","subdivisionName":"Kainuu","code":"FI-05"},"FI-06":{"countryCode":"FI","subdivisionName":"Kanta-Hame","code":"FI-06"},"FI-07":{"countryCode":"FI","subdivisionName":"Keski-Pohjanmaa","code":"FI-07"},"FI-08":{"countryCode":"FI","subdivisionName":"Keski-Suomi","code":"FI-08"},"FI-09":{"countryCode":"FI","subdivisionName":"Kymenlaakso","code":"FI-09"},"FI-10":{"countryCode":"FI","subdivisionName":"Lappi","code":"FI-10"},"FI-16":{"countryCode":"FI","subdivisionName":"Paijat-Hame","code":"FI-16"},"FI-11":{"countryCode":"FI","subdivisionName":"Pirkanmaa","code":"FI-11"},"FI-12":{"countryCode":"FI","subdivisionName":"Pohjanmaa","code":"FI-12"},"FI-13":{"countryCode":"FI","subdivisionName":"Pohjois-Karjala","code":"FI-13"},"FI-14":{"countryCode":"FI","subdivisionName":"Pohjois-Pohjanmaa","code":"FI-14"},"FI-15":{"countryCode":"FI","subdivisionName":"Pohjois-Savo","code":"FI-15"},"FI-17":{"countryCode":"FI","subdivisionName":"Satakunta","code":"FI-17"},"FI-18":{"countryCode":"FI","subdivisionName":"Uusimaa","code":"FI-18"},"FI-19":{"countryCode":"FI","subdivisionName":"Varsinais-Suomi","code":"FI-19"},"FJ-C":{"countryCode":"FJ","subdivisionName":"Central","code":"FJ-C"},"FJ-E":{"countryCode":"FJ","subdivisionName":"Eastern","code":"FJ-E"},"FJ-N":{"countryCode":"FJ","subdivisionName":"Northern","code":"FJ-N"},"FJ-R":{"countryCode":"FJ","subdivisionName":"Rotuma","code":"FJ-R"},"FJ-W":{"countryCode":"FJ","subdivisionName":"Western","code":"FJ-W"},"FM-TRK":{"countryCode":"FM","subdivisionName":"Chuuk","code":"FM-TRK"},"FM-KSA":{"countryCode":"FM","subdivisionName":"Kosrae","code":"FM-KSA"},"FM-PNI":{"countryCode":"FM","subdivisionName":"Pohnpei","code":"FM-PNI"},"FM-YAP":{"countryCode":"FM","subdivisionName":"Yap","code":"FM-YAP"},"FR-ARA":{"countryCode":"FR","subdivisionName":"Auvergne-Rhone-Alpes","code":"FR-ARA"},"FR-BFC":{"countryCode":"FR","subdivisionName":"Bourgogne-Franche-Comte","code":"FR-BFC"},"FR-BRE":{"countryCode":"FR","subdivisionName":"Bretagne","code":"FR-BRE"},"FR-CVL":{"countryCode":"FR","subdivisionName":"Centre-Val de Loire","code":"FR-CVL"},"FR-20R":{"countryCode":"FR","subdivisionName":"Corse","code":"FR-20R"},"FR-GES":{"countryCode":"FR","subdivisionName":"Grand-Est","code":"FR-GES"},"FR-HDF":{"countryCode":"FR","subdivisionName":"Hauts-de-France","code":"FR-HDF"},"FR-IDF":{"countryCode":"FR","subdivisionName":"Ile-de-France","code":"FR-IDF"},"FR-NOR":{"countryCode":"FR","subdivisionName":"Normandie","code":"FR-NOR"},"FR-NAQ":{"countryCode":"FR","subdivisionName":"Nouvelle-Aquitaine","code":"FR-NAQ"},"FR-OCC":{"countryCode":"FR","subdivisionName":"Occitanie","code":"FR-OCC"},"FR-PDL":{"countryCode":"FR","subdivisionName":"Pays-de-la-Loire","code":"FR-PDL"},"FR-PAC":{"countryCode":"FR","subdivisionName":"Provence-Alpes-Cote-d'Azur","code":"FR-PAC"},"GA-1":{"countryCode":"GA","subdivisionName":"Estuaire","code":"GA-1"},"GA-2":{"countryCode":"GA","subdivisionName":"Haut-Ogooue","code":"GA-2"},"GA-3":{"countryCode":"GA","subdivisionName":"Moyen-Ogooue","code":"GA-3"},"GA-4":{"countryCode":"GA","subdivisionName":"Ngounie","code":"GA-4"},"GA-5":{"countryCode":"GA","subdivisionName":"Nyanga","code":"GA-5"},"GA-8":{"countryCode":"GA","subdivisionName":"Ogooue-Maritime","code":"GA-8"},"GA-9":{"countryCode":"GA","subdivisionName":"Woleu-Ntem","code":"GA-9"},"GB-ENG":{"countryCode":"GB","subdivisionName":"England","code":"GB-ENG"},"GB-NIR":{"countryCode":"GB","subdivisionName":"Northern Ireland","code":"GB-NIR"},"GB-SCT":{"countryCode":"GB","subdivisionName":"Scotland","code":"GB-SCT"},"GB-WLS":{"countryCode":"GB","subdivisionName":"Wales","code":"GB-WLS"},"GD-01":{"countryCode":"GD","subdivisionName":"Saint Andrew","code":"GD-01"},"GD-02":{"countryCode":"GD","subdivisionName":"Saint David","code":"GD-02"},"GD-03":{"countryCode":"GD","subdivisionName":"Saint George","code":"GD-03"},"GD-04":{"countryCode":"GD","subdivisionName":"Saint John","code":"GD-04"},"GD-05":{"countryCode":"GD","subdivisionName":"Saint Mark","code":"GD-05"},"GD-06":{"countryCode":"GD","subdivisionName":"Saint Patrick","code":"GD-06"},"GD-10":{"countryCode":"GD","subdivisionName":"Southern Grenadine Islands","code":"GD-10"},"GE-AB":{"countryCode":"GE","subdivisionName":"Abkhazia","code":"GE-AB"},"GE-AJ":{"countryCode":"GE","subdivisionName":"Ajaria","code":"GE-AJ"},"GE-GU":{"countryCode":"GE","subdivisionName":"Guria","code":"GE-GU"},"GE-IM":{"countryCode":"GE","subdivisionName":"Imereti","code":"GE-IM"},"GE-KA":{"countryCode":"GE","subdivisionName":"K'akheti","code":"GE-KA"},"GE-KK":{"countryCode":"GE","subdivisionName":"Kvemo Kartli","code":"GE-KK"},"GE-MM":{"countryCode":"GE","subdivisionName":"Mtskheta-Mtianeti","code":"GE-MM"},"GE-RL":{"countryCode":"GE","subdivisionName":"Rach'a-Lechkhumi-Kvemo Svaneti","code":"GE-RL"},"GE-SZ":{"countryCode":"GE","subdivisionName":"Samegrelo-Zemo Svaneti","code":"GE-SZ"},"GE-SJ":{"countryCode":"GE","subdivisionName":"Samtskhe-Javakheti","code":"GE-SJ"},"GE-SK":{"countryCode":"GE","subdivisionName":"Shida Kartli","code":"GE-SK"},"GE-TB":{"countryCode":"GE","subdivisionName":"Tbilisi","code":"GE-TB"},"GH-AF":{"countryCode":"GH","subdivisionName":"Ahafo","code":"GH-AF"},"GH-AH":{"countryCode":"GH","subdivisionName":"Ashanti","code":"GH-AH"},"GH-BO":{"countryCode":"GH","subdivisionName":"Bono","code":"GH-BO"},"GH-BE":{"countryCode":"GH","subdivisionName":"Bono East","code":"GH-BE"},"GH-CP":{"countryCode":"GH","subdivisionName":"Central","code":"GH-CP"},"GH-EP":{"countryCode":"GH","subdivisionName":"Eastern","code":"GH-EP"},"GH-AA":{"countryCode":"GH","subdivisionName":"Greater Accra","code":"GH-AA"},"GH-NP":{"countryCode":"GH","subdivisionName":"Northern","code":"GH-NP"},"GH-UE":{"countryCode":"GH","subdivisionName":"Upper East","code":"GH-UE"},"GH-UW":{"countryCode":"GH","subdivisionName":"Upper West","code":"GH-UW"},"GH-TV":{"countryCode":"GH","subdivisionName":"Volta","code":"GH-TV"},"GH-WP":{"countryCode":"GH","subdivisionName":"Western","code":"GH-WP"},"GL-AV":{"countryCode":"GL","subdivisionName":"Avannaata Kommunia","code":"GL-AV"},"GL-KU":{"countryCode":"GL","subdivisionName":"Kommune Kujalleq","code":"GL-KU"},"GL-QT":{"countryCode":"GL","subdivisionName":"Kommune Qeqertalik","code":"GL-QT"},"GL-SM":{"countryCode":"GL","subdivisionName":"Kommuneqarfik Sermersooq","code":"GL-SM"},"GL-QE":{"countryCode":"GL","subdivisionName":"Qeqqata Kommunia","code":"GL-QE"},"GM-B":{"countryCode":"GM","subdivisionName":"Banjul","code":"GM-B"},"GM-M":{"countryCode":"GM","subdivisionName":"Central River","code":"GM-M"},"GM-L":{"countryCode":"GM","subdivisionName":"Lower River","code":"GM-L"},"GM-N":{"countryCode":"GM","subdivisionName":"North Bank","code":"GM-N"},"GM-U":{"countryCode":"GM","subdivisionName":"Upper River","code":"GM-U"},"GM-W":{"countryCode":"GM","subdivisionName":"Western","code":"GM-W"},"GN-BF":{"countryCode":"GN","subdivisionName":"Boffa","code":"GN-BF"},"GN-BK":{"countryCode":"GN","subdivisionName":"Boke","code":"GN-BK"},"GN-C":{"countryCode":"GN","subdivisionName":"Conakry","code":"GN-C"},"GN-DB":{"countryCode":"GN","subdivisionName":"Dabola","code":"GN-DB"},"GN-DL":{"countryCode":"GN","subdivisionName":"Dalaba","code":"GN-DL"},"GN-DI":{"countryCode":"GN","subdivisionName":"Dinguiraye","code":"GN-DI"},"GN-FR":{"countryCode":"GN","subdivisionName":"Fria","code":"GN-FR"},"GN-KA":{"countryCode":"GN","subdivisionName":"Kankan","code":"GN-KA"},"GN-KO":{"countryCode":"GN","subdivisionName":"Kouroussa","code":"GN-KO"},"GN-LA":{"countryCode":"GN","subdivisionName":"Labe","code":"GN-LA"},"GN-SI":{"countryCode":"GN","subdivisionName":"Siguiri","code":"GN-SI"},"GQ-AN":{"countryCode":"GQ","subdivisionName":"Annobon","code":"GQ-AN"},"GQ-BN":{"countryCode":"GQ","subdivisionName":"Bioko Norte","code":"GQ-BN"},"GQ-CS":{"countryCode":"GQ","subdivisionName":"Centro Sur","code":"GQ-CS"},"GQ-KN":{"countryCode":"GQ","subdivisionName":"Kie-Ntem","code":"GQ-KN"},"GQ-LI":{"countryCode":"GQ","subdivisionName":"Litoral","code":"GQ-LI"},"GQ-WN":{"countryCode":"GQ","subdivisionName":"Wele-Nzas","code":"GQ-WN"},"GR-A":{"countryCode":"GR","subdivisionName":"Anatoliki Makedonia kai Thraki","code":"GR-A"},"GR-I":{"countryCode":"GR","subdivisionName":"Attiki","code":"GR-I"},"GR-G":{"countryCode":"GR","subdivisionName":"Dytiki Ellada","code":"GR-G"},"GR-C":{"countryCode":"GR","subdivisionName":"Dytiki Makedonia","code":"GR-C"},"GR-F":{"countryCode":"GR","subdivisionName":"Ionia Nisia","code":"GR-F"},"GR-D":{"countryCode":"GR","subdivisionName":"Ipeiros","code":"GR-D"},"GR-B":{"countryCode":"GR","subdivisionName":"Kentriki Makedonia","code":"GR-B"},"GR-M":{"countryCode":"GR","subdivisionName":"Kriti","code":"GR-M"},"GR-L":{"countryCode":"GR","subdivisionName":"Notio Aigaio","code":"GR-L"},"GR-J":{"countryCode":"GR","subdivisionName":"Peloponnisos","code":"GR-J"},"GR-H":{"countryCode":"GR","subdivisionName":"Sterea Ellada","code":"GR-H"},"GR-E":{"countryCode":"GR","subdivisionName":"Thessalia","code":"GR-E"},"GR-K":{"countryCode":"GR","subdivisionName":"Voreio Aigaio","code":"GR-K"},"GT-16":{"countryCode":"GT","subdivisionName":"Alta Verapaz","code":"GT-16"},"GT-15":{"countryCode":"GT","subdivisionName":"Baja Verapaz","code":"GT-15"},"GT-04":{"countryCode":"GT","subdivisionName":"Chimaltenango","code":"GT-04"},"GT-20":{"countryCode":"GT","subdivisionName":"Chiquimula","code":"GT-20"},"GT-02":{"countryCode":"GT","subdivisionName":"El Progreso","code":"GT-02"},"GT-05":{"countryCode":"GT","subdivisionName":"Escuintla","code":"GT-05"},"GT-01":{"countryCode":"GT","subdivisionName":"Guatemala","code":"GT-01"},"GT-13":{"countryCode":"GT","subdivisionName":"Huehuetenango","code":"GT-13"},"GT-18":{"countryCode":"GT","subdivisionName":"Izabal","code":"GT-18"},"GT-21":{"countryCode":"GT","subdivisionName":"Jalapa","code":"GT-21"},"GT-22":{"countryCode":"GT","subdivisionName":"Jutiapa","code":"GT-22"},"GT-17":{"countryCode":"GT","subdivisionName":"Peten","code":"GT-17"},"GT-09":{"countryCode":"GT","subdivisionName":"Quetzaltenango","code":"GT-09"},"GT-14":{"countryCode":"GT","subdivisionName":"Quiche","code":"GT-14"},"GT-11":{"countryCode":"GT","subdivisionName":"Retalhuleu","code":"GT-11"},"GT-03":{"countryCode":"GT","subdivisionName":"Sacatepequez","code":"GT-03"},"GT-12":{"countryCode":"GT","subdivisionName":"San Marcos","code":"GT-12"},"GT-06":{"countryCode":"GT","subdivisionName":"Santa Rosa","code":"GT-06"},"GT-07":{"countryCode":"GT","subdivisionName":"Solola","code":"GT-07"},"GT-10":{"countryCode":"GT","subdivisionName":"Suchitepequez","code":"GT-10"},"GT-08":{"countryCode":"GT","subdivisionName":"Totonicapan","code":"GT-08"},"GT-19":{"countryCode":"GT","subdivisionName":"Zacapa","code":"GT-19"},"GW-BA":{"countryCode":"GW","subdivisionName":"Bafata","code":"GW-BA"},"GW-BS":{"countryCode":"GW","subdivisionName":"Bissau","code":"GW-BS"},"GW-CA":{"countryCode":"GW","subdivisionName":"Cacheu","code":"GW-CA"},"GW-GA":{"countryCode":"GW","subdivisionName":"Gabu","code":"GW-GA"},"GW-OI":{"countryCode":"GW","subdivisionName":"Oio","code":"GW-OI"},"GY-BA":{"countryCode":"GY","subdivisionName":"Barima-Waini","code":"GY-BA"},"GY-CU":{"countryCode":"GY","subdivisionName":"Cuyuni-Mazaruni","code":"GY-CU"},"GY-DE":{"countryCode":"GY","subdivisionName":"Demerara-Mahaica","code":"GY-DE"},"GY-EB":{"countryCode":"GY","subdivisionName":"East Berbice-Corentyne","code":"GY-EB"},"GY-ES":{"countryCode":"GY","subdivisionName":"Essequibo Islands-West Demerara","code":"GY-ES"},"GY-MA":{"countryCode":"GY","subdivisionName":"Mahaica-Berbice","code":"GY-MA"},"GY-PM":{"countryCode":"GY","subdivisionName":"Pomeroon-Supenaam","code":"GY-PM"},"GY-PT":{"countryCode":"GY","subdivisionName":"Potaro-Siparuni","code":"GY-PT"},"GY-UD":{"countryCode":"GY","subdivisionName":"Upper Demerara-Berbice","code":"GY-UD"},"HN-AT":{"countryCode":"HN","subdivisionName":"Atlantida","code":"HN-AT"},"HN-CH":{"countryCode":"HN","subdivisionName":"Choluteca","code":"HN-CH"},"HN-CL":{"countryCode":"HN","subdivisionName":"Colon","code":"HN-CL"},"HN-CM":{"countryCode":"HN","subdivisionName":"Comayagua","code":"HN-CM"},"HN-CP":{"countryCode":"HN","subdivisionName":"Copan","code":"HN-CP"},"HN-CR":{"countryCode":"HN","subdivisionName":"Cortes","code":"HN-CR"},"HN-EP":{"countryCode":"HN","subdivisionName":"El Paraiso","code":"HN-EP"},"HN-FM":{"countryCode":"HN","subdivisionName":"Francisco Morazan","code":"HN-FM"},"HN-GD":{"countryCode":"HN","subdivisionName":"Gracias a Dios","code":"HN-GD"},"HN-IN":{"countryCode":"HN","subdivisionName":"Intibuca","code":"HN-IN"},"HN-IB":{"countryCode":"HN","subdivisionName":"Islas de la Bahia","code":"HN-IB"},"HN-LP":{"countryCode":"HN","subdivisionName":"La Paz","code":"HN-LP"},"HN-LE":{"countryCode":"HN","subdivisionName":"Lempira","code":"HN-LE"},"HN-OC":{"countryCode":"HN","subdivisionName":"Ocotepeque","code":"HN-OC"},"HN-OL":{"countryCode":"HN","subdivisionName":"Olancho","code":"HN-OL"},"HN-SB":{"countryCode":"HN","subdivisionName":"Santa Barbara","code":"HN-SB"},"HN-VA":{"countryCode":"HN","subdivisionName":"Valle","code":"HN-VA"},"HN-YO":{"countryCode":"HN","subdivisionName":"Yoro","code":"HN-YO"},"HR-07":{"countryCode":"HR","subdivisionName":"Bjelovarsko-bilogorska zupanija","code":"HR-07"},"HR-12":{"countryCode":"HR","subdivisionName":"Brodsko-posavska zupanija","code":"HR-12"},"HR-19":{"countryCode":"HR","subdivisionName":"Dubrovacko-neretvanska zupanija","code":"HR-19"},"HR-21":{"countryCode":"HR","subdivisionName":"Grad Zagreb","code":"HR-21"},"HR-18":{"countryCode":"HR","subdivisionName":"Istarska zupanija","code":"HR-18"},"HR-04":{"countryCode":"HR","subdivisionName":"Karlovacka zupanija","code":"HR-04"},"HR-06":{"countryCode":"HR","subdivisionName":"Koprivnicko-krizevacka zupanija","code":"HR-06"},"HR-02":{"countryCode":"HR","subdivisionName":"Krapinsko-zagorska zupanija","code":"HR-02"},"HR-09":{"countryCode":"HR","subdivisionName":"Licko-senjska zupanija","code":"HR-09"},"HR-20":{"countryCode":"HR","subdivisionName":"Medimurska zupanija","code":"HR-20"},"HR-14":{"countryCode":"HR","subdivisionName":"Osjecko-baranjska zupanija","code":"HR-14"},"HR-11":{"countryCode":"HR","subdivisionName":"Pozesko-slavonska zupanija","code":"HR-11"},"HR-08":{"countryCode":"HR","subdivisionName":"Primorsko-goranska zupanija","code":"HR-08"},"HR-15":{"countryCode":"HR","subdivisionName":"Sibensko-kninska zupanija","code":"HR-15"},"HR-03":{"countryCode":"HR","subdivisionName":"Sisacko-moslavacka zupanija","code":"HR-03"},"HR-17":{"countryCode":"HR","subdivisionName":"Splitsko-dalmatinska zupanija","code":"HR-17"},"HR-05":{"countryCode":"HR","subdivisionName":"Varazdinska zupanija","code":"HR-05"},"HR-10":{"countryCode":"HR","subdivisionName":"Viroviticko-podravska zupanija","code":"HR-10"},"HR-16":{"countryCode":"HR","subdivisionName":"Vukovarsko-srijemska zupanija","code":"HR-16"},"HR-13":{"countryCode":"HR","subdivisionName":"Zadarska zupanija","code":"HR-13"},"HR-01":{"countryCode":"HR","subdivisionName":"Zagrebacka zupanija","code":"HR-01"},"HT-AR":{"countryCode":"HT","subdivisionName":"Artibonite","code":"HT-AR"},"HT-CE":{"countryCode":"HT","subdivisionName":"Centre","code":"HT-CE"},"HT-GA":{"countryCode":"HT","subdivisionName":"Grande'Anse","code":"HT-GA"},"HT-NI":{"countryCode":"HT","subdivisionName":"Nippes","code":"HT-NI"},"HT-ND":{"countryCode":"HT","subdivisionName":"Nord","code":"HT-ND"},"HT-NO":{"countryCode":"HT","subdivisionName":"Nord-Ouest","code":"HT-NO"},"HT-OU":{"countryCode":"HT","subdivisionName":"Ouest","code":"HT-OU"},"HT-SD":{"countryCode":"HT","subdivisionName":"Sud","code":"HT-SD"},"HT-SE":{"countryCode":"HT","subdivisionName":"Sud-Est","code":"HT-SE"},"HU-BK":{"countryCode":"HU","subdivisionName":"Bacs-Kiskun","code":"HU-BK"},"HU-BA":{"countryCode":"HU","subdivisionName":"Baranya","code":"HU-BA"},"HU-BE":{"countryCode":"HU","subdivisionName":"Bekes","code":"HU-BE"},"HU-BZ":{"countryCode":"HU","subdivisionName":"Borsod-Abauj-Zemplen","code":"HU-BZ"},"HU-BU":{"countryCode":"HU","subdivisionName":"Budapest","code":"HU-BU"},"HU-CS":{"countryCode":"HU","subdivisionName":"Csongrad-Csanad","code":"HU-CS"},"HU-FE":{"countryCode":"HU","subdivisionName":"Fejer","code":"HU-FE"},"HU-GS":{"countryCode":"HU","subdivisionName":"Gyor-Moson-Sopron","code":"HU-GS"},"HU-HB":{"countryCode":"HU","subdivisionName":"Hajdu-Bihar","code":"HU-HB"},"HU-HE":{"countryCode":"HU","subdivisionName":"Heves","code":"HU-HE"},"HU-JN":{"countryCode":"HU","subdivisionName":"Jasz-Nagykun-Szolnok","code":"HU-JN"},"HU-KE":{"countryCode":"HU","subdivisionName":"Komarom-Esztergom","code":"HU-KE"},"HU-NO":{"countryCode":"HU","subdivisionName":"Nograd","code":"HU-NO"},"HU-PE":{"countryCode":"HU","subdivisionName":"Pest","code":"HU-PE"},"HU-SO":{"countryCode":"HU","subdivisionName":"Somogy","code":"HU-SO"},"HU-SZ":{"countryCode":"HU","subdivisionName":"Szabolcs-Szatmar-Bereg","code":"HU-SZ"},"HU-TO":{"countryCode":"HU","subdivisionName":"Tolna","code":"HU-TO"},"HU-VA":{"countryCode":"HU","subdivisionName":"Vas","code":"HU-VA"},"HU-VE":{"countryCode":"HU","subdivisionName":"Veszprem","code":"HU-VE"},"HU-ZA":{"countryCode":"HU","subdivisionName":"Zala","code":"HU-ZA"},"ID-AC":{"countryCode":"ID","subdivisionName":"Aceh","code":"ID-AC"},"ID-BA":{"countryCode":"ID","subdivisionName":"Bali","code":"ID-BA"},"ID-BT":{"countryCode":"ID","subdivisionName":"Banten","code":"ID-BT"},"ID-BE":{"countryCode":"ID","subdivisionName":"Bengkulu","code":"ID-BE"},"ID-GO":{"countryCode":"ID","subdivisionName":"Gorontalo","code":"ID-GO"},"ID-JK":{"countryCode":"ID","subdivisionName":"Jakarta Raya","code":"ID-JK"},"ID-JA":{"countryCode":"ID","subdivisionName":"Jambi","code":"ID-JA"},"ID-JB":{"countryCode":"ID","subdivisionName":"Jawa Barat","code":"ID-JB"},"ID-JT":{"countryCode":"ID","subdivisionName":"Jawa Tengah","code":"ID-JT"},"ID-JI":{"countryCode":"ID","subdivisionName":"Jawa Timur","code":"ID-JI"},"ID-KB":{"countryCode":"ID","subdivisionName":"Kalimantan Barat","code":"ID-KB"},"ID-KS":{"countryCode":"ID","subdivisionName":"Kalimantan Selatan","code":"ID-KS"},"ID-KT":{"countryCode":"ID","subdivisionName":"Kalimantan Tengah","code":"ID-KT"},"ID-KI":{"countryCode":"ID","subdivisionName":"Kalimantan Timur","code":"ID-KI"},"ID-KU":{"countryCode":"ID","subdivisionName":"Kalimantan Utara","code":"ID-KU"},"ID-BB":{"countryCode":"ID","subdivisionName":"Kepulauan Bangka Belitung","code":"ID-BB"},"ID-KR":{"countryCode":"ID","subdivisionName":"Kepulauan Riau","code":"ID-KR"},"ID-LA":{"countryCode":"ID","subdivisionName":"Lampung","code":"ID-LA"},"ID-ML":{"countryCode":"ID","subdivisionName":"Maluku","code":"ID-ML"},"ID-MU":{"countryCode":"ID","subdivisionName":"Maluku Utara","code":"ID-MU"},"ID-NB":{"countryCode":"ID","subdivisionName":"Nusa Tenggara Barat","code":"ID-NB"},"ID-NT":{"countryCode":"ID","subdivisionName":"Nusa Tenggara Timur","code":"ID-NT"},"ID-PP":{"countryCode":"ID","subdivisionName":"Papua","code":"ID-PP"},"ID-PB":{"countryCode":"ID","subdivisionName":"Papua Barat","code":"ID-PB"},"ID-PE":{"countryCode":"ID","subdivisionName":"Papua Pengunungan","code":"ID-PE"},"ID-PS":{"countryCode":"ID","subdivisionName":"Papua Selatan","code":"ID-PS"},"ID-PT":{"countryCode":"ID","subdivisionName":"Papua Tengah","code":"ID-PT"},"ID-RI":{"countryCode":"ID","subdivisionName":"Riau","code":"ID-RI"},"ID-SR":{"countryCode":"ID","subdivisionName":"Sulawesi Barat","code":"ID-SR"},"ID-SN":{"countryCode":"ID","subdivisionName":"Sulawesi Selatan","code":"ID-SN"},"ID-ST":{"countryCode":"ID","subdivisionName":"Sulawesi Tengah","code":"ID-ST"},"ID-SG":{"countryCode":"ID","subdivisionName":"Sulawesi Tenggara","code":"ID-SG"},"ID-SA":{"countryCode":"ID","subdivisionName":"Sulawesi Utara","code":"ID-SA"},"ID-SB":{"countryCode":"ID","subdivisionName":"Sumatera Barat","code":"ID-SB"},"ID-SS":{"countryCode":"ID","subdivisionName":"Sumatera Selatan","code":"ID-SS"},"ID-SU":{"countryCode":"ID","subdivisionName":"Sumatera Utara","code":"ID-SU"},"ID-YO":{"countryCode":"ID","subdivisionName":"Yogyakarta","code":"ID-YO"},"IE-CW":{"countryCode":"IE","subdivisionName":"Carlow","code":"IE-CW"},"IE-CN":{"countryCode":"IE","subdivisionName":"Cavan","code":"IE-CN"},"IE-CE":{"countryCode":"IE","subdivisionName":"Clare","code":"IE-CE"},"IE-CO":{"countryCode":"IE","subdivisionName":"Cork","code":"IE-CO"},"IE-DL":{"countryCode":"IE","subdivisionName":"Donegal","code":"IE-DL"},"IE-D":{"countryCode":"IE","subdivisionName":"Dublin","code":"IE-D"},"IE-G":{"countryCode":"IE","subdivisionName":"Galway","code":"IE-G"},"IE-KY":{"countryCode":"IE","subdivisionName":"Kerry","code":"IE-KY"},"IE-KE":{"countryCode":"IE","subdivisionName":"Kildare","code":"IE-KE"},"IE-KK":{"countryCode":"IE","subdivisionName":"Kilkenny","code":"IE-KK"},"IE-LS":{"countryCode":"IE","subdivisionName":"Laois","code":"IE-LS"},"IE-LM":{"countryCode":"IE","subdivisionName":"Leitrim","code":"IE-LM"},"IE-LK":{"countryCode":"IE","subdivisionName":"Limerick","code":"IE-LK"},"IE-LD":{"countryCode":"IE","subdivisionName":"Longford","code":"IE-LD"},"IE-LH":{"countryCode":"IE","subdivisionName":"Louth","code":"IE-LH"},"IE-MO":{"countryCode":"IE","subdivisionName":"Mayo","code":"IE-MO"},"IE-MH":{"countryCode":"IE","subdivisionName":"Meath","code":"IE-MH"},"IE-MN":{"countryCode":"IE","subdivisionName":"Monaghan","code":"IE-MN"},"IE-OY":{"countryCode":"IE","subdivisionName":"Offaly","code":"IE-OY"},"IE-RN":{"countryCode":"IE","subdivisionName":"Roscommon","code":"IE-RN"},"IE-SO":{"countryCode":"IE","subdivisionName":"Sligo","code":"IE-SO"},"IE-TA":{"countryCode":"IE","subdivisionName":"Tipperary","code":"IE-TA"},"IE-WD":{"countryCode":"IE","subdivisionName":"Waterford","code":"IE-WD"},"IE-WH":{"countryCode":"IE","subdivisionName":"Westmeath","code":"IE-WH"},"IE-WX":{"countryCode":"IE","subdivisionName":"Wexford","code":"IE-WX"},"IE-WW":{"countryCode":"IE","subdivisionName":"Wicklow","code":"IE-WW"},"IL-D":{"countryCode":"IL","subdivisionName":"HaDarom","code":"IL-D"},"IL-M":{"countryCode":"IL","subdivisionName":"HaMerkaz","code":"IL-M"},"IL-Z":{"countryCode":"IL","subdivisionName":"HaTsafon","code":"IL-Z"},"IL-HA":{"countryCode":"IL","subdivisionName":"Hefa","code":"IL-HA"},"IL-TA":{"countryCode":"IL","subdivisionName":"Tel Aviv","code":"IL-TA"},"IL-JM":{"countryCode":"IL","subdivisionName":"Yerushalayim","code":"IL-JM"},"IN-AN":{"countryCode":"IN","subdivisionName":"Andaman and Nicobar Islands","code":"IN-AN"},"IN-AP":{"countryCode":"IN","subdivisionName":"Andhra Pradesh","code":"IN-AP"},"IN-AR":{"countryCode":"IN","subdivisionName":"Arunachal Pradesh","code":"IN-AR"},"IN-AS":{"countryCode":"IN","subdivisionName":"Assam","code":"IN-AS"},"IN-BR":{"countryCode":"IN","subdivisionName":"Bihar","code":"IN-BR"},"IN-CH":{"countryCode":"IN","subdivisionName":"Chandigarh","code":"IN-CH"},"IN-CT":{"countryCode":"IN","subdivisionName":"Chhattisgarh","code":"IN-CT"},"IN-DN":{"countryCode":"IN","subdivisionName":"Dadra and Nagar Haveli","code":"IN-DN"},"IN-DH":{"countryCode":"IN","subdivisionName":"Dadra and Nagar Haveli and Daman and Diu","code":"IN-DH"},"IN-DL":{"countryCode":"IN","subdivisionName":"Delhi","code":"IN-DL"},"IN-GA":{"countryCode":"IN","subdivisionName":"Goa","code":"IN-GA"},"IN-GJ":{"countryCode":"IN","subdivisionName":"Gujarat","code":"IN-GJ"},"IN-HR":{"countryCode":"IN","subdivisionName":"Haryana","code":"IN-HR"},"IN-HP":{"countryCode":"IN","subdivisionName":"Himachal Pradesh","code":"IN-HP"},"IN-JK":{"countryCode":"IN","subdivisionName":"Jammu and Kashmir","code":"IN-JK"},"IN-JH":{"countryCode":"IN","subdivisionName":"Jharkhand","code":"IN-JH"},"IN-KA":{"countryCode":"IN","subdivisionName":"Karnataka","code":"IN-KA"},"IN-KL":{"countryCode":"IN","subdivisionName":"Kerala","code":"IN-KL"},"IN-LD":{"countryCode":"IN","subdivisionName":"Lakshadweep","code":"IN-LD"},"IN-MP":{"countryCode":"IN","subdivisionName":"Madhya Pradesh","code":"IN-MP"},"IN-MH":{"countryCode":"IN","subdivisionName":"Maharashtra","code":"IN-MH"},"IN-MN":{"countryCode":"IN","subdivisionName":"Manipur","code":"IN-MN"},"IN-ML":{"countryCode":"IN","subdivisionName":"Meghalaya","code":"IN-ML"},"IN-MZ":{"countryCode":"IN","subdivisionName":"Mizoram","code":"IN-MZ"},"IN-NL":{"countryCode":"IN","subdivisionName":"Nagaland","code":"IN-NL"},"IN-OR":{"countryCode":"IN","subdivisionName":"Odisha","code":"IN-OR"},"IN-PY":{"countryCode":"IN","subdivisionName":"Puducherry","code":"IN-PY"},"IN-PB":{"countryCode":"IN","subdivisionName":"Punjab","code":"IN-PB"},"IN-RJ":{"countryCode":"IN","subdivisionName":"Rajasthan","code":"IN-RJ"},"IN-SK":{"countryCode":"IN","subdivisionName":"Sikkim","code":"IN-SK"},"IN-TN":{"countryCode":"IN","subdivisionName":"Tamil Nadu","code":"IN-TN"},"IN-TG":{"countryCode":"IN","subdivisionName":"Telangana","code":"IN-TG"},"IN-TR":{"countryCode":"IN","subdivisionName":"Tripura","code":"IN-TR"},"IN-UP":{"countryCode":"IN","subdivisionName":"Uttar Pradesh","code":"IN-UP"},"IN-UT":{"countryCode":"IN","subdivisionName":"Uttarakhand","code":"IN-UT"},"IN-WB":{"countryCode":"IN","subdivisionName":"West Bengal","code":"IN-WB"},"IQ-AN":{"countryCode":"IQ","subdivisionName":"Al Anbar","code":"IQ-AN"},"IQ-BA":{"countryCode":"IQ","subdivisionName":"Al Basrah","code":"IQ-BA"},"IQ-MU":{"countryCode":"IQ","subdivisionName":"Al Muthanna","code":"IQ-MU"},"IQ-QA":{"countryCode":"IQ","subdivisionName":"Al Qadisiyah","code":"IQ-QA"},"IQ-NA":{"countryCode":"IQ","subdivisionName":"An Najaf","code":"IQ-NA"},"IQ-AR":{"countryCode":"IQ","subdivisionName":"Arbil","code":"IQ-AR"},"IQ-SU":{"countryCode":"IQ","subdivisionName":"As Sulaymaniyah","code":"IQ-SU"},"IQ-BB":{"countryCode":"IQ","subdivisionName":"Babil","code":"IQ-BB"},"IQ-BG":{"countryCode":"IQ","subdivisionName":"Baghdad","code":"IQ-BG"},"IQ-DA":{"countryCode":"IQ","subdivisionName":"Dahuk","code":"IQ-DA"},"IQ-DQ":{"countryCode":"IQ","subdivisionName":"Dhi Qar","code":"IQ-DQ"},"IQ-DI":{"countryCode":"IQ","subdivisionName":"Diyala","code":"IQ-DI"},"IQ-KA":{"countryCode":"IQ","subdivisionName":"Karbala'","code":"IQ-KA"},"IQ-KI":{"countryCode":"IQ","subdivisionName":"Kirkuk","code":"IQ-KI"},"IQ-MA":{"countryCode":"IQ","subdivisionName":"Maysan","code":"IQ-MA"},"IQ-NI":{"countryCode":"IQ","subdivisionName":"Ninawa","code":"IQ-NI"},"IQ-SD":{"countryCode":"IQ","subdivisionName":"Salah ad Din","code":"IQ-SD"},"IQ-WA":{"countryCode":"IQ","subdivisionName":"Wasit","code":"IQ-WA"},"IR-30":{"countryCode":"IR","subdivisionName":"Alborz","code":"IR-30"},"IR-24":{"countryCode":"IR","subdivisionName":"Ardabil","code":"IR-24"},"IR-04":{"countryCode":"IR","subdivisionName":"Azarbayjan-e Gharbi","code":"IR-04"},"IR-03":{"countryCode":"IR","subdivisionName":"Azarbayjan-e Sharqi","code":"IR-03"},"IR-18":{"countryCode":"IR","subdivisionName":"Bushehr","code":"IR-18"},"IR-14":{"countryCode":"IR","subdivisionName":"Chahar Mahal va Bakhtiari","code":"IR-14"},"IR-10":{"countryCode":"IR","subdivisionName":"Esfahan","code":"IR-10"},"IR-07":{"countryCode":"IR","subdivisionName":"Fars","code":"IR-07"},"IR-01":{"countryCode":"IR","subdivisionName":"Gilan","code":"IR-01"},"IR-27":{"countryCode":"IR","subdivisionName":"Golestan","code":"IR-27"},"IR-13":{"countryCode":"IR","subdivisionName":"Hamadan","code":"IR-13"},"IR-22":{"countryCode":"IR","subdivisionName":"Hormozgan","code":"IR-22"},"IR-16":{"countryCode":"IR","subdivisionName":"Ilam","code":"IR-16"},"IR-08":{"countryCode":"IR","subdivisionName":"Kerman","code":"IR-08"},"IR-05":{"countryCode":"IR","subdivisionName":"Kermanshah","code":"IR-05"},"IR-29":{"countryCode":"IR","subdivisionName":"Khorasan-e Jonubi","code":"IR-29"},"IR-09":{"countryCode":"IR","subdivisionName":"Khorasan-e Razavi","code":"IR-09"},"IR-28":{"countryCode":"IR","subdivisionName":"Khorasan-e Shomali","code":"IR-28"},"IR-06":{"countryCode":"IR","subdivisionName":"Khuzestan","code":"IR-06"},"IR-17":{"countryCode":"IR","subdivisionName":"Kohgiluyeh va Bowyer Ahmad","code":"IR-17"},"IR-12":{"countryCode":"IR","subdivisionName":"Kordestan","code":"IR-12"},"IR-15":{"countryCode":"IR","subdivisionName":"Lorestan","code":"IR-15"},"IR-00":{"countryCode":"IR","subdivisionName":"Markazi","code":"IR-00"},"IR-02":{"countryCode":"IR","subdivisionName":"Mazandaran","code":"IR-02"},"IR-26":{"countryCode":"IR","subdivisionName":"Qazvin","code":"IR-26"},"IR-25":{"countryCode":"IR","subdivisionName":"Qom","code":"IR-25"},"IR-20":{"countryCode":"IR","subdivisionName":"Semnan","code":"IR-20"},"IR-11":{"countryCode":"IR","subdivisionName":"Sistan va Baluchestan","code":"IR-11"},"IR-23":{"countryCode":"IR","subdivisionName":"Tehran","code":"IR-23"},"IR-21":{"countryCode":"IR","subdivisionName":"Yazd","code":"IR-21"},"IR-19":{"countryCode":"IR","subdivisionName":"Zanjan","code":"IR-19"},"IS-7":{"countryCode":"IS","subdivisionName":"Austurland","code":"IS-7"},"IS-1":{"countryCode":"IS","subdivisionName":"Hofudborgarsvaedi","code":"IS-1"},"IS-6":{"countryCode":"IS","subdivisionName":"Nordurland eystra","code":"IS-6"},"IS-5":{"countryCode":"IS","subdivisionName":"Nordurland vestra","code":"IS-5"},"IS-8":{"countryCode":"IS","subdivisionName":"Sudurland","code":"IS-8"},"IS-2":{"countryCode":"IS","subdivisionName":"Sudurnes","code":"IS-2"},"IS-4":{"countryCode":"IS","subdivisionName":"Vestfirdir","code":"IS-4"},"IS-3":{"countryCode":"IS","subdivisionName":"Vesturland","code":"IS-3"},"IT-65":{"countryCode":"IT","subdivisionName":"Abruzzo","code":"IT-65"},"IT-77":{"countryCode":"IT","subdivisionName":"Basilicata","code":"IT-77"},"IT-78":{"countryCode":"IT","subdivisionName":"Calabria","code":"IT-78"},"IT-72":{"countryCode":"IT","subdivisionName":"Campania","code":"IT-72"},"IT-45":{"countryCode":"IT","subdivisionName":"Emilia-Romagna","code":"IT-45"},"IT-36":{"countryCode":"IT","subdivisionName":"Friuli-Venezia Giulia","code":"IT-36"},"IT-62":{"countryCode":"IT","subdivisionName":"Lazio","code":"IT-62"},"IT-42":{"countryCode":"IT","subdivisionName":"Liguria","code":"IT-42"},"IT-25":{"countryCode":"IT","subdivisionName":"Lombardia","code":"IT-25"},"IT-57":{"countryCode":"IT","subdivisionName":"Marche","code":"IT-57"},"IT-67":{"countryCode":"IT","subdivisionName":"Molise","code":"IT-67"},"IT-21":{"countryCode":"IT","subdivisionName":"Piemonte","code":"IT-21"},"IT-75":{"countryCode":"IT","subdivisionName":"Puglia","code":"IT-75"},"IT-88":{"countryCode":"IT","subdivisionName":"Sardegna","code":"IT-88"},"IT-82":{"countryCode":"IT","subdivisionName":"Sicilia","code":"IT-82"},"IT-52":{"countryCode":"IT","subdivisionName":"Toscana","code":"IT-52"},"IT-32":{"countryCode":"IT","subdivisionName":"Trentino-Alto Adige","code":"IT-32"},"IT-55":{"countryCode":"IT","subdivisionName":"Umbria","code":"IT-55"},"IT-23":{"countryCode":"IT","subdivisionName":"Valle d'Aosta","code":"IT-23"},"IT-34":{"countryCode":"IT","subdivisionName":"Veneto","code":"IT-34"},"JM-13":{"countryCode":"JM","subdivisionName":"Clarendon","code":"JM-13"},"JM-09":{"countryCode":"JM","subdivisionName":"Hanover","code":"JM-09"},"JM-01":{"countryCode":"JM","subdivisionName":"Kingston","code":"JM-01"},"JM-12":{"countryCode":"JM","subdivisionName":"Manchester","code":"JM-12"},"JM-04":{"countryCode":"JM","subdivisionName":"Portland","code":"JM-04"},"JM-02":{"countryCode":"JM","subdivisionName":"Saint Andrew","code":"JM-02"},"JM-06":{"countryCode":"JM","subdivisionName":"Saint Ann","code":"JM-06"},"JM-14":{"countryCode":"JM","subdivisionName":"Saint Catherine","code":"JM-14"},"JM-11":{"countryCode":"JM","subdivisionName":"Saint Elizabeth","code":"JM-11"},"JM-08":{"countryCode":"JM","subdivisionName":"Saint James","code":"JM-08"},"JM-05":{"countryCode":"JM","subdivisionName":"Saint Mary","code":"JM-05"},"JM-03":{"countryCode":"JM","subdivisionName":"Saint Thomas","code":"JM-03"},"JM-07":{"countryCode":"JM","subdivisionName":"Trelawny","code":"JM-07"},"JM-10":{"countryCode":"JM","subdivisionName":"Westmoreland","code":"JM-10"},"JO-AJ":{"countryCode":"JO","subdivisionName":"'Ajlun","code":"JO-AJ"},"JO-AQ":{"countryCode":"JO","subdivisionName":"Al 'Aqabah","code":"JO-AQ"},"JO-AM":{"countryCode":"JO","subdivisionName":"Al 'Asimah","code":"JO-AM"},"JO-BA":{"countryCode":"JO","subdivisionName":"Al Balqa'","code":"JO-BA"},"JO-KA":{"countryCode":"JO","subdivisionName":"Al Karak","code":"JO-KA"},"JO-MA":{"countryCode":"JO","subdivisionName":"Al Mafraq","code":"JO-MA"},"JO-AT":{"countryCode":"JO","subdivisionName":"At Tafilah","code":"JO-AT"},"JO-AZ":{"countryCode":"JO","subdivisionName":"Az Zarqa'","code":"JO-AZ"},"JO-IR":{"countryCode":"JO","subdivisionName":"Irbid","code":"JO-IR"},"JO-JA":{"countryCode":"JO","subdivisionName":"Jarash","code":"JO-JA"},"JO-MN":{"countryCode":"JO","subdivisionName":"Ma'an","code":"JO-MN"},"JO-MD":{"countryCode":"JO","subdivisionName":"Madaba","code":"JO-MD"},"JP-23":{"countryCode":"JP","subdivisionName":"Aichi","code":"JP-23"},"JP-05":{"countryCode":"JP","subdivisionName":"Akita","code":"JP-05"},"JP-02":{"countryCode":"JP","subdivisionName":"Aomori","code":"JP-02"},"JP-12":{"countryCode":"JP","subdivisionName":"Chiba","code":"JP-12"},"JP-38":{"countryCode":"JP","subdivisionName":"Ehime","code":"JP-38"},"JP-18":{"countryCode":"JP","subdivisionName":"Fukui","code":"JP-18"},"JP-40":{"countryCode":"JP","subdivisionName":"Fukuoka","code":"JP-40"},"JP-07":{"countryCode":"JP","subdivisionName":"Fukushima","code":"JP-07"},"JP-21":{"countryCode":"JP","subdivisionName":"Gifu","code":"JP-21"},"JP-10":{"countryCode":"JP","subdivisionName":"Gunma","code":"JP-10"},"JP-34":{"countryCode":"JP","subdivisionName":"Hiroshima","code":"JP-34"},"JP-01":{"countryCode":"JP","subdivisionName":"Hokkaido","code":"JP-01"},"JP-28":{"countryCode":"JP","subdivisionName":"Hyogo","code":"JP-28"},"JP-08":{"countryCode":"JP","subdivisionName":"Ibaraki","code":"JP-08"},"JP-17":{"countryCode":"JP","subdivisionName":"Ishikawa","code":"JP-17"},"JP-03":{"countryCode":"JP","subdivisionName":"Iwate","code":"JP-03"},"JP-37":{"countryCode":"JP","subdivisionName":"Kagawa","code":"JP-37"},"JP-46":{"countryCode":"JP","subdivisionName":"Kagoshima","code":"JP-46"},"JP-14":{"countryCode":"JP","subdivisionName":"Kanagawa","code":"JP-14"},"JP-39":{"countryCode":"JP","subdivisionName":"Kochi","code":"JP-39"},"JP-43":{"countryCode":"JP","subdivisionName":"Kumamoto","code":"JP-43"},"JP-26":{"countryCode":"JP","subdivisionName":"Kyoto","code":"JP-26"},"JP-24":{"countryCode":"JP","subdivisionName":"Mie","code":"JP-24"},"JP-04":{"countryCode":"JP","subdivisionName":"Miyagi","code":"JP-04"},"JP-45":{"countryCode":"JP","subdivisionName":"Miyazaki","code":"JP-45"},"JP-20":{"countryCode":"JP","subdivisionName":"Nagano","code":"JP-20"},"JP-42":{"countryCode":"JP","subdivisionName":"Nagasaki","code":"JP-42"},"JP-29":{"countryCode":"JP","subdivisionName":"Nara","code":"JP-29"},"JP-15":{"countryCode":"JP","subdivisionName":"Niigata","code":"JP-15"},"JP-44":{"countryCode":"JP","subdivisionName":"Oita","code":"JP-44"},"JP-33":{"countryCode":"JP","subdivisionName":"Okayama","code":"JP-33"},"JP-47":{"countryCode":"JP","subdivisionName":"Okinawa","code":"JP-47"},"JP-27":{"countryCode":"JP","subdivisionName":"Osaka","code":"JP-27"},"JP-41":{"countryCode":"JP","subdivisionName":"Saga","code":"JP-41"},"JP-11":{"countryCode":"JP","subdivisionName":"Saitama","code":"JP-11"},"JP-25":{"countryCode":"JP","subdivisionName":"Shiga","code":"JP-25"},"JP-32":{"countryCode":"JP","subdivisionName":"Shimane","code":"JP-32"},"JP-22":{"countryCode":"JP","subdivisionName":"Shizuoka","code":"JP-22"},"JP-09":{"countryCode":"JP","subdivisionName":"Tochigi","code":"JP-09"},"JP-36":{"countryCode":"JP","subdivisionName":"Tokushima","code":"JP-36"},"JP-13":{"countryCode":"JP","subdivisionName":"Tokyo","code":"JP-13"},"JP-31":{"countryCode":"JP","subdivisionName":"Tottori","code":"JP-31"},"JP-16":{"countryCode":"JP","subdivisionName":"Toyama","code":"JP-16"},"JP-30":{"countryCode":"JP","subdivisionName":"Wakayama","code":"JP-30"},"JP-06":{"countryCode":"JP","subdivisionName":"Yamagata","code":"JP-06"},"JP-35":{"countryCode":"JP","subdivisionName":"Yamaguchi","code":"JP-35"},"JP-19":{"countryCode":"JP","subdivisionName":"Yamanashi","code":"JP-19"},"KE-01":{"countryCode":"KE","subdivisionName":"Baringo","code":"KE-01"},"KE-02":{"countryCode":"KE","subdivisionName":"Bomet","code":"KE-02"},"KE-03":{"countryCode":"KE","subdivisionName":"Bungoma","code":"KE-03"},"KE-04":{"countryCode":"KE","subdivisionName":"Busia","code":"KE-04"},"KE-05":{"countryCode":"KE","subdivisionName":"Elgeyo/Marakwet","code":"KE-05"},"KE-06":{"countryCode":"KE","subdivisionName":"Embu","code":"KE-06"},"KE-07":{"countryCode":"KE","subdivisionName":"Garissa","code":"KE-07"},"KE-08":{"countryCode":"KE","subdivisionName":"Homa Bay","code":"KE-08"},"KE-09":{"countryCode":"KE","subdivisionName":"Isiolo","code":"KE-09"},"KE-10":{"countryCode":"KE","subdivisionName":"Kajiado","code":"KE-10"},"KE-11":{"countryCode":"KE","subdivisionName":"Kakamega","code":"KE-11"},"KE-12":{"countryCode":"KE","subdivisionName":"Kericho","code":"KE-12"},"KE-13":{"countryCode":"KE","subdivisionName":"Kiambu","code":"KE-13"},"KE-14":{"countryCode":"KE","subdivisionName":"Kilifi","code":"KE-14"},"KE-15":{"countryCode":"KE","subdivisionName":"Kirinyaga","code":"KE-15"},"KE-16":{"countryCode":"KE","subdivisionName":"Kisii","code":"KE-16"},"KE-17":{"countryCode":"KE","subdivisionName":"Kisumu","code":"KE-17"},"KE-18":{"countryCode":"KE","subdivisionName":"Kitui","code":"KE-18"},"KE-19":{"countryCode":"KE","subdivisionName":"Kwale","code":"KE-19"},"KE-20":{"countryCode":"KE","subdivisionName":"Laikipia","code":"KE-20"},"KE-21":{"countryCode":"KE","subdivisionName":"Lamu","code":"KE-21"},"KE-22":{"countryCode":"KE","subdivisionName":"Machakos","code":"KE-22"},"KE-23":{"countryCode":"KE","subdivisionName":"Makueni","code":"KE-23"},"KE-24":{"countryCode":"KE","subdivisionName":"Mandera","code":"KE-24"},"KE-25":{"countryCode":"KE","subdivisionName":"Marsabit","code":"KE-25"},"KE-26":{"countryCode":"KE","subdivisionName":"Meru","code":"KE-26"},"KE-27":{"countryCode":"KE","subdivisionName":"Migori","code":"KE-27"},"KE-28":{"countryCode":"KE","subdivisionName":"Mombasa","code":"KE-28"},"KE-29":{"countryCode":"KE","subdivisionName":"Murang'a","code":"KE-29"},"KE-30":{"countryCode":"KE","subdivisionName":"Nairobi City","code":"KE-30"},"KE-31":{"countryCode":"KE","subdivisionName":"Nakuru","code":"KE-31"},"KE-32":{"countryCode":"KE","subdivisionName":"Nandi","code":"KE-32"},"KE-33":{"countryCode":"KE","subdivisionName":"Narok","code":"KE-33"},"KE-34":{"countryCode":"KE","subdivisionName":"Nyamira","code":"KE-34"},"KE-35":{"countryCode":"KE","subdivisionName":"Nyandarua","code":"KE-35"},"KE-36":{"countryCode":"KE","subdivisionName":"Nyeri","code":"KE-36"},"KE-37":{"countryCode":"KE","subdivisionName":"Samburu","code":"KE-37"},"KE-38":{"countryCode":"KE","subdivisionName":"Siaya","code":"KE-38"},"KE-39":{"countryCode":"KE","subdivisionName":"Taita/Taveta","code":"KE-39"},"KE-40":{"countryCode":"KE","subdivisionName":"Tana River","code":"KE-40"},"KE-41":{"countryCode":"KE","subdivisionName":"Tharaka-Nithi","code":"KE-41"},"KE-42":{"countryCode":"KE","subdivisionName":"Trans Nzoia","code":"KE-42"},"KE-43":{"countryCode":"KE","subdivisionName":"Turkana","code":"KE-43"},"KE-44":{"countryCode":"KE","subdivisionName":"Uasin Gishu","code":"KE-44"},"KE-45":{"countryCode":"KE","subdivisionName":"Vihiga","code":"KE-45"},"KE-46":{"countryCode":"KE","subdivisionName":"Wajir","code":"KE-46"},"KE-47":{"countryCode":"KE","subdivisionName":"West Pokot","code":"KE-47"},"KG-B":{"countryCode":"KG","subdivisionName":"Batken","code":"KG-B"},"KG-GB":{"countryCode":"KG","subdivisionName":"Bishkek Shaary","code":"KG-GB"},"KG-C":{"countryCode":"KG","subdivisionName":"Chuy","code":"KG-C"},"KG-J":{"countryCode":"KG","subdivisionName":"Jalal-Abad","code":"KG-J"},"KG-N":{"countryCode":"KG","subdivisionName":"Naryn","code":"KG-N"},"KG-GO":{"countryCode":"KG","subdivisionName":"Osh Shaary","code":"KG-GO"},"KG-T":{"countryCode":"KG","subdivisionName":"Talas","code":"KG-T"},"KG-Y":{"countryCode":"KG","subdivisionName":"Ysyk-Kol","code":"KG-Y"},"KH-2":{"countryCode":"KH","subdivisionName":"Baat Dambang","code":"KH-2"},"KH-1":{"countryCode":"KH","subdivisionName":"Banteay Mean Choay","code":"KH-1"},"KH-23":{"countryCode":"KH","subdivisionName":"Kaeb","code":"KH-23"},"KH-3":{"countryCode":"KH","subdivisionName":"Kampong Chaam","code":"KH-3"},"KH-4":{"countryCode":"KH","subdivisionName":"Kampong Chhnang","code":"KH-4"},"KH-5":{"countryCode":"KH","subdivisionName":"Kampong Spueu","code":"KH-5"},"KH-6":{"countryCode":"KH","subdivisionName":"Kampong Thum","code":"KH-6"},"KH-7":{"countryCode":"KH","subdivisionName":"Kampot","code":"KH-7"},"KH-8":{"countryCode":"KH","subdivisionName":"Kandaal","code":"KH-8"},"KH-10":{"countryCode":"KH","subdivisionName":"Kracheh","code":"KH-10"},"KH-11":{"countryCode":"KH","subdivisionName":"Mondol Kiri","code":"KH-11"},"KH-24":{"countryCode":"KH","subdivisionName":"Pailin","code":"KH-24"},"KH-12":{"countryCode":"KH","subdivisionName":"Phnom Penh","code":"KH-12"},"KH-15":{"countryCode":"KH","subdivisionName":"Pousaat","code":"KH-15"},"KH-18":{"countryCode":"KH","subdivisionName":"Preah Sihanouk","code":"KH-18"},"KH-13":{"countryCode":"KH","subdivisionName":"Preah Vihear","code":"KH-13"},"KH-14":{"countryCode":"KH","subdivisionName":"Prey Veaeng","code":"KH-14"},"KH-17":{"countryCode":"KH","subdivisionName":"Siem Reab","code":"KH-17"},"KH-19":{"countryCode":"KH","subdivisionName":"Stueng Traeng","code":"KH-19"},"KH-20":{"countryCode":"KH","subdivisionName":"Svaay Rieng","code":"KH-20"},"KH-21":{"countryCode":"KH","subdivisionName":"Taakaev","code":"KH-21"},"KI-G":{"countryCode":"KI","subdivisionName":"Gilbert Islands","code":"KI-G"},"KI-L":{"countryCode":"KI","subdivisionName":"Line Islands","code":"KI-L"},"KM-G":{"countryCode":"KM","subdivisionName":"Grande Comore","code":"KM-G"},"KM-M":{"countryCode":"KM","subdivisionName":"Moheli","code":"KM-M"},"KN-01":{"countryCode":"KN","subdivisionName":"Christ Church Nichola Town","code":"KN-01"},"KN-02":{"countryCode":"KN","subdivisionName":"Saint Anne Sandy Point","code":"KN-02"},"KN-03":{"countryCode":"KN","subdivisionName":"Saint George Basseterre","code":"KN-03"},"KN-05":{"countryCode":"KN","subdivisionName":"Saint James Windward","code":"KN-05"},"KN-06":{"countryCode":"KN","subdivisionName":"Saint John Capisterre","code":"KN-06"},"KN-07":{"countryCode":"KN","subdivisionName":"Saint John Figtree","code":"KN-07"},"KN-08":{"countryCode":"KN","subdivisionName":"Saint Mary Cayon","code":"KN-08"},"KN-09":{"countryCode":"KN","subdivisionName":"Saint Paul Capisterre","code":"KN-09"},"KN-10":{"countryCode":"KN","subdivisionName":"Saint Paul Charlestown","code":"KN-10"},"KN-11":{"countryCode":"KN","subdivisionName":"Saint Peter Basseterre","code":"KN-11"},"KN-12":{"countryCode":"KN","subdivisionName":"Saint Thomas Lowland","code":"KN-12"},"KN-13":{"countryCode":"KN","subdivisionName":"Saint Thomas Middle Island","code":"KN-13"},"KN-15":{"countryCode":"KN","subdivisionName":"Trinity Palmetto Point","code":"KN-15"},"KP-01":{"countryCode":"KP","subdivisionName":"P'yongyang","code":"KP-01"},"KR-26":{"countryCode":"KR","subdivisionName":"Busan-gwangyeoksi","code":"KR-26"},"KR-43":{"countryCode":"KR","subdivisionName":"Chungcheongbuk-do","code":"KR-43"},"KR-44":{"countryCode":"KR","subdivisionName":"Chungcheongnam-do","code":"KR-44"},"KR-27":{"countryCode":"KR","subdivisionName":"Daegu-gwangyeoksi","code":"KR-27"},"KR-30":{"countryCode":"KR","subdivisionName":"Daejeon-gwangyeoksi","code":"KR-30"},"KR-42":{"countryCode":"KR","subdivisionName":"Gangwon-do","code":"KR-42"},"KR-29":{"countryCode":"KR","subdivisionName":"Gwangju-gwangyeoksi","code":"KR-29"},"KR-41":{"countryCode":"KR","subdivisionName":"Gyeonggi-do","code":"KR-41"},"KR-47":{"countryCode":"KR","subdivisionName":"Gyeongsangbuk-do","code":"KR-47"},"KR-48":{"countryCode":"KR","subdivisionName":"Gyeongsangnam-do","code":"KR-48"},"KR-28":{"countryCode":"KR","subdivisionName":"Incheon-gwangyeoksi","code":"KR-28"},"KR-49":{"countryCode":"KR","subdivisionName":"Jeju-teukbyeoljachido","code":"KR-49"},"KR-45":{"countryCode":"KR","subdivisionName":"Jeollabuk-do","code":"KR-45"},"KR-46":{"countryCode":"KR","subdivisionName":"Jeollanam-do","code":"KR-46"},"KR-11":{"countryCode":"KR","subdivisionName":"Seoul-teukbyeolsi","code":"KR-11"},"KR-31":{"countryCode":"KR","subdivisionName":"Ulsan-gwangyeoksi","code":"KR-31"},"KW-KU":{"countryCode":"KW","subdivisionName":"Al 'Asimah","code":"KW-KU"},"KW-AH":{"countryCode":"KW","subdivisionName":"Al Ahmadi","code":"KW-AH"},"KW-FA":{"countryCode":"KW","subdivisionName":"Al Farwaniyah","code":"KW-FA"},"KW-JA":{"countryCode":"KW","subdivisionName":"Al Jahra'","code":"KW-JA"},"KW-HA":{"countryCode":"KW","subdivisionName":"Hawalli","code":"KW-HA"},"KW-MU":{"countryCode":"KW","subdivisionName":"Mubarak al Kabir","code":"KW-MU"},"KZ-10":{"countryCode":"KZ","subdivisionName":"Abay oblysy","code":"KZ-10"},"KZ-75":{"countryCode":"KZ","subdivisionName":"Almaty","code":"KZ-75"},"KZ-19":{"countryCode":"KZ","subdivisionName":"Almaty oblysy","code":"KZ-19"},"KZ-11":{"countryCode":"KZ","subdivisionName":"Aqmola oblysy","code":"KZ-11"},"KZ-15":{"countryCode":"KZ","subdivisionName":"Aqtobe oblysy","code":"KZ-15"},"KZ-71":{"countryCode":"KZ","subdivisionName":"Astana","code":"KZ-71"},"KZ-23":{"countryCode":"KZ","subdivisionName":"Atyrau oblysy","code":"KZ-23"},"KZ-27":{"countryCode":"KZ","subdivisionName":"Batys Qazaqstan oblysy","code":"KZ-27"},"KZ-47":{"countryCode":"KZ","subdivisionName":"Mangghystau oblysy","code":"KZ-47"},"KZ-55":{"countryCode":"KZ","subdivisionName":"Pavlodar oblysy","code":"KZ-55"},"KZ-35":{"countryCode":"KZ","subdivisionName":"Qaraghandy oblysy","code":"KZ-35"},"KZ-39":{"countryCode":"KZ","subdivisionName":"Qostanay oblysy","code":"KZ-39"},"KZ-43":{"countryCode":"KZ","subdivisionName":"Qyzylorda oblysy","code":"KZ-43"},"KZ-63":{"countryCode":"KZ","subdivisionName":"Shyghys Qazaqstan oblysy","code":"KZ-63"},"KZ-79":{"countryCode":"KZ","subdivisionName":"Shymkent","code":"KZ-79"},"KZ-59":{"countryCode":"KZ","subdivisionName":"Soltustik Qazaqstan oblysy","code":"KZ-59"},"KZ-61":{"countryCode":"KZ","subdivisionName":"Turkistan oblysy","code":"KZ-61"},"KZ-62":{"countryCode":"KZ","subdivisionName":"Ulytau oblysy","code":"KZ-62"},"KZ-31":{"countryCode":"KZ","subdivisionName":"Zhambyl oblysy","code":"KZ-31"},"KZ-33":{"countryCode":"KZ","subdivisionName":"Zhetisu oblysy","code":"KZ-33"},"LA-AT":{"countryCode":"LA","subdivisionName":"Attapu","code":"LA-AT"},"LA-BK":{"countryCode":"LA","subdivisionName":"Bokeo","code":"LA-BK"},"LA-BL":{"countryCode":"LA","subdivisionName":"Bolikhamxai","code":"LA-BL"},"LA-CH":{"countryCode":"LA","subdivisionName":"Champasak","code":"LA-CH"},"LA-KH":{"countryCode":"LA","subdivisionName":"Khammouan","code":"LA-KH"},"LA-LP":{"countryCode":"LA","subdivisionName":"Louangphabang","code":"LA-LP"},"LA-OU":{"countryCode":"LA","subdivisionName":"Oudomxai","code":"LA-OU"},"LA-PH":{"countryCode":"LA","subdivisionName":"Phongsali","code":"LA-PH"},"LA-SV":{"countryCode":"LA","subdivisionName":"Savannakhet","code":"LA-SV"},"LA-VI":{"countryCode":"LA","subdivisionName":"Viangchan","code":"LA-VI"},"LA-XA":{"countryCode":"LA","subdivisionName":"Xaignabouli","code":"LA-XA"},"LA-XE":{"countryCode":"LA","subdivisionName":"Xekong","code":"LA-XE"},"LA-XI":{"countryCode":"LA","subdivisionName":"Xiangkhouang","code":"LA-XI"},"LB-AK":{"countryCode":"LB","subdivisionName":"Aakkar","code":"LB-AK"},"LB-BH":{"countryCode":"LB","subdivisionName":"Baalbek-Hermel","code":"LB-BH"},"LB-BI":{"countryCode":"LB","subdivisionName":"Beqaa","code":"LB-BI"},"LB-BA":{"countryCode":"LB","subdivisionName":"Beyrouth","code":"LB-BA"},"LB-AS":{"countryCode":"LB","subdivisionName":"Liban-Nord","code":"LB-AS"},"LB-JA":{"countryCode":"LB","subdivisionName":"Liban-Sud","code":"LB-JA"},"LB-JL":{"countryCode":"LB","subdivisionName":"Mont-Liban","code":"LB-JL"},"LB-NA":{"countryCode":"LB","subdivisionName":"Nabatiye","code":"LB-NA"},"LC-01":{"countryCode":"LC","subdivisionName":"Anse la Raye","code":"LC-01"},"LC-02":{"countryCode":"LC","subdivisionName":"Castries","code":"LC-02"},"LC-03":{"countryCode":"LC","subdivisionName":"Choiseul","code":"LC-03"},"LC-05":{"countryCode":"LC","subdivisionName":"Dennery","code":"LC-05"},"LC-06":{"countryCode":"LC","subdivisionName":"Gros Islet","code":"LC-06"},"LC-07":{"countryCode":"LC","subdivisionName":"Laborie","code":"LC-07"},"LC-08":{"countryCode":"LC","subdivisionName":"Micoud","code":"LC-08"},"LC-10":{"countryCode":"LC","subdivisionName":"Soufriere","code":"LC-10"},"LC-11":{"countryCode":"LC","subdivisionName":"Vieux Fort","code":"LC-11"},"LI-01":{"countryCode":"LI","subdivisionName":"Balzers","code":"LI-01"},"LI-02":{"countryCode":"LI","subdivisionName":"Eschen","code":"LI-02"},"LI-03":{"countryCode":"LI","subdivisionName":"Gamprin","code":"LI-03"},"LI-04":{"countryCode":"LI","subdivisionName":"Mauren","code":"LI-04"},"LI-06":{"countryCode":"LI","subdivisionName":"Ruggell","code":"LI-06"},"LI-07":{"countryCode":"LI","subdivisionName":"Schaan","code":"LI-07"},"LI-09":{"countryCode":"LI","subdivisionName":"Triesen","code":"LI-09"},"LI-10":{"countryCode":"LI","subdivisionName":"Triesenberg","code":"LI-10"},"LI-11":{"countryCode":"LI","subdivisionName":"Vaduz","code":"LI-11"},"LK-2":{"countryCode":"LK","subdivisionName":"Central Province","code":"LK-2"},"LK-5":{"countryCode":"LK","subdivisionName":"Eastern Province","code":"LK-5"},"LK-7":{"countryCode":"LK","subdivisionName":"North Central Province","code":"LK-7"},"LK-6":{"countryCode":"LK","subdivisionName":"North Western Province","code":"LK-6"},"LK-4":{"countryCode":"LK","subdivisionName":"Northern Province","code":"LK-4"},"LK-9":{"countryCode":"LK","subdivisionName":"Sabaragamuwa Province","code":"LK-9"},"LK-3":{"countryCode":"LK","subdivisionName":"Southern Province","code":"LK-3"},"LK-8":{"countryCode":"LK","subdivisionName":"Uva Province","code":"LK-8"},"LK-1":{"countryCode":"LK","subdivisionName":"Western Province","code":"LK-1"},"LR-BM":{"countryCode":"LR","subdivisionName":"Bomi","code":"LR-BM"},"LR-BG":{"countryCode":"LR","subdivisionName":"Bong","code":"LR-BG"},"LR-CM":{"countryCode":"LR","subdivisionName":"Grand Cape Mount","code":"LR-CM"},"LR-GG":{"countryCode":"LR","subdivisionName":"Grand Gedeh","code":"LR-GG"},"LR-MG":{"countryCode":"LR","subdivisionName":"Margibi","code":"LR-MG"},"LR-MO":{"countryCode":"LR","subdivisionName":"Montserrado","code":"LR-MO"},"LR-RI":{"countryCode":"LR","subdivisionName":"River Cess","code":"LR-RI"},"LR-SI":{"countryCode":"LR","subdivisionName":"Sinoe","code":"LR-SI"},"LS-D":{"countryCode":"LS","subdivisionName":"Berea","code":"LS-D"},"LS-B":{"countryCode":"LS","subdivisionName":"Botha-Bothe","code":"LS-B"},"LS-C":{"countryCode":"LS","subdivisionName":"Leribe","code":"LS-C"},"LS-E":{"countryCode":"LS","subdivisionName":"Mafeteng","code":"LS-E"},"LS-A":{"countryCode":"LS","subdivisionName":"Maseru","code":"LS-A"},"LS-F":{"countryCode":"LS","subdivisionName":"Mohale's Hoek","code":"LS-F"},"LS-J":{"countryCode":"LS","subdivisionName":"Mokhotlong","code":"LS-J"},"LS-H":{"countryCode":"LS","subdivisionName":"Qacha's Nek","code":"LS-H"},"LS-G":{"countryCode":"LS","subdivisionName":"Quthing","code":"LS-G"},"LS-K":{"countryCode":"LS","subdivisionName":"Thaba-Tseka","code":"LS-K"},"LT-AL":{"countryCode":"LT","subdivisionName":"Alytaus apskritis","code":"LT-AL"},"LT-KU":{"countryCode":"LT","subdivisionName":"Kauno apskritis","code":"LT-KU"},"LT-KL":{"countryCode":"LT","subdivisionName":"Klaipedos apskritis","code":"LT-KL"},"LT-MR":{"countryCode":"LT","subdivisionName":"Marijampoles apskritis","code":"LT-MR"},"LT-PN":{"countryCode":"LT","subdivisionName":"Panevezio apskritis","code":"LT-PN"},"LT-SA":{"countryCode":"LT","subdivisionName":"Siauliu apskritis","code":"LT-SA"},"LT-TA":{"countryCode":"LT","subdivisionName":"Taurages apskritis","code":"LT-TA"},"LT-TE":{"countryCode":"LT","subdivisionName":"Telsiu apskritis","code":"LT-TE"},"LT-UT":{"countryCode":"LT","subdivisionName":"Utenos apskritis","code":"LT-UT"},"LT-VL":{"countryCode":"LT","subdivisionName":"Vilniaus apskritis","code":"LT-VL"},"LU-CA":{"countryCode":"LU","subdivisionName":"Capellen","code":"LU-CA"},"LU-CL":{"countryCode":"LU","subdivisionName":"Clervaux","code":"LU-CL"},"LU-DI":{"countryCode":"LU","subdivisionName":"Diekirch","code":"LU-DI"},"LU-EC":{"countryCode":"LU","subdivisionName":"Echternach","code":"LU-EC"},"LU-ES":{"countryCode":"LU","subdivisionName":"Esch-sur-Alzette","code":"LU-ES"},"LU-GR":{"countryCode":"LU","subdivisionName":"Grevenmacher","code":"LU-GR"},"LU-LU":{"countryCode":"LU","subdivisionName":"Luxembourg","code":"LU-LU"},"LU-ME":{"countryCode":"LU","subdivisionName":"Mersch","code":"LU-ME"},"LU-RD":{"countryCode":"LU","subdivisionName":"Redange","code":"LU-RD"},"LU-RM":{"countryCode":"LU","subdivisionName":"Remich","code":"LU-RM"},"LU-VD":{"countryCode":"LU","subdivisionName":"Vianden","code":"LU-VD"},"LU-WI":{"countryCode":"LU","subdivisionName":"Wiltz","code":"LU-WI"},"LV-011":{"countryCode":"LV","subdivisionName":"Adazu novads","code":"LV-011"},"LV-002":{"countryCode":"LV","subdivisionName":"Aizkraukles novads","code":"LV-002"},"LV-007":{"countryCode":"LV","subdivisionName":"Aluksnes novads","code":"LV-007"},"LV-111":{"countryCode":"LV","subdivisionName":"Augsdaugavas novads","code":"LV-111"},"LV-015":{"countryCode":"LV","subdivisionName":"Balvu novads","code":"LV-015"},"LV-016":{"countryCode":"LV","subdivisionName":"Bauskas novads","code":"LV-016"},"LV-022":{"countryCode":"LV","subdivisionName":"Cesu novads","code":"LV-022"},"LV-DGV":{"countryCode":"LV","subdivisionName":"Daugavpils","code":"LV-DGV"},"LV-112":{"countryCode":"LV","subdivisionName":"Dienvidkurzemes novads","code":"LV-112"},"LV-026":{"countryCode":"LV","subdivisionName":"Dobeles novads","code":"LV-026"},"LV-033":{"countryCode":"LV","subdivisionName":"Gulbenes novads","code":"LV-033"},"LV-042":{"countryCode":"LV","subdivisionName":"Jekabpils novads","code":"LV-042"},"LV-JEL":{"countryCode":"LV","subdivisionName":"Jelgava","code":"LV-JEL"},"LV-041":{"countryCode":"LV","subdivisionName":"Jelgavas novads","code":"LV-041"},"LV-JUR":{"countryCode":"LV","subdivisionName":"Jurmala","code":"LV-JUR"},"LV-052":{"countryCode":"LV","subdivisionName":"Kekavas novads","code":"LV-052"},"LV-047":{"countryCode":"LV","subdivisionName":"Kraslavas novads","code":"LV-047"},"LV-050":{"countryCode":"LV","subdivisionName":"Kuldigas novads","code":"LV-050"},"LV-LPX":{"countryCode":"LV","subdivisionName":"Liepaja","code":"LV-LPX"},"LV-054":{"countryCode":"LV","subdivisionName":"Limbazu novads","code":"LV-054"},"LV-056":{"countryCode":"LV","subdivisionName":"Livanu novads","code":"LV-056"},"LV-058":{"countryCode":"LV","subdivisionName":"Ludzas novads","code":"LV-058"},"LV-059":{"countryCode":"LV","subdivisionName":"Madonas novads","code":"LV-059"},"LV-062":{"countryCode":"LV","subdivisionName":"Marupes novads","code":"LV-062"},"LV-067":{"countryCode":"LV","subdivisionName":"Ogres novads","code":"LV-067"},"LV-068":{"countryCode":"LV","subdivisionName":"Olaines novads","code":"LV-068"},"LV-073":{"countryCode":"LV","subdivisionName":"Preilu novads","code":"LV-073"},"LV-077":{"countryCode":"LV","subdivisionName":"Rezeknes novads","code":"LV-077"},"LV-RIX":{"countryCode":"LV","subdivisionName":"Riga","code":"LV-RIX"},"LV-080":{"countryCode":"LV","subdivisionName":"Ropazu novads","code":"LV-080"},"LV-087":{"countryCode":"LV","subdivisionName":"Salaspils novads","code":"LV-087"},"LV-088":{"countryCode":"LV","subdivisionName":"Saldus novads","code":"LV-088"},"LV-089":{"countryCode":"LV","subdivisionName":"Saulkrastu novads","code":"LV-089"},"LV-091":{"countryCode":"LV","subdivisionName":"Siguldas novads","code":"LV-091"},"LV-094":{"countryCode":"LV","subdivisionName":"Smiltenes novads","code":"LV-094"},"LV-097":{"countryCode":"LV","subdivisionName":"Talsu novads","code":"LV-097"},"LV-099":{"countryCode":"LV","subdivisionName":"Tukuma novads","code":"LV-099"},"LV-101":{"countryCode":"LV","subdivisionName":"Valkas novads","code":"LV-101"},"LV-113":{"countryCode":"LV","subdivisionName":"Valmieras novads","code":"LV-113"},"LV-102":{"countryCode":"LV","subdivisionName":"Varaklanu novads","code":"LV-102"},"LV-106":{"countryCode":"LV","subdivisionName":"Ventspils novads","code":"LV-106"},"LY-BU":{"countryCode":"LY","subdivisionName":"Al Butnan","code":"LY-BU"},"LY-JA":{"countryCode":"LY","subdivisionName":"Al Jabal al Akhdar","code":"LY-JA"},"LY-JG":{"countryCode":"LY","subdivisionName":"Al Jabal al Gharbi","code":"LY-JG"},"LY-JI":{"countryCode":"LY","subdivisionName":"Al Jafarah","code":"LY-JI"},"LY-JU":{"countryCode":"LY","subdivisionName":"Al Jufrah","code":"LY-JU"},"LY-KF":{"countryCode":"LY","subdivisionName":"Al Kufrah","code":"LY-KF"},"LY-MJ":{"countryCode":"LY","subdivisionName":"Al Marj","code":"LY-MJ"},"LY-MB":{"countryCode":"LY","subdivisionName":"Al Marqab","code":"LY-MB"},"LY-WA":{"countryCode":"LY","subdivisionName":"Al Wahat","code":"LY-WA"},"LY-NQ":{"countryCode":"LY","subdivisionName":"An Nuqat al Khams","code":"LY-NQ"},"LY-ZA":{"countryCode":"LY","subdivisionName":"Az Zawiyah","code":"LY-ZA"},"LY-BA":{"countryCode":"LY","subdivisionName":"Banghazi","code":"LY-BA"},"LY-DR":{"countryCode":"LY","subdivisionName":"Darnah","code":"LY-DR"},"LY-MI":{"countryCode":"LY","subdivisionName":"Misratah","code":"LY-MI"},"LY-MQ":{"countryCode":"LY","subdivisionName":"Murzuq","code":"LY-MQ"},"LY-NL":{"countryCode":"LY","subdivisionName":"Nalut","code":"LY-NL"},"LY-SB":{"countryCode":"LY","subdivisionName":"Sabha","code":"LY-SB"},"LY-SR":{"countryCode":"LY","subdivisionName":"Surt","code":"LY-SR"},"LY-TB":{"countryCode":"LY","subdivisionName":"Tarabulus","code":"LY-TB"},"LY-WS":{"countryCode":"LY","subdivisionName":"Wadi ash Shati'","code":"LY-WS"},"MA-05":{"countryCode":"MA","subdivisionName":"Beni-Mellal-Khenifra","code":"MA-05"},"MA-06":{"countryCode":"MA","subdivisionName":"Casablanca-Settat","code":"MA-06"},"MA-08":{"countryCode":"MA","subdivisionName":"Draa-Tafilalet","code":"MA-08"},"MA-03":{"countryCode":"MA","subdivisionName":"Fes- Meknes","code":"MA-03"},"MA-10":{"countryCode":"MA","subdivisionName":"Guelmim-Oued Noun (EH-partial)","code":"MA-10"},"MA-02":{"countryCode":"MA","subdivisionName":"L'Oriental","code":"MA-02"},"MA-11":{"countryCode":"MA","subdivisionName":"Laayoune-Sakia El Hamra (EH-partial)","code":"MA-11"},"MA-07":{"countryCode":"MA","subdivisionName":"Marrakech-Safi","code":"MA-07"},"MA-04":{"countryCode":"MA","subdivisionName":"Rabat-Sale-Kenitra","code":"MA-04"},"MA-09":{"countryCode":"MA","subdivisionName":"Souss-Massa","code":"MA-09"},"MA-01":{"countryCode":"MA","subdivisionName":"Tanger-Tetouan-Al Hoceima","code":"MA-01"},"MC-FO":{"countryCode":"MC","subdivisionName":"Fontvieille","code":"MC-FO"},"MC-CO":{"countryCode":"MC","subdivisionName":"La Condamine","code":"MC-CO"},"MC-MO":{"countryCode":"MC","subdivisionName":"Monaco-Ville","code":"MC-MO"},"MC-MG":{"countryCode":"MC","subdivisionName":"Moneghetti","code":"MC-MG"},"MC-MC":{"countryCode":"MC","subdivisionName":"Monte-Carlo","code":"MC-MC"},"MC-SR":{"countryCode":"MC","subdivisionName":"Saint-Roman","code":"MC-SR"},"MD-AN":{"countryCode":"MD","subdivisionName":"Anenii Noi","code":"MD-AN"},"MD-BA":{"countryCode":"MD","subdivisionName":"Balti","code":"MD-BA"},"MD-BS":{"countryCode":"MD","subdivisionName":"Basarabeasca","code":"MD-BS"},"MD-BD":{"countryCode":"MD","subdivisionName":"Bender","code":"MD-BD"},"MD-BR":{"countryCode":"MD","subdivisionName":"Briceni","code":"MD-BR"},"MD-CA":{"countryCode":"MD","subdivisionName":"Cahul","code":"MD-CA"},"MD-CL":{"countryCode":"MD","subdivisionName":"Calarasi","code":"MD-CL"},"MD-CT":{"countryCode":"MD","subdivisionName":"Cantemir","code":"MD-CT"},"MD-CS":{"countryCode":"MD","subdivisionName":"Causeni","code":"MD-CS"},"MD-CU":{"countryCode":"MD","subdivisionName":"Chisinau","code":"MD-CU"},"MD-CM":{"countryCode":"MD","subdivisionName":"Cimislia","code":"MD-CM"},"MD-CR":{"countryCode":"MD","subdivisionName":"Criuleni","code":"MD-CR"},"MD-DO":{"countryCode":"MD","subdivisionName":"Donduseni","code":"MD-DO"},"MD-DR":{"countryCode":"MD","subdivisionName":"Drochia","code":"MD-DR"},"MD-DU":{"countryCode":"MD","subdivisionName":"Dubasari","code":"MD-DU"},"MD-ED":{"countryCode":"MD","subdivisionName":"Edinet","code":"MD-ED"},"MD-FA":{"countryCode":"MD","subdivisionName":"Falesti","code":"MD-FA"},"MD-FL":{"countryCode":"MD","subdivisionName":"Floresti","code":"MD-FL"},"MD-GA":{"countryCode":"MD","subdivisionName":"Gagauzia, Unitatea teritoriala autonoma","code":"MD-GA"},"MD-GL":{"countryCode":"MD","subdivisionName":"Glodeni","code":"MD-GL"},"MD-HI":{"countryCode":"MD","subdivisionName":"Hincesti","code":"MD-HI"},"MD-IA":{"countryCode":"MD","subdivisionName":"Ialoveni","code":"MD-IA"},"MD-LE":{"countryCode":"MD","subdivisionName":"Leova","code":"MD-LE"},"MD-NI":{"countryCode":"MD","subdivisionName":"Nisporeni","code":"MD-NI"},"MD-OC":{"countryCode":"MD","subdivisionName":"Ocnita","code":"MD-OC"},"MD-OR":{"countryCode":"MD","subdivisionName":"Orhei","code":"MD-OR"},"MD-RE":{"countryCode":"MD","subdivisionName":"Rezina","code":"MD-RE"},"MD-RI":{"countryCode":"MD","subdivisionName":"Riscani","code":"MD-RI"},"MD-SI":{"countryCode":"MD","subdivisionName":"Singerei","code":"MD-SI"},"MD-SD":{"countryCode":"MD","subdivisionName":"Soldanesti","code":"MD-SD"},"MD-SO":{"countryCode":"MD","subdivisionName":"Soroca","code":"MD-SO"},"MD-SV":{"countryCode":"MD","subdivisionName":"Stefan Voda","code":"MD-SV"},"MD-SN":{"countryCode":"MD","subdivisionName":"Stinga Nistrului, unitatea teritoriala din","code":"MD-SN"},"MD-ST":{"countryCode":"MD","subdivisionName":"Straseni","code":"MD-ST"},"MD-TA":{"countryCode":"MD","subdivisionName":"Taraclia","code":"MD-TA"},"MD-TE":{"countryCode":"MD","subdivisionName":"Telenesti","code":"MD-TE"},"MD-UN":{"countryCode":"MD","subdivisionName":"Ungheni","code":"MD-UN"},"ME-01":{"countryCode":"ME","subdivisionName":"Andrijevica","code":"ME-01"},"ME-02":{"countryCode":"ME","subdivisionName":"Bar","code":"ME-02"},"ME-03":{"countryCode":"ME","subdivisionName":"Berane","code":"ME-03"},"ME-04":{"countryCode":"ME","subdivisionName":"Bijelo Polje","code":"ME-04"},"ME-05":{"countryCode":"ME","subdivisionName":"Budva","code":"ME-05"},"ME-06":{"countryCode":"ME","subdivisionName":"Cetinje","code":"ME-06"},"ME-07":{"countryCode":"ME","subdivisionName":"Danilovgrad","code":"ME-07"},"ME-08":{"countryCode":"ME","subdivisionName":"Herceg-Novi","code":"ME-08"},"ME-09":{"countryCode":"ME","subdivisionName":"Kolasin","code":"ME-09"},"ME-10":{"countryCode":"ME","subdivisionName":"Kotor","code":"ME-10"},"ME-12":{"countryCode":"ME","subdivisionName":"Niksic","code":"ME-12"},"ME-13":{"countryCode":"ME","subdivisionName":"Plav","code":"ME-13"},"ME-14":{"countryCode":"ME","subdivisionName":"Pljevlja","code":"ME-14"},"ME-15":{"countryCode":"ME","subdivisionName":"Pluzine","code":"ME-15"},"ME-16":{"countryCode":"ME","subdivisionName":"Podgorica","code":"ME-16"},"ME-17":{"countryCode":"ME","subdivisionName":"Rozaje","code":"ME-17"},"ME-19":{"countryCode":"ME","subdivisionName":"Tivat","code":"ME-19"},"ME-24":{"countryCode":"ME","subdivisionName":"Tuzi","code":"ME-24"},"ME-20":{"countryCode":"ME","subdivisionName":"Ulcinj","code":"ME-20"},"ME-21":{"countryCode":"ME","subdivisionName":"Zabljak","code":"ME-21"},"MG-T":{"countryCode":"MG","subdivisionName":"Antananarivo","code":"MG-T"},"MG-D":{"countryCode":"MG","subdivisionName":"Antsiranana","code":"MG-D"},"MG-F":{"countryCode":"MG","subdivisionName":"Fianarantsoa","code":"MG-F"},"MG-M":{"countryCode":"MG","subdivisionName":"Mahajanga","code":"MG-M"},"MG-A":{"countryCode":"MG","subdivisionName":"Toamasina","code":"MG-A"},"MG-U":{"countryCode":"MG","subdivisionName":"Toliara","code":"MG-U"},"MH-KWA":{"countryCode":"MH","subdivisionName":"Kwajalein","code":"MH-KWA"},"MH-MAJ":{"countryCode":"MH","subdivisionName":"Majuro","code":"MH-MAJ"},"MK-201":{"countryCode":"MK","subdivisionName":"Berovo","code":"MK-201"},"MK-501":{"countryCode":"MK","subdivisionName":"Bitola","code":"MK-501"},"MK-401":{"countryCode":"MK","subdivisionName":"Bogdanci","code":"MK-401"},"MK-601":{"countryCode":"MK","subdivisionName":"Bogovinje","code":"MK-601"},"MK-402":{"countryCode":"MK","subdivisionName":"Bosilovo","code":"MK-402"},"MK-602":{"countryCode":"MK","subdivisionName":"Brvenica","code":"MK-602"},"MK-803":{"countryCode":"MK","subdivisionName":"Butel","code":"MK-803"},"MK-109":{"countryCode":"MK","subdivisionName":"Caska","code":"MK-109"},"MK-814":{"countryCode":"MK","subdivisionName":"Centar","code":"MK-814"},"MK-210":{"countryCode":"MK","subdivisionName":"Cesinovo-Oblesevo","code":"MK-210"},"MK-816":{"countryCode":"MK","subdivisionName":"Cucer Sandevo","code":"MK-816"},"MK-303":{"countryCode":"MK","subdivisionName":"Debar","code":"MK-303"},"MK-502":{"countryCode":"MK","subdivisionName":"Demir Hisar","code":"MK-502"},"MK-103":{"countryCode":"MK","subdivisionName":"Demir Kapija","code":"MK-103"},"MK-406":{"countryCode":"MK","subdivisionName":"Dojran","code":"MK-406"},"MK-503":{"countryCode":"MK","subdivisionName":"Dolneni","code":"MK-503"},"MK-804":{"countryCode":"MK","subdivisionName":"Gazi Baba","code":"MK-804"},"MK-405":{"countryCode":"MK","subdivisionName":"Gevgelija","code":"MK-405"},"MK-604":{"countryCode":"MK","subdivisionName":"Gostivar","code":"MK-604"},"MK-102":{"countryCode":"MK","subdivisionName":"Gradsko","code":"MK-102"},"MK-807":{"countryCode":"MK","subdivisionName":"Ilinden","code":"MK-807"},"MK-606":{"countryCode":"MK","subdivisionName":"Jegunovce","code":"MK-606"},"MK-205":{"countryCode":"MK","subdivisionName":"Karbinci","code":"MK-205"},"MK-104":{"countryCode":"MK","subdivisionName":"Kavadarci","code":"MK-104"},"MK-307":{"countryCode":"MK","subdivisionName":"Kicevo","code":"MK-307"},"MK-809":{"countryCode":"MK","subdivisionName":"Kisela Voda","code":"MK-809"},"MK-206":{"countryCode":"MK","subdivisionName":"Kocani","code":"MK-206"},"MK-701":{"countryCode":"MK","subdivisionName":"Kratovo","code":"MK-701"},"MK-702":{"countryCode":"MK","subdivisionName":"Kriva Palanka","code":"MK-702"},"MK-504":{"countryCode":"MK","subdivisionName":"Krivogastani","code":"MK-504"},"MK-505":{"countryCode":"MK","subdivisionName":"Krusevo","code":"MK-505"},"MK-703":{"countryCode":"MK","subdivisionName":"Kumanovo","code":"MK-703"},"MK-704":{"countryCode":"MK","subdivisionName":"Lipkovo","code":"MK-704"},"MK-105":{"countryCode":"MK","subdivisionName":"Lozovo","code":"MK-105"},"MK-207":{"countryCode":"MK","subdivisionName":"Makedonska Kamenica","code":"MK-207"},"MK-308":{"countryCode":"MK","subdivisionName":"Makedonski Brod","code":"MK-308"},"MK-607":{"countryCode":"MK","subdivisionName":"Mavrovo i Rostusa","code":"MK-607"},"MK-506":{"countryCode":"MK","subdivisionName":"Mogila","code":"MK-506"},"MK-106":{"countryCode":"MK","subdivisionName":"Negotino","code":"MK-106"},"MK-507":{"countryCode":"MK","subdivisionName":"Novaci","code":"MK-507"},"MK-408":{"countryCode":"MK","subdivisionName":"Novo Selo","code":"MK-408"},"MK-310":{"countryCode":"MK","subdivisionName":"Ohrid","code":"MK-310"},"MK-208":{"countryCode":"MK","subdivisionName":"Pehcevo","code":"MK-208"},"MK-810":{"countryCode":"MK","subdivisionName":"Petrovec","code":"MK-810"},"MK-311":{"countryCode":"MK","subdivisionName":"Plasnica","code":"MK-311"},"MK-508":{"countryCode":"MK","subdivisionName":"Prilep","code":"MK-508"},"MK-209":{"countryCode":"MK","subdivisionName":"Probistip","code":"MK-209"},"MK-409":{"countryCode":"MK","subdivisionName":"Radovis","code":"MK-409"},"MK-705":{"countryCode":"MK","subdivisionName":"Rankovce","code":"MK-705"},"MK-509":{"countryCode":"MK","subdivisionName":"Resen","code":"MK-509"},"MK-107":{"countryCode":"MK","subdivisionName":"Rosoman","code":"MK-107"},"MK-811":{"countryCode":"MK","subdivisionName":"Saraj","code":"MK-811"},"MK-812":{"countryCode":"MK","subdivisionName":"Sopiste","code":"MK-812"},"MK-211":{"countryCode":"MK","subdivisionName":"Stip","code":"MK-211"},"MK-312":{"countryCode":"MK","subdivisionName":"Struga","code":"MK-312"},"MK-410":{"countryCode":"MK","subdivisionName":"Strumica","code":"MK-410"},"MK-813":{"countryCode":"MK","subdivisionName":"Studenicani","code":"MK-813"},"MK-108":{"countryCode":"MK","subdivisionName":"Sveti Nikole","code":"MK-108"},"MK-608":{"countryCode":"MK","subdivisionName":"Tearce","code":"MK-608"},"MK-609":{"countryCode":"MK","subdivisionName":"Tetovo","code":"MK-609"},"MK-403":{"countryCode":"MK","subdivisionName":"Valandovo","code":"MK-403"},"MK-404":{"countryCode":"MK","subdivisionName":"Vasilevo","code":"MK-404"},"MK-101":{"countryCode":"MK","subdivisionName":"Veles","code":"MK-101"},"MK-301":{"countryCode":"MK","subdivisionName":"Vevcani","code":"MK-301"},"MK-202":{"countryCode":"MK","subdivisionName":"Vinica","code":"MK-202"},"MK-806":{"countryCode":"MK","subdivisionName":"Zelenikovo","code":"MK-806"},"MK-605":{"countryCode":"MK","subdivisionName":"Zelino","code":"MK-605"},"ML-BKO":{"countryCode":"ML","subdivisionName":"Bamako","code":"ML-BKO"},"ML-7":{"countryCode":"ML","subdivisionName":"Gao","code":"ML-7"},"ML-1":{"countryCode":"ML","subdivisionName":"Kayes","code":"ML-1"},"ML-8":{"countryCode":"ML","subdivisionName":"Kidal","code":"ML-8"},"ML-2":{"countryCode":"ML","subdivisionName":"Koulikoro","code":"ML-2"},"ML-5":{"countryCode":"ML","subdivisionName":"Mopti","code":"ML-5"},"ML-4":{"countryCode":"ML","subdivisionName":"Segou","code":"ML-4"},"ML-3":{"countryCode":"ML","subdivisionName":"Sikasso","code":"ML-3"},"ML-6":{"countryCode":"ML","subdivisionName":"Tombouctou","code":"ML-6"},"MM-07":{"countryCode":"MM","subdivisionName":"Ayeyarwady","code":"MM-07"},"MM-02":{"countryCode":"MM","subdivisionName":"Bago","code":"MM-02"},"MM-14":{"countryCode":"MM","subdivisionName":"Chin","code":"MM-14"},"MM-11":{"countryCode":"MM","subdivisionName":"Kachin","code":"MM-11"},"MM-12":{"countryCode":"MM","subdivisionName":"Kayah","code":"MM-12"},"MM-13":{"countryCode":"MM","subdivisionName":"Kayin","code":"MM-13"},"MM-03":{"countryCode":"MM","subdivisionName":"Magway","code":"MM-03"},"MM-04":{"countryCode":"MM","subdivisionName":"Mandalay","code":"MM-04"},"MM-15":{"countryCode":"MM","subdivisionName":"Mon","code":"MM-15"},"MM-18":{"countryCode":"MM","subdivisionName":"Nay Pyi Taw","code":"MM-18"},"MM-16":{"countryCode":"MM","subdivisionName":"Rakhine","code":"MM-16"},"MM-01":{"countryCode":"MM","subdivisionName":"Sagaing","code":"MM-01"},"MM-17":{"countryCode":"MM","subdivisionName":"Shan","code":"MM-17"},"MM-05":{"countryCode":"MM","subdivisionName":"Tanintharyi","code":"MM-05"},"MM-06":{"countryCode":"MM","subdivisionName":"Yangon","code":"MM-06"},"MN-069":{"countryCode":"MN","subdivisionName":"Bayanhongor","code":"MN-069"},"MN-037":{"countryCode":"MN","subdivisionName":"Darhan uul","code":"MN-037"},"MN-061":{"countryCode":"MN","subdivisionName":"Dornod","code":"MN-061"},"MN-065":{"countryCode":"MN","subdivisionName":"Govi-Altay","code":"MN-065"},"MN-039":{"countryCode":"MN","subdivisionName":"Hentiy","code":"MN-039"},"MN-043":{"countryCode":"MN","subdivisionName":"Hovd","code":"MN-043"},"MN-053":{"countryCode":"MN","subdivisionName":"Omnogovi","code":"MN-053"},"MN-055":{"countryCode":"MN","subdivisionName":"Ovorhangay","code":"MN-055"},"MN-049":{"countryCode":"MN","subdivisionName":"Selenge","code":"MN-049"},"MN-047":{"countryCode":"MN","subdivisionName":"Tov","code":"MN-047"},"MN-1":{"countryCode":"MN","subdivisionName":"Ulaanbaatar","code":"MN-1"},"MR-07":{"countryCode":"MR","subdivisionName":"Adrar","code":"MR-07"},"MR-03":{"countryCode":"MR","subdivisionName":"Assaba","code":"MR-03"},"MR-05":{"countryCode":"MR","subdivisionName":"Brakna","code":"MR-05"},"MR-08":{"countryCode":"MR","subdivisionName":"Dakhlet Nouadhibou","code":"MR-08"},"MR-04":{"countryCode":"MR","subdivisionName":"Gorgol","code":"MR-04"},"MR-02":{"countryCode":"MR","subdivisionName":"Hodh el Gharbi","code":"MR-02"},"MR-12":{"countryCode":"MR","subdivisionName":"Inchiri","code":"MR-12"},"MR-13":{"countryCode":"MR","subdivisionName":"Nouakchott Ouest","code":"MR-13"},"MR-09":{"countryCode":"MR","subdivisionName":"Tagant","code":"MR-09"},"MR-11":{"countryCode":"MR","subdivisionName":"Tiris Zemmour","code":"MR-11"},"MR-06":{"countryCode":"MR","subdivisionName":"Trarza","code":"MR-06"},"MT-01":{"countryCode":"MT","subdivisionName":"Attard","code":"MT-01"},"MT-02":{"countryCode":"MT","subdivisionName":"Balzan","code":"MT-02"},"MT-03":{"countryCode":"MT","subdivisionName":"Birgu","code":"MT-03"},"MT-04":{"countryCode":"MT","subdivisionName":"Birkirkara","code":"MT-04"},"MT-05":{"countryCode":"MT","subdivisionName":"Birzebbuga","code":"MT-05"},"MT-06":{"countryCode":"MT","subdivisionName":"Bormla","code":"MT-06"},"MT-07":{"countryCode":"MT","subdivisionName":"Dingli","code":"MT-07"},"MT-08":{"countryCode":"MT","subdivisionName":"Fgura","code":"MT-08"},"MT-09":{"countryCode":"MT","subdivisionName":"Floriana","code":"MT-09"},"MT-10":{"countryCode":"MT","subdivisionName":"Fontana","code":"MT-10"},"MT-13":{"countryCode":"MT","subdivisionName":"Ghajnsielem","code":"MT-13"},"MT-14":{"countryCode":"MT","subdivisionName":"Gharb","code":"MT-14"},"MT-15":{"countryCode":"MT","subdivisionName":"Gharghur","code":"MT-15"},"MT-16":{"countryCode":"MT","subdivisionName":"Ghasri","code":"MT-16"},"MT-17":{"countryCode":"MT","subdivisionName":"Ghaxaq","code":"MT-17"},"MT-11":{"countryCode":"MT","subdivisionName":"Gudja","code":"MT-11"},"MT-12":{"countryCode":"MT","subdivisionName":"Gzira","code":"MT-12"},"MT-18":{"countryCode":"MT","subdivisionName":"Hamrun","code":"MT-18"},"MT-19":{"countryCode":"MT","subdivisionName":"Iklin","code":"MT-19"},"MT-20":{"countryCode":"MT","subdivisionName":"Isla","code":"MT-20"},"MT-21":{"countryCode":"MT","subdivisionName":"Kalkara","code":"MT-21"},"MT-23":{"countryCode":"MT","subdivisionName":"Kirkop","code":"MT-23"},"MT-24":{"countryCode":"MT","subdivisionName":"Lija","code":"MT-24"},"MT-25":{"countryCode":"MT","subdivisionName":"Luqa","code":"MT-25"},"MT-26":{"countryCode":"MT","subdivisionName":"Marsa","code":"MT-26"},"MT-27":{"countryCode":"MT","subdivisionName":"Marsaskala","code":"MT-27"},"MT-28":{"countryCode":"MT","subdivisionName":"Marsaxlokk","code":"MT-28"},"MT-29":{"countryCode":"MT","subdivisionName":"Mdina","code":"MT-29"},"MT-30":{"countryCode":"MT","subdivisionName":"Mellieha","code":"MT-30"},"MT-31":{"countryCode":"MT","subdivisionName":"Mgarr","code":"MT-31"},"MT-32":{"countryCode":"MT","subdivisionName":"Mosta","code":"MT-32"},"MT-33":{"countryCode":"MT","subdivisionName":"Mqabba","code":"MT-33"},"MT-34":{"countryCode":"MT","subdivisionName":"Msida","code":"MT-34"},"MT-35":{"countryCode":"MT","subdivisionName":"Mtarfa","code":"MT-35"},"MT-36":{"countryCode":"MT","subdivisionName":"Munxar","code":"MT-36"},"MT-37":{"countryCode":"MT","subdivisionName":"Nadur","code":"MT-37"},"MT-38":{"countryCode":"MT","subdivisionName":"Naxxar","code":"MT-38"},"MT-39":{"countryCode":"MT","subdivisionName":"Paola","code":"MT-39"},"MT-40":{"countryCode":"MT","subdivisionName":"Pembroke","code":"MT-40"},"MT-41":{"countryCode":"MT","subdivisionName":"Pieta","code":"MT-41"},"MT-42":{"countryCode":"MT","subdivisionName":"Qala","code":"MT-42"},"MT-43":{"countryCode":"MT","subdivisionName":"Qormi","code":"MT-43"},"MT-44":{"countryCode":"MT","subdivisionName":"Qrendi","code":"MT-44"},"MT-45":{"countryCode":"MT","subdivisionName":"Rabat Gozo","code":"MT-45"},"MT-46":{"countryCode":"MT","subdivisionName":"Rabat Malta","code":"MT-46"},"MT-47":{"countryCode":"MT","subdivisionName":"Safi","code":"MT-47"},"MT-49":{"countryCode":"MT","subdivisionName":"Saint John","code":"MT-49"},"MT-48":{"countryCode":"MT","subdivisionName":"Saint Julian's","code":"MT-48"},"MT-50":{"countryCode":"MT","subdivisionName":"Saint Lawrence","code":"MT-50"},"MT-53":{"countryCode":"MT","subdivisionName":"Saint Lucia's","code":"MT-53"},"MT-51":{"countryCode":"MT","subdivisionName":"Saint Paul's Bay","code":"MT-51"},"MT-52":{"countryCode":"MT","subdivisionName":"Sannat","code":"MT-52"},"MT-54":{"countryCode":"MT","subdivisionName":"Santa Venera","code":"MT-54"},"MT-55":{"countryCode":"MT","subdivisionName":"Siggiewi","code":"MT-55"},"MT-56":{"countryCode":"MT","subdivisionName":"Sliema","code":"MT-56"},"MT-57":{"countryCode":"MT","subdivisionName":"Swieqi","code":"MT-57"},"MT-58":{"countryCode":"MT","subdivisionName":"Ta' Xbiex","code":"MT-58"},"MT-59":{"countryCode":"MT","subdivisionName":"Tarxien","code":"MT-59"},"MT-60":{"countryCode":"MT","subdivisionName":"Valletta","code":"MT-60"},"MT-61":{"countryCode":"MT","subdivisionName":"Xaghra","code":"MT-61"},"MT-62":{"countryCode":"MT","subdivisionName":"Xewkija","code":"MT-62"},"MT-63":{"countryCode":"MT","subdivisionName":"Xghajra","code":"MT-63"},"MT-64":{"countryCode":"MT","subdivisionName":"Zabbar","code":"MT-64"},"MT-65":{"countryCode":"MT","subdivisionName":"Zebbug Gozo","code":"MT-65"},"MT-67":{"countryCode":"MT","subdivisionName":"Zejtun","code":"MT-67"},"MT-68":{"countryCode":"MT","subdivisionName":"Zurrieq","code":"MT-68"},"MU-BL":{"countryCode":"MU","subdivisionName":"Black River","code":"MU-BL"},"MU-FL":{"countryCode":"MU","subdivisionName":"Flacq","code":"MU-FL"},"MU-GP":{"countryCode":"MU","subdivisionName":"Grand Port","code":"MU-GP"},"MU-MO":{"countryCode":"MU","subdivisionName":"Moka","code":"MU-MO"},"MU-PA":{"countryCode":"MU","subdivisionName":"Pamplemousses","code":"MU-PA"},"MU-PW":{"countryCode":"MU","subdivisionName":"Plaines Wilhems","code":"MU-PW"},"MU-PL":{"countryCode":"MU","subdivisionName":"Port Louis","code":"MU-PL"},"MU-RR":{"countryCode":"MU","subdivisionName":"Riviere du Rempart","code":"MU-RR"},"MU-RO":{"countryCode":"MU","subdivisionName":"Rodrigues Islands","code":"MU-RO"},"MU-SA":{"countryCode":"MU","subdivisionName":"Savanne","code":"MU-SA"},"MV-01":{"countryCode":"MV","subdivisionName":"Addu City","code":"MV-01"},"MV-03":{"countryCode":"MV","subdivisionName":"Faadhippolhu","code":"MV-03"},"MV-04":{"countryCode":"MV","subdivisionName":"Felidhu Atoll","code":"MV-04"},"MV-05":{"countryCode":"MV","subdivisionName":"Hahdhunmathi","code":"MV-05"},"MV-MLE":{"countryCode":"MV","subdivisionName":"Male","code":"MV-MLE"},"MV-12":{"countryCode":"MV","subdivisionName":"Mulaku Atoll","code":"MV-12"},"MV-02":{"countryCode":"MV","subdivisionName":"North Ari Atoll","code":"MV-02"},"MV-27":{"countryCode":"MV","subdivisionName":"North Huvadhu Atoll","code":"MV-27"},"MV-13":{"countryCode":"MV","subdivisionName":"North Maalhosmadulu","code":"MV-13"},"MV-07":{"countryCode":"MV","subdivisionName":"North Thiladhunmathi","code":"MV-07"},"MV-00":{"countryCode":"MV","subdivisionName":"South Ari Atoll","code":"MV-00"},"MV-28":{"countryCode":"MV","subdivisionName":"South Huvadhu Atoll","code":"MV-28"},"MV-20":{"countryCode":"MV","subdivisionName":"South Maalhosmadulu","code":"MV-20"},"MV-25":{"countryCode":"MV","subdivisionName":"South Miladhunmadulu","code":"MV-25"},"MV-23":{"countryCode":"MV","subdivisionName":"South Thiladhunmathi","code":"MV-23"},"MW-BA":{"countryCode":"MW","subdivisionName":"Balaka","code":"MW-BA"},"MW-BL":{"countryCode":"MW","subdivisionName":"Blantyre","code":"MW-BL"},"MW-CK":{"countryCode":"MW","subdivisionName":"Chikwawa","code":"MW-CK"},"MW-CR":{"countryCode":"MW","subdivisionName":"Chiradzulu","code":"MW-CR"},"MW-DE":{"countryCode":"MW","subdivisionName":"Dedza","code":"MW-DE"},"MW-DO":{"countryCode":"MW","subdivisionName":"Dowa","code":"MW-DO"},"MW-KR":{"countryCode":"MW","subdivisionName":"Karonga","code":"MW-KR"},"MW-LI":{"countryCode":"MW","subdivisionName":"Lilongwe","code":"MW-LI"},"MW-MH":{"countryCode":"MW","subdivisionName":"Machinga","code":"MW-MH"},"MW-MG":{"countryCode":"MW","subdivisionName":"Mangochi","code":"MW-MG"},"MW-MW":{"countryCode":"MW","subdivisionName":"Mwanza","code":"MW-MW"},"MW-MZ":{"countryCode":"MW","subdivisionName":"Mzimba","code":"MW-MZ"},"MW-NE":{"countryCode":"MW","subdivisionName":"Neno","code":"MW-NE"},"MW-NK":{"countryCode":"MW","subdivisionName":"Nkhotakota","code":"MW-NK"},"MW-NI":{"countryCode":"MW","subdivisionName":"Ntchisi","code":"MW-NI"},"MW-SA":{"countryCode":"MW","subdivisionName":"Salima","code":"MW-SA"},"MW-TH":{"countryCode":"MW","subdivisionName":"Thyolo","code":"MW-TH"},"MW-ZO":{"countryCode":"MW","subdivisionName":"Zomba","code":"MW-ZO"},"MX-AGU":{"countryCode":"MX","subdivisionName":"Aguascalientes","code":"MX-AGU"},"MX-BCN":{"countryCode":"MX","subdivisionName":"Baja California","code":"MX-BCN"},"MX-BCS":{"countryCode":"MX","subdivisionName":"Baja California Sur","code":"MX-BCS"},"MX-CAM":{"countryCode":"MX","subdivisionName":"Campeche","code":"MX-CAM"},"MX-CHP":{"countryCode":"MX","subdivisionName":"Chiapas","code":"MX-CHP"},"MX-CHH":{"countryCode":"MX","subdivisionName":"Chihuahua","code":"MX-CHH"},"MX-CMX":{"countryCode":"MX","subdivisionName":"Ciudad de Mexico","code":"MX-CMX"},"MX-COA":{"countryCode":"MX","subdivisionName":"Coahuila de Zaragoza","code":"MX-COA"},"MX-COL":{"countryCode":"MX","subdivisionName":"Colima","code":"MX-COL"},"MX-DUR":{"countryCode":"MX","subdivisionName":"Durango","code":"MX-DUR"},"MX-GUA":{"countryCode":"MX","subdivisionName":"Guanajuato","code":"MX-GUA"},"MX-GRO":{"countryCode":"MX","subdivisionName":"Guerrero","code":"MX-GRO"},"MX-HID":{"countryCode":"MX","subdivisionName":"Hidalgo","code":"MX-HID"},"MX-JAL":{"countryCode":"MX","subdivisionName":"Jalisco","code":"MX-JAL"},"MX-MEX":{"countryCode":"MX","subdivisionName":"Mexico","code":"MX-MEX"},"MX-MIC":{"countryCode":"MX","subdivisionName":"Michoacan de Ocampo","code":"MX-MIC"},"MX-MOR":{"countryCode":"MX","subdivisionName":"Morelos","code":"MX-MOR"},"MX-NAY":{"countryCode":"MX","subdivisionName":"Nayarit","code":"MX-NAY"},"MX-NLE":{"countryCode":"MX","subdivisionName":"Nuevo Leon","code":"MX-NLE"},"MX-OAX":{"countryCode":"MX","subdivisionName":"Oaxaca","code":"MX-OAX"},"MX-PUE":{"countryCode":"MX","subdivisionName":"Puebla","code":"MX-PUE"},"MX-QUE":{"countryCode":"MX","subdivisionName":"Queretaro","code":"MX-QUE"},"MX-ROO":{"countryCode":"MX","subdivisionName":"Quintana Roo","code":"MX-ROO"},"MX-SLP":{"countryCode":"MX","subdivisionName":"San Luis Potosi","code":"MX-SLP"},"MX-SIN":{"countryCode":"MX","subdivisionName":"Sinaloa","code":"MX-SIN"},"MX-SON":{"countryCode":"MX","subdivisionName":"Sonora","code":"MX-SON"},"MX-TAB":{"countryCode":"MX","subdivisionName":"Tabasco","code":"MX-TAB"},"MX-TAM":{"countryCode":"MX","subdivisionName":"Tamaulipas","code":"MX-TAM"},"MX-TLA":{"countryCode":"MX","subdivisionName":"Tlaxcala","code":"MX-TLA"},"MX-VER":{"countryCode":"MX","subdivisionName":"Veracruz de Ignacio de la Llave","code":"MX-VER"},"MX-YUC":{"countryCode":"MX","subdivisionName":"Yucatan","code":"MX-YUC"},"MX-ZAC":{"countryCode":"MX","subdivisionName":"Zacatecas","code":"MX-ZAC"},"MY-01":{"countryCode":"MY","subdivisionName":"Johor","code":"MY-01"},"MY-02":{"countryCode":"MY","subdivisionName":"Kedah","code":"MY-02"},"MY-03":{"countryCode":"MY","subdivisionName":"Kelantan","code":"MY-03"},"MY-04":{"countryCode":"MY","subdivisionName":"Melaka","code":"MY-04"},"MY-05":{"countryCode":"MY","subdivisionName":"Negeri Sembilan","code":"MY-05"},"MY-06":{"countryCode":"MY","subdivisionName":"Pahang","code":"MY-06"},"MY-08":{"countryCode":"MY","subdivisionName":"Perak","code":"MY-08"},"MY-09":{"countryCode":"MY","subdivisionName":"Perlis","code":"MY-09"},"MY-07":{"countryCode":"MY","subdivisionName":"Pulau Pinang","code":"MY-07"},"MY-12":{"countryCode":"MY","subdivisionName":"Sabah","code":"MY-12"},"MY-13":{"countryCode":"MY","subdivisionName":"Sarawak","code":"MY-13"},"MY-10":{"countryCode":"MY","subdivisionName":"Selangor","code":"MY-10"},"MY-11":{"countryCode":"MY","subdivisionName":"Terengganu","code":"MY-11"},"MY-14":{"countryCode":"MY","subdivisionName":"Wilayah Persekutuan Kuala Lumpur","code":"MY-14"},"MY-15":{"countryCode":"MY","subdivisionName":"Wilayah Persekutuan Labuan","code":"MY-15"},"MY-16":{"countryCode":"MY","subdivisionName":"Wilayah Persekutuan Putrajaya","code":"MY-16"},"MZ-P":{"countryCode":"MZ","subdivisionName":"Cabo Delgado","code":"MZ-P"},"MZ-G":{"countryCode":"MZ","subdivisionName":"Gaza","code":"MZ-G"},"MZ-I":{"countryCode":"MZ","subdivisionName":"Inhambane","code":"MZ-I"},"MZ-B":{"countryCode":"MZ","subdivisionName":"Manica","code":"MZ-B"},"MZ-L":{"countryCode":"MZ","subdivisionName":"Maputo","code":"MZ-L"},"MZ-N":{"countryCode":"MZ","subdivisionName":"Nampula","code":"MZ-N"},"MZ-A":{"countryCode":"MZ","subdivisionName":"Niassa","code":"MZ-A"},"MZ-S":{"countryCode":"MZ","subdivisionName":"Sofala","code":"MZ-S"},"MZ-T":{"countryCode":"MZ","subdivisionName":"Tete","code":"MZ-T"},"MZ-Q":{"countryCode":"MZ","subdivisionName":"Zambezia","code":"MZ-Q"},"NA-ER":{"countryCode":"NA","subdivisionName":"Erongo","code":"NA-ER"},"NA-HA":{"countryCode":"NA","subdivisionName":"Hardap","code":"NA-HA"},"NA-KA":{"countryCode":"NA","subdivisionName":"Karas","code":"NA-KA"},"NA-KE":{"countryCode":"NA","subdivisionName":"Kavango East","code":"NA-KE"},"NA-KW":{"countryCode":"NA","subdivisionName":"Kavango West","code":"NA-KW"},"NA-KH":{"countryCode":"NA","subdivisionName":"Khomas","code":"NA-KH"},"NA-KU":{"countryCode":"NA","subdivisionName":"Kunene","code":"NA-KU"},"NA-OW":{"countryCode":"NA","subdivisionName":"Ohangwena","code":"NA-OW"},"NA-OH":{"countryCode":"NA","subdivisionName":"Omaheke","code":"NA-OH"},"NA-OS":{"countryCode":"NA","subdivisionName":"Omusati","code":"NA-OS"},"NA-ON":{"countryCode":"NA","subdivisionName":"Oshana","code":"NA-ON"},"NA-OT":{"countryCode":"NA","subdivisionName":"Oshikoto","code":"NA-OT"},"NA-OD":{"countryCode":"NA","subdivisionName":"Otjozondjupa","code":"NA-OD"},"NA-CA":{"countryCode":"NA","subdivisionName":"Zambezi","code":"NA-CA"},"NE-1":{"countryCode":"NE","subdivisionName":"Agadez","code":"NE-1"},"NE-2":{"countryCode":"NE","subdivisionName":"Diffa","code":"NE-2"},"NE-3":{"countryCode":"NE","subdivisionName":"Dosso","code":"NE-3"},"NE-4":{"countryCode":"NE","subdivisionName":"Maradi","code":"NE-4"},"NE-8":{"countryCode":"NE","subdivisionName":"Niamey","code":"NE-8"},"NE-5":{"countryCode":"NE","subdivisionName":"Tahoua","code":"NE-5"},"NE-6":{"countryCode":"NE","subdivisionName":"Tillaberi","code":"NE-6"},"NE-7":{"countryCode":"NE","subdivisionName":"Zinder","code":"NE-7"},"NG-AB":{"countryCode":"NG","subdivisionName":"Abia","code":"NG-AB"},"NG-FC":{"countryCode":"NG","subdivisionName":"Abuja Federal Capital Territory","code":"NG-FC"},"NG-AD":{"countryCode":"NG","subdivisionName":"Adamawa","code":"NG-AD"},"NG-AK":{"countryCode":"NG","subdivisionName":"Akwa Ibom","code":"NG-AK"},"NG-AN":{"countryCode":"NG","subdivisionName":"Anambra","code":"NG-AN"},"NG-BA":{"countryCode":"NG","subdivisionName":"Bauchi","code":"NG-BA"},"NG-BY":{"countryCode":"NG","subdivisionName":"Bayelsa","code":"NG-BY"},"NG-BE":{"countryCode":"NG","subdivisionName":"Benue","code":"NG-BE"},"NG-BO":{"countryCode":"NG","subdivisionName":"Borno","code":"NG-BO"},"NG-CR":{"countryCode":"NG","subdivisionName":"Cross River","code":"NG-CR"},"NG-DE":{"countryCode":"NG","subdivisionName":"Delta","code":"NG-DE"},"NG-EB":{"countryCode":"NG","subdivisionName":"Ebonyi","code":"NG-EB"},"NG-ED":{"countryCode":"NG","subdivisionName":"Edo","code":"NG-ED"},"NG-EK":{"countryCode":"NG","subdivisionName":"Ekiti","code":"NG-EK"},"NG-EN":{"countryCode":"NG","subdivisionName":"Enugu","code":"NG-EN"},"NG-GO":{"countryCode":"NG","subdivisionName":"Gombe","code":"NG-GO"},"NG-IM":{"countryCode":"NG","subdivisionName":"Imo","code":"NG-IM"},"NG-JI":{"countryCode":"NG","subdivisionName":"Jigawa","code":"NG-JI"},"NG-KD":{"countryCode":"NG","subdivisionName":"Kaduna","code":"NG-KD"},"NG-KN":{"countryCode":"NG","subdivisionName":"Kano","code":"NG-KN"},"NG-KT":{"countryCode":"NG","subdivisionName":"Katsina","code":"NG-KT"},"NG-KE":{"countryCode":"NG","subdivisionName":"Kebbi","code":"NG-KE"},"NG-KO":{"countryCode":"NG","subdivisionName":"Kogi","code":"NG-KO"},"NG-KW":{"countryCode":"NG","subdivisionName":"Kwara","code":"NG-KW"},"NG-LA":{"countryCode":"NG","subdivisionName":"Lagos","code":"NG-LA"},"NG-NA":{"countryCode":"NG","subdivisionName":"Nasarawa","code":"NG-NA"},"NG-NI":{"countryCode":"NG","subdivisionName":"Niger","code":"NG-NI"},"NG-OG":{"countryCode":"NG","subdivisionName":"Ogun","code":"NG-OG"},"NG-ON":{"countryCode":"NG","subdivisionName":"Ondo","code":"NG-ON"},"NG-OS":{"countryCode":"NG","subdivisionName":"Osun","code":"NG-OS"},"NG-OY":{"countryCode":"NG","subdivisionName":"Oyo","code":"NG-OY"},"NG-PL":{"countryCode":"NG","subdivisionName":"Plateau","code":"NG-PL"},"NG-RI":{"countryCode":"NG","subdivisionName":"Rivers","code":"NG-RI"},"NG-SO":{"countryCode":"NG","subdivisionName":"Sokoto","code":"NG-SO"},"NG-TA":{"countryCode":"NG","subdivisionName":"Taraba","code":"NG-TA"},"NG-YO":{"countryCode":"NG","subdivisionName":"Yobe","code":"NG-YO"},"NG-ZA":{"countryCode":"NG","subdivisionName":"Zamfara","code":"NG-ZA"},"NI-BO":{"countryCode":"NI","subdivisionName":"Boaco","code":"NI-BO"},"NI-CA":{"countryCode":"NI","subdivisionName":"Carazo","code":"NI-CA"},"NI-CI":{"countryCode":"NI","subdivisionName":"Chinandega","code":"NI-CI"},"NI-CO":{"countryCode":"NI","subdivisionName":"Chontales","code":"NI-CO"},"NI-AN":{"countryCode":"NI","subdivisionName":"Costa Caribe Norte","code":"NI-AN"},"NI-AS":{"countryCode":"NI","subdivisionName":"Costa Caribe Sur","code":"NI-AS"},"NI-ES":{"countryCode":"NI","subdivisionName":"Esteli","code":"NI-ES"},"NI-GR":{"countryCode":"NI","subdivisionName":"Granada","code":"NI-GR"},"NI-JI":{"countryCode":"NI","subdivisionName":"Jinotega","code":"NI-JI"},"NI-LE":{"countryCode":"NI","subdivisionName":"Leon","code":"NI-LE"},"NI-MD":{"countryCode":"NI","subdivisionName":"Madriz","code":"NI-MD"},"NI-MN":{"countryCode":"NI","subdivisionName":"Managua","code":"NI-MN"},"NI-MS":{"countryCode":"NI","subdivisionName":"Masaya","code":"NI-MS"},"NI-MT":{"countryCode":"NI","subdivisionName":"Matagalpa","code":"NI-MT"},"NI-NS":{"countryCode":"NI","subdivisionName":"Nueva Segovia","code":"NI-NS"},"NI-SJ":{"countryCode":"NI","subdivisionName":"Rio San Juan","code":"NI-SJ"},"NI-RI":{"countryCode":"NI","subdivisionName":"Rivas","code":"NI-RI"},"NL-DR":{"countryCode":"NL","subdivisionName":"Drenthe","code":"NL-DR"},"NL-FL":{"countryCode":"NL","subdivisionName":"Flevoland","code":"NL-FL"},"NL-FR":{"countryCode":"NL","subdivisionName":"Fryslan","code":"NL-FR"},"NL-GE":{"countryCode":"NL","subdivisionName":"Gelderland","code":"NL-GE"},"NL-GR":{"countryCode":"NL","subdivisionName":"Groningen","code":"NL-GR"},"NL-LI":{"countryCode":"NL","subdivisionName":"Limburg","code":"NL-LI"},"NL-NB":{"countryCode":"NL","subdivisionName":"Noord-Brabant","code":"NL-NB"},"NL-NH":{"countryCode":"NL","subdivisionName":"Noord-Holland","code":"NL-NH"},"NL-OV":{"countryCode":"NL","subdivisionName":"Overijssel","code":"NL-OV"},"NL-UT":{"countryCode":"NL","subdivisionName":"Utrecht","code":"NL-UT"},"NL-ZE":{"countryCode":"NL","subdivisionName":"Zeeland","code":"NL-ZE"},"NL-ZH":{"countryCode":"NL","subdivisionName":"Zuid-Holland","code":"NL-ZH"},"NO-42":{"countryCode":"NO","subdivisionName":"Agder","code":"NO-42"},"NO-34":{"countryCode":"NO","subdivisionName":"Innlandet","code":"NO-34"},"NO-15":{"countryCode":"NO","subdivisionName":"More og Romsdal","code":"NO-15"},"NO-18":{"countryCode":"NO","subdivisionName":"Nordland","code":"NO-18"},"NO-03":{"countryCode":"NO","subdivisionName":"Oslo","code":"NO-03"},"NO-11":{"countryCode":"NO","subdivisionName":"Rogaland","code":"NO-11"},"NO-54":{"countryCode":"NO","subdivisionName":"Troms og Finnmark","code":"NO-54"},"NO-50":{"countryCode":"NO","subdivisionName":"Trondelag","code":"NO-50"},"NO-38":{"countryCode":"NO","subdivisionName":"Vestfold og Telemark","code":"NO-38"},"NO-46":{"countryCode":"NO","subdivisionName":"Vestland","code":"NO-46"},"NO-30":{"countryCode":"NO","subdivisionName":"Viken","code":"NO-30"},"NP-BA":{"countryCode":"NP","subdivisionName":"Bagmati","code":"NP-BA"},"NP-BH":{"countryCode":"NP","subdivisionName":"Bheri","code":"NP-BH"},"NP-DH":{"countryCode":"NP","subdivisionName":"Dhawalagiri","code":"NP-DH"},"NP-GA":{"countryCode":"NP","subdivisionName":"Gandaki","code":"NP-GA"},"NP-JA":{"countryCode":"NP","subdivisionName":"Janakpur","code":"NP-JA"},"NP-KA":{"countryCode":"NP","subdivisionName":"Karnali","code":"NP-KA"},"NP-KO":{"countryCode":"NP","subdivisionName":"Kosi","code":"NP-KO"},"NP-LU":{"countryCode":"NP","subdivisionName":"Lumbini","code":"NP-LU"},"NP-MA":{"countryCode":"NP","subdivisionName":"Mahakali","code":"NP-MA"},"NP-ME":{"countryCode":"NP","subdivisionName":"Mechi","code":"NP-ME"},"NP-NA":{"countryCode":"NP","subdivisionName":"Narayani","code":"NP-NA"},"NP-RA":{"countryCode":"NP","subdivisionName":"Rapti","code":"NP-RA"},"NP-SA":{"countryCode":"NP","subdivisionName":"Sagarmatha","code":"NP-SA"},"NP-SE":{"countryCode":"NP","subdivisionName":"Seti","code":"NP-SE"},"NR-01":{"countryCode":"NR","subdivisionName":"Aiwo","code":"NR-01"},"NR-03":{"countryCode":"NR","subdivisionName":"Anetan","code":"NR-03"},"NR-14":{"countryCode":"NR","subdivisionName":"Yaren","code":"NR-14"},"NZ-AUK":{"countryCode":"NZ","subdivisionName":"Auckland","code":"NZ-AUK"},"NZ-BOP":{"countryCode":"NZ","subdivisionName":"Bay of Plenty","code":"NZ-BOP"},"NZ-CAN":{"countryCode":"NZ","subdivisionName":"Canterbury","code":"NZ-CAN"},"NZ-CIT":{"countryCode":"NZ","subdivisionName":"Chatham Islands Territory","code":"NZ-CIT"},"NZ-GIS":{"countryCode":"NZ","subdivisionName":"Gisborne","code":"NZ-GIS"},"NZ-HKB":{"countryCode":"NZ","subdivisionName":"Hawke's Bay","code":"NZ-HKB"},"NZ-MWT":{"countryCode":"NZ","subdivisionName":"Manawatu-Wanganui","code":"NZ-MWT"},"NZ-MBH":{"countryCode":"NZ","subdivisionName":"Marlborough","code":"NZ-MBH"},"NZ-NSN":{"countryCode":"NZ","subdivisionName":"Nelson","code":"NZ-NSN"},"NZ-NTL":{"countryCode":"NZ","subdivisionName":"Northland","code":"NZ-NTL"},"NZ-OTA":{"countryCode":"NZ","subdivisionName":"Otago","code":"NZ-OTA"},"NZ-STL":{"countryCode":"NZ","subdivisionName":"Southland","code":"NZ-STL"},"NZ-TKI":{"countryCode":"NZ","subdivisionName":"Taranaki","code":"NZ-TKI"},"NZ-TAS":{"countryCode":"NZ","subdivisionName":"Tasman","code":"NZ-TAS"},"NZ-WKO":{"countryCode":"NZ","subdivisionName":"Waikato","code":"NZ-WKO"},"NZ-WGN":{"countryCode":"NZ","subdivisionName":"Wellington","code":"NZ-WGN"},"NZ-WTC":{"countryCode":"NZ","subdivisionName":"West Coast","code":"NZ-WTC"},"OM-DA":{"countryCode":"OM","subdivisionName":"Ad Dakhiliyah","code":"OM-DA"},"OM-BU":{"countryCode":"OM","subdivisionName":"Al Buraymi","code":"OM-BU"},"OM-WU":{"countryCode":"OM","subdivisionName":"Al Wusta","code":"OM-WU"},"OM-ZA":{"countryCode":"OM","subdivisionName":"Az Zahirah","code":"OM-ZA"},"OM-BJ":{"countryCode":"OM","subdivisionName":"Janub al Batinah","code":"OM-BJ"},"OM-SJ":{"countryCode":"OM","subdivisionName":"Janub ash Sharqiyah","code":"OM-SJ"},"OM-MA":{"countryCode":"OM","subdivisionName":"Masqat","code":"OM-MA"},"OM-MU":{"countryCode":"OM","subdivisionName":"Musandam","code":"OM-MU"},"OM-BS":{"countryCode":"OM","subdivisionName":"Shamal al Batinah","code":"OM-BS"},"OM-SS":{"countryCode":"OM","subdivisionName":"Shamal ash Sharqiyah","code":"OM-SS"},"OM-ZU":{"countryCode":"OM","subdivisionName":"Zufar","code":"OM-ZU"},"PA-1":{"countryCode":"PA","subdivisionName":"Bocas del Toro","code":"PA-1"},"PA-4":{"countryCode":"PA","subdivisionName":"Chiriqui","code":"PA-4"},"PA-2":{"countryCode":"PA","subdivisionName":"Cocle","code":"PA-2"},"PA-3":{"countryCode":"PA","subdivisionName":"Colon","code":"PA-3"},"PA-5":{"countryCode":"PA","subdivisionName":"Darien","code":"PA-5"},"PA-6":{"countryCode":"PA","subdivisionName":"Herrera","code":"PA-6"},"PA-7":{"countryCode":"PA","subdivisionName":"Los Santos","code":"PA-7"},"PA-NB":{"countryCode":"PA","subdivisionName":"Ngobe-Bugle","code":"PA-NB"},"PA-8":{"countryCode":"PA","subdivisionName":"Panama","code":"PA-8"},"PA-9":{"countryCode":"PA","subdivisionName":"Veraguas","code":"PA-9"},"PE-AMA":{"countryCode":"PE","subdivisionName":"Amazonas","code":"PE-AMA"},"PE-ANC":{"countryCode":"PE","subdivisionName":"Ancash","code":"PE-ANC"},"PE-APU":{"countryCode":"PE","subdivisionName":"Apurimac","code":"PE-APU"},"PE-ARE":{"countryCode":"PE","subdivisionName":"Arequipa","code":"PE-ARE"},"PE-AYA":{"countryCode":"PE","subdivisionName":"Ayacucho","code":"PE-AYA"},"PE-CAJ":{"countryCode":"PE","subdivisionName":"Cajamarca","code":"PE-CAJ"},"PE-CUS":{"countryCode":"PE","subdivisionName":"Cusco","code":"PE-CUS"},"PE-CAL":{"countryCode":"PE","subdivisionName":"El Callao","code":"PE-CAL"},"PE-HUV":{"countryCode":"PE","subdivisionName":"Huancavelica","code":"PE-HUV"},"PE-HUC":{"countryCode":"PE","subdivisionName":"Huanuco","code":"PE-HUC"},"PE-ICA":{"countryCode":"PE","subdivisionName":"Ica","code":"PE-ICA"},"PE-JUN":{"countryCode":"PE","subdivisionName":"Junin","code":"PE-JUN"},"PE-LAL":{"countryCode":"PE","subdivisionName":"La Libertad","code":"PE-LAL"},"PE-LAM":{"countryCode":"PE","subdivisionName":"Lambayeque","code":"PE-LAM"},"PE-LIM":{"countryCode":"PE","subdivisionName":"Lima","code":"PE-LIM"},"PE-LOR":{"countryCode":"PE","subdivisionName":"Loreto","code":"PE-LOR"},"PE-MDD":{"countryCode":"PE","subdivisionName":"Madre de Dios","code":"PE-MDD"},"PE-MOQ":{"countryCode":"PE","subdivisionName":"Moquegua","code":"PE-MOQ"},"PE-PAS":{"countryCode":"PE","subdivisionName":"Pasco","code":"PE-PAS"},"PE-PIU":{"countryCode":"PE","subdivisionName":"Piura","code":"PE-PIU"},"PE-PUN":{"countryCode":"PE","subdivisionName":"Puno","code":"PE-PUN"},"PE-SAM":{"countryCode":"PE","subdivisionName":"San Martin","code":"PE-SAM"},"PE-TAC":{"countryCode":"PE","subdivisionName":"Tacna","code":"PE-TAC"},"PE-TUM":{"countryCode":"PE","subdivisionName":"Tumbes","code":"PE-TUM"},"PE-UCA":{"countryCode":"PE","subdivisionName":"Ucayali","code":"PE-UCA"},"PG-NSB":{"countryCode":"PG","subdivisionName":"Bougainville","code":"PG-NSB"},"PG-CPM":{"countryCode":"PG","subdivisionName":"Central","code":"PG-CPM"},"PG-CPK":{"countryCode":"PG","subdivisionName":"Chimbu","code":"PG-CPK"},"PG-EBR":{"countryCode":"PG","subdivisionName":"East New Britain","code":"PG-EBR"},"PG-ESW":{"countryCode":"PG","subdivisionName":"East Sepik","code":"PG-ESW"},"PG-EHG":{"countryCode":"PG","subdivisionName":"Eastern Highlands","code":"PG-EHG"},"PG-MPM":{"countryCode":"PG","subdivisionName":"Madang","code":"PG-MPM"},"PG-MRL":{"countryCode":"PG","subdivisionName":"Manus","code":"PG-MRL"},"PG-MBA":{"countryCode":"PG","subdivisionName":"Milne Bay","code":"PG-MBA"},"PG-MPL":{"countryCode":"PG","subdivisionName":"Morobe","code":"PG-MPL"},"PG-NCD":{"countryCode":"PG","subdivisionName":"National Capital District (Port Moresby)","code":"PG-NCD"},"PG-NIK":{"countryCode":"PG","subdivisionName":"New Ireland","code":"PG-NIK"},"PG-SHM":{"countryCode":"PG","subdivisionName":"Southern Highlands","code":"PG-SHM"},"PG-WBK":{"countryCode":"PG","subdivisionName":"West New Britain","code":"PG-WBK"},"PG-SAN":{"countryCode":"PG","subdivisionName":"West Sepik","code":"PG-SAN"},"PG-WPD":{"countryCode":"PG","subdivisionName":"Western","code":"PG-WPD"},"PG-WHM":{"countryCode":"PG","subdivisionName":"Western Highlands","code":"PG-WHM"},"PH-ABR":{"countryCode":"PH","subdivisionName":"Abra","code":"PH-ABR"},"PH-AGN":{"countryCode":"PH","subdivisionName":"Agusan del Norte","code":"PH-AGN"},"PH-AGS":{"countryCode":"PH","subdivisionName":"Agusan del Sur","code":"PH-AGS"},"PH-AKL":{"countryCode":"PH","subdivisionName":"Aklan","code":"PH-AKL"},"PH-ALB":{"countryCode":"PH","subdivisionName":"Albay","code":"PH-ALB"},"PH-ANT":{"countryCode":"PH","subdivisionName":"Antique","code":"PH-ANT"},"PH-APA":{"countryCode":"PH","subdivisionName":"Apayao","code":"PH-APA"},"PH-AUR":{"countryCode":"PH","subdivisionName":"Aurora","code":"PH-AUR"},"PH-BAS":{"countryCode":"PH","subdivisionName":"Basilan","code":"PH-BAS"},"PH-BAN":{"countryCode":"PH","subdivisionName":"Bataan","code":"PH-BAN"},"PH-BTN":{"countryCode":"PH","subdivisionName":"Batanes","code":"PH-BTN"},"PH-BTG":{"countryCode":"PH","subdivisionName":"Batangas","code":"PH-BTG"},"PH-BEN":{"countryCode":"PH","subdivisionName":"Benguet","code":"PH-BEN"},"PH-BIL":{"countryCode":"PH","subdivisionName":"Biliran","code":"PH-BIL"},"PH-BOH":{"countryCode":"PH","subdivisionName":"Bohol","code":"PH-BOH"},"PH-BUK":{"countryCode":"PH","subdivisionName":"Bukidnon","code":"PH-BUK"},"PH-BUL":{"countryCode":"PH","subdivisionName":"Bulacan","code":"PH-BUL"},"PH-CAG":{"countryCode":"PH","subdivisionName":"Cagayan","code":"PH-CAG"},"PH-CAN":{"countryCode":"PH","subdivisionName":"Camarines Norte","code":"PH-CAN"},"PH-CAS":{"countryCode":"PH","subdivisionName":"Camarines Sur","code":"PH-CAS"},"PH-CAM":{"countryCode":"PH","subdivisionName":"Camiguin","code":"PH-CAM"},"PH-CAP":{"countryCode":"PH","subdivisionName":"Capiz","code":"PH-CAP"},"PH-CAT":{"countryCode":"PH","subdivisionName":"Catanduanes","code":"PH-CAT"},"PH-CAV":{"countryCode":"PH","subdivisionName":"Cavite","code":"PH-CAV"},"PH-CEB":{"countryCode":"PH","subdivisionName":"Cebu","code":"PH-CEB"},"PH-NCO":{"countryCode":"PH","subdivisionName":"Cotabato","code":"PH-NCO"},"PH-DAO":{"countryCode":"PH","subdivisionName":"Davao Oriental","code":"PH-DAO"},"PH-COM":{"countryCode":"PH","subdivisionName":"Davao de Oro","code":"PH-COM"},"PH-DAV":{"countryCode":"PH","subdivisionName":"Davao del Norte","code":"PH-DAV"},"PH-DAS":{"countryCode":"PH","subdivisionName":"Davao del Sur","code":"PH-DAS"},"PH-DIN":{"countryCode":"PH","subdivisionName":"Dinagat Islands","code":"PH-DIN"},"PH-EAS":{"countryCode":"PH","subdivisionName":"Eastern Samar","code":"PH-EAS"},"PH-GUI":{"countryCode":"PH","subdivisionName":"Guimaras","code":"PH-GUI"},"PH-IFU":{"countryCode":"PH","subdivisionName":"Ifugao","code":"PH-IFU"},"PH-ILN":{"countryCode":"PH","subdivisionName":"Ilocos Norte","code":"PH-ILN"},"PH-ILS":{"countryCode":"PH","subdivisionName":"Ilocos Sur","code":"PH-ILS"},"PH-ILI":{"countryCode":"PH","subdivisionName":"Iloilo","code":"PH-ILI"},"PH-ISA":{"countryCode":"PH","subdivisionName":"Isabela","code":"PH-ISA"},"PH-KAL":{"countryCode":"PH","subdivisionName":"Kalinga","code":"PH-KAL"},"PH-LUN":{"countryCode":"PH","subdivisionName":"La Union","code":"PH-LUN"},"PH-LAG":{"countryCode":"PH","subdivisionName":"Laguna","code":"PH-LAG"},"PH-LAN":{"countryCode":"PH","subdivisionName":"Lanao del Norte","code":"PH-LAN"},"PH-LAS":{"countryCode":"PH","subdivisionName":"Lanao del Sur","code":"PH-LAS"},"PH-LEY":{"countryCode":"PH","subdivisionName":"Leyte","code":"PH-LEY"},"PH-MAG":{"countryCode":"PH","subdivisionName":"Maguindanao","code":"PH-MAG"},"PH-MAD":{"countryCode":"PH","subdivisionName":"Marinduque","code":"PH-MAD"},"PH-MAS":{"countryCode":"PH","subdivisionName":"Masbate","code":"PH-MAS"},"PH-MDC":{"countryCode":"PH","subdivisionName":"Mindoro Occidental","code":"PH-MDC"},"PH-MDR":{"countryCode":"PH","subdivisionName":"Mindoro Oriental","code":"PH-MDR"},"PH-MSC":{"countryCode":"PH","subdivisionName":"Misamis Occidental","code":"PH-MSC"},"PH-MSR":{"countryCode":"PH","subdivisionName":"Misamis Oriental","code":"PH-MSR"},"PH-MOU":{"countryCode":"PH","subdivisionName":"Mountain Province","code":"PH-MOU"},"PH-00":{"countryCode":"PH","subdivisionName":"National Capital Region","code":"PH-00"},"PH-NEC":{"countryCode":"PH","subdivisionName":"Negros Occidental","code":"PH-NEC"},"PH-NER":{"countryCode":"PH","subdivisionName":"Negros Oriental","code":"PH-NER"},"PH-NSA":{"countryCode":"PH","subdivisionName":"Northern Samar","code":"PH-NSA"},"PH-NUE":{"countryCode":"PH","subdivisionName":"Nueva Ecija","code":"PH-NUE"},"PH-NUV":{"countryCode":"PH","subdivisionName":"Nueva Vizcaya","code":"PH-NUV"},"PH-PLW":{"countryCode":"PH","subdivisionName":"Palawan","code":"PH-PLW"},"PH-PAM":{"countryCode":"PH","subdivisionName":"Pampanga","code":"PH-PAM"},"PH-PAN":{"countryCode":"PH","subdivisionName":"Pangasinan","code":"PH-PAN"},"PH-QUE":{"countryCode":"PH","subdivisionName":"Quezon","code":"PH-QUE"},"PH-QUI":{"countryCode":"PH","subdivisionName":"Quirino","code":"PH-QUI"},"PH-RIZ":{"countryCode":"PH","subdivisionName":"Rizal","code":"PH-RIZ"},"PH-ROM":{"countryCode":"PH","subdivisionName":"Romblon","code":"PH-ROM"},"PH-WSA":{"countryCode":"PH","subdivisionName":"Samar","code":"PH-WSA"},"PH-SAR":{"countryCode":"PH","subdivisionName":"Sarangani","code":"PH-SAR"},"PH-SIG":{"countryCode":"PH","subdivisionName":"Siquijor","code":"PH-SIG"},"PH-SOR":{"countryCode":"PH","subdivisionName":"Sorsogon","code":"PH-SOR"},"PH-SCO":{"countryCode":"PH","subdivisionName":"South Cotabato","code":"PH-SCO"},"PH-SLE":{"countryCode":"PH","subdivisionName":"Southern Leyte","code":"PH-SLE"},"PH-SUK":{"countryCode":"PH","subdivisionName":"Sultan Kudarat","code":"PH-SUK"},"PH-SLU":{"countryCode":"PH","subdivisionName":"Sulu","code":"PH-SLU"},"PH-SUN":{"countryCode":"PH","subdivisionName":"Surigao del Norte","code":"PH-SUN"},"PH-SUR":{"countryCode":"PH","subdivisionName":"Surigao del Sur","code":"PH-SUR"},"PH-TAR":{"countryCode":"PH","subdivisionName":"Tarlac","code":"PH-TAR"},"PH-TAW":{"countryCode":"PH","subdivisionName":"Tawi-Tawi","code":"PH-TAW"},"PH-ZMB":{"countryCode":"PH","subdivisionName":"Zambales","code":"PH-ZMB"},"PH-ZSI":{"countryCode":"PH","subdivisionName":"Zamboanga Sibugay","code":"PH-ZSI"},"PH-ZAN":{"countryCode":"PH","subdivisionName":"Zamboanga del Norte","code":"PH-ZAN"},"PH-ZAS":{"countryCode":"PH","subdivisionName":"Zamboanga del Sur","code":"PH-ZAS"},"PK-JK":{"countryCode":"PK","subdivisionName":"Azad Jammu and Kashmir","code":"PK-JK"},"PK-BA":{"countryCode":"PK","subdivisionName":"Balochistan","code":"PK-BA"},"PK-GB":{"countryCode":"PK","subdivisionName":"Gilgit-Baltistan","code":"PK-GB"},"PK-IS":{"countryCode":"PK","subdivisionName":"Islamabad","code":"PK-IS"},"PK-KP":{"countryCode":"PK","subdivisionName":"Khyber Pakhtunkhwa","code":"PK-KP"},"PK-PB":{"countryCode":"PK","subdivisionName":"Punjab","code":"PK-PB"},"PK-SD":{"countryCode":"PK","subdivisionName":"Sindh","code":"PK-SD"},"PL-02":{"countryCode":"PL","subdivisionName":"Dolnoslaskie","code":"PL-02"},"PL-04":{"countryCode":"PL","subdivisionName":"Kujawsko-pomorskie","code":"PL-04"},"PL-10":{"countryCode":"PL","subdivisionName":"Lodzkie","code":"PL-10"},"PL-06":{"countryCode":"PL","subdivisionName":"Lubelskie","code":"PL-06"},"PL-08":{"countryCode":"PL","subdivisionName":"Lubuskie","code":"PL-08"},"PL-12":{"countryCode":"PL","subdivisionName":"Malopolskie","code":"PL-12"},"PL-14":{"countryCode":"PL","subdivisionName":"Mazowieckie","code":"PL-14"},"PL-16":{"countryCode":"PL","subdivisionName":"Opolskie","code":"PL-16"},"PL-18":{"countryCode":"PL","subdivisionName":"Podkarpackie","code":"PL-18"},"PL-20":{"countryCode":"PL","subdivisionName":"Podlaskie","code":"PL-20"},"PL-22":{"countryCode":"PL","subdivisionName":"Pomorskie","code":"PL-22"},"PL-24":{"countryCode":"PL","subdivisionName":"Slaskie","code":"PL-24"},"PL-26":{"countryCode":"PL","subdivisionName":"Swietokrzyskie","code":"PL-26"},"PL-28":{"countryCode":"PL","subdivisionName":"Warminsko-mazurskie","code":"PL-28"},"PL-30":{"countryCode":"PL","subdivisionName":"Wielkopolskie","code":"PL-30"},"PL-32":{"countryCode":"PL","subdivisionName":"Zachodniopomorskie","code":"PL-32"},"PS-BTH":{"countryCode":"PS","subdivisionName":"Bethlehem","code":"PS-BTH"},"PS-DEB":{"countryCode":"PS","subdivisionName":"Deir El Balah","code":"PS-DEB"},"PS-GZA":{"countryCode":"PS","subdivisionName":"Gaza","code":"PS-GZA"},"PS-HBN":{"countryCode":"PS","subdivisionName":"Hebron","code":"PS-HBN"},"PS-JEN":{"countryCode":"PS","subdivisionName":"Jenin","code":"PS-JEN"},"PS-JRH":{"countryCode":"PS","subdivisionName":"Jericho and Al Aghwar","code":"PS-JRH"},"PS-JEM":{"countryCode":"PS","subdivisionName":"Jerusalem","code":"PS-JEM"},"PS-KYS":{"countryCode":"PS","subdivisionName":"Khan Yunis","code":"PS-KYS"},"PS-NBS":{"countryCode":"PS","subdivisionName":"Nablus","code":"PS-NBS"},"PS-QQA":{"countryCode":"PS","subdivisionName":"Qalqilya","code":"PS-QQA"},"PS-RFH":{"countryCode":"PS","subdivisionName":"Rafah","code":"PS-RFH"},"PS-RBH":{"countryCode":"PS","subdivisionName":"Ramallah","code":"PS-RBH"},"PS-SLT":{"countryCode":"PS","subdivisionName":"Salfit","code":"PS-SLT"},"PS-TBS":{"countryCode":"PS","subdivisionName":"Tubas","code":"PS-TBS"},"PS-TKM":{"countryCode":"PS","subdivisionName":"Tulkarm","code":"PS-TKM"},"PT-01":{"countryCode":"PT","subdivisionName":"Aveiro","code":"PT-01"},"PT-02":{"countryCode":"PT","subdivisionName":"Beja","code":"PT-02"},"PT-03":{"countryCode":"PT","subdivisionName":"Braga","code":"PT-03"},"PT-04":{"countryCode":"PT","subdivisionName":"Braganca","code":"PT-04"},"PT-05":{"countryCode":"PT","subdivisionName":"Castelo Branco","code":"PT-05"},"PT-06":{"countryCode":"PT","subdivisionName":"Coimbra","code":"PT-06"},"PT-07":{"countryCode":"PT","subdivisionName":"Evora","code":"PT-07"},"PT-08":{"countryCode":"PT","subdivisionName":"Faro","code":"PT-08"},"PT-09":{"countryCode":"PT","subdivisionName":"Guarda","code":"PT-09"},"PT-10":{"countryCode":"PT","subdivisionName":"Leiria","code":"PT-10"},"PT-11":{"countryCode":"PT","subdivisionName":"Lisboa","code":"PT-11"},"PT-12":{"countryCode":"PT","subdivisionName":"Portalegre","code":"PT-12"},"PT-13":{"countryCode":"PT","subdivisionName":"Porto","code":"PT-13"},"PT-30":{"countryCode":"PT","subdivisionName":"Regiao Autonoma da Madeira","code":"PT-30"},"PT-20":{"countryCode":"PT","subdivisionName":"Regiao Autonoma dos Acores","code":"PT-20"},"PT-14":{"countryCode":"PT","subdivisionName":"Santarem","code":"PT-14"},"PT-15":{"countryCode":"PT","subdivisionName":"Setubal","code":"PT-15"},"PT-16":{"countryCode":"PT","subdivisionName":"Viana do Castelo","code":"PT-16"},"PT-17":{"countryCode":"PT","subdivisionName":"Vila Real","code":"PT-17"},"PT-18":{"countryCode":"PT","subdivisionName":"Viseu","code":"PT-18"},"PW-004":{"countryCode":"PW","subdivisionName":"Airai","code":"PW-004"},"PW-150":{"countryCode":"PW","subdivisionName":"Koror","code":"PW-150"},"PW-212":{"countryCode":"PW","subdivisionName":"Melekeok","code":"PW-212"},"PY-10":{"countryCode":"PY","subdivisionName":"Alto Parana","code":"PY-10"},"PY-13":{"countryCode":"PY","subdivisionName":"Amambay","code":"PY-13"},"PY-ASU":{"countryCode":"PY","subdivisionName":"Asuncion","code":"PY-ASU"},"PY-19":{"countryCode":"PY","subdivisionName":"Boqueron","code":"PY-19"},"PY-5":{"countryCode":"PY","subdivisionName":"Caaguazu","code":"PY-5"},"PY-6":{"countryCode":"PY","subdivisionName":"Caazapa","code":"PY-6"},"PY-14":{"countryCode":"PY","subdivisionName":"Canindeyu","code":"PY-14"},"PY-11":{"countryCode":"PY","subdivisionName":"Central","code":"PY-11"},"PY-1":{"countryCode":"PY","subdivisionName":"Concepcion","code":"PY-1"},"PY-3":{"countryCode":"PY","subdivisionName":"Cordillera","code":"PY-3"},"PY-4":{"countryCode":"PY","subdivisionName":"Guaira","code":"PY-4"},"PY-7":{"countryCode":"PY","subdivisionName":"Itapua","code":"PY-7"},"PY-8":{"countryCode":"PY","subdivisionName":"Misiones","code":"PY-8"},"PY-12":{"countryCode":"PY","subdivisionName":"Neembucu","code":"PY-12"},"PY-9":{"countryCode":"PY","subdivisionName":"Paraguari","code":"PY-9"},"PY-15":{"countryCode":"PY","subdivisionName":"Presidente Hayes","code":"PY-15"},"PY-2":{"countryCode":"PY","subdivisionName":"San Pedro","code":"PY-2"},"QA-DA":{"countryCode":"QA","subdivisionName":"Ad Dawhah","code":"QA-DA"},"QA-KH":{"countryCode":"QA","subdivisionName":"Al Khawr wa adh Dhakhirah","code":"QA-KH"},"QA-WA":{"countryCode":"QA","subdivisionName":"Al Wakrah","code":"QA-WA"},"QA-RA":{"countryCode":"QA","subdivisionName":"Ar Rayyan","code":"QA-RA"},"QA-MS":{"countryCode":"QA","subdivisionName":"Ash Shamal","code":"QA-MS"},"QA-ZA":{"countryCode":"QA","subdivisionName":"Az Za'ayin","code":"QA-ZA"},"QA-US":{"countryCode":"QA","subdivisionName":"Umm Salal","code":"QA-US"},"RO-AB":{"countryCode":"RO","subdivisionName":"Alba","code":"RO-AB"},"RO-AR":{"countryCode":"RO","subdivisionName":"Arad","code":"RO-AR"},"RO-AG":{"countryCode":"RO","subdivisionName":"Arges","code":"RO-AG"},"RO-BC":{"countryCode":"RO","subdivisionName":"Bacau","code":"RO-BC"},"RO-BH":{"countryCode":"RO","subdivisionName":"Bihor","code":"RO-BH"},"RO-BN":{"countryCode":"RO","subdivisionName":"Bistrita-Nasaud","code":"RO-BN"},"RO-BT":{"countryCode":"RO","subdivisionName":"Botosani","code":"RO-BT"},"RO-BR":{"countryCode":"RO","subdivisionName":"Braila","code":"RO-BR"},"RO-BV":{"countryCode":"RO","subdivisionName":"Brasov","code":"RO-BV"},"RO-B":{"countryCode":"RO","subdivisionName":"Bucuresti","code":"RO-B"},"RO-BZ":{"countryCode":"RO","subdivisionName":"Buzau","code":"RO-BZ"},"RO-CL":{"countryCode":"RO","subdivisionName":"Calarasi","code":"RO-CL"},"RO-CS":{"countryCode":"RO","subdivisionName":"Caras-Severin","code":"RO-CS"},"RO-CJ":{"countryCode":"RO","subdivisionName":"Cluj","code":"RO-CJ"},"RO-CT":{"countryCode":"RO","subdivisionName":"Constanta","code":"RO-CT"},"RO-CV":{"countryCode":"RO","subdivisionName":"Covasna","code":"RO-CV"},"RO-DB":{"countryCode":"RO","subdivisionName":"Dambovita","code":"RO-DB"},"RO-DJ":{"countryCode":"RO","subdivisionName":"Dolj","code":"RO-DJ"},"RO-GL":{"countryCode":"RO","subdivisionName":"Galati","code":"RO-GL"},"RO-GR":{"countryCode":"RO","subdivisionName":"Giurgiu","code":"RO-GR"},"RO-GJ":{"countryCode":"RO","subdivisionName":"Gorj","code":"RO-GJ"},"RO-HR":{"countryCode":"RO","subdivisionName":"Harghita","code":"RO-HR"},"RO-HD":{"countryCode":"RO","subdivisionName":"Hunedoara","code":"RO-HD"},"RO-IL":{"countryCode":"RO","subdivisionName":"Ialomita","code":"RO-IL"},"RO-IS":{"countryCode":"RO","subdivisionName":"Iasi","code":"RO-IS"},"RO-IF":{"countryCode":"RO","subdivisionName":"Ilfov","code":"RO-IF"},"RO-MM":{"countryCode":"RO","subdivisionName":"Maramures","code":"RO-MM"},"RO-MH":{"countryCode":"RO","subdivisionName":"Mehedinti","code":"RO-MH"},"RO-MS":{"countryCode":"RO","subdivisionName":"Mures","code":"RO-MS"},"RO-NT":{"countryCode":"RO","subdivisionName":"Neamt","code":"RO-NT"},"RO-OT":{"countryCode":"RO","subdivisionName":"Olt","code":"RO-OT"},"RO-PH":{"countryCode":"RO","subdivisionName":"Prahova","code":"RO-PH"},"RO-SJ":{"countryCode":"RO","subdivisionName":"Salaj","code":"RO-SJ"},"RO-SM":{"countryCode":"RO","subdivisionName":"Satu Mare","code":"RO-SM"},"RO-SB":{"countryCode":"RO","subdivisionName":"Sibiu","code":"RO-SB"},"RO-SV":{"countryCode":"RO","subdivisionName":"Suceava","code":"RO-SV"},"RO-TR":{"countryCode":"RO","subdivisionName":"Teleorman","code":"RO-TR"},"RO-TM":{"countryCode":"RO","subdivisionName":"Timis","code":"RO-TM"},"RO-TL":{"countryCode":"RO","subdivisionName":"Tulcea","code":"RO-TL"},"RO-VL":{"countryCode":"RO","subdivisionName":"Valcea","code":"RO-VL"},"RO-VS":{"countryCode":"RO","subdivisionName":"Vaslui","code":"RO-VS"},"RO-VN":{"countryCode":"RO","subdivisionName":"Vrancea","code":"RO-VN"},"RS-00":{"countryCode":"RS","subdivisionName":"Beograd","code":"RS-00"},"RS-14":{"countryCode":"RS","subdivisionName":"Borski okrug","code":"RS-14"},"RS-11":{"countryCode":"RS","subdivisionName":"Branicevski okrug","code":"RS-11"},"RS-23":{"countryCode":"RS","subdivisionName":"Jablanicki okrug","code":"RS-23"},"RS-06":{"countryCode":"RS","subdivisionName":"Juznobacki okrug","code":"RS-06"},"RS-04":{"countryCode":"RS","subdivisionName":"Juznobanatski okrug","code":"RS-04"},"RS-09":{"countryCode":"RS","subdivisionName":"Kolubarski okrug","code":"RS-09"},"RS-28":{"countryCode":"RS","subdivisionName":"Kosovsko-Mitrovacki okrug","code":"RS-28"},"RS-08":{"countryCode":"RS","subdivisionName":"Macvanski okrug","code":"RS-08"},"RS-17":{"countryCode":"RS","subdivisionName":"Moravicki okrug","code":"RS-17"},"RS-20":{"countryCode":"RS","subdivisionName":"Nisavski okrug","code":"RS-20"},"RS-24":{"countryCode":"RS","subdivisionName":"Pcinjski okrug","code":"RS-24"},"RS-26":{"countryCode":"RS","subdivisionName":"Pecki okrug","code":"RS-26"},"RS-22":{"countryCode":"RS","subdivisionName":"Pirotski okrug","code":"RS-22"},"RS-10":{"countryCode":"RS","subdivisionName":"Podunavski okrug","code":"RS-10"},"RS-13":{"countryCode":"RS","subdivisionName":"Pomoravski okrug","code":"RS-13"},"RS-27":{"countryCode":"RS","subdivisionName":"Prizrenski okrug","code":"RS-27"},"RS-19":{"countryCode":"RS","subdivisionName":"Rasinski okrug","code":"RS-19"},"RS-18":{"countryCode":"RS","subdivisionName":"Raski okrug","code":"RS-18"},"RS-01":{"countryCode":"RS","subdivisionName":"Severnobacki okrug","code":"RS-01"},"RS-03":{"countryCode":"RS","subdivisionName":"Severnobanatski okrug","code":"RS-03"},"RS-02":{"countryCode":"RS","subdivisionName":"Srednjebanatski okrug","code":"RS-02"},"RS-07":{"countryCode":"RS","subdivisionName":"Sremski okrug","code":"RS-07"},"RS-12":{"countryCode":"RS","subdivisionName":"Sumadijski okrug","code":"RS-12"},"RS-21":{"countryCode":"RS","subdivisionName":"Toplicki okrug","code":"RS-21"},"RS-15":{"countryCode":"RS","subdivisionName":"Zajecarski okrug","code":"RS-15"},"RS-05":{"countryCode":"RS","subdivisionName":"Zapadnobacki okrug","code":"RS-05"},"RS-16":{"countryCode":"RS","subdivisionName":"Zlatiborski okrug","code":"RS-16"},"RU-AD":{"countryCode":"RU","subdivisionName":"Adygeya, Respublika","code":"RU-AD"},"RU-AL":{"countryCode":"RU","subdivisionName":"Altay, Respublika","code":"RU-AL"},"RU-ALT":{"countryCode":"RU","subdivisionName":"Altayskiy kray","code":"RU-ALT"},"RU-AMU":{"countryCode":"RU","subdivisionName":"Amurskaya oblast'","code":"RU-AMU"},"RU-ARK":{"countryCode":"RU","subdivisionName":"Arkhangel'skaya oblast'","code":"RU-ARK"},"RU-AST":{"countryCode":"RU","subdivisionName":"Astrakhanskaya oblast'","code":"RU-AST"},"RU-BA":{"countryCode":"RU","subdivisionName":"Bashkortostan, Respublika","code":"RU-BA"},"RU-BEL":{"countryCode":"RU","subdivisionName":"Belgorodskaya oblast'","code":"RU-BEL"},"RU-BRY":{"countryCode":"RU","subdivisionName":"Bryanskaya oblast'","code":"RU-BRY"},"RU-BU":{"countryCode":"RU","subdivisionName":"Buryatiya, Respublika","code":"RU-BU"},"RU-CE":{"countryCode":"RU","subdivisionName":"Chechenskaya Respublika","code":"RU-CE"},"RU-CHE":{"countryCode":"RU","subdivisionName":"Chelyabinskaya oblast'","code":"RU-CHE"},"RU-CHU":{"countryCode":"RU","subdivisionName":"Chukotskiy avtonomnyy okrug","code":"RU-CHU"},"RU-CU":{"countryCode":"RU","subdivisionName":"Chuvashskaya Respublika","code":"RU-CU"},"RU-DA":{"countryCode":"RU","subdivisionName":"Dagestan, Respublika","code":"RU-DA"},"RU-IN":{"countryCode":"RU","subdivisionName":"Ingushetiya, Respublika","code":"RU-IN"},"RU-IRK":{"countryCode":"RU","subdivisionName":"Irkutskaya oblast'","code":"RU-IRK"},"RU-IVA":{"countryCode":"RU","subdivisionName":"Ivanovskaya oblast'","code":"RU-IVA"},"RU-KB":{"countryCode":"RU","subdivisionName":"Kabardino-Balkarskaya Respublika","code":"RU-KB"},"RU-KGD":{"countryCode":"RU","subdivisionName":"Kaliningradskaya oblast'","code":"RU-KGD"},"RU-KL":{"countryCode":"RU","subdivisionName":"Kalmykiya, Respublika","code":"RU-KL"},"RU-KLU":{"countryCode":"RU","subdivisionName":"Kaluzhskaya oblast'","code":"RU-KLU"},"RU-KAM":{"countryCode":"RU","subdivisionName":"Kamchatskiy kray","code":"RU-KAM"},"RU-KC":{"countryCode":"RU","subdivisionName":"Karachayevo-Cherkesskaya Respublika","code":"RU-KC"},"RU-KR":{"countryCode":"RU","subdivisionName":"Kareliya, Respublika","code":"RU-KR"},"RU-KEM":{"countryCode":"RU","subdivisionName":"Kemerovskaya oblast'","code":"RU-KEM"},"RU-KHA":{"countryCode":"RU","subdivisionName":"Khabarovskiy kray","code":"RU-KHA"},"RU-KK":{"countryCode":"RU","subdivisionName":"Khakasiya, Respublika","code":"RU-KK"},"RU-KHM":{"countryCode":"RU","subdivisionName":"Khanty-Mansiyskiy avtonomnyy okrug","code":"RU-KHM"},"RU-KIR":{"countryCode":"RU","subdivisionName":"Kirovskaya oblast'","code":"RU-KIR"},"RU-KO":{"countryCode":"RU","subdivisionName":"Komi, Respublika","code":"RU-KO"},"RU-KOS":{"countryCode":"RU","subdivisionName":"Kostromskaya oblast'","code":"RU-KOS"},"RU-KDA":{"countryCode":"RU","subdivisionName":"Krasnodarskiy kray","code":"RU-KDA"},"RU-KYA":{"countryCode":"RU","subdivisionName":"Krasnoyarskiy kray","code":"RU-KYA"},"RU-KGN":{"countryCode":"RU","subdivisionName":"Kurganskaya oblast'","code":"RU-KGN"},"RU-KRS":{"countryCode":"RU","subdivisionName":"Kurskaya oblast'","code":"RU-KRS"},"RU-LEN":{"countryCode":"RU","subdivisionName":"Leningradskaya oblast'","code":"RU-LEN"},"RU-LIP":{"countryCode":"RU","subdivisionName":"Lipetskaya oblast'","code":"RU-LIP"},"RU-MAG":{"countryCode":"RU","subdivisionName":"Magadanskaya oblast'","code":"RU-MAG"},"RU-ME":{"countryCode":"RU","subdivisionName":"Mariy El, Respublika","code":"RU-ME"},"RU-MO":{"countryCode":"RU","subdivisionName":"Mordoviya, Respublika","code":"RU-MO"},"RU-MOS":{"countryCode":"RU","subdivisionName":"Moskovskaya oblast'","code":"RU-MOS"},"RU-MOW":{"countryCode":"RU","subdivisionName":"Moskva","code":"RU-MOW"},"RU-MUR":{"countryCode":"RU","subdivisionName":"Murmanskaya oblast'","code":"RU-MUR"},"RU-NEN":{"countryCode":"RU","subdivisionName":"Nenetskiy avtonomnyy okrug","code":"RU-NEN"},"RU-NIZ":{"countryCode":"RU","subdivisionName":"Nizhegorodskaya oblast'","code":"RU-NIZ"},"RU-NGR":{"countryCode":"RU","subdivisionName":"Novgorodskaya oblast'","code":"RU-NGR"},"RU-NVS":{"countryCode":"RU","subdivisionName":"Novosibirskaya oblast'","code":"RU-NVS"},"RU-OMS":{"countryCode":"RU","subdivisionName":"Omskaya oblast'","code":"RU-OMS"},"RU-ORE":{"countryCode":"RU","subdivisionName":"Orenburgskaya oblast'","code":"RU-ORE"},"RU-ORL":{"countryCode":"RU","subdivisionName":"Orlovskaya oblast'","code":"RU-ORL"},"RU-PNZ":{"countryCode":"RU","subdivisionName":"Penzenskaya oblast'","code":"RU-PNZ"},"RU-PER":{"countryCode":"RU","subdivisionName":"Permskiy kray","code":"RU-PER"},"RU-PRI":{"countryCode":"RU","subdivisionName":"Primorskiy kray","code":"RU-PRI"},"RU-PSK":{"countryCode":"RU","subdivisionName":"Pskovskaya oblast'","code":"RU-PSK"},"RU-ROS":{"countryCode":"RU","subdivisionName":"Rostovskaya oblast'","code":"RU-ROS"},"RU-RYA":{"countryCode":"RU","subdivisionName":"Ryazanskaya oblast'","code":"RU-RYA"},"RU-SA":{"countryCode":"RU","subdivisionName":"Saha, Respublika","code":"RU-SA"},"RU-SAK":{"countryCode":"RU","subdivisionName":"Sakhalinskaya oblast'","code":"RU-SAK"},"RU-SAM":{"countryCode":"RU","subdivisionName":"Samarskaya oblast'","code":"RU-SAM"},"RU-SPE":{"countryCode":"RU","subdivisionName":"Sankt-Peterburg","code":"RU-SPE"},"RU-SAR":{"countryCode":"RU","subdivisionName":"Saratovskaya oblast'","code":"RU-SAR"},"RU-SE":{"countryCode":"RU","subdivisionName":"Severnaya Osetiya, Respublika","code":"RU-SE"},"RU-SMO":{"countryCode":"RU","subdivisionName":"Smolenskaya oblast'","code":"RU-SMO"},"RU-STA":{"countryCode":"RU","subdivisionName":"Stavropol'skiy kray","code":"RU-STA"},"RU-SVE":{"countryCode":"RU","subdivisionName":"Sverdlovskaya oblast'","code":"RU-SVE"},"RU-TAM":{"countryCode":"RU","subdivisionName":"Tambovskaya oblast'","code":"RU-TAM"},"RU-TA":{"countryCode":"RU","subdivisionName":"Tatarstan, Respublika","code":"RU-TA"},"RU-TOM":{"countryCode":"RU","subdivisionName":"Tomskaya oblast'","code":"RU-TOM"},"RU-TUL":{"countryCode":"RU","subdivisionName":"Tul'skaya oblast'","code":"RU-TUL"},"RU-TVE":{"countryCode":"RU","subdivisionName":"Tverskaya oblast'","code":"RU-TVE"},"RU-TYU":{"countryCode":"RU","subdivisionName":"Tyumenskaya oblast'","code":"RU-TYU"},"RU-TY":{"countryCode":"RU","subdivisionName":"Tyva, Respublika","code":"RU-TY"},"RU-UD":{"countryCode":"RU","subdivisionName":"Udmurtskaya Respublika","code":"RU-UD"},"RU-ULY":{"countryCode":"RU","subdivisionName":"Ul'yanovskaya oblast'","code":"RU-ULY"},"RU-VLA":{"countryCode":"RU","subdivisionName":"Vladimirskaya oblast'","code":"RU-VLA"},"RU-VGG":{"countryCode":"RU","subdivisionName":"Volgogradskaya oblast'","code":"RU-VGG"},"RU-VLG":{"countryCode":"RU","subdivisionName":"Vologodskaya oblast'","code":"RU-VLG"},"RU-VOR":{"countryCode":"RU","subdivisionName":"Voronezhskaya oblast'","code":"RU-VOR"},"RU-YAN":{"countryCode":"RU","subdivisionName":"Yamalo-Nenetskiy avtonomnyy okrug","code":"RU-YAN"},"RU-YAR":{"countryCode":"RU","subdivisionName":"Yaroslavskaya oblast'","code":"RU-YAR"},"RU-YEV":{"countryCode":"RU","subdivisionName":"Yevreyskaya avtonomnaya oblast'","code":"RU-YEV"},"RU-ZAB":{"countryCode":"RU","subdivisionName":"Zabaykal'skiy kray","code":"RU-ZAB"},"RW-02":{"countryCode":"RW","subdivisionName":"Est","code":"RW-02"},"RW-03":{"countryCode":"RW","subdivisionName":"Nord","code":"RW-03"},"RW-04":{"countryCode":"RW","subdivisionName":"Ouest","code":"RW-04"},"RW-05":{"countryCode":"RW","subdivisionName":"Sud","code":"RW-05"},"RW-01":{"countryCode":"RW","subdivisionName":"Ville de Kigali","code":"RW-01"},"SA-14":{"countryCode":"SA","subdivisionName":"'Asir","code":"SA-14"},"SA-11":{"countryCode":"SA","subdivisionName":"Al Bahah","code":"SA-11"},"SA-08":{"countryCode":"SA","subdivisionName":"Al Hudud ash Shamaliyah","code":"SA-08"},"SA-12":{"countryCode":"SA","subdivisionName":"Al Jawf","code":"SA-12"},"SA-03":{"countryCode":"SA","subdivisionName":"Al Madinah al Munawwarah","code":"SA-03"},"SA-05":{"countryCode":"SA","subdivisionName":"Al Qasim","code":"SA-05"},"SA-01":{"countryCode":"SA","subdivisionName":"Ar Riyad","code":"SA-01"},"SA-04":{"countryCode":"SA","subdivisionName":"Ash Sharqiyah","code":"SA-04"},"SA-06":{"countryCode":"SA","subdivisionName":"Ha'il","code":"SA-06"},"SA-09":{"countryCode":"SA","subdivisionName":"Jazan","code":"SA-09"},"SA-02":{"countryCode":"SA","subdivisionName":"Makkah al Mukarramah","code":"SA-02"},"SA-10":{"countryCode":"SA","subdivisionName":"Najran","code":"SA-10"},"SA-07":{"countryCode":"SA","subdivisionName":"Tabuk","code":"SA-07"},"SB-CH":{"countryCode":"SB","subdivisionName":"Choiseul","code":"SB-CH"},"SB-GU":{"countryCode":"SB","subdivisionName":"Guadalcanal","code":"SB-GU"},"SB-WE":{"countryCode":"SB","subdivisionName":"Western","code":"SB-WE"},"SC-02":{"countryCode":"SC","subdivisionName":"Anse Boileau","code":"SC-02"},"SC-05":{"countryCode":"SC","subdivisionName":"Anse Royale","code":"SC-05"},"SC-01":{"countryCode":"SC","subdivisionName":"Anse aux Pins","code":"SC-01"},"SC-06":{"countryCode":"SC","subdivisionName":"Baie Lazare","code":"SC-06"},"SC-07":{"countryCode":"SC","subdivisionName":"Baie Sainte Anne","code":"SC-07"},"SC-08":{"countryCode":"SC","subdivisionName":"Beau Vallon","code":"SC-08"},"SC-10":{"countryCode":"SC","subdivisionName":"Bel Ombre","code":"SC-10"},"SC-11":{"countryCode":"SC","subdivisionName":"Cascade","code":"SC-11"},"SC-16":{"countryCode":"SC","subdivisionName":"English River","code":"SC-16"},"SC-13":{"countryCode":"SC","subdivisionName":"Grand Anse Mahe","code":"SC-13"},"SC-14":{"countryCode":"SC","subdivisionName":"Grand Anse Praslin","code":"SC-14"},"SC-15":{"countryCode":"SC","subdivisionName":"La Digue","code":"SC-15"},"SC-20":{"countryCode":"SC","subdivisionName":"Pointe Larue","code":"SC-20"},"SC-23":{"countryCode":"SC","subdivisionName":"Takamaka","code":"SC-23"},"SD-NB":{"countryCode":"SD","subdivisionName":"Blue Nile","code":"SD-NB"},"SD-DC":{"countryCode":"SD","subdivisionName":"Central Darfur","code":"SD-DC"},"SD-GD":{"countryCode":"SD","subdivisionName":"Gedaref","code":"SD-GD"},"SD-GZ":{"countryCode":"SD","subdivisionName":"Gezira","code":"SD-GZ"},"SD-KA":{"countryCode":"SD","subdivisionName":"Kassala","code":"SD-KA"},"SD-KH":{"countryCode":"SD","subdivisionName":"Khartoum","code":"SD-KH"},"SD-DN":{"countryCode":"SD","subdivisionName":"North Darfur","code":"SD-DN"},"SD-KN":{"countryCode":"SD","subdivisionName":"North Kordofan","code":"SD-KN"},"SD-NO":{"countryCode":"SD","subdivisionName":"Northern","code":"SD-NO"},"SD-RS":{"countryCode":"SD","subdivisionName":"Red Sea","code":"SD-RS"},"SD-NR":{"countryCode":"SD","subdivisionName":"River Nile","code":"SD-NR"},"SD-SI":{"countryCode":"SD","subdivisionName":"Sennar","code":"SD-SI"},"SD-DS":{"countryCode":"SD","subdivisionName":"South Darfur","code":"SD-DS"},"SD-KS":{"countryCode":"SD","subdivisionName":"South Kordofan","code":"SD-KS"},"SD-DW":{"countryCode":"SD","subdivisionName":"West Darfur","code":"SD-DW"},"SD-GK":{"countryCode":"SD","subdivisionName":"West Kordofan","code":"SD-GK"},"SD-NW":{"countryCode":"SD","subdivisionName":"White Nile","code":"SD-NW"},"SE-K":{"countryCode":"SE","subdivisionName":"Blekinge lan","code":"SE-K"},"SE-W":{"countryCode":"SE","subdivisionName":"Dalarnas lan","code":"SE-W"},"SE-X":{"countryCode":"SE","subdivisionName":"Gavleborgs lan","code":"SE-X"},"SE-I":{"countryCode":"SE","subdivisionName":"Gotlands lan","code":"SE-I"},"SE-N":{"countryCode":"SE","subdivisionName":"Hallands lan","code":"SE-N"},"SE-Z":{"countryCode":"SE","subdivisionName":"Jamtlands lan","code":"SE-Z"},"SE-F":{"countryCode":"SE","subdivisionName":"Jonkopings lan","code":"SE-F"},"SE-H":{"countryCode":"SE","subdivisionName":"Kalmar lan","code":"SE-H"},"SE-G":{"countryCode":"SE","subdivisionName":"Kronobergs lan","code":"SE-G"},"SE-BD":{"countryCode":"SE","subdivisionName":"Norrbottens lan","code":"SE-BD"},"SE-T":{"countryCode":"SE","subdivisionName":"Orebro lan","code":"SE-T"},"SE-E":{"countryCode":"SE","subdivisionName":"Ostergotlands lan","code":"SE-E"},"SE-M":{"countryCode":"SE","subdivisionName":"Skane lan","code":"SE-M"},"SE-D":{"countryCode":"SE","subdivisionName":"Sodermanlands lan","code":"SE-D"},"SE-AB":{"countryCode":"SE","subdivisionName":"Stockholms lan","code":"SE-AB"},"SE-C":{"countryCode":"SE","subdivisionName":"Uppsala lan","code":"SE-C"},"SE-S":{"countryCode":"SE","subdivisionName":"Varmlands lan","code":"SE-S"},"SE-AC":{"countryCode":"SE","subdivisionName":"Vasterbottens lan","code":"SE-AC"},"SE-Y":{"countryCode":"SE","subdivisionName":"Vasternorrlands lan","code":"SE-Y"},"SE-U":{"countryCode":"SE","subdivisionName":"Vastmanlands lan","code":"SE-U"},"SE-O":{"countryCode":"SE","subdivisionName":"Vastra Gotalands lan","code":"SE-O"},"SH-HL":{"countryCode":"SH","subdivisionName":"Saint Helena","code":"SH-HL"},"SI-001":{"countryCode":"SI","subdivisionName":"Ajdovscina","code":"SI-001"},"SI-213":{"countryCode":"SI","subdivisionName":"Ankaran","code":"SI-213"},"SI-195":{"countryCode":"SI","subdivisionName":"Apace","code":"SI-195"},"SI-002":{"countryCode":"SI","subdivisionName":"Beltinci","code":"SI-002"},"SI-148":{"countryCode":"SI","subdivisionName":"Benedikt","code":"SI-148"},"SI-149":{"countryCode":"SI","subdivisionName":"Bistrica ob Sotli","code":"SI-149"},"SI-003":{"countryCode":"SI","subdivisionName":"Bled","code":"SI-003"},"SI-150":{"countryCode":"SI","subdivisionName":"Bloke","code":"SI-150"},"SI-004":{"countryCode":"SI","subdivisionName":"Bohinj","code":"SI-004"},"SI-005":{"countryCode":"SI","subdivisionName":"Borovnica","code":"SI-005"},"SI-006":{"countryCode":"SI","subdivisionName":"Bovec","code":"SI-006"},"SI-151":{"countryCode":"SI","subdivisionName":"Braslovce","code":"SI-151"},"SI-007":{"countryCode":"SI","subdivisionName":"Brda","code":"SI-007"},"SI-009":{"countryCode":"SI","subdivisionName":"Brezice","code":"SI-009"},"SI-008":{"countryCode":"SI","subdivisionName":"Brezovica","code":"SI-008"},"SI-152":{"countryCode":"SI","subdivisionName":"Cankova","code":"SI-152"},"SI-011":{"countryCode":"SI","subdivisionName":"Celje","code":"SI-011"},"SI-012":{"countryCode":"SI","subdivisionName":"Cerklje na Gorenjskem","code":"SI-012"},"SI-013":{"countryCode":"SI","subdivisionName":"Cerknica","code":"SI-013"},"SI-014":{"countryCode":"SI","subdivisionName":"Cerkno","code":"SI-014"},"SI-196":{"countryCode":"SI","subdivisionName":"Cirkulane","code":"SI-196"},"SI-015":{"countryCode":"SI","subdivisionName":"Crensovci","code":"SI-015"},"SI-017":{"countryCode":"SI","subdivisionName":"Crnomelj","code":"SI-017"},"SI-018":{"countryCode":"SI","subdivisionName":"Destrnik","code":"SI-018"},"SI-019":{"countryCode":"SI","subdivisionName":"Divaca","code":"SI-019"},"SI-154":{"countryCode":"SI","subdivisionName":"Dobje","code":"SI-154"},"SI-020":{"countryCode":"SI","subdivisionName":"Dobrepolje","code":"SI-020"},"SI-155":{"countryCode":"SI","subdivisionName":"Dobrna","code":"SI-155"},"SI-021":{"countryCode":"SI","subdivisionName":"Dobrova-Polhov Gradec","code":"SI-021"},"SI-156":{"countryCode":"SI","subdivisionName":"Dobrovnik","code":"SI-156"},"SI-023":{"countryCode":"SI","subdivisionName":"Domzale","code":"SI-023"},"SI-024":{"countryCode":"SI","subdivisionName":"Dornava","code":"SI-024"},"SI-025":{"countryCode":"SI","subdivisionName":"Dravograd","code":"SI-025"},"SI-026":{"countryCode":"SI","subdivisionName":"Duplek","code":"SI-026"},"SI-207":{"countryCode":"SI","subdivisionName":"Gorje","code":"SI-207"},"SI-029":{"countryCode":"SI","subdivisionName":"Gornja Radgona","code":"SI-029"},"SI-031":{"countryCode":"SI","subdivisionName":"Gornji Petrovci","code":"SI-031"},"SI-158":{"countryCode":"SI","subdivisionName":"Grad","code":"SI-158"},"SI-032":{"countryCode":"SI","subdivisionName":"Grosuplje","code":"SI-032"},"SI-159":{"countryCode":"SI","subdivisionName":"Hajdina","code":"SI-159"},"SI-160":{"countryCode":"SI","subdivisionName":"Hoce-Slivnica","code":"SI-160"},"SI-161":{"countryCode":"SI","subdivisionName":"Hodos","code":"SI-161"},"SI-162":{"countryCode":"SI","subdivisionName":"Horjul","code":"SI-162"},"SI-034":{"countryCode":"SI","subdivisionName":"Hrastnik","code":"SI-034"},"SI-035":{"countryCode":"SI","subdivisionName":"Hrpelje-Kozina","code":"SI-035"},"SI-036":{"countryCode":"SI","subdivisionName":"Idrija","code":"SI-036"},"SI-037":{"countryCode":"SI","subdivisionName":"Ig","code":"SI-037"},"SI-038":{"countryCode":"SI","subdivisionName":"Ilirska Bistrica","code":"SI-038"},"SI-039":{"countryCode":"SI","subdivisionName":"Ivancna Gorica","code":"SI-039"},"SI-040":{"countryCode":"SI","subdivisionName":"Izola","code":"SI-040"},"SI-041":{"countryCode":"SI","subdivisionName":"Jesenice","code":"SI-041"},"SI-042":{"countryCode":"SI","subdivisionName":"Jursinci","code":"SI-042"},"SI-043":{"countryCode":"SI","subdivisionName":"Kamnik","code":"SI-043"},"SI-044":{"countryCode":"SI","subdivisionName":"Kanal","code":"SI-044"},"SI-045":{"countryCode":"SI","subdivisionName":"Kidricevo","code":"SI-045"},"SI-046":{"countryCode":"SI","subdivisionName":"Kobarid","code":"SI-046"},"SI-047":{"countryCode":"SI","subdivisionName":"Kobilje","code":"SI-047"},"SI-048":{"countryCode":"SI","subdivisionName":"Kocevje","code":"SI-048"},"SI-049":{"countryCode":"SI","subdivisionName":"Komen","code":"SI-049"},"SI-164":{"countryCode":"SI","subdivisionName":"Komenda","code":"SI-164"},"SI-050":{"countryCode":"SI","subdivisionName":"Koper","code":"SI-050"},"SI-197":{"countryCode":"SI","subdivisionName":"Kosanjevica na Krki","code":"SI-197"},"SI-165":{"countryCode":"SI","subdivisionName":"Kostel","code":"SI-165"},"SI-052":{"countryCode":"SI","subdivisionName":"Kranj","code":"SI-052"},"SI-053":{"countryCode":"SI","subdivisionName":"Kranjska Gora","code":"SI-053"},"SI-166":{"countryCode":"SI","subdivisionName":"Krizevci","code":"SI-166"},"SI-054":{"countryCode":"SI","subdivisionName":"Krsko","code":"SI-054"},"SI-055":{"countryCode":"SI","subdivisionName":"Kungota","code":"SI-055"},"SI-056":{"countryCode":"SI","subdivisionName":"Kuzma","code":"SI-056"},"SI-057":{"countryCode":"SI","subdivisionName":"Lasko","code":"SI-057"},"SI-058":{"countryCode":"SI","subdivisionName":"Lenart","code":"SI-058"},"SI-059":{"countryCode":"SI","subdivisionName":"Lendava","code":"SI-059"},"SI-060":{"countryCode":"SI","subdivisionName":"Litija","code":"SI-060"},"SI-061":{"countryCode":"SI","subdivisionName":"Ljubljana","code":"SI-061"},"SI-063":{"countryCode":"SI","subdivisionName":"Ljutomer","code":"SI-063"},"SI-208":{"countryCode":"SI","subdivisionName":"Log-Dragomer","code":"SI-208"},"SI-064":{"countryCode":"SI","subdivisionName":"Logatec","code":"SI-064"},"SI-065":{"countryCode":"SI","subdivisionName":"Loska dolina","code":"SI-065"},"SI-066":{"countryCode":"SI","subdivisionName":"Loski Potok","code":"SI-066"},"SI-167":{"countryCode":"SI","subdivisionName":"Lovrenc na Pohorju","code":"SI-167"},"SI-067":{"countryCode":"SI","subdivisionName":"Luce","code":"SI-067"},"SI-068":{"countryCode":"SI","subdivisionName":"Lukovica","code":"SI-068"},"SI-069":{"countryCode":"SI","subdivisionName":"Majsperk","code":"SI-069"},"SI-198":{"countryCode":"SI","subdivisionName":"Makole","code":"SI-198"},"SI-070":{"countryCode":"SI","subdivisionName":"Maribor","code":"SI-070"},"SI-168":{"countryCode":"SI","subdivisionName":"Markovci","code":"SI-168"},"SI-071":{"countryCode":"SI","subdivisionName":"Medvode","code":"SI-071"},"SI-072":{"countryCode":"SI","subdivisionName":"Menges","code":"SI-072"},"SI-073":{"countryCode":"SI","subdivisionName":"Metlika","code":"SI-073"},"SI-074":{"countryCode":"SI","subdivisionName":"Mezica","code":"SI-074"},"SI-169":{"countryCode":"SI","subdivisionName":"Miklavz na Dravskem polju","code":"SI-169"},"SI-075":{"countryCode":"SI","subdivisionName":"Miren-Kostanjevica","code":"SI-075"},"SI-212":{"countryCode":"SI","subdivisionName":"Mirna","code":"SI-212"},"SI-170":{"countryCode":"SI","subdivisionName":"Mirna Pec","code":"SI-170"},"SI-076":{"countryCode":"SI","subdivisionName":"Mislinja","code":"SI-076"},"SI-199":{"countryCode":"SI","subdivisionName":"Mokronog-Trebelno","code":"SI-199"},"SI-077":{"countryCode":"SI","subdivisionName":"Moravce","code":"SI-077"},"SI-079":{"countryCode":"SI","subdivisionName":"Mozirje","code":"SI-079"},"SI-080":{"countryCode":"SI","subdivisionName":"Murska Sobota","code":"SI-080"},"SI-081":{"countryCode":"SI","subdivisionName":"Muta","code":"SI-081"},"SI-082":{"countryCode":"SI","subdivisionName":"Naklo","code":"SI-082"},"SI-083":{"countryCode":"SI","subdivisionName":"Nazarje","code":"SI-083"},"SI-084":{"countryCode":"SI","subdivisionName":"Nova Gorica","code":"SI-084"},"SI-085":{"countryCode":"SI","subdivisionName":"Novo Mesto","code":"SI-085"},"SI-086":{"countryCode":"SI","subdivisionName":"Odranci","code":"SI-086"},"SI-171":{"countryCode":"SI","subdivisionName":"Oplotnica","code":"SI-171"},"SI-087":{"countryCode":"SI","subdivisionName":"Ormoz","code":"SI-087"},"SI-090":{"countryCode":"SI","subdivisionName":"Piran","code":"SI-090"},"SI-091":{"countryCode":"SI","subdivisionName":"Pivka","code":"SI-091"},"SI-092":{"countryCode":"SI","subdivisionName":"Podcetrtek","code":"SI-092"},"SI-172":{"countryCode":"SI","subdivisionName":"Podlehnik","code":"SI-172"},"SI-200":{"countryCode":"SI","subdivisionName":"Poljcane","code":"SI-200"},"SI-173":{"countryCode":"SI","subdivisionName":"Polzela","code":"SI-173"},"SI-094":{"countryCode":"SI","subdivisionName":"Postojna","code":"SI-094"},"SI-174":{"countryCode":"SI","subdivisionName":"Prebold","code":"SI-174"},"SI-095":{"countryCode":"SI","subdivisionName":"Preddvor","code":"SI-095"},"SI-175":{"countryCode":"SI","subdivisionName":"Prevalje","code":"SI-175"},"SI-096":{"countryCode":"SI","subdivisionName":"Ptuj","code":"SI-096"},"SI-097":{"countryCode":"SI","subdivisionName":"Puconci","code":"SI-097"},"SI-098":{"countryCode":"SI","subdivisionName":"Race-Fram","code":"SI-098"},"SI-099":{"countryCode":"SI","subdivisionName":"Radece","code":"SI-099"},"SI-100":{"countryCode":"SI","subdivisionName":"Radenci","code":"SI-100"},"SI-101":{"countryCode":"SI","subdivisionName":"Radlje ob Dravi","code":"SI-101"},"SI-102":{"countryCode":"SI","subdivisionName":"Radovljica","code":"SI-102"},"SI-103":{"countryCode":"SI","subdivisionName":"Ravne na Koroskem","code":"SI-103"},"SI-176":{"countryCode":"SI","subdivisionName":"Razkrizje","code":"SI-176"},"SI-209":{"countryCode":"SI","subdivisionName":"Recica ob Savinji","code":"SI-209"},"SI-201":{"countryCode":"SI","subdivisionName":"Rence-Vogrsko","code":"SI-201"},"SI-104":{"countryCode":"SI","subdivisionName":"Ribnica","code":"SI-104"},"SI-106":{"countryCode":"SI","subdivisionName":"Rogaska Slatina","code":"SI-106"},"SI-105":{"countryCode":"SI","subdivisionName":"Rogasovci","code":"SI-105"},"SI-108":{"countryCode":"SI","subdivisionName":"Ruse","code":"SI-108"},"SI-033":{"countryCode":"SI","subdivisionName":"Salovci","code":"SI-033"},"SI-109":{"countryCode":"SI","subdivisionName":"Semic","code":"SI-109"},"SI-183":{"countryCode":"SI","subdivisionName":"Sempeter-Vrtojba","code":"SI-183"},"SI-117":{"countryCode":"SI","subdivisionName":"Sencur","code":"SI-117"},"SI-118":{"countryCode":"SI","subdivisionName":"Sentilj","code":"SI-118"},"SI-119":{"countryCode":"SI","subdivisionName":"Sentjernej","code":"SI-119"},"SI-120":{"countryCode":"SI","subdivisionName":"Sentjur","code":"SI-120"},"SI-211":{"countryCode":"SI","subdivisionName":"Sentrupert","code":"SI-211"},"SI-110":{"countryCode":"SI","subdivisionName":"Sevnica","code":"SI-110"},"SI-111":{"countryCode":"SI","subdivisionName":"Sezana","code":"SI-111"},"SI-121":{"countryCode":"SI","subdivisionName":"Skocjan","code":"SI-121"},"SI-122":{"countryCode":"SI","subdivisionName":"Skofja Loka","code":"SI-122"},"SI-123":{"countryCode":"SI","subdivisionName":"Skofljica","code":"SI-123"},"SI-112":{"countryCode":"SI","subdivisionName":"Slovenj Gradec","code":"SI-112"},"SI-113":{"countryCode":"SI","subdivisionName":"Slovenska Bistrica","code":"SI-113"},"SI-114":{"countryCode":"SI","subdivisionName":"Slovenske Konjice","code":"SI-114"},"SI-124":{"countryCode":"SI","subdivisionName":"Smarje pri Jelsah","code":"SI-124"},"SI-206":{"countryCode":"SI","subdivisionName":"Smarjeske Toplice","code":"SI-206"},"SI-125":{"countryCode":"SI","subdivisionName":"Smartno ob Paki","code":"SI-125"},"SI-194":{"countryCode":"SI","subdivisionName":"Smartno pri Litiji","code":"SI-194"},"SI-179":{"countryCode":"SI","subdivisionName":"Sodrazica","code":"SI-179"},"SI-180":{"countryCode":"SI","subdivisionName":"Solcava","code":"SI-180"},"SI-126":{"countryCode":"SI","subdivisionName":"Sostanj","code":"SI-126"},"SI-115":{"countryCode":"SI","subdivisionName":"Starse","code":"SI-115"},"SI-127":{"countryCode":"SI","subdivisionName":"Store","code":"SI-127"},"SI-203":{"countryCode":"SI","subdivisionName":"Straza","code":"SI-203"},"SI-204":{"countryCode":"SI","subdivisionName":"Sveta Trojica v Slovenskih goricah","code":"SI-204"},"SI-182":{"countryCode":"SI","subdivisionName":"Sveti Andraz v Slovenskih Goricah","code":"SI-182"},"SI-116":{"countryCode":"SI","subdivisionName":"Sveti Jurij ob Scavnici","code":"SI-116"},"SI-210":{"countryCode":"SI","subdivisionName":"Sveti Jurij v Slovenskih goricah","code":"SI-210"},"SI-205":{"countryCode":"SI","subdivisionName":"Sveti Tomaz","code":"SI-205"},"SI-184":{"countryCode":"SI","subdivisionName":"Tabor","code":"SI-184"},"SI-010":{"countryCode":"SI","subdivisionName":"Tisina","code":"SI-010"},"SI-128":{"countryCode":"SI","subdivisionName":"Tolmin","code":"SI-128"},"SI-129":{"countryCode":"SI","subdivisionName":"Trbovlje","code":"SI-129"},"SI-130":{"countryCode":"SI","subdivisionName":"Trebnje","code":"SI-130"},"SI-185":{"countryCode":"SI","subdivisionName":"Trnovska Vas","code":"SI-185"},"SI-131":{"countryCode":"SI","subdivisionName":"Trzic","code":"SI-131"},"SI-186":{"countryCode":"SI","subdivisionName":"Trzin","code":"SI-186"},"SI-132":{"countryCode":"SI","subdivisionName":"Turnisce","code":"SI-132"},"SI-133":{"countryCode":"SI","subdivisionName":"Velenje","code":"SI-133"},"SI-187":{"countryCode":"SI","subdivisionName":"Velika Polana","code":"SI-187"},"SI-134":{"countryCode":"SI","subdivisionName":"Velike Lasce","code":"SI-134"},"SI-188":{"countryCode":"SI","subdivisionName":"Verzej","code":"SI-188"},"SI-135":{"countryCode":"SI","subdivisionName":"Videm","code":"SI-135"},"SI-136":{"countryCode":"SI","subdivisionName":"Vipava","code":"SI-136"},"SI-137":{"countryCode":"SI","subdivisionName":"Vitanje","code":"SI-137"},"SI-138":{"countryCode":"SI","subdivisionName":"Vodice","code":"SI-138"},"SI-139":{"countryCode":"SI","subdivisionName":"Vojnik","code":"SI-139"},"SI-189":{"countryCode":"SI","subdivisionName":"Vransko","code":"SI-189"},"SI-140":{"countryCode":"SI","subdivisionName":"Vrhnika","code":"SI-140"},"SI-141":{"countryCode":"SI","subdivisionName":"Vuzenica","code":"SI-141"},"SI-142":{"countryCode":"SI","subdivisionName":"Zagorje ob Savi","code":"SI-142"},"SI-190":{"countryCode":"SI","subdivisionName":"Zalec","code":"SI-190"},"SI-143":{"countryCode":"SI","subdivisionName":"Zavrc","code":"SI-143"},"SI-146":{"countryCode":"SI","subdivisionName":"Zelezniki","code":"SI-146"},"SI-191":{"countryCode":"SI","subdivisionName":"Zetale","code":"SI-191"},"SI-147":{"countryCode":"SI","subdivisionName":"Ziri","code":"SI-147"},"SI-144":{"countryCode":"SI","subdivisionName":"Zrece","code":"SI-144"},"SI-193":{"countryCode":"SI","subdivisionName":"Zuzemberk","code":"SI-193"},"SK-BC":{"countryCode":"SK","subdivisionName":"Banskobystricky kraj","code":"SK-BC"},"SK-BL":{"countryCode":"SK","subdivisionName":"Bratislavsky kraj","code":"SK-BL"},"SK-KI":{"countryCode":"SK","subdivisionName":"Kosicky kraj","code":"SK-KI"},"SK-NI":{"countryCode":"SK","subdivisionName":"Nitriansky kraj","code":"SK-NI"},"SK-PV":{"countryCode":"SK","subdivisionName":"Presovsky kraj","code":"SK-PV"},"SK-TC":{"countryCode":"SK","subdivisionName":"Trenciansky kraj","code":"SK-TC"},"SK-TA":{"countryCode":"SK","subdivisionName":"Trnavsky kraj","code":"SK-TA"},"SK-ZI":{"countryCode":"SK","subdivisionName":"Zilinsky kraj","code":"SK-ZI"},"SL-E":{"countryCode":"SL","subdivisionName":"Eastern","code":"SL-E"},"SL-NW":{"countryCode":"SL","subdivisionName":"North Western","code":"SL-NW"},"SL-N":{"countryCode":"SL","subdivisionName":"Northern","code":"SL-N"},"SL-S":{"countryCode":"SL","subdivisionName":"Southern","code":"SL-S"},"SL-W":{"countryCode":"SL","subdivisionName":"Western Area","code":"SL-W"},"SM-02":{"countryCode":"SM","subdivisionName":"Chiesanuova","code":"SM-02"},"SM-07":{"countryCode":"SM","subdivisionName":"Citta di San Marino","code":"SM-07"},"SM-04":{"countryCode":"SM","subdivisionName":"Faetano","code":"SM-04"},"SM-09":{"countryCode":"SM","subdivisionName":"Serravalle","code":"SM-09"},"SN-DK":{"countryCode":"SN","subdivisionName":"Dakar","code":"SN-DK"},"SN-DB":{"countryCode":"SN","subdivisionName":"Diourbel","code":"SN-DB"},"SN-FK":{"countryCode":"SN","subdivisionName":"Fatick","code":"SN-FK"},"SN-KA":{"countryCode":"SN","subdivisionName":"Kaffrine","code":"SN-KA"},"SN-KL":{"countryCode":"SN","subdivisionName":"Kaolack","code":"SN-KL"},"SN-KE":{"countryCode":"SN","subdivisionName":"Kedougou","code":"SN-KE"},"SN-KD":{"countryCode":"SN","subdivisionName":"Kolda","code":"SN-KD"},"SN-LG":{"countryCode":"SN","subdivisionName":"Louga","code":"SN-LG"},"SN-MT":{"countryCode":"SN","subdivisionName":"Matam","code":"SN-MT"},"SN-SL":{"countryCode":"SN","subdivisionName":"Saint-Louis","code":"SN-SL"},"SN-SE":{"countryCode":"SN","subdivisionName":"Sedhiou","code":"SN-SE"},"SN-TC":{"countryCode":"SN","subdivisionName":"Tambacounda","code":"SN-TC"},"SN-TH":{"countryCode":"SN","subdivisionName":"Thies","code":"SN-TH"},"SN-ZG":{"countryCode":"SN","subdivisionName":"Ziguinchor","code":"SN-ZG"},"SO-AW":{"countryCode":"SO","subdivisionName":"Awdal","code":"SO-AW"},"SO-BN":{"countryCode":"SO","subdivisionName":"Banaadir","code":"SO-BN"},"SO-BR":{"countryCode":"SO","subdivisionName":"Bari","code":"SO-BR"},"SO-BY":{"countryCode":"SO","subdivisionName":"Bay","code":"SO-BY"},"SO-GA":{"countryCode":"SO","subdivisionName":"Galguduud","code":"SO-GA"},"SO-GE":{"countryCode":"SO","subdivisionName":"Gedo","code":"SO-GE"},"SO-HI":{"countryCode":"SO","subdivisionName":"Hiiraan","code":"SO-HI"},"SO-JH":{"countryCode":"SO","subdivisionName":"Jubbada Hoose","code":"SO-JH"},"SO-MU":{"countryCode":"SO","subdivisionName":"Mudug","code":"SO-MU"},"SO-NU":{"countryCode":"SO","subdivisionName":"Nugaal","code":"SO-NU"},"SO-SO":{"countryCode":"SO","subdivisionName":"Sool","code":"SO-SO"},"SO-TO":{"countryCode":"SO","subdivisionName":"Togdheer","code":"SO-TO"},"SO-WO":{"countryCode":"SO","subdivisionName":"Woqooyi Galbeed","code":"SO-WO"},"SR-BR":{"countryCode":"SR","subdivisionName":"Brokopondo","code":"SR-BR"},"SR-CM":{"countryCode":"SR","subdivisionName":"Commewijne","code":"SR-CM"},"SR-CR":{"countryCode":"SR","subdivisionName":"Coronie","code":"SR-CR"},"SR-NI":{"countryCode":"SR","subdivisionName":"Nickerie","code":"SR-NI"},"SR-PR":{"countryCode":"SR","subdivisionName":"Para","code":"SR-PR"},"SR-PM":{"countryCode":"SR","subdivisionName":"Paramaribo","code":"SR-PM"},"SR-SA":{"countryCode":"SR","subdivisionName":"Saramacca","code":"SR-SA"},"SR-SI":{"countryCode":"SR","subdivisionName":"Sipaliwini","code":"SR-SI"},"SR-WA":{"countryCode":"SR","subdivisionName":"Wanica","code":"SR-WA"},"SS-EC":{"countryCode":"SS","subdivisionName":"Central Equatoria","code":"SS-EC"},"SS-EE":{"countryCode":"SS","subdivisionName":"Eastern Equatoria","code":"SS-EE"},"SS-BN":{"countryCode":"SS","subdivisionName":"Northern Bahr el Ghazal","code":"SS-BN"},"SS-UY":{"countryCode":"SS","subdivisionName":"Unity","code":"SS-UY"},"SS-NU":{"countryCode":"SS","subdivisionName":"Upper Nile","code":"SS-NU"},"SS-EW":{"countryCode":"SS","subdivisionName":"Western Equatoria","code":"SS-EW"},"ST-01":{"countryCode":"ST","subdivisionName":"Agua Grande","code":"ST-01"},"SV-AH":{"countryCode":"SV","subdivisionName":"Ahuachapan","code":"SV-AH"},"SV-CA":{"countryCode":"SV","subdivisionName":"Cabanas","code":"SV-CA"},"SV-CH":{"countryCode":"SV","subdivisionName":"Chalatenango","code":"SV-CH"},"SV-CU":{"countryCode":"SV","subdivisionName":"Cuscatlan","code":"SV-CU"},"SV-LI":{"countryCode":"SV","subdivisionName":"La Libertad","code":"SV-LI"},"SV-PA":{"countryCode":"SV","subdivisionName":"La Paz","code":"SV-PA"},"SV-UN":{"countryCode":"SV","subdivisionName":"La Union","code":"SV-UN"},"SV-MO":{"countryCode":"SV","subdivisionName":"Morazan","code":"SV-MO"},"SV-SM":{"countryCode":"SV","subdivisionName":"San Miguel","code":"SV-SM"},"SV-SS":{"countryCode":"SV","subdivisionName":"San Salvador","code":"SV-SS"},"SV-SV":{"countryCode":"SV","subdivisionName":"San Vicente","code":"SV-SV"},"SV-SA":{"countryCode":"SV","subdivisionName":"Santa Ana","code":"SV-SA"},"SV-SO":{"countryCode":"SV","subdivisionName":"Sonsonate","code":"SV-SO"},"SV-US":{"countryCode":"SV","subdivisionName":"Usulutan","code":"SV-US"},"SY-HA":{"countryCode":"SY","subdivisionName":"Al Hasakah","code":"SY-HA"},"SY-LA":{"countryCode":"SY","subdivisionName":"Al Ladhiqiyah","code":"SY-LA"},"SY-QU":{"countryCode":"SY","subdivisionName":"Al Qunaytirah","code":"SY-QU"},"SY-RA":{"countryCode":"SY","subdivisionName":"Ar Raqqah","code":"SY-RA"},"SY-SU":{"countryCode":"SY","subdivisionName":"As Suwayda'","code":"SY-SU"},"SY-DR":{"countryCode":"SY","subdivisionName":"Dar'a","code":"SY-DR"},"SY-DY":{"countryCode":"SY","subdivisionName":"Dayr az Zawr","code":"SY-DY"},"SY-DI":{"countryCode":"SY","subdivisionName":"Dimashq","code":"SY-DI"},"SY-HL":{"countryCode":"SY","subdivisionName":"Halab","code":"SY-HL"},"SY-HM":{"countryCode":"SY","subdivisionName":"Hamah","code":"SY-HM"},"SY-HI":{"countryCode":"SY","subdivisionName":"Hims","code":"SY-HI"},"SY-ID":{"countryCode":"SY","subdivisionName":"Idlib","code":"SY-ID"},"SY-RD":{"countryCode":"SY","subdivisionName":"Rif Dimashq","code":"SY-RD"},"SY-TA":{"countryCode":"SY","subdivisionName":"Tartus","code":"SY-TA"},"SZ-HH":{"countryCode":"SZ","subdivisionName":"Hhohho","code":"SZ-HH"},"SZ-LU":{"countryCode":"SZ","subdivisionName":"Lubombo","code":"SZ-LU"},"SZ-MA":{"countryCode":"SZ","subdivisionName":"Manzini","code":"SZ-MA"},"TD-BG":{"countryCode":"TD","subdivisionName":"Bahr el Ghazal","code":"TD-BG"},"TD-CB":{"countryCode":"TD","subdivisionName":"Chari-Baguirmi","code":"TD-CB"},"TD-GR":{"countryCode":"TD","subdivisionName":"Guera","code":"TD-GR"},"TD-LC":{"countryCode":"TD","subdivisionName":"Lac","code":"TD-LC"},"TD-LR":{"countryCode":"TD","subdivisionName":"Logone-Oriental","code":"TD-LR"},"TD-OD":{"countryCode":"TD","subdivisionName":"Ouaddai","code":"TD-OD"},"TD-ND":{"countryCode":"TD","subdivisionName":"Ville de Ndjamena","code":"TD-ND"},"TG-C":{"countryCode":"TG","subdivisionName":"Centrale","code":"TG-C"},"TG-K":{"countryCode":"TG","subdivisionName":"Kara","code":"TG-K"},"TG-M":{"countryCode":"TG","subdivisionName":"Maritime","code":"TG-M"},"TG-P":{"countryCode":"TG","subdivisionName":"Plateaux","code":"TG-P"},"TG-S":{"countryCode":"TG","subdivisionName":"Savanes","code":"TG-S"},"TH-37":{"countryCode":"TH","subdivisionName":"Amnat Charoen","code":"TH-37"},"TH-15":{"countryCode":"TH","subdivisionName":"Ang Thong","code":"TH-15"},"TH-38":{"countryCode":"TH","subdivisionName":"Bueng Kan","code":"TH-38"},"TH-31":{"countryCode":"TH","subdivisionName":"Buri Ram","code":"TH-31"},"TH-24":{"countryCode":"TH","subdivisionName":"Chachoengsao","code":"TH-24"},"TH-18":{"countryCode":"TH","subdivisionName":"Chai Nat","code":"TH-18"},"TH-36":{"countryCode":"TH","subdivisionName":"Chaiyaphum","code":"TH-36"},"TH-22":{"countryCode":"TH","subdivisionName":"Chanthaburi","code":"TH-22"},"TH-50":{"countryCode":"TH","subdivisionName":"Chiang Mai","code":"TH-50"},"TH-57":{"countryCode":"TH","subdivisionName":"Chiang Rai","code":"TH-57"},"TH-20":{"countryCode":"TH","subdivisionName":"Chon Buri","code":"TH-20"},"TH-86":{"countryCode":"TH","subdivisionName":"Chumphon","code":"TH-86"},"TH-46":{"countryCode":"TH","subdivisionName":"Kalasin","code":"TH-46"},"TH-62":{"countryCode":"TH","subdivisionName":"Kamphaeng Phet","code":"TH-62"},"TH-71":{"countryCode":"TH","subdivisionName":"Kanchanaburi","code":"TH-71"},"TH-40":{"countryCode":"TH","subdivisionName":"Khon Kaen","code":"TH-40"},"TH-81":{"countryCode":"TH","subdivisionName":"Krabi","code":"TH-81"},"TH-10":{"countryCode":"TH","subdivisionName":"Krung Thep Maha Nakhon","code":"TH-10"},"TH-52":{"countryCode":"TH","subdivisionName":"Lampang","code":"TH-52"},"TH-51":{"countryCode":"TH","subdivisionName":"Lamphun","code":"TH-51"},"TH-42":{"countryCode":"TH","subdivisionName":"Loei","code":"TH-42"},"TH-16":{"countryCode":"TH","subdivisionName":"Lop Buri","code":"TH-16"},"TH-58":{"countryCode":"TH","subdivisionName":"Mae Hong Son","code":"TH-58"},"TH-44":{"countryCode":"TH","subdivisionName":"Maha Sarakham","code":"TH-44"},"TH-49":{"countryCode":"TH","subdivisionName":"Mukdahan","code":"TH-49"},"TH-26":{"countryCode":"TH","subdivisionName":"Nakhon Nayok","code":"TH-26"},"TH-73":{"countryCode":"TH","subdivisionName":"Nakhon Pathom","code":"TH-73"},"TH-48":{"countryCode":"TH","subdivisionName":"Nakhon Phanom","code":"TH-48"},"TH-30":{"countryCode":"TH","subdivisionName":"Nakhon Ratchasima","code":"TH-30"},"TH-60":{"countryCode":"TH","subdivisionName":"Nakhon Sawan","code":"TH-60"},"TH-80":{"countryCode":"TH","subdivisionName":"Nakhon Si Thammarat","code":"TH-80"},"TH-55":{"countryCode":"TH","subdivisionName":"Nan","code":"TH-55"},"TH-96":{"countryCode":"TH","subdivisionName":"Narathiwat","code":"TH-96"},"TH-39":{"countryCode":"TH","subdivisionName":"Nong Bua Lam Phu","code":"TH-39"},"TH-43":{"countryCode":"TH","subdivisionName":"Nong Khai","code":"TH-43"},"TH-12":{"countryCode":"TH","subdivisionName":"Nonthaburi","code":"TH-12"},"TH-13":{"countryCode":"TH","subdivisionName":"Pathum Thani","code":"TH-13"},"TH-94":{"countryCode":"TH","subdivisionName":"Pattani","code":"TH-94"},"TH-82":{"countryCode":"TH","subdivisionName":"Phangnga","code":"TH-82"},"TH-93":{"countryCode":"TH","subdivisionName":"Phatthalung","code":"TH-93"},"TH-56":{"countryCode":"TH","subdivisionName":"Phayao","code":"TH-56"},"TH-67":{"countryCode":"TH","subdivisionName":"Phetchabun","code":"TH-67"},"TH-76":{"countryCode":"TH","subdivisionName":"Phetchaburi","code":"TH-76"},"TH-66":{"countryCode":"TH","subdivisionName":"Phichit","code":"TH-66"},"TH-65":{"countryCode":"TH","subdivisionName":"Phitsanulok","code":"TH-65"},"TH-14":{"countryCode":"TH","subdivisionName":"Phra Nakhon Si Ayutthaya","code":"TH-14"},"TH-54":{"countryCode":"TH","subdivisionName":"Phrae","code":"TH-54"},"TH-83":{"countryCode":"TH","subdivisionName":"Phuket","code":"TH-83"},"TH-25":{"countryCode":"TH","subdivisionName":"Prachin Buri","code":"TH-25"},"TH-77":{"countryCode":"TH","subdivisionName":"Prachuap Khiri Khan","code":"TH-77"},"TH-85":{"countryCode":"TH","subdivisionName":"Ranong","code":"TH-85"},"TH-70":{"countryCode":"TH","subdivisionName":"Ratchaburi","code":"TH-70"},"TH-21":{"countryCode":"TH","subdivisionName":"Rayong","code":"TH-21"},"TH-45":{"countryCode":"TH","subdivisionName":"Roi Et","code":"TH-45"},"TH-27":{"countryCode":"TH","subdivisionName":"Sa Kaeo","code":"TH-27"},"TH-47":{"countryCode":"TH","subdivisionName":"Sakon Nakhon","code":"TH-47"},"TH-11":{"countryCode":"TH","subdivisionName":"Samut Prakan","code":"TH-11"},"TH-74":{"countryCode":"TH","subdivisionName":"Samut Sakhon","code":"TH-74"},"TH-75":{"countryCode":"TH","subdivisionName":"Samut Songkhram","code":"TH-75"},"TH-19":{"countryCode":"TH","subdivisionName":"Saraburi","code":"TH-19"},"TH-91":{"countryCode":"TH","subdivisionName":"Satun","code":"TH-91"},"TH-33":{"countryCode":"TH","subdivisionName":"Si Sa Ket","code":"TH-33"},"TH-17":{"countryCode":"TH","subdivisionName":"Sing Buri","code":"TH-17"},"TH-90":{"countryCode":"TH","subdivisionName":"Songkhla","code":"TH-90"},"TH-64":{"countryCode":"TH","subdivisionName":"Sukhothai","code":"TH-64"},"TH-72":{"countryCode":"TH","subdivisionName":"Suphan Buri","code":"TH-72"},"TH-84":{"countryCode":"TH","subdivisionName":"Surat Thani","code":"TH-84"},"TH-32":{"countryCode":"TH","subdivisionName":"Surin","code":"TH-32"},"TH-63":{"countryCode":"TH","subdivisionName":"Tak","code":"TH-63"},"TH-92":{"countryCode":"TH","subdivisionName":"Trang","code":"TH-92"},"TH-23":{"countryCode":"TH","subdivisionName":"Trat","code":"TH-23"},"TH-34":{"countryCode":"TH","subdivisionName":"Ubon Ratchathani","code":"TH-34"},"TH-41":{"countryCode":"TH","subdivisionName":"Udon Thani","code":"TH-41"},"TH-61":{"countryCode":"TH","subdivisionName":"Uthai Thani","code":"TH-61"},"TH-53":{"countryCode":"TH","subdivisionName":"Uttaradit","code":"TH-53"},"TH-95":{"countryCode":"TH","subdivisionName":"Yala","code":"TH-95"},"TH-35":{"countryCode":"TH","subdivisionName":"Yasothon","code":"TH-35"},"TJ-DU":{"countryCode":"TJ","subdivisionName":"Dushanbe","code":"TJ-DU"},"TJ-KT":{"countryCode":"TJ","subdivisionName":"Khatlon","code":"TJ-KT"},"TJ-GB":{"countryCode":"TJ","subdivisionName":"Kuhistoni Badakhshon","code":"TJ-GB"},"TJ-RA":{"countryCode":"TJ","subdivisionName":"Nohiyahoi Tobei Jumhuri","code":"TJ-RA"},"TJ-SU":{"countryCode":"TJ","subdivisionName":"Sughd","code":"TJ-SU"},"TL-AL":{"countryCode":"TL","subdivisionName":"Aileu","code":"TL-AL"},"TL-AN":{"countryCode":"TL","subdivisionName":"Ainaro","code":"TL-AN"},"TL-CO":{"countryCode":"TL","subdivisionName":"Cova Lima","code":"TL-CO"},"TL-DI":{"countryCode":"TL","subdivisionName":"Dili","code":"TL-DI"},"TL-LI":{"countryCode":"TL","subdivisionName":"Liquica","code":"TL-LI"},"TM-A":{"countryCode":"TM","subdivisionName":"Ahal","code":"TM-A"},"TM-B":{"countryCode":"TM","subdivisionName":"Balkan","code":"TM-B"},"TM-D":{"countryCode":"TM","subdivisionName":"Dasoguz","code":"TM-D"},"TM-L":{"countryCode":"TM","subdivisionName":"Lebap","code":"TM-L"},"TM-M":{"countryCode":"TM","subdivisionName":"Mary","code":"TM-M"},"TN-31":{"countryCode":"TN","subdivisionName":"Beja","code":"TN-31"},"TN-13":{"countryCode":"TN","subdivisionName":"Ben Arous","code":"TN-13"},"TN-23":{"countryCode":"TN","subdivisionName":"Bizerte","code":"TN-23"},"TN-81":{"countryCode":"TN","subdivisionName":"Gabes","code":"TN-81"},"TN-71":{"countryCode":"TN","subdivisionName":"Gafsa","code":"TN-71"},"TN-32":{"countryCode":"TN","subdivisionName":"Jendouba","code":"TN-32"},"TN-41":{"countryCode":"TN","subdivisionName":"Kairouan","code":"TN-41"},"TN-42":{"countryCode":"TN","subdivisionName":"Kasserine","code":"TN-42"},"TN-73":{"countryCode":"TN","subdivisionName":"Kebili","code":"TN-73"},"TN-12":{"countryCode":"TN","subdivisionName":"L'Ariana","code":"TN-12"},"TN-14":{"countryCode":"TN","subdivisionName":"La Manouba","code":"TN-14"},"TN-33":{"countryCode":"TN","subdivisionName":"Le Kef","code":"TN-33"},"TN-53":{"countryCode":"TN","subdivisionName":"Mahdia","code":"TN-53"},"TN-82":{"countryCode":"TN","subdivisionName":"Medenine","code":"TN-82"},"TN-52":{"countryCode":"TN","subdivisionName":"Monastir","code":"TN-52"},"TN-21":{"countryCode":"TN","subdivisionName":"Nabeul","code":"TN-21"},"TN-61":{"countryCode":"TN","subdivisionName":"Sfax","code":"TN-61"},"TN-43":{"countryCode":"TN","subdivisionName":"Sidi Bouzid","code":"TN-43"},"TN-34":{"countryCode":"TN","subdivisionName":"Siliana","code":"TN-34"},"TN-51":{"countryCode":"TN","subdivisionName":"Sousse","code":"TN-51"},"TN-83":{"countryCode":"TN","subdivisionName":"Tataouine","code":"TN-83"},"TN-72":{"countryCode":"TN","subdivisionName":"Tozeur","code":"TN-72"},"TN-11":{"countryCode":"TN","subdivisionName":"Tunis","code":"TN-11"},"TN-22":{"countryCode":"TN","subdivisionName":"Zaghouan","code":"TN-22"},"TO-01":{"countryCode":"TO","subdivisionName":"'Eua","code":"TO-01"},"TO-02":{"countryCode":"TO","subdivisionName":"Ha'apai","code":"TO-02"},"TO-03":{"countryCode":"TO","subdivisionName":"Niuas","code":"TO-03"},"TO-04":{"countryCode":"TO","subdivisionName":"Tongatapu","code":"TO-04"},"TO-05":{"countryCode":"TO","subdivisionName":"Vava'u","code":"TO-05"},"TR-01":{"countryCode":"TR","subdivisionName":"Adana","code":"TR-01"},"TR-02":{"countryCode":"TR","subdivisionName":"Adiyaman","code":"TR-02"},"TR-03":{"countryCode":"TR","subdivisionName":"Afyonkarahisar","code":"TR-03"},"TR-04":{"countryCode":"TR","subdivisionName":"Agri","code":"TR-04"},"TR-68":{"countryCode":"TR","subdivisionName":"Aksaray","code":"TR-68"},"TR-05":{"countryCode":"TR","subdivisionName":"Amasya","code":"TR-05"},"TR-06":{"countryCode":"TR","subdivisionName":"Ankara","code":"TR-06"},"TR-07":{"countryCode":"TR","subdivisionName":"Antalya","code":"TR-07"},"TR-75":{"countryCode":"TR","subdivisionName":"Ardahan","code":"TR-75"},"TR-08":{"countryCode":"TR","subdivisionName":"Artvin","code":"TR-08"},"TR-09":{"countryCode":"TR","subdivisionName":"Aydin","code":"TR-09"},"TR-10":{"countryCode":"TR","subdivisionName":"Balikesir","code":"TR-10"},"TR-74":{"countryCode":"TR","subdivisionName":"Bartin","code":"TR-74"},"TR-72":{"countryCode":"TR","subdivisionName":"Batman","code":"TR-72"},"TR-69":{"countryCode":"TR","subdivisionName":"Bayburt","code":"TR-69"},"TR-11":{"countryCode":"TR","subdivisionName":"Bilecik","code":"TR-11"},"TR-12":{"countryCode":"TR","subdivisionName":"Bingol","code":"TR-12"},"TR-13":{"countryCode":"TR","subdivisionName":"Bitlis","code":"TR-13"},"TR-14":{"countryCode":"TR","subdivisionName":"Bolu","code":"TR-14"},"TR-15":{"countryCode":"TR","subdivisionName":"Burdur","code":"TR-15"},"TR-16":{"countryCode":"TR","subdivisionName":"Bursa","code":"TR-16"},"TR-17":{"countryCode":"TR","subdivisionName":"Canakkale","code":"TR-17"},"TR-18":{"countryCode":"TR","subdivisionName":"Cankiri","code":"TR-18"},"TR-19":{"countryCode":"TR","subdivisionName":"Corum","code":"TR-19"},"TR-20":{"countryCode":"TR","subdivisionName":"Denizli","code":"TR-20"},"TR-21":{"countryCode":"TR","subdivisionName":"Diyarbakir","code":"TR-21"},"TR-81":{"countryCode":"TR","subdivisionName":"Duzce","code":"TR-81"},"TR-22":{"countryCode":"TR","subdivisionName":"Edirne","code":"TR-22"},"TR-23":{"countryCode":"TR","subdivisionName":"Elazig","code":"TR-23"},"TR-24":{"countryCode":"TR","subdivisionName":"Erzincan","code":"TR-24"},"TR-25":{"countryCode":"TR","subdivisionName":"Erzurum","code":"TR-25"},"TR-26":{"countryCode":"TR","subdivisionName":"Eskisehir","code":"TR-26"},"TR-27":{"countryCode":"TR","subdivisionName":"Gaziantep","code":"TR-27"},"TR-28":{"countryCode":"TR","subdivisionName":"Giresun","code":"TR-28"},"TR-29":{"countryCode":"TR","subdivisionName":"Gumushane","code":"TR-29"},"TR-30":{"countryCode":"TR","subdivisionName":"Hakkari","code":"TR-30"},"TR-31":{"countryCode":"TR","subdivisionName":"Hatay","code":"TR-31"},"TR-76":{"countryCode":"TR","subdivisionName":"Igdir","code":"TR-76"},"TR-32":{"countryCode":"TR","subdivisionName":"Isparta","code":"TR-32"},"TR-34":{"countryCode":"TR","subdivisionName":"Istanbul","code":"TR-34"},"TR-35":{"countryCode":"TR","subdivisionName":"Izmir","code":"TR-35"},"TR-46":{"countryCode":"TR","subdivisionName":"Kahramanmaras","code":"TR-46"},"TR-78":{"countryCode":"TR","subdivisionName":"Karabuk","code":"TR-78"},"TR-70":{"countryCode":"TR","subdivisionName":"Karaman","code":"TR-70"},"TR-36":{"countryCode":"TR","subdivisionName":"Kars","code":"TR-36"},"TR-37":{"countryCode":"TR","subdivisionName":"Kastamonu","code":"TR-37"},"TR-38":{"countryCode":"TR","subdivisionName":"Kayseri","code":"TR-38"},"TR-79":{"countryCode":"TR","subdivisionName":"Kilis","code":"TR-79"},"TR-71":{"countryCode":"TR","subdivisionName":"Kirikkale","code":"TR-71"},"TR-39":{"countryCode":"TR","subdivisionName":"Kirklareli","code":"TR-39"},"TR-40":{"countryCode":"TR","subdivisionName":"Kirsehir","code":"TR-40"},"TR-41":{"countryCode":"TR","subdivisionName":"Kocaeli","code":"TR-41"},"TR-42":{"countryCode":"TR","subdivisionName":"Konya","code":"TR-42"},"TR-43":{"countryCode":"TR","subdivisionName":"Kutahya","code":"TR-43"},"TR-44":{"countryCode":"TR","subdivisionName":"Malatya","code":"TR-44"},"TR-45":{"countryCode":"TR","subdivisionName":"Manisa","code":"TR-45"},"TR-47":{"countryCode":"TR","subdivisionName":"Mardin","code":"TR-47"},"TR-33":{"countryCode":"TR","subdivisionName":"Mersin","code":"TR-33"},"TR-48":{"countryCode":"TR","subdivisionName":"Mugla","code":"TR-48"},"TR-49":{"countryCode":"TR","subdivisionName":"Mus","code":"TR-49"},"TR-50":{"countryCode":"TR","subdivisionName":"Nevsehir","code":"TR-50"},"TR-51":{"countryCode":"TR","subdivisionName":"Nigde","code":"TR-51"},"TR-52":{"countryCode":"TR","subdivisionName":"Ordu","code":"TR-52"},"TR-80":{"countryCode":"TR","subdivisionName":"Osmaniye","code":"TR-80"},"TR-53":{"countryCode":"TR","subdivisionName":"Rize","code":"TR-53"},"TR-54":{"countryCode":"TR","subdivisionName":"Sakarya","code":"TR-54"},"TR-55":{"countryCode":"TR","subdivisionName":"Samsun","code":"TR-55"},"TR-63":{"countryCode":"TR","subdivisionName":"Sanliurfa","code":"TR-63"},"TR-56":{"countryCode":"TR","subdivisionName":"Siirt","code":"TR-56"},"TR-57":{"countryCode":"TR","subdivisionName":"Sinop","code":"TR-57"},"TR-73":{"countryCode":"TR","subdivisionName":"Sirnak","code":"TR-73"},"TR-58":{"countryCode":"TR","subdivisionName":"Sivas","code":"TR-58"},"TR-59":{"countryCode":"TR","subdivisionName":"Tekirdag","code":"TR-59"},"TR-60":{"countryCode":"TR","subdivisionName":"Tokat","code":"TR-60"},"TR-61":{"countryCode":"TR","subdivisionName":"Trabzon","code":"TR-61"},"TR-62":{"countryCode":"TR","subdivisionName":"Tunceli","code":"TR-62"},"TR-64":{"countryCode":"TR","subdivisionName":"Usak","code":"TR-64"},"TR-65":{"countryCode":"TR","subdivisionName":"Van","code":"TR-65"},"TR-77":{"countryCode":"TR","subdivisionName":"Yalova","code":"TR-77"},"TR-66":{"countryCode":"TR","subdivisionName":"Yozgat","code":"TR-66"},"TR-67":{"countryCode":"TR","subdivisionName":"Zonguldak","code":"TR-67"},"TT-ARI":{"countryCode":"TT","subdivisionName":"Arima","code":"TT-ARI"},"TT-CHA":{"countryCode":"TT","subdivisionName":"Chaguanas","code":"TT-CHA"},"TT-CTT":{"countryCode":"TT","subdivisionName":"Couva-Tabaquite-Talparo","code":"TT-CTT"},"TT-DMN":{"countryCode":"TT","subdivisionName":"Diego Martin","code":"TT-DMN"},"TT-MRC":{"countryCode":"TT","subdivisionName":"Mayaro-Rio Claro","code":"TT-MRC"},"TT-PED":{"countryCode":"TT","subdivisionName":"Penal-Debe","code":"TT-PED"},"TT-PTF":{"countryCode":"TT","subdivisionName":"Point Fortin","code":"TT-PTF"},"TT-POS":{"countryCode":"TT","subdivisionName":"Port of Spain","code":"TT-POS"},"TT-PRT":{"countryCode":"TT","subdivisionName":"Princes Town","code":"TT-PRT"},"TT-SFO":{"countryCode":"TT","subdivisionName":"San Fernando","code":"TT-SFO"},"TT-SJL":{"countryCode":"TT","subdivisionName":"San Juan-Laventille","code":"TT-SJL"},"TT-SGE":{"countryCode":"TT","subdivisionName":"Sangre Grande","code":"TT-SGE"},"TT-SIP":{"countryCode":"TT","subdivisionName":"Siparia","code":"TT-SIP"},"TT-TOB":{"countryCode":"TT","subdivisionName":"Tobago","code":"TT-TOB"},"TT-TUP":{"countryCode":"TT","subdivisionName":"Tunapuna-Piarco","code":"TT-TUP"},"TV-FUN":{"countryCode":"TV","subdivisionName":"Funafuti","code":"TV-FUN"},"TW-CHA":{"countryCode":"TW","subdivisionName":"Changhua","code":"TW-CHA"},"TW-CYQ":{"countryCode":"TW","subdivisionName":"Chiayi","code":"TW-CYQ"},"TW-HSQ":{"countryCode":"TW","subdivisionName":"Hsinchu","code":"TW-HSQ"},"TW-HUA":{"countryCode":"TW","subdivisionName":"Hualien","code":"TW-HUA"},"TW-KHH":{"countryCode":"TW","subdivisionName":"Kaohsiung","code":"TW-KHH"},"TW-KEE":{"countryCode":"TW","subdivisionName":"Keelung","code":"TW-KEE"},"TW-KIN":{"countryCode":"TW","subdivisionName":"Kinmen","code":"TW-KIN"},"TW-LIE":{"countryCode":"TW","subdivisionName":"Lienchiang","code":"TW-LIE"},"TW-MIA":{"countryCode":"TW","subdivisionName":"Miaoli","code":"TW-MIA"},"TW-NAN":{"countryCode":"TW","subdivisionName":"Nantou","code":"TW-NAN"},"TW-NWT":{"countryCode":"TW","subdivisionName":"New Taipei","code":"TW-NWT"},"TW-PEN":{"countryCode":"TW","subdivisionName":"Penghu","code":"TW-PEN"},"TW-PIF":{"countryCode":"TW","subdivisionName":"Pingtung","code":"TW-PIF"},"TW-TXG":{"countryCode":"TW","subdivisionName":"Taichung","code":"TW-TXG"},"TW-TNN":{"countryCode":"TW","subdivisionName":"Tainan","code":"TW-TNN"},"TW-TPE":{"countryCode":"TW","subdivisionName":"Taipei","code":"TW-TPE"},"TW-TTT":{"countryCode":"TW","subdivisionName":"Taitung","code":"TW-TTT"},"TW-TAO":{"countryCode":"TW","subdivisionName":"Taoyuan","code":"TW-TAO"},"TW-ILA":{"countryCode":"TW","subdivisionName":"Yilan","code":"TW-ILA"},"TW-YUN":{"countryCode":"TW","subdivisionName":"Yunlin","code":"TW-YUN"},"TZ-01":{"countryCode":"TZ","subdivisionName":"Arusha","code":"TZ-01"},"TZ-02":{"countryCode":"TZ","subdivisionName":"Dar es Salaam","code":"TZ-02"},"TZ-03":{"countryCode":"TZ","subdivisionName":"Dodoma","code":"TZ-03"},"TZ-27":{"countryCode":"TZ","subdivisionName":"Geita","code":"TZ-27"},"TZ-04":{"countryCode":"TZ","subdivisionName":"Iringa","code":"TZ-04"},"TZ-05":{"countryCode":"TZ","subdivisionName":"Kagera","code":"TZ-05"},"TZ-06":{"countryCode":"TZ","subdivisionName":"Kaskazini Pemba","code":"TZ-06"},"TZ-07":{"countryCode":"TZ","subdivisionName":"Kaskazini Unguja","code":"TZ-07"},"TZ-28":{"countryCode":"TZ","subdivisionName":"Katavi","code":"TZ-28"},"TZ-08":{"countryCode":"TZ","subdivisionName":"Kigoma","code":"TZ-08"},"TZ-09":{"countryCode":"TZ","subdivisionName":"Kilimanjaro","code":"TZ-09"},"TZ-10":{"countryCode":"TZ","subdivisionName":"Kusini Pemba","code":"TZ-10"},"TZ-11":{"countryCode":"TZ","subdivisionName":"Kusini Unguja","code":"TZ-11"},"TZ-12":{"countryCode":"TZ","subdivisionName":"Lindi","code":"TZ-12"},"TZ-26":{"countryCode":"TZ","subdivisionName":"Manyara","code":"TZ-26"},"TZ-13":{"countryCode":"TZ","subdivisionName":"Mara","code":"TZ-13"},"TZ-14":{"countryCode":"TZ","subdivisionName":"Mbeya","code":"TZ-14"},"TZ-15":{"countryCode":"TZ","subdivisionName":"Mjini Magharibi","code":"TZ-15"},"TZ-16":{"countryCode":"TZ","subdivisionName":"Morogoro","code":"TZ-16"},"TZ-17":{"countryCode":"TZ","subdivisionName":"Mtwara","code":"TZ-17"},"TZ-18":{"countryCode":"TZ","subdivisionName":"Mwanza","code":"TZ-18"},"TZ-29":{"countryCode":"TZ","subdivisionName":"Njombe","code":"TZ-29"},"TZ-19":{"countryCode":"TZ","subdivisionName":"Pwani","code":"TZ-19"},"TZ-20":{"countryCode":"TZ","subdivisionName":"Rukwa","code":"TZ-20"},"TZ-21":{"countryCode":"TZ","subdivisionName":"Ruvuma","code":"TZ-21"},"TZ-22":{"countryCode":"TZ","subdivisionName":"Shinyanga","code":"TZ-22"},"TZ-30":{"countryCode":"TZ","subdivisionName":"Simiyu","code":"TZ-30"},"TZ-23":{"countryCode":"TZ","subdivisionName":"Singida","code":"TZ-23"},"TZ-31":{"countryCode":"TZ","subdivisionName":"Songwe","code":"TZ-31"},"TZ-24":{"countryCode":"TZ","subdivisionName":"Tabora","code":"TZ-24"},"TZ-25":{"countryCode":"TZ","subdivisionName":"Tanga","code":"TZ-25"},"UA-43":{"countryCode":"UA","subdivisionName":"Avtonomna Respublika Krym","code":"UA-43"},"UA-71":{"countryCode":"UA","subdivisionName":"Cherkaska oblast","code":"UA-71"},"UA-74":{"countryCode":"UA","subdivisionName":"Chernihivska oblast","code":"UA-74"},"UA-77":{"countryCode":"UA","subdivisionName":"Chernivetska oblast","code":"UA-77"},"UA-12":{"countryCode":"UA","subdivisionName":"Dnipropetrovska oblast","code":"UA-12"},"UA-14":{"countryCode":"UA","subdivisionName":"Donetska oblast","code":"UA-14"},"UA-26":{"countryCode":"UA","subdivisionName":"Ivano-Frankivska oblast","code":"UA-26"},"UA-63":{"countryCode":"UA","subdivisionName":"Kharkivska oblast","code":"UA-63"},"UA-65":{"countryCode":"UA","subdivisionName":"Khersonska oblast","code":"UA-65"},"UA-68":{"countryCode":"UA","subdivisionName":"Khmelnytska oblast","code":"UA-68"},"UA-35":{"countryCode":"UA","subdivisionName":"Kirovohradska oblast","code":"UA-35"},"UA-30":{"countryCode":"UA","subdivisionName":"Kyiv","code":"UA-30"},"UA-32":{"countryCode":"UA","subdivisionName":"Kyivska oblast","code":"UA-32"},"UA-09":{"countryCode":"UA","subdivisionName":"Luhanska oblast","code":"UA-09"},"UA-46":{"countryCode":"UA","subdivisionName":"Lvivska oblast","code":"UA-46"},"UA-48":{"countryCode":"UA","subdivisionName":"Mykolaivska oblast","code":"UA-48"},"UA-51":{"countryCode":"UA","subdivisionName":"Odeska oblast","code":"UA-51"},"UA-53":{"countryCode":"UA","subdivisionName":"Poltavska oblast","code":"UA-53"},"UA-56":{"countryCode":"UA","subdivisionName":"Rivnenska oblast","code":"UA-56"},"UA-40":{"countryCode":"UA","subdivisionName":"Sevastopol","code":"UA-40"},"UA-59":{"countryCode":"UA","subdivisionName":"Sumska oblast","code":"UA-59"},"UA-61":{"countryCode":"UA","subdivisionName":"Ternopilska oblast","code":"UA-61"},"UA-05":{"countryCode":"UA","subdivisionName":"Vinnytska oblast","code":"UA-05"},"UA-07":{"countryCode":"UA","subdivisionName":"Volynska oblast","code":"UA-07"},"UA-21":{"countryCode":"UA","subdivisionName":"Zakarpatska oblast","code":"UA-21"},"UA-23":{"countryCode":"UA","subdivisionName":"Zaporizka oblast","code":"UA-23"},"UA-18":{"countryCode":"UA","subdivisionName":"Zhytomyrska oblast","code":"UA-18"},"UG-314":{"countryCode":"UG","subdivisionName":"Abim","code":"UG-314"},"UG-301":{"countryCode":"UG","subdivisionName":"Adjumani","code":"UG-301"},"UG-322":{"countryCode":"UG","subdivisionName":"Agago","code":"UG-322"},"UG-323":{"countryCode":"UG","subdivisionName":"Alebtong","code":"UG-323"},"UG-302":{"countryCode":"UG","subdivisionName":"Apac","code":"UG-302"},"UG-303":{"countryCode":"UG","subdivisionName":"Arua","code":"UG-303"},"UG-218":{"countryCode":"UG","subdivisionName":"Bududa","code":"UG-218"},"UG-201":{"countryCode":"UG","subdivisionName":"Bugiri","code":"UG-201"},"UG-420":{"countryCode":"UG","subdivisionName":"Buhweju","code":"UG-420"},"UG-117":{"countryCode":"UG","subdivisionName":"Buikwe","code":"UG-117"},"UG-219":{"countryCode":"UG","subdivisionName":"Bukedea","code":"UG-219"},"UG-118":{"countryCode":"UG","subdivisionName":"Bukomansibi","code":"UG-118"},"UG-225":{"countryCode":"UG","subdivisionName":"Bulambuli","code":"UG-225"},"UG-401":{"countryCode":"UG","subdivisionName":"Bundibugyo","code":"UG-401"},"UG-402":{"countryCode":"UG","subdivisionName":"Bushenyi","code":"UG-402"},"UG-202":{"countryCode":"UG","subdivisionName":"Busia","code":"UG-202"},"UG-120":{"countryCode":"UG","subdivisionName":"Buvuma","code":"UG-120"},"UG-226":{"countryCode":"UG","subdivisionName":"Buyende","code":"UG-226"},"UG-121":{"countryCode":"UG","subdivisionName":"Gomba","code":"UG-121"},"UG-304":{"countryCode":"UG","subdivisionName":"Gulu","code":"UG-304"},"UG-403":{"countryCode":"UG","subdivisionName":"Hoima","code":"UG-403"},"UG-417":{"countryCode":"UG","subdivisionName":"Ibanda","code":"UG-417"},"UG-203":{"countryCode":"UG","subdivisionName":"Iganga","code":"UG-203"},"UG-418":{"countryCode":"UG","subdivisionName":"Isingiro","code":"UG-418"},"UG-204":{"countryCode":"UG","subdivisionName":"Jinja","code":"UG-204"},"UG-318":{"countryCode":"UG","subdivisionName":"Kaabong","code":"UG-318"},"UG-404":{"countryCode":"UG","subdivisionName":"Kabale","code":"UG-404"},"UG-405":{"countryCode":"UG","subdivisionName":"Kabarole","code":"UG-405"},"UG-213":{"countryCode":"UG","subdivisionName":"Kaberamaido","code":"UG-213"},"UG-101":{"countryCode":"UG","subdivisionName":"Kalangala","code":"UG-101"},"UG-222":{"countryCode":"UG","subdivisionName":"Kaliro","code":"UG-222"},"UG-122":{"countryCode":"UG","subdivisionName":"Kalungu","code":"UG-122"},"UG-102":{"countryCode":"UG","subdivisionName":"Kampala","code":"UG-102"},"UG-205":{"countryCode":"UG","subdivisionName":"Kamuli","code":"UG-205"},"UG-413":{"countryCode":"UG","subdivisionName":"Kamwenge","code":"UG-413"},"UG-414":{"countryCode":"UG","subdivisionName":"Kanungu","code":"UG-414"},"UG-206":{"countryCode":"UG","subdivisionName":"Kapchorwa","code":"UG-206"},"UG-406":{"countryCode":"UG","subdivisionName":"Kasese","code":"UG-406"},"UG-207":{"countryCode":"UG","subdivisionName":"Katakwi","code":"UG-207"},"UG-112":{"countryCode":"UG","subdivisionName":"Kayunga","code":"UG-112"},"UG-407":{"countryCode":"UG","subdivisionName":"Kibaale","code":"UG-407"},"UG-103":{"countryCode":"UG","subdivisionName":"Kiboga","code":"UG-103"},"UG-227":{"countryCode":"UG","subdivisionName":"Kibuku","code":"UG-227"},"UG-419":{"countryCode":"UG","subdivisionName":"Kiruhura","code":"UG-419"},"UG-421":{"countryCode":"UG","subdivisionName":"Kiryandongo","code":"UG-421"},"UG-408":{"countryCode":"UG","subdivisionName":"Kisoro","code":"UG-408"},"UG-305":{"countryCode":"UG","subdivisionName":"Kitgum","code":"UG-305"},"UG-319":{"countryCode":"UG","subdivisionName":"Koboko","code":"UG-319"},"UG-325":{"countryCode":"UG","subdivisionName":"Kole","code":"UG-325"},"UG-228":{"countryCode":"UG","subdivisionName":"Kween","code":"UG-228"},"UG-123":{"countryCode":"UG","subdivisionName":"Kyankwanzi","code":"UG-123"},"UG-422":{"countryCode":"UG","subdivisionName":"Kyegegwa","code":"UG-422"},"UG-415":{"countryCode":"UG","subdivisionName":"Kyenjojo","code":"UG-415"},"UG-326":{"countryCode":"UG","subdivisionName":"Lamwo","code":"UG-326"},"UG-307":{"countryCode":"UG","subdivisionName":"Lira","code":"UG-307"},"UG-229":{"countryCode":"UG","subdivisionName":"Luuka","code":"UG-229"},"UG-104":{"countryCode":"UG","subdivisionName":"Luwero","code":"UG-104"},"UG-124":{"countryCode":"UG","subdivisionName":"Lwengo","code":"UG-124"},"UG-114":{"countryCode":"UG","subdivisionName":"Lyantonde","code":"UG-114"},"UG-223":{"countryCode":"UG","subdivisionName":"Manafwa","code":"UG-223"},"UG-320":{"countryCode":"UG","subdivisionName":"Maracha","code":"UG-320"},"UG-105":{"countryCode":"UG","subdivisionName":"Masaka","code":"UG-105"},"UG-409":{"countryCode":"UG","subdivisionName":"Masindi","code":"UG-409"},"UG-214":{"countryCode":"UG","subdivisionName":"Mayuge","code":"UG-214"},"UG-209":{"countryCode":"UG","subdivisionName":"Mbale","code":"UG-209"},"UG-410":{"countryCode":"UG","subdivisionName":"Mbarara","code":"UG-410"},"UG-423":{"countryCode":"UG","subdivisionName":"Mitooma","code":"UG-423"},"UG-115":{"countryCode":"UG","subdivisionName":"Mityana","code":"UG-115"},"UG-308":{"countryCode":"UG","subdivisionName":"Moroto","code":"UG-308"},"UG-309":{"countryCode":"UG","subdivisionName":"Moyo","code":"UG-309"},"UG-106":{"countryCode":"UG","subdivisionName":"Mpigi","code":"UG-106"},"UG-107":{"countryCode":"UG","subdivisionName":"Mubende","code":"UG-107"},"UG-108":{"countryCode":"UG","subdivisionName":"Mukono","code":"UG-108"},"UG-311":{"countryCode":"UG","subdivisionName":"Nakapiripirit","code":"UG-311"},"UG-116":{"countryCode":"UG","subdivisionName":"Nakaseke","code":"UG-116"},"UG-109":{"countryCode":"UG","subdivisionName":"Nakasongola","code":"UG-109"},"UG-230":{"countryCode":"UG","subdivisionName":"Namayingo","code":"UG-230"},"UG-327":{"countryCode":"UG","subdivisionName":"Napak","code":"UG-327"},"UG-310":{"countryCode":"UG","subdivisionName":"Nebbi","code":"UG-310"},"UG-424":{"countryCode":"UG","subdivisionName":"Ntoroko","code":"UG-424"},"UG-411":{"countryCode":"UG","subdivisionName":"Ntungamo","code":"UG-411"},"UG-328":{"countryCode":"UG","subdivisionName":"Nwoya","code":"UG-328"},"UG-321":{"countryCode":"UG","subdivisionName":"Oyam","code":"UG-321"},"UG-312":{"countryCode":"UG","subdivisionName":"Pader","code":"UG-312"},"UG-110":{"countryCode":"UG","subdivisionName":"Rakai","code":"UG-110"},"UG-425":{"countryCode":"UG","subdivisionName":"Rubirizi","code":"UG-425"},"UG-412":{"countryCode":"UG","subdivisionName":"Rukungiri","code":"UG-412"},"UG-111":{"countryCode":"UG","subdivisionName":"Sembabule","code":"UG-111"},"UG-426":{"countryCode":"UG","subdivisionName":"Sheema","code":"UG-426"},"UG-215":{"countryCode":"UG","subdivisionName":"Sironko","code":"UG-215"},"UG-211":{"countryCode":"UG","subdivisionName":"Soroti","code":"UG-211"},"UG-212":{"countryCode":"UG","subdivisionName":"Tororo","code":"UG-212"},"UG-113":{"countryCode":"UG","subdivisionName":"Wakiso","code":"UG-113"},"UG-313":{"countryCode":"UG","subdivisionName":"Yumbe","code":"UG-313"},"UG-330":{"countryCode":"UG","subdivisionName":"Zombo","code":"UG-330"},"UM-95":{"countryCode":"UM","subdivisionName":"Palmyra Atoll","code":"UM-95"},"US-AL":{"countryCode":"US","subdivisionName":"Alabama","code":"US-AL"},"US-AK":{"countryCode":"US","subdivisionName":"Alaska","code":"US-AK"},"US-AZ":{"countryCode":"US","subdivisionName":"Arizona","code":"US-AZ"},"US-AR":{"countryCode":"US","subdivisionName":"Arkansas","code":"US-AR"},"US-CA":{"countryCode":"US","subdivisionName":"California","code":"US-CA"},"US-CO":{"countryCode":"US","subdivisionName":"Colorado","code":"US-CO"},"US-CT":{"countryCode":"US","subdivisionName":"Connecticut","code":"US-CT"},"US-DE":{"countryCode":"US","subdivisionName":"Delaware","code":"US-DE"},"US-DC":{"countryCode":"US","subdivisionName":"District of Columbia","code":"US-DC"},"US-FL":{"countryCode":"US","subdivisionName":"Florida","code":"US-FL"},"US-GA":{"countryCode":"US","subdivisionName":"Georgia","code":"US-GA"},"US-HI":{"countryCode":"US","subdivisionName":"Hawaii","code":"US-HI"},"US-ID":{"countryCode":"US","subdivisionName":"Idaho","code":"US-ID"},"US-IL":{"countryCode":"US","subdivisionName":"Illinois","code":"US-IL"},"US-IN":{"countryCode":"US","subdivisionName":"Indiana","code":"US-IN"},"US-IA":{"countryCode":"US","subdivisionName":"Iowa","code":"US-IA"},"US-KS":{"countryCode":"US","subdivisionName":"Kansas","code":"US-KS"},"US-KY":{"countryCode":"US","subdivisionName":"Kentucky","code":"US-KY"},"US-LA":{"countryCode":"US","subdivisionName":"Louisiana","code":"US-LA"},"US-ME":{"countryCode":"US","subdivisionName":"Maine","code":"US-ME"},"US-MD":{"countryCode":"US","subdivisionName":"Maryland","code":"US-MD"},"US-MA":{"countryCode":"US","subdivisionName":"Massachusetts","code":"US-MA"},"US-MI":{"countryCode":"US","subdivisionName":"Michigan","code":"US-MI"},"US-MN":{"countryCode":"US","subdivisionName":"Minnesota","code":"US-MN"},"US-MS":{"countryCode":"US","subdivisionName":"Mississippi","code":"US-MS"},"US-MO":{"countryCode":"US","subdivisionName":"Missouri","code":"US-MO"},"US-MT":{"countryCode":"US","subdivisionName":"Montana","code":"US-MT"},"US-NE":{"countryCode":"US","subdivisionName":"Nebraska","code":"US-NE"},"US-NV":{"countryCode":"US","subdivisionName":"Nevada","code":"US-NV"},"US-NH":{"countryCode":"US","subdivisionName":"New Hampshire","code":"US-NH"},"US-NJ":{"countryCode":"US","subdivisionName":"New Jersey","code":"US-NJ"},"US-NM":{"countryCode":"US","subdivisionName":"New Mexico","code":"US-NM"},"US-NY":{"countryCode":"US","subdivisionName":"New York","code":"US-NY"},"US-NC":{"countryCode":"US","subdivisionName":"North Carolina","code":"US-NC"},"US-ND":{"countryCode":"US","subdivisionName":"North Dakota","code":"US-ND"},"US-OH":{"countryCode":"US","subdivisionName":"Ohio","code":"US-OH"},"US-OK":{"countryCode":"US","subdivisionName":"Oklahoma","code":"US-OK"},"US-OR":{"countryCode":"US","subdivisionName":"Oregon","code":"US-OR"},"US-PA":{"countryCode":"US","subdivisionName":"Pennsylvania","code":"US-PA"},"US-RI":{"countryCode":"US","subdivisionName":"Rhode Island","code":"US-RI"},"US-SC":{"countryCode":"US","subdivisionName":"South Carolina","code":"US-SC"},"US-SD":{"countryCode":"US","subdivisionName":"South Dakota","code":"US-SD"},"US-TN":{"countryCode":"US","subdivisionName":"Tennessee","code":"US-TN"},"US-TX":{"countryCode":"US","subdivisionName":"Texas","code":"US-TX"},"US-UT":{"countryCode":"US","subdivisionName":"Utah","code":"US-UT"},"US-VT":{"countryCode":"US","subdivisionName":"Vermont","code":"US-VT"},"US-VA":{"countryCode":"US","subdivisionName":"Virginia","code":"US-VA"},"US-WA":{"countryCode":"US","subdivisionName":"Washington","code":"US-WA"},"US-WV":{"countryCode":"US","subdivisionName":"West Virginia","code":"US-WV"},"US-WI":{"countryCode":"US","subdivisionName":"Wisconsin","code":"US-WI"},"US-WY":{"countryCode":"US","subdivisionName":"Wyoming","code":"US-WY"},"UY-AR":{"countryCode":"UY","subdivisionName":"Artigas","code":"UY-AR"},"UY-CA":{"countryCode":"UY","subdivisionName":"Canelones","code":"UY-CA"},"UY-CL":{"countryCode":"UY","subdivisionName":"Cerro Largo","code":"UY-CL"},"UY-CO":{"countryCode":"UY","subdivisionName":"Colonia","code":"UY-CO"},"UY-DU":{"countryCode":"UY","subdivisionName":"Durazno","code":"UY-DU"},"UY-FS":{"countryCode":"UY","subdivisionName":"Flores","code":"UY-FS"},"UY-FD":{"countryCode":"UY","subdivisionName":"Florida","code":"UY-FD"},"UY-LA":{"countryCode":"UY","subdivisionName":"Lavalleja","code":"UY-LA"},"UY-MA":{"countryCode":"UY","subdivisionName":"Maldonado","code":"UY-MA"},"UY-MO":{"countryCode":"UY","subdivisionName":"Montevideo","code":"UY-MO"},"UY-PA":{"countryCode":"UY","subdivisionName":"Paysandu","code":"UY-PA"},"UY-RN":{"countryCode":"UY","subdivisionName":"Rio Negro","code":"UY-RN"},"UY-RV":{"countryCode":"UY","subdivisionName":"Rivera","code":"UY-RV"},"UY-RO":{"countryCode":"UY","subdivisionName":"Rocha","code":"UY-RO"},"UY-SA":{"countryCode":"UY","subdivisionName":"Salto","code":"UY-SA"},"UY-SJ":{"countryCode":"UY","subdivisionName":"San Jose","code":"UY-SJ"},"UY-SO":{"countryCode":"UY","subdivisionName":"Soriano","code":"UY-SO"},"UY-TA":{"countryCode":"UY","subdivisionName":"Tacuarembo","code":"UY-TA"},"UY-TT":{"countryCode":"UY","subdivisionName":"Treinta y Tres","code":"UY-TT"},"UZ-AN":{"countryCode":"UZ","subdivisionName":"Andijon","code":"UZ-AN"},"UZ-BU":{"countryCode":"UZ","subdivisionName":"Buxoro","code":"UZ-BU"},"UZ-FA":{"countryCode":"UZ","subdivisionName":"Farg'ona","code":"UZ-FA"},"UZ-JI":{"countryCode":"UZ","subdivisionName":"Jizzax","code":"UZ-JI"},"UZ-NG":{"countryCode":"UZ","subdivisionName":"Namangan","code":"UZ-NG"},"UZ-NW":{"countryCode":"UZ","subdivisionName":"Navoiy","code":"UZ-NW"},"UZ-QA":{"countryCode":"UZ","subdivisionName":"Qashqadaryo","code":"UZ-QA"},"UZ-QR":{"countryCode":"UZ","subdivisionName":"Qoraqalpog'iston Respublikasi","code":"UZ-QR"},"UZ-SA":{"countryCode":"UZ","subdivisionName":"Samarqand","code":"UZ-SA"},"UZ-SI":{"countryCode":"UZ","subdivisionName":"Sirdaryo","code":"UZ-SI"},"UZ-SU":{"countryCode":"UZ","subdivisionName":"Surxondaryo","code":"UZ-SU"},"UZ-TK":{"countryCode":"UZ","subdivisionName":"Toshkent","code":"UZ-TK"},"UZ-XO":{"countryCode":"UZ","subdivisionName":"Xorazm","code":"UZ-XO"},"VC-01":{"countryCode":"VC","subdivisionName":"Charlotte","code":"VC-01"},"VC-06":{"countryCode":"VC","subdivisionName":"Grenadines","code":"VC-06"},"VC-04":{"countryCode":"VC","subdivisionName":"Saint George","code":"VC-04"},"VC-05":{"countryCode":"VC","subdivisionName":"Saint Patrick","code":"VC-05"},"VE-Z":{"countryCode":"VE","subdivisionName":"Amazonas","code":"VE-Z"},"VE-B":{"countryCode":"VE","subdivisionName":"Anzoategui","code":"VE-B"},"VE-C":{"countryCode":"VE","subdivisionName":"Apure","code":"VE-C"},"VE-D":{"countryCode":"VE","subdivisionName":"Aragua","code":"VE-D"},"VE-E":{"countryCode":"VE","subdivisionName":"Barinas","code":"VE-E"},"VE-F":{"countryCode":"VE","subdivisionName":"Bolivar","code":"VE-F"},"VE-G":{"countryCode":"VE","subdivisionName":"Carabobo","code":"VE-G"},"VE-H":{"countryCode":"VE","subdivisionName":"Cojedes","code":"VE-H"},"VE-Y":{"countryCode":"VE","subdivisionName":"Delta Amacuro","code":"VE-Y"},"VE-W":{"countryCode":"VE","subdivisionName":"Dependencias Federales","code":"VE-W"},"VE-A":{"countryCode":"VE","subdivisionName":"Distrito Capital","code":"VE-A"},"VE-I":{"countryCode":"VE","subdivisionName":"Falcon","code":"VE-I"},"VE-J":{"countryCode":"VE","subdivisionName":"Guarico","code":"VE-J"},"VE-X":{"countryCode":"VE","subdivisionName":"La Guaira","code":"VE-X"},"VE-K":{"countryCode":"VE","subdivisionName":"Lara","code":"VE-K"},"VE-L":{"countryCode":"VE","subdivisionName":"Merida","code":"VE-L"},"VE-M":{"countryCode":"VE","subdivisionName":"Miranda","code":"VE-M"},"VE-N":{"countryCode":"VE","subdivisionName":"Monagas","code":"VE-N"},"VE-O":{"countryCode":"VE","subdivisionName":"Nueva Esparta","code":"VE-O"},"VE-P":{"countryCode":"VE","subdivisionName":"Portuguesa","code":"VE-P"},"VE-R":{"countryCode":"VE","subdivisionName":"Sucre","code":"VE-R"},"VE-S":{"countryCode":"VE","subdivisionName":"Tachira","code":"VE-S"},"VE-T":{"countryCode":"VE","subdivisionName":"Trujillo","code":"VE-T"},"VE-U":{"countryCode":"VE","subdivisionName":"Yaracuy","code":"VE-U"},"VE-V":{"countryCode":"VE","subdivisionName":"Zulia","code":"VE-V"},"VN-44":{"countryCode":"VN","subdivisionName":"An Giang","code":"VN-44"},"VN-43":{"countryCode":"VN","subdivisionName":"Ba Ria - Vung Tau","code":"VN-43"},"VN-54":{"countryCode":"VN","subdivisionName":"Bac Giang","code":"VN-54"},"VN-53":{"countryCode":"VN","subdivisionName":"Bac Kan","code":"VN-53"},"VN-55":{"countryCode":"VN","subdivisionName":"Bac Lieu","code":"VN-55"},"VN-56":{"countryCode":"VN","subdivisionName":"Bac Ninh","code":"VN-56"},"VN-50":{"countryCode":"VN","subdivisionName":"Ben Tre","code":"VN-50"},"VN-31":{"countryCode":"VN","subdivisionName":"Binh Dinh","code":"VN-31"},"VN-57":{"countryCode":"VN","subdivisionName":"Binh Duong","code":"VN-57"},"VN-58":{"countryCode":"VN","subdivisionName":"Binh Phuoc","code":"VN-58"},"VN-40":{"countryCode":"VN","subdivisionName":"Binh Thuan","code":"VN-40"},"VN-59":{"countryCode":"VN","subdivisionName":"Ca Mau","code":"VN-59"},"VN-CT":{"countryCode":"VN","subdivisionName":"Can Tho","code":"VN-CT"},"VN-04":{"countryCode":"VN","subdivisionName":"Cao Bang","code":"VN-04"},"VN-DN":{"countryCode":"VN","subdivisionName":"Da Nang","code":"VN-DN"},"VN-33":{"countryCode":"VN","subdivisionName":"Dak Lak","code":"VN-33"},"VN-72":{"countryCode":"VN","subdivisionName":"Dak Nong","code":"VN-72"},"VN-71":{"countryCode":"VN","subdivisionName":"Dien Bien","code":"VN-71"},"VN-39":{"countryCode":"VN","subdivisionName":"Dong Nai","code":"VN-39"},"VN-45":{"countryCode":"VN","subdivisionName":"Dong Thap","code":"VN-45"},"VN-30":{"countryCode":"VN","subdivisionName":"Gia Lai","code":"VN-30"},"VN-03":{"countryCode":"VN","subdivisionName":"Ha Giang","code":"VN-03"},"VN-63":{"countryCode":"VN","subdivisionName":"Ha Nam","code":"VN-63"},"VN-HN":{"countryCode":"VN","subdivisionName":"Ha Noi","code":"VN-HN"},"VN-23":{"countryCode":"VN","subdivisionName":"Ha Tinh","code":"VN-23"},"VN-61":{"countryCode":"VN","subdivisionName":"Hai Duong","code":"VN-61"},"VN-HP":{"countryCode":"VN","subdivisionName":"Hai Phong","code":"VN-HP"},"VN-73":{"countryCode":"VN","subdivisionName":"Hau Giang","code":"VN-73"},"VN-SG":{"countryCode":"VN","subdivisionName":"Ho Chi Minh","code":"VN-SG"},"VN-14":{"countryCode":"VN","subdivisionName":"Hoa Binh","code":"VN-14"},"VN-66":{"countryCode":"VN","subdivisionName":"Hung Yen","code":"VN-66"},"VN-34":{"countryCode":"VN","subdivisionName":"Khanh Hoa","code":"VN-34"},"VN-47":{"countryCode":"VN","subdivisionName":"Kien Giang","code":"VN-47"},"VN-28":{"countryCode":"VN","subdivisionName":"Kon Tum","code":"VN-28"},"VN-01":{"countryCode":"VN","subdivisionName":"Lai Chau","code":"VN-01"},"VN-35":{"countryCode":"VN","subdivisionName":"Lam Dong","code":"VN-35"},"VN-09":{"countryCode":"VN","subdivisionName":"Lang Son","code":"VN-09"},"VN-02":{"countryCode":"VN","subdivisionName":"Lao Cai","code":"VN-02"},"VN-41":{"countryCode":"VN","subdivisionName":"Long An","code":"VN-41"},"VN-67":{"countryCode":"VN","subdivisionName":"Nam Dinh","code":"VN-67"},"VN-22":{"countryCode":"VN","subdivisionName":"Nghe An","code":"VN-22"},"VN-18":{"countryCode":"VN","subdivisionName":"Ninh Binh","code":"VN-18"},"VN-36":{"countryCode":"VN","subdivisionName":"Ninh Thuan","code":"VN-36"},"VN-68":{"countryCode":"VN","subdivisionName":"Phu Tho","code":"VN-68"},"VN-32":{"countryCode":"VN","subdivisionName":"Phu Yen","code":"VN-32"},"VN-24":{"countryCode":"VN","subdivisionName":"Quang Binh","code":"VN-24"},"VN-27":{"countryCode":"VN","subdivisionName":"Quang Nam","code":"VN-27"},"VN-29":{"countryCode":"VN","subdivisionName":"Quang Ngai","code":"VN-29"},"VN-13":{"countryCode":"VN","subdivisionName":"Quang Ninh","code":"VN-13"},"VN-25":{"countryCode":"VN","subdivisionName":"Quang Tri","code":"VN-25"},"VN-52":{"countryCode":"VN","subdivisionName":"Soc Trang","code":"VN-52"},"VN-05":{"countryCode":"VN","subdivisionName":"Son La","code":"VN-05"},"VN-37":{"countryCode":"VN","subdivisionName":"Tay Ninh","code":"VN-37"},"VN-20":{"countryCode":"VN","subdivisionName":"Thai Binh","code":"VN-20"},"VN-69":{"countryCode":"VN","subdivisionName":"Thai Nguyen","code":"VN-69"},"VN-21":{"countryCode":"VN","subdivisionName":"Thanh Hoa","code":"VN-21"},"VN-26":{"countryCode":"VN","subdivisionName":"Thua Thien-Hue","code":"VN-26"},"VN-46":{"countryCode":"VN","subdivisionName":"Tien Giang","code":"VN-46"},"VN-51":{"countryCode":"VN","subdivisionName":"Tra Vinh","code":"VN-51"},"VN-07":{"countryCode":"VN","subdivisionName":"Tuyen Quang","code":"VN-07"},"VN-49":{"countryCode":"VN","subdivisionName":"Vinh Long","code":"VN-49"},"VN-70":{"countryCode":"VN","subdivisionName":"Vinh Phuc","code":"VN-70"},"VN-06":{"countryCode":"VN","subdivisionName":"Yen Bai","code":"VN-06"},"VU-SAM":{"countryCode":"VU","subdivisionName":"Sanma","code":"VU-SAM"},"VU-SEE":{"countryCode":"VU","subdivisionName":"Shefa","code":"VU-SEE"},"VU-TAE":{"countryCode":"VU","subdivisionName":"Tafea","code":"VU-TAE"},"VU-TOB":{"countryCode":"VU","subdivisionName":"Torba","code":"VU-TOB"},"WF-SG":{"countryCode":"WF","subdivisionName":"Sigave","code":"WF-SG"},"WF-UV":{"countryCode":"WF","subdivisionName":"Uvea","code":"WF-UV"},"WS-AT":{"countryCode":"WS","subdivisionName":"Atua","code":"WS-AT"},"WS-FA":{"countryCode":"WS","subdivisionName":"Fa'asaleleaga","code":"WS-FA"},"WS-GI":{"countryCode":"WS","subdivisionName":"Gagaifomauga","code":"WS-GI"},"WS-TU":{"countryCode":"WS","subdivisionName":"Tuamasaga","code":"WS-TU"},"YE-AD":{"countryCode":"YE","subdivisionName":"'Adan","code":"YE-AD"},"YE-AM":{"countryCode":"YE","subdivisionName":"'Amran","code":"YE-AM"},"YE-DA":{"countryCode":"YE","subdivisionName":"Ad Dali'","code":"YE-DA"},"YE-BA":{"countryCode":"YE","subdivisionName":"Al Bayda'","code":"YE-BA"},"YE-HU":{"countryCode":"YE","subdivisionName":"Al Hudaydah","code":"YE-HU"},"YE-JA":{"countryCode":"YE","subdivisionName":"Al Jawf","code":"YE-JA"},"YE-MW":{"countryCode":"YE","subdivisionName":"Al Mahwit","code":"YE-MW"},"YE-SA":{"countryCode":"YE","subdivisionName":"Amanat al 'Asimah","code":"YE-SA"},"YE-DH":{"countryCode":"YE","subdivisionName":"Dhamar","code":"YE-DH"},"YE-HD":{"countryCode":"YE","subdivisionName":"Hadramawt","code":"YE-HD"},"YE-HJ":{"countryCode":"YE","subdivisionName":"Hajjah","code":"YE-HJ"},"YE-IB":{"countryCode":"YE","subdivisionName":"Ibb","code":"YE-IB"},"YE-LA":{"countryCode":"YE","subdivisionName":"Lahij","code":"YE-LA"},"YE-MA":{"countryCode":"YE","subdivisionName":"Ma'rib","code":"YE-MA"},"YE-RA":{"countryCode":"YE","subdivisionName":"Raymah","code":"YE-RA"},"YE-SD":{"countryCode":"YE","subdivisionName":"Sa'dah","code":"YE-SD"},"YE-SN":{"countryCode":"YE","subdivisionName":"San'a'","code":"YE-SN"},"YE-SH":{"countryCode":"YE","subdivisionName":"Shabwah","code":"YE-SH"},"YE-TA":{"countryCode":"YE","subdivisionName":"Ta'izz","code":"YE-TA"},"ZA-EC":{"countryCode":"ZA","subdivisionName":"Eastern Cape","code":"ZA-EC"},"ZA-FS":{"countryCode":"ZA","subdivisionName":"Free State","code":"ZA-FS"},"ZA-GP":{"countryCode":"ZA","subdivisionName":"Gauteng","code":"ZA-GP"},"ZA-KZN":{"countryCode":"ZA","subdivisionName":"Kwazulu-Natal","code":"ZA-KZN"},"ZA-LP":{"countryCode":"ZA","subdivisionName":"Limpopo","code":"ZA-LP"},"ZA-MP":{"countryCode":"ZA","subdivisionName":"Mpumalanga","code":"ZA-MP"},"ZA-NW":{"countryCode":"ZA","subdivisionName":"North-West","code":"ZA-NW"},"ZA-NC":{"countryCode":"ZA","subdivisionName":"Northern Cape","code":"ZA-NC"},"ZA-WC":{"countryCode":"ZA","subdivisionName":"Western Cape","code":"ZA-WC"},"ZM-02":{"countryCode":"ZM","subdivisionName":"Central","code":"ZM-02"},"ZM-08":{"countryCode":"ZM","subdivisionName":"Copperbelt","code":"ZM-08"},"ZM-03":{"countryCode":"ZM","subdivisionName":"Eastern","code":"ZM-03"},"ZM-04":{"countryCode":"ZM","subdivisionName":"Luapula","code":"ZM-04"},"ZM-09":{"countryCode":"ZM","subdivisionName":"Lusaka","code":"ZM-09"},"ZM-10":{"countryCode":"ZM","subdivisionName":"Muchinga","code":"ZM-10"},"ZM-06":{"countryCode":"ZM","subdivisionName":"North-Western","code":"ZM-06"},"ZM-05":{"countryCode":"ZM","subdivisionName":"Northern","code":"ZM-05"},"ZM-07":{"countryCode":"ZM","subdivisionName":"Southern","code":"ZM-07"},"ZM-01":{"countryCode":"ZM","subdivisionName":"Western","code":"ZM-01"},"ZW-BU":{"countryCode":"ZW","subdivisionName":"Bulawayo","code":"ZW-BU"},"ZW-HA":{"countryCode":"ZW","subdivisionName":"Harare","code":"ZW-HA"},"ZW-MA":{"countryCode":"ZW","subdivisionName":"Manicaland","code":"ZW-MA"},"ZW-MC":{"countryCode":"ZW","subdivisionName":"Mashonaland Central","code":"ZW-MC"},"ZW-ME":{"countryCode":"ZW","subdivisionName":"Mashonaland East","code":"ZW-ME"},"ZW-MW":{"countryCode":"ZW","subdivisionName":"Mashonaland West","code":"ZW-MW"},"ZW-MV":{"countryCode":"ZW","subdivisionName":"Masvingo","code":"ZW-MV"},"ZW-MN":{"countryCode":"ZW","subdivisionName":"Matabeleland North","code":"ZW-MN"},"ZW-MS":{"countryCode":"ZW","subdivisionName":"Matabeleland South","code":"ZW-MS"},"ZW-MI":{"countryCode":"ZW","subdivisionName":"Midlands","code":"ZW-MI"}} \ No newline at end of file +export const countries = { + "AD-07": { + countryCode: "AD", + subdivisionName: "Andorra la Vella", + code: "AD-07", + }, + "AD-02": { countryCode: "AD", subdivisionName: "Canillo", code: "AD-02" }, + "AD-03": { countryCode: "AD", subdivisionName: "Encamp", code: "AD-03" }, + "AD-08": { + countryCode: "AD", + subdivisionName: "Escaldes-Engordany", + code: "AD-08", + }, + "AD-04": { countryCode: "AD", subdivisionName: "La Massana", code: "AD-04" }, + "AD-05": { countryCode: "AD", subdivisionName: "Ordino", code: "AD-05" }, + "AD-06": { + countryCode: "AD", + subdivisionName: "Sant Julia de Loria", + code: "AD-06", + }, + "AE-AJ": { countryCode: "AE", subdivisionName: "'Ajman", code: "AE-AJ" }, + "AE-AZ": { countryCode: "AE", subdivisionName: "Abu Zaby", code: "AE-AZ" }, + "AE-FU": { countryCode: "AE", subdivisionName: "Al Fujayrah", code: "AE-FU" }, + "AE-SH": { + countryCode: "AE", + subdivisionName: "Ash Shariqah", + code: "AE-SH", + }, + "AE-DU": { countryCode: "AE", subdivisionName: "Dubayy", code: "AE-DU" }, + "AE-RK": { + countryCode: "AE", + subdivisionName: "Ra's al Khaymah", + code: "AE-RK", + }, + "AE-UQ": { + countryCode: "AE", + subdivisionName: "Umm al Qaywayn", + code: "AE-UQ", + }, + "AF-BDG": { countryCode: "AF", subdivisionName: "Badghis", code: "AF-BDG" }, + "AF-BGL": { countryCode: "AF", subdivisionName: "Baghlan", code: "AF-BGL" }, + "AF-BAL": { countryCode: "AF", subdivisionName: "Balkh", code: "AF-BAL" }, + "AF-BAM": { countryCode: "AF", subdivisionName: "Bamyan", code: "AF-BAM" }, + "AF-DAY": { countryCode: "AF", subdivisionName: "Daykundi", code: "AF-DAY" }, + "AF-FRA": { countryCode: "AF", subdivisionName: "Farah", code: "AF-FRA" }, + "AF-FYB": { countryCode: "AF", subdivisionName: "Faryab", code: "AF-FYB" }, + "AF-GHA": { countryCode: "AF", subdivisionName: "Ghazni", code: "AF-GHA" }, + "AF-GHO": { countryCode: "AF", subdivisionName: "Ghor", code: "AF-GHO" }, + "AF-HEL": { countryCode: "AF", subdivisionName: "Helmand", code: "AF-HEL" }, + "AF-HER": { countryCode: "AF", subdivisionName: "Herat", code: "AF-HER" }, + "AF-JOW": { countryCode: "AF", subdivisionName: "Jowzjan", code: "AF-JOW" }, + "AF-KAB": { countryCode: "AF", subdivisionName: "Kabul", code: "AF-KAB" }, + "AF-KAN": { countryCode: "AF", subdivisionName: "Kandahar", code: "AF-KAN" }, + "AF-KHO": { countryCode: "AF", subdivisionName: "Khost", code: "AF-KHO" }, + "AF-KDZ": { countryCode: "AF", subdivisionName: "Kunduz", code: "AF-KDZ" }, + "AF-LAG": { countryCode: "AF", subdivisionName: "Laghman", code: "AF-LAG" }, + "AF-LOG": { countryCode: "AF", subdivisionName: "Logar", code: "AF-LOG" }, + "AF-NAN": { countryCode: "AF", subdivisionName: "Nangarhar", code: "AF-NAN" }, + "AF-NIM": { countryCode: "AF", subdivisionName: "Nimroz", code: "AF-NIM" }, + "AF-PKA": { countryCode: "AF", subdivisionName: "Paktika", code: "AF-PKA" }, + "AF-PIA": { countryCode: "AF", subdivisionName: "Paktiya", code: "AF-PIA" }, + "AF-PAR": { countryCode: "AF", subdivisionName: "Parwan", code: "AF-PAR" }, + "AF-SAM": { countryCode: "AF", subdivisionName: "Samangan", code: "AF-SAM" }, + "AF-SAR": { countryCode: "AF", subdivisionName: "Sar-e Pul", code: "AF-SAR" }, + "AF-TAK": { countryCode: "AF", subdivisionName: "Takhar", code: "AF-TAK" }, + "AF-URU": { countryCode: "AF", subdivisionName: "Uruzgan", code: "AF-URU" }, + "AF-WAR": { countryCode: "AF", subdivisionName: "Wardak", code: "AF-WAR" }, + "AG-10": { countryCode: "AG", subdivisionName: "Barbuda", code: "AG-10" }, + "AG-11": { countryCode: "AG", subdivisionName: "Redonda", code: "AG-11" }, + "AG-03": { + countryCode: "AG", + subdivisionName: "Saint George", + code: "AG-03", + }, + "AG-04": { countryCode: "AG", subdivisionName: "Saint John", code: "AG-04" }, + "AG-05": { countryCode: "AG", subdivisionName: "Saint Mary", code: "AG-05" }, + "AG-07": { countryCode: "AG", subdivisionName: "Saint Peter", code: "AG-07" }, + "AG-08": { + countryCode: "AG", + subdivisionName: "Saint Philip", + code: "AG-08", + }, + "-": { countryCode: "YT", subdivisionName: "Tsingoni", code: "-" }, + "AL-01": { countryCode: "AL", subdivisionName: "Berat", code: "AL-01" }, + "AL-09": { countryCode: "AL", subdivisionName: "Diber", code: "AL-09" }, + "AL-02": { countryCode: "AL", subdivisionName: "Durres", code: "AL-02" }, + "AL-03": { countryCode: "AL", subdivisionName: "Elbasan", code: "AL-03" }, + "AL-04": { countryCode: "AL", subdivisionName: "Fier", code: "AL-04" }, + "AL-05": { countryCode: "AL", subdivisionName: "Gjirokaster", code: "AL-05" }, + "AL-06": { countryCode: "AL", subdivisionName: "Korce", code: "AL-06" }, + "AL-07": { countryCode: "AL", subdivisionName: "Kukes", code: "AL-07" }, + "AL-08": { countryCode: "AL", subdivisionName: "Lezhe", code: "AL-08" }, + "AL-10": { countryCode: "AL", subdivisionName: "Shkoder", code: "AL-10" }, + "AL-11": { countryCode: "AL", subdivisionName: "Tirane", code: "AL-11" }, + "AL-12": { countryCode: "AL", subdivisionName: "Vlore", code: "AL-12" }, + "AM-AG": { countryCode: "AM", subdivisionName: "Aragacotn", code: "AM-AG" }, + "AM-AR": { countryCode: "AM", subdivisionName: "Ararat", code: "AM-AR" }, + "AM-AV": { countryCode: "AM", subdivisionName: "Armavir", code: "AM-AV" }, + "AM-ER": { countryCode: "AM", subdivisionName: "Erevan", code: "AM-ER" }, + "AM-GR": { + countryCode: "AM", + subdivisionName: "Gegark'unik'", + code: "AM-GR", + }, + "AM-KT": { countryCode: "AM", subdivisionName: "Kotayk'", code: "AM-KT" }, + "AM-LO": { countryCode: "AM", subdivisionName: "Lori", code: "AM-LO" }, + "AM-SH": { countryCode: "AM", subdivisionName: "Sirak", code: "AM-SH" }, + "AM-SU": { countryCode: "AM", subdivisionName: "Syunik'", code: "AM-SU" }, + "AM-TV": { countryCode: "AM", subdivisionName: "Tavus", code: "AM-TV" }, + "AM-VD": { countryCode: "AM", subdivisionName: "Vayoc Jor", code: "AM-VD" }, + "AO-BGO": { countryCode: "AO", subdivisionName: "Bengo", code: "AO-BGO" }, + "AO-BGU": { countryCode: "AO", subdivisionName: "Benguela", code: "AO-BGU" }, + "AO-BIE": { countryCode: "AO", subdivisionName: "Bie", code: "AO-BIE" }, + "AO-CAB": { countryCode: "AO", subdivisionName: "Cabinda", code: "AO-CAB" }, + "AO-CCU": { + countryCode: "AO", + subdivisionName: "Cuando Cubango", + code: "AO-CCU", + }, + "AO-CNO": { + countryCode: "AO", + subdivisionName: "Cuanza-Norte", + code: "AO-CNO", + }, + "AO-CUS": { + countryCode: "AO", + subdivisionName: "Cuanza-Sul", + code: "AO-CUS", + }, + "AO-CNN": { countryCode: "AO", subdivisionName: "Cunene", code: "AO-CNN" }, + "AO-HUA": { countryCode: "AO", subdivisionName: "Huambo", code: "AO-HUA" }, + "AO-HUI": { countryCode: "AO", subdivisionName: "Huila", code: "AO-HUI" }, + "AO-LUA": { countryCode: "AO", subdivisionName: "Luanda", code: "AO-LUA" }, + "AO-LNO": { + countryCode: "AO", + subdivisionName: "Lunda-Norte", + code: "AO-LNO", + }, + "AO-LSU": { countryCode: "AO", subdivisionName: "Lunda-Sul", code: "AO-LSU" }, + "AO-MAL": { countryCode: "AO", subdivisionName: "Malange", code: "AO-MAL" }, + "AO-MOX": { countryCode: "AO", subdivisionName: "Moxico", code: "AO-MOX" }, + "AO-NAM": { countryCode: "AO", subdivisionName: "Namibe", code: "AO-NAM" }, + "AO-UIG": { countryCode: "AO", subdivisionName: "Uige", code: "AO-UIG" }, + "AO-ZAI": { countryCode: "AO", subdivisionName: "Zaire", code: "AO-ZAI" }, + "AR-B": { countryCode: "AR", subdivisionName: "Buenos Aires", code: "AR-B" }, + "AR-K": { countryCode: "AR", subdivisionName: "Catamarca", code: "AR-K" }, + "AR-H": { countryCode: "AR", subdivisionName: "Chaco", code: "AR-H" }, + "AR-U": { countryCode: "AR", subdivisionName: "Chubut", code: "AR-U" }, + "AR-C": { + countryCode: "AR", + subdivisionName: "Ciudad Autonoma de Buenos Aires", + code: "AR-C", + }, + "AR-X": { countryCode: "AR", subdivisionName: "Cordoba", code: "AR-X" }, + "AR-W": { countryCode: "AR", subdivisionName: "Corrientes", code: "AR-W" }, + "AR-E": { countryCode: "AR", subdivisionName: "Entre Rios", code: "AR-E" }, + "AR-P": { countryCode: "AR", subdivisionName: "Formosa", code: "AR-P" }, + "AR-Y": { countryCode: "AR", subdivisionName: "Jujuy", code: "AR-Y" }, + "AR-L": { countryCode: "AR", subdivisionName: "La Pampa", code: "AR-L" }, + "AR-F": { countryCode: "AR", subdivisionName: "La Rioja", code: "AR-F" }, + "AR-M": { countryCode: "AR", subdivisionName: "Mendoza", code: "AR-M" }, + "AR-N": { countryCode: "AR", subdivisionName: "Misiones", code: "AR-N" }, + "AR-Q": { countryCode: "AR", subdivisionName: "Neuquen", code: "AR-Q" }, + "AR-R": { countryCode: "AR", subdivisionName: "Rio Negro", code: "AR-R" }, + "AR-A": { countryCode: "AR", subdivisionName: "Salta", code: "AR-A" }, + "AR-J": { countryCode: "AR", subdivisionName: "San Juan", code: "AR-J" }, + "AR-D": { countryCode: "AR", subdivisionName: "San Luis", code: "AR-D" }, + "AR-Z": { countryCode: "AR", subdivisionName: "Santa Cruz", code: "AR-Z" }, + "AR-S": { countryCode: "AR", subdivisionName: "Santa Fe", code: "AR-S" }, + "AR-G": { + countryCode: "AR", + subdivisionName: "Santiago del Estero", + code: "AR-G", + }, + "AR-V": { + countryCode: "AR", + subdivisionName: "Tierra del Fuego", + code: "AR-V", + }, + "AR-T": { countryCode: "AR", subdivisionName: "Tucuman", code: "AR-T" }, + "AT-1": { countryCode: "AT", subdivisionName: "Burgenland", code: "AT-1" }, + "AT-2": { countryCode: "AT", subdivisionName: "Karnten", code: "AT-2" }, + "AT-3": { + countryCode: "AT", + subdivisionName: "Niederosterreich", + code: "AT-3", + }, + "AT-4": { + countryCode: "AT", + subdivisionName: "Oberosterreich", + code: "AT-4", + }, + "AT-5": { countryCode: "AT", subdivisionName: "Salzburg", code: "AT-5" }, + "AT-6": { countryCode: "AT", subdivisionName: "Steiermark", code: "AT-6" }, + "AT-7": { countryCode: "AT", subdivisionName: "Tirol", code: "AT-7" }, + "AT-8": { countryCode: "AT", subdivisionName: "Vorarlberg", code: "AT-8" }, + "AT-9": { countryCode: "AT", subdivisionName: "Wien", code: "AT-9" }, + "AU-ACT": { + countryCode: "AU", + subdivisionName: "Australian Capital Territory", + code: "AU-ACT", + }, + "AU-NSW": { + countryCode: "AU", + subdivisionName: "New South Wales", + code: "AU-NSW", + }, + "AU-NT": { + countryCode: "AU", + subdivisionName: "Northern Territory", + code: "AU-NT", + }, + "AU-QLD": { + countryCode: "AU", + subdivisionName: "Queensland", + code: "AU-QLD", + }, + "AU-SA": { + countryCode: "AU", + subdivisionName: "South Australia", + code: "AU-SA", + }, + "AU-TAS": { countryCode: "AU", subdivisionName: "Tasmania", code: "AU-TAS" }, + "AU-VIC": { countryCode: "AU", subdivisionName: "Victoria", code: "AU-VIC" }, + "AU-WA": { + countryCode: "AU", + subdivisionName: "Western Australia", + code: "AU-WA", + }, + "AZ-ABS": { countryCode: "AZ", subdivisionName: "Abseron", code: "AZ-ABS" }, + "AZ-AGC": { countryCode: "AZ", subdivisionName: "Agcabadi", code: "AZ-AGC" }, + "AZ-AGS": { countryCode: "AZ", subdivisionName: "Agdas", code: "AZ-AGS" }, + "AZ-AGA": { countryCode: "AZ", subdivisionName: "Agstafa", code: "AZ-AGA" }, + "AZ-AGU": { countryCode: "AZ", subdivisionName: "Agsu", code: "AZ-AGU" }, + "AZ-AST": { countryCode: "AZ", subdivisionName: "Astara", code: "AZ-AST" }, + "AZ-BA": { countryCode: "AZ", subdivisionName: "Baki", code: "AZ-BA" }, + "AZ-BAL": { countryCode: "AZ", subdivisionName: "Balakan", code: "AZ-BAL" }, + "AZ-BAR": { countryCode: "AZ", subdivisionName: "Barda", code: "AZ-BAR" }, + "AZ-BEY": { countryCode: "AZ", subdivisionName: "Beylaqan", code: "AZ-BEY" }, + "AZ-BIL": { countryCode: "AZ", subdivisionName: "Bilasuvar", code: "AZ-BIL" }, + "AZ-CAL": { countryCode: "AZ", subdivisionName: "Calilabad", code: "AZ-CAL" }, + "AZ-DAS": { countryCode: "AZ", subdivisionName: "Daskasan", code: "AZ-DAS" }, + "AZ-FUZ": { countryCode: "AZ", subdivisionName: "Fuzuli", code: "AZ-FUZ" }, + "AZ-GAD": { countryCode: "AZ", subdivisionName: "Gadabay", code: "AZ-GAD" }, + "AZ-GA": { countryCode: "AZ", subdivisionName: "Ganca", code: "AZ-GA" }, + "AZ-GOY": { countryCode: "AZ", subdivisionName: "Goycay", code: "AZ-GOY" }, + "AZ-GYG": { countryCode: "AZ", subdivisionName: "Goygol", code: "AZ-GYG" }, + "AZ-IMI": { countryCode: "AZ", subdivisionName: "Imisli", code: "AZ-IMI" }, + "AZ-ISM": { countryCode: "AZ", subdivisionName: "Ismayilli", code: "AZ-ISM" }, + "AZ-KUR": { countryCode: "AZ", subdivisionName: "Kurdamir", code: "AZ-KUR" }, + "AZ-LA": { countryCode: "AZ", subdivisionName: "Lankaran", code: "AZ-LA" }, + "AZ-MAS": { countryCode: "AZ", subdivisionName: "Masalli", code: "AZ-MAS" }, + "AZ-MI": { countryCode: "AZ", subdivisionName: "Mingacevir", code: "AZ-MI" }, + "AZ-NA": { countryCode: "AZ", subdivisionName: "Naftalan", code: "AZ-NA" }, + "AZ-NX": { countryCode: "AZ", subdivisionName: "Naxcivan", code: "AZ-NX" }, + "AZ-NEF": { countryCode: "AZ", subdivisionName: "Neftcala", code: "AZ-NEF" }, + "AZ-OGU": { countryCode: "AZ", subdivisionName: "Oguz", code: "AZ-OGU" }, + "AZ-QAB": { countryCode: "AZ", subdivisionName: "Qabala", code: "AZ-QAB" }, + "AZ-QAX": { countryCode: "AZ", subdivisionName: "Qax", code: "AZ-QAX" }, + "AZ-QAZ": { countryCode: "AZ", subdivisionName: "Qazax", code: "AZ-QAZ" }, + "AZ-QBA": { countryCode: "AZ", subdivisionName: "Quba", code: "AZ-QBA" }, + "AZ-QUS": { countryCode: "AZ", subdivisionName: "Qusar", code: "AZ-QUS" }, + "AZ-SAT": { countryCode: "AZ", subdivisionName: "Saatli", code: "AZ-SAT" }, + "AZ-SAB": { countryCode: "AZ", subdivisionName: "Sabirabad", code: "AZ-SAB" }, + "AZ-SAK": { countryCode: "AZ", subdivisionName: "Saki", code: "AZ-SAK" }, + "AZ-SAL": { countryCode: "AZ", subdivisionName: "Salyan", code: "AZ-SAL" }, + "AZ-SMI": { countryCode: "AZ", subdivisionName: "Samaxi", code: "AZ-SMI" }, + "AZ-SKR": { countryCode: "AZ", subdivisionName: "Samkir", code: "AZ-SKR" }, + "AZ-SMX": { countryCode: "AZ", subdivisionName: "Samux", code: "AZ-SMX" }, + "AZ-SR": { countryCode: "AZ", subdivisionName: "Sirvan", code: "AZ-SR" }, + "AZ-SIY": { countryCode: "AZ", subdivisionName: "Siyazan", code: "AZ-SIY" }, + "AZ-SM": { countryCode: "AZ", subdivisionName: "Sumqayit", code: "AZ-SM" }, + "AZ-TAR": { countryCode: "AZ", subdivisionName: "Tartar", code: "AZ-TAR" }, + "AZ-TOV": { countryCode: "AZ", subdivisionName: "Tovuz", code: "AZ-TOV" }, + "AZ-UCA": { countryCode: "AZ", subdivisionName: "Ucar", code: "AZ-UCA" }, + "AZ-XAC": { countryCode: "AZ", subdivisionName: "Xacmaz", code: "AZ-XAC" }, + "AZ-XIZ": { countryCode: "AZ", subdivisionName: "Xizi", code: "AZ-XIZ" }, + "AZ-YAR": { countryCode: "AZ", subdivisionName: "Yardimli", code: "AZ-YAR" }, + "AZ-YEV": { countryCode: "AZ", subdivisionName: "Yevlax", code: "AZ-YEV" }, + "AZ-ZAQ": { countryCode: "AZ", subdivisionName: "Zaqatala", code: "AZ-ZAQ" }, + "AZ-ZAR": { countryCode: "AZ", subdivisionName: "Zardab", code: "AZ-ZAR" }, + "BA-BRC": { + countryCode: "BA", + subdivisionName: "Brcko distrikt", + code: "BA-BRC", + }, + "BA-BIH": { + countryCode: "BA", + subdivisionName: "Federacija Bosne i Hercegovine", + code: "BA-BIH", + }, + "BA-SRP": { + countryCode: "BA", + subdivisionName: "Republika Srpska", + code: "BA-SRP", + }, + "BB-01": { + countryCode: "BB", + subdivisionName: "Christ Church", + code: "BB-01", + }, + "BB-02": { + countryCode: "BB", + subdivisionName: "Saint Andrew", + code: "BB-02", + }, + "BB-03": { + countryCode: "BB", + subdivisionName: "Saint George", + code: "BB-03", + }, + "BB-04": { countryCode: "BB", subdivisionName: "Saint James", code: "BB-04" }, + "BB-05": { countryCode: "BB", subdivisionName: "Saint John", code: "BB-05" }, + "BB-07": { countryCode: "BB", subdivisionName: "Saint Lucy", code: "BB-07" }, + "BB-08": { + countryCode: "BB", + subdivisionName: "Saint Michael", + code: "BB-08", + }, + "BB-09": { countryCode: "BB", subdivisionName: "Saint Peter", code: "BB-09" }, + "BB-10": { + countryCode: "BB", + subdivisionName: "Saint Philip", + code: "BB-10", + }, + "BB-11": { + countryCode: "BB", + subdivisionName: "Saint Thomas", + code: "BB-11", + }, + "BD-A": { countryCode: "BD", subdivisionName: "Barishal", code: "BD-A" }, + "BD-B": { countryCode: "BD", subdivisionName: "Chattogram", code: "BD-B" }, + "BD-C": { countryCode: "BD", subdivisionName: "Dhaka", code: "BD-C" }, + "BD-D": { countryCode: "BD", subdivisionName: "Khulna", code: "BD-D" }, + "BD-E": { countryCode: "BD", subdivisionName: "Rajshahi", code: "BD-E" }, + "BD-F": { countryCode: "BD", subdivisionName: "Rangpur", code: "BD-F" }, + "BD-G": { countryCode: "BD", subdivisionName: "Sylhet", code: "BD-G" }, + "BE-VAN": { countryCode: "BE", subdivisionName: "Antwerpen", code: "BE-VAN" }, + "BE-WBR": { + countryCode: "BE", + subdivisionName: "Brabant wallon", + code: "BE-WBR", + }, + "BE-BRU": { + countryCode: "BE", + subdivisionName: "Brussels Hoofdstedelijk Gewest", + code: "BE-BRU", + }, + "BE-WHT": { countryCode: "BE", subdivisionName: "Hainaut", code: "BE-WHT" }, + "BE-WLG": { countryCode: "BE", subdivisionName: "Liege", code: "BE-WLG" }, + "BE-VLI": { countryCode: "BE", subdivisionName: "Limburg", code: "BE-VLI" }, + "BE-WLX": { + countryCode: "BE", + subdivisionName: "Luxembourg", + code: "BE-WLX", + }, + "BE-WNA": { countryCode: "BE", subdivisionName: "Namur", code: "BE-WNA" }, + "BE-VOV": { + countryCode: "BE", + subdivisionName: "Oost-Vlaanderen", + code: "BE-VOV", + }, + "BE-VBR": { + countryCode: "BE", + subdivisionName: "Vlaams-Brabant", + code: "BE-VBR", + }, + "BE-VWV": { + countryCode: "BE", + subdivisionName: "West-Vlaanderen", + code: "BE-VWV", + }, + "BF-BAL": { countryCode: "BF", subdivisionName: "Bale", code: "BF-BAL" }, + "BF-BAM": { countryCode: "BF", subdivisionName: "Bam", code: "BF-BAM" }, + "BF-BAN": { countryCode: "BF", subdivisionName: "Banwa", code: "BF-BAN" }, + "BF-BAZ": { countryCode: "BF", subdivisionName: "Bazega", code: "BF-BAZ" }, + "BF-BGR": { + countryCode: "BF", + subdivisionName: "Bougouriba", + code: "BF-BGR", + }, + "BF-BLG": { countryCode: "BF", subdivisionName: "Boulgou", code: "BF-BLG" }, + "BF-BLK": { + countryCode: "BF", + subdivisionName: "Boulkiemde", + code: "BF-BLK", + }, + "BF-COM": { countryCode: "BF", subdivisionName: "Comoe", code: "BF-COM" }, + "BF-GAN": { + countryCode: "BF", + subdivisionName: "Ganzourgou", + code: "BF-GAN", + }, + "BF-GNA": { countryCode: "BF", subdivisionName: "Gnagna", code: "BF-GNA" }, + "BF-GOU": { countryCode: "BF", subdivisionName: "Gourma", code: "BF-GOU" }, + "BF-HOU": { countryCode: "BF", subdivisionName: "Houet", code: "BF-HOU" }, + "BF-IOB": { countryCode: "BF", subdivisionName: "Ioba", code: "BF-IOB" }, + "BF-KAD": { countryCode: "BF", subdivisionName: "Kadiogo", code: "BF-KAD" }, + "BF-KEN": { + countryCode: "BF", + subdivisionName: "Kenedougou", + code: "BF-KEN", + }, + "BF-KMP": { countryCode: "BF", subdivisionName: "Kompienga", code: "BF-KMP" }, + "BF-KOS": { countryCode: "BF", subdivisionName: "Kossi", code: "BF-KOS" }, + "BF-KOT": { + countryCode: "BF", + subdivisionName: "Kouritenga", + code: "BF-KOT", + }, + "BF-KOW": { countryCode: "BF", subdivisionName: "Kourweogo", code: "BF-KOW" }, + "BF-LER": { countryCode: "BF", subdivisionName: "Leraba", code: "BF-LER" }, + "BF-LOR": { countryCode: "BF", subdivisionName: "Loroum", code: "BF-LOR" }, + "BF-MOU": { countryCode: "BF", subdivisionName: "Mouhoun", code: "BF-MOU" }, + "BF-NAO": { countryCode: "BF", subdivisionName: "Nahouri", code: "BF-NAO" }, + "BF-NAM": { + countryCode: "BF", + subdivisionName: "Namentenga", + code: "BF-NAM", + }, + "BF-NAY": { countryCode: "BF", subdivisionName: "Nayala", code: "BF-NAY" }, + "BF-OUB": { + countryCode: "BF", + subdivisionName: "Oubritenga", + code: "BF-OUB", + }, + "BF-OUD": { countryCode: "BF", subdivisionName: "Oudalan", code: "BF-OUD" }, + "BF-PAS": { countryCode: "BF", subdivisionName: "Passore", code: "BF-PAS" }, + "BF-SMT": { + countryCode: "BF", + subdivisionName: "Sanmatenga", + code: "BF-SMT", + }, + "BF-SEN": { countryCode: "BF", subdivisionName: "Seno", code: "BF-SEN" }, + "BF-SIS": { countryCode: "BF", subdivisionName: "Sissili", code: "BF-SIS" }, + "BF-SOM": { countryCode: "BF", subdivisionName: "Soum", code: "BF-SOM" }, + "BF-SOR": { countryCode: "BF", subdivisionName: "Sourou", code: "BF-SOR" }, + "BF-TAP": { countryCode: "BF", subdivisionName: "Tapoa", code: "BF-TAP" }, + "BF-TUI": { countryCode: "BF", subdivisionName: "Tuy", code: "BF-TUI" }, + "BF-YAT": { countryCode: "BF", subdivisionName: "Yatenga", code: "BF-YAT" }, + "BF-ZIR": { countryCode: "BF", subdivisionName: "Ziro", code: "BF-ZIR" }, + "BF-ZON": { countryCode: "BF", subdivisionName: "Zondoma", code: "BF-ZON" }, + "BF-ZOU": { + countryCode: "BF", + subdivisionName: "Zoundweogo", + code: "BF-ZOU", + }, + "BG-01": { countryCode: "BG", subdivisionName: "Blagoevgrad", code: "BG-01" }, + "BG-02": { countryCode: "BG", subdivisionName: "Burgas", code: "BG-02" }, + "BG-08": { countryCode: "BG", subdivisionName: "Dobrich", code: "BG-08" }, + "BG-07": { countryCode: "BG", subdivisionName: "Gabrovo", code: "BG-07" }, + "BG-26": { countryCode: "BG", subdivisionName: "Haskovo", code: "BG-26" }, + "BG-09": { countryCode: "BG", subdivisionName: "Kardzhali", code: "BG-09" }, + "BG-10": { countryCode: "BG", subdivisionName: "Kyustendil", code: "BG-10" }, + "BG-11": { countryCode: "BG", subdivisionName: "Lovech", code: "BG-11" }, + "BG-12": { countryCode: "BG", subdivisionName: "Montana", code: "BG-12" }, + "BG-13": { countryCode: "BG", subdivisionName: "Pazardzhik", code: "BG-13" }, + "BG-14": { countryCode: "BG", subdivisionName: "Pernik", code: "BG-14" }, + "BG-15": { countryCode: "BG", subdivisionName: "Pleven", code: "BG-15" }, + "BG-16": { countryCode: "BG", subdivisionName: "Plovdiv", code: "BG-16" }, + "BG-17": { countryCode: "BG", subdivisionName: "Razgrad", code: "BG-17" }, + "BG-18": { countryCode: "BG", subdivisionName: "Ruse", code: "BG-18" }, + "BG-27": { countryCode: "BG", subdivisionName: "Shumen", code: "BG-27" }, + "BG-19": { countryCode: "BG", subdivisionName: "Silistra", code: "BG-19" }, + "BG-20": { countryCode: "BG", subdivisionName: "Sliven", code: "BG-20" }, + "BG-21": { countryCode: "BG", subdivisionName: "Smolyan", code: "BG-21" }, + "BG-23": { countryCode: "BG", subdivisionName: "Sofia", code: "BG-23" }, + "BG-22": { + countryCode: "BG", + subdivisionName: "Sofia (stolitsa)", + code: "BG-22", + }, + "BG-24": { + countryCode: "BG", + subdivisionName: "Stara Zagora", + code: "BG-24", + }, + "BG-25": { countryCode: "BG", subdivisionName: "Targovishte", code: "BG-25" }, + "BG-03": { countryCode: "BG", subdivisionName: "Varna", code: "BG-03" }, + "BG-04": { + countryCode: "BG", + subdivisionName: "Veliko Tarnovo", + code: "BG-04", + }, + "BG-05": { countryCode: "BG", subdivisionName: "Vidin", code: "BG-05" }, + "BG-06": { countryCode: "BG", subdivisionName: "Vratsa", code: "BG-06" }, + "BG-28": { countryCode: "BG", subdivisionName: "Yambol", code: "BG-28" }, + "BH-13": { countryCode: "BH", subdivisionName: "Al 'Asimah", code: "BH-13" }, + "BH-14": { + countryCode: "BH", + subdivisionName: "Al Janubiyah", + code: "BH-14", + }, + "BH-15": { countryCode: "BH", subdivisionName: "Al Muharraq", code: "BH-15" }, + "BH-17": { + countryCode: "BH", + subdivisionName: "Ash Shamaliyah", + code: "BH-17", + }, + "BI-BM": { + countryCode: "BI", + subdivisionName: "Bujumbura Mairie", + code: "BI-BM", + }, + "BI-BR": { countryCode: "BI", subdivisionName: "Bururi", code: "BI-BR" }, + "BI-CI": { countryCode: "BI", subdivisionName: "Cibitoke", code: "BI-CI" }, + "BI-GI": { countryCode: "BI", subdivisionName: "Gitega", code: "BI-GI" }, + "BI-KI": { countryCode: "BI", subdivisionName: "Kirundo", code: "BI-KI" }, + "BI-MW": { countryCode: "BI", subdivisionName: "Mwaro", code: "BI-MW" }, + "BI-NG": { countryCode: "BI", subdivisionName: "Ngozi", code: "BI-NG" }, + "BI-RM": { countryCode: "BI", subdivisionName: "Rumonge", code: "BI-RM" }, + "BI-RT": { countryCode: "BI", subdivisionName: "Rutana", code: "BI-RT" }, + "BI-RY": { countryCode: "BI", subdivisionName: "Ruyigi", code: "BI-RY" }, + "BJ-AK": { countryCode: "BJ", subdivisionName: "Atacora", code: "BJ-AK" }, + "BJ-AQ": { countryCode: "BJ", subdivisionName: "Atlantique", code: "BJ-AQ" }, + "BJ-BO": { countryCode: "BJ", subdivisionName: "Borgou", code: "BJ-BO" }, + "BJ-CO": { countryCode: "BJ", subdivisionName: "Collines", code: "BJ-CO" }, + "BJ-DO": { countryCode: "BJ", subdivisionName: "Donga", code: "BJ-DO" }, + "BJ-LI": { countryCode: "BJ", subdivisionName: "Littoral", code: "BJ-LI" }, + "BJ-MO": { countryCode: "BJ", subdivisionName: "Mono", code: "BJ-MO" }, + "BJ-OU": { countryCode: "BJ", subdivisionName: "Oueme", code: "BJ-OU" }, + "BJ-PL": { countryCode: "BJ", subdivisionName: "Plateau", code: "BJ-PL" }, + "BJ-ZO": { countryCode: "BJ", subdivisionName: "Zou", code: "BJ-ZO" }, + "BN-BE": { countryCode: "BN", subdivisionName: "Belait", code: "BN-BE" }, + "BN-BM": { + countryCode: "BN", + subdivisionName: "Brunei-Muara", + code: "BN-BM", + }, + "BN-TE": { countryCode: "BN", subdivisionName: "Temburong", code: "BN-TE" }, + "BN-TU": { countryCode: "BN", subdivisionName: "Tutong", code: "BN-TU" }, + "BO-H": { countryCode: "BO", subdivisionName: "Chuquisaca", code: "BO-H" }, + "BO-C": { countryCode: "BO", subdivisionName: "Cochabamba", code: "BO-C" }, + "BO-B": { countryCode: "BO", subdivisionName: "El Beni", code: "BO-B" }, + "BO-L": { countryCode: "BO", subdivisionName: "La Paz", code: "BO-L" }, + "BO-O": { countryCode: "BO", subdivisionName: "Oruro", code: "BO-O" }, + "BO-N": { countryCode: "BO", subdivisionName: "Pando", code: "BO-N" }, + "BO-P": { countryCode: "BO", subdivisionName: "Potosi", code: "BO-P" }, + "BO-S": { countryCode: "BO", subdivisionName: "Santa Cruz", code: "BO-S" }, + "BO-T": { countryCode: "BO", subdivisionName: "Tarija", code: "BO-T" }, + "BQ-BO": { countryCode: "BQ", subdivisionName: "Bonaire", code: "BQ-BO" }, + "BQ-SA": { countryCode: "BQ", subdivisionName: "Saba", code: "BQ-SA" }, + "BQ-SE": { + countryCode: "BQ", + subdivisionName: "Sint Eustatius", + code: "BQ-SE", + }, + "BR-AC": { countryCode: "BR", subdivisionName: "Acre", code: "BR-AC" }, + "BR-AL": { countryCode: "BR", subdivisionName: "Alagoas", code: "BR-AL" }, + "BR-AP": { countryCode: "BR", subdivisionName: "Amapa", code: "BR-AP" }, + "BR-AM": { countryCode: "BR", subdivisionName: "Amazonas", code: "BR-AM" }, + "BR-BA": { countryCode: "BR", subdivisionName: "Bahia", code: "BR-BA" }, + "BR-CE": { countryCode: "BR", subdivisionName: "Ceara", code: "BR-CE" }, + "BR-DF": { + countryCode: "BR", + subdivisionName: "Distrito Federal", + code: "BR-DF", + }, + "BR-ES": { + countryCode: "BR", + subdivisionName: "Espirito Santo", + code: "BR-ES", + }, + "BR-GO": { countryCode: "BR", subdivisionName: "Goias", code: "BR-GO" }, + "BR-MA": { countryCode: "BR", subdivisionName: "Maranhao", code: "BR-MA" }, + "BR-MT": { countryCode: "BR", subdivisionName: "Mato Grosso", code: "BR-MT" }, + "BR-MS": { + countryCode: "BR", + subdivisionName: "Mato Grosso do Sul", + code: "BR-MS", + }, + "BR-MG": { + countryCode: "BR", + subdivisionName: "Minas Gerais", + code: "BR-MG", + }, + "BR-PA": { countryCode: "BR", subdivisionName: "Para", code: "BR-PA" }, + "BR-PB": { countryCode: "BR", subdivisionName: "Paraiba", code: "BR-PB" }, + "BR-PR": { countryCode: "BR", subdivisionName: "Parana", code: "BR-PR" }, + "BR-PE": { countryCode: "BR", subdivisionName: "Pernambuco", code: "BR-PE" }, + "BR-PI": { countryCode: "BR", subdivisionName: "Piaui", code: "BR-PI" }, + "BR-RN": { + countryCode: "BR", + subdivisionName: "Rio Grande do Norte", + code: "BR-RN", + }, + "BR-RS": { + countryCode: "BR", + subdivisionName: "Rio Grande do Sul", + code: "BR-RS", + }, + "BR-RJ": { + countryCode: "BR", + subdivisionName: "Rio de Janeiro", + code: "BR-RJ", + }, + "BR-RO": { countryCode: "BR", subdivisionName: "Rondonia", code: "BR-RO" }, + "BR-RR": { countryCode: "BR", subdivisionName: "Roraima", code: "BR-RR" }, + "BR-SC": { + countryCode: "BR", + subdivisionName: "Santa Catarina", + code: "BR-SC", + }, + "BR-SP": { countryCode: "BR", subdivisionName: "Sao Paulo", code: "BR-SP" }, + "BR-SE": { countryCode: "BR", subdivisionName: "Sergipe", code: "BR-SE" }, + "BR-TO": { countryCode: "BR", subdivisionName: "Tocantins", code: "BR-TO" }, + "BS-BP": { countryCode: "BS", subdivisionName: "Black Point", code: "BS-BP" }, + "BS-CO": { + countryCode: "BS", + subdivisionName: "Central Abaco", + code: "BS-CO", + }, + "BS-FP": { + countryCode: "BS", + subdivisionName: "City of Freeport", + code: "BS-FP", + }, + "BS-EG": { + countryCode: "BS", + subdivisionName: "East Grand Bahama", + code: "BS-EG", + }, + "BS-HI": { + countryCode: "BS", + subdivisionName: "Harbour Island", + code: "BS-HI", + }, + "BS-LI": { countryCode: "BS", subdivisionName: "Long Island", code: "BS-LI" }, + "BS-NP": { + countryCode: "BS", + subdivisionName: "New Providence", + code: "BS-NP", + }, + "BS-NS": { + countryCode: "BS", + subdivisionName: "North Andros", + code: "BS-NS", + }, + "BS-NE": { + countryCode: "BS", + subdivisionName: "North Eleuthera", + code: "BS-NE", + }, + "BS-SS": { + countryCode: "BS", + subdivisionName: "San Salvador", + code: "BS-SS", + }, + "BS-SE": { + countryCode: "BS", + subdivisionName: "South Eleuthera", + code: "BS-SE", + }, + "BS-WG": { + countryCode: "BS", + subdivisionName: "West Grand Bahama", + code: "BS-WG", + }, + "BT-33": { countryCode: "BT", subdivisionName: "Bumthang", code: "BT-33" }, + "BT-12": { countryCode: "BT", subdivisionName: "Chhukha", code: "BT-12" }, + "BT-22": { countryCode: "BT", subdivisionName: "Dagana", code: "BT-22" }, + "BT-GA": { countryCode: "BT", subdivisionName: "Gasa", code: "BT-GA" }, + "BT-44": { countryCode: "BT", subdivisionName: "Lhuentse", code: "BT-44" }, + "BT-42": { countryCode: "BT", subdivisionName: "Monggar", code: "BT-42" }, + "BT-11": { countryCode: "BT", subdivisionName: "Paro", code: "BT-11" }, + "BT-43": { + countryCode: "BT", + subdivisionName: "Pema Gatshel", + code: "BT-43", + }, + "BT-23": { countryCode: "BT", subdivisionName: "Punakha", code: "BT-23" }, + "BT-45": { + countryCode: "BT", + subdivisionName: "Samdrup Jongkhar", + code: "BT-45", + }, + "BT-14": { countryCode: "BT", subdivisionName: "Samtse", code: "BT-14" }, + "BT-31": { countryCode: "BT", subdivisionName: "Sarpang", code: "BT-31" }, + "BT-15": { countryCode: "BT", subdivisionName: "Thimphu", code: "BT-15" }, + "BT-41": { countryCode: "BT", subdivisionName: "Trashigang", code: "BT-41" }, + "BT-32": { countryCode: "BT", subdivisionName: "Trongsa", code: "BT-32" }, + "BT-21": { countryCode: "BT", subdivisionName: "Tsirang", code: "BT-21" }, + "BT-24": { + countryCode: "BT", + subdivisionName: "Wangdue Phodrang", + code: "BT-24", + }, + "BT-34": { countryCode: "BT", subdivisionName: "Zhemgang", code: "BT-34" }, + "BW-CE": { countryCode: "BW", subdivisionName: "Central", code: "BW-CE" }, + "BW-CH": { countryCode: "BW", subdivisionName: "Chobe", code: "BW-CH" }, + "BW-GH": { countryCode: "BW", subdivisionName: "Ghanzi", code: "BW-GH" }, + "BW-KG": { countryCode: "BW", subdivisionName: "Kgalagadi", code: "BW-KG" }, + "BW-KL": { countryCode: "BW", subdivisionName: "Kgatleng", code: "BW-KL" }, + "BW-KW": { countryCode: "BW", subdivisionName: "Kweneng", code: "BW-KW" }, + "BW-NE": { countryCode: "BW", subdivisionName: "North East", code: "BW-NE" }, + "BW-NW": { countryCode: "BW", subdivisionName: "North West", code: "BW-NW" }, + "BW-SE": { countryCode: "BW", subdivisionName: "South East", code: "BW-SE" }, + "BW-SO": { countryCode: "BW", subdivisionName: "Southern", code: "BW-SO" }, + "BY-BR": { + countryCode: "BY", + subdivisionName: "Brestskaya voblasts'", + code: "BY-BR", + }, + "BY-HO": { + countryCode: "BY", + subdivisionName: "Homyel'skaya voblasts'", + code: "BY-HO", + }, + "BY-HM": { countryCode: "BY", subdivisionName: "Horad Minsk", code: "BY-HM" }, + "BY-HR": { + countryCode: "BY", + subdivisionName: "Hrodzyenskaya voblasts'", + code: "BY-HR", + }, + "BY-MA": { + countryCode: "BY", + subdivisionName: "Mahilyowskaya voblasts'", + code: "BY-MA", + }, + "BY-MI": { + countryCode: "BY", + subdivisionName: "Minskaya voblasts'", + code: "BY-MI", + }, + "BY-VI": { + countryCode: "BY", + subdivisionName: "Vitsyebskaya voblasts'", + code: "BY-VI", + }, + "BZ-BZ": { countryCode: "BZ", subdivisionName: "Belize", code: "BZ-BZ" }, + "BZ-CY": { countryCode: "BZ", subdivisionName: "Cayo", code: "BZ-CY" }, + "BZ-CZL": { countryCode: "BZ", subdivisionName: "Corozal", code: "BZ-CZL" }, + "BZ-OW": { countryCode: "BZ", subdivisionName: "Orange Walk", code: "BZ-OW" }, + "BZ-SC": { countryCode: "BZ", subdivisionName: "Stann Creek", code: "BZ-SC" }, + "BZ-TOL": { countryCode: "BZ", subdivisionName: "Toledo", code: "BZ-TOL" }, + "CA-AB": { countryCode: "CA", subdivisionName: "Alberta", code: "CA-AB" }, + "CA-BC": { + countryCode: "CA", + subdivisionName: "British Columbia", + code: "CA-BC", + }, + "CA-MB": { countryCode: "CA", subdivisionName: "Manitoba", code: "CA-MB" }, + "CA-NB": { + countryCode: "CA", + subdivisionName: "New Brunswick", + code: "CA-NB", + }, + "CA-NL": { + countryCode: "CA", + subdivisionName: "Newfoundland and Labrador", + code: "CA-NL", + }, + "CA-NT": { + countryCode: "CA", + subdivisionName: "Northwest Territories", + code: "CA-NT", + }, + "CA-NS": { countryCode: "CA", subdivisionName: "Nova Scotia", code: "CA-NS" }, + "CA-NU": { countryCode: "CA", subdivisionName: "Nunavut", code: "CA-NU" }, + "CA-ON": { countryCode: "CA", subdivisionName: "Ontario", code: "CA-ON" }, + "CA-PE": { + countryCode: "CA", + subdivisionName: "Prince Edward Island", + code: "CA-PE", + }, + "CA-QC": { countryCode: "CA", subdivisionName: "Quebec", code: "CA-QC" }, + "CA-SK": { + countryCode: "CA", + subdivisionName: "Saskatchewan", + code: "CA-SK", + }, + "CA-YT": { countryCode: "CA", subdivisionName: "Yukon", code: "CA-YT" }, + "CD-EQ": { countryCode: "CD", subdivisionName: "Equateur", code: "CD-EQ" }, + "CD-HK": { + countryCode: "CD", + subdivisionName: "Haut-Katanga", + code: "CD-HK", + }, + "CD-HL": { countryCode: "CD", subdivisionName: "Haut-Lomami", code: "CD-HL" }, + "CD-IT": { countryCode: "CD", subdivisionName: "Ituri", code: "CD-IT" }, + "CD-KS": { countryCode: "CD", subdivisionName: "Kasai", code: "CD-KS" }, + "CD-KC": { + countryCode: "CD", + subdivisionName: "Kasai Central", + code: "CD-KC", + }, + "CD-KE": { + countryCode: "CD", + subdivisionName: "Kasai Oriental", + code: "CD-KE", + }, + "CD-KN": { countryCode: "CD", subdivisionName: "Kinshasa", code: "CD-KN" }, + "CD-LU": { countryCode: "CD", subdivisionName: "Lualaba", code: "CD-LU" }, + "CD-MA": { countryCode: "CD", subdivisionName: "Maniema", code: "CD-MA" }, + "CD-NK": { countryCode: "CD", subdivisionName: "Nord-Kivu", code: "CD-NK" }, + "CD-SA": { countryCode: "CD", subdivisionName: "Sankuru", code: "CD-SA" }, + "CD-SK": { countryCode: "CD", subdivisionName: "Sud-Kivu", code: "CD-SK" }, + "CD-TA": { countryCode: "CD", subdivisionName: "Tanganyika", code: "CD-TA" }, + "CD-TO": { countryCode: "CD", subdivisionName: "Tshopo", code: "CD-TO" }, + "CF-BB": { + countryCode: "CF", + subdivisionName: "Bamingui-Bangoran", + code: "CF-BB", + }, + "CF-BGF": { countryCode: "CF", subdivisionName: "Bangui", code: "CF-BGF" }, + "CF-KB": { countryCode: "CF", subdivisionName: "Gribingui", code: "CF-KB" }, + "CF-KG": { + countryCode: "CF", + subdivisionName: "Kemo-Gribingui", + code: "CF-KG", + }, + "CF-HS": { + countryCode: "CF", + subdivisionName: "Mambere-Kadei", + code: "CF-HS", + }, + "CF-NM": { + countryCode: "CF", + subdivisionName: "Nana-Mambere", + code: "CF-NM", + }, + "CF-UK": { countryCode: "CF", subdivisionName: "Ouaka", code: "CF-UK" }, + "CF-AC": { countryCode: "CF", subdivisionName: "Ouham", code: "CF-AC" }, + "CF-OP": { countryCode: "CF", subdivisionName: "Ouham-Pende", code: "CF-OP" }, + "CF-VK": { countryCode: "CF", subdivisionName: "Vakaga", code: "CF-VK" }, + "CG-11": { countryCode: "CG", subdivisionName: "Bouenza", code: "CG-11" }, + "CG-BZV": { + countryCode: "CG", + subdivisionName: "Brazzaville", + code: "CG-BZV", + }, + "CG-8": { countryCode: "CG", subdivisionName: "Cuvette", code: "CG-8" }, + "CG-9": { countryCode: "CG", subdivisionName: "Niari", code: "CG-9" }, + "CG-14": { countryCode: "CG", subdivisionName: "Plateaux", code: "CG-14" }, + "CG-16": { + countryCode: "CG", + subdivisionName: "Pointe-Noire", + code: "CG-16", + }, + "CG-13": { countryCode: "CG", subdivisionName: "Sangha", code: "CG-13" }, + "CH-AG": { countryCode: "CH", subdivisionName: "Aargau", code: "CH-AG" }, + "CH-AR": { + countryCode: "CH", + subdivisionName: "Appenzell Ausserrhoden", + code: "CH-AR", + }, + "CH-AI": { + countryCode: "CH", + subdivisionName: "Appenzell Innerrhoden", + code: "CH-AI", + }, + "CH-BL": { + countryCode: "CH", + subdivisionName: "Basel-Landschaft", + code: "CH-BL", + }, + "CH-BS": { countryCode: "CH", subdivisionName: "Basel-Stadt", code: "CH-BS" }, + "CH-BE": { countryCode: "CH", subdivisionName: "Bern", code: "CH-BE" }, + "CH-FR": { countryCode: "CH", subdivisionName: "Fribourg", code: "CH-FR" }, + "CH-GE": { countryCode: "CH", subdivisionName: "Geneve", code: "CH-GE" }, + "CH-GL": { countryCode: "CH", subdivisionName: "Glarus", code: "CH-GL" }, + "CH-GR": { countryCode: "CH", subdivisionName: "Graubunden", code: "CH-GR" }, + "CH-JU": { countryCode: "CH", subdivisionName: "Jura", code: "CH-JU" }, + "CH-LU": { countryCode: "CH", subdivisionName: "Luzern", code: "CH-LU" }, + "CH-NE": { countryCode: "CH", subdivisionName: "Neuchatel", code: "CH-NE" }, + "CH-NW": { countryCode: "CH", subdivisionName: "Nidwalden", code: "CH-NW" }, + "CH-OW": { countryCode: "CH", subdivisionName: "Obwalden", code: "CH-OW" }, + "CH-SG": { + countryCode: "CH", + subdivisionName: "Sankt Gallen", + code: "CH-SG", + }, + "CH-SH": { + countryCode: "CH", + subdivisionName: "Schaffhausen", + code: "CH-SH", + }, + "CH-SZ": { countryCode: "CH", subdivisionName: "Schwyz", code: "CH-SZ" }, + "CH-SO": { countryCode: "CH", subdivisionName: "Solothurn", code: "CH-SO" }, + "CH-TG": { countryCode: "CH", subdivisionName: "Thurgau", code: "CH-TG" }, + "CH-TI": { countryCode: "CH", subdivisionName: "Ticino", code: "CH-TI" }, + "CH-UR": { countryCode: "CH", subdivisionName: "Uri", code: "CH-UR" }, + "CH-VS": { countryCode: "CH", subdivisionName: "Valais", code: "CH-VS" }, + "CH-VD": { countryCode: "CH", subdivisionName: "Vaud", code: "CH-VD" }, + "CH-ZG": { countryCode: "CH", subdivisionName: "Zug", code: "CH-ZG" }, + "CH-ZH": { countryCode: "CH", subdivisionName: "Zurich", code: "CH-ZH" }, + "CI-AB": { countryCode: "CI", subdivisionName: "Abidjan", code: "CI-AB" }, + "CI-BS": { + countryCode: "CI", + subdivisionName: "Bas-Sassandra", + code: "CI-BS", + }, + "CI-CM": { countryCode: "CI", subdivisionName: "Comoe", code: "CI-CM" }, + "CI-DN": { countryCode: "CI", subdivisionName: "Denguele", code: "CI-DN" }, + "CI-GD": { countryCode: "CI", subdivisionName: "Goh-Djiboua", code: "CI-GD" }, + "CI-LC": { countryCode: "CI", subdivisionName: "Lacs", code: "CI-LC" }, + "CI-LG": { countryCode: "CI", subdivisionName: "Lagunes", code: "CI-LG" }, + "CI-MG": { countryCode: "CI", subdivisionName: "Montagnes", code: "CI-MG" }, + "CI-SM": { + countryCode: "CI", + subdivisionName: "Sassandra-Marahoue", + code: "CI-SM", + }, + "CI-SV": { countryCode: "CI", subdivisionName: "Savanes", code: "CI-SV" }, + "CI-VB": { + countryCode: "CI", + subdivisionName: "Vallee du Bandama", + code: "CI-VB", + }, + "CI-WR": { countryCode: "CI", subdivisionName: "Woroba", code: "CI-WR" }, + "CI-YM": { + countryCode: "CI", + subdivisionName: "Yamoussoukro", + code: "CI-YM", + }, + "CI-ZZ": { countryCode: "CI", subdivisionName: "Zanzan", code: "CI-ZZ" }, + "CL-AI": { + countryCode: "CL", + subdivisionName: "Aisen del General Carlos Ibanez del Campo", + code: "CL-AI", + }, + "CL-AN": { countryCode: "CL", subdivisionName: "Antofagasta", code: "CL-AN" }, + "CL-AP": { + countryCode: "CL", + subdivisionName: "Arica y Parinacota", + code: "CL-AP", + }, + "CL-AT": { countryCode: "CL", subdivisionName: "Atacama", code: "CL-AT" }, + "CL-BI": { countryCode: "CL", subdivisionName: "Biobio", code: "CL-BI" }, + "CL-CO": { countryCode: "CL", subdivisionName: "Coquimbo", code: "CL-CO" }, + "CL-AR": { + countryCode: "CL", + subdivisionName: "La Araucania", + code: "CL-AR", + }, + "CL-LI": { + countryCode: "CL", + subdivisionName: "Libertador General Bernardo O'Higgins", + code: "CL-LI", + }, + "CL-LL": { countryCode: "CL", subdivisionName: "Los Lagos", code: "CL-LL" }, + "CL-LR": { countryCode: "CL", subdivisionName: "Los Rios", code: "CL-LR" }, + "CL-MA": { countryCode: "CL", subdivisionName: "Magallanes", code: "CL-MA" }, + "CL-ML": { countryCode: "CL", subdivisionName: "Maule", code: "CL-ML" }, + "CL-NB": { countryCode: "CL", subdivisionName: "Nuble", code: "CL-NB" }, + "CL-RM": { + countryCode: "CL", + subdivisionName: "Region Metropolitana de Santiago", + code: "CL-RM", + }, + "CL-TA": { countryCode: "CL", subdivisionName: "Tarapaca", code: "CL-TA" }, + "CL-VS": { countryCode: "CL", subdivisionName: "Valparaiso", code: "CL-VS" }, + "CM-AD": { countryCode: "CM", subdivisionName: "Adamaoua", code: "CM-AD" }, + "CM-CE": { countryCode: "CM", subdivisionName: "Centre", code: "CM-CE" }, + "CM-ES": { countryCode: "CM", subdivisionName: "Est", code: "CM-ES" }, + "CM-EN": { + countryCode: "CM", + subdivisionName: "Extreme-Nord", + code: "CM-EN", + }, + "CM-LT": { countryCode: "CM", subdivisionName: "Littoral", code: "CM-LT" }, + "CM-NO": { countryCode: "CM", subdivisionName: "Nord", code: "CM-NO" }, + "CM-NW": { countryCode: "CM", subdivisionName: "Nord-Ouest", code: "CM-NW" }, + "CM-OU": { countryCode: "CM", subdivisionName: "Ouest", code: "CM-OU" }, + "CM-SU": { countryCode: "CM", subdivisionName: "Sud", code: "CM-SU" }, + "CM-SW": { countryCode: "CM", subdivisionName: "Sud-Ouest", code: "CM-SW" }, + "CN-AH": { countryCode: "CN", subdivisionName: "Anhui", code: "CN-AH" }, + "CN-BJ": { countryCode: "CN", subdivisionName: "Beijing", code: "CN-BJ" }, + "CN-CQ": { countryCode: "CN", subdivisionName: "Chongqing", code: "CN-CQ" }, + "CN-FJ": { countryCode: "CN", subdivisionName: "Fujian", code: "CN-FJ" }, + "CN-GS": { countryCode: "CN", subdivisionName: "Gansu", code: "CN-GS" }, + "CN-GD": { countryCode: "CN", subdivisionName: "Guangdong", code: "CN-GD" }, + "CN-GX": { + countryCode: "CN", + subdivisionName: "Guangxi Zhuangzu", + code: "CN-GX", + }, + "CN-GZ": { countryCode: "CN", subdivisionName: "Guizhou", code: "CN-GZ" }, + "CN-HI": { countryCode: "CN", subdivisionName: "Hainan", code: "CN-HI" }, + "CN-HE": { countryCode: "CN", subdivisionName: "Hebei", code: "CN-HE" }, + "CN-HL": { + countryCode: "CN", + subdivisionName: "Heilongjiang", + code: "CN-HL", + }, + "CN-HA": { countryCode: "CN", subdivisionName: "Henan", code: "CN-HA" }, + "CN-HB": { countryCode: "CN", subdivisionName: "Hubei", code: "CN-HB" }, + "CN-HN": { countryCode: "CN", subdivisionName: "Hunan", code: "CN-HN" }, + "CN-JS": { countryCode: "CN", subdivisionName: "Jiangsu", code: "CN-JS" }, + "CN-JX": { countryCode: "CN", subdivisionName: "Jiangxi", code: "CN-JX" }, + "CN-JL": { countryCode: "CN", subdivisionName: "Jilin", code: "CN-JL" }, + "CN-LN": { countryCode: "CN", subdivisionName: "Liaoning", code: "CN-LN" }, + "CN-NM": { countryCode: "CN", subdivisionName: "Nei Mongol", code: "CN-NM" }, + "CN-NX": { + countryCode: "CN", + subdivisionName: "Ningxia Huizu", + code: "CN-NX", + }, + "CN-QH": { countryCode: "CN", subdivisionName: "Qinghai", code: "CN-QH" }, + "CN-SN": { countryCode: "CN", subdivisionName: "Shaanxi", code: "CN-SN" }, + "CN-SD": { countryCode: "CN", subdivisionName: "Shandong", code: "CN-SD" }, + "CN-SH": { countryCode: "CN", subdivisionName: "Shanghai", code: "CN-SH" }, + "CN-SX": { countryCode: "CN", subdivisionName: "Shanxi", code: "CN-SX" }, + "CN-SC": { countryCode: "CN", subdivisionName: "Sichuan", code: "CN-SC" }, + "CN-TJ": { countryCode: "CN", subdivisionName: "Tianjin", code: "CN-TJ" }, + "CN-XJ": { + countryCode: "CN", + subdivisionName: "Xinjiang Uygur", + code: "CN-XJ", + }, + "CN-XZ": { countryCode: "CN", subdivisionName: "Xizang", code: "CN-XZ" }, + "CN-YN": { countryCode: "CN", subdivisionName: "Yunnan", code: "CN-YN" }, + "CN-ZJ": { countryCode: "CN", subdivisionName: "Zhejiang", code: "CN-ZJ" }, + "CO-AMA": { countryCode: "CO", subdivisionName: "Amazonas", code: "CO-AMA" }, + "CO-ANT": { countryCode: "CO", subdivisionName: "Antioquia", code: "CO-ANT" }, + "CO-ARA": { countryCode: "CO", subdivisionName: "Arauca", code: "CO-ARA" }, + "CO-ATL": { countryCode: "CO", subdivisionName: "Atlantico", code: "CO-ATL" }, + "CO-BOL": { countryCode: "CO", subdivisionName: "Bolivar", code: "CO-BOL" }, + "CO-BOY": { countryCode: "CO", subdivisionName: "Boyaca", code: "CO-BOY" }, + "CO-CAL": { countryCode: "CO", subdivisionName: "Caldas", code: "CO-CAL" }, + "CO-CAQ": { countryCode: "CO", subdivisionName: "Caqueta", code: "CO-CAQ" }, + "CO-CAS": { countryCode: "CO", subdivisionName: "Casanare", code: "CO-CAS" }, + "CO-CAU": { countryCode: "CO", subdivisionName: "Cauca", code: "CO-CAU" }, + "CO-CES": { countryCode: "CO", subdivisionName: "Cesar", code: "CO-CES" }, + "CO-CHO": { countryCode: "CO", subdivisionName: "Choco", code: "CO-CHO" }, + "CO-COR": { countryCode: "CO", subdivisionName: "Cordoba", code: "CO-COR" }, + "CO-CUN": { + countryCode: "CO", + subdivisionName: "Cundinamarca", + code: "CO-CUN", + }, + "CO-DC": { + countryCode: "CO", + subdivisionName: "Distrito Capital de Bogota", + code: "CO-DC", + }, + "CO-GUA": { countryCode: "CO", subdivisionName: "Guainia", code: "CO-GUA" }, + "CO-GUV": { countryCode: "CO", subdivisionName: "Guaviare", code: "CO-GUV" }, + "CO-HUI": { countryCode: "CO", subdivisionName: "Huila", code: "CO-HUI" }, + "CO-LAG": { + countryCode: "CO", + subdivisionName: "La Guajira", + code: "CO-LAG", + }, + "CO-MAG": { countryCode: "CO", subdivisionName: "Magdalena", code: "CO-MAG" }, + "CO-MET": { countryCode: "CO", subdivisionName: "Meta", code: "CO-MET" }, + "CO-NAR": { countryCode: "CO", subdivisionName: "Narino", code: "CO-NAR" }, + "CO-NSA": { + countryCode: "CO", + subdivisionName: "Norte de Santander", + code: "CO-NSA", + }, + "CO-PUT": { countryCode: "CO", subdivisionName: "Putumayo", code: "CO-PUT" }, + "CO-QUI": { countryCode: "CO", subdivisionName: "Quindio", code: "CO-QUI" }, + "CO-RIS": { countryCode: "CO", subdivisionName: "Risaralda", code: "CO-RIS" }, + "CO-SAP": { + countryCode: "CO", + subdivisionName: "San Andres, Providencia y Santa Catalina", + code: "CO-SAP", + }, + "CO-SAN": { countryCode: "CO", subdivisionName: "Santander", code: "CO-SAN" }, + "CO-SUC": { countryCode: "CO", subdivisionName: "Sucre", code: "CO-SUC" }, + "CO-TOL": { countryCode: "CO", subdivisionName: "Tolima", code: "CO-TOL" }, + "CO-VAC": { + countryCode: "CO", + subdivisionName: "Valle del Cauca", + code: "CO-VAC", + }, + "CO-VID": { countryCode: "CO", subdivisionName: "Vichada", code: "CO-VID" }, + "CR-A": { countryCode: "CR", subdivisionName: "Alajuela", code: "CR-A" }, + "CR-C": { countryCode: "CR", subdivisionName: "Cartago", code: "CR-C" }, + "CR-G": { countryCode: "CR", subdivisionName: "Guanacaste", code: "CR-G" }, + "CR-H": { countryCode: "CR", subdivisionName: "Heredia", code: "CR-H" }, + "CR-L": { countryCode: "CR", subdivisionName: "Limon", code: "CR-L" }, + "CR-P": { countryCode: "CR", subdivisionName: "Puntarenas", code: "CR-P" }, + "CR-SJ": { countryCode: "CR", subdivisionName: "San Jose", code: "CR-SJ" }, + "CU-15": { countryCode: "CU", subdivisionName: "Artemisa", code: "CU-15" }, + "CU-09": { countryCode: "CU", subdivisionName: "Camaguey", code: "CU-09" }, + "CU-08": { + countryCode: "CU", + subdivisionName: "Ciego de Avila", + code: "CU-08", + }, + "CU-06": { countryCode: "CU", subdivisionName: "Cienfuegos", code: "CU-06" }, + "CU-12": { countryCode: "CU", subdivisionName: "Granma", code: "CU-12" }, + "CU-14": { countryCode: "CU", subdivisionName: "Guantanamo", code: "CU-14" }, + "CU-11": { countryCode: "CU", subdivisionName: "Holguin", code: "CU-11" }, + "CU-99": { + countryCode: "CU", + subdivisionName: "Isla de la Juventud", + code: "CU-99", + }, + "CU-03": { countryCode: "CU", subdivisionName: "La Habana", code: "CU-03" }, + "CU-10": { countryCode: "CU", subdivisionName: "Las Tunas", code: "CU-10" }, + "CU-04": { countryCode: "CU", subdivisionName: "Matanzas", code: "CU-04" }, + "CU-16": { countryCode: "CU", subdivisionName: "Mayabeque", code: "CU-16" }, + "CU-01": { + countryCode: "CU", + subdivisionName: "Pinar del Rio", + code: "CU-01", + }, + "CU-07": { + countryCode: "CU", + subdivisionName: "Sancti Spiritus", + code: "CU-07", + }, + "CU-13": { + countryCode: "CU", + subdivisionName: "Santiago de Cuba", + code: "CU-13", + }, + "CU-05": { countryCode: "CU", subdivisionName: "Villa Clara", code: "CU-05" }, + "CV-BV": { countryCode: "CV", subdivisionName: "Boa Vista", code: "CV-BV" }, + "CV-BR": { countryCode: "CV", subdivisionName: "Brava", code: "CV-BR" }, + "CV-MO": { countryCode: "CV", subdivisionName: "Mosteiros", code: "CV-MO" }, + "CV-PN": { countryCode: "CV", subdivisionName: "Porto Novo", code: "CV-PN" }, + "CV-PR": { countryCode: "CV", subdivisionName: "Praia", code: "CV-PR" }, + "CV-RS": { + countryCode: "CV", + subdivisionName: "Ribeira Grande de Santiago", + code: "CV-RS", + }, + "CV-SL": { countryCode: "CV", subdivisionName: "Sal", code: "CV-SL" }, + "CV-SV": { countryCode: "CV", subdivisionName: "Sao Vicente", code: "CV-SV" }, + "CV-TA": { countryCode: "CV", subdivisionName: "Tarrafal", code: "CV-TA" }, + "CY-04": { countryCode: "CY", subdivisionName: "Ammochostos", code: "CY-04" }, + "CY-06": { countryCode: "CY", subdivisionName: "Keryneia", code: "CY-06" }, + "CY-03": { countryCode: "CY", subdivisionName: "Larnaka", code: "CY-03" }, + "CY-01": { countryCode: "CY", subdivisionName: "Lefkosia", code: "CY-01" }, + "CY-02": { countryCode: "CY", subdivisionName: "Lemesos", code: "CY-02" }, + "CY-05": { countryCode: "CY", subdivisionName: "Pafos", code: "CY-05" }, + "CZ-31": { + countryCode: "CZ", + subdivisionName: "Jihocesky kraj", + code: "CZ-31", + }, + "CZ-64": { + countryCode: "CZ", + subdivisionName: "Jihomoravsky kraj", + code: "CZ-64", + }, + "CZ-41": { + countryCode: "CZ", + subdivisionName: "Karlovarsky kraj", + code: "CZ-41", + }, + "CZ-63": { + countryCode: "CZ", + subdivisionName: "Kraj Vysocina", + code: "CZ-63", + }, + "CZ-52": { + countryCode: "CZ", + subdivisionName: "Kralovehradecky kraj", + code: "CZ-52", + }, + "CZ-51": { + countryCode: "CZ", + subdivisionName: "Liberecky kraj", + code: "CZ-51", + }, + "CZ-80": { + countryCode: "CZ", + subdivisionName: "Moravskoslezsky kraj", + code: "CZ-80", + }, + "CZ-71": { + countryCode: "CZ", + subdivisionName: "Olomoucky kraj", + code: "CZ-71", + }, + "CZ-53": { + countryCode: "CZ", + subdivisionName: "Pardubicky kraj", + code: "CZ-53", + }, + "CZ-32": { + countryCode: "CZ", + subdivisionName: "Plzensky kraj", + code: "CZ-32", + }, + "CZ-10": { + countryCode: "CZ", + subdivisionName: "Praha, Hlavni mesto", + code: "CZ-10", + }, + "CZ-20": { + countryCode: "CZ", + subdivisionName: "Stredocesky kraj", + code: "CZ-20", + }, + "CZ-42": { + countryCode: "CZ", + subdivisionName: "Ustecky kraj", + code: "CZ-42", + }, + "CZ-72": { + countryCode: "CZ", + subdivisionName: "Zlinsky kraj", + code: "CZ-72", + }, + "DE-BW": { + countryCode: "DE", + subdivisionName: "Baden-Wurttemberg", + code: "DE-BW", + }, + "DE-BY": { countryCode: "DE", subdivisionName: "Bayern", code: "DE-BY" }, + "DE-BE": { countryCode: "DE", subdivisionName: "Berlin", code: "DE-BE" }, + "DE-BB": { countryCode: "DE", subdivisionName: "Brandenburg", code: "DE-BB" }, + "DE-HB": { countryCode: "DE", subdivisionName: "Bremen", code: "DE-HB" }, + "DE-HH": { countryCode: "DE", subdivisionName: "Hamburg", code: "DE-HH" }, + "DE-HE": { countryCode: "DE", subdivisionName: "Hessen", code: "DE-HE" }, + "DE-MV": { + countryCode: "DE", + subdivisionName: "Mecklenburg-Vorpommern", + code: "DE-MV", + }, + "DE-NI": { + countryCode: "DE", + subdivisionName: "Niedersachsen", + code: "DE-NI", + }, + "DE-NW": { + countryCode: "DE", + subdivisionName: "Nordrhein-Westfalen", + code: "DE-NW", + }, + "DE-RP": { + countryCode: "DE", + subdivisionName: "Rheinland-Pfalz", + code: "DE-RP", + }, + "DE-SL": { countryCode: "DE", subdivisionName: "Saarland", code: "DE-SL" }, + "DE-SN": { countryCode: "DE", subdivisionName: "Sachsen", code: "DE-SN" }, + "DE-ST": { + countryCode: "DE", + subdivisionName: "Sachsen-Anhalt", + code: "DE-ST", + }, + "DE-SH": { + countryCode: "DE", + subdivisionName: "Schleswig-Holstein", + code: "DE-SH", + }, + "DE-TH": { countryCode: "DE", subdivisionName: "Thuringen", code: "DE-TH" }, + "DJ-AR": { countryCode: "DJ", subdivisionName: "Arta", code: "DJ-AR" }, + "DJ-DI": { countryCode: "DJ", subdivisionName: "Dikhil", code: "DJ-DI" }, + "DJ-DJ": { countryCode: "DJ", subdivisionName: "Djibouti", code: "DJ-DJ" }, + "DK-84": { countryCode: "DK", subdivisionName: "Hovedstaden", code: "DK-84" }, + "DK-82": { countryCode: "DK", subdivisionName: "Midtjylland", code: "DK-82" }, + "DK-81": { countryCode: "DK", subdivisionName: "Nordjylland", code: "DK-81" }, + "DK-85": { countryCode: "DK", subdivisionName: "Sjaelland", code: "DK-85" }, + "DK-83": { countryCode: "DK", subdivisionName: "Syddanmark", code: "DK-83" }, + "DM-02": { + countryCode: "DM", + subdivisionName: "Saint Andrew", + code: "DM-02", + }, + "DM-04": { + countryCode: "DM", + subdivisionName: "Saint George", + code: "DM-04", + }, + "DM-05": { countryCode: "DM", subdivisionName: "Saint John", code: "DM-05" }, + "DM-06": { + countryCode: "DM", + subdivisionName: "Saint Joseph", + code: "DM-06", + }, + "DM-07": { countryCode: "DM", subdivisionName: "Saint Luke", code: "DM-07" }, + "DM-09": { + countryCode: "DM", + subdivisionName: "Saint Patrick", + code: "DM-09", + }, + "DM-10": { countryCode: "DM", subdivisionName: "Saint Paul", code: "DM-10" }, + "DO-02": { countryCode: "DO", subdivisionName: "Azua", code: "DO-02" }, + "DO-03": { countryCode: "DO", subdivisionName: "Baoruco", code: "DO-03" }, + "DO-04": { countryCode: "DO", subdivisionName: "Barahona", code: "DO-04" }, + "DO-05": { countryCode: "DO", subdivisionName: "Dajabon", code: "DO-05" }, + "DO-01": { + countryCode: "DO", + subdivisionName: "Distrito Nacional (Santo Domingo)", + code: "DO-01", + }, + "DO-06": { countryCode: "DO", subdivisionName: "Duarte", code: "DO-06" }, + "DO-08": { countryCode: "DO", subdivisionName: "El Seibo", code: "DO-08" }, + "DO-07": { countryCode: "DO", subdivisionName: "Elias Pina", code: "DO-07" }, + "DO-09": { countryCode: "DO", subdivisionName: "Espaillat", code: "DO-09" }, + "DO-30": { countryCode: "DO", subdivisionName: "Hato Mayor", code: "DO-30" }, + "DO-19": { + countryCode: "DO", + subdivisionName: "Hermanas Mirabal", + code: "DO-19", + }, + "DO-10": { + countryCode: "DO", + subdivisionName: "Independencia", + code: "DO-10", + }, + "DO-11": { + countryCode: "DO", + subdivisionName: "La Altagracia", + code: "DO-11", + }, + "DO-12": { countryCode: "DO", subdivisionName: "La Romana", code: "DO-12" }, + "DO-13": { countryCode: "DO", subdivisionName: "La Vega", code: "DO-13" }, + "DO-14": { + countryCode: "DO", + subdivisionName: "Maria Trinidad Sanchez", + code: "DO-14", + }, + "DO-28": { + countryCode: "DO", + subdivisionName: "Monsenor Nouel", + code: "DO-28", + }, + "DO-15": { + countryCode: "DO", + subdivisionName: "Monte Cristi", + code: "DO-15", + }, + "DO-29": { countryCode: "DO", subdivisionName: "Monte Plata", code: "DO-29" }, + "DO-16": { countryCode: "DO", subdivisionName: "Pedernales", code: "DO-16" }, + "DO-17": { countryCode: "DO", subdivisionName: "Peravia", code: "DO-17" }, + "DO-18": { + countryCode: "DO", + subdivisionName: "Puerto Plata", + code: "DO-18", + }, + "DO-20": { countryCode: "DO", subdivisionName: "Samana", code: "DO-20" }, + "DO-21": { + countryCode: "DO", + subdivisionName: "San Cristobal", + code: "DO-21", + }, + "DO-31": { + countryCode: "DO", + subdivisionName: "San Jose de Ocoa", + code: "DO-31", + }, + "DO-22": { countryCode: "DO", subdivisionName: "San Juan", code: "DO-22" }, + "DO-23": { + countryCode: "DO", + subdivisionName: "San Pedro de Macoris", + code: "DO-23", + }, + "DO-24": { + countryCode: "DO", + subdivisionName: "Sanchez Ramirez", + code: "DO-24", + }, + "DO-25": { countryCode: "DO", subdivisionName: "Santiago", code: "DO-25" }, + "DO-26": { + countryCode: "DO", + subdivisionName: "Santiago Rodriguez", + code: "DO-26", + }, + "DO-27": { countryCode: "DO", subdivisionName: "Valverde", code: "DO-27" }, + "DZ-01": { countryCode: "DZ", subdivisionName: "Adrar", code: "DZ-01" }, + "DZ-44": { countryCode: "DZ", subdivisionName: "Ain Defla", code: "DZ-44" }, + "DZ-46": { + countryCode: "DZ", + subdivisionName: "Ain Temouchent", + code: "DZ-46", + }, + "DZ-16": { countryCode: "DZ", subdivisionName: "Alger", code: "DZ-16" }, + "DZ-23": { countryCode: "DZ", subdivisionName: "Annaba", code: "DZ-23" }, + "DZ-05": { countryCode: "DZ", subdivisionName: "Batna", code: "DZ-05" }, + "DZ-08": { countryCode: "DZ", subdivisionName: "Bechar", code: "DZ-08" }, + "DZ-06": { countryCode: "DZ", subdivisionName: "Bejaia", code: "DZ-06" }, + "DZ-07": { countryCode: "DZ", subdivisionName: "Biskra", code: "DZ-07" }, + "DZ-09": { countryCode: "DZ", subdivisionName: "Blida", code: "DZ-09" }, + "DZ-34": { + countryCode: "DZ", + subdivisionName: "Bordj Bou Arreridj", + code: "DZ-34", + }, + "DZ-10": { countryCode: "DZ", subdivisionName: "Bouira", code: "DZ-10" }, + "DZ-35": { countryCode: "DZ", subdivisionName: "Boumerdes", code: "DZ-35" }, + "DZ-02": { countryCode: "DZ", subdivisionName: "Chlef", code: "DZ-02" }, + "DZ-25": { countryCode: "DZ", subdivisionName: "Constantine", code: "DZ-25" }, + "DZ-56": { countryCode: "DZ", subdivisionName: "Djanet", code: "DZ-56" }, + "DZ-17": { countryCode: "DZ", subdivisionName: "Djelfa", code: "DZ-17" }, + "DZ-32": { countryCode: "DZ", subdivisionName: "El Bayadh", code: "DZ-32" }, + "DZ-57": { countryCode: "DZ", subdivisionName: "El Meghaier", code: "DZ-57" }, + "DZ-39": { countryCode: "DZ", subdivisionName: "El Oued", code: "DZ-39" }, + "DZ-36": { countryCode: "DZ", subdivisionName: "El Tarf", code: "DZ-36" }, + "DZ-47": { countryCode: "DZ", subdivisionName: "Ghardaia", code: "DZ-47" }, + "DZ-24": { countryCode: "DZ", subdivisionName: "Guelma", code: "DZ-24" }, + "DZ-33": { countryCode: "DZ", subdivisionName: "Illizi", code: "DZ-33" }, + "DZ-53": { countryCode: "DZ", subdivisionName: "In Salah", code: "DZ-53" }, + "DZ-18": { countryCode: "DZ", subdivisionName: "Jijel", code: "DZ-18" }, + "DZ-40": { countryCode: "DZ", subdivisionName: "Khenchela", code: "DZ-40" }, + "DZ-03": { countryCode: "DZ", subdivisionName: "Laghouat", code: "DZ-03" }, + "DZ-28": { countryCode: "DZ", subdivisionName: "M'sila", code: "DZ-28" }, + "DZ-29": { countryCode: "DZ", subdivisionName: "Mascara", code: "DZ-29" }, + "DZ-26": { countryCode: "DZ", subdivisionName: "Medea", code: "DZ-26" }, + "DZ-43": { countryCode: "DZ", subdivisionName: "Mila", code: "DZ-43" }, + "DZ-27": { countryCode: "DZ", subdivisionName: "Mostaganem", code: "DZ-27" }, + "DZ-45": { countryCode: "DZ", subdivisionName: "Naama", code: "DZ-45" }, + "DZ-31": { countryCode: "DZ", subdivisionName: "Oran", code: "DZ-31" }, + "DZ-30": { countryCode: "DZ", subdivisionName: "Ouargla", code: "DZ-30" }, + "DZ-51": { + countryCode: "DZ", + subdivisionName: "Ouled Djellal", + code: "DZ-51", + }, + "DZ-04": { + countryCode: "DZ", + subdivisionName: "Oum el Bouaghi", + code: "DZ-04", + }, + "DZ-48": { countryCode: "DZ", subdivisionName: "Relizane", code: "DZ-48" }, + "DZ-20": { countryCode: "DZ", subdivisionName: "Saida", code: "DZ-20" }, + "DZ-19": { countryCode: "DZ", subdivisionName: "Setif", code: "DZ-19" }, + "DZ-22": { + countryCode: "DZ", + subdivisionName: "Sidi Bel Abbes", + code: "DZ-22", + }, + "DZ-21": { countryCode: "DZ", subdivisionName: "Skikda", code: "DZ-21" }, + "DZ-41": { countryCode: "DZ", subdivisionName: "Souk Ahras", code: "DZ-41" }, + "DZ-11": { countryCode: "DZ", subdivisionName: "Tamanrasset", code: "DZ-11" }, + "DZ-12": { countryCode: "DZ", subdivisionName: "Tebessa", code: "DZ-12" }, + "DZ-14": { countryCode: "DZ", subdivisionName: "Tiaret", code: "DZ-14" }, + "DZ-49": { countryCode: "DZ", subdivisionName: "Timimoun", code: "DZ-49" }, + "DZ-37": { countryCode: "DZ", subdivisionName: "Tindouf", code: "DZ-37" }, + "DZ-42": { countryCode: "DZ", subdivisionName: "Tipaza", code: "DZ-42" }, + "DZ-38": { countryCode: "DZ", subdivisionName: "Tissemsilt", code: "DZ-38" }, + "DZ-15": { countryCode: "DZ", subdivisionName: "Tizi Ouzou", code: "DZ-15" }, + "DZ-13": { countryCode: "DZ", subdivisionName: "Tlemcen", code: "DZ-13" }, + "DZ-55": { countryCode: "DZ", subdivisionName: "Touggourt", code: "DZ-55" }, + "EC-A": { countryCode: "EC", subdivisionName: "Azuay", code: "EC-A" }, + "EC-B": { countryCode: "EC", subdivisionName: "Bolivar", code: "EC-B" }, + "EC-F": { countryCode: "EC", subdivisionName: "Canar", code: "EC-F" }, + "EC-C": { countryCode: "EC", subdivisionName: "Carchi", code: "EC-C" }, + "EC-H": { countryCode: "EC", subdivisionName: "Chimborazo", code: "EC-H" }, + "EC-X": { countryCode: "EC", subdivisionName: "Cotopaxi", code: "EC-X" }, + "EC-O": { countryCode: "EC", subdivisionName: "El Oro", code: "EC-O" }, + "EC-E": { countryCode: "EC", subdivisionName: "Esmeraldas", code: "EC-E" }, + "EC-W": { countryCode: "EC", subdivisionName: "Galapagos", code: "EC-W" }, + "EC-G": { countryCode: "EC", subdivisionName: "Guayas", code: "EC-G" }, + "EC-I": { countryCode: "EC", subdivisionName: "Imbabura", code: "EC-I" }, + "EC-L": { countryCode: "EC", subdivisionName: "Loja", code: "EC-L" }, + "EC-R": { countryCode: "EC", subdivisionName: "Los Rios", code: "EC-R" }, + "EC-M": { countryCode: "EC", subdivisionName: "Manabi", code: "EC-M" }, + "EC-S": { + countryCode: "EC", + subdivisionName: "Morona Santiago", + code: "EC-S", + }, + "EC-N": { countryCode: "EC", subdivisionName: "Napo", code: "EC-N" }, + "EC-D": { countryCode: "EC", subdivisionName: "Orellana", code: "EC-D" }, + "EC-Y": { countryCode: "EC", subdivisionName: "Pastaza", code: "EC-Y" }, + "EC-P": { countryCode: "EC", subdivisionName: "Pichincha", code: "EC-P" }, + "EC-SE": { countryCode: "EC", subdivisionName: "Santa Elena", code: "EC-SE" }, + "EC-SD": { + countryCode: "EC", + subdivisionName: "Santo Domingo de los Tsachilas", + code: "EC-SD", + }, + "EC-U": { countryCode: "EC", subdivisionName: "Sucumbios", code: "EC-U" }, + "EC-T": { countryCode: "EC", subdivisionName: "Tungurahua", code: "EC-T" }, + "EC-Z": { + countryCode: "EC", + subdivisionName: "Zamora Chinchipe", + code: "EC-Z", + }, + "EE-37": { countryCode: "EE", subdivisionName: "Harjumaa", code: "EE-37" }, + "EE-39": { countryCode: "EE", subdivisionName: "Hiiumaa", code: "EE-39" }, + "EE-45": { countryCode: "EE", subdivisionName: "Ida-Virumaa", code: "EE-45" }, + "EE-52": { countryCode: "EE", subdivisionName: "Jarvamaa", code: "EE-52" }, + "EE-50": { countryCode: "EE", subdivisionName: "Jogevamaa", code: "EE-50" }, + "EE-60": { + countryCode: "EE", + subdivisionName: "Laane-Virumaa", + code: "EE-60", + }, + "EE-56": { countryCode: "EE", subdivisionName: "Laanemaa", code: "EE-56" }, + "EE-68": { countryCode: "EE", subdivisionName: "Parnumaa", code: "EE-68" }, + "EE-64": { countryCode: "EE", subdivisionName: "Polvamaa", code: "EE-64" }, + "EE-71": { countryCode: "EE", subdivisionName: "Raplamaa", code: "EE-71" }, + "EE-74": { countryCode: "EE", subdivisionName: "Saaremaa", code: "EE-74" }, + "EE-79": { countryCode: "EE", subdivisionName: "Tartumaa", code: "EE-79" }, + "EE-81": { countryCode: "EE", subdivisionName: "Valgamaa", code: "EE-81" }, + "EE-84": { countryCode: "EE", subdivisionName: "Viljandimaa", code: "EE-84" }, + "EE-87": { countryCode: "EE", subdivisionName: "Vorumaa", code: "EE-87" }, + "EG-DK": { + countryCode: "EG", + subdivisionName: "Ad Daqahliyah", + code: "EG-DK", + }, + "EG-BA": { + countryCode: "EG", + subdivisionName: "Al Bahr al Ahmar", + code: "EG-BA", + }, + "EG-BH": { countryCode: "EG", subdivisionName: "Al Buhayrah", code: "EG-BH" }, + "EG-FYM": { countryCode: "EG", subdivisionName: "Al Fayyum", code: "EG-FYM" }, + "EG-GH": { + countryCode: "EG", + subdivisionName: "Al Gharbiyah", + code: "EG-GH", + }, + "EG-ALX": { + countryCode: "EG", + subdivisionName: "Al Iskandariyah", + code: "EG-ALX", + }, + "EG-IS": { + countryCode: "EG", + subdivisionName: "Al Isma'iliyah", + code: "EG-IS", + }, + "EG-GZ": { countryCode: "EG", subdivisionName: "Al Jizah", code: "EG-GZ" }, + "EG-MNF": { + countryCode: "EG", + subdivisionName: "Al Minufiyah", + code: "EG-MNF", + }, + "EG-MN": { countryCode: "EG", subdivisionName: "Al Minya", code: "EG-MN" }, + "EG-C": { countryCode: "EG", subdivisionName: "Al Qahirah", code: "EG-C" }, + "EG-KB": { + countryCode: "EG", + subdivisionName: "Al Qalyubiyah", + code: "EG-KB", + }, + "EG-LX": { countryCode: "EG", subdivisionName: "Al Uqsur", code: "EG-LX" }, + "EG-WAD": { + countryCode: "EG", + subdivisionName: "Al Wadi al Jadid", + code: "EG-WAD", + }, + "EG-SUZ": { countryCode: "EG", subdivisionName: "As Suways", code: "EG-SUZ" }, + "EG-SHR": { + countryCode: "EG", + subdivisionName: "Ash Sharqiyah", + code: "EG-SHR", + }, + "EG-ASN": { countryCode: "EG", subdivisionName: "Aswan", code: "EG-ASN" }, + "EG-AST": { countryCode: "EG", subdivisionName: "Asyut", code: "EG-AST" }, + "EG-BNS": { + countryCode: "EG", + subdivisionName: "Bani Suwayf", + code: "EG-BNS", + }, + "EG-PTS": { countryCode: "EG", subdivisionName: "Bur Sa'id", code: "EG-PTS" }, + "EG-DT": { countryCode: "EG", subdivisionName: "Dumyat", code: "EG-DT" }, + "EG-JS": { countryCode: "EG", subdivisionName: "Janub Sina'", code: "EG-JS" }, + "EG-KFS": { + countryCode: "EG", + subdivisionName: "Kafr ash Shaykh", + code: "EG-KFS", + }, + "EG-MT": { countryCode: "EG", subdivisionName: "Matruh", code: "EG-MT" }, + "EG-KN": { countryCode: "EG", subdivisionName: "Qina", code: "EG-KN" }, + "EG-SIN": { + countryCode: "EG", + subdivisionName: "Shamal Sina'", + code: "EG-SIN", + }, + "EG-SHG": { countryCode: "EG", subdivisionName: "Suhaj", code: "EG-SHG" }, + "ER-MA": { countryCode: "ER", subdivisionName: "Al Awsat", code: "ER-MA" }, + "ER-GB": { countryCode: "ER", subdivisionName: "Qash-Barkah", code: "ER-GB" }, + "ES-AN": { countryCode: "ES", subdivisionName: "Andalucia", code: "ES-AN" }, + "ES-AR": { countryCode: "ES", subdivisionName: "Aragon", code: "ES-AR" }, + "ES-AS": { + countryCode: "ES", + subdivisionName: "Asturias, Principado de", + code: "ES-AS", + }, + "ES-CN": { countryCode: "ES", subdivisionName: "Canarias", code: "ES-CN" }, + "ES-CB": { countryCode: "ES", subdivisionName: "Cantabria", code: "ES-CB" }, + "ES-CL": { + countryCode: "ES", + subdivisionName: "Castilla y Leon", + code: "ES-CL", + }, + "ES-CM": { + countryCode: "ES", + subdivisionName: "Castilla-La Mancha", + code: "ES-CM", + }, + "ES-CT": { countryCode: "ES", subdivisionName: "Catalunya", code: "ES-CT" }, + "ES-CE": { countryCode: "ES", subdivisionName: "Ceuta", code: "ES-CE" }, + "ES-EX": { countryCode: "ES", subdivisionName: "Extremadura", code: "ES-EX" }, + "ES-GA": { countryCode: "ES", subdivisionName: "Galicia", code: "ES-GA" }, + "ES-IB": { + countryCode: "ES", + subdivisionName: "Illes Balears", + code: "ES-IB", + }, + "ES-RI": { countryCode: "ES", subdivisionName: "La Rioja", code: "ES-RI" }, + "ES-MD": { + countryCode: "ES", + subdivisionName: "Madrid, Comunidad de", + code: "ES-MD", + }, + "ES-ML": { countryCode: "ES", subdivisionName: "Melilla", code: "ES-ML" }, + "ES-MC": { + countryCode: "ES", + subdivisionName: "Murcia, Region de", + code: "ES-MC", + }, + "ES-NC": { + countryCode: "ES", + subdivisionName: "Navarra, Comunidad Foral de", + code: "ES-NC", + }, + "ES-PV": { countryCode: "ES", subdivisionName: "Pais Vasco", code: "ES-PV" }, + "ES-VC": { + countryCode: "ES", + subdivisionName: "Valenciana, Comunidad", + code: "ES-VC", + }, + "ET-AA": { countryCode: "ET", subdivisionName: "Addis Ababa", code: "ET-AA" }, + "ET-AF": { countryCode: "ET", subdivisionName: "Afar", code: "ET-AF" }, + "ET-AM": { countryCode: "ET", subdivisionName: "Amara", code: "ET-AM" }, + "ET-BE": { + countryCode: "ET", + subdivisionName: "Benshangul-Gumaz", + code: "ET-BE", + }, + "ET-DD": { countryCode: "ET", subdivisionName: "Dire Dawa", code: "ET-DD" }, + "ET-HA": { + countryCode: "ET", + subdivisionName: "Harari People", + code: "ET-HA", + }, + "ET-OR": { countryCode: "ET", subdivisionName: "Oromia", code: "ET-OR" }, + "ET-SO": { countryCode: "ET", subdivisionName: "Somali", code: "ET-SO" }, + "ET-SN": { + countryCode: "ET", + subdivisionName: "Southern Nations, Nationalities and Peoples", + code: "ET-SN", + }, + "ET-TI": { countryCode: "ET", subdivisionName: "Tigrai", code: "ET-TI" }, + "FI-02": { + countryCode: "FI", + subdivisionName: "Etela-Karjala", + code: "FI-02", + }, + "FI-03": { + countryCode: "FI", + subdivisionName: "Etela-Pohjanmaa", + code: "FI-03", + }, + "FI-04": { countryCode: "FI", subdivisionName: "Etela-Savo", code: "FI-04" }, + "FI-05": { countryCode: "FI", subdivisionName: "Kainuu", code: "FI-05" }, + "FI-06": { countryCode: "FI", subdivisionName: "Kanta-Hame", code: "FI-06" }, + "FI-07": { + countryCode: "FI", + subdivisionName: "Keski-Pohjanmaa", + code: "FI-07", + }, + "FI-08": { countryCode: "FI", subdivisionName: "Keski-Suomi", code: "FI-08" }, + "FI-09": { countryCode: "FI", subdivisionName: "Kymenlaakso", code: "FI-09" }, + "FI-10": { countryCode: "FI", subdivisionName: "Lappi", code: "FI-10" }, + "FI-16": { countryCode: "FI", subdivisionName: "Paijat-Hame", code: "FI-16" }, + "FI-11": { countryCode: "FI", subdivisionName: "Pirkanmaa", code: "FI-11" }, + "FI-12": { countryCode: "FI", subdivisionName: "Pohjanmaa", code: "FI-12" }, + "FI-13": { + countryCode: "FI", + subdivisionName: "Pohjois-Karjala", + code: "FI-13", + }, + "FI-14": { + countryCode: "FI", + subdivisionName: "Pohjois-Pohjanmaa", + code: "FI-14", + }, + "FI-15": { + countryCode: "FI", + subdivisionName: "Pohjois-Savo", + code: "FI-15", + }, + "FI-17": { countryCode: "FI", subdivisionName: "Satakunta", code: "FI-17" }, + "FI-18": { countryCode: "FI", subdivisionName: "Uusimaa", code: "FI-18" }, + "FI-19": { + countryCode: "FI", + subdivisionName: "Varsinais-Suomi", + code: "FI-19", + }, + "FJ-C": { countryCode: "FJ", subdivisionName: "Central", code: "FJ-C" }, + "FJ-E": { countryCode: "FJ", subdivisionName: "Eastern", code: "FJ-E" }, + "FJ-N": { countryCode: "FJ", subdivisionName: "Northern", code: "FJ-N" }, + "FJ-R": { countryCode: "FJ", subdivisionName: "Rotuma", code: "FJ-R" }, + "FJ-W": { countryCode: "FJ", subdivisionName: "Western", code: "FJ-W" }, + "FM-TRK": { countryCode: "FM", subdivisionName: "Chuuk", code: "FM-TRK" }, + "FM-KSA": { countryCode: "FM", subdivisionName: "Kosrae", code: "FM-KSA" }, + "FM-PNI": { countryCode: "FM", subdivisionName: "Pohnpei", code: "FM-PNI" }, + "FM-YAP": { countryCode: "FM", subdivisionName: "Yap", code: "FM-YAP" }, + "FR-ARA": { + countryCode: "FR", + subdivisionName: "Auvergne-Rhone-Alpes", + code: "FR-ARA", + }, + "FR-BFC": { + countryCode: "FR", + subdivisionName: "Bourgogne-Franche-Comte", + code: "FR-BFC", + }, + "FR-BRE": { countryCode: "FR", subdivisionName: "Bretagne", code: "FR-BRE" }, + "FR-CVL": { + countryCode: "FR", + subdivisionName: "Centre-Val de Loire", + code: "FR-CVL", + }, + "FR-20R": { countryCode: "FR", subdivisionName: "Corse", code: "FR-20R" }, + "FR-GES": { countryCode: "FR", subdivisionName: "Grand-Est", code: "FR-GES" }, + "FR-HDF": { + countryCode: "FR", + subdivisionName: "Hauts-de-France", + code: "FR-HDF", + }, + "FR-IDF": { + countryCode: "FR", + subdivisionName: "Ile-de-France", + code: "FR-IDF", + }, + "FR-NOR": { countryCode: "FR", subdivisionName: "Normandie", code: "FR-NOR" }, + "FR-NAQ": { + countryCode: "FR", + subdivisionName: "Nouvelle-Aquitaine", + code: "FR-NAQ", + }, + "FR-OCC": { countryCode: "FR", subdivisionName: "Occitanie", code: "FR-OCC" }, + "FR-PDL": { + countryCode: "FR", + subdivisionName: "Pays-de-la-Loire", + code: "FR-PDL", + }, + "FR-PAC": { + countryCode: "FR", + subdivisionName: "Provence-Alpes-Cote-d'Azur", + code: "FR-PAC", + }, + "GA-1": { countryCode: "GA", subdivisionName: "Estuaire", code: "GA-1" }, + "GA-2": { countryCode: "GA", subdivisionName: "Haut-Ogooue", code: "GA-2" }, + "GA-3": { countryCode: "GA", subdivisionName: "Moyen-Ogooue", code: "GA-3" }, + "GA-4": { countryCode: "GA", subdivisionName: "Ngounie", code: "GA-4" }, + "GA-5": { countryCode: "GA", subdivisionName: "Nyanga", code: "GA-5" }, + "GA-8": { + countryCode: "GA", + subdivisionName: "Ogooue-Maritime", + code: "GA-8", + }, + "GA-9": { countryCode: "GA", subdivisionName: "Woleu-Ntem", code: "GA-9" }, + "GB-ENG": { countryCode: "GB", subdivisionName: "England", code: "GB-ENG" }, + "GB-NIR": { + countryCode: "GB", + subdivisionName: "Northern Ireland", + code: "GB-NIR", + }, + "GB-SCT": { countryCode: "GB", subdivisionName: "Scotland", code: "GB-SCT" }, + "GB-WLS": { countryCode: "GB", subdivisionName: "Wales", code: "GB-WLS" }, + "GD-01": { + countryCode: "GD", + subdivisionName: "Saint Andrew", + code: "GD-01", + }, + "GD-02": { countryCode: "GD", subdivisionName: "Saint David", code: "GD-02" }, + "GD-03": { + countryCode: "GD", + subdivisionName: "Saint George", + code: "GD-03", + }, + "GD-04": { countryCode: "GD", subdivisionName: "Saint John", code: "GD-04" }, + "GD-05": { countryCode: "GD", subdivisionName: "Saint Mark", code: "GD-05" }, + "GD-06": { + countryCode: "GD", + subdivisionName: "Saint Patrick", + code: "GD-06", + }, + "GD-10": { + countryCode: "GD", + subdivisionName: "Southern Grenadine Islands", + code: "GD-10", + }, + "GE-AB": { countryCode: "GE", subdivisionName: "Abkhazia", code: "GE-AB" }, + "GE-AJ": { countryCode: "GE", subdivisionName: "Ajaria", code: "GE-AJ" }, + "GE-GU": { countryCode: "GE", subdivisionName: "Guria", code: "GE-GU" }, + "GE-IM": { countryCode: "GE", subdivisionName: "Imereti", code: "GE-IM" }, + "GE-KA": { countryCode: "GE", subdivisionName: "K'akheti", code: "GE-KA" }, + "GE-KK": { + countryCode: "GE", + subdivisionName: "Kvemo Kartli", + code: "GE-KK", + }, + "GE-MM": { + countryCode: "GE", + subdivisionName: "Mtskheta-Mtianeti", + code: "GE-MM", + }, + "GE-RL": { + countryCode: "GE", + subdivisionName: "Rach'a-Lechkhumi-Kvemo Svaneti", + code: "GE-RL", + }, + "GE-SZ": { + countryCode: "GE", + subdivisionName: "Samegrelo-Zemo Svaneti", + code: "GE-SZ", + }, + "GE-SJ": { + countryCode: "GE", + subdivisionName: "Samtskhe-Javakheti", + code: "GE-SJ", + }, + "GE-SK": { + countryCode: "GE", + subdivisionName: "Shida Kartli", + code: "GE-SK", + }, + "GE-TB": { countryCode: "GE", subdivisionName: "Tbilisi", code: "GE-TB" }, + "GH-AF": { countryCode: "GH", subdivisionName: "Ahafo", code: "GH-AF" }, + "GH-AH": { countryCode: "GH", subdivisionName: "Ashanti", code: "GH-AH" }, + "GH-BO": { countryCode: "GH", subdivisionName: "Bono", code: "GH-BO" }, + "GH-BE": { countryCode: "GH", subdivisionName: "Bono East", code: "GH-BE" }, + "GH-CP": { countryCode: "GH", subdivisionName: "Central", code: "GH-CP" }, + "GH-EP": { countryCode: "GH", subdivisionName: "Eastern", code: "GH-EP" }, + "GH-AA": { + countryCode: "GH", + subdivisionName: "Greater Accra", + code: "GH-AA", + }, + "GH-NP": { countryCode: "GH", subdivisionName: "Northern", code: "GH-NP" }, + "GH-UE": { countryCode: "GH", subdivisionName: "Upper East", code: "GH-UE" }, + "GH-UW": { countryCode: "GH", subdivisionName: "Upper West", code: "GH-UW" }, + "GH-TV": { countryCode: "GH", subdivisionName: "Volta", code: "GH-TV" }, + "GH-WP": { countryCode: "GH", subdivisionName: "Western", code: "GH-WP" }, + "GL-AV": { + countryCode: "GL", + subdivisionName: "Avannaata Kommunia", + code: "GL-AV", + }, + "GL-KU": { + countryCode: "GL", + subdivisionName: "Kommune Kujalleq", + code: "GL-KU", + }, + "GL-QT": { + countryCode: "GL", + subdivisionName: "Kommune Qeqertalik", + code: "GL-QT", + }, + "GL-SM": { + countryCode: "GL", + subdivisionName: "Kommuneqarfik Sermersooq", + code: "GL-SM", + }, + "GL-QE": { + countryCode: "GL", + subdivisionName: "Qeqqata Kommunia", + code: "GL-QE", + }, + "GM-B": { countryCode: "GM", subdivisionName: "Banjul", code: "GM-B" }, + "GM-M": { countryCode: "GM", subdivisionName: "Central River", code: "GM-M" }, + "GM-L": { countryCode: "GM", subdivisionName: "Lower River", code: "GM-L" }, + "GM-N": { countryCode: "GM", subdivisionName: "North Bank", code: "GM-N" }, + "GM-U": { countryCode: "GM", subdivisionName: "Upper River", code: "GM-U" }, + "GM-W": { countryCode: "GM", subdivisionName: "Western", code: "GM-W" }, + "GN-BF": { countryCode: "GN", subdivisionName: "Boffa", code: "GN-BF" }, + "GN-BK": { countryCode: "GN", subdivisionName: "Boke", code: "GN-BK" }, + "GN-C": { countryCode: "GN", subdivisionName: "Conakry", code: "GN-C" }, + "GN-DB": { countryCode: "GN", subdivisionName: "Dabola", code: "GN-DB" }, + "GN-DL": { countryCode: "GN", subdivisionName: "Dalaba", code: "GN-DL" }, + "GN-DI": { countryCode: "GN", subdivisionName: "Dinguiraye", code: "GN-DI" }, + "GN-FR": { countryCode: "GN", subdivisionName: "Fria", code: "GN-FR" }, + "GN-KA": { countryCode: "GN", subdivisionName: "Kankan", code: "GN-KA" }, + "GN-KO": { countryCode: "GN", subdivisionName: "Kouroussa", code: "GN-KO" }, + "GN-LA": { countryCode: "GN", subdivisionName: "Labe", code: "GN-LA" }, + "GN-SI": { countryCode: "GN", subdivisionName: "Siguiri", code: "GN-SI" }, + "GQ-AN": { countryCode: "GQ", subdivisionName: "Annobon", code: "GQ-AN" }, + "GQ-BN": { countryCode: "GQ", subdivisionName: "Bioko Norte", code: "GQ-BN" }, + "GQ-CS": { countryCode: "GQ", subdivisionName: "Centro Sur", code: "GQ-CS" }, + "GQ-KN": { countryCode: "GQ", subdivisionName: "Kie-Ntem", code: "GQ-KN" }, + "GQ-LI": { countryCode: "GQ", subdivisionName: "Litoral", code: "GQ-LI" }, + "GQ-WN": { countryCode: "GQ", subdivisionName: "Wele-Nzas", code: "GQ-WN" }, + "GR-A": { + countryCode: "GR", + subdivisionName: "Anatoliki Makedonia kai Thraki", + code: "GR-A", + }, + "GR-I": { countryCode: "GR", subdivisionName: "Attiki", code: "GR-I" }, + "GR-G": { countryCode: "GR", subdivisionName: "Dytiki Ellada", code: "GR-G" }, + "GR-C": { + countryCode: "GR", + subdivisionName: "Dytiki Makedonia", + code: "GR-C", + }, + "GR-F": { countryCode: "GR", subdivisionName: "Ionia Nisia", code: "GR-F" }, + "GR-D": { countryCode: "GR", subdivisionName: "Ipeiros", code: "GR-D" }, + "GR-B": { + countryCode: "GR", + subdivisionName: "Kentriki Makedonia", + code: "GR-B", + }, + "GR-M": { countryCode: "GR", subdivisionName: "Kriti", code: "GR-M" }, + "GR-L": { countryCode: "GR", subdivisionName: "Notio Aigaio", code: "GR-L" }, + "GR-J": { countryCode: "GR", subdivisionName: "Peloponnisos", code: "GR-J" }, + "GR-H": { countryCode: "GR", subdivisionName: "Sterea Ellada", code: "GR-H" }, + "GR-E": { countryCode: "GR", subdivisionName: "Thessalia", code: "GR-E" }, + "GR-K": { countryCode: "GR", subdivisionName: "Voreio Aigaio", code: "GR-K" }, + "GT-16": { + countryCode: "GT", + subdivisionName: "Alta Verapaz", + code: "GT-16", + }, + "GT-15": { + countryCode: "GT", + subdivisionName: "Baja Verapaz", + code: "GT-15", + }, + "GT-04": { + countryCode: "GT", + subdivisionName: "Chimaltenango", + code: "GT-04", + }, + "GT-20": { countryCode: "GT", subdivisionName: "Chiquimula", code: "GT-20" }, + "GT-02": { countryCode: "GT", subdivisionName: "El Progreso", code: "GT-02" }, + "GT-05": { countryCode: "GT", subdivisionName: "Escuintla", code: "GT-05" }, + "GT-01": { countryCode: "GT", subdivisionName: "Guatemala", code: "GT-01" }, + "GT-13": { + countryCode: "GT", + subdivisionName: "Huehuetenango", + code: "GT-13", + }, + "GT-18": { countryCode: "GT", subdivisionName: "Izabal", code: "GT-18" }, + "GT-21": { countryCode: "GT", subdivisionName: "Jalapa", code: "GT-21" }, + "GT-22": { countryCode: "GT", subdivisionName: "Jutiapa", code: "GT-22" }, + "GT-17": { countryCode: "GT", subdivisionName: "Peten", code: "GT-17" }, + "GT-09": { + countryCode: "GT", + subdivisionName: "Quetzaltenango", + code: "GT-09", + }, + "GT-14": { countryCode: "GT", subdivisionName: "Quiche", code: "GT-14" }, + "GT-11": { countryCode: "GT", subdivisionName: "Retalhuleu", code: "GT-11" }, + "GT-03": { + countryCode: "GT", + subdivisionName: "Sacatepequez", + code: "GT-03", + }, + "GT-12": { countryCode: "GT", subdivisionName: "San Marcos", code: "GT-12" }, + "GT-06": { countryCode: "GT", subdivisionName: "Santa Rosa", code: "GT-06" }, + "GT-07": { countryCode: "GT", subdivisionName: "Solola", code: "GT-07" }, + "GT-10": { + countryCode: "GT", + subdivisionName: "Suchitepequez", + code: "GT-10", + }, + "GT-08": { countryCode: "GT", subdivisionName: "Totonicapan", code: "GT-08" }, + "GT-19": { countryCode: "GT", subdivisionName: "Zacapa", code: "GT-19" }, + "GW-BA": { countryCode: "GW", subdivisionName: "Bafata", code: "GW-BA" }, + "GW-BS": { countryCode: "GW", subdivisionName: "Bissau", code: "GW-BS" }, + "GW-CA": { countryCode: "GW", subdivisionName: "Cacheu", code: "GW-CA" }, + "GW-GA": { countryCode: "GW", subdivisionName: "Gabu", code: "GW-GA" }, + "GW-OI": { countryCode: "GW", subdivisionName: "Oio", code: "GW-OI" }, + "GY-BA": { + countryCode: "GY", + subdivisionName: "Barima-Waini", + code: "GY-BA", + }, + "GY-CU": { + countryCode: "GY", + subdivisionName: "Cuyuni-Mazaruni", + code: "GY-CU", + }, + "GY-DE": { + countryCode: "GY", + subdivisionName: "Demerara-Mahaica", + code: "GY-DE", + }, + "GY-EB": { + countryCode: "GY", + subdivisionName: "East Berbice-Corentyne", + code: "GY-EB", + }, + "GY-ES": { + countryCode: "GY", + subdivisionName: "Essequibo Islands-West Demerara", + code: "GY-ES", + }, + "GY-MA": { + countryCode: "GY", + subdivisionName: "Mahaica-Berbice", + code: "GY-MA", + }, + "GY-PM": { + countryCode: "GY", + subdivisionName: "Pomeroon-Supenaam", + code: "GY-PM", + }, + "GY-PT": { + countryCode: "GY", + subdivisionName: "Potaro-Siparuni", + code: "GY-PT", + }, + "GY-UD": { + countryCode: "GY", + subdivisionName: "Upper Demerara-Berbice", + code: "GY-UD", + }, + "HN-AT": { countryCode: "HN", subdivisionName: "Atlantida", code: "HN-AT" }, + "HN-CH": { countryCode: "HN", subdivisionName: "Choluteca", code: "HN-CH" }, + "HN-CL": { countryCode: "HN", subdivisionName: "Colon", code: "HN-CL" }, + "HN-CM": { countryCode: "HN", subdivisionName: "Comayagua", code: "HN-CM" }, + "HN-CP": { countryCode: "HN", subdivisionName: "Copan", code: "HN-CP" }, + "HN-CR": { countryCode: "HN", subdivisionName: "Cortes", code: "HN-CR" }, + "HN-EP": { countryCode: "HN", subdivisionName: "El Paraiso", code: "HN-EP" }, + "HN-FM": { + countryCode: "HN", + subdivisionName: "Francisco Morazan", + code: "HN-FM", + }, + "HN-GD": { + countryCode: "HN", + subdivisionName: "Gracias a Dios", + code: "HN-GD", + }, + "HN-IN": { countryCode: "HN", subdivisionName: "Intibuca", code: "HN-IN" }, + "HN-IB": { + countryCode: "HN", + subdivisionName: "Islas de la Bahia", + code: "HN-IB", + }, + "HN-LP": { countryCode: "HN", subdivisionName: "La Paz", code: "HN-LP" }, + "HN-LE": { countryCode: "HN", subdivisionName: "Lempira", code: "HN-LE" }, + "HN-OC": { countryCode: "HN", subdivisionName: "Ocotepeque", code: "HN-OC" }, + "HN-OL": { countryCode: "HN", subdivisionName: "Olancho", code: "HN-OL" }, + "HN-SB": { + countryCode: "HN", + subdivisionName: "Santa Barbara", + code: "HN-SB", + }, + "HN-VA": { countryCode: "HN", subdivisionName: "Valle", code: "HN-VA" }, + "HN-YO": { countryCode: "HN", subdivisionName: "Yoro", code: "HN-YO" }, + "HR-07": { + countryCode: "HR", + subdivisionName: "Bjelovarsko-bilogorska zupanija", + code: "HR-07", + }, + "HR-12": { + countryCode: "HR", + subdivisionName: "Brodsko-posavska zupanija", + code: "HR-12", + }, + "HR-19": { + countryCode: "HR", + subdivisionName: "Dubrovacko-neretvanska zupanija", + code: "HR-19", + }, + "HR-21": { countryCode: "HR", subdivisionName: "Grad Zagreb", code: "HR-21" }, + "HR-18": { + countryCode: "HR", + subdivisionName: "Istarska zupanija", + code: "HR-18", + }, + "HR-04": { + countryCode: "HR", + subdivisionName: "Karlovacka zupanija", + code: "HR-04", + }, + "HR-06": { + countryCode: "HR", + subdivisionName: "Koprivnicko-krizevacka zupanija", + code: "HR-06", + }, + "HR-02": { + countryCode: "HR", + subdivisionName: "Krapinsko-zagorska zupanija", + code: "HR-02", + }, + "HR-09": { + countryCode: "HR", + subdivisionName: "Licko-senjska zupanija", + code: "HR-09", + }, + "HR-20": { + countryCode: "HR", + subdivisionName: "Medimurska zupanija", + code: "HR-20", + }, + "HR-14": { + countryCode: "HR", + subdivisionName: "Osjecko-baranjska zupanija", + code: "HR-14", + }, + "HR-11": { + countryCode: "HR", + subdivisionName: "Pozesko-slavonska zupanija", + code: "HR-11", + }, + "HR-08": { + countryCode: "HR", + subdivisionName: "Primorsko-goranska zupanija", + code: "HR-08", + }, + "HR-15": { + countryCode: "HR", + subdivisionName: "Sibensko-kninska zupanija", + code: "HR-15", + }, + "HR-03": { + countryCode: "HR", + subdivisionName: "Sisacko-moslavacka zupanija", + code: "HR-03", + }, + "HR-17": { + countryCode: "HR", + subdivisionName: "Splitsko-dalmatinska zupanija", + code: "HR-17", + }, + "HR-05": { + countryCode: "HR", + subdivisionName: "Varazdinska zupanija", + code: "HR-05", + }, + "HR-10": { + countryCode: "HR", + subdivisionName: "Viroviticko-podravska zupanija", + code: "HR-10", + }, + "HR-16": { + countryCode: "HR", + subdivisionName: "Vukovarsko-srijemska zupanija", + code: "HR-16", + }, + "HR-13": { + countryCode: "HR", + subdivisionName: "Zadarska zupanija", + code: "HR-13", + }, + "HR-01": { + countryCode: "HR", + subdivisionName: "Zagrebacka zupanija", + code: "HR-01", + }, + "HT-AR": { countryCode: "HT", subdivisionName: "Artibonite", code: "HT-AR" }, + "HT-CE": { countryCode: "HT", subdivisionName: "Centre", code: "HT-CE" }, + "HT-GA": { countryCode: "HT", subdivisionName: "Grande'Anse", code: "HT-GA" }, + "HT-NI": { countryCode: "HT", subdivisionName: "Nippes", code: "HT-NI" }, + "HT-ND": { countryCode: "HT", subdivisionName: "Nord", code: "HT-ND" }, + "HT-NO": { countryCode: "HT", subdivisionName: "Nord-Ouest", code: "HT-NO" }, + "HT-OU": { countryCode: "HT", subdivisionName: "Ouest", code: "HT-OU" }, + "HT-SD": { countryCode: "HT", subdivisionName: "Sud", code: "HT-SD" }, + "HT-SE": { countryCode: "HT", subdivisionName: "Sud-Est", code: "HT-SE" }, + "HU-BK": { countryCode: "HU", subdivisionName: "Bacs-Kiskun", code: "HU-BK" }, + "HU-BA": { countryCode: "HU", subdivisionName: "Baranya", code: "HU-BA" }, + "HU-BE": { countryCode: "HU", subdivisionName: "Bekes", code: "HU-BE" }, + "HU-BZ": { + countryCode: "HU", + subdivisionName: "Borsod-Abauj-Zemplen", + code: "HU-BZ", + }, + "HU-BU": { countryCode: "HU", subdivisionName: "Budapest", code: "HU-BU" }, + "HU-CS": { + countryCode: "HU", + subdivisionName: "Csongrad-Csanad", + code: "HU-CS", + }, + "HU-FE": { countryCode: "HU", subdivisionName: "Fejer", code: "HU-FE" }, + "HU-GS": { + countryCode: "HU", + subdivisionName: "Gyor-Moson-Sopron", + code: "HU-GS", + }, + "HU-HB": { countryCode: "HU", subdivisionName: "Hajdu-Bihar", code: "HU-HB" }, + "HU-HE": { countryCode: "HU", subdivisionName: "Heves", code: "HU-HE" }, + "HU-JN": { + countryCode: "HU", + subdivisionName: "Jasz-Nagykun-Szolnok", + code: "HU-JN", + }, + "HU-KE": { + countryCode: "HU", + subdivisionName: "Komarom-Esztergom", + code: "HU-KE", + }, + "HU-NO": { countryCode: "HU", subdivisionName: "Nograd", code: "HU-NO" }, + "HU-PE": { countryCode: "HU", subdivisionName: "Pest", code: "HU-PE" }, + "HU-SO": { countryCode: "HU", subdivisionName: "Somogy", code: "HU-SO" }, + "HU-SZ": { + countryCode: "HU", + subdivisionName: "Szabolcs-Szatmar-Bereg", + code: "HU-SZ", + }, + "HU-TO": { countryCode: "HU", subdivisionName: "Tolna", code: "HU-TO" }, + "HU-VA": { countryCode: "HU", subdivisionName: "Vas", code: "HU-VA" }, + "HU-VE": { countryCode: "HU", subdivisionName: "Veszprem", code: "HU-VE" }, + "HU-ZA": { countryCode: "HU", subdivisionName: "Zala", code: "HU-ZA" }, + "ID-AC": { countryCode: "ID", subdivisionName: "Aceh", code: "ID-AC" }, + "ID-BA": { countryCode: "ID", subdivisionName: "Bali", code: "ID-BA" }, + "ID-BT": { countryCode: "ID", subdivisionName: "Banten", code: "ID-BT" }, + "ID-BE": { countryCode: "ID", subdivisionName: "Bengkulu", code: "ID-BE" }, + "ID-GO": { countryCode: "ID", subdivisionName: "Gorontalo", code: "ID-GO" }, + "ID-JK": { + countryCode: "ID", + subdivisionName: "Jakarta Raya", + code: "ID-JK", + }, + "ID-JA": { countryCode: "ID", subdivisionName: "Jambi", code: "ID-JA" }, + "ID-JB": { countryCode: "ID", subdivisionName: "Jawa Barat", code: "ID-JB" }, + "ID-JT": { countryCode: "ID", subdivisionName: "Jawa Tengah", code: "ID-JT" }, + "ID-JI": { countryCode: "ID", subdivisionName: "Jawa Timur", code: "ID-JI" }, + "ID-KB": { + countryCode: "ID", + subdivisionName: "Kalimantan Barat", + code: "ID-KB", + }, + "ID-KS": { + countryCode: "ID", + subdivisionName: "Kalimantan Selatan", + code: "ID-KS", + }, + "ID-KT": { + countryCode: "ID", + subdivisionName: "Kalimantan Tengah", + code: "ID-KT", + }, + "ID-KI": { + countryCode: "ID", + subdivisionName: "Kalimantan Timur", + code: "ID-KI", + }, + "ID-KU": { + countryCode: "ID", + subdivisionName: "Kalimantan Utara", + code: "ID-KU", + }, + "ID-BB": { + countryCode: "ID", + subdivisionName: "Kepulauan Bangka Belitung", + code: "ID-BB", + }, + "ID-KR": { + countryCode: "ID", + subdivisionName: "Kepulauan Riau", + code: "ID-KR", + }, + "ID-LA": { countryCode: "ID", subdivisionName: "Lampung", code: "ID-LA" }, + "ID-ML": { countryCode: "ID", subdivisionName: "Maluku", code: "ID-ML" }, + "ID-MU": { + countryCode: "ID", + subdivisionName: "Maluku Utara", + code: "ID-MU", + }, + "ID-NB": { + countryCode: "ID", + subdivisionName: "Nusa Tenggara Barat", + code: "ID-NB", + }, + "ID-NT": { + countryCode: "ID", + subdivisionName: "Nusa Tenggara Timur", + code: "ID-NT", + }, + "ID-PP": { countryCode: "ID", subdivisionName: "Papua", code: "ID-PP" }, + "ID-PB": { countryCode: "ID", subdivisionName: "Papua Barat", code: "ID-PB" }, + "ID-PE": { + countryCode: "ID", + subdivisionName: "Papua Pengunungan", + code: "ID-PE", + }, + "ID-PS": { + countryCode: "ID", + subdivisionName: "Papua Selatan", + code: "ID-PS", + }, + "ID-PT": { + countryCode: "ID", + subdivisionName: "Papua Tengah", + code: "ID-PT", + }, + "ID-RI": { countryCode: "ID", subdivisionName: "Riau", code: "ID-RI" }, + "ID-SR": { + countryCode: "ID", + subdivisionName: "Sulawesi Barat", + code: "ID-SR", + }, + "ID-SN": { + countryCode: "ID", + subdivisionName: "Sulawesi Selatan", + code: "ID-SN", + }, + "ID-ST": { + countryCode: "ID", + subdivisionName: "Sulawesi Tengah", + code: "ID-ST", + }, + "ID-SG": { + countryCode: "ID", + subdivisionName: "Sulawesi Tenggara", + code: "ID-SG", + }, + "ID-SA": { + countryCode: "ID", + subdivisionName: "Sulawesi Utara", + code: "ID-SA", + }, + "ID-SB": { + countryCode: "ID", + subdivisionName: "Sumatera Barat", + code: "ID-SB", + }, + "ID-SS": { + countryCode: "ID", + subdivisionName: "Sumatera Selatan", + code: "ID-SS", + }, + "ID-SU": { + countryCode: "ID", + subdivisionName: "Sumatera Utara", + code: "ID-SU", + }, + "ID-YO": { countryCode: "ID", subdivisionName: "Yogyakarta", code: "ID-YO" }, + "IE-CW": { countryCode: "IE", subdivisionName: "Carlow", code: "IE-CW" }, + "IE-CN": { countryCode: "IE", subdivisionName: "Cavan", code: "IE-CN" }, + "IE-CE": { countryCode: "IE", subdivisionName: "Clare", code: "IE-CE" }, + "IE-CO": { countryCode: "IE", subdivisionName: "Cork", code: "IE-CO" }, + "IE-DL": { countryCode: "IE", subdivisionName: "Donegal", code: "IE-DL" }, + "IE-D": { countryCode: "IE", subdivisionName: "Dublin", code: "IE-D" }, + "IE-G": { countryCode: "IE", subdivisionName: "Galway", code: "IE-G" }, + "IE-KY": { countryCode: "IE", subdivisionName: "Kerry", code: "IE-KY" }, + "IE-KE": { countryCode: "IE", subdivisionName: "Kildare", code: "IE-KE" }, + "IE-KK": { countryCode: "IE", subdivisionName: "Kilkenny", code: "IE-KK" }, + "IE-LS": { countryCode: "IE", subdivisionName: "Laois", code: "IE-LS" }, + "IE-LM": { countryCode: "IE", subdivisionName: "Leitrim", code: "IE-LM" }, + "IE-LK": { countryCode: "IE", subdivisionName: "Limerick", code: "IE-LK" }, + "IE-LD": { countryCode: "IE", subdivisionName: "Longford", code: "IE-LD" }, + "IE-LH": { countryCode: "IE", subdivisionName: "Louth", code: "IE-LH" }, + "IE-MO": { countryCode: "IE", subdivisionName: "Mayo", code: "IE-MO" }, + "IE-MH": { countryCode: "IE", subdivisionName: "Meath", code: "IE-MH" }, + "IE-MN": { countryCode: "IE", subdivisionName: "Monaghan", code: "IE-MN" }, + "IE-OY": { countryCode: "IE", subdivisionName: "Offaly", code: "IE-OY" }, + "IE-RN": { countryCode: "IE", subdivisionName: "Roscommon", code: "IE-RN" }, + "IE-SO": { countryCode: "IE", subdivisionName: "Sligo", code: "IE-SO" }, + "IE-TA": { countryCode: "IE", subdivisionName: "Tipperary", code: "IE-TA" }, + "IE-WD": { countryCode: "IE", subdivisionName: "Waterford", code: "IE-WD" }, + "IE-WH": { countryCode: "IE", subdivisionName: "Westmeath", code: "IE-WH" }, + "IE-WX": { countryCode: "IE", subdivisionName: "Wexford", code: "IE-WX" }, + "IE-WW": { countryCode: "IE", subdivisionName: "Wicklow", code: "IE-WW" }, + "IL-D": { countryCode: "IL", subdivisionName: "HaDarom", code: "IL-D" }, + "IL-M": { countryCode: "IL", subdivisionName: "HaMerkaz", code: "IL-M" }, + "IL-Z": { countryCode: "IL", subdivisionName: "HaTsafon", code: "IL-Z" }, + "IL-HA": { countryCode: "IL", subdivisionName: "Hefa", code: "IL-HA" }, + "IL-TA": { countryCode: "IL", subdivisionName: "Tel Aviv", code: "IL-TA" }, + "IL-JM": { + countryCode: "IL", + subdivisionName: "Yerushalayim", + code: "IL-JM", + }, + "IN-AN": { + countryCode: "IN", + subdivisionName: "Andaman and Nicobar Islands", + code: "IN-AN", + }, + "IN-AP": { + countryCode: "IN", + subdivisionName: "Andhra Pradesh", + code: "IN-AP", + }, + "IN-AR": { + countryCode: "IN", + subdivisionName: "Arunachal Pradesh", + code: "IN-AR", + }, + "IN-AS": { countryCode: "IN", subdivisionName: "Assam", code: "IN-AS" }, + "IN-BR": { countryCode: "IN", subdivisionName: "Bihar", code: "IN-BR" }, + "IN-CH": { countryCode: "IN", subdivisionName: "Chandigarh", code: "IN-CH" }, + "IN-CT": { + countryCode: "IN", + subdivisionName: "Chhattisgarh", + code: "IN-CT", + }, + "IN-DN": { + countryCode: "IN", + subdivisionName: "Dadra and Nagar Haveli", + code: "IN-DN", + }, + "IN-DH": { + countryCode: "IN", + subdivisionName: "Dadra and Nagar Haveli and Daman and Diu", + code: "IN-DH", + }, + "IN-DL": { countryCode: "IN", subdivisionName: "Delhi", code: "IN-DL" }, + "IN-GA": { countryCode: "IN", subdivisionName: "Goa", code: "IN-GA" }, + "IN-GJ": { countryCode: "IN", subdivisionName: "Gujarat", code: "IN-GJ" }, + "IN-HR": { countryCode: "IN", subdivisionName: "Haryana", code: "IN-HR" }, + "IN-HP": { + countryCode: "IN", + subdivisionName: "Himachal Pradesh", + code: "IN-HP", + }, + "IN-JK": { + countryCode: "IN", + subdivisionName: "Jammu and Kashmir", + code: "IN-JK", + }, + "IN-JH": { countryCode: "IN", subdivisionName: "Jharkhand", code: "IN-JH" }, + "IN-KA": { countryCode: "IN", subdivisionName: "Karnataka", code: "IN-KA" }, + "IN-KL": { countryCode: "IN", subdivisionName: "Kerala", code: "IN-KL" }, + "IN-LD": { countryCode: "IN", subdivisionName: "Lakshadweep", code: "IN-LD" }, + "IN-MP": { + countryCode: "IN", + subdivisionName: "Madhya Pradesh", + code: "IN-MP", + }, + "IN-MH": { countryCode: "IN", subdivisionName: "Maharashtra", code: "IN-MH" }, + "IN-MN": { countryCode: "IN", subdivisionName: "Manipur", code: "IN-MN" }, + "IN-ML": { countryCode: "IN", subdivisionName: "Meghalaya", code: "IN-ML" }, + "IN-MZ": { countryCode: "IN", subdivisionName: "Mizoram", code: "IN-MZ" }, + "IN-NL": { countryCode: "IN", subdivisionName: "Nagaland", code: "IN-NL" }, + "IN-OR": { countryCode: "IN", subdivisionName: "Odisha", code: "IN-OR" }, + "IN-PY": { countryCode: "IN", subdivisionName: "Puducherry", code: "IN-PY" }, + "IN-PB": { countryCode: "IN", subdivisionName: "Punjab", code: "IN-PB" }, + "IN-RJ": { countryCode: "IN", subdivisionName: "Rajasthan", code: "IN-RJ" }, + "IN-SK": { countryCode: "IN", subdivisionName: "Sikkim", code: "IN-SK" }, + "IN-TN": { countryCode: "IN", subdivisionName: "Tamil Nadu", code: "IN-TN" }, + "IN-TG": { countryCode: "IN", subdivisionName: "Telangana", code: "IN-TG" }, + "IN-TR": { countryCode: "IN", subdivisionName: "Tripura", code: "IN-TR" }, + "IN-UP": { + countryCode: "IN", + subdivisionName: "Uttar Pradesh", + code: "IN-UP", + }, + "IN-UT": { countryCode: "IN", subdivisionName: "Uttarakhand", code: "IN-UT" }, + "IN-WB": { countryCode: "IN", subdivisionName: "West Bengal", code: "IN-WB" }, + "IQ-AN": { countryCode: "IQ", subdivisionName: "Al Anbar", code: "IQ-AN" }, + "IQ-BA": { countryCode: "IQ", subdivisionName: "Al Basrah", code: "IQ-BA" }, + "IQ-MU": { countryCode: "IQ", subdivisionName: "Al Muthanna", code: "IQ-MU" }, + "IQ-QA": { + countryCode: "IQ", + subdivisionName: "Al Qadisiyah", + code: "IQ-QA", + }, + "IQ-NA": { countryCode: "IQ", subdivisionName: "An Najaf", code: "IQ-NA" }, + "IQ-AR": { countryCode: "IQ", subdivisionName: "Arbil", code: "IQ-AR" }, + "IQ-SU": { + countryCode: "IQ", + subdivisionName: "As Sulaymaniyah", + code: "IQ-SU", + }, + "IQ-BB": { countryCode: "IQ", subdivisionName: "Babil", code: "IQ-BB" }, + "IQ-BG": { countryCode: "IQ", subdivisionName: "Baghdad", code: "IQ-BG" }, + "IQ-DA": { countryCode: "IQ", subdivisionName: "Dahuk", code: "IQ-DA" }, + "IQ-DQ": { countryCode: "IQ", subdivisionName: "Dhi Qar", code: "IQ-DQ" }, + "IQ-DI": { countryCode: "IQ", subdivisionName: "Diyala", code: "IQ-DI" }, + "IQ-KA": { countryCode: "IQ", subdivisionName: "Karbala'", code: "IQ-KA" }, + "IQ-KI": { countryCode: "IQ", subdivisionName: "Kirkuk", code: "IQ-KI" }, + "IQ-MA": { countryCode: "IQ", subdivisionName: "Maysan", code: "IQ-MA" }, + "IQ-NI": { countryCode: "IQ", subdivisionName: "Ninawa", code: "IQ-NI" }, + "IQ-SD": { + countryCode: "IQ", + subdivisionName: "Salah ad Din", + code: "IQ-SD", + }, + "IQ-WA": { countryCode: "IQ", subdivisionName: "Wasit", code: "IQ-WA" }, + "IR-30": { countryCode: "IR", subdivisionName: "Alborz", code: "IR-30" }, + "IR-24": { countryCode: "IR", subdivisionName: "Ardabil", code: "IR-24" }, + "IR-04": { + countryCode: "IR", + subdivisionName: "Azarbayjan-e Gharbi", + code: "IR-04", + }, + "IR-03": { + countryCode: "IR", + subdivisionName: "Azarbayjan-e Sharqi", + code: "IR-03", + }, + "IR-18": { countryCode: "IR", subdivisionName: "Bushehr", code: "IR-18" }, + "IR-14": { + countryCode: "IR", + subdivisionName: "Chahar Mahal va Bakhtiari", + code: "IR-14", + }, + "IR-10": { countryCode: "IR", subdivisionName: "Esfahan", code: "IR-10" }, + "IR-07": { countryCode: "IR", subdivisionName: "Fars", code: "IR-07" }, + "IR-01": { countryCode: "IR", subdivisionName: "Gilan", code: "IR-01" }, + "IR-27": { countryCode: "IR", subdivisionName: "Golestan", code: "IR-27" }, + "IR-13": { countryCode: "IR", subdivisionName: "Hamadan", code: "IR-13" }, + "IR-22": { countryCode: "IR", subdivisionName: "Hormozgan", code: "IR-22" }, + "IR-16": { countryCode: "IR", subdivisionName: "Ilam", code: "IR-16" }, + "IR-08": { countryCode: "IR", subdivisionName: "Kerman", code: "IR-08" }, + "IR-05": { countryCode: "IR", subdivisionName: "Kermanshah", code: "IR-05" }, + "IR-29": { + countryCode: "IR", + subdivisionName: "Khorasan-e Jonubi", + code: "IR-29", + }, + "IR-09": { + countryCode: "IR", + subdivisionName: "Khorasan-e Razavi", + code: "IR-09", + }, + "IR-28": { + countryCode: "IR", + subdivisionName: "Khorasan-e Shomali", + code: "IR-28", + }, + "IR-06": { countryCode: "IR", subdivisionName: "Khuzestan", code: "IR-06" }, + "IR-17": { + countryCode: "IR", + subdivisionName: "Kohgiluyeh va Bowyer Ahmad", + code: "IR-17", + }, + "IR-12": { countryCode: "IR", subdivisionName: "Kordestan", code: "IR-12" }, + "IR-15": { countryCode: "IR", subdivisionName: "Lorestan", code: "IR-15" }, + "IR-00": { countryCode: "IR", subdivisionName: "Markazi", code: "IR-00" }, + "IR-02": { countryCode: "IR", subdivisionName: "Mazandaran", code: "IR-02" }, + "IR-26": { countryCode: "IR", subdivisionName: "Qazvin", code: "IR-26" }, + "IR-25": { countryCode: "IR", subdivisionName: "Qom", code: "IR-25" }, + "IR-20": { countryCode: "IR", subdivisionName: "Semnan", code: "IR-20" }, + "IR-11": { + countryCode: "IR", + subdivisionName: "Sistan va Baluchestan", + code: "IR-11", + }, + "IR-23": { countryCode: "IR", subdivisionName: "Tehran", code: "IR-23" }, + "IR-21": { countryCode: "IR", subdivisionName: "Yazd", code: "IR-21" }, + "IR-19": { countryCode: "IR", subdivisionName: "Zanjan", code: "IR-19" }, + "IS-7": { countryCode: "IS", subdivisionName: "Austurland", code: "IS-7" }, + "IS-1": { + countryCode: "IS", + subdivisionName: "Hofudborgarsvaedi", + code: "IS-1", + }, + "IS-6": { + countryCode: "IS", + subdivisionName: "Nordurland eystra", + code: "IS-6", + }, + "IS-5": { + countryCode: "IS", + subdivisionName: "Nordurland vestra", + code: "IS-5", + }, + "IS-8": { countryCode: "IS", subdivisionName: "Sudurland", code: "IS-8" }, + "IS-2": { countryCode: "IS", subdivisionName: "Sudurnes", code: "IS-2" }, + "IS-4": { countryCode: "IS", subdivisionName: "Vestfirdir", code: "IS-4" }, + "IS-3": { countryCode: "IS", subdivisionName: "Vesturland", code: "IS-3" }, + "IT-65": { countryCode: "IT", subdivisionName: "Abruzzo", code: "IT-65" }, + "IT-77": { countryCode: "IT", subdivisionName: "Basilicata", code: "IT-77" }, + "IT-78": { countryCode: "IT", subdivisionName: "Calabria", code: "IT-78" }, + "IT-72": { countryCode: "IT", subdivisionName: "Campania", code: "IT-72" }, + "IT-45": { + countryCode: "IT", + subdivisionName: "Emilia-Romagna", + code: "IT-45", + }, + "IT-36": { + countryCode: "IT", + subdivisionName: "Friuli-Venezia Giulia", + code: "IT-36", + }, + "IT-62": { countryCode: "IT", subdivisionName: "Lazio", code: "IT-62" }, + "IT-42": { countryCode: "IT", subdivisionName: "Liguria", code: "IT-42" }, + "IT-25": { countryCode: "IT", subdivisionName: "Lombardia", code: "IT-25" }, + "IT-57": { countryCode: "IT", subdivisionName: "Marche", code: "IT-57" }, + "IT-67": { countryCode: "IT", subdivisionName: "Molise", code: "IT-67" }, + "IT-21": { countryCode: "IT", subdivisionName: "Piemonte", code: "IT-21" }, + "IT-75": { countryCode: "IT", subdivisionName: "Puglia", code: "IT-75" }, + "IT-88": { countryCode: "IT", subdivisionName: "Sardegna", code: "IT-88" }, + "IT-82": { countryCode: "IT", subdivisionName: "Sicilia", code: "IT-82" }, + "IT-52": { countryCode: "IT", subdivisionName: "Toscana", code: "IT-52" }, + "IT-32": { + countryCode: "IT", + subdivisionName: "Trentino-Alto Adige", + code: "IT-32", + }, + "IT-55": { countryCode: "IT", subdivisionName: "Umbria", code: "IT-55" }, + "IT-23": { + countryCode: "IT", + subdivisionName: "Valle d'Aosta", + code: "IT-23", + }, + "IT-34": { countryCode: "IT", subdivisionName: "Veneto", code: "IT-34" }, + "JM-13": { countryCode: "JM", subdivisionName: "Clarendon", code: "JM-13" }, + "JM-09": { countryCode: "JM", subdivisionName: "Hanover", code: "JM-09" }, + "JM-01": { countryCode: "JM", subdivisionName: "Kingston", code: "JM-01" }, + "JM-12": { countryCode: "JM", subdivisionName: "Manchester", code: "JM-12" }, + "JM-04": { countryCode: "JM", subdivisionName: "Portland", code: "JM-04" }, + "JM-02": { + countryCode: "JM", + subdivisionName: "Saint Andrew", + code: "JM-02", + }, + "JM-06": { countryCode: "JM", subdivisionName: "Saint Ann", code: "JM-06" }, + "JM-14": { + countryCode: "JM", + subdivisionName: "Saint Catherine", + code: "JM-14", + }, + "JM-11": { + countryCode: "JM", + subdivisionName: "Saint Elizabeth", + code: "JM-11", + }, + "JM-08": { countryCode: "JM", subdivisionName: "Saint James", code: "JM-08" }, + "JM-05": { countryCode: "JM", subdivisionName: "Saint Mary", code: "JM-05" }, + "JM-03": { + countryCode: "JM", + subdivisionName: "Saint Thomas", + code: "JM-03", + }, + "JM-07": { countryCode: "JM", subdivisionName: "Trelawny", code: "JM-07" }, + "JM-10": { + countryCode: "JM", + subdivisionName: "Westmoreland", + code: "JM-10", + }, + "JO-AJ": { countryCode: "JO", subdivisionName: "'Ajlun", code: "JO-AJ" }, + "JO-AQ": { countryCode: "JO", subdivisionName: "Al 'Aqabah", code: "JO-AQ" }, + "JO-AM": { countryCode: "JO", subdivisionName: "Al 'Asimah", code: "JO-AM" }, + "JO-BA": { countryCode: "JO", subdivisionName: "Al Balqa'", code: "JO-BA" }, + "JO-KA": { countryCode: "JO", subdivisionName: "Al Karak", code: "JO-KA" }, + "JO-MA": { countryCode: "JO", subdivisionName: "Al Mafraq", code: "JO-MA" }, + "JO-AT": { countryCode: "JO", subdivisionName: "At Tafilah", code: "JO-AT" }, + "JO-AZ": { countryCode: "JO", subdivisionName: "Az Zarqa'", code: "JO-AZ" }, + "JO-IR": { countryCode: "JO", subdivisionName: "Irbid", code: "JO-IR" }, + "JO-JA": { countryCode: "JO", subdivisionName: "Jarash", code: "JO-JA" }, + "JO-MN": { countryCode: "JO", subdivisionName: "Ma'an", code: "JO-MN" }, + "JO-MD": { countryCode: "JO", subdivisionName: "Madaba", code: "JO-MD" }, + "JP-23": { countryCode: "JP", subdivisionName: "Aichi", code: "JP-23" }, + "JP-05": { countryCode: "JP", subdivisionName: "Akita", code: "JP-05" }, + "JP-02": { countryCode: "JP", subdivisionName: "Aomori", code: "JP-02" }, + "JP-12": { countryCode: "JP", subdivisionName: "Chiba", code: "JP-12" }, + "JP-38": { countryCode: "JP", subdivisionName: "Ehime", code: "JP-38" }, + "JP-18": { countryCode: "JP", subdivisionName: "Fukui", code: "JP-18" }, + "JP-40": { countryCode: "JP", subdivisionName: "Fukuoka", code: "JP-40" }, + "JP-07": { countryCode: "JP", subdivisionName: "Fukushima", code: "JP-07" }, + "JP-21": { countryCode: "JP", subdivisionName: "Gifu", code: "JP-21" }, + "JP-10": { countryCode: "JP", subdivisionName: "Gunma", code: "JP-10" }, + "JP-34": { countryCode: "JP", subdivisionName: "Hiroshima", code: "JP-34" }, + "JP-01": { countryCode: "JP", subdivisionName: "Hokkaido", code: "JP-01" }, + "JP-28": { countryCode: "JP", subdivisionName: "Hyogo", code: "JP-28" }, + "JP-08": { countryCode: "JP", subdivisionName: "Ibaraki", code: "JP-08" }, + "JP-17": { countryCode: "JP", subdivisionName: "Ishikawa", code: "JP-17" }, + "JP-03": { countryCode: "JP", subdivisionName: "Iwate", code: "JP-03" }, + "JP-37": { countryCode: "JP", subdivisionName: "Kagawa", code: "JP-37" }, + "JP-46": { countryCode: "JP", subdivisionName: "Kagoshima", code: "JP-46" }, + "JP-14": { countryCode: "JP", subdivisionName: "Kanagawa", code: "JP-14" }, + "JP-39": { countryCode: "JP", subdivisionName: "Kochi", code: "JP-39" }, + "JP-43": { countryCode: "JP", subdivisionName: "Kumamoto", code: "JP-43" }, + "JP-26": { countryCode: "JP", subdivisionName: "Kyoto", code: "JP-26" }, + "JP-24": { countryCode: "JP", subdivisionName: "Mie", code: "JP-24" }, + "JP-04": { countryCode: "JP", subdivisionName: "Miyagi", code: "JP-04" }, + "JP-45": { countryCode: "JP", subdivisionName: "Miyazaki", code: "JP-45" }, + "JP-20": { countryCode: "JP", subdivisionName: "Nagano", code: "JP-20" }, + "JP-42": { countryCode: "JP", subdivisionName: "Nagasaki", code: "JP-42" }, + "JP-29": { countryCode: "JP", subdivisionName: "Nara", code: "JP-29" }, + "JP-15": { countryCode: "JP", subdivisionName: "Niigata", code: "JP-15" }, + "JP-44": { countryCode: "JP", subdivisionName: "Oita", code: "JP-44" }, + "JP-33": { countryCode: "JP", subdivisionName: "Okayama", code: "JP-33" }, + "JP-47": { countryCode: "JP", subdivisionName: "Okinawa", code: "JP-47" }, + "JP-27": { countryCode: "JP", subdivisionName: "Osaka", code: "JP-27" }, + "JP-41": { countryCode: "JP", subdivisionName: "Saga", code: "JP-41" }, + "JP-11": { countryCode: "JP", subdivisionName: "Saitama", code: "JP-11" }, + "JP-25": { countryCode: "JP", subdivisionName: "Shiga", code: "JP-25" }, + "JP-32": { countryCode: "JP", subdivisionName: "Shimane", code: "JP-32" }, + "JP-22": { countryCode: "JP", subdivisionName: "Shizuoka", code: "JP-22" }, + "JP-09": { countryCode: "JP", subdivisionName: "Tochigi", code: "JP-09" }, + "JP-36": { countryCode: "JP", subdivisionName: "Tokushima", code: "JP-36" }, + "JP-13": { countryCode: "JP", subdivisionName: "Tokyo", code: "JP-13" }, + "JP-31": { countryCode: "JP", subdivisionName: "Tottori", code: "JP-31" }, + "JP-16": { countryCode: "JP", subdivisionName: "Toyama", code: "JP-16" }, + "JP-30": { countryCode: "JP", subdivisionName: "Wakayama", code: "JP-30" }, + "JP-06": { countryCode: "JP", subdivisionName: "Yamagata", code: "JP-06" }, + "JP-35": { countryCode: "JP", subdivisionName: "Yamaguchi", code: "JP-35" }, + "JP-19": { countryCode: "JP", subdivisionName: "Yamanashi", code: "JP-19" }, + "KE-01": { countryCode: "KE", subdivisionName: "Baringo", code: "KE-01" }, + "KE-02": { countryCode: "KE", subdivisionName: "Bomet", code: "KE-02" }, + "KE-03": { countryCode: "KE", subdivisionName: "Bungoma", code: "KE-03" }, + "KE-04": { countryCode: "KE", subdivisionName: "Busia", code: "KE-04" }, + "KE-05": { + countryCode: "KE", + subdivisionName: "Elgeyo/Marakwet", + code: "KE-05", + }, + "KE-06": { countryCode: "KE", subdivisionName: "Embu", code: "KE-06" }, + "KE-07": { countryCode: "KE", subdivisionName: "Garissa", code: "KE-07" }, + "KE-08": { countryCode: "KE", subdivisionName: "Homa Bay", code: "KE-08" }, + "KE-09": { countryCode: "KE", subdivisionName: "Isiolo", code: "KE-09" }, + "KE-10": { countryCode: "KE", subdivisionName: "Kajiado", code: "KE-10" }, + "KE-11": { countryCode: "KE", subdivisionName: "Kakamega", code: "KE-11" }, + "KE-12": { countryCode: "KE", subdivisionName: "Kericho", code: "KE-12" }, + "KE-13": { countryCode: "KE", subdivisionName: "Kiambu", code: "KE-13" }, + "KE-14": { countryCode: "KE", subdivisionName: "Kilifi", code: "KE-14" }, + "KE-15": { countryCode: "KE", subdivisionName: "Kirinyaga", code: "KE-15" }, + "KE-16": { countryCode: "KE", subdivisionName: "Kisii", code: "KE-16" }, + "KE-17": { countryCode: "KE", subdivisionName: "Kisumu", code: "KE-17" }, + "KE-18": { countryCode: "KE", subdivisionName: "Kitui", code: "KE-18" }, + "KE-19": { countryCode: "KE", subdivisionName: "Kwale", code: "KE-19" }, + "KE-20": { countryCode: "KE", subdivisionName: "Laikipia", code: "KE-20" }, + "KE-21": { countryCode: "KE", subdivisionName: "Lamu", code: "KE-21" }, + "KE-22": { countryCode: "KE", subdivisionName: "Machakos", code: "KE-22" }, + "KE-23": { countryCode: "KE", subdivisionName: "Makueni", code: "KE-23" }, + "KE-24": { countryCode: "KE", subdivisionName: "Mandera", code: "KE-24" }, + "KE-25": { countryCode: "KE", subdivisionName: "Marsabit", code: "KE-25" }, + "KE-26": { countryCode: "KE", subdivisionName: "Meru", code: "KE-26" }, + "KE-27": { countryCode: "KE", subdivisionName: "Migori", code: "KE-27" }, + "KE-28": { countryCode: "KE", subdivisionName: "Mombasa", code: "KE-28" }, + "KE-29": { countryCode: "KE", subdivisionName: "Murang'a", code: "KE-29" }, + "KE-30": { + countryCode: "KE", + subdivisionName: "Nairobi City", + code: "KE-30", + }, + "KE-31": { countryCode: "KE", subdivisionName: "Nakuru", code: "KE-31" }, + "KE-32": { countryCode: "KE", subdivisionName: "Nandi", code: "KE-32" }, + "KE-33": { countryCode: "KE", subdivisionName: "Narok", code: "KE-33" }, + "KE-34": { countryCode: "KE", subdivisionName: "Nyamira", code: "KE-34" }, + "KE-35": { countryCode: "KE", subdivisionName: "Nyandarua", code: "KE-35" }, + "KE-36": { countryCode: "KE", subdivisionName: "Nyeri", code: "KE-36" }, + "KE-37": { countryCode: "KE", subdivisionName: "Samburu", code: "KE-37" }, + "KE-38": { countryCode: "KE", subdivisionName: "Siaya", code: "KE-38" }, + "KE-39": { + countryCode: "KE", + subdivisionName: "Taita/Taveta", + code: "KE-39", + }, + "KE-40": { countryCode: "KE", subdivisionName: "Tana River", code: "KE-40" }, + "KE-41": { + countryCode: "KE", + subdivisionName: "Tharaka-Nithi", + code: "KE-41", + }, + "KE-42": { countryCode: "KE", subdivisionName: "Trans Nzoia", code: "KE-42" }, + "KE-43": { countryCode: "KE", subdivisionName: "Turkana", code: "KE-43" }, + "KE-44": { countryCode: "KE", subdivisionName: "Uasin Gishu", code: "KE-44" }, + "KE-45": { countryCode: "KE", subdivisionName: "Vihiga", code: "KE-45" }, + "KE-46": { countryCode: "KE", subdivisionName: "Wajir", code: "KE-46" }, + "KE-47": { countryCode: "KE", subdivisionName: "West Pokot", code: "KE-47" }, + "KG-B": { countryCode: "KG", subdivisionName: "Batken", code: "KG-B" }, + "KG-GB": { + countryCode: "KG", + subdivisionName: "Bishkek Shaary", + code: "KG-GB", + }, + "KG-C": { countryCode: "KG", subdivisionName: "Chuy", code: "KG-C" }, + "KG-J": { countryCode: "KG", subdivisionName: "Jalal-Abad", code: "KG-J" }, + "KG-N": { countryCode: "KG", subdivisionName: "Naryn", code: "KG-N" }, + "KG-GO": { countryCode: "KG", subdivisionName: "Osh Shaary", code: "KG-GO" }, + "KG-T": { countryCode: "KG", subdivisionName: "Talas", code: "KG-T" }, + "KG-Y": { countryCode: "KG", subdivisionName: "Ysyk-Kol", code: "KG-Y" }, + "KH-2": { countryCode: "KH", subdivisionName: "Baat Dambang", code: "KH-2" }, + "KH-1": { + countryCode: "KH", + subdivisionName: "Banteay Mean Choay", + code: "KH-1", + }, + "KH-23": { countryCode: "KH", subdivisionName: "Kaeb", code: "KH-23" }, + "KH-3": { countryCode: "KH", subdivisionName: "Kampong Chaam", code: "KH-3" }, + "KH-4": { + countryCode: "KH", + subdivisionName: "Kampong Chhnang", + code: "KH-4", + }, + "KH-5": { countryCode: "KH", subdivisionName: "Kampong Spueu", code: "KH-5" }, + "KH-6": { countryCode: "KH", subdivisionName: "Kampong Thum", code: "KH-6" }, + "KH-7": { countryCode: "KH", subdivisionName: "Kampot", code: "KH-7" }, + "KH-8": { countryCode: "KH", subdivisionName: "Kandaal", code: "KH-8" }, + "KH-10": { countryCode: "KH", subdivisionName: "Kracheh", code: "KH-10" }, + "KH-11": { countryCode: "KH", subdivisionName: "Mondol Kiri", code: "KH-11" }, + "KH-24": { countryCode: "KH", subdivisionName: "Pailin", code: "KH-24" }, + "KH-12": { countryCode: "KH", subdivisionName: "Phnom Penh", code: "KH-12" }, + "KH-15": { countryCode: "KH", subdivisionName: "Pousaat", code: "KH-15" }, + "KH-18": { + countryCode: "KH", + subdivisionName: "Preah Sihanouk", + code: "KH-18", + }, + "KH-13": { + countryCode: "KH", + subdivisionName: "Preah Vihear", + code: "KH-13", + }, + "KH-14": { countryCode: "KH", subdivisionName: "Prey Veaeng", code: "KH-14" }, + "KH-17": { countryCode: "KH", subdivisionName: "Siem Reab", code: "KH-17" }, + "KH-19": { + countryCode: "KH", + subdivisionName: "Stueng Traeng", + code: "KH-19", + }, + "KH-20": { countryCode: "KH", subdivisionName: "Svaay Rieng", code: "KH-20" }, + "KH-21": { countryCode: "KH", subdivisionName: "Taakaev", code: "KH-21" }, + "KI-G": { + countryCode: "KI", + subdivisionName: "Gilbert Islands", + code: "KI-G", + }, + "KI-L": { countryCode: "KI", subdivisionName: "Line Islands", code: "KI-L" }, + "KM-G": { countryCode: "KM", subdivisionName: "Grande Comore", code: "KM-G" }, + "KM-M": { countryCode: "KM", subdivisionName: "Moheli", code: "KM-M" }, + "KN-01": { + countryCode: "KN", + subdivisionName: "Christ Church Nichola Town", + code: "KN-01", + }, + "KN-02": { + countryCode: "KN", + subdivisionName: "Saint Anne Sandy Point", + code: "KN-02", + }, + "KN-03": { + countryCode: "KN", + subdivisionName: "Saint George Basseterre", + code: "KN-03", + }, + "KN-05": { + countryCode: "KN", + subdivisionName: "Saint James Windward", + code: "KN-05", + }, + "KN-06": { + countryCode: "KN", + subdivisionName: "Saint John Capisterre", + code: "KN-06", + }, + "KN-07": { + countryCode: "KN", + subdivisionName: "Saint John Figtree", + code: "KN-07", + }, + "KN-08": { + countryCode: "KN", + subdivisionName: "Saint Mary Cayon", + code: "KN-08", + }, + "KN-09": { + countryCode: "KN", + subdivisionName: "Saint Paul Capisterre", + code: "KN-09", + }, + "KN-10": { + countryCode: "KN", + subdivisionName: "Saint Paul Charlestown", + code: "KN-10", + }, + "KN-11": { + countryCode: "KN", + subdivisionName: "Saint Peter Basseterre", + code: "KN-11", + }, + "KN-12": { + countryCode: "KN", + subdivisionName: "Saint Thomas Lowland", + code: "KN-12", + }, + "KN-13": { + countryCode: "KN", + subdivisionName: "Saint Thomas Middle Island", + code: "KN-13", + }, + "KN-15": { + countryCode: "KN", + subdivisionName: "Trinity Palmetto Point", + code: "KN-15", + }, + "KP-01": { countryCode: "KP", subdivisionName: "P'yongyang", code: "KP-01" }, + "KR-26": { + countryCode: "KR", + subdivisionName: "Busan-gwangyeoksi", + code: "KR-26", + }, + "KR-43": { + countryCode: "KR", + subdivisionName: "Chungcheongbuk-do", + code: "KR-43", + }, + "KR-44": { + countryCode: "KR", + subdivisionName: "Chungcheongnam-do", + code: "KR-44", + }, + "KR-27": { + countryCode: "KR", + subdivisionName: "Daegu-gwangyeoksi", + code: "KR-27", + }, + "KR-30": { + countryCode: "KR", + subdivisionName: "Daejeon-gwangyeoksi", + code: "KR-30", + }, + "KR-42": { countryCode: "KR", subdivisionName: "Gangwon-do", code: "KR-42" }, + "KR-29": { + countryCode: "KR", + subdivisionName: "Gwangju-gwangyeoksi", + code: "KR-29", + }, + "KR-41": { countryCode: "KR", subdivisionName: "Gyeonggi-do", code: "KR-41" }, + "KR-47": { + countryCode: "KR", + subdivisionName: "Gyeongsangbuk-do", + code: "KR-47", + }, + "KR-48": { + countryCode: "KR", + subdivisionName: "Gyeongsangnam-do", + code: "KR-48", + }, + "KR-28": { + countryCode: "KR", + subdivisionName: "Incheon-gwangyeoksi", + code: "KR-28", + }, + "KR-49": { + countryCode: "KR", + subdivisionName: "Jeju-teukbyeoljachido", + code: "KR-49", + }, + "KR-45": { + countryCode: "KR", + subdivisionName: "Jeollabuk-do", + code: "KR-45", + }, + "KR-46": { + countryCode: "KR", + subdivisionName: "Jeollanam-do", + code: "KR-46", + }, + "KR-11": { + countryCode: "KR", + subdivisionName: "Seoul-teukbyeolsi", + code: "KR-11", + }, + "KR-31": { + countryCode: "KR", + subdivisionName: "Ulsan-gwangyeoksi", + code: "KR-31", + }, + "KW-KU": { countryCode: "KW", subdivisionName: "Al 'Asimah", code: "KW-KU" }, + "KW-AH": { countryCode: "KW", subdivisionName: "Al Ahmadi", code: "KW-AH" }, + "KW-FA": { + countryCode: "KW", + subdivisionName: "Al Farwaniyah", + code: "KW-FA", + }, + "KW-JA": { countryCode: "KW", subdivisionName: "Al Jahra'", code: "KW-JA" }, + "KW-HA": { countryCode: "KW", subdivisionName: "Hawalli", code: "KW-HA" }, + "KW-MU": { + countryCode: "KW", + subdivisionName: "Mubarak al Kabir", + code: "KW-MU", + }, + "KZ-10": { countryCode: "KZ", subdivisionName: "Abay oblysy", code: "KZ-10" }, + "KZ-75": { countryCode: "KZ", subdivisionName: "Almaty", code: "KZ-75" }, + "KZ-19": { + countryCode: "KZ", + subdivisionName: "Almaty oblysy", + code: "KZ-19", + }, + "KZ-11": { + countryCode: "KZ", + subdivisionName: "Aqmola oblysy", + code: "KZ-11", + }, + "KZ-15": { + countryCode: "KZ", + subdivisionName: "Aqtobe oblysy", + code: "KZ-15", + }, + "KZ-71": { countryCode: "KZ", subdivisionName: "Astana", code: "KZ-71" }, + "KZ-23": { + countryCode: "KZ", + subdivisionName: "Atyrau oblysy", + code: "KZ-23", + }, + "KZ-27": { + countryCode: "KZ", + subdivisionName: "Batys Qazaqstan oblysy", + code: "KZ-27", + }, + "KZ-47": { + countryCode: "KZ", + subdivisionName: "Mangghystau oblysy", + code: "KZ-47", + }, + "KZ-55": { + countryCode: "KZ", + subdivisionName: "Pavlodar oblysy", + code: "KZ-55", + }, + "KZ-35": { + countryCode: "KZ", + subdivisionName: "Qaraghandy oblysy", + code: "KZ-35", + }, + "KZ-39": { + countryCode: "KZ", + subdivisionName: "Qostanay oblysy", + code: "KZ-39", + }, + "KZ-43": { + countryCode: "KZ", + subdivisionName: "Qyzylorda oblysy", + code: "KZ-43", + }, + "KZ-63": { + countryCode: "KZ", + subdivisionName: "Shyghys Qazaqstan oblysy", + code: "KZ-63", + }, + "KZ-79": { countryCode: "KZ", subdivisionName: "Shymkent", code: "KZ-79" }, + "KZ-59": { + countryCode: "KZ", + subdivisionName: "Soltustik Qazaqstan oblysy", + code: "KZ-59", + }, + "KZ-61": { + countryCode: "KZ", + subdivisionName: "Turkistan oblysy", + code: "KZ-61", + }, + "KZ-62": { + countryCode: "KZ", + subdivisionName: "Ulytau oblysy", + code: "KZ-62", + }, + "KZ-31": { + countryCode: "KZ", + subdivisionName: "Zhambyl oblysy", + code: "KZ-31", + }, + "KZ-33": { + countryCode: "KZ", + subdivisionName: "Zhetisu oblysy", + code: "KZ-33", + }, + "LA-AT": { countryCode: "LA", subdivisionName: "Attapu", code: "LA-AT" }, + "LA-BK": { countryCode: "LA", subdivisionName: "Bokeo", code: "LA-BK" }, + "LA-BL": { countryCode: "LA", subdivisionName: "Bolikhamxai", code: "LA-BL" }, + "LA-CH": { countryCode: "LA", subdivisionName: "Champasak", code: "LA-CH" }, + "LA-KH": { countryCode: "LA", subdivisionName: "Khammouan", code: "LA-KH" }, + "LA-LP": { + countryCode: "LA", + subdivisionName: "Louangphabang", + code: "LA-LP", + }, + "LA-OU": { countryCode: "LA", subdivisionName: "Oudomxai", code: "LA-OU" }, + "LA-PH": { countryCode: "LA", subdivisionName: "Phongsali", code: "LA-PH" }, + "LA-SV": { countryCode: "LA", subdivisionName: "Savannakhet", code: "LA-SV" }, + "LA-VI": { countryCode: "LA", subdivisionName: "Viangchan", code: "LA-VI" }, + "LA-XA": { countryCode: "LA", subdivisionName: "Xaignabouli", code: "LA-XA" }, + "LA-XE": { countryCode: "LA", subdivisionName: "Xekong", code: "LA-XE" }, + "LA-XI": { + countryCode: "LA", + subdivisionName: "Xiangkhouang", + code: "LA-XI", + }, + "LB-AK": { countryCode: "LB", subdivisionName: "Aakkar", code: "LB-AK" }, + "LB-BH": { + countryCode: "LB", + subdivisionName: "Baalbek-Hermel", + code: "LB-BH", + }, + "LB-BI": { countryCode: "LB", subdivisionName: "Beqaa", code: "LB-BI" }, + "LB-BA": { countryCode: "LB", subdivisionName: "Beyrouth", code: "LB-BA" }, + "LB-AS": { countryCode: "LB", subdivisionName: "Liban-Nord", code: "LB-AS" }, + "LB-JA": { countryCode: "LB", subdivisionName: "Liban-Sud", code: "LB-JA" }, + "LB-JL": { countryCode: "LB", subdivisionName: "Mont-Liban", code: "LB-JL" }, + "LB-NA": { countryCode: "LB", subdivisionName: "Nabatiye", code: "LB-NA" }, + "LC-01": { + countryCode: "LC", + subdivisionName: "Anse la Raye", + code: "LC-01", + }, + "LC-02": { countryCode: "LC", subdivisionName: "Castries", code: "LC-02" }, + "LC-03": { countryCode: "LC", subdivisionName: "Choiseul", code: "LC-03" }, + "LC-05": { countryCode: "LC", subdivisionName: "Dennery", code: "LC-05" }, + "LC-06": { countryCode: "LC", subdivisionName: "Gros Islet", code: "LC-06" }, + "LC-07": { countryCode: "LC", subdivisionName: "Laborie", code: "LC-07" }, + "LC-08": { countryCode: "LC", subdivisionName: "Micoud", code: "LC-08" }, + "LC-10": { countryCode: "LC", subdivisionName: "Soufriere", code: "LC-10" }, + "LC-11": { countryCode: "LC", subdivisionName: "Vieux Fort", code: "LC-11" }, + "LI-01": { countryCode: "LI", subdivisionName: "Balzers", code: "LI-01" }, + "LI-02": { countryCode: "LI", subdivisionName: "Eschen", code: "LI-02" }, + "LI-03": { countryCode: "LI", subdivisionName: "Gamprin", code: "LI-03" }, + "LI-04": { countryCode: "LI", subdivisionName: "Mauren", code: "LI-04" }, + "LI-06": { countryCode: "LI", subdivisionName: "Ruggell", code: "LI-06" }, + "LI-07": { countryCode: "LI", subdivisionName: "Schaan", code: "LI-07" }, + "LI-09": { countryCode: "LI", subdivisionName: "Triesen", code: "LI-09" }, + "LI-10": { countryCode: "LI", subdivisionName: "Triesenberg", code: "LI-10" }, + "LI-11": { countryCode: "LI", subdivisionName: "Vaduz", code: "LI-11" }, + "LK-2": { + countryCode: "LK", + subdivisionName: "Central Province", + code: "LK-2", + }, + "LK-5": { + countryCode: "LK", + subdivisionName: "Eastern Province", + code: "LK-5", + }, + "LK-7": { + countryCode: "LK", + subdivisionName: "North Central Province", + code: "LK-7", + }, + "LK-6": { + countryCode: "LK", + subdivisionName: "North Western Province", + code: "LK-6", + }, + "LK-4": { + countryCode: "LK", + subdivisionName: "Northern Province", + code: "LK-4", + }, + "LK-9": { + countryCode: "LK", + subdivisionName: "Sabaragamuwa Province", + code: "LK-9", + }, + "LK-3": { + countryCode: "LK", + subdivisionName: "Southern Province", + code: "LK-3", + }, + "LK-8": { countryCode: "LK", subdivisionName: "Uva Province", code: "LK-8" }, + "LK-1": { + countryCode: "LK", + subdivisionName: "Western Province", + code: "LK-1", + }, + "LR-BM": { countryCode: "LR", subdivisionName: "Bomi", code: "LR-BM" }, + "LR-BG": { countryCode: "LR", subdivisionName: "Bong", code: "LR-BG" }, + "LR-CM": { + countryCode: "LR", + subdivisionName: "Grand Cape Mount", + code: "LR-CM", + }, + "LR-GG": { countryCode: "LR", subdivisionName: "Grand Gedeh", code: "LR-GG" }, + "LR-MG": { countryCode: "LR", subdivisionName: "Margibi", code: "LR-MG" }, + "LR-MO": { countryCode: "LR", subdivisionName: "Montserrado", code: "LR-MO" }, + "LR-RI": { countryCode: "LR", subdivisionName: "River Cess", code: "LR-RI" }, + "LR-SI": { countryCode: "LR", subdivisionName: "Sinoe", code: "LR-SI" }, + "LS-D": { countryCode: "LS", subdivisionName: "Berea", code: "LS-D" }, + "LS-B": { countryCode: "LS", subdivisionName: "Botha-Bothe", code: "LS-B" }, + "LS-C": { countryCode: "LS", subdivisionName: "Leribe", code: "LS-C" }, + "LS-E": { countryCode: "LS", subdivisionName: "Mafeteng", code: "LS-E" }, + "LS-A": { countryCode: "LS", subdivisionName: "Maseru", code: "LS-A" }, + "LS-F": { countryCode: "LS", subdivisionName: "Mohale's Hoek", code: "LS-F" }, + "LS-J": { countryCode: "LS", subdivisionName: "Mokhotlong", code: "LS-J" }, + "LS-H": { countryCode: "LS", subdivisionName: "Qacha's Nek", code: "LS-H" }, + "LS-G": { countryCode: "LS", subdivisionName: "Quthing", code: "LS-G" }, + "LS-K": { countryCode: "LS", subdivisionName: "Thaba-Tseka", code: "LS-K" }, + "LT-AL": { + countryCode: "LT", + subdivisionName: "Alytaus apskritis", + code: "LT-AL", + }, + "LT-KU": { + countryCode: "LT", + subdivisionName: "Kauno apskritis", + code: "LT-KU", + }, + "LT-KL": { + countryCode: "LT", + subdivisionName: "Klaipedos apskritis", + code: "LT-KL", + }, + "LT-MR": { + countryCode: "LT", + subdivisionName: "Marijampoles apskritis", + code: "LT-MR", + }, + "LT-PN": { + countryCode: "LT", + subdivisionName: "Panevezio apskritis", + code: "LT-PN", + }, + "LT-SA": { + countryCode: "LT", + subdivisionName: "Siauliu apskritis", + code: "LT-SA", + }, + "LT-TA": { + countryCode: "LT", + subdivisionName: "Taurages apskritis", + code: "LT-TA", + }, + "LT-TE": { + countryCode: "LT", + subdivisionName: "Telsiu apskritis", + code: "LT-TE", + }, + "LT-UT": { + countryCode: "LT", + subdivisionName: "Utenos apskritis", + code: "LT-UT", + }, + "LT-VL": { + countryCode: "LT", + subdivisionName: "Vilniaus apskritis", + code: "LT-VL", + }, + "LU-CA": { countryCode: "LU", subdivisionName: "Capellen", code: "LU-CA" }, + "LU-CL": { countryCode: "LU", subdivisionName: "Clervaux", code: "LU-CL" }, + "LU-DI": { countryCode: "LU", subdivisionName: "Diekirch", code: "LU-DI" }, + "LU-EC": { countryCode: "LU", subdivisionName: "Echternach", code: "LU-EC" }, + "LU-ES": { + countryCode: "LU", + subdivisionName: "Esch-sur-Alzette", + code: "LU-ES", + }, + "LU-GR": { + countryCode: "LU", + subdivisionName: "Grevenmacher", + code: "LU-GR", + }, + "LU-LU": { countryCode: "LU", subdivisionName: "Luxembourg", code: "LU-LU" }, + "LU-ME": { countryCode: "LU", subdivisionName: "Mersch", code: "LU-ME" }, + "LU-RD": { countryCode: "LU", subdivisionName: "Redange", code: "LU-RD" }, + "LU-RM": { countryCode: "LU", subdivisionName: "Remich", code: "LU-RM" }, + "LU-VD": { countryCode: "LU", subdivisionName: "Vianden", code: "LU-VD" }, + "LU-WI": { countryCode: "LU", subdivisionName: "Wiltz", code: "LU-WI" }, + "LV-011": { + countryCode: "LV", + subdivisionName: "Adazu novads", + code: "LV-011", + }, + "LV-002": { + countryCode: "LV", + subdivisionName: "Aizkraukles novads", + code: "LV-002", + }, + "LV-007": { + countryCode: "LV", + subdivisionName: "Aluksnes novads", + code: "LV-007", + }, + "LV-111": { + countryCode: "LV", + subdivisionName: "Augsdaugavas novads", + code: "LV-111", + }, + "LV-015": { + countryCode: "LV", + subdivisionName: "Balvu novads", + code: "LV-015", + }, + "LV-016": { + countryCode: "LV", + subdivisionName: "Bauskas novads", + code: "LV-016", + }, + "LV-022": { + countryCode: "LV", + subdivisionName: "Cesu novads", + code: "LV-022", + }, + "LV-DGV": { + countryCode: "LV", + subdivisionName: "Daugavpils", + code: "LV-DGV", + }, + "LV-112": { + countryCode: "LV", + subdivisionName: "Dienvidkurzemes novads", + code: "LV-112", + }, + "LV-026": { + countryCode: "LV", + subdivisionName: "Dobeles novads", + code: "LV-026", + }, + "LV-033": { + countryCode: "LV", + subdivisionName: "Gulbenes novads", + code: "LV-033", + }, + "LV-042": { + countryCode: "LV", + subdivisionName: "Jekabpils novads", + code: "LV-042", + }, + "LV-JEL": { countryCode: "LV", subdivisionName: "Jelgava", code: "LV-JEL" }, + "LV-041": { + countryCode: "LV", + subdivisionName: "Jelgavas novads", + code: "LV-041", + }, + "LV-JUR": { countryCode: "LV", subdivisionName: "Jurmala", code: "LV-JUR" }, + "LV-052": { + countryCode: "LV", + subdivisionName: "Kekavas novads", + code: "LV-052", + }, + "LV-047": { + countryCode: "LV", + subdivisionName: "Kraslavas novads", + code: "LV-047", + }, + "LV-050": { + countryCode: "LV", + subdivisionName: "Kuldigas novads", + code: "LV-050", + }, + "LV-LPX": { countryCode: "LV", subdivisionName: "Liepaja", code: "LV-LPX" }, + "LV-054": { + countryCode: "LV", + subdivisionName: "Limbazu novads", + code: "LV-054", + }, + "LV-056": { + countryCode: "LV", + subdivisionName: "Livanu novads", + code: "LV-056", + }, + "LV-058": { + countryCode: "LV", + subdivisionName: "Ludzas novads", + code: "LV-058", + }, + "LV-059": { + countryCode: "LV", + subdivisionName: "Madonas novads", + code: "LV-059", + }, + "LV-062": { + countryCode: "LV", + subdivisionName: "Marupes novads", + code: "LV-062", + }, + "LV-067": { + countryCode: "LV", + subdivisionName: "Ogres novads", + code: "LV-067", + }, + "LV-068": { + countryCode: "LV", + subdivisionName: "Olaines novads", + code: "LV-068", + }, + "LV-073": { + countryCode: "LV", + subdivisionName: "Preilu novads", + code: "LV-073", + }, + "LV-077": { + countryCode: "LV", + subdivisionName: "Rezeknes novads", + code: "LV-077", + }, + "LV-RIX": { countryCode: "LV", subdivisionName: "Riga", code: "LV-RIX" }, + "LV-080": { + countryCode: "LV", + subdivisionName: "Ropazu novads", + code: "LV-080", + }, + "LV-087": { + countryCode: "LV", + subdivisionName: "Salaspils novads", + code: "LV-087", + }, + "LV-088": { + countryCode: "LV", + subdivisionName: "Saldus novads", + code: "LV-088", + }, + "LV-089": { + countryCode: "LV", + subdivisionName: "Saulkrastu novads", + code: "LV-089", + }, + "LV-091": { + countryCode: "LV", + subdivisionName: "Siguldas novads", + code: "LV-091", + }, + "LV-094": { + countryCode: "LV", + subdivisionName: "Smiltenes novads", + code: "LV-094", + }, + "LV-097": { + countryCode: "LV", + subdivisionName: "Talsu novads", + code: "LV-097", + }, + "LV-099": { + countryCode: "LV", + subdivisionName: "Tukuma novads", + code: "LV-099", + }, + "LV-101": { + countryCode: "LV", + subdivisionName: "Valkas novads", + code: "LV-101", + }, + "LV-113": { + countryCode: "LV", + subdivisionName: "Valmieras novads", + code: "LV-113", + }, + "LV-102": { + countryCode: "LV", + subdivisionName: "Varaklanu novads", + code: "LV-102", + }, + "LV-106": { + countryCode: "LV", + subdivisionName: "Ventspils novads", + code: "LV-106", + }, + "LY-BU": { countryCode: "LY", subdivisionName: "Al Butnan", code: "LY-BU" }, + "LY-JA": { + countryCode: "LY", + subdivisionName: "Al Jabal al Akhdar", + code: "LY-JA", + }, + "LY-JG": { + countryCode: "LY", + subdivisionName: "Al Jabal al Gharbi", + code: "LY-JG", + }, + "LY-JI": { countryCode: "LY", subdivisionName: "Al Jafarah", code: "LY-JI" }, + "LY-JU": { countryCode: "LY", subdivisionName: "Al Jufrah", code: "LY-JU" }, + "LY-KF": { countryCode: "LY", subdivisionName: "Al Kufrah", code: "LY-KF" }, + "LY-MJ": { countryCode: "LY", subdivisionName: "Al Marj", code: "LY-MJ" }, + "LY-MB": { countryCode: "LY", subdivisionName: "Al Marqab", code: "LY-MB" }, + "LY-WA": { countryCode: "LY", subdivisionName: "Al Wahat", code: "LY-WA" }, + "LY-NQ": { + countryCode: "LY", + subdivisionName: "An Nuqat al Khams", + code: "LY-NQ", + }, + "LY-ZA": { countryCode: "LY", subdivisionName: "Az Zawiyah", code: "LY-ZA" }, + "LY-BA": { countryCode: "LY", subdivisionName: "Banghazi", code: "LY-BA" }, + "LY-DR": { countryCode: "LY", subdivisionName: "Darnah", code: "LY-DR" }, + "LY-MI": { countryCode: "LY", subdivisionName: "Misratah", code: "LY-MI" }, + "LY-MQ": { countryCode: "LY", subdivisionName: "Murzuq", code: "LY-MQ" }, + "LY-NL": { countryCode: "LY", subdivisionName: "Nalut", code: "LY-NL" }, + "LY-SB": { countryCode: "LY", subdivisionName: "Sabha", code: "LY-SB" }, + "LY-SR": { countryCode: "LY", subdivisionName: "Surt", code: "LY-SR" }, + "LY-TB": { countryCode: "LY", subdivisionName: "Tarabulus", code: "LY-TB" }, + "LY-WS": { + countryCode: "LY", + subdivisionName: "Wadi ash Shati'", + code: "LY-WS", + }, + "MA-05": { + countryCode: "MA", + subdivisionName: "Beni-Mellal-Khenifra", + code: "MA-05", + }, + "MA-06": { + countryCode: "MA", + subdivisionName: "Casablanca-Settat", + code: "MA-06", + }, + "MA-08": { + countryCode: "MA", + subdivisionName: "Draa-Tafilalet", + code: "MA-08", + }, + "MA-03": { countryCode: "MA", subdivisionName: "Fes- Meknes", code: "MA-03" }, + "MA-10": { + countryCode: "MA", + subdivisionName: "Guelmim-Oued Noun (EH-partial)", + code: "MA-10", + }, + "MA-02": { countryCode: "MA", subdivisionName: "L'Oriental", code: "MA-02" }, + "MA-11": { + countryCode: "MA", + subdivisionName: "Laayoune-Sakia El Hamra (EH-partial)", + code: "MA-11", + }, + "MA-07": { + countryCode: "MA", + subdivisionName: "Marrakech-Safi", + code: "MA-07", + }, + "MA-04": { + countryCode: "MA", + subdivisionName: "Rabat-Sale-Kenitra", + code: "MA-04", + }, + "MA-09": { countryCode: "MA", subdivisionName: "Souss-Massa", code: "MA-09" }, + "MA-01": { + countryCode: "MA", + subdivisionName: "Tanger-Tetouan-Al Hoceima", + code: "MA-01", + }, + "MC-FO": { countryCode: "MC", subdivisionName: "Fontvieille", code: "MC-FO" }, + "MC-CO": { + countryCode: "MC", + subdivisionName: "La Condamine", + code: "MC-CO", + }, + "MC-MO": { + countryCode: "MC", + subdivisionName: "Monaco-Ville", + code: "MC-MO", + }, + "MC-MG": { countryCode: "MC", subdivisionName: "Moneghetti", code: "MC-MG" }, + "MC-MC": { countryCode: "MC", subdivisionName: "Monte-Carlo", code: "MC-MC" }, + "MC-SR": { countryCode: "MC", subdivisionName: "Saint-Roman", code: "MC-SR" }, + "MD-AN": { countryCode: "MD", subdivisionName: "Anenii Noi", code: "MD-AN" }, + "MD-BA": { countryCode: "MD", subdivisionName: "Balti", code: "MD-BA" }, + "MD-BS": { + countryCode: "MD", + subdivisionName: "Basarabeasca", + code: "MD-BS", + }, + "MD-BD": { countryCode: "MD", subdivisionName: "Bender", code: "MD-BD" }, + "MD-BR": { countryCode: "MD", subdivisionName: "Briceni", code: "MD-BR" }, + "MD-CA": { countryCode: "MD", subdivisionName: "Cahul", code: "MD-CA" }, + "MD-CL": { countryCode: "MD", subdivisionName: "Calarasi", code: "MD-CL" }, + "MD-CT": { countryCode: "MD", subdivisionName: "Cantemir", code: "MD-CT" }, + "MD-CS": { countryCode: "MD", subdivisionName: "Causeni", code: "MD-CS" }, + "MD-CU": { countryCode: "MD", subdivisionName: "Chisinau", code: "MD-CU" }, + "MD-CM": { countryCode: "MD", subdivisionName: "Cimislia", code: "MD-CM" }, + "MD-CR": { countryCode: "MD", subdivisionName: "Criuleni", code: "MD-CR" }, + "MD-DO": { countryCode: "MD", subdivisionName: "Donduseni", code: "MD-DO" }, + "MD-DR": { countryCode: "MD", subdivisionName: "Drochia", code: "MD-DR" }, + "MD-DU": { countryCode: "MD", subdivisionName: "Dubasari", code: "MD-DU" }, + "MD-ED": { countryCode: "MD", subdivisionName: "Edinet", code: "MD-ED" }, + "MD-FA": { countryCode: "MD", subdivisionName: "Falesti", code: "MD-FA" }, + "MD-FL": { countryCode: "MD", subdivisionName: "Floresti", code: "MD-FL" }, + "MD-GA": { + countryCode: "MD", + subdivisionName: "Gagauzia, Unitatea teritoriala autonoma", + code: "MD-GA", + }, + "MD-GL": { countryCode: "MD", subdivisionName: "Glodeni", code: "MD-GL" }, + "MD-HI": { countryCode: "MD", subdivisionName: "Hincesti", code: "MD-HI" }, + "MD-IA": { countryCode: "MD", subdivisionName: "Ialoveni", code: "MD-IA" }, + "MD-LE": { countryCode: "MD", subdivisionName: "Leova", code: "MD-LE" }, + "MD-NI": { countryCode: "MD", subdivisionName: "Nisporeni", code: "MD-NI" }, + "MD-OC": { countryCode: "MD", subdivisionName: "Ocnita", code: "MD-OC" }, + "MD-OR": { countryCode: "MD", subdivisionName: "Orhei", code: "MD-OR" }, + "MD-RE": { countryCode: "MD", subdivisionName: "Rezina", code: "MD-RE" }, + "MD-RI": { countryCode: "MD", subdivisionName: "Riscani", code: "MD-RI" }, + "MD-SI": { countryCode: "MD", subdivisionName: "Singerei", code: "MD-SI" }, + "MD-SD": { countryCode: "MD", subdivisionName: "Soldanesti", code: "MD-SD" }, + "MD-SO": { countryCode: "MD", subdivisionName: "Soroca", code: "MD-SO" }, + "MD-SV": { countryCode: "MD", subdivisionName: "Stefan Voda", code: "MD-SV" }, + "MD-SN": { + countryCode: "MD", + subdivisionName: "Stinga Nistrului, unitatea teritoriala din", + code: "MD-SN", + }, + "MD-ST": { countryCode: "MD", subdivisionName: "Straseni", code: "MD-ST" }, + "MD-TA": { countryCode: "MD", subdivisionName: "Taraclia", code: "MD-TA" }, + "MD-TE": { countryCode: "MD", subdivisionName: "Telenesti", code: "MD-TE" }, + "MD-UN": { countryCode: "MD", subdivisionName: "Ungheni", code: "MD-UN" }, + "ME-01": { countryCode: "ME", subdivisionName: "Andrijevica", code: "ME-01" }, + "ME-02": { countryCode: "ME", subdivisionName: "Bar", code: "ME-02" }, + "ME-03": { countryCode: "ME", subdivisionName: "Berane", code: "ME-03" }, + "ME-04": { + countryCode: "ME", + subdivisionName: "Bijelo Polje", + code: "ME-04", + }, + "ME-05": { countryCode: "ME", subdivisionName: "Budva", code: "ME-05" }, + "ME-06": { countryCode: "ME", subdivisionName: "Cetinje", code: "ME-06" }, + "ME-07": { countryCode: "ME", subdivisionName: "Danilovgrad", code: "ME-07" }, + "ME-08": { countryCode: "ME", subdivisionName: "Herceg-Novi", code: "ME-08" }, + "ME-09": { countryCode: "ME", subdivisionName: "Kolasin", code: "ME-09" }, + "ME-10": { countryCode: "ME", subdivisionName: "Kotor", code: "ME-10" }, + "ME-12": { countryCode: "ME", subdivisionName: "Niksic", code: "ME-12" }, + "ME-13": { countryCode: "ME", subdivisionName: "Plav", code: "ME-13" }, + "ME-14": { countryCode: "ME", subdivisionName: "Pljevlja", code: "ME-14" }, + "ME-15": { countryCode: "ME", subdivisionName: "Pluzine", code: "ME-15" }, + "ME-16": { countryCode: "ME", subdivisionName: "Podgorica", code: "ME-16" }, + "ME-17": { countryCode: "ME", subdivisionName: "Rozaje", code: "ME-17" }, + "ME-19": { countryCode: "ME", subdivisionName: "Tivat", code: "ME-19" }, + "ME-24": { countryCode: "ME", subdivisionName: "Tuzi", code: "ME-24" }, + "ME-20": { countryCode: "ME", subdivisionName: "Ulcinj", code: "ME-20" }, + "ME-21": { countryCode: "ME", subdivisionName: "Zabljak", code: "ME-21" }, + "MG-T": { countryCode: "MG", subdivisionName: "Antananarivo", code: "MG-T" }, + "MG-D": { countryCode: "MG", subdivisionName: "Antsiranana", code: "MG-D" }, + "MG-F": { countryCode: "MG", subdivisionName: "Fianarantsoa", code: "MG-F" }, + "MG-M": { countryCode: "MG", subdivisionName: "Mahajanga", code: "MG-M" }, + "MG-A": { countryCode: "MG", subdivisionName: "Toamasina", code: "MG-A" }, + "MG-U": { countryCode: "MG", subdivisionName: "Toliara", code: "MG-U" }, + "MH-KWA": { countryCode: "MH", subdivisionName: "Kwajalein", code: "MH-KWA" }, + "MH-MAJ": { countryCode: "MH", subdivisionName: "Majuro", code: "MH-MAJ" }, + "MK-201": { countryCode: "MK", subdivisionName: "Berovo", code: "MK-201" }, + "MK-501": { countryCode: "MK", subdivisionName: "Bitola", code: "MK-501" }, + "MK-401": { countryCode: "MK", subdivisionName: "Bogdanci", code: "MK-401" }, + "MK-601": { countryCode: "MK", subdivisionName: "Bogovinje", code: "MK-601" }, + "MK-402": { countryCode: "MK", subdivisionName: "Bosilovo", code: "MK-402" }, + "MK-602": { countryCode: "MK", subdivisionName: "Brvenica", code: "MK-602" }, + "MK-803": { countryCode: "MK", subdivisionName: "Butel", code: "MK-803" }, + "MK-109": { countryCode: "MK", subdivisionName: "Caska", code: "MK-109" }, + "MK-814": { countryCode: "MK", subdivisionName: "Centar", code: "MK-814" }, + "MK-210": { + countryCode: "MK", + subdivisionName: "Cesinovo-Oblesevo", + code: "MK-210", + }, + "MK-816": { + countryCode: "MK", + subdivisionName: "Cucer Sandevo", + code: "MK-816", + }, + "MK-303": { countryCode: "MK", subdivisionName: "Debar", code: "MK-303" }, + "MK-502": { + countryCode: "MK", + subdivisionName: "Demir Hisar", + code: "MK-502", + }, + "MK-103": { + countryCode: "MK", + subdivisionName: "Demir Kapija", + code: "MK-103", + }, + "MK-406": { countryCode: "MK", subdivisionName: "Dojran", code: "MK-406" }, + "MK-503": { countryCode: "MK", subdivisionName: "Dolneni", code: "MK-503" }, + "MK-804": { countryCode: "MK", subdivisionName: "Gazi Baba", code: "MK-804" }, + "MK-405": { countryCode: "MK", subdivisionName: "Gevgelija", code: "MK-405" }, + "MK-604": { countryCode: "MK", subdivisionName: "Gostivar", code: "MK-604" }, + "MK-102": { countryCode: "MK", subdivisionName: "Gradsko", code: "MK-102" }, + "MK-807": { countryCode: "MK", subdivisionName: "Ilinden", code: "MK-807" }, + "MK-606": { countryCode: "MK", subdivisionName: "Jegunovce", code: "MK-606" }, + "MK-205": { countryCode: "MK", subdivisionName: "Karbinci", code: "MK-205" }, + "MK-104": { countryCode: "MK", subdivisionName: "Kavadarci", code: "MK-104" }, + "MK-307": { countryCode: "MK", subdivisionName: "Kicevo", code: "MK-307" }, + "MK-809": { + countryCode: "MK", + subdivisionName: "Kisela Voda", + code: "MK-809", + }, + "MK-206": { countryCode: "MK", subdivisionName: "Kocani", code: "MK-206" }, + "MK-701": { countryCode: "MK", subdivisionName: "Kratovo", code: "MK-701" }, + "MK-702": { + countryCode: "MK", + subdivisionName: "Kriva Palanka", + code: "MK-702", + }, + "MK-504": { + countryCode: "MK", + subdivisionName: "Krivogastani", + code: "MK-504", + }, + "MK-505": { countryCode: "MK", subdivisionName: "Krusevo", code: "MK-505" }, + "MK-703": { countryCode: "MK", subdivisionName: "Kumanovo", code: "MK-703" }, + "MK-704": { countryCode: "MK", subdivisionName: "Lipkovo", code: "MK-704" }, + "MK-105": { countryCode: "MK", subdivisionName: "Lozovo", code: "MK-105" }, + "MK-207": { + countryCode: "MK", + subdivisionName: "Makedonska Kamenica", + code: "MK-207", + }, + "MK-308": { + countryCode: "MK", + subdivisionName: "Makedonski Brod", + code: "MK-308", + }, + "MK-607": { + countryCode: "MK", + subdivisionName: "Mavrovo i Rostusa", + code: "MK-607", + }, + "MK-506": { countryCode: "MK", subdivisionName: "Mogila", code: "MK-506" }, + "MK-106": { countryCode: "MK", subdivisionName: "Negotino", code: "MK-106" }, + "MK-507": { countryCode: "MK", subdivisionName: "Novaci", code: "MK-507" }, + "MK-408": { countryCode: "MK", subdivisionName: "Novo Selo", code: "MK-408" }, + "MK-310": { countryCode: "MK", subdivisionName: "Ohrid", code: "MK-310" }, + "MK-208": { countryCode: "MK", subdivisionName: "Pehcevo", code: "MK-208" }, + "MK-810": { countryCode: "MK", subdivisionName: "Petrovec", code: "MK-810" }, + "MK-311": { countryCode: "MK", subdivisionName: "Plasnica", code: "MK-311" }, + "MK-508": { countryCode: "MK", subdivisionName: "Prilep", code: "MK-508" }, + "MK-209": { countryCode: "MK", subdivisionName: "Probistip", code: "MK-209" }, + "MK-409": { countryCode: "MK", subdivisionName: "Radovis", code: "MK-409" }, + "MK-705": { countryCode: "MK", subdivisionName: "Rankovce", code: "MK-705" }, + "MK-509": { countryCode: "MK", subdivisionName: "Resen", code: "MK-509" }, + "MK-107": { countryCode: "MK", subdivisionName: "Rosoman", code: "MK-107" }, + "MK-811": { countryCode: "MK", subdivisionName: "Saraj", code: "MK-811" }, + "MK-812": { countryCode: "MK", subdivisionName: "Sopiste", code: "MK-812" }, + "MK-211": { countryCode: "MK", subdivisionName: "Stip", code: "MK-211" }, + "MK-312": { countryCode: "MK", subdivisionName: "Struga", code: "MK-312" }, + "MK-410": { countryCode: "MK", subdivisionName: "Strumica", code: "MK-410" }, + "MK-813": { + countryCode: "MK", + subdivisionName: "Studenicani", + code: "MK-813", + }, + "MK-108": { + countryCode: "MK", + subdivisionName: "Sveti Nikole", + code: "MK-108", + }, + "MK-608": { countryCode: "MK", subdivisionName: "Tearce", code: "MK-608" }, + "MK-609": { countryCode: "MK", subdivisionName: "Tetovo", code: "MK-609" }, + "MK-403": { countryCode: "MK", subdivisionName: "Valandovo", code: "MK-403" }, + "MK-404": { countryCode: "MK", subdivisionName: "Vasilevo", code: "MK-404" }, + "MK-101": { countryCode: "MK", subdivisionName: "Veles", code: "MK-101" }, + "MK-301": { countryCode: "MK", subdivisionName: "Vevcani", code: "MK-301" }, + "MK-202": { countryCode: "MK", subdivisionName: "Vinica", code: "MK-202" }, + "MK-806": { + countryCode: "MK", + subdivisionName: "Zelenikovo", + code: "MK-806", + }, + "MK-605": { countryCode: "MK", subdivisionName: "Zelino", code: "MK-605" }, + "ML-BKO": { countryCode: "ML", subdivisionName: "Bamako", code: "ML-BKO" }, + "ML-7": { countryCode: "ML", subdivisionName: "Gao", code: "ML-7" }, + "ML-1": { countryCode: "ML", subdivisionName: "Kayes", code: "ML-1" }, + "ML-8": { countryCode: "ML", subdivisionName: "Kidal", code: "ML-8" }, + "ML-2": { countryCode: "ML", subdivisionName: "Koulikoro", code: "ML-2" }, + "ML-5": { countryCode: "ML", subdivisionName: "Mopti", code: "ML-5" }, + "ML-4": { countryCode: "ML", subdivisionName: "Segou", code: "ML-4" }, + "ML-3": { countryCode: "ML", subdivisionName: "Sikasso", code: "ML-3" }, + "ML-6": { countryCode: "ML", subdivisionName: "Tombouctou", code: "ML-6" }, + "MM-07": { countryCode: "MM", subdivisionName: "Ayeyarwady", code: "MM-07" }, + "MM-02": { countryCode: "MM", subdivisionName: "Bago", code: "MM-02" }, + "MM-14": { countryCode: "MM", subdivisionName: "Chin", code: "MM-14" }, + "MM-11": { countryCode: "MM", subdivisionName: "Kachin", code: "MM-11" }, + "MM-12": { countryCode: "MM", subdivisionName: "Kayah", code: "MM-12" }, + "MM-13": { countryCode: "MM", subdivisionName: "Kayin", code: "MM-13" }, + "MM-03": { countryCode: "MM", subdivisionName: "Magway", code: "MM-03" }, + "MM-04": { countryCode: "MM", subdivisionName: "Mandalay", code: "MM-04" }, + "MM-15": { countryCode: "MM", subdivisionName: "Mon", code: "MM-15" }, + "MM-18": { countryCode: "MM", subdivisionName: "Nay Pyi Taw", code: "MM-18" }, + "MM-16": { countryCode: "MM", subdivisionName: "Rakhine", code: "MM-16" }, + "MM-01": { countryCode: "MM", subdivisionName: "Sagaing", code: "MM-01" }, + "MM-17": { countryCode: "MM", subdivisionName: "Shan", code: "MM-17" }, + "MM-05": { countryCode: "MM", subdivisionName: "Tanintharyi", code: "MM-05" }, + "MM-06": { countryCode: "MM", subdivisionName: "Yangon", code: "MM-06" }, + "MN-069": { + countryCode: "MN", + subdivisionName: "Bayanhongor", + code: "MN-069", + }, + "MN-037": { + countryCode: "MN", + subdivisionName: "Darhan uul", + code: "MN-037", + }, + "MN-061": { countryCode: "MN", subdivisionName: "Dornod", code: "MN-061" }, + "MN-065": { + countryCode: "MN", + subdivisionName: "Govi-Altay", + code: "MN-065", + }, + "MN-039": { countryCode: "MN", subdivisionName: "Hentiy", code: "MN-039" }, + "MN-043": { countryCode: "MN", subdivisionName: "Hovd", code: "MN-043" }, + "MN-053": { countryCode: "MN", subdivisionName: "Omnogovi", code: "MN-053" }, + "MN-055": { + countryCode: "MN", + subdivisionName: "Ovorhangay", + code: "MN-055", + }, + "MN-049": { countryCode: "MN", subdivisionName: "Selenge", code: "MN-049" }, + "MN-047": { countryCode: "MN", subdivisionName: "Tov", code: "MN-047" }, + "MN-1": { countryCode: "MN", subdivisionName: "Ulaanbaatar", code: "MN-1" }, + "MR-07": { countryCode: "MR", subdivisionName: "Adrar", code: "MR-07" }, + "MR-03": { countryCode: "MR", subdivisionName: "Assaba", code: "MR-03" }, + "MR-05": { countryCode: "MR", subdivisionName: "Brakna", code: "MR-05" }, + "MR-08": { + countryCode: "MR", + subdivisionName: "Dakhlet Nouadhibou", + code: "MR-08", + }, + "MR-04": { countryCode: "MR", subdivisionName: "Gorgol", code: "MR-04" }, + "MR-02": { + countryCode: "MR", + subdivisionName: "Hodh el Gharbi", + code: "MR-02", + }, + "MR-12": { countryCode: "MR", subdivisionName: "Inchiri", code: "MR-12" }, + "MR-13": { + countryCode: "MR", + subdivisionName: "Nouakchott Ouest", + code: "MR-13", + }, + "MR-09": { countryCode: "MR", subdivisionName: "Tagant", code: "MR-09" }, + "MR-11": { + countryCode: "MR", + subdivisionName: "Tiris Zemmour", + code: "MR-11", + }, + "MR-06": { countryCode: "MR", subdivisionName: "Trarza", code: "MR-06" }, + "MT-01": { countryCode: "MT", subdivisionName: "Attard", code: "MT-01" }, + "MT-02": { countryCode: "MT", subdivisionName: "Balzan", code: "MT-02" }, + "MT-03": { countryCode: "MT", subdivisionName: "Birgu", code: "MT-03" }, + "MT-04": { countryCode: "MT", subdivisionName: "Birkirkara", code: "MT-04" }, + "MT-05": { countryCode: "MT", subdivisionName: "Birzebbuga", code: "MT-05" }, + "MT-06": { countryCode: "MT", subdivisionName: "Bormla", code: "MT-06" }, + "MT-07": { countryCode: "MT", subdivisionName: "Dingli", code: "MT-07" }, + "MT-08": { countryCode: "MT", subdivisionName: "Fgura", code: "MT-08" }, + "MT-09": { countryCode: "MT", subdivisionName: "Floriana", code: "MT-09" }, + "MT-10": { countryCode: "MT", subdivisionName: "Fontana", code: "MT-10" }, + "MT-13": { countryCode: "MT", subdivisionName: "Ghajnsielem", code: "MT-13" }, + "MT-14": { countryCode: "MT", subdivisionName: "Gharb", code: "MT-14" }, + "MT-15": { countryCode: "MT", subdivisionName: "Gharghur", code: "MT-15" }, + "MT-16": { countryCode: "MT", subdivisionName: "Ghasri", code: "MT-16" }, + "MT-17": { countryCode: "MT", subdivisionName: "Ghaxaq", code: "MT-17" }, + "MT-11": { countryCode: "MT", subdivisionName: "Gudja", code: "MT-11" }, + "MT-12": { countryCode: "MT", subdivisionName: "Gzira", code: "MT-12" }, + "MT-18": { countryCode: "MT", subdivisionName: "Hamrun", code: "MT-18" }, + "MT-19": { countryCode: "MT", subdivisionName: "Iklin", code: "MT-19" }, + "MT-20": { countryCode: "MT", subdivisionName: "Isla", code: "MT-20" }, + "MT-21": { countryCode: "MT", subdivisionName: "Kalkara", code: "MT-21" }, + "MT-23": { countryCode: "MT", subdivisionName: "Kirkop", code: "MT-23" }, + "MT-24": { countryCode: "MT", subdivisionName: "Lija", code: "MT-24" }, + "MT-25": { countryCode: "MT", subdivisionName: "Luqa", code: "MT-25" }, + "MT-26": { countryCode: "MT", subdivisionName: "Marsa", code: "MT-26" }, + "MT-27": { countryCode: "MT", subdivisionName: "Marsaskala", code: "MT-27" }, + "MT-28": { countryCode: "MT", subdivisionName: "Marsaxlokk", code: "MT-28" }, + "MT-29": { countryCode: "MT", subdivisionName: "Mdina", code: "MT-29" }, + "MT-30": { countryCode: "MT", subdivisionName: "Mellieha", code: "MT-30" }, + "MT-31": { countryCode: "MT", subdivisionName: "Mgarr", code: "MT-31" }, + "MT-32": { countryCode: "MT", subdivisionName: "Mosta", code: "MT-32" }, + "MT-33": { countryCode: "MT", subdivisionName: "Mqabba", code: "MT-33" }, + "MT-34": { countryCode: "MT", subdivisionName: "Msida", code: "MT-34" }, + "MT-35": { countryCode: "MT", subdivisionName: "Mtarfa", code: "MT-35" }, + "MT-36": { countryCode: "MT", subdivisionName: "Munxar", code: "MT-36" }, + "MT-37": { countryCode: "MT", subdivisionName: "Nadur", code: "MT-37" }, + "MT-38": { countryCode: "MT", subdivisionName: "Naxxar", code: "MT-38" }, + "MT-39": { countryCode: "MT", subdivisionName: "Paola", code: "MT-39" }, + "MT-40": { countryCode: "MT", subdivisionName: "Pembroke", code: "MT-40" }, + "MT-41": { countryCode: "MT", subdivisionName: "Pieta", code: "MT-41" }, + "MT-42": { countryCode: "MT", subdivisionName: "Qala", code: "MT-42" }, + "MT-43": { countryCode: "MT", subdivisionName: "Qormi", code: "MT-43" }, + "MT-44": { countryCode: "MT", subdivisionName: "Qrendi", code: "MT-44" }, + "MT-45": { countryCode: "MT", subdivisionName: "Rabat Gozo", code: "MT-45" }, + "MT-46": { countryCode: "MT", subdivisionName: "Rabat Malta", code: "MT-46" }, + "MT-47": { countryCode: "MT", subdivisionName: "Safi", code: "MT-47" }, + "MT-49": { countryCode: "MT", subdivisionName: "Saint John", code: "MT-49" }, + "MT-48": { + countryCode: "MT", + subdivisionName: "Saint Julian's", + code: "MT-48", + }, + "MT-50": { + countryCode: "MT", + subdivisionName: "Saint Lawrence", + code: "MT-50", + }, + "MT-53": { + countryCode: "MT", + subdivisionName: "Saint Lucia's", + code: "MT-53", + }, + "MT-51": { + countryCode: "MT", + subdivisionName: "Saint Paul's Bay", + code: "MT-51", + }, + "MT-52": { countryCode: "MT", subdivisionName: "Sannat", code: "MT-52" }, + "MT-54": { + countryCode: "MT", + subdivisionName: "Santa Venera", + code: "MT-54", + }, + "MT-55": { countryCode: "MT", subdivisionName: "Siggiewi", code: "MT-55" }, + "MT-56": { countryCode: "MT", subdivisionName: "Sliema", code: "MT-56" }, + "MT-57": { countryCode: "MT", subdivisionName: "Swieqi", code: "MT-57" }, + "MT-58": { countryCode: "MT", subdivisionName: "Ta' Xbiex", code: "MT-58" }, + "MT-59": { countryCode: "MT", subdivisionName: "Tarxien", code: "MT-59" }, + "MT-60": { countryCode: "MT", subdivisionName: "Valletta", code: "MT-60" }, + "MT-61": { countryCode: "MT", subdivisionName: "Xaghra", code: "MT-61" }, + "MT-62": { countryCode: "MT", subdivisionName: "Xewkija", code: "MT-62" }, + "MT-63": { countryCode: "MT", subdivisionName: "Xghajra", code: "MT-63" }, + "MT-64": { countryCode: "MT", subdivisionName: "Zabbar", code: "MT-64" }, + "MT-65": { countryCode: "MT", subdivisionName: "Zebbug Gozo", code: "MT-65" }, + "MT-67": { countryCode: "MT", subdivisionName: "Zejtun", code: "MT-67" }, + "MT-68": { countryCode: "MT", subdivisionName: "Zurrieq", code: "MT-68" }, + "MU-BL": { countryCode: "MU", subdivisionName: "Black River", code: "MU-BL" }, + "MU-FL": { countryCode: "MU", subdivisionName: "Flacq", code: "MU-FL" }, + "MU-GP": { countryCode: "MU", subdivisionName: "Grand Port", code: "MU-GP" }, + "MU-MO": { countryCode: "MU", subdivisionName: "Moka", code: "MU-MO" }, + "MU-PA": { + countryCode: "MU", + subdivisionName: "Pamplemousses", + code: "MU-PA", + }, + "MU-PW": { + countryCode: "MU", + subdivisionName: "Plaines Wilhems", + code: "MU-PW", + }, + "MU-PL": { countryCode: "MU", subdivisionName: "Port Louis", code: "MU-PL" }, + "MU-RR": { + countryCode: "MU", + subdivisionName: "Riviere du Rempart", + code: "MU-RR", + }, + "MU-RO": { + countryCode: "MU", + subdivisionName: "Rodrigues Islands", + code: "MU-RO", + }, + "MU-SA": { countryCode: "MU", subdivisionName: "Savanne", code: "MU-SA" }, + "MV-01": { countryCode: "MV", subdivisionName: "Addu City", code: "MV-01" }, + "MV-03": { + countryCode: "MV", + subdivisionName: "Faadhippolhu", + code: "MV-03", + }, + "MV-04": { + countryCode: "MV", + subdivisionName: "Felidhu Atoll", + code: "MV-04", + }, + "MV-05": { + countryCode: "MV", + subdivisionName: "Hahdhunmathi", + code: "MV-05", + }, + "MV-MLE": { countryCode: "MV", subdivisionName: "Male", code: "MV-MLE" }, + "MV-12": { + countryCode: "MV", + subdivisionName: "Mulaku Atoll", + code: "MV-12", + }, + "MV-02": { + countryCode: "MV", + subdivisionName: "North Ari Atoll", + code: "MV-02", + }, + "MV-27": { + countryCode: "MV", + subdivisionName: "North Huvadhu Atoll", + code: "MV-27", + }, + "MV-13": { + countryCode: "MV", + subdivisionName: "North Maalhosmadulu", + code: "MV-13", + }, + "MV-07": { + countryCode: "MV", + subdivisionName: "North Thiladhunmathi", + code: "MV-07", + }, + "MV-00": { + countryCode: "MV", + subdivisionName: "South Ari Atoll", + code: "MV-00", + }, + "MV-28": { + countryCode: "MV", + subdivisionName: "South Huvadhu Atoll", + code: "MV-28", + }, + "MV-20": { + countryCode: "MV", + subdivisionName: "South Maalhosmadulu", + code: "MV-20", + }, + "MV-25": { + countryCode: "MV", + subdivisionName: "South Miladhunmadulu", + code: "MV-25", + }, + "MV-23": { + countryCode: "MV", + subdivisionName: "South Thiladhunmathi", + code: "MV-23", + }, + "MW-BA": { countryCode: "MW", subdivisionName: "Balaka", code: "MW-BA" }, + "MW-BL": { countryCode: "MW", subdivisionName: "Blantyre", code: "MW-BL" }, + "MW-CK": { countryCode: "MW", subdivisionName: "Chikwawa", code: "MW-CK" }, + "MW-CR": { countryCode: "MW", subdivisionName: "Chiradzulu", code: "MW-CR" }, + "MW-DE": { countryCode: "MW", subdivisionName: "Dedza", code: "MW-DE" }, + "MW-DO": { countryCode: "MW", subdivisionName: "Dowa", code: "MW-DO" }, + "MW-KR": { countryCode: "MW", subdivisionName: "Karonga", code: "MW-KR" }, + "MW-LI": { countryCode: "MW", subdivisionName: "Lilongwe", code: "MW-LI" }, + "MW-MH": { countryCode: "MW", subdivisionName: "Machinga", code: "MW-MH" }, + "MW-MG": { countryCode: "MW", subdivisionName: "Mangochi", code: "MW-MG" }, + "MW-MW": { countryCode: "MW", subdivisionName: "Mwanza", code: "MW-MW" }, + "MW-MZ": { countryCode: "MW", subdivisionName: "Mzimba", code: "MW-MZ" }, + "MW-NE": { countryCode: "MW", subdivisionName: "Neno", code: "MW-NE" }, + "MW-NK": { countryCode: "MW", subdivisionName: "Nkhotakota", code: "MW-NK" }, + "MW-NI": { countryCode: "MW", subdivisionName: "Ntchisi", code: "MW-NI" }, + "MW-SA": { countryCode: "MW", subdivisionName: "Salima", code: "MW-SA" }, + "MW-TH": { countryCode: "MW", subdivisionName: "Thyolo", code: "MW-TH" }, + "MW-ZO": { countryCode: "MW", subdivisionName: "Zomba", code: "MW-ZO" }, + "MX-AGU": { + countryCode: "MX", + subdivisionName: "Aguascalientes", + code: "MX-AGU", + }, + "MX-BCN": { + countryCode: "MX", + subdivisionName: "Baja California", + code: "MX-BCN", + }, + "MX-BCS": { + countryCode: "MX", + subdivisionName: "Baja California Sur", + code: "MX-BCS", + }, + "MX-CAM": { countryCode: "MX", subdivisionName: "Campeche", code: "MX-CAM" }, + "MX-CHP": { countryCode: "MX", subdivisionName: "Chiapas", code: "MX-CHP" }, + "MX-CHH": { countryCode: "MX", subdivisionName: "Chihuahua", code: "MX-CHH" }, + "MX-CMX": { + countryCode: "MX", + subdivisionName: "Ciudad de Mexico", + code: "MX-CMX", + }, + "MX-COA": { + countryCode: "MX", + subdivisionName: "Coahuila de Zaragoza", + code: "MX-COA", + }, + "MX-COL": { countryCode: "MX", subdivisionName: "Colima", code: "MX-COL" }, + "MX-DUR": { countryCode: "MX", subdivisionName: "Durango", code: "MX-DUR" }, + "MX-GUA": { + countryCode: "MX", + subdivisionName: "Guanajuato", + code: "MX-GUA", + }, + "MX-GRO": { countryCode: "MX", subdivisionName: "Guerrero", code: "MX-GRO" }, + "MX-HID": { countryCode: "MX", subdivisionName: "Hidalgo", code: "MX-HID" }, + "MX-JAL": { countryCode: "MX", subdivisionName: "Jalisco", code: "MX-JAL" }, + "MX-MEX": { countryCode: "MX", subdivisionName: "Mexico", code: "MX-MEX" }, + "MX-MIC": { + countryCode: "MX", + subdivisionName: "Michoacan de Ocampo", + code: "MX-MIC", + }, + "MX-MOR": { countryCode: "MX", subdivisionName: "Morelos", code: "MX-MOR" }, + "MX-NAY": { countryCode: "MX", subdivisionName: "Nayarit", code: "MX-NAY" }, + "MX-NLE": { + countryCode: "MX", + subdivisionName: "Nuevo Leon", + code: "MX-NLE", + }, + "MX-OAX": { countryCode: "MX", subdivisionName: "Oaxaca", code: "MX-OAX" }, + "MX-PUE": { countryCode: "MX", subdivisionName: "Puebla", code: "MX-PUE" }, + "MX-QUE": { countryCode: "MX", subdivisionName: "Queretaro", code: "MX-QUE" }, + "MX-ROO": { + countryCode: "MX", + subdivisionName: "Quintana Roo", + code: "MX-ROO", + }, + "MX-SLP": { + countryCode: "MX", + subdivisionName: "San Luis Potosi", + code: "MX-SLP", + }, + "MX-SIN": { countryCode: "MX", subdivisionName: "Sinaloa", code: "MX-SIN" }, + "MX-SON": { countryCode: "MX", subdivisionName: "Sonora", code: "MX-SON" }, + "MX-TAB": { countryCode: "MX", subdivisionName: "Tabasco", code: "MX-TAB" }, + "MX-TAM": { + countryCode: "MX", + subdivisionName: "Tamaulipas", + code: "MX-TAM", + }, + "MX-TLA": { countryCode: "MX", subdivisionName: "Tlaxcala", code: "MX-TLA" }, + "MX-VER": { + countryCode: "MX", + subdivisionName: "Veracruz de Ignacio de la Llave", + code: "MX-VER", + }, + "MX-YUC": { countryCode: "MX", subdivisionName: "Yucatan", code: "MX-YUC" }, + "MX-ZAC": { countryCode: "MX", subdivisionName: "Zacatecas", code: "MX-ZAC" }, + "MY-01": { countryCode: "MY", subdivisionName: "Johor", code: "MY-01" }, + "MY-02": { countryCode: "MY", subdivisionName: "Kedah", code: "MY-02" }, + "MY-03": { countryCode: "MY", subdivisionName: "Kelantan", code: "MY-03" }, + "MY-04": { countryCode: "MY", subdivisionName: "Melaka", code: "MY-04" }, + "MY-05": { + countryCode: "MY", + subdivisionName: "Negeri Sembilan", + code: "MY-05", + }, + "MY-06": { countryCode: "MY", subdivisionName: "Pahang", code: "MY-06" }, + "MY-08": { countryCode: "MY", subdivisionName: "Perak", code: "MY-08" }, + "MY-09": { countryCode: "MY", subdivisionName: "Perlis", code: "MY-09" }, + "MY-07": { + countryCode: "MY", + subdivisionName: "Pulau Pinang", + code: "MY-07", + }, + "MY-12": { countryCode: "MY", subdivisionName: "Sabah", code: "MY-12" }, + "MY-13": { countryCode: "MY", subdivisionName: "Sarawak", code: "MY-13" }, + "MY-10": { countryCode: "MY", subdivisionName: "Selangor", code: "MY-10" }, + "MY-11": { countryCode: "MY", subdivisionName: "Terengganu", code: "MY-11" }, + "MY-14": { + countryCode: "MY", + subdivisionName: "Wilayah Persekutuan Kuala Lumpur", + code: "MY-14", + }, + "MY-15": { + countryCode: "MY", + subdivisionName: "Wilayah Persekutuan Labuan", + code: "MY-15", + }, + "MY-16": { + countryCode: "MY", + subdivisionName: "Wilayah Persekutuan Putrajaya", + code: "MY-16", + }, + "MZ-P": { countryCode: "MZ", subdivisionName: "Cabo Delgado", code: "MZ-P" }, + "MZ-G": { countryCode: "MZ", subdivisionName: "Gaza", code: "MZ-G" }, + "MZ-I": { countryCode: "MZ", subdivisionName: "Inhambane", code: "MZ-I" }, + "MZ-B": { countryCode: "MZ", subdivisionName: "Manica", code: "MZ-B" }, + "MZ-L": { countryCode: "MZ", subdivisionName: "Maputo", code: "MZ-L" }, + "MZ-N": { countryCode: "MZ", subdivisionName: "Nampula", code: "MZ-N" }, + "MZ-A": { countryCode: "MZ", subdivisionName: "Niassa", code: "MZ-A" }, + "MZ-S": { countryCode: "MZ", subdivisionName: "Sofala", code: "MZ-S" }, + "MZ-T": { countryCode: "MZ", subdivisionName: "Tete", code: "MZ-T" }, + "MZ-Q": { countryCode: "MZ", subdivisionName: "Zambezia", code: "MZ-Q" }, + "NA-ER": { countryCode: "NA", subdivisionName: "Erongo", code: "NA-ER" }, + "NA-HA": { countryCode: "NA", subdivisionName: "Hardap", code: "NA-HA" }, + "NA-KA": { countryCode: "NA", subdivisionName: "Karas", code: "NA-KA" }, + "NA-KE": { + countryCode: "NA", + subdivisionName: "Kavango East", + code: "NA-KE", + }, + "NA-KW": { + countryCode: "NA", + subdivisionName: "Kavango West", + code: "NA-KW", + }, + "NA-KH": { countryCode: "NA", subdivisionName: "Khomas", code: "NA-KH" }, + "NA-KU": { countryCode: "NA", subdivisionName: "Kunene", code: "NA-KU" }, + "NA-OW": { countryCode: "NA", subdivisionName: "Ohangwena", code: "NA-OW" }, + "NA-OH": { countryCode: "NA", subdivisionName: "Omaheke", code: "NA-OH" }, + "NA-OS": { countryCode: "NA", subdivisionName: "Omusati", code: "NA-OS" }, + "NA-ON": { countryCode: "NA", subdivisionName: "Oshana", code: "NA-ON" }, + "NA-OT": { countryCode: "NA", subdivisionName: "Oshikoto", code: "NA-OT" }, + "NA-OD": { + countryCode: "NA", + subdivisionName: "Otjozondjupa", + code: "NA-OD", + }, + "NA-CA": { countryCode: "NA", subdivisionName: "Zambezi", code: "NA-CA" }, + "NE-1": { countryCode: "NE", subdivisionName: "Agadez", code: "NE-1" }, + "NE-2": { countryCode: "NE", subdivisionName: "Diffa", code: "NE-2" }, + "NE-3": { countryCode: "NE", subdivisionName: "Dosso", code: "NE-3" }, + "NE-4": { countryCode: "NE", subdivisionName: "Maradi", code: "NE-4" }, + "NE-8": { countryCode: "NE", subdivisionName: "Niamey", code: "NE-8" }, + "NE-5": { countryCode: "NE", subdivisionName: "Tahoua", code: "NE-5" }, + "NE-6": { countryCode: "NE", subdivisionName: "Tillaberi", code: "NE-6" }, + "NE-7": { countryCode: "NE", subdivisionName: "Zinder", code: "NE-7" }, + "NG-AB": { countryCode: "NG", subdivisionName: "Abia", code: "NG-AB" }, + "NG-FC": { + countryCode: "NG", + subdivisionName: "Abuja Federal Capital Territory", + code: "NG-FC", + }, + "NG-AD": { countryCode: "NG", subdivisionName: "Adamawa", code: "NG-AD" }, + "NG-AK": { countryCode: "NG", subdivisionName: "Akwa Ibom", code: "NG-AK" }, + "NG-AN": { countryCode: "NG", subdivisionName: "Anambra", code: "NG-AN" }, + "NG-BA": { countryCode: "NG", subdivisionName: "Bauchi", code: "NG-BA" }, + "NG-BY": { countryCode: "NG", subdivisionName: "Bayelsa", code: "NG-BY" }, + "NG-BE": { countryCode: "NG", subdivisionName: "Benue", code: "NG-BE" }, + "NG-BO": { countryCode: "NG", subdivisionName: "Borno", code: "NG-BO" }, + "NG-CR": { countryCode: "NG", subdivisionName: "Cross River", code: "NG-CR" }, + "NG-DE": { countryCode: "NG", subdivisionName: "Delta", code: "NG-DE" }, + "NG-EB": { countryCode: "NG", subdivisionName: "Ebonyi", code: "NG-EB" }, + "NG-ED": { countryCode: "NG", subdivisionName: "Edo", code: "NG-ED" }, + "NG-EK": { countryCode: "NG", subdivisionName: "Ekiti", code: "NG-EK" }, + "NG-EN": { countryCode: "NG", subdivisionName: "Enugu", code: "NG-EN" }, + "NG-GO": { countryCode: "NG", subdivisionName: "Gombe", code: "NG-GO" }, + "NG-IM": { countryCode: "NG", subdivisionName: "Imo", code: "NG-IM" }, + "NG-JI": { countryCode: "NG", subdivisionName: "Jigawa", code: "NG-JI" }, + "NG-KD": { countryCode: "NG", subdivisionName: "Kaduna", code: "NG-KD" }, + "NG-KN": { countryCode: "NG", subdivisionName: "Kano", code: "NG-KN" }, + "NG-KT": { countryCode: "NG", subdivisionName: "Katsina", code: "NG-KT" }, + "NG-KE": { countryCode: "NG", subdivisionName: "Kebbi", code: "NG-KE" }, + "NG-KO": { countryCode: "NG", subdivisionName: "Kogi", code: "NG-KO" }, + "NG-KW": { countryCode: "NG", subdivisionName: "Kwara", code: "NG-KW" }, + "NG-LA": { countryCode: "NG", subdivisionName: "Lagos", code: "NG-LA" }, + "NG-NA": { countryCode: "NG", subdivisionName: "Nasarawa", code: "NG-NA" }, + "NG-NI": { countryCode: "NG", subdivisionName: "Niger", code: "NG-NI" }, + "NG-OG": { countryCode: "NG", subdivisionName: "Ogun", code: "NG-OG" }, + "NG-ON": { countryCode: "NG", subdivisionName: "Ondo", code: "NG-ON" }, + "NG-OS": { countryCode: "NG", subdivisionName: "Osun", code: "NG-OS" }, + "NG-OY": { countryCode: "NG", subdivisionName: "Oyo", code: "NG-OY" }, + "NG-PL": { countryCode: "NG", subdivisionName: "Plateau", code: "NG-PL" }, + "NG-RI": { countryCode: "NG", subdivisionName: "Rivers", code: "NG-RI" }, + "NG-SO": { countryCode: "NG", subdivisionName: "Sokoto", code: "NG-SO" }, + "NG-TA": { countryCode: "NG", subdivisionName: "Taraba", code: "NG-TA" }, + "NG-YO": { countryCode: "NG", subdivisionName: "Yobe", code: "NG-YO" }, + "NG-ZA": { countryCode: "NG", subdivisionName: "Zamfara", code: "NG-ZA" }, + "NI-BO": { countryCode: "NI", subdivisionName: "Boaco", code: "NI-BO" }, + "NI-CA": { countryCode: "NI", subdivisionName: "Carazo", code: "NI-CA" }, + "NI-CI": { countryCode: "NI", subdivisionName: "Chinandega", code: "NI-CI" }, + "NI-CO": { countryCode: "NI", subdivisionName: "Chontales", code: "NI-CO" }, + "NI-AN": { + countryCode: "NI", + subdivisionName: "Costa Caribe Norte", + code: "NI-AN", + }, + "NI-AS": { + countryCode: "NI", + subdivisionName: "Costa Caribe Sur", + code: "NI-AS", + }, + "NI-ES": { countryCode: "NI", subdivisionName: "Esteli", code: "NI-ES" }, + "NI-GR": { countryCode: "NI", subdivisionName: "Granada", code: "NI-GR" }, + "NI-JI": { countryCode: "NI", subdivisionName: "Jinotega", code: "NI-JI" }, + "NI-LE": { countryCode: "NI", subdivisionName: "Leon", code: "NI-LE" }, + "NI-MD": { countryCode: "NI", subdivisionName: "Madriz", code: "NI-MD" }, + "NI-MN": { countryCode: "NI", subdivisionName: "Managua", code: "NI-MN" }, + "NI-MS": { countryCode: "NI", subdivisionName: "Masaya", code: "NI-MS" }, + "NI-MT": { countryCode: "NI", subdivisionName: "Matagalpa", code: "NI-MT" }, + "NI-NS": { + countryCode: "NI", + subdivisionName: "Nueva Segovia", + code: "NI-NS", + }, + "NI-SJ": { + countryCode: "NI", + subdivisionName: "Rio San Juan", + code: "NI-SJ", + }, + "NI-RI": { countryCode: "NI", subdivisionName: "Rivas", code: "NI-RI" }, + "NL-DR": { countryCode: "NL", subdivisionName: "Drenthe", code: "NL-DR" }, + "NL-FL": { countryCode: "NL", subdivisionName: "Flevoland", code: "NL-FL" }, + "NL-FR": { countryCode: "NL", subdivisionName: "Fryslan", code: "NL-FR" }, + "NL-GE": { countryCode: "NL", subdivisionName: "Gelderland", code: "NL-GE" }, + "NL-GR": { countryCode: "NL", subdivisionName: "Groningen", code: "NL-GR" }, + "NL-LI": { countryCode: "NL", subdivisionName: "Limburg", code: "NL-LI" }, + "NL-NB": { + countryCode: "NL", + subdivisionName: "Noord-Brabant", + code: "NL-NB", + }, + "NL-NH": { + countryCode: "NL", + subdivisionName: "Noord-Holland", + code: "NL-NH", + }, + "NL-OV": { countryCode: "NL", subdivisionName: "Overijssel", code: "NL-OV" }, + "NL-UT": { countryCode: "NL", subdivisionName: "Utrecht", code: "NL-UT" }, + "NL-ZE": { countryCode: "NL", subdivisionName: "Zeeland", code: "NL-ZE" }, + "NL-ZH": { + countryCode: "NL", + subdivisionName: "Zuid-Holland", + code: "NL-ZH", + }, + "NO-42": { countryCode: "NO", subdivisionName: "Agder", code: "NO-42" }, + "NO-34": { countryCode: "NO", subdivisionName: "Innlandet", code: "NO-34" }, + "NO-15": { + countryCode: "NO", + subdivisionName: "More og Romsdal", + code: "NO-15", + }, + "NO-18": { countryCode: "NO", subdivisionName: "Nordland", code: "NO-18" }, + "NO-03": { countryCode: "NO", subdivisionName: "Oslo", code: "NO-03" }, + "NO-11": { countryCode: "NO", subdivisionName: "Rogaland", code: "NO-11" }, + "NO-54": { + countryCode: "NO", + subdivisionName: "Troms og Finnmark", + code: "NO-54", + }, + "NO-50": { countryCode: "NO", subdivisionName: "Trondelag", code: "NO-50" }, + "NO-38": { + countryCode: "NO", + subdivisionName: "Vestfold og Telemark", + code: "NO-38", + }, + "NO-46": { countryCode: "NO", subdivisionName: "Vestland", code: "NO-46" }, + "NO-30": { countryCode: "NO", subdivisionName: "Viken", code: "NO-30" }, + "NP-BA": { countryCode: "NP", subdivisionName: "Bagmati", code: "NP-BA" }, + "NP-BH": { countryCode: "NP", subdivisionName: "Bheri", code: "NP-BH" }, + "NP-DH": { countryCode: "NP", subdivisionName: "Dhawalagiri", code: "NP-DH" }, + "NP-GA": { countryCode: "NP", subdivisionName: "Gandaki", code: "NP-GA" }, + "NP-JA": { countryCode: "NP", subdivisionName: "Janakpur", code: "NP-JA" }, + "NP-KA": { countryCode: "NP", subdivisionName: "Karnali", code: "NP-KA" }, + "NP-KO": { countryCode: "NP", subdivisionName: "Kosi", code: "NP-KO" }, + "NP-LU": { countryCode: "NP", subdivisionName: "Lumbini", code: "NP-LU" }, + "NP-MA": { countryCode: "NP", subdivisionName: "Mahakali", code: "NP-MA" }, + "NP-ME": { countryCode: "NP", subdivisionName: "Mechi", code: "NP-ME" }, + "NP-NA": { countryCode: "NP", subdivisionName: "Narayani", code: "NP-NA" }, + "NP-RA": { countryCode: "NP", subdivisionName: "Rapti", code: "NP-RA" }, + "NP-SA": { countryCode: "NP", subdivisionName: "Sagarmatha", code: "NP-SA" }, + "NP-SE": { countryCode: "NP", subdivisionName: "Seti", code: "NP-SE" }, + "NR-01": { countryCode: "NR", subdivisionName: "Aiwo", code: "NR-01" }, + "NR-03": { countryCode: "NR", subdivisionName: "Anetan", code: "NR-03" }, + "NR-14": { countryCode: "NR", subdivisionName: "Yaren", code: "NR-14" }, + "NZ-AUK": { countryCode: "NZ", subdivisionName: "Auckland", code: "NZ-AUK" }, + "NZ-BOP": { + countryCode: "NZ", + subdivisionName: "Bay of Plenty", + code: "NZ-BOP", + }, + "NZ-CAN": { + countryCode: "NZ", + subdivisionName: "Canterbury", + code: "NZ-CAN", + }, + "NZ-CIT": { + countryCode: "NZ", + subdivisionName: "Chatham Islands Territory", + code: "NZ-CIT", + }, + "NZ-GIS": { countryCode: "NZ", subdivisionName: "Gisborne", code: "NZ-GIS" }, + "NZ-HKB": { + countryCode: "NZ", + subdivisionName: "Hawke's Bay", + code: "NZ-HKB", + }, + "NZ-MWT": { + countryCode: "NZ", + subdivisionName: "Manawatu-Wanganui", + code: "NZ-MWT", + }, + "NZ-MBH": { + countryCode: "NZ", + subdivisionName: "Marlborough", + code: "NZ-MBH", + }, + "NZ-NSN": { countryCode: "NZ", subdivisionName: "Nelson", code: "NZ-NSN" }, + "NZ-NTL": { countryCode: "NZ", subdivisionName: "Northland", code: "NZ-NTL" }, + "NZ-OTA": { countryCode: "NZ", subdivisionName: "Otago", code: "NZ-OTA" }, + "NZ-STL": { countryCode: "NZ", subdivisionName: "Southland", code: "NZ-STL" }, + "NZ-TKI": { countryCode: "NZ", subdivisionName: "Taranaki", code: "NZ-TKI" }, + "NZ-TAS": { countryCode: "NZ", subdivisionName: "Tasman", code: "NZ-TAS" }, + "NZ-WKO": { countryCode: "NZ", subdivisionName: "Waikato", code: "NZ-WKO" }, + "NZ-WGN": { + countryCode: "NZ", + subdivisionName: "Wellington", + code: "NZ-WGN", + }, + "NZ-WTC": { + countryCode: "NZ", + subdivisionName: "West Coast", + code: "NZ-WTC", + }, + "OM-DA": { + countryCode: "OM", + subdivisionName: "Ad Dakhiliyah", + code: "OM-DA", + }, + "OM-BU": { countryCode: "OM", subdivisionName: "Al Buraymi", code: "OM-BU" }, + "OM-WU": { countryCode: "OM", subdivisionName: "Al Wusta", code: "OM-WU" }, + "OM-ZA": { countryCode: "OM", subdivisionName: "Az Zahirah", code: "OM-ZA" }, + "OM-BJ": { + countryCode: "OM", + subdivisionName: "Janub al Batinah", + code: "OM-BJ", + }, + "OM-SJ": { + countryCode: "OM", + subdivisionName: "Janub ash Sharqiyah", + code: "OM-SJ", + }, + "OM-MA": { countryCode: "OM", subdivisionName: "Masqat", code: "OM-MA" }, + "OM-MU": { countryCode: "OM", subdivisionName: "Musandam", code: "OM-MU" }, + "OM-BS": { + countryCode: "OM", + subdivisionName: "Shamal al Batinah", + code: "OM-BS", + }, + "OM-SS": { + countryCode: "OM", + subdivisionName: "Shamal ash Sharqiyah", + code: "OM-SS", + }, + "OM-ZU": { countryCode: "OM", subdivisionName: "Zufar", code: "OM-ZU" }, + "PA-1": { + countryCode: "PA", + subdivisionName: "Bocas del Toro", + code: "PA-1", + }, + "PA-4": { countryCode: "PA", subdivisionName: "Chiriqui", code: "PA-4" }, + "PA-2": { countryCode: "PA", subdivisionName: "Cocle", code: "PA-2" }, + "PA-3": { countryCode: "PA", subdivisionName: "Colon", code: "PA-3" }, + "PA-5": { countryCode: "PA", subdivisionName: "Darien", code: "PA-5" }, + "PA-6": { countryCode: "PA", subdivisionName: "Herrera", code: "PA-6" }, + "PA-7": { countryCode: "PA", subdivisionName: "Los Santos", code: "PA-7" }, + "PA-NB": { countryCode: "PA", subdivisionName: "Ngobe-Bugle", code: "PA-NB" }, + "PA-8": { countryCode: "PA", subdivisionName: "Panama", code: "PA-8" }, + "PA-9": { countryCode: "PA", subdivisionName: "Veraguas", code: "PA-9" }, + "PE-AMA": { countryCode: "PE", subdivisionName: "Amazonas", code: "PE-AMA" }, + "PE-ANC": { countryCode: "PE", subdivisionName: "Ancash", code: "PE-ANC" }, + "PE-APU": { countryCode: "PE", subdivisionName: "Apurimac", code: "PE-APU" }, + "PE-ARE": { countryCode: "PE", subdivisionName: "Arequipa", code: "PE-ARE" }, + "PE-AYA": { countryCode: "PE", subdivisionName: "Ayacucho", code: "PE-AYA" }, + "PE-CAJ": { countryCode: "PE", subdivisionName: "Cajamarca", code: "PE-CAJ" }, + "PE-CUS": { countryCode: "PE", subdivisionName: "Cusco", code: "PE-CUS" }, + "PE-CAL": { countryCode: "PE", subdivisionName: "El Callao", code: "PE-CAL" }, + "PE-HUV": { + countryCode: "PE", + subdivisionName: "Huancavelica", + code: "PE-HUV", + }, + "PE-HUC": { countryCode: "PE", subdivisionName: "Huanuco", code: "PE-HUC" }, + "PE-ICA": { countryCode: "PE", subdivisionName: "Ica", code: "PE-ICA" }, + "PE-JUN": { countryCode: "PE", subdivisionName: "Junin", code: "PE-JUN" }, + "PE-LAL": { + countryCode: "PE", + subdivisionName: "La Libertad", + code: "PE-LAL", + }, + "PE-LAM": { + countryCode: "PE", + subdivisionName: "Lambayeque", + code: "PE-LAM", + }, + "PE-LIM": { countryCode: "PE", subdivisionName: "Lima", code: "PE-LIM" }, + "PE-LOR": { countryCode: "PE", subdivisionName: "Loreto", code: "PE-LOR" }, + "PE-MDD": { + countryCode: "PE", + subdivisionName: "Madre de Dios", + code: "PE-MDD", + }, + "PE-MOQ": { countryCode: "PE", subdivisionName: "Moquegua", code: "PE-MOQ" }, + "PE-PAS": { countryCode: "PE", subdivisionName: "Pasco", code: "PE-PAS" }, + "PE-PIU": { countryCode: "PE", subdivisionName: "Piura", code: "PE-PIU" }, + "PE-PUN": { countryCode: "PE", subdivisionName: "Puno", code: "PE-PUN" }, + "PE-SAM": { + countryCode: "PE", + subdivisionName: "San Martin", + code: "PE-SAM", + }, + "PE-TAC": { countryCode: "PE", subdivisionName: "Tacna", code: "PE-TAC" }, + "PE-TUM": { countryCode: "PE", subdivisionName: "Tumbes", code: "PE-TUM" }, + "PE-UCA": { countryCode: "PE", subdivisionName: "Ucayali", code: "PE-UCA" }, + "PG-NSB": { + countryCode: "PG", + subdivisionName: "Bougainville", + code: "PG-NSB", + }, + "PG-CPM": { countryCode: "PG", subdivisionName: "Central", code: "PG-CPM" }, + "PG-CPK": { countryCode: "PG", subdivisionName: "Chimbu", code: "PG-CPK" }, + "PG-EBR": { + countryCode: "PG", + subdivisionName: "East New Britain", + code: "PG-EBR", + }, + "PG-ESW": { + countryCode: "PG", + subdivisionName: "East Sepik", + code: "PG-ESW", + }, + "PG-EHG": { + countryCode: "PG", + subdivisionName: "Eastern Highlands", + code: "PG-EHG", + }, + "PG-MPM": { countryCode: "PG", subdivisionName: "Madang", code: "PG-MPM" }, + "PG-MRL": { countryCode: "PG", subdivisionName: "Manus", code: "PG-MRL" }, + "PG-MBA": { countryCode: "PG", subdivisionName: "Milne Bay", code: "PG-MBA" }, + "PG-MPL": { countryCode: "PG", subdivisionName: "Morobe", code: "PG-MPL" }, + "PG-NCD": { + countryCode: "PG", + subdivisionName: "National Capital District (Port Moresby)", + code: "PG-NCD", + }, + "PG-NIK": { + countryCode: "PG", + subdivisionName: "New Ireland", + code: "PG-NIK", + }, + "PG-SHM": { + countryCode: "PG", + subdivisionName: "Southern Highlands", + code: "PG-SHM", + }, + "PG-WBK": { + countryCode: "PG", + subdivisionName: "West New Britain", + code: "PG-WBK", + }, + "PG-SAN": { + countryCode: "PG", + subdivisionName: "West Sepik", + code: "PG-SAN", + }, + "PG-WPD": { countryCode: "PG", subdivisionName: "Western", code: "PG-WPD" }, + "PG-WHM": { + countryCode: "PG", + subdivisionName: "Western Highlands", + code: "PG-WHM", + }, + "PH-ABR": { countryCode: "PH", subdivisionName: "Abra", code: "PH-ABR" }, + "PH-AGN": { + countryCode: "PH", + subdivisionName: "Agusan del Norte", + code: "PH-AGN", + }, + "PH-AGS": { + countryCode: "PH", + subdivisionName: "Agusan del Sur", + code: "PH-AGS", + }, + "PH-AKL": { countryCode: "PH", subdivisionName: "Aklan", code: "PH-AKL" }, + "PH-ALB": { countryCode: "PH", subdivisionName: "Albay", code: "PH-ALB" }, + "PH-ANT": { countryCode: "PH", subdivisionName: "Antique", code: "PH-ANT" }, + "PH-APA": { countryCode: "PH", subdivisionName: "Apayao", code: "PH-APA" }, + "PH-AUR": { countryCode: "PH", subdivisionName: "Aurora", code: "PH-AUR" }, + "PH-BAS": { countryCode: "PH", subdivisionName: "Basilan", code: "PH-BAS" }, + "PH-BAN": { countryCode: "PH", subdivisionName: "Bataan", code: "PH-BAN" }, + "PH-BTN": { countryCode: "PH", subdivisionName: "Batanes", code: "PH-BTN" }, + "PH-BTG": { countryCode: "PH", subdivisionName: "Batangas", code: "PH-BTG" }, + "PH-BEN": { countryCode: "PH", subdivisionName: "Benguet", code: "PH-BEN" }, + "PH-BIL": { countryCode: "PH", subdivisionName: "Biliran", code: "PH-BIL" }, + "PH-BOH": { countryCode: "PH", subdivisionName: "Bohol", code: "PH-BOH" }, + "PH-BUK": { countryCode: "PH", subdivisionName: "Bukidnon", code: "PH-BUK" }, + "PH-BUL": { countryCode: "PH", subdivisionName: "Bulacan", code: "PH-BUL" }, + "PH-CAG": { countryCode: "PH", subdivisionName: "Cagayan", code: "PH-CAG" }, + "PH-CAN": { + countryCode: "PH", + subdivisionName: "Camarines Norte", + code: "PH-CAN", + }, + "PH-CAS": { + countryCode: "PH", + subdivisionName: "Camarines Sur", + code: "PH-CAS", + }, + "PH-CAM": { countryCode: "PH", subdivisionName: "Camiguin", code: "PH-CAM" }, + "PH-CAP": { countryCode: "PH", subdivisionName: "Capiz", code: "PH-CAP" }, + "PH-CAT": { + countryCode: "PH", + subdivisionName: "Catanduanes", + code: "PH-CAT", + }, + "PH-CAV": { countryCode: "PH", subdivisionName: "Cavite", code: "PH-CAV" }, + "PH-CEB": { countryCode: "PH", subdivisionName: "Cebu", code: "PH-CEB" }, + "PH-NCO": { countryCode: "PH", subdivisionName: "Cotabato", code: "PH-NCO" }, + "PH-DAO": { + countryCode: "PH", + subdivisionName: "Davao Oriental", + code: "PH-DAO", + }, + "PH-COM": { + countryCode: "PH", + subdivisionName: "Davao de Oro", + code: "PH-COM", + }, + "PH-DAV": { + countryCode: "PH", + subdivisionName: "Davao del Norte", + code: "PH-DAV", + }, + "PH-DAS": { + countryCode: "PH", + subdivisionName: "Davao del Sur", + code: "PH-DAS", + }, + "PH-DIN": { + countryCode: "PH", + subdivisionName: "Dinagat Islands", + code: "PH-DIN", + }, + "PH-EAS": { + countryCode: "PH", + subdivisionName: "Eastern Samar", + code: "PH-EAS", + }, + "PH-GUI": { countryCode: "PH", subdivisionName: "Guimaras", code: "PH-GUI" }, + "PH-IFU": { countryCode: "PH", subdivisionName: "Ifugao", code: "PH-IFU" }, + "PH-ILN": { + countryCode: "PH", + subdivisionName: "Ilocos Norte", + code: "PH-ILN", + }, + "PH-ILS": { + countryCode: "PH", + subdivisionName: "Ilocos Sur", + code: "PH-ILS", + }, + "PH-ILI": { countryCode: "PH", subdivisionName: "Iloilo", code: "PH-ILI" }, + "PH-ISA": { countryCode: "PH", subdivisionName: "Isabela", code: "PH-ISA" }, + "PH-KAL": { countryCode: "PH", subdivisionName: "Kalinga", code: "PH-KAL" }, + "PH-LUN": { countryCode: "PH", subdivisionName: "La Union", code: "PH-LUN" }, + "PH-LAG": { countryCode: "PH", subdivisionName: "Laguna", code: "PH-LAG" }, + "PH-LAN": { + countryCode: "PH", + subdivisionName: "Lanao del Norte", + code: "PH-LAN", + }, + "PH-LAS": { + countryCode: "PH", + subdivisionName: "Lanao del Sur", + code: "PH-LAS", + }, + "PH-LEY": { countryCode: "PH", subdivisionName: "Leyte", code: "PH-LEY" }, + "PH-MAG": { + countryCode: "PH", + subdivisionName: "Maguindanao", + code: "PH-MAG", + }, + "PH-MAD": { + countryCode: "PH", + subdivisionName: "Marinduque", + code: "PH-MAD", + }, + "PH-MAS": { countryCode: "PH", subdivisionName: "Masbate", code: "PH-MAS" }, + "PH-MDC": { + countryCode: "PH", + subdivisionName: "Mindoro Occidental", + code: "PH-MDC", + }, + "PH-MDR": { + countryCode: "PH", + subdivisionName: "Mindoro Oriental", + code: "PH-MDR", + }, + "PH-MSC": { + countryCode: "PH", + subdivisionName: "Misamis Occidental", + code: "PH-MSC", + }, + "PH-MSR": { + countryCode: "PH", + subdivisionName: "Misamis Oriental", + code: "PH-MSR", + }, + "PH-MOU": { + countryCode: "PH", + subdivisionName: "Mountain Province", + code: "PH-MOU", + }, + "PH-00": { + countryCode: "PH", + subdivisionName: "National Capital Region", + code: "PH-00", + }, + "PH-NEC": { + countryCode: "PH", + subdivisionName: "Negros Occidental", + code: "PH-NEC", + }, + "PH-NER": { + countryCode: "PH", + subdivisionName: "Negros Oriental", + code: "PH-NER", + }, + "PH-NSA": { + countryCode: "PH", + subdivisionName: "Northern Samar", + code: "PH-NSA", + }, + "PH-NUE": { + countryCode: "PH", + subdivisionName: "Nueva Ecija", + code: "PH-NUE", + }, + "PH-NUV": { + countryCode: "PH", + subdivisionName: "Nueva Vizcaya", + code: "PH-NUV", + }, + "PH-PLW": { countryCode: "PH", subdivisionName: "Palawan", code: "PH-PLW" }, + "PH-PAM": { countryCode: "PH", subdivisionName: "Pampanga", code: "PH-PAM" }, + "PH-PAN": { + countryCode: "PH", + subdivisionName: "Pangasinan", + code: "PH-PAN", + }, + "PH-QUE": { countryCode: "PH", subdivisionName: "Quezon", code: "PH-QUE" }, + "PH-QUI": { countryCode: "PH", subdivisionName: "Quirino", code: "PH-QUI" }, + "PH-RIZ": { countryCode: "PH", subdivisionName: "Rizal", code: "PH-RIZ" }, + "PH-ROM": { countryCode: "PH", subdivisionName: "Romblon", code: "PH-ROM" }, + "PH-WSA": { countryCode: "PH", subdivisionName: "Samar", code: "PH-WSA" }, + "PH-SAR": { countryCode: "PH", subdivisionName: "Sarangani", code: "PH-SAR" }, + "PH-SIG": { countryCode: "PH", subdivisionName: "Siquijor", code: "PH-SIG" }, + "PH-SOR": { countryCode: "PH", subdivisionName: "Sorsogon", code: "PH-SOR" }, + "PH-SCO": { + countryCode: "PH", + subdivisionName: "South Cotabato", + code: "PH-SCO", + }, + "PH-SLE": { + countryCode: "PH", + subdivisionName: "Southern Leyte", + code: "PH-SLE", + }, + "PH-SUK": { + countryCode: "PH", + subdivisionName: "Sultan Kudarat", + code: "PH-SUK", + }, + "PH-SLU": { countryCode: "PH", subdivisionName: "Sulu", code: "PH-SLU" }, + "PH-SUN": { + countryCode: "PH", + subdivisionName: "Surigao del Norte", + code: "PH-SUN", + }, + "PH-SUR": { + countryCode: "PH", + subdivisionName: "Surigao del Sur", + code: "PH-SUR", + }, + "PH-TAR": { countryCode: "PH", subdivisionName: "Tarlac", code: "PH-TAR" }, + "PH-TAW": { countryCode: "PH", subdivisionName: "Tawi-Tawi", code: "PH-TAW" }, + "PH-ZMB": { countryCode: "PH", subdivisionName: "Zambales", code: "PH-ZMB" }, + "PH-ZSI": { + countryCode: "PH", + subdivisionName: "Zamboanga Sibugay", + code: "PH-ZSI", + }, + "PH-ZAN": { + countryCode: "PH", + subdivisionName: "Zamboanga del Norte", + code: "PH-ZAN", + }, + "PH-ZAS": { + countryCode: "PH", + subdivisionName: "Zamboanga del Sur", + code: "PH-ZAS", + }, + "PK-JK": { + countryCode: "PK", + subdivisionName: "Azad Jammu and Kashmir", + code: "PK-JK", + }, + "PK-BA": { countryCode: "PK", subdivisionName: "Balochistan", code: "PK-BA" }, + "PK-GB": { + countryCode: "PK", + subdivisionName: "Gilgit-Baltistan", + code: "PK-GB", + }, + "PK-IS": { countryCode: "PK", subdivisionName: "Islamabad", code: "PK-IS" }, + "PK-KP": { + countryCode: "PK", + subdivisionName: "Khyber Pakhtunkhwa", + code: "PK-KP", + }, + "PK-PB": { countryCode: "PK", subdivisionName: "Punjab", code: "PK-PB" }, + "PK-SD": { countryCode: "PK", subdivisionName: "Sindh", code: "PK-SD" }, + "PL-02": { + countryCode: "PL", + subdivisionName: "Dolnoslaskie", + code: "PL-02", + }, + "PL-04": { + countryCode: "PL", + subdivisionName: "Kujawsko-pomorskie", + code: "PL-04", + }, + "PL-10": { countryCode: "PL", subdivisionName: "Lodzkie", code: "PL-10" }, + "PL-06": { countryCode: "PL", subdivisionName: "Lubelskie", code: "PL-06" }, + "PL-08": { countryCode: "PL", subdivisionName: "Lubuskie", code: "PL-08" }, + "PL-12": { countryCode: "PL", subdivisionName: "Malopolskie", code: "PL-12" }, + "PL-14": { countryCode: "PL", subdivisionName: "Mazowieckie", code: "PL-14" }, + "PL-16": { countryCode: "PL", subdivisionName: "Opolskie", code: "PL-16" }, + "PL-18": { + countryCode: "PL", + subdivisionName: "Podkarpackie", + code: "PL-18", + }, + "PL-20": { countryCode: "PL", subdivisionName: "Podlaskie", code: "PL-20" }, + "PL-22": { countryCode: "PL", subdivisionName: "Pomorskie", code: "PL-22" }, + "PL-24": { countryCode: "PL", subdivisionName: "Slaskie", code: "PL-24" }, + "PL-26": { + countryCode: "PL", + subdivisionName: "Swietokrzyskie", + code: "PL-26", + }, + "PL-28": { + countryCode: "PL", + subdivisionName: "Warminsko-mazurskie", + code: "PL-28", + }, + "PL-30": { + countryCode: "PL", + subdivisionName: "Wielkopolskie", + code: "PL-30", + }, + "PL-32": { + countryCode: "PL", + subdivisionName: "Zachodniopomorskie", + code: "PL-32", + }, + "PS-BTH": { countryCode: "PS", subdivisionName: "Bethlehem", code: "PS-BTH" }, + "PS-DEB": { + countryCode: "PS", + subdivisionName: "Deir El Balah", + code: "PS-DEB", + }, + "PS-GZA": { countryCode: "PS", subdivisionName: "Gaza", code: "PS-GZA" }, + "PS-HBN": { countryCode: "PS", subdivisionName: "Hebron", code: "PS-HBN" }, + "PS-JEN": { countryCode: "PS", subdivisionName: "Jenin", code: "PS-JEN" }, + "PS-JRH": { + countryCode: "PS", + subdivisionName: "Jericho and Al Aghwar", + code: "PS-JRH", + }, + "PS-JEM": { countryCode: "PS", subdivisionName: "Jerusalem", code: "PS-JEM" }, + "PS-KYS": { + countryCode: "PS", + subdivisionName: "Khan Yunis", + code: "PS-KYS", + }, + "PS-NBS": { countryCode: "PS", subdivisionName: "Nablus", code: "PS-NBS" }, + "PS-QQA": { countryCode: "PS", subdivisionName: "Qalqilya", code: "PS-QQA" }, + "PS-RFH": { countryCode: "PS", subdivisionName: "Rafah", code: "PS-RFH" }, + "PS-RBH": { countryCode: "PS", subdivisionName: "Ramallah", code: "PS-RBH" }, + "PS-SLT": { countryCode: "PS", subdivisionName: "Salfit", code: "PS-SLT" }, + "PS-TBS": { countryCode: "PS", subdivisionName: "Tubas", code: "PS-TBS" }, + "PS-TKM": { countryCode: "PS", subdivisionName: "Tulkarm", code: "PS-TKM" }, + "PT-01": { countryCode: "PT", subdivisionName: "Aveiro", code: "PT-01" }, + "PT-02": { countryCode: "PT", subdivisionName: "Beja", code: "PT-02" }, + "PT-03": { countryCode: "PT", subdivisionName: "Braga", code: "PT-03" }, + "PT-04": { countryCode: "PT", subdivisionName: "Braganca", code: "PT-04" }, + "PT-05": { + countryCode: "PT", + subdivisionName: "Castelo Branco", + code: "PT-05", + }, + "PT-06": { countryCode: "PT", subdivisionName: "Coimbra", code: "PT-06" }, + "PT-07": { countryCode: "PT", subdivisionName: "Evora", code: "PT-07" }, + "PT-08": { countryCode: "PT", subdivisionName: "Faro", code: "PT-08" }, + "PT-09": { countryCode: "PT", subdivisionName: "Guarda", code: "PT-09" }, + "PT-10": { countryCode: "PT", subdivisionName: "Leiria", code: "PT-10" }, + "PT-11": { countryCode: "PT", subdivisionName: "Lisboa", code: "PT-11" }, + "PT-12": { countryCode: "PT", subdivisionName: "Portalegre", code: "PT-12" }, + "PT-13": { countryCode: "PT", subdivisionName: "Porto", code: "PT-13" }, + "PT-30": { + countryCode: "PT", + subdivisionName: "Regiao Autonoma da Madeira", + code: "PT-30", + }, + "PT-20": { + countryCode: "PT", + subdivisionName: "Regiao Autonoma dos Acores", + code: "PT-20", + }, + "PT-14": { countryCode: "PT", subdivisionName: "Santarem", code: "PT-14" }, + "PT-15": { countryCode: "PT", subdivisionName: "Setubal", code: "PT-15" }, + "PT-16": { + countryCode: "PT", + subdivisionName: "Viana do Castelo", + code: "PT-16", + }, + "PT-17": { countryCode: "PT", subdivisionName: "Vila Real", code: "PT-17" }, + "PT-18": { countryCode: "PT", subdivisionName: "Viseu", code: "PT-18" }, + "PW-004": { countryCode: "PW", subdivisionName: "Airai", code: "PW-004" }, + "PW-150": { countryCode: "PW", subdivisionName: "Koror", code: "PW-150" }, + "PW-212": { countryCode: "PW", subdivisionName: "Melekeok", code: "PW-212" }, + "PY-10": { countryCode: "PY", subdivisionName: "Alto Parana", code: "PY-10" }, + "PY-13": { countryCode: "PY", subdivisionName: "Amambay", code: "PY-13" }, + "PY-ASU": { countryCode: "PY", subdivisionName: "Asuncion", code: "PY-ASU" }, + "PY-19": { countryCode: "PY", subdivisionName: "Boqueron", code: "PY-19" }, + "PY-5": { countryCode: "PY", subdivisionName: "Caaguazu", code: "PY-5" }, + "PY-6": { countryCode: "PY", subdivisionName: "Caazapa", code: "PY-6" }, + "PY-14": { countryCode: "PY", subdivisionName: "Canindeyu", code: "PY-14" }, + "PY-11": { countryCode: "PY", subdivisionName: "Central", code: "PY-11" }, + "PY-1": { countryCode: "PY", subdivisionName: "Concepcion", code: "PY-1" }, + "PY-3": { countryCode: "PY", subdivisionName: "Cordillera", code: "PY-3" }, + "PY-4": { countryCode: "PY", subdivisionName: "Guaira", code: "PY-4" }, + "PY-7": { countryCode: "PY", subdivisionName: "Itapua", code: "PY-7" }, + "PY-8": { countryCode: "PY", subdivisionName: "Misiones", code: "PY-8" }, + "PY-12": { countryCode: "PY", subdivisionName: "Neembucu", code: "PY-12" }, + "PY-9": { countryCode: "PY", subdivisionName: "Paraguari", code: "PY-9" }, + "PY-15": { + countryCode: "PY", + subdivisionName: "Presidente Hayes", + code: "PY-15", + }, + "PY-2": { countryCode: "PY", subdivisionName: "San Pedro", code: "PY-2" }, + "QA-DA": { countryCode: "QA", subdivisionName: "Ad Dawhah", code: "QA-DA" }, + "QA-KH": { + countryCode: "QA", + subdivisionName: "Al Khawr wa adh Dhakhirah", + code: "QA-KH", + }, + "QA-WA": { countryCode: "QA", subdivisionName: "Al Wakrah", code: "QA-WA" }, + "QA-RA": { countryCode: "QA", subdivisionName: "Ar Rayyan", code: "QA-RA" }, + "QA-MS": { countryCode: "QA", subdivisionName: "Ash Shamal", code: "QA-MS" }, + "QA-ZA": { countryCode: "QA", subdivisionName: "Az Za'ayin", code: "QA-ZA" }, + "QA-US": { countryCode: "QA", subdivisionName: "Umm Salal", code: "QA-US" }, + "RO-AB": { countryCode: "RO", subdivisionName: "Alba", code: "RO-AB" }, + "RO-AR": { countryCode: "RO", subdivisionName: "Arad", code: "RO-AR" }, + "RO-AG": { countryCode: "RO", subdivisionName: "Arges", code: "RO-AG" }, + "RO-BC": { countryCode: "RO", subdivisionName: "Bacau", code: "RO-BC" }, + "RO-BH": { countryCode: "RO", subdivisionName: "Bihor", code: "RO-BH" }, + "RO-BN": { + countryCode: "RO", + subdivisionName: "Bistrita-Nasaud", + code: "RO-BN", + }, + "RO-BT": { countryCode: "RO", subdivisionName: "Botosani", code: "RO-BT" }, + "RO-BR": { countryCode: "RO", subdivisionName: "Braila", code: "RO-BR" }, + "RO-BV": { countryCode: "RO", subdivisionName: "Brasov", code: "RO-BV" }, + "RO-B": { countryCode: "RO", subdivisionName: "Bucuresti", code: "RO-B" }, + "RO-BZ": { countryCode: "RO", subdivisionName: "Buzau", code: "RO-BZ" }, + "RO-CL": { countryCode: "RO", subdivisionName: "Calarasi", code: "RO-CL" }, + "RO-CS": { + countryCode: "RO", + subdivisionName: "Caras-Severin", + code: "RO-CS", + }, + "RO-CJ": { countryCode: "RO", subdivisionName: "Cluj", code: "RO-CJ" }, + "RO-CT": { countryCode: "RO", subdivisionName: "Constanta", code: "RO-CT" }, + "RO-CV": { countryCode: "RO", subdivisionName: "Covasna", code: "RO-CV" }, + "RO-DB": { countryCode: "RO", subdivisionName: "Dambovita", code: "RO-DB" }, + "RO-DJ": { countryCode: "RO", subdivisionName: "Dolj", code: "RO-DJ" }, + "RO-GL": { countryCode: "RO", subdivisionName: "Galati", code: "RO-GL" }, + "RO-GR": { countryCode: "RO", subdivisionName: "Giurgiu", code: "RO-GR" }, + "RO-GJ": { countryCode: "RO", subdivisionName: "Gorj", code: "RO-GJ" }, + "RO-HR": { countryCode: "RO", subdivisionName: "Harghita", code: "RO-HR" }, + "RO-HD": { countryCode: "RO", subdivisionName: "Hunedoara", code: "RO-HD" }, + "RO-IL": { countryCode: "RO", subdivisionName: "Ialomita", code: "RO-IL" }, + "RO-IS": { countryCode: "RO", subdivisionName: "Iasi", code: "RO-IS" }, + "RO-IF": { countryCode: "RO", subdivisionName: "Ilfov", code: "RO-IF" }, + "RO-MM": { countryCode: "RO", subdivisionName: "Maramures", code: "RO-MM" }, + "RO-MH": { countryCode: "RO", subdivisionName: "Mehedinti", code: "RO-MH" }, + "RO-MS": { countryCode: "RO", subdivisionName: "Mures", code: "RO-MS" }, + "RO-NT": { countryCode: "RO", subdivisionName: "Neamt", code: "RO-NT" }, + "RO-OT": { countryCode: "RO", subdivisionName: "Olt", code: "RO-OT" }, + "RO-PH": { countryCode: "RO", subdivisionName: "Prahova", code: "RO-PH" }, + "RO-SJ": { countryCode: "RO", subdivisionName: "Salaj", code: "RO-SJ" }, + "RO-SM": { countryCode: "RO", subdivisionName: "Satu Mare", code: "RO-SM" }, + "RO-SB": { countryCode: "RO", subdivisionName: "Sibiu", code: "RO-SB" }, + "RO-SV": { countryCode: "RO", subdivisionName: "Suceava", code: "RO-SV" }, + "RO-TR": { countryCode: "RO", subdivisionName: "Teleorman", code: "RO-TR" }, + "RO-TM": { countryCode: "RO", subdivisionName: "Timis", code: "RO-TM" }, + "RO-TL": { countryCode: "RO", subdivisionName: "Tulcea", code: "RO-TL" }, + "RO-VL": { countryCode: "RO", subdivisionName: "Valcea", code: "RO-VL" }, + "RO-VS": { countryCode: "RO", subdivisionName: "Vaslui", code: "RO-VS" }, + "RO-VN": { countryCode: "RO", subdivisionName: "Vrancea", code: "RO-VN" }, + "RS-00": { countryCode: "RS", subdivisionName: "Beograd", code: "RS-00" }, + "RS-14": { + countryCode: "RS", + subdivisionName: "Borski okrug", + code: "RS-14", + }, + "RS-11": { + countryCode: "RS", + subdivisionName: "Branicevski okrug", + code: "RS-11", + }, + "RS-23": { + countryCode: "RS", + subdivisionName: "Jablanicki okrug", + code: "RS-23", + }, + "RS-06": { + countryCode: "RS", + subdivisionName: "Juznobacki okrug", + code: "RS-06", + }, + "RS-04": { + countryCode: "RS", + subdivisionName: "Juznobanatski okrug", + code: "RS-04", + }, + "RS-09": { + countryCode: "RS", + subdivisionName: "Kolubarski okrug", + code: "RS-09", + }, + "RS-28": { + countryCode: "RS", + subdivisionName: "Kosovsko-Mitrovacki okrug", + code: "RS-28", + }, + "RS-08": { + countryCode: "RS", + subdivisionName: "Macvanski okrug", + code: "RS-08", + }, + "RS-17": { + countryCode: "RS", + subdivisionName: "Moravicki okrug", + code: "RS-17", + }, + "RS-20": { + countryCode: "RS", + subdivisionName: "Nisavski okrug", + code: "RS-20", + }, + "RS-24": { + countryCode: "RS", + subdivisionName: "Pcinjski okrug", + code: "RS-24", + }, + "RS-26": { countryCode: "RS", subdivisionName: "Pecki okrug", code: "RS-26" }, + "RS-22": { + countryCode: "RS", + subdivisionName: "Pirotski okrug", + code: "RS-22", + }, + "RS-10": { + countryCode: "RS", + subdivisionName: "Podunavski okrug", + code: "RS-10", + }, + "RS-13": { + countryCode: "RS", + subdivisionName: "Pomoravski okrug", + code: "RS-13", + }, + "RS-27": { + countryCode: "RS", + subdivisionName: "Prizrenski okrug", + code: "RS-27", + }, + "RS-19": { + countryCode: "RS", + subdivisionName: "Rasinski okrug", + code: "RS-19", + }, + "RS-18": { countryCode: "RS", subdivisionName: "Raski okrug", code: "RS-18" }, + "RS-01": { + countryCode: "RS", + subdivisionName: "Severnobacki okrug", + code: "RS-01", + }, + "RS-03": { + countryCode: "RS", + subdivisionName: "Severnobanatski okrug", + code: "RS-03", + }, + "RS-02": { + countryCode: "RS", + subdivisionName: "Srednjebanatski okrug", + code: "RS-02", + }, + "RS-07": { + countryCode: "RS", + subdivisionName: "Sremski okrug", + code: "RS-07", + }, + "RS-12": { + countryCode: "RS", + subdivisionName: "Sumadijski okrug", + code: "RS-12", + }, + "RS-21": { + countryCode: "RS", + subdivisionName: "Toplicki okrug", + code: "RS-21", + }, + "RS-15": { + countryCode: "RS", + subdivisionName: "Zajecarski okrug", + code: "RS-15", + }, + "RS-05": { + countryCode: "RS", + subdivisionName: "Zapadnobacki okrug", + code: "RS-05", + }, + "RS-16": { + countryCode: "RS", + subdivisionName: "Zlatiborski okrug", + code: "RS-16", + }, + "RU-AD": { + countryCode: "RU", + subdivisionName: "Adygeya, Respublika", + code: "RU-AD", + }, + "RU-AL": { + countryCode: "RU", + subdivisionName: "Altay, Respublika", + code: "RU-AL", + }, + "RU-ALT": { + countryCode: "RU", + subdivisionName: "Altayskiy kray", + code: "RU-ALT", + }, + "RU-AMU": { + countryCode: "RU", + subdivisionName: "Amurskaya oblast'", + code: "RU-AMU", + }, + "RU-ARK": { + countryCode: "RU", + subdivisionName: "Arkhangel'skaya oblast'", + code: "RU-ARK", + }, + "RU-AST": { + countryCode: "RU", + subdivisionName: "Astrakhanskaya oblast'", + code: "RU-AST", + }, + "RU-BA": { + countryCode: "RU", + subdivisionName: "Bashkortostan, Respublika", + code: "RU-BA", + }, + "RU-BEL": { + countryCode: "RU", + subdivisionName: "Belgorodskaya oblast'", + code: "RU-BEL", + }, + "RU-BRY": { + countryCode: "RU", + subdivisionName: "Bryanskaya oblast'", + code: "RU-BRY", + }, + "RU-BU": { + countryCode: "RU", + subdivisionName: "Buryatiya, Respublika", + code: "RU-BU", + }, + "RU-CE": { + countryCode: "RU", + subdivisionName: "Chechenskaya Respublika", + code: "RU-CE", + }, + "RU-CHE": { + countryCode: "RU", + subdivisionName: "Chelyabinskaya oblast'", + code: "RU-CHE", + }, + "RU-CHU": { + countryCode: "RU", + subdivisionName: "Chukotskiy avtonomnyy okrug", + code: "RU-CHU", + }, + "RU-CU": { + countryCode: "RU", + subdivisionName: "Chuvashskaya Respublika", + code: "RU-CU", + }, + "RU-DA": { + countryCode: "RU", + subdivisionName: "Dagestan, Respublika", + code: "RU-DA", + }, + "RU-IN": { + countryCode: "RU", + subdivisionName: "Ingushetiya, Respublika", + code: "RU-IN", + }, + "RU-IRK": { + countryCode: "RU", + subdivisionName: "Irkutskaya oblast'", + code: "RU-IRK", + }, + "RU-IVA": { + countryCode: "RU", + subdivisionName: "Ivanovskaya oblast'", + code: "RU-IVA", + }, + "RU-KB": { + countryCode: "RU", + subdivisionName: "Kabardino-Balkarskaya Respublika", + code: "RU-KB", + }, + "RU-KGD": { + countryCode: "RU", + subdivisionName: "Kaliningradskaya oblast'", + code: "RU-KGD", + }, + "RU-KL": { + countryCode: "RU", + subdivisionName: "Kalmykiya, Respublika", + code: "RU-KL", + }, + "RU-KLU": { + countryCode: "RU", + subdivisionName: "Kaluzhskaya oblast'", + code: "RU-KLU", + }, + "RU-KAM": { + countryCode: "RU", + subdivisionName: "Kamchatskiy kray", + code: "RU-KAM", + }, + "RU-KC": { + countryCode: "RU", + subdivisionName: "Karachayevo-Cherkesskaya Respublika", + code: "RU-KC", + }, + "RU-KR": { + countryCode: "RU", + subdivisionName: "Kareliya, Respublika", + code: "RU-KR", + }, + "RU-KEM": { + countryCode: "RU", + subdivisionName: "Kemerovskaya oblast'", + code: "RU-KEM", + }, + "RU-KHA": { + countryCode: "RU", + subdivisionName: "Khabarovskiy kray", + code: "RU-KHA", + }, + "RU-KK": { + countryCode: "RU", + subdivisionName: "Khakasiya, Respublika", + code: "RU-KK", + }, + "RU-KHM": { + countryCode: "RU", + subdivisionName: "Khanty-Mansiyskiy avtonomnyy okrug", + code: "RU-KHM", + }, + "RU-KIR": { + countryCode: "RU", + subdivisionName: "Kirovskaya oblast'", + code: "RU-KIR", + }, + "RU-KO": { + countryCode: "RU", + subdivisionName: "Komi, Respublika", + code: "RU-KO", + }, + "RU-KOS": { + countryCode: "RU", + subdivisionName: "Kostromskaya oblast'", + code: "RU-KOS", + }, + "RU-KDA": { + countryCode: "RU", + subdivisionName: "Krasnodarskiy kray", + code: "RU-KDA", + }, + "RU-KYA": { + countryCode: "RU", + subdivisionName: "Krasnoyarskiy kray", + code: "RU-KYA", + }, + "RU-KGN": { + countryCode: "RU", + subdivisionName: "Kurganskaya oblast'", + code: "RU-KGN", + }, + "RU-KRS": { + countryCode: "RU", + subdivisionName: "Kurskaya oblast'", + code: "RU-KRS", + }, + "RU-LEN": { + countryCode: "RU", + subdivisionName: "Leningradskaya oblast'", + code: "RU-LEN", + }, + "RU-LIP": { + countryCode: "RU", + subdivisionName: "Lipetskaya oblast'", + code: "RU-LIP", + }, + "RU-MAG": { + countryCode: "RU", + subdivisionName: "Magadanskaya oblast'", + code: "RU-MAG", + }, + "RU-ME": { + countryCode: "RU", + subdivisionName: "Mariy El, Respublika", + code: "RU-ME", + }, + "RU-MO": { + countryCode: "RU", + subdivisionName: "Mordoviya, Respublika", + code: "RU-MO", + }, + "RU-MOS": { + countryCode: "RU", + subdivisionName: "Moskovskaya oblast'", + code: "RU-MOS", + }, + "RU-MOW": { countryCode: "RU", subdivisionName: "Moskva", code: "RU-MOW" }, + "RU-MUR": { + countryCode: "RU", + subdivisionName: "Murmanskaya oblast'", + code: "RU-MUR", + }, + "RU-NEN": { + countryCode: "RU", + subdivisionName: "Nenetskiy avtonomnyy okrug", + code: "RU-NEN", + }, + "RU-NIZ": { + countryCode: "RU", + subdivisionName: "Nizhegorodskaya oblast'", + code: "RU-NIZ", + }, + "RU-NGR": { + countryCode: "RU", + subdivisionName: "Novgorodskaya oblast'", + code: "RU-NGR", + }, + "RU-NVS": { + countryCode: "RU", + subdivisionName: "Novosibirskaya oblast'", + code: "RU-NVS", + }, + "RU-OMS": { + countryCode: "RU", + subdivisionName: "Omskaya oblast'", + code: "RU-OMS", + }, + "RU-ORE": { + countryCode: "RU", + subdivisionName: "Orenburgskaya oblast'", + code: "RU-ORE", + }, + "RU-ORL": { + countryCode: "RU", + subdivisionName: "Orlovskaya oblast'", + code: "RU-ORL", + }, + "RU-PNZ": { + countryCode: "RU", + subdivisionName: "Penzenskaya oblast'", + code: "RU-PNZ", + }, + "RU-PER": { + countryCode: "RU", + subdivisionName: "Permskiy kray", + code: "RU-PER", + }, + "RU-PRI": { + countryCode: "RU", + subdivisionName: "Primorskiy kray", + code: "RU-PRI", + }, + "RU-PSK": { + countryCode: "RU", + subdivisionName: "Pskovskaya oblast'", + code: "RU-PSK", + }, + "RU-ROS": { + countryCode: "RU", + subdivisionName: "Rostovskaya oblast'", + code: "RU-ROS", + }, + "RU-RYA": { + countryCode: "RU", + subdivisionName: "Ryazanskaya oblast'", + code: "RU-RYA", + }, + "RU-SA": { + countryCode: "RU", + subdivisionName: "Saha, Respublika", + code: "RU-SA", + }, + "RU-SAK": { + countryCode: "RU", + subdivisionName: "Sakhalinskaya oblast'", + code: "RU-SAK", + }, + "RU-SAM": { + countryCode: "RU", + subdivisionName: "Samarskaya oblast'", + code: "RU-SAM", + }, + "RU-SPE": { + countryCode: "RU", + subdivisionName: "Sankt-Peterburg", + code: "RU-SPE", + }, + "RU-SAR": { + countryCode: "RU", + subdivisionName: "Saratovskaya oblast'", + code: "RU-SAR", + }, + "RU-SE": { + countryCode: "RU", + subdivisionName: "Severnaya Osetiya, Respublika", + code: "RU-SE", + }, + "RU-SMO": { + countryCode: "RU", + subdivisionName: "Smolenskaya oblast'", + code: "RU-SMO", + }, + "RU-STA": { + countryCode: "RU", + subdivisionName: "Stavropol'skiy kray", + code: "RU-STA", + }, + "RU-SVE": { + countryCode: "RU", + subdivisionName: "Sverdlovskaya oblast'", + code: "RU-SVE", + }, + "RU-TAM": { + countryCode: "RU", + subdivisionName: "Tambovskaya oblast'", + code: "RU-TAM", + }, + "RU-TA": { + countryCode: "RU", + subdivisionName: "Tatarstan, Respublika", + code: "RU-TA", + }, + "RU-TOM": { + countryCode: "RU", + subdivisionName: "Tomskaya oblast'", + code: "RU-TOM", + }, + "RU-TUL": { + countryCode: "RU", + subdivisionName: "Tul'skaya oblast'", + code: "RU-TUL", + }, + "RU-TVE": { + countryCode: "RU", + subdivisionName: "Tverskaya oblast'", + code: "RU-TVE", + }, + "RU-TYU": { + countryCode: "RU", + subdivisionName: "Tyumenskaya oblast'", + code: "RU-TYU", + }, + "RU-TY": { + countryCode: "RU", + subdivisionName: "Tyva, Respublika", + code: "RU-TY", + }, + "RU-UD": { + countryCode: "RU", + subdivisionName: "Udmurtskaya Respublika", + code: "RU-UD", + }, + "RU-ULY": { + countryCode: "RU", + subdivisionName: "Ul'yanovskaya oblast'", + code: "RU-ULY", + }, + "RU-VLA": { + countryCode: "RU", + subdivisionName: "Vladimirskaya oblast'", + code: "RU-VLA", + }, + "RU-VGG": { + countryCode: "RU", + subdivisionName: "Volgogradskaya oblast'", + code: "RU-VGG", + }, + "RU-VLG": { + countryCode: "RU", + subdivisionName: "Vologodskaya oblast'", + code: "RU-VLG", + }, + "RU-VOR": { + countryCode: "RU", + subdivisionName: "Voronezhskaya oblast'", + code: "RU-VOR", + }, + "RU-YAN": { + countryCode: "RU", + subdivisionName: "Yamalo-Nenetskiy avtonomnyy okrug", + code: "RU-YAN", + }, + "RU-YAR": { + countryCode: "RU", + subdivisionName: "Yaroslavskaya oblast'", + code: "RU-YAR", + }, + "RU-YEV": { + countryCode: "RU", + subdivisionName: "Yevreyskaya avtonomnaya oblast'", + code: "RU-YEV", + }, + "RU-ZAB": { + countryCode: "RU", + subdivisionName: "Zabaykal'skiy kray", + code: "RU-ZAB", + }, + "RW-02": { countryCode: "RW", subdivisionName: "Est", code: "RW-02" }, + "RW-03": { countryCode: "RW", subdivisionName: "Nord", code: "RW-03" }, + "RW-04": { countryCode: "RW", subdivisionName: "Ouest", code: "RW-04" }, + "RW-05": { countryCode: "RW", subdivisionName: "Sud", code: "RW-05" }, + "RW-01": { + countryCode: "RW", + subdivisionName: "Ville de Kigali", + code: "RW-01", + }, + "SA-14": { countryCode: "SA", subdivisionName: "'Asir", code: "SA-14" }, + "SA-11": { countryCode: "SA", subdivisionName: "Al Bahah", code: "SA-11" }, + "SA-08": { + countryCode: "SA", + subdivisionName: "Al Hudud ash Shamaliyah", + code: "SA-08", + }, + "SA-12": { countryCode: "SA", subdivisionName: "Al Jawf", code: "SA-12" }, + "SA-03": { + countryCode: "SA", + subdivisionName: "Al Madinah al Munawwarah", + code: "SA-03", + }, + "SA-05": { countryCode: "SA", subdivisionName: "Al Qasim", code: "SA-05" }, + "SA-01": { countryCode: "SA", subdivisionName: "Ar Riyad", code: "SA-01" }, + "SA-04": { + countryCode: "SA", + subdivisionName: "Ash Sharqiyah", + code: "SA-04", + }, + "SA-06": { countryCode: "SA", subdivisionName: "Ha'il", code: "SA-06" }, + "SA-09": { countryCode: "SA", subdivisionName: "Jazan", code: "SA-09" }, + "SA-02": { + countryCode: "SA", + subdivisionName: "Makkah al Mukarramah", + code: "SA-02", + }, + "SA-10": { countryCode: "SA", subdivisionName: "Najran", code: "SA-10" }, + "SA-07": { countryCode: "SA", subdivisionName: "Tabuk", code: "SA-07" }, + "SB-CH": { countryCode: "SB", subdivisionName: "Choiseul", code: "SB-CH" }, + "SB-GU": { countryCode: "SB", subdivisionName: "Guadalcanal", code: "SB-GU" }, + "SB-WE": { countryCode: "SB", subdivisionName: "Western", code: "SB-WE" }, + "SC-02": { + countryCode: "SC", + subdivisionName: "Anse Boileau", + code: "SC-02", + }, + "SC-05": { countryCode: "SC", subdivisionName: "Anse Royale", code: "SC-05" }, + "SC-01": { + countryCode: "SC", + subdivisionName: "Anse aux Pins", + code: "SC-01", + }, + "SC-06": { countryCode: "SC", subdivisionName: "Baie Lazare", code: "SC-06" }, + "SC-07": { + countryCode: "SC", + subdivisionName: "Baie Sainte Anne", + code: "SC-07", + }, + "SC-08": { countryCode: "SC", subdivisionName: "Beau Vallon", code: "SC-08" }, + "SC-10": { countryCode: "SC", subdivisionName: "Bel Ombre", code: "SC-10" }, + "SC-11": { countryCode: "SC", subdivisionName: "Cascade", code: "SC-11" }, + "SC-16": { + countryCode: "SC", + subdivisionName: "English River", + code: "SC-16", + }, + "SC-13": { + countryCode: "SC", + subdivisionName: "Grand Anse Mahe", + code: "SC-13", + }, + "SC-14": { + countryCode: "SC", + subdivisionName: "Grand Anse Praslin", + code: "SC-14", + }, + "SC-15": { countryCode: "SC", subdivisionName: "La Digue", code: "SC-15" }, + "SC-20": { + countryCode: "SC", + subdivisionName: "Pointe Larue", + code: "SC-20", + }, + "SC-23": { countryCode: "SC", subdivisionName: "Takamaka", code: "SC-23" }, + "SD-NB": { countryCode: "SD", subdivisionName: "Blue Nile", code: "SD-NB" }, + "SD-DC": { + countryCode: "SD", + subdivisionName: "Central Darfur", + code: "SD-DC", + }, + "SD-GD": { countryCode: "SD", subdivisionName: "Gedaref", code: "SD-GD" }, + "SD-GZ": { countryCode: "SD", subdivisionName: "Gezira", code: "SD-GZ" }, + "SD-KA": { countryCode: "SD", subdivisionName: "Kassala", code: "SD-KA" }, + "SD-KH": { countryCode: "SD", subdivisionName: "Khartoum", code: "SD-KH" }, + "SD-DN": { + countryCode: "SD", + subdivisionName: "North Darfur", + code: "SD-DN", + }, + "SD-KN": { + countryCode: "SD", + subdivisionName: "North Kordofan", + code: "SD-KN", + }, + "SD-NO": { countryCode: "SD", subdivisionName: "Northern", code: "SD-NO" }, + "SD-RS": { countryCode: "SD", subdivisionName: "Red Sea", code: "SD-RS" }, + "SD-NR": { countryCode: "SD", subdivisionName: "River Nile", code: "SD-NR" }, + "SD-SI": { countryCode: "SD", subdivisionName: "Sennar", code: "SD-SI" }, + "SD-DS": { + countryCode: "SD", + subdivisionName: "South Darfur", + code: "SD-DS", + }, + "SD-KS": { + countryCode: "SD", + subdivisionName: "South Kordofan", + code: "SD-KS", + }, + "SD-DW": { countryCode: "SD", subdivisionName: "West Darfur", code: "SD-DW" }, + "SD-GK": { + countryCode: "SD", + subdivisionName: "West Kordofan", + code: "SD-GK", + }, + "SD-NW": { countryCode: "SD", subdivisionName: "White Nile", code: "SD-NW" }, + "SE-K": { countryCode: "SE", subdivisionName: "Blekinge lan", code: "SE-K" }, + "SE-W": { countryCode: "SE", subdivisionName: "Dalarnas lan", code: "SE-W" }, + "SE-X": { + countryCode: "SE", + subdivisionName: "Gavleborgs lan", + code: "SE-X", + }, + "SE-I": { countryCode: "SE", subdivisionName: "Gotlands lan", code: "SE-I" }, + "SE-N": { countryCode: "SE", subdivisionName: "Hallands lan", code: "SE-N" }, + "SE-Z": { countryCode: "SE", subdivisionName: "Jamtlands lan", code: "SE-Z" }, + "SE-F": { + countryCode: "SE", + subdivisionName: "Jonkopings lan", + code: "SE-F", + }, + "SE-H": { countryCode: "SE", subdivisionName: "Kalmar lan", code: "SE-H" }, + "SE-G": { + countryCode: "SE", + subdivisionName: "Kronobergs lan", + code: "SE-G", + }, + "SE-BD": { + countryCode: "SE", + subdivisionName: "Norrbottens lan", + code: "SE-BD", + }, + "SE-T": { countryCode: "SE", subdivisionName: "Orebro lan", code: "SE-T" }, + "SE-E": { + countryCode: "SE", + subdivisionName: "Ostergotlands lan", + code: "SE-E", + }, + "SE-M": { countryCode: "SE", subdivisionName: "Skane lan", code: "SE-M" }, + "SE-D": { + countryCode: "SE", + subdivisionName: "Sodermanlands lan", + code: "SE-D", + }, + "SE-AB": { + countryCode: "SE", + subdivisionName: "Stockholms lan", + code: "SE-AB", + }, + "SE-C": { countryCode: "SE", subdivisionName: "Uppsala lan", code: "SE-C" }, + "SE-S": { countryCode: "SE", subdivisionName: "Varmlands lan", code: "SE-S" }, + "SE-AC": { + countryCode: "SE", + subdivisionName: "Vasterbottens lan", + code: "SE-AC", + }, + "SE-Y": { + countryCode: "SE", + subdivisionName: "Vasternorrlands lan", + code: "SE-Y", + }, + "SE-U": { + countryCode: "SE", + subdivisionName: "Vastmanlands lan", + code: "SE-U", + }, + "SE-O": { + countryCode: "SE", + subdivisionName: "Vastra Gotalands lan", + code: "SE-O", + }, + "SH-HL": { + countryCode: "SH", + subdivisionName: "Saint Helena", + code: "SH-HL", + }, + "SI-001": { + countryCode: "SI", + subdivisionName: "Ajdovscina", + code: "SI-001", + }, + "SI-213": { countryCode: "SI", subdivisionName: "Ankaran", code: "SI-213" }, + "SI-195": { countryCode: "SI", subdivisionName: "Apace", code: "SI-195" }, + "SI-002": { countryCode: "SI", subdivisionName: "Beltinci", code: "SI-002" }, + "SI-148": { countryCode: "SI", subdivisionName: "Benedikt", code: "SI-148" }, + "SI-149": { + countryCode: "SI", + subdivisionName: "Bistrica ob Sotli", + code: "SI-149", + }, + "SI-003": { countryCode: "SI", subdivisionName: "Bled", code: "SI-003" }, + "SI-150": { countryCode: "SI", subdivisionName: "Bloke", code: "SI-150" }, + "SI-004": { countryCode: "SI", subdivisionName: "Bohinj", code: "SI-004" }, + "SI-005": { countryCode: "SI", subdivisionName: "Borovnica", code: "SI-005" }, + "SI-006": { countryCode: "SI", subdivisionName: "Bovec", code: "SI-006" }, + "SI-151": { countryCode: "SI", subdivisionName: "Braslovce", code: "SI-151" }, + "SI-007": { countryCode: "SI", subdivisionName: "Brda", code: "SI-007" }, + "SI-009": { countryCode: "SI", subdivisionName: "Brezice", code: "SI-009" }, + "SI-008": { countryCode: "SI", subdivisionName: "Brezovica", code: "SI-008" }, + "SI-152": { countryCode: "SI", subdivisionName: "Cankova", code: "SI-152" }, + "SI-011": { countryCode: "SI", subdivisionName: "Celje", code: "SI-011" }, + "SI-012": { + countryCode: "SI", + subdivisionName: "Cerklje na Gorenjskem", + code: "SI-012", + }, + "SI-013": { countryCode: "SI", subdivisionName: "Cerknica", code: "SI-013" }, + "SI-014": { countryCode: "SI", subdivisionName: "Cerkno", code: "SI-014" }, + "SI-196": { countryCode: "SI", subdivisionName: "Cirkulane", code: "SI-196" }, + "SI-015": { countryCode: "SI", subdivisionName: "Crensovci", code: "SI-015" }, + "SI-017": { countryCode: "SI", subdivisionName: "Crnomelj", code: "SI-017" }, + "SI-018": { countryCode: "SI", subdivisionName: "Destrnik", code: "SI-018" }, + "SI-019": { countryCode: "SI", subdivisionName: "Divaca", code: "SI-019" }, + "SI-154": { countryCode: "SI", subdivisionName: "Dobje", code: "SI-154" }, + "SI-020": { + countryCode: "SI", + subdivisionName: "Dobrepolje", + code: "SI-020", + }, + "SI-155": { countryCode: "SI", subdivisionName: "Dobrna", code: "SI-155" }, + "SI-021": { + countryCode: "SI", + subdivisionName: "Dobrova-Polhov Gradec", + code: "SI-021", + }, + "SI-156": { countryCode: "SI", subdivisionName: "Dobrovnik", code: "SI-156" }, + "SI-023": { countryCode: "SI", subdivisionName: "Domzale", code: "SI-023" }, + "SI-024": { countryCode: "SI", subdivisionName: "Dornava", code: "SI-024" }, + "SI-025": { countryCode: "SI", subdivisionName: "Dravograd", code: "SI-025" }, + "SI-026": { countryCode: "SI", subdivisionName: "Duplek", code: "SI-026" }, + "SI-207": { countryCode: "SI", subdivisionName: "Gorje", code: "SI-207" }, + "SI-029": { + countryCode: "SI", + subdivisionName: "Gornja Radgona", + code: "SI-029", + }, + "SI-031": { + countryCode: "SI", + subdivisionName: "Gornji Petrovci", + code: "SI-031", + }, + "SI-158": { countryCode: "SI", subdivisionName: "Grad", code: "SI-158" }, + "SI-032": { countryCode: "SI", subdivisionName: "Grosuplje", code: "SI-032" }, + "SI-159": { countryCode: "SI", subdivisionName: "Hajdina", code: "SI-159" }, + "SI-160": { + countryCode: "SI", + subdivisionName: "Hoce-Slivnica", + code: "SI-160", + }, + "SI-161": { countryCode: "SI", subdivisionName: "Hodos", code: "SI-161" }, + "SI-162": { countryCode: "SI", subdivisionName: "Horjul", code: "SI-162" }, + "SI-034": { countryCode: "SI", subdivisionName: "Hrastnik", code: "SI-034" }, + "SI-035": { + countryCode: "SI", + subdivisionName: "Hrpelje-Kozina", + code: "SI-035", + }, + "SI-036": { countryCode: "SI", subdivisionName: "Idrija", code: "SI-036" }, + "SI-037": { countryCode: "SI", subdivisionName: "Ig", code: "SI-037" }, + "SI-038": { + countryCode: "SI", + subdivisionName: "Ilirska Bistrica", + code: "SI-038", + }, + "SI-039": { + countryCode: "SI", + subdivisionName: "Ivancna Gorica", + code: "SI-039", + }, + "SI-040": { countryCode: "SI", subdivisionName: "Izola", code: "SI-040" }, + "SI-041": { countryCode: "SI", subdivisionName: "Jesenice", code: "SI-041" }, + "SI-042": { countryCode: "SI", subdivisionName: "Jursinci", code: "SI-042" }, + "SI-043": { countryCode: "SI", subdivisionName: "Kamnik", code: "SI-043" }, + "SI-044": { countryCode: "SI", subdivisionName: "Kanal", code: "SI-044" }, + "SI-045": { countryCode: "SI", subdivisionName: "Kidricevo", code: "SI-045" }, + "SI-046": { countryCode: "SI", subdivisionName: "Kobarid", code: "SI-046" }, + "SI-047": { countryCode: "SI", subdivisionName: "Kobilje", code: "SI-047" }, + "SI-048": { countryCode: "SI", subdivisionName: "Kocevje", code: "SI-048" }, + "SI-049": { countryCode: "SI", subdivisionName: "Komen", code: "SI-049" }, + "SI-164": { countryCode: "SI", subdivisionName: "Komenda", code: "SI-164" }, + "SI-050": { countryCode: "SI", subdivisionName: "Koper", code: "SI-050" }, + "SI-197": { + countryCode: "SI", + subdivisionName: "Kosanjevica na Krki", + code: "SI-197", + }, + "SI-165": { countryCode: "SI", subdivisionName: "Kostel", code: "SI-165" }, + "SI-052": { countryCode: "SI", subdivisionName: "Kranj", code: "SI-052" }, + "SI-053": { + countryCode: "SI", + subdivisionName: "Kranjska Gora", + code: "SI-053", + }, + "SI-166": { countryCode: "SI", subdivisionName: "Krizevci", code: "SI-166" }, + "SI-054": { countryCode: "SI", subdivisionName: "Krsko", code: "SI-054" }, + "SI-055": { countryCode: "SI", subdivisionName: "Kungota", code: "SI-055" }, + "SI-056": { countryCode: "SI", subdivisionName: "Kuzma", code: "SI-056" }, + "SI-057": { countryCode: "SI", subdivisionName: "Lasko", code: "SI-057" }, + "SI-058": { countryCode: "SI", subdivisionName: "Lenart", code: "SI-058" }, + "SI-059": { countryCode: "SI", subdivisionName: "Lendava", code: "SI-059" }, + "SI-060": { countryCode: "SI", subdivisionName: "Litija", code: "SI-060" }, + "SI-061": { countryCode: "SI", subdivisionName: "Ljubljana", code: "SI-061" }, + "SI-063": { countryCode: "SI", subdivisionName: "Ljutomer", code: "SI-063" }, + "SI-208": { + countryCode: "SI", + subdivisionName: "Log-Dragomer", + code: "SI-208", + }, + "SI-064": { countryCode: "SI", subdivisionName: "Logatec", code: "SI-064" }, + "SI-065": { + countryCode: "SI", + subdivisionName: "Loska dolina", + code: "SI-065", + }, + "SI-066": { + countryCode: "SI", + subdivisionName: "Loski Potok", + code: "SI-066", + }, + "SI-167": { + countryCode: "SI", + subdivisionName: "Lovrenc na Pohorju", + code: "SI-167", + }, + "SI-067": { countryCode: "SI", subdivisionName: "Luce", code: "SI-067" }, + "SI-068": { countryCode: "SI", subdivisionName: "Lukovica", code: "SI-068" }, + "SI-069": { countryCode: "SI", subdivisionName: "Majsperk", code: "SI-069" }, + "SI-198": { countryCode: "SI", subdivisionName: "Makole", code: "SI-198" }, + "SI-070": { countryCode: "SI", subdivisionName: "Maribor", code: "SI-070" }, + "SI-168": { countryCode: "SI", subdivisionName: "Markovci", code: "SI-168" }, + "SI-071": { countryCode: "SI", subdivisionName: "Medvode", code: "SI-071" }, + "SI-072": { countryCode: "SI", subdivisionName: "Menges", code: "SI-072" }, + "SI-073": { countryCode: "SI", subdivisionName: "Metlika", code: "SI-073" }, + "SI-074": { countryCode: "SI", subdivisionName: "Mezica", code: "SI-074" }, + "SI-169": { + countryCode: "SI", + subdivisionName: "Miklavz na Dravskem polju", + code: "SI-169", + }, + "SI-075": { + countryCode: "SI", + subdivisionName: "Miren-Kostanjevica", + code: "SI-075", + }, + "SI-212": { countryCode: "SI", subdivisionName: "Mirna", code: "SI-212" }, + "SI-170": { countryCode: "SI", subdivisionName: "Mirna Pec", code: "SI-170" }, + "SI-076": { countryCode: "SI", subdivisionName: "Mislinja", code: "SI-076" }, + "SI-199": { + countryCode: "SI", + subdivisionName: "Mokronog-Trebelno", + code: "SI-199", + }, + "SI-077": { countryCode: "SI", subdivisionName: "Moravce", code: "SI-077" }, + "SI-079": { countryCode: "SI", subdivisionName: "Mozirje", code: "SI-079" }, + "SI-080": { + countryCode: "SI", + subdivisionName: "Murska Sobota", + code: "SI-080", + }, + "SI-081": { countryCode: "SI", subdivisionName: "Muta", code: "SI-081" }, + "SI-082": { countryCode: "SI", subdivisionName: "Naklo", code: "SI-082" }, + "SI-083": { countryCode: "SI", subdivisionName: "Nazarje", code: "SI-083" }, + "SI-084": { + countryCode: "SI", + subdivisionName: "Nova Gorica", + code: "SI-084", + }, + "SI-085": { + countryCode: "SI", + subdivisionName: "Novo Mesto", + code: "SI-085", + }, + "SI-086": { countryCode: "SI", subdivisionName: "Odranci", code: "SI-086" }, + "SI-171": { countryCode: "SI", subdivisionName: "Oplotnica", code: "SI-171" }, + "SI-087": { countryCode: "SI", subdivisionName: "Ormoz", code: "SI-087" }, + "SI-090": { countryCode: "SI", subdivisionName: "Piran", code: "SI-090" }, + "SI-091": { countryCode: "SI", subdivisionName: "Pivka", code: "SI-091" }, + "SI-092": { + countryCode: "SI", + subdivisionName: "Podcetrtek", + code: "SI-092", + }, + "SI-172": { countryCode: "SI", subdivisionName: "Podlehnik", code: "SI-172" }, + "SI-200": { countryCode: "SI", subdivisionName: "Poljcane", code: "SI-200" }, + "SI-173": { countryCode: "SI", subdivisionName: "Polzela", code: "SI-173" }, + "SI-094": { countryCode: "SI", subdivisionName: "Postojna", code: "SI-094" }, + "SI-174": { countryCode: "SI", subdivisionName: "Prebold", code: "SI-174" }, + "SI-095": { countryCode: "SI", subdivisionName: "Preddvor", code: "SI-095" }, + "SI-175": { countryCode: "SI", subdivisionName: "Prevalje", code: "SI-175" }, + "SI-096": { countryCode: "SI", subdivisionName: "Ptuj", code: "SI-096" }, + "SI-097": { countryCode: "SI", subdivisionName: "Puconci", code: "SI-097" }, + "SI-098": { countryCode: "SI", subdivisionName: "Race-Fram", code: "SI-098" }, + "SI-099": { countryCode: "SI", subdivisionName: "Radece", code: "SI-099" }, + "SI-100": { countryCode: "SI", subdivisionName: "Radenci", code: "SI-100" }, + "SI-101": { + countryCode: "SI", + subdivisionName: "Radlje ob Dravi", + code: "SI-101", + }, + "SI-102": { + countryCode: "SI", + subdivisionName: "Radovljica", + code: "SI-102", + }, + "SI-103": { + countryCode: "SI", + subdivisionName: "Ravne na Koroskem", + code: "SI-103", + }, + "SI-176": { countryCode: "SI", subdivisionName: "Razkrizje", code: "SI-176" }, + "SI-209": { + countryCode: "SI", + subdivisionName: "Recica ob Savinji", + code: "SI-209", + }, + "SI-201": { + countryCode: "SI", + subdivisionName: "Rence-Vogrsko", + code: "SI-201", + }, + "SI-104": { countryCode: "SI", subdivisionName: "Ribnica", code: "SI-104" }, + "SI-106": { + countryCode: "SI", + subdivisionName: "Rogaska Slatina", + code: "SI-106", + }, + "SI-105": { countryCode: "SI", subdivisionName: "Rogasovci", code: "SI-105" }, + "SI-108": { countryCode: "SI", subdivisionName: "Ruse", code: "SI-108" }, + "SI-033": { countryCode: "SI", subdivisionName: "Salovci", code: "SI-033" }, + "SI-109": { countryCode: "SI", subdivisionName: "Semic", code: "SI-109" }, + "SI-183": { + countryCode: "SI", + subdivisionName: "Sempeter-Vrtojba", + code: "SI-183", + }, + "SI-117": { countryCode: "SI", subdivisionName: "Sencur", code: "SI-117" }, + "SI-118": { countryCode: "SI", subdivisionName: "Sentilj", code: "SI-118" }, + "SI-119": { + countryCode: "SI", + subdivisionName: "Sentjernej", + code: "SI-119", + }, + "SI-120": { countryCode: "SI", subdivisionName: "Sentjur", code: "SI-120" }, + "SI-211": { + countryCode: "SI", + subdivisionName: "Sentrupert", + code: "SI-211", + }, + "SI-110": { countryCode: "SI", subdivisionName: "Sevnica", code: "SI-110" }, + "SI-111": { countryCode: "SI", subdivisionName: "Sezana", code: "SI-111" }, + "SI-121": { countryCode: "SI", subdivisionName: "Skocjan", code: "SI-121" }, + "SI-122": { + countryCode: "SI", + subdivisionName: "Skofja Loka", + code: "SI-122", + }, + "SI-123": { countryCode: "SI", subdivisionName: "Skofljica", code: "SI-123" }, + "SI-112": { + countryCode: "SI", + subdivisionName: "Slovenj Gradec", + code: "SI-112", + }, + "SI-113": { + countryCode: "SI", + subdivisionName: "Slovenska Bistrica", + code: "SI-113", + }, + "SI-114": { + countryCode: "SI", + subdivisionName: "Slovenske Konjice", + code: "SI-114", + }, + "SI-124": { + countryCode: "SI", + subdivisionName: "Smarje pri Jelsah", + code: "SI-124", + }, + "SI-206": { + countryCode: "SI", + subdivisionName: "Smarjeske Toplice", + code: "SI-206", + }, + "SI-125": { + countryCode: "SI", + subdivisionName: "Smartno ob Paki", + code: "SI-125", + }, + "SI-194": { + countryCode: "SI", + subdivisionName: "Smartno pri Litiji", + code: "SI-194", + }, + "SI-179": { countryCode: "SI", subdivisionName: "Sodrazica", code: "SI-179" }, + "SI-180": { countryCode: "SI", subdivisionName: "Solcava", code: "SI-180" }, + "SI-126": { countryCode: "SI", subdivisionName: "Sostanj", code: "SI-126" }, + "SI-115": { countryCode: "SI", subdivisionName: "Starse", code: "SI-115" }, + "SI-127": { countryCode: "SI", subdivisionName: "Store", code: "SI-127" }, + "SI-203": { countryCode: "SI", subdivisionName: "Straza", code: "SI-203" }, + "SI-204": { + countryCode: "SI", + subdivisionName: "Sveta Trojica v Slovenskih goricah", + code: "SI-204", + }, + "SI-182": { + countryCode: "SI", + subdivisionName: "Sveti Andraz v Slovenskih Goricah", + code: "SI-182", + }, + "SI-116": { + countryCode: "SI", + subdivisionName: "Sveti Jurij ob Scavnici", + code: "SI-116", + }, + "SI-210": { + countryCode: "SI", + subdivisionName: "Sveti Jurij v Slovenskih goricah", + code: "SI-210", + }, + "SI-205": { + countryCode: "SI", + subdivisionName: "Sveti Tomaz", + code: "SI-205", + }, + "SI-184": { countryCode: "SI", subdivisionName: "Tabor", code: "SI-184" }, + "SI-010": { countryCode: "SI", subdivisionName: "Tisina", code: "SI-010" }, + "SI-128": { countryCode: "SI", subdivisionName: "Tolmin", code: "SI-128" }, + "SI-129": { countryCode: "SI", subdivisionName: "Trbovlje", code: "SI-129" }, + "SI-130": { countryCode: "SI", subdivisionName: "Trebnje", code: "SI-130" }, + "SI-185": { + countryCode: "SI", + subdivisionName: "Trnovska Vas", + code: "SI-185", + }, + "SI-131": { countryCode: "SI", subdivisionName: "Trzic", code: "SI-131" }, + "SI-186": { countryCode: "SI", subdivisionName: "Trzin", code: "SI-186" }, + "SI-132": { countryCode: "SI", subdivisionName: "Turnisce", code: "SI-132" }, + "SI-133": { countryCode: "SI", subdivisionName: "Velenje", code: "SI-133" }, + "SI-187": { + countryCode: "SI", + subdivisionName: "Velika Polana", + code: "SI-187", + }, + "SI-134": { + countryCode: "SI", + subdivisionName: "Velike Lasce", + code: "SI-134", + }, + "SI-188": { countryCode: "SI", subdivisionName: "Verzej", code: "SI-188" }, + "SI-135": { countryCode: "SI", subdivisionName: "Videm", code: "SI-135" }, + "SI-136": { countryCode: "SI", subdivisionName: "Vipava", code: "SI-136" }, + "SI-137": { countryCode: "SI", subdivisionName: "Vitanje", code: "SI-137" }, + "SI-138": { countryCode: "SI", subdivisionName: "Vodice", code: "SI-138" }, + "SI-139": { countryCode: "SI", subdivisionName: "Vojnik", code: "SI-139" }, + "SI-189": { countryCode: "SI", subdivisionName: "Vransko", code: "SI-189" }, + "SI-140": { countryCode: "SI", subdivisionName: "Vrhnika", code: "SI-140" }, + "SI-141": { countryCode: "SI", subdivisionName: "Vuzenica", code: "SI-141" }, + "SI-142": { + countryCode: "SI", + subdivisionName: "Zagorje ob Savi", + code: "SI-142", + }, + "SI-190": { countryCode: "SI", subdivisionName: "Zalec", code: "SI-190" }, + "SI-143": { countryCode: "SI", subdivisionName: "Zavrc", code: "SI-143" }, + "SI-146": { countryCode: "SI", subdivisionName: "Zelezniki", code: "SI-146" }, + "SI-191": { countryCode: "SI", subdivisionName: "Zetale", code: "SI-191" }, + "SI-147": { countryCode: "SI", subdivisionName: "Ziri", code: "SI-147" }, + "SI-144": { countryCode: "SI", subdivisionName: "Zrece", code: "SI-144" }, + "SI-193": { countryCode: "SI", subdivisionName: "Zuzemberk", code: "SI-193" }, + "SK-BC": { + countryCode: "SK", + subdivisionName: "Banskobystricky kraj", + code: "SK-BC", + }, + "SK-BL": { + countryCode: "SK", + subdivisionName: "Bratislavsky kraj", + code: "SK-BL", + }, + "SK-KI": { + countryCode: "SK", + subdivisionName: "Kosicky kraj", + code: "SK-KI", + }, + "SK-NI": { + countryCode: "SK", + subdivisionName: "Nitriansky kraj", + code: "SK-NI", + }, + "SK-PV": { + countryCode: "SK", + subdivisionName: "Presovsky kraj", + code: "SK-PV", + }, + "SK-TC": { + countryCode: "SK", + subdivisionName: "Trenciansky kraj", + code: "SK-TC", + }, + "SK-TA": { + countryCode: "SK", + subdivisionName: "Trnavsky kraj", + code: "SK-TA", + }, + "SK-ZI": { + countryCode: "SK", + subdivisionName: "Zilinsky kraj", + code: "SK-ZI", + }, + "SL-E": { countryCode: "SL", subdivisionName: "Eastern", code: "SL-E" }, + "SL-NW": { + countryCode: "SL", + subdivisionName: "North Western", + code: "SL-NW", + }, + "SL-N": { countryCode: "SL", subdivisionName: "Northern", code: "SL-N" }, + "SL-S": { countryCode: "SL", subdivisionName: "Southern", code: "SL-S" }, + "SL-W": { countryCode: "SL", subdivisionName: "Western Area", code: "SL-W" }, + "SM-02": { countryCode: "SM", subdivisionName: "Chiesanuova", code: "SM-02" }, + "SM-07": { + countryCode: "SM", + subdivisionName: "Citta di San Marino", + code: "SM-07", + }, + "SM-04": { countryCode: "SM", subdivisionName: "Faetano", code: "SM-04" }, + "SM-09": { countryCode: "SM", subdivisionName: "Serravalle", code: "SM-09" }, + "SN-DK": { countryCode: "SN", subdivisionName: "Dakar", code: "SN-DK" }, + "SN-DB": { countryCode: "SN", subdivisionName: "Diourbel", code: "SN-DB" }, + "SN-FK": { countryCode: "SN", subdivisionName: "Fatick", code: "SN-FK" }, + "SN-KA": { countryCode: "SN", subdivisionName: "Kaffrine", code: "SN-KA" }, + "SN-KL": { countryCode: "SN", subdivisionName: "Kaolack", code: "SN-KL" }, + "SN-KE": { countryCode: "SN", subdivisionName: "Kedougou", code: "SN-KE" }, + "SN-KD": { countryCode: "SN", subdivisionName: "Kolda", code: "SN-KD" }, + "SN-LG": { countryCode: "SN", subdivisionName: "Louga", code: "SN-LG" }, + "SN-MT": { countryCode: "SN", subdivisionName: "Matam", code: "SN-MT" }, + "SN-SL": { countryCode: "SN", subdivisionName: "Saint-Louis", code: "SN-SL" }, + "SN-SE": { countryCode: "SN", subdivisionName: "Sedhiou", code: "SN-SE" }, + "SN-TC": { countryCode: "SN", subdivisionName: "Tambacounda", code: "SN-TC" }, + "SN-TH": { countryCode: "SN", subdivisionName: "Thies", code: "SN-TH" }, + "SN-ZG": { countryCode: "SN", subdivisionName: "Ziguinchor", code: "SN-ZG" }, + "SO-AW": { countryCode: "SO", subdivisionName: "Awdal", code: "SO-AW" }, + "SO-BN": { countryCode: "SO", subdivisionName: "Banaadir", code: "SO-BN" }, + "SO-BR": { countryCode: "SO", subdivisionName: "Bari", code: "SO-BR" }, + "SO-BY": { countryCode: "SO", subdivisionName: "Bay", code: "SO-BY" }, + "SO-GA": { countryCode: "SO", subdivisionName: "Galguduud", code: "SO-GA" }, + "SO-GE": { countryCode: "SO", subdivisionName: "Gedo", code: "SO-GE" }, + "SO-HI": { countryCode: "SO", subdivisionName: "Hiiraan", code: "SO-HI" }, + "SO-JH": { + countryCode: "SO", + subdivisionName: "Jubbada Hoose", + code: "SO-JH", + }, + "SO-MU": { countryCode: "SO", subdivisionName: "Mudug", code: "SO-MU" }, + "SO-NU": { countryCode: "SO", subdivisionName: "Nugaal", code: "SO-NU" }, + "SO-SO": { countryCode: "SO", subdivisionName: "Sool", code: "SO-SO" }, + "SO-TO": { countryCode: "SO", subdivisionName: "Togdheer", code: "SO-TO" }, + "SO-WO": { + countryCode: "SO", + subdivisionName: "Woqooyi Galbeed", + code: "SO-WO", + }, + "SR-BR": { countryCode: "SR", subdivisionName: "Brokopondo", code: "SR-BR" }, + "SR-CM": { countryCode: "SR", subdivisionName: "Commewijne", code: "SR-CM" }, + "SR-CR": { countryCode: "SR", subdivisionName: "Coronie", code: "SR-CR" }, + "SR-NI": { countryCode: "SR", subdivisionName: "Nickerie", code: "SR-NI" }, + "SR-PR": { countryCode: "SR", subdivisionName: "Para", code: "SR-PR" }, + "SR-PM": { countryCode: "SR", subdivisionName: "Paramaribo", code: "SR-PM" }, + "SR-SA": { countryCode: "SR", subdivisionName: "Saramacca", code: "SR-SA" }, + "SR-SI": { countryCode: "SR", subdivisionName: "Sipaliwini", code: "SR-SI" }, + "SR-WA": { countryCode: "SR", subdivisionName: "Wanica", code: "SR-WA" }, + "SS-EC": { + countryCode: "SS", + subdivisionName: "Central Equatoria", + code: "SS-EC", + }, + "SS-EE": { + countryCode: "SS", + subdivisionName: "Eastern Equatoria", + code: "SS-EE", + }, + "SS-BN": { + countryCode: "SS", + subdivisionName: "Northern Bahr el Ghazal", + code: "SS-BN", + }, + "SS-UY": { countryCode: "SS", subdivisionName: "Unity", code: "SS-UY" }, + "SS-NU": { countryCode: "SS", subdivisionName: "Upper Nile", code: "SS-NU" }, + "SS-EW": { + countryCode: "SS", + subdivisionName: "Western Equatoria", + code: "SS-EW", + }, + "ST-01": { countryCode: "ST", subdivisionName: "Agua Grande", code: "ST-01" }, + "SV-AH": { countryCode: "SV", subdivisionName: "Ahuachapan", code: "SV-AH" }, + "SV-CA": { countryCode: "SV", subdivisionName: "Cabanas", code: "SV-CA" }, + "SV-CH": { + countryCode: "SV", + subdivisionName: "Chalatenango", + code: "SV-CH", + }, + "SV-CU": { countryCode: "SV", subdivisionName: "Cuscatlan", code: "SV-CU" }, + "SV-LI": { countryCode: "SV", subdivisionName: "La Libertad", code: "SV-LI" }, + "SV-PA": { countryCode: "SV", subdivisionName: "La Paz", code: "SV-PA" }, + "SV-UN": { countryCode: "SV", subdivisionName: "La Union", code: "SV-UN" }, + "SV-MO": { countryCode: "SV", subdivisionName: "Morazan", code: "SV-MO" }, + "SV-SM": { countryCode: "SV", subdivisionName: "San Miguel", code: "SV-SM" }, + "SV-SS": { + countryCode: "SV", + subdivisionName: "San Salvador", + code: "SV-SS", + }, + "SV-SV": { countryCode: "SV", subdivisionName: "San Vicente", code: "SV-SV" }, + "SV-SA": { countryCode: "SV", subdivisionName: "Santa Ana", code: "SV-SA" }, + "SV-SO": { countryCode: "SV", subdivisionName: "Sonsonate", code: "SV-SO" }, + "SV-US": { countryCode: "SV", subdivisionName: "Usulutan", code: "SV-US" }, + "SY-HA": { countryCode: "SY", subdivisionName: "Al Hasakah", code: "SY-HA" }, + "SY-LA": { + countryCode: "SY", + subdivisionName: "Al Ladhiqiyah", + code: "SY-LA", + }, + "SY-QU": { + countryCode: "SY", + subdivisionName: "Al Qunaytirah", + code: "SY-QU", + }, + "SY-RA": { countryCode: "SY", subdivisionName: "Ar Raqqah", code: "SY-RA" }, + "SY-SU": { countryCode: "SY", subdivisionName: "As Suwayda'", code: "SY-SU" }, + "SY-DR": { countryCode: "SY", subdivisionName: "Dar'a", code: "SY-DR" }, + "SY-DY": { + countryCode: "SY", + subdivisionName: "Dayr az Zawr", + code: "SY-DY", + }, + "SY-DI": { countryCode: "SY", subdivisionName: "Dimashq", code: "SY-DI" }, + "SY-HL": { countryCode: "SY", subdivisionName: "Halab", code: "SY-HL" }, + "SY-HM": { countryCode: "SY", subdivisionName: "Hamah", code: "SY-HM" }, + "SY-HI": { countryCode: "SY", subdivisionName: "Hims", code: "SY-HI" }, + "SY-ID": { countryCode: "SY", subdivisionName: "Idlib", code: "SY-ID" }, + "SY-RD": { countryCode: "SY", subdivisionName: "Rif Dimashq", code: "SY-RD" }, + "SY-TA": { countryCode: "SY", subdivisionName: "Tartus", code: "SY-TA" }, + "SZ-HH": { countryCode: "SZ", subdivisionName: "Hhohho", code: "SZ-HH" }, + "SZ-LU": { countryCode: "SZ", subdivisionName: "Lubombo", code: "SZ-LU" }, + "SZ-MA": { countryCode: "SZ", subdivisionName: "Manzini", code: "SZ-MA" }, + "TD-BG": { + countryCode: "TD", + subdivisionName: "Bahr el Ghazal", + code: "TD-BG", + }, + "TD-CB": { + countryCode: "TD", + subdivisionName: "Chari-Baguirmi", + code: "TD-CB", + }, + "TD-GR": { countryCode: "TD", subdivisionName: "Guera", code: "TD-GR" }, + "TD-LC": { countryCode: "TD", subdivisionName: "Lac", code: "TD-LC" }, + "TD-LR": { + countryCode: "TD", + subdivisionName: "Logone-Oriental", + code: "TD-LR", + }, + "TD-OD": { countryCode: "TD", subdivisionName: "Ouaddai", code: "TD-OD" }, + "TD-ND": { + countryCode: "TD", + subdivisionName: "Ville de Ndjamena", + code: "TD-ND", + }, + "TG-C": { countryCode: "TG", subdivisionName: "Centrale", code: "TG-C" }, + "TG-K": { countryCode: "TG", subdivisionName: "Kara", code: "TG-K" }, + "TG-M": { countryCode: "TG", subdivisionName: "Maritime", code: "TG-M" }, + "TG-P": { countryCode: "TG", subdivisionName: "Plateaux", code: "TG-P" }, + "TG-S": { countryCode: "TG", subdivisionName: "Savanes", code: "TG-S" }, + "TH-37": { + countryCode: "TH", + subdivisionName: "Amnat Charoen", + code: "TH-37", + }, + "TH-15": { countryCode: "TH", subdivisionName: "Ang Thong", code: "TH-15" }, + "TH-38": { countryCode: "TH", subdivisionName: "Bueng Kan", code: "TH-38" }, + "TH-31": { countryCode: "TH", subdivisionName: "Buri Ram", code: "TH-31" }, + "TH-24": { + countryCode: "TH", + subdivisionName: "Chachoengsao", + code: "TH-24", + }, + "TH-18": { countryCode: "TH", subdivisionName: "Chai Nat", code: "TH-18" }, + "TH-36": { countryCode: "TH", subdivisionName: "Chaiyaphum", code: "TH-36" }, + "TH-22": { countryCode: "TH", subdivisionName: "Chanthaburi", code: "TH-22" }, + "TH-50": { countryCode: "TH", subdivisionName: "Chiang Mai", code: "TH-50" }, + "TH-57": { countryCode: "TH", subdivisionName: "Chiang Rai", code: "TH-57" }, + "TH-20": { countryCode: "TH", subdivisionName: "Chon Buri", code: "TH-20" }, + "TH-86": { countryCode: "TH", subdivisionName: "Chumphon", code: "TH-86" }, + "TH-46": { countryCode: "TH", subdivisionName: "Kalasin", code: "TH-46" }, + "TH-62": { + countryCode: "TH", + subdivisionName: "Kamphaeng Phet", + code: "TH-62", + }, + "TH-71": { + countryCode: "TH", + subdivisionName: "Kanchanaburi", + code: "TH-71", + }, + "TH-40": { countryCode: "TH", subdivisionName: "Khon Kaen", code: "TH-40" }, + "TH-81": { countryCode: "TH", subdivisionName: "Krabi", code: "TH-81" }, + "TH-10": { + countryCode: "TH", + subdivisionName: "Krung Thep Maha Nakhon", + code: "TH-10", + }, + "TH-52": { countryCode: "TH", subdivisionName: "Lampang", code: "TH-52" }, + "TH-51": { countryCode: "TH", subdivisionName: "Lamphun", code: "TH-51" }, + "TH-42": { countryCode: "TH", subdivisionName: "Loei", code: "TH-42" }, + "TH-16": { countryCode: "TH", subdivisionName: "Lop Buri", code: "TH-16" }, + "TH-58": { + countryCode: "TH", + subdivisionName: "Mae Hong Son", + code: "TH-58", + }, + "TH-44": { + countryCode: "TH", + subdivisionName: "Maha Sarakham", + code: "TH-44", + }, + "TH-49": { countryCode: "TH", subdivisionName: "Mukdahan", code: "TH-49" }, + "TH-26": { + countryCode: "TH", + subdivisionName: "Nakhon Nayok", + code: "TH-26", + }, + "TH-73": { + countryCode: "TH", + subdivisionName: "Nakhon Pathom", + code: "TH-73", + }, + "TH-48": { + countryCode: "TH", + subdivisionName: "Nakhon Phanom", + code: "TH-48", + }, + "TH-30": { + countryCode: "TH", + subdivisionName: "Nakhon Ratchasima", + code: "TH-30", + }, + "TH-60": { + countryCode: "TH", + subdivisionName: "Nakhon Sawan", + code: "TH-60", + }, + "TH-80": { + countryCode: "TH", + subdivisionName: "Nakhon Si Thammarat", + code: "TH-80", + }, + "TH-55": { countryCode: "TH", subdivisionName: "Nan", code: "TH-55" }, + "TH-96": { countryCode: "TH", subdivisionName: "Narathiwat", code: "TH-96" }, + "TH-39": { + countryCode: "TH", + subdivisionName: "Nong Bua Lam Phu", + code: "TH-39", + }, + "TH-43": { countryCode: "TH", subdivisionName: "Nong Khai", code: "TH-43" }, + "TH-12": { countryCode: "TH", subdivisionName: "Nonthaburi", code: "TH-12" }, + "TH-13": { + countryCode: "TH", + subdivisionName: "Pathum Thani", + code: "TH-13", + }, + "TH-94": { countryCode: "TH", subdivisionName: "Pattani", code: "TH-94" }, + "TH-82": { countryCode: "TH", subdivisionName: "Phangnga", code: "TH-82" }, + "TH-93": { countryCode: "TH", subdivisionName: "Phatthalung", code: "TH-93" }, + "TH-56": { countryCode: "TH", subdivisionName: "Phayao", code: "TH-56" }, + "TH-67": { countryCode: "TH", subdivisionName: "Phetchabun", code: "TH-67" }, + "TH-76": { countryCode: "TH", subdivisionName: "Phetchaburi", code: "TH-76" }, + "TH-66": { countryCode: "TH", subdivisionName: "Phichit", code: "TH-66" }, + "TH-65": { countryCode: "TH", subdivisionName: "Phitsanulok", code: "TH-65" }, + "TH-14": { + countryCode: "TH", + subdivisionName: "Phra Nakhon Si Ayutthaya", + code: "TH-14", + }, + "TH-54": { countryCode: "TH", subdivisionName: "Phrae", code: "TH-54" }, + "TH-83": { countryCode: "TH", subdivisionName: "Phuket", code: "TH-83" }, + "TH-25": { + countryCode: "TH", + subdivisionName: "Prachin Buri", + code: "TH-25", + }, + "TH-77": { + countryCode: "TH", + subdivisionName: "Prachuap Khiri Khan", + code: "TH-77", + }, + "TH-85": { countryCode: "TH", subdivisionName: "Ranong", code: "TH-85" }, + "TH-70": { countryCode: "TH", subdivisionName: "Ratchaburi", code: "TH-70" }, + "TH-21": { countryCode: "TH", subdivisionName: "Rayong", code: "TH-21" }, + "TH-45": { countryCode: "TH", subdivisionName: "Roi Et", code: "TH-45" }, + "TH-27": { countryCode: "TH", subdivisionName: "Sa Kaeo", code: "TH-27" }, + "TH-47": { + countryCode: "TH", + subdivisionName: "Sakon Nakhon", + code: "TH-47", + }, + "TH-11": { + countryCode: "TH", + subdivisionName: "Samut Prakan", + code: "TH-11", + }, + "TH-74": { + countryCode: "TH", + subdivisionName: "Samut Sakhon", + code: "TH-74", + }, + "TH-75": { + countryCode: "TH", + subdivisionName: "Samut Songkhram", + code: "TH-75", + }, + "TH-19": { countryCode: "TH", subdivisionName: "Saraburi", code: "TH-19" }, + "TH-91": { countryCode: "TH", subdivisionName: "Satun", code: "TH-91" }, + "TH-33": { countryCode: "TH", subdivisionName: "Si Sa Ket", code: "TH-33" }, + "TH-17": { countryCode: "TH", subdivisionName: "Sing Buri", code: "TH-17" }, + "TH-90": { countryCode: "TH", subdivisionName: "Songkhla", code: "TH-90" }, + "TH-64": { countryCode: "TH", subdivisionName: "Sukhothai", code: "TH-64" }, + "TH-72": { countryCode: "TH", subdivisionName: "Suphan Buri", code: "TH-72" }, + "TH-84": { countryCode: "TH", subdivisionName: "Surat Thani", code: "TH-84" }, + "TH-32": { countryCode: "TH", subdivisionName: "Surin", code: "TH-32" }, + "TH-63": { countryCode: "TH", subdivisionName: "Tak", code: "TH-63" }, + "TH-92": { countryCode: "TH", subdivisionName: "Trang", code: "TH-92" }, + "TH-23": { countryCode: "TH", subdivisionName: "Trat", code: "TH-23" }, + "TH-34": { + countryCode: "TH", + subdivisionName: "Ubon Ratchathani", + code: "TH-34", + }, + "TH-41": { countryCode: "TH", subdivisionName: "Udon Thani", code: "TH-41" }, + "TH-61": { countryCode: "TH", subdivisionName: "Uthai Thani", code: "TH-61" }, + "TH-53": { countryCode: "TH", subdivisionName: "Uttaradit", code: "TH-53" }, + "TH-95": { countryCode: "TH", subdivisionName: "Yala", code: "TH-95" }, + "TH-35": { countryCode: "TH", subdivisionName: "Yasothon", code: "TH-35" }, + "TJ-DU": { countryCode: "TJ", subdivisionName: "Dushanbe", code: "TJ-DU" }, + "TJ-KT": { countryCode: "TJ", subdivisionName: "Khatlon", code: "TJ-KT" }, + "TJ-GB": { + countryCode: "TJ", + subdivisionName: "Kuhistoni Badakhshon", + code: "TJ-GB", + }, + "TJ-RA": { + countryCode: "TJ", + subdivisionName: "Nohiyahoi Tobei Jumhuri", + code: "TJ-RA", + }, + "TJ-SU": { countryCode: "TJ", subdivisionName: "Sughd", code: "TJ-SU" }, + "TL-AL": { countryCode: "TL", subdivisionName: "Aileu", code: "TL-AL" }, + "TL-AN": { countryCode: "TL", subdivisionName: "Ainaro", code: "TL-AN" }, + "TL-CO": { countryCode: "TL", subdivisionName: "Cova Lima", code: "TL-CO" }, + "TL-DI": { countryCode: "TL", subdivisionName: "Dili", code: "TL-DI" }, + "TL-LI": { countryCode: "TL", subdivisionName: "Liquica", code: "TL-LI" }, + "TM-A": { countryCode: "TM", subdivisionName: "Ahal", code: "TM-A" }, + "TM-B": { countryCode: "TM", subdivisionName: "Balkan", code: "TM-B" }, + "TM-D": { countryCode: "TM", subdivisionName: "Dasoguz", code: "TM-D" }, + "TM-L": { countryCode: "TM", subdivisionName: "Lebap", code: "TM-L" }, + "TM-M": { countryCode: "TM", subdivisionName: "Mary", code: "TM-M" }, + "TN-31": { countryCode: "TN", subdivisionName: "Beja", code: "TN-31" }, + "TN-13": { countryCode: "TN", subdivisionName: "Ben Arous", code: "TN-13" }, + "TN-23": { countryCode: "TN", subdivisionName: "Bizerte", code: "TN-23" }, + "TN-81": { countryCode: "TN", subdivisionName: "Gabes", code: "TN-81" }, + "TN-71": { countryCode: "TN", subdivisionName: "Gafsa", code: "TN-71" }, + "TN-32": { countryCode: "TN", subdivisionName: "Jendouba", code: "TN-32" }, + "TN-41": { countryCode: "TN", subdivisionName: "Kairouan", code: "TN-41" }, + "TN-42": { countryCode: "TN", subdivisionName: "Kasserine", code: "TN-42" }, + "TN-73": { countryCode: "TN", subdivisionName: "Kebili", code: "TN-73" }, + "TN-12": { countryCode: "TN", subdivisionName: "L'Ariana", code: "TN-12" }, + "TN-14": { countryCode: "TN", subdivisionName: "La Manouba", code: "TN-14" }, + "TN-33": { countryCode: "TN", subdivisionName: "Le Kef", code: "TN-33" }, + "TN-53": { countryCode: "TN", subdivisionName: "Mahdia", code: "TN-53" }, + "TN-82": { countryCode: "TN", subdivisionName: "Medenine", code: "TN-82" }, + "TN-52": { countryCode: "TN", subdivisionName: "Monastir", code: "TN-52" }, + "TN-21": { countryCode: "TN", subdivisionName: "Nabeul", code: "TN-21" }, + "TN-61": { countryCode: "TN", subdivisionName: "Sfax", code: "TN-61" }, + "TN-43": { countryCode: "TN", subdivisionName: "Sidi Bouzid", code: "TN-43" }, + "TN-34": { countryCode: "TN", subdivisionName: "Siliana", code: "TN-34" }, + "TN-51": { countryCode: "TN", subdivisionName: "Sousse", code: "TN-51" }, + "TN-83": { countryCode: "TN", subdivisionName: "Tataouine", code: "TN-83" }, + "TN-72": { countryCode: "TN", subdivisionName: "Tozeur", code: "TN-72" }, + "TN-11": { countryCode: "TN", subdivisionName: "Tunis", code: "TN-11" }, + "TN-22": { countryCode: "TN", subdivisionName: "Zaghouan", code: "TN-22" }, + "TO-01": { countryCode: "TO", subdivisionName: "'Eua", code: "TO-01" }, + "TO-02": { countryCode: "TO", subdivisionName: "Ha'apai", code: "TO-02" }, + "TO-03": { countryCode: "TO", subdivisionName: "Niuas", code: "TO-03" }, + "TO-04": { countryCode: "TO", subdivisionName: "Tongatapu", code: "TO-04" }, + "TO-05": { countryCode: "TO", subdivisionName: "Vava'u", code: "TO-05" }, + "TR-01": { countryCode: "TR", subdivisionName: "Adana", code: "TR-01" }, + "TR-02": { countryCode: "TR", subdivisionName: "Adiyaman", code: "TR-02" }, + "TR-03": { + countryCode: "TR", + subdivisionName: "Afyonkarahisar", + code: "TR-03", + }, + "TR-04": { countryCode: "TR", subdivisionName: "Agri", code: "TR-04" }, + "TR-68": { countryCode: "TR", subdivisionName: "Aksaray", code: "TR-68" }, + "TR-05": { countryCode: "TR", subdivisionName: "Amasya", code: "TR-05" }, + "TR-06": { countryCode: "TR", subdivisionName: "Ankara", code: "TR-06" }, + "TR-07": { countryCode: "TR", subdivisionName: "Antalya", code: "TR-07" }, + "TR-75": { countryCode: "TR", subdivisionName: "Ardahan", code: "TR-75" }, + "TR-08": { countryCode: "TR", subdivisionName: "Artvin", code: "TR-08" }, + "TR-09": { countryCode: "TR", subdivisionName: "Aydin", code: "TR-09" }, + "TR-10": { countryCode: "TR", subdivisionName: "Balikesir", code: "TR-10" }, + "TR-74": { countryCode: "TR", subdivisionName: "Bartin", code: "TR-74" }, + "TR-72": { countryCode: "TR", subdivisionName: "Batman", code: "TR-72" }, + "TR-69": { countryCode: "TR", subdivisionName: "Bayburt", code: "TR-69" }, + "TR-11": { countryCode: "TR", subdivisionName: "Bilecik", code: "TR-11" }, + "TR-12": { countryCode: "TR", subdivisionName: "Bingol", code: "TR-12" }, + "TR-13": { countryCode: "TR", subdivisionName: "Bitlis", code: "TR-13" }, + "TR-14": { countryCode: "TR", subdivisionName: "Bolu", code: "TR-14" }, + "TR-15": { countryCode: "TR", subdivisionName: "Burdur", code: "TR-15" }, + "TR-16": { countryCode: "TR", subdivisionName: "Bursa", code: "TR-16" }, + "TR-17": { countryCode: "TR", subdivisionName: "Canakkale", code: "TR-17" }, + "TR-18": { countryCode: "TR", subdivisionName: "Cankiri", code: "TR-18" }, + "TR-19": { countryCode: "TR", subdivisionName: "Corum", code: "TR-19" }, + "TR-20": { countryCode: "TR", subdivisionName: "Denizli", code: "TR-20" }, + "TR-21": { countryCode: "TR", subdivisionName: "Diyarbakir", code: "TR-21" }, + "TR-81": { countryCode: "TR", subdivisionName: "Duzce", code: "TR-81" }, + "TR-22": { countryCode: "TR", subdivisionName: "Edirne", code: "TR-22" }, + "TR-23": { countryCode: "TR", subdivisionName: "Elazig", code: "TR-23" }, + "TR-24": { countryCode: "TR", subdivisionName: "Erzincan", code: "TR-24" }, + "TR-25": { countryCode: "TR", subdivisionName: "Erzurum", code: "TR-25" }, + "TR-26": { countryCode: "TR", subdivisionName: "Eskisehir", code: "TR-26" }, + "TR-27": { countryCode: "TR", subdivisionName: "Gaziantep", code: "TR-27" }, + "TR-28": { countryCode: "TR", subdivisionName: "Giresun", code: "TR-28" }, + "TR-29": { countryCode: "TR", subdivisionName: "Gumushane", code: "TR-29" }, + "TR-30": { countryCode: "TR", subdivisionName: "Hakkari", code: "TR-30" }, + "TR-31": { countryCode: "TR", subdivisionName: "Hatay", code: "TR-31" }, + "TR-76": { countryCode: "TR", subdivisionName: "Igdir", code: "TR-76" }, + "TR-32": { countryCode: "TR", subdivisionName: "Isparta", code: "TR-32" }, + "TR-34": { countryCode: "TR", subdivisionName: "Istanbul", code: "TR-34" }, + "TR-35": { countryCode: "TR", subdivisionName: "Izmir", code: "TR-35" }, + "TR-46": { + countryCode: "TR", + subdivisionName: "Kahramanmaras", + code: "TR-46", + }, + "TR-78": { countryCode: "TR", subdivisionName: "Karabuk", code: "TR-78" }, + "TR-70": { countryCode: "TR", subdivisionName: "Karaman", code: "TR-70" }, + "TR-36": { countryCode: "TR", subdivisionName: "Kars", code: "TR-36" }, + "TR-37": { countryCode: "TR", subdivisionName: "Kastamonu", code: "TR-37" }, + "TR-38": { countryCode: "TR", subdivisionName: "Kayseri", code: "TR-38" }, + "TR-79": { countryCode: "TR", subdivisionName: "Kilis", code: "TR-79" }, + "TR-71": { countryCode: "TR", subdivisionName: "Kirikkale", code: "TR-71" }, + "TR-39": { countryCode: "TR", subdivisionName: "Kirklareli", code: "TR-39" }, + "TR-40": { countryCode: "TR", subdivisionName: "Kirsehir", code: "TR-40" }, + "TR-41": { countryCode: "TR", subdivisionName: "Kocaeli", code: "TR-41" }, + "TR-42": { countryCode: "TR", subdivisionName: "Konya", code: "TR-42" }, + "TR-43": { countryCode: "TR", subdivisionName: "Kutahya", code: "TR-43" }, + "TR-44": { countryCode: "TR", subdivisionName: "Malatya", code: "TR-44" }, + "TR-45": { countryCode: "TR", subdivisionName: "Manisa", code: "TR-45" }, + "TR-47": { countryCode: "TR", subdivisionName: "Mardin", code: "TR-47" }, + "TR-33": { countryCode: "TR", subdivisionName: "Mersin", code: "TR-33" }, + "TR-48": { countryCode: "TR", subdivisionName: "Mugla", code: "TR-48" }, + "TR-49": { countryCode: "TR", subdivisionName: "Mus", code: "TR-49" }, + "TR-50": { countryCode: "TR", subdivisionName: "Nevsehir", code: "TR-50" }, + "TR-51": { countryCode: "TR", subdivisionName: "Nigde", code: "TR-51" }, + "TR-52": { countryCode: "TR", subdivisionName: "Ordu", code: "TR-52" }, + "TR-80": { countryCode: "TR", subdivisionName: "Osmaniye", code: "TR-80" }, + "TR-53": { countryCode: "TR", subdivisionName: "Rize", code: "TR-53" }, + "TR-54": { countryCode: "TR", subdivisionName: "Sakarya", code: "TR-54" }, + "TR-55": { countryCode: "TR", subdivisionName: "Samsun", code: "TR-55" }, + "TR-63": { countryCode: "TR", subdivisionName: "Sanliurfa", code: "TR-63" }, + "TR-56": { countryCode: "TR", subdivisionName: "Siirt", code: "TR-56" }, + "TR-57": { countryCode: "TR", subdivisionName: "Sinop", code: "TR-57" }, + "TR-73": { countryCode: "TR", subdivisionName: "Sirnak", code: "TR-73" }, + "TR-58": { countryCode: "TR", subdivisionName: "Sivas", code: "TR-58" }, + "TR-59": { countryCode: "TR", subdivisionName: "Tekirdag", code: "TR-59" }, + "TR-60": { countryCode: "TR", subdivisionName: "Tokat", code: "TR-60" }, + "TR-61": { countryCode: "TR", subdivisionName: "Trabzon", code: "TR-61" }, + "TR-62": { countryCode: "TR", subdivisionName: "Tunceli", code: "TR-62" }, + "TR-64": { countryCode: "TR", subdivisionName: "Usak", code: "TR-64" }, + "TR-65": { countryCode: "TR", subdivisionName: "Van", code: "TR-65" }, + "TR-77": { countryCode: "TR", subdivisionName: "Yalova", code: "TR-77" }, + "TR-66": { countryCode: "TR", subdivisionName: "Yozgat", code: "TR-66" }, + "TR-67": { countryCode: "TR", subdivisionName: "Zonguldak", code: "TR-67" }, + "TT-ARI": { countryCode: "TT", subdivisionName: "Arima", code: "TT-ARI" }, + "TT-CHA": { countryCode: "TT", subdivisionName: "Chaguanas", code: "TT-CHA" }, + "TT-CTT": { + countryCode: "TT", + subdivisionName: "Couva-Tabaquite-Talparo", + code: "TT-CTT", + }, + "TT-DMN": { + countryCode: "TT", + subdivisionName: "Diego Martin", + code: "TT-DMN", + }, + "TT-MRC": { + countryCode: "TT", + subdivisionName: "Mayaro-Rio Claro", + code: "TT-MRC", + }, + "TT-PED": { + countryCode: "TT", + subdivisionName: "Penal-Debe", + code: "TT-PED", + }, + "TT-PTF": { + countryCode: "TT", + subdivisionName: "Point Fortin", + code: "TT-PTF", + }, + "TT-POS": { + countryCode: "TT", + subdivisionName: "Port of Spain", + code: "TT-POS", + }, + "TT-PRT": { + countryCode: "TT", + subdivisionName: "Princes Town", + code: "TT-PRT", + }, + "TT-SFO": { + countryCode: "TT", + subdivisionName: "San Fernando", + code: "TT-SFO", + }, + "TT-SJL": { + countryCode: "TT", + subdivisionName: "San Juan-Laventille", + code: "TT-SJL", + }, + "TT-SGE": { + countryCode: "TT", + subdivisionName: "Sangre Grande", + code: "TT-SGE", + }, + "TT-SIP": { countryCode: "TT", subdivisionName: "Siparia", code: "TT-SIP" }, + "TT-TOB": { countryCode: "TT", subdivisionName: "Tobago", code: "TT-TOB" }, + "TT-TUP": { + countryCode: "TT", + subdivisionName: "Tunapuna-Piarco", + code: "TT-TUP", + }, + "TV-FUN": { countryCode: "TV", subdivisionName: "Funafuti", code: "TV-FUN" }, + "TW-CHA": { countryCode: "TW", subdivisionName: "Changhua", code: "TW-CHA" }, + "TW-CYQ": { countryCode: "TW", subdivisionName: "Chiayi", code: "TW-CYQ" }, + "TW-HSQ": { countryCode: "TW", subdivisionName: "Hsinchu", code: "TW-HSQ" }, + "TW-HUA": { countryCode: "TW", subdivisionName: "Hualien", code: "TW-HUA" }, + "TW-KHH": { countryCode: "TW", subdivisionName: "Kaohsiung", code: "TW-KHH" }, + "TW-KEE": { countryCode: "TW", subdivisionName: "Keelung", code: "TW-KEE" }, + "TW-KIN": { countryCode: "TW", subdivisionName: "Kinmen", code: "TW-KIN" }, + "TW-LIE": { + countryCode: "TW", + subdivisionName: "Lienchiang", + code: "TW-LIE", + }, + "TW-MIA": { countryCode: "TW", subdivisionName: "Miaoli", code: "TW-MIA" }, + "TW-NAN": { countryCode: "TW", subdivisionName: "Nantou", code: "TW-NAN" }, + "TW-NWT": { + countryCode: "TW", + subdivisionName: "New Taipei", + code: "TW-NWT", + }, + "TW-PEN": { countryCode: "TW", subdivisionName: "Penghu", code: "TW-PEN" }, + "TW-PIF": { countryCode: "TW", subdivisionName: "Pingtung", code: "TW-PIF" }, + "TW-TXG": { countryCode: "TW", subdivisionName: "Taichung", code: "TW-TXG" }, + "TW-TNN": { countryCode: "TW", subdivisionName: "Tainan", code: "TW-TNN" }, + "TW-TPE": { countryCode: "TW", subdivisionName: "Taipei", code: "TW-TPE" }, + "TW-TTT": { countryCode: "TW", subdivisionName: "Taitung", code: "TW-TTT" }, + "TW-TAO": { countryCode: "TW", subdivisionName: "Taoyuan", code: "TW-TAO" }, + "TW-ILA": { countryCode: "TW", subdivisionName: "Yilan", code: "TW-ILA" }, + "TW-YUN": { countryCode: "TW", subdivisionName: "Yunlin", code: "TW-YUN" }, + "TZ-01": { countryCode: "TZ", subdivisionName: "Arusha", code: "TZ-01" }, + "TZ-02": { + countryCode: "TZ", + subdivisionName: "Dar es Salaam", + code: "TZ-02", + }, + "TZ-03": { countryCode: "TZ", subdivisionName: "Dodoma", code: "TZ-03" }, + "TZ-27": { countryCode: "TZ", subdivisionName: "Geita", code: "TZ-27" }, + "TZ-04": { countryCode: "TZ", subdivisionName: "Iringa", code: "TZ-04" }, + "TZ-05": { countryCode: "TZ", subdivisionName: "Kagera", code: "TZ-05" }, + "TZ-06": { + countryCode: "TZ", + subdivisionName: "Kaskazini Pemba", + code: "TZ-06", + }, + "TZ-07": { + countryCode: "TZ", + subdivisionName: "Kaskazini Unguja", + code: "TZ-07", + }, + "TZ-28": { countryCode: "TZ", subdivisionName: "Katavi", code: "TZ-28" }, + "TZ-08": { countryCode: "TZ", subdivisionName: "Kigoma", code: "TZ-08" }, + "TZ-09": { countryCode: "TZ", subdivisionName: "Kilimanjaro", code: "TZ-09" }, + "TZ-10": { + countryCode: "TZ", + subdivisionName: "Kusini Pemba", + code: "TZ-10", + }, + "TZ-11": { + countryCode: "TZ", + subdivisionName: "Kusini Unguja", + code: "TZ-11", + }, + "TZ-12": { countryCode: "TZ", subdivisionName: "Lindi", code: "TZ-12" }, + "TZ-26": { countryCode: "TZ", subdivisionName: "Manyara", code: "TZ-26" }, + "TZ-13": { countryCode: "TZ", subdivisionName: "Mara", code: "TZ-13" }, + "TZ-14": { countryCode: "TZ", subdivisionName: "Mbeya", code: "TZ-14" }, + "TZ-15": { + countryCode: "TZ", + subdivisionName: "Mjini Magharibi", + code: "TZ-15", + }, + "TZ-16": { countryCode: "TZ", subdivisionName: "Morogoro", code: "TZ-16" }, + "TZ-17": { countryCode: "TZ", subdivisionName: "Mtwara", code: "TZ-17" }, + "TZ-18": { countryCode: "TZ", subdivisionName: "Mwanza", code: "TZ-18" }, + "TZ-29": { countryCode: "TZ", subdivisionName: "Njombe", code: "TZ-29" }, + "TZ-19": { countryCode: "TZ", subdivisionName: "Pwani", code: "TZ-19" }, + "TZ-20": { countryCode: "TZ", subdivisionName: "Rukwa", code: "TZ-20" }, + "TZ-21": { countryCode: "TZ", subdivisionName: "Ruvuma", code: "TZ-21" }, + "TZ-22": { countryCode: "TZ", subdivisionName: "Shinyanga", code: "TZ-22" }, + "TZ-30": { countryCode: "TZ", subdivisionName: "Simiyu", code: "TZ-30" }, + "TZ-23": { countryCode: "TZ", subdivisionName: "Singida", code: "TZ-23" }, + "TZ-31": { countryCode: "TZ", subdivisionName: "Songwe", code: "TZ-31" }, + "TZ-24": { countryCode: "TZ", subdivisionName: "Tabora", code: "TZ-24" }, + "TZ-25": { countryCode: "TZ", subdivisionName: "Tanga", code: "TZ-25" }, + "UA-43": { + countryCode: "UA", + subdivisionName: "Avtonomna Respublika Krym", + code: "UA-43", + }, + "UA-71": { + countryCode: "UA", + subdivisionName: "Cherkaska oblast", + code: "UA-71", + }, + "UA-74": { + countryCode: "UA", + subdivisionName: "Chernihivska oblast", + code: "UA-74", + }, + "UA-77": { + countryCode: "UA", + subdivisionName: "Chernivetska oblast", + code: "UA-77", + }, + "UA-12": { + countryCode: "UA", + subdivisionName: "Dnipropetrovska oblast", + code: "UA-12", + }, + "UA-14": { + countryCode: "UA", + subdivisionName: "Donetska oblast", + code: "UA-14", + }, + "UA-26": { + countryCode: "UA", + subdivisionName: "Ivano-Frankivska oblast", + code: "UA-26", + }, + "UA-63": { + countryCode: "UA", + subdivisionName: "Kharkivska oblast", + code: "UA-63", + }, + "UA-65": { + countryCode: "UA", + subdivisionName: "Khersonska oblast", + code: "UA-65", + }, + "UA-68": { + countryCode: "UA", + subdivisionName: "Khmelnytska oblast", + code: "UA-68", + }, + "UA-35": { + countryCode: "UA", + subdivisionName: "Kirovohradska oblast", + code: "UA-35", + }, + "UA-30": { countryCode: "UA", subdivisionName: "Kyiv", code: "UA-30" }, + "UA-32": { + countryCode: "UA", + subdivisionName: "Kyivska oblast", + code: "UA-32", + }, + "UA-09": { + countryCode: "UA", + subdivisionName: "Luhanska oblast", + code: "UA-09", + }, + "UA-46": { + countryCode: "UA", + subdivisionName: "Lvivska oblast", + code: "UA-46", + }, + "UA-48": { + countryCode: "UA", + subdivisionName: "Mykolaivska oblast", + code: "UA-48", + }, + "UA-51": { + countryCode: "UA", + subdivisionName: "Odeska oblast", + code: "UA-51", + }, + "UA-53": { + countryCode: "UA", + subdivisionName: "Poltavska oblast", + code: "UA-53", + }, + "UA-56": { + countryCode: "UA", + subdivisionName: "Rivnenska oblast", + code: "UA-56", + }, + "UA-40": { countryCode: "UA", subdivisionName: "Sevastopol", code: "UA-40" }, + "UA-59": { + countryCode: "UA", + subdivisionName: "Sumska oblast", + code: "UA-59", + }, + "UA-61": { + countryCode: "UA", + subdivisionName: "Ternopilska oblast", + code: "UA-61", + }, + "UA-05": { + countryCode: "UA", + subdivisionName: "Vinnytska oblast", + code: "UA-05", + }, + "UA-07": { + countryCode: "UA", + subdivisionName: "Volynska oblast", + code: "UA-07", + }, + "UA-21": { + countryCode: "UA", + subdivisionName: "Zakarpatska oblast", + code: "UA-21", + }, + "UA-23": { + countryCode: "UA", + subdivisionName: "Zaporizka oblast", + code: "UA-23", + }, + "UA-18": { + countryCode: "UA", + subdivisionName: "Zhytomyrska oblast", + code: "UA-18", + }, + "UG-314": { countryCode: "UG", subdivisionName: "Abim", code: "UG-314" }, + "UG-301": { countryCode: "UG", subdivisionName: "Adjumani", code: "UG-301" }, + "UG-322": { countryCode: "UG", subdivisionName: "Agago", code: "UG-322" }, + "UG-323": { countryCode: "UG", subdivisionName: "Alebtong", code: "UG-323" }, + "UG-302": { countryCode: "UG", subdivisionName: "Apac", code: "UG-302" }, + "UG-303": { countryCode: "UG", subdivisionName: "Arua", code: "UG-303" }, + "UG-218": { countryCode: "UG", subdivisionName: "Bududa", code: "UG-218" }, + "UG-201": { countryCode: "UG", subdivisionName: "Bugiri", code: "UG-201" }, + "UG-420": { countryCode: "UG", subdivisionName: "Buhweju", code: "UG-420" }, + "UG-117": { countryCode: "UG", subdivisionName: "Buikwe", code: "UG-117" }, + "UG-219": { countryCode: "UG", subdivisionName: "Bukedea", code: "UG-219" }, + "UG-118": { + countryCode: "UG", + subdivisionName: "Bukomansibi", + code: "UG-118", + }, + "UG-225": { countryCode: "UG", subdivisionName: "Bulambuli", code: "UG-225" }, + "UG-401": { + countryCode: "UG", + subdivisionName: "Bundibugyo", + code: "UG-401", + }, + "UG-402": { countryCode: "UG", subdivisionName: "Bushenyi", code: "UG-402" }, + "UG-202": { countryCode: "UG", subdivisionName: "Busia", code: "UG-202" }, + "UG-120": { countryCode: "UG", subdivisionName: "Buvuma", code: "UG-120" }, + "UG-226": { countryCode: "UG", subdivisionName: "Buyende", code: "UG-226" }, + "UG-121": { countryCode: "UG", subdivisionName: "Gomba", code: "UG-121" }, + "UG-304": { countryCode: "UG", subdivisionName: "Gulu", code: "UG-304" }, + "UG-403": { countryCode: "UG", subdivisionName: "Hoima", code: "UG-403" }, + "UG-417": { countryCode: "UG", subdivisionName: "Ibanda", code: "UG-417" }, + "UG-203": { countryCode: "UG", subdivisionName: "Iganga", code: "UG-203" }, + "UG-418": { countryCode: "UG", subdivisionName: "Isingiro", code: "UG-418" }, + "UG-204": { countryCode: "UG", subdivisionName: "Jinja", code: "UG-204" }, + "UG-318": { countryCode: "UG", subdivisionName: "Kaabong", code: "UG-318" }, + "UG-404": { countryCode: "UG", subdivisionName: "Kabale", code: "UG-404" }, + "UG-405": { countryCode: "UG", subdivisionName: "Kabarole", code: "UG-405" }, + "UG-213": { + countryCode: "UG", + subdivisionName: "Kaberamaido", + code: "UG-213", + }, + "UG-101": { countryCode: "UG", subdivisionName: "Kalangala", code: "UG-101" }, + "UG-222": { countryCode: "UG", subdivisionName: "Kaliro", code: "UG-222" }, + "UG-122": { countryCode: "UG", subdivisionName: "Kalungu", code: "UG-122" }, + "UG-102": { countryCode: "UG", subdivisionName: "Kampala", code: "UG-102" }, + "UG-205": { countryCode: "UG", subdivisionName: "Kamuli", code: "UG-205" }, + "UG-413": { countryCode: "UG", subdivisionName: "Kamwenge", code: "UG-413" }, + "UG-414": { countryCode: "UG", subdivisionName: "Kanungu", code: "UG-414" }, + "UG-206": { countryCode: "UG", subdivisionName: "Kapchorwa", code: "UG-206" }, + "UG-406": { countryCode: "UG", subdivisionName: "Kasese", code: "UG-406" }, + "UG-207": { countryCode: "UG", subdivisionName: "Katakwi", code: "UG-207" }, + "UG-112": { countryCode: "UG", subdivisionName: "Kayunga", code: "UG-112" }, + "UG-407": { countryCode: "UG", subdivisionName: "Kibaale", code: "UG-407" }, + "UG-103": { countryCode: "UG", subdivisionName: "Kiboga", code: "UG-103" }, + "UG-227": { countryCode: "UG", subdivisionName: "Kibuku", code: "UG-227" }, + "UG-419": { countryCode: "UG", subdivisionName: "Kiruhura", code: "UG-419" }, + "UG-421": { + countryCode: "UG", + subdivisionName: "Kiryandongo", + code: "UG-421", + }, + "UG-408": { countryCode: "UG", subdivisionName: "Kisoro", code: "UG-408" }, + "UG-305": { countryCode: "UG", subdivisionName: "Kitgum", code: "UG-305" }, + "UG-319": { countryCode: "UG", subdivisionName: "Koboko", code: "UG-319" }, + "UG-325": { countryCode: "UG", subdivisionName: "Kole", code: "UG-325" }, + "UG-228": { countryCode: "UG", subdivisionName: "Kween", code: "UG-228" }, + "UG-123": { + countryCode: "UG", + subdivisionName: "Kyankwanzi", + code: "UG-123", + }, + "UG-422": { countryCode: "UG", subdivisionName: "Kyegegwa", code: "UG-422" }, + "UG-415": { countryCode: "UG", subdivisionName: "Kyenjojo", code: "UG-415" }, + "UG-326": { countryCode: "UG", subdivisionName: "Lamwo", code: "UG-326" }, + "UG-307": { countryCode: "UG", subdivisionName: "Lira", code: "UG-307" }, + "UG-229": { countryCode: "UG", subdivisionName: "Luuka", code: "UG-229" }, + "UG-104": { countryCode: "UG", subdivisionName: "Luwero", code: "UG-104" }, + "UG-124": { countryCode: "UG", subdivisionName: "Lwengo", code: "UG-124" }, + "UG-114": { countryCode: "UG", subdivisionName: "Lyantonde", code: "UG-114" }, + "UG-223": { countryCode: "UG", subdivisionName: "Manafwa", code: "UG-223" }, + "UG-320": { countryCode: "UG", subdivisionName: "Maracha", code: "UG-320" }, + "UG-105": { countryCode: "UG", subdivisionName: "Masaka", code: "UG-105" }, + "UG-409": { countryCode: "UG", subdivisionName: "Masindi", code: "UG-409" }, + "UG-214": { countryCode: "UG", subdivisionName: "Mayuge", code: "UG-214" }, + "UG-209": { countryCode: "UG", subdivisionName: "Mbale", code: "UG-209" }, + "UG-410": { countryCode: "UG", subdivisionName: "Mbarara", code: "UG-410" }, + "UG-423": { countryCode: "UG", subdivisionName: "Mitooma", code: "UG-423" }, + "UG-115": { countryCode: "UG", subdivisionName: "Mityana", code: "UG-115" }, + "UG-308": { countryCode: "UG", subdivisionName: "Moroto", code: "UG-308" }, + "UG-309": { countryCode: "UG", subdivisionName: "Moyo", code: "UG-309" }, + "UG-106": { countryCode: "UG", subdivisionName: "Mpigi", code: "UG-106" }, + "UG-107": { countryCode: "UG", subdivisionName: "Mubende", code: "UG-107" }, + "UG-108": { countryCode: "UG", subdivisionName: "Mukono", code: "UG-108" }, + "UG-311": { + countryCode: "UG", + subdivisionName: "Nakapiripirit", + code: "UG-311", + }, + "UG-116": { countryCode: "UG", subdivisionName: "Nakaseke", code: "UG-116" }, + "UG-109": { + countryCode: "UG", + subdivisionName: "Nakasongola", + code: "UG-109", + }, + "UG-230": { countryCode: "UG", subdivisionName: "Namayingo", code: "UG-230" }, + "UG-327": { countryCode: "UG", subdivisionName: "Napak", code: "UG-327" }, + "UG-310": { countryCode: "UG", subdivisionName: "Nebbi", code: "UG-310" }, + "UG-424": { countryCode: "UG", subdivisionName: "Ntoroko", code: "UG-424" }, + "UG-411": { countryCode: "UG", subdivisionName: "Ntungamo", code: "UG-411" }, + "UG-328": { countryCode: "UG", subdivisionName: "Nwoya", code: "UG-328" }, + "UG-321": { countryCode: "UG", subdivisionName: "Oyam", code: "UG-321" }, + "UG-312": { countryCode: "UG", subdivisionName: "Pader", code: "UG-312" }, + "UG-110": { countryCode: "UG", subdivisionName: "Rakai", code: "UG-110" }, + "UG-425": { countryCode: "UG", subdivisionName: "Rubirizi", code: "UG-425" }, + "UG-412": { countryCode: "UG", subdivisionName: "Rukungiri", code: "UG-412" }, + "UG-111": { countryCode: "UG", subdivisionName: "Sembabule", code: "UG-111" }, + "UG-426": { countryCode: "UG", subdivisionName: "Sheema", code: "UG-426" }, + "UG-215": { countryCode: "UG", subdivisionName: "Sironko", code: "UG-215" }, + "UG-211": { countryCode: "UG", subdivisionName: "Soroti", code: "UG-211" }, + "UG-212": { countryCode: "UG", subdivisionName: "Tororo", code: "UG-212" }, + "UG-113": { countryCode: "UG", subdivisionName: "Wakiso", code: "UG-113" }, + "UG-313": { countryCode: "UG", subdivisionName: "Yumbe", code: "UG-313" }, + "UG-330": { countryCode: "UG", subdivisionName: "Zombo", code: "UG-330" }, + "UM-95": { + countryCode: "UM", + subdivisionName: "Palmyra Atoll", + code: "UM-95", + }, + "US-AL": { countryCode: "US", subdivisionName: "Alabama", code: "US-AL" }, + "US-AK": { countryCode: "US", subdivisionName: "Alaska", code: "US-AK" }, + "US-AZ": { countryCode: "US", subdivisionName: "Arizona", code: "US-AZ" }, + "US-AR": { countryCode: "US", subdivisionName: "Arkansas", code: "US-AR" }, + "US-CA": { countryCode: "US", subdivisionName: "California", code: "US-CA" }, + "US-CO": { countryCode: "US", subdivisionName: "Colorado", code: "US-CO" }, + "US-CT": { countryCode: "US", subdivisionName: "Connecticut", code: "US-CT" }, + "US-DE": { countryCode: "US", subdivisionName: "Delaware", code: "US-DE" }, + "US-DC": { + countryCode: "US", + subdivisionName: "District of Columbia", + code: "US-DC", + }, + "US-FL": { countryCode: "US", subdivisionName: "Florida", code: "US-FL" }, + "US-GA": { countryCode: "US", subdivisionName: "Georgia", code: "US-GA" }, + "US-HI": { countryCode: "US", subdivisionName: "Hawaii", code: "US-HI" }, + "US-ID": { countryCode: "US", subdivisionName: "Idaho", code: "US-ID" }, + "US-IL": { countryCode: "US", subdivisionName: "Illinois", code: "US-IL" }, + "US-IN": { countryCode: "US", subdivisionName: "Indiana", code: "US-IN" }, + "US-IA": { countryCode: "US", subdivisionName: "Iowa", code: "US-IA" }, + "US-KS": { countryCode: "US", subdivisionName: "Kansas", code: "US-KS" }, + "US-KY": { countryCode: "US", subdivisionName: "Kentucky", code: "US-KY" }, + "US-LA": { countryCode: "US", subdivisionName: "Louisiana", code: "US-LA" }, + "US-ME": { countryCode: "US", subdivisionName: "Maine", code: "US-ME" }, + "US-MD": { countryCode: "US", subdivisionName: "Maryland", code: "US-MD" }, + "US-MA": { + countryCode: "US", + subdivisionName: "Massachusetts", + code: "US-MA", + }, + "US-MI": { countryCode: "US", subdivisionName: "Michigan", code: "US-MI" }, + "US-MN": { countryCode: "US", subdivisionName: "Minnesota", code: "US-MN" }, + "US-MS": { countryCode: "US", subdivisionName: "Mississippi", code: "US-MS" }, + "US-MO": { countryCode: "US", subdivisionName: "Missouri", code: "US-MO" }, + "US-MT": { countryCode: "US", subdivisionName: "Montana", code: "US-MT" }, + "US-NE": { countryCode: "US", subdivisionName: "Nebraska", code: "US-NE" }, + "US-NV": { countryCode: "US", subdivisionName: "Nevada", code: "US-NV" }, + "US-NH": { + countryCode: "US", + subdivisionName: "New Hampshire", + code: "US-NH", + }, + "US-NJ": { countryCode: "US", subdivisionName: "New Jersey", code: "US-NJ" }, + "US-NM": { countryCode: "US", subdivisionName: "New Mexico", code: "US-NM" }, + "US-NY": { countryCode: "US", subdivisionName: "New York", code: "US-NY" }, + "US-NC": { + countryCode: "US", + subdivisionName: "North Carolina", + code: "US-NC", + }, + "US-ND": { + countryCode: "US", + subdivisionName: "North Dakota", + code: "US-ND", + }, + "US-OH": { countryCode: "US", subdivisionName: "Ohio", code: "US-OH" }, + "US-OK": { countryCode: "US", subdivisionName: "Oklahoma", code: "US-OK" }, + "US-OR": { countryCode: "US", subdivisionName: "Oregon", code: "US-OR" }, + "US-PA": { + countryCode: "US", + subdivisionName: "Pennsylvania", + code: "US-PA", + }, + "US-RI": { + countryCode: "US", + subdivisionName: "Rhode Island", + code: "US-RI", + }, + "US-SC": { + countryCode: "US", + subdivisionName: "South Carolina", + code: "US-SC", + }, + "US-SD": { + countryCode: "US", + subdivisionName: "South Dakota", + code: "US-SD", + }, + "US-TN": { countryCode: "US", subdivisionName: "Tennessee", code: "US-TN" }, + "US-TX": { countryCode: "US", subdivisionName: "Texas", code: "US-TX" }, + "US-UT": { countryCode: "US", subdivisionName: "Utah", code: "US-UT" }, + "US-VT": { countryCode: "US", subdivisionName: "Vermont", code: "US-VT" }, + "US-VA": { countryCode: "US", subdivisionName: "Virginia", code: "US-VA" }, + "US-WA": { countryCode: "US", subdivisionName: "Washington", code: "US-WA" }, + "US-WV": { + countryCode: "US", + subdivisionName: "West Virginia", + code: "US-WV", + }, + "US-WI": { countryCode: "US", subdivisionName: "Wisconsin", code: "US-WI" }, + "US-WY": { countryCode: "US", subdivisionName: "Wyoming", code: "US-WY" }, + "UY-AR": { countryCode: "UY", subdivisionName: "Artigas", code: "UY-AR" }, + "UY-CA": { countryCode: "UY", subdivisionName: "Canelones", code: "UY-CA" }, + "UY-CL": { countryCode: "UY", subdivisionName: "Cerro Largo", code: "UY-CL" }, + "UY-CO": { countryCode: "UY", subdivisionName: "Colonia", code: "UY-CO" }, + "UY-DU": { countryCode: "UY", subdivisionName: "Durazno", code: "UY-DU" }, + "UY-FS": { countryCode: "UY", subdivisionName: "Flores", code: "UY-FS" }, + "UY-FD": { countryCode: "UY", subdivisionName: "Florida", code: "UY-FD" }, + "UY-LA": { countryCode: "UY", subdivisionName: "Lavalleja", code: "UY-LA" }, + "UY-MA": { countryCode: "UY", subdivisionName: "Maldonado", code: "UY-MA" }, + "UY-MO": { countryCode: "UY", subdivisionName: "Montevideo", code: "UY-MO" }, + "UY-PA": { countryCode: "UY", subdivisionName: "Paysandu", code: "UY-PA" }, + "UY-RN": { countryCode: "UY", subdivisionName: "Rio Negro", code: "UY-RN" }, + "UY-RV": { countryCode: "UY", subdivisionName: "Rivera", code: "UY-RV" }, + "UY-RO": { countryCode: "UY", subdivisionName: "Rocha", code: "UY-RO" }, + "UY-SA": { countryCode: "UY", subdivisionName: "Salto", code: "UY-SA" }, + "UY-SJ": { countryCode: "UY", subdivisionName: "San Jose", code: "UY-SJ" }, + "UY-SO": { countryCode: "UY", subdivisionName: "Soriano", code: "UY-SO" }, + "UY-TA": { countryCode: "UY", subdivisionName: "Tacuarembo", code: "UY-TA" }, + "UY-TT": { + countryCode: "UY", + subdivisionName: "Treinta y Tres", + code: "UY-TT", + }, + "UZ-AN": { countryCode: "UZ", subdivisionName: "Andijon", code: "UZ-AN" }, + "UZ-BU": { countryCode: "UZ", subdivisionName: "Buxoro", code: "UZ-BU" }, + "UZ-FA": { countryCode: "UZ", subdivisionName: "Farg'ona", code: "UZ-FA" }, + "UZ-JI": { countryCode: "UZ", subdivisionName: "Jizzax", code: "UZ-JI" }, + "UZ-NG": { countryCode: "UZ", subdivisionName: "Namangan", code: "UZ-NG" }, + "UZ-NW": { countryCode: "UZ", subdivisionName: "Navoiy", code: "UZ-NW" }, + "UZ-QA": { countryCode: "UZ", subdivisionName: "Qashqadaryo", code: "UZ-QA" }, + "UZ-QR": { + countryCode: "UZ", + subdivisionName: "Qoraqalpog'iston Respublikasi", + code: "UZ-QR", + }, + "UZ-SA": { countryCode: "UZ", subdivisionName: "Samarqand", code: "UZ-SA" }, + "UZ-SI": { countryCode: "UZ", subdivisionName: "Sirdaryo", code: "UZ-SI" }, + "UZ-SU": { countryCode: "UZ", subdivisionName: "Surxondaryo", code: "UZ-SU" }, + "UZ-TK": { countryCode: "UZ", subdivisionName: "Toshkent", code: "UZ-TK" }, + "UZ-XO": { countryCode: "UZ", subdivisionName: "Xorazm", code: "UZ-XO" }, + "VC-01": { countryCode: "VC", subdivisionName: "Charlotte", code: "VC-01" }, + "VC-06": { countryCode: "VC", subdivisionName: "Grenadines", code: "VC-06" }, + "VC-04": { + countryCode: "VC", + subdivisionName: "Saint George", + code: "VC-04", + }, + "VC-05": { + countryCode: "VC", + subdivisionName: "Saint Patrick", + code: "VC-05", + }, + "VE-Z": { countryCode: "VE", subdivisionName: "Amazonas", code: "VE-Z" }, + "VE-B": { countryCode: "VE", subdivisionName: "Anzoategui", code: "VE-B" }, + "VE-C": { countryCode: "VE", subdivisionName: "Apure", code: "VE-C" }, + "VE-D": { countryCode: "VE", subdivisionName: "Aragua", code: "VE-D" }, + "VE-E": { countryCode: "VE", subdivisionName: "Barinas", code: "VE-E" }, + "VE-F": { countryCode: "VE", subdivisionName: "Bolivar", code: "VE-F" }, + "VE-G": { countryCode: "VE", subdivisionName: "Carabobo", code: "VE-G" }, + "VE-H": { countryCode: "VE", subdivisionName: "Cojedes", code: "VE-H" }, + "VE-Y": { countryCode: "VE", subdivisionName: "Delta Amacuro", code: "VE-Y" }, + "VE-W": { + countryCode: "VE", + subdivisionName: "Dependencias Federales", + code: "VE-W", + }, + "VE-A": { + countryCode: "VE", + subdivisionName: "Distrito Capital", + code: "VE-A", + }, + "VE-I": { countryCode: "VE", subdivisionName: "Falcon", code: "VE-I" }, + "VE-J": { countryCode: "VE", subdivisionName: "Guarico", code: "VE-J" }, + "VE-X": { countryCode: "VE", subdivisionName: "La Guaira", code: "VE-X" }, + "VE-K": { countryCode: "VE", subdivisionName: "Lara", code: "VE-K" }, + "VE-L": { countryCode: "VE", subdivisionName: "Merida", code: "VE-L" }, + "VE-M": { countryCode: "VE", subdivisionName: "Miranda", code: "VE-M" }, + "VE-N": { countryCode: "VE", subdivisionName: "Monagas", code: "VE-N" }, + "VE-O": { countryCode: "VE", subdivisionName: "Nueva Esparta", code: "VE-O" }, + "VE-P": { countryCode: "VE", subdivisionName: "Portuguesa", code: "VE-P" }, + "VE-R": { countryCode: "VE", subdivisionName: "Sucre", code: "VE-R" }, + "VE-S": { countryCode: "VE", subdivisionName: "Tachira", code: "VE-S" }, + "VE-T": { countryCode: "VE", subdivisionName: "Trujillo", code: "VE-T" }, + "VE-U": { countryCode: "VE", subdivisionName: "Yaracuy", code: "VE-U" }, + "VE-V": { countryCode: "VE", subdivisionName: "Zulia", code: "VE-V" }, + "VN-44": { countryCode: "VN", subdivisionName: "An Giang", code: "VN-44" }, + "VN-43": { + countryCode: "VN", + subdivisionName: "Ba Ria - Vung Tau", + code: "VN-43", + }, + "VN-54": { countryCode: "VN", subdivisionName: "Bac Giang", code: "VN-54" }, + "VN-53": { countryCode: "VN", subdivisionName: "Bac Kan", code: "VN-53" }, + "VN-55": { countryCode: "VN", subdivisionName: "Bac Lieu", code: "VN-55" }, + "VN-56": { countryCode: "VN", subdivisionName: "Bac Ninh", code: "VN-56" }, + "VN-50": { countryCode: "VN", subdivisionName: "Ben Tre", code: "VN-50" }, + "VN-31": { countryCode: "VN", subdivisionName: "Binh Dinh", code: "VN-31" }, + "VN-57": { countryCode: "VN", subdivisionName: "Binh Duong", code: "VN-57" }, + "VN-58": { countryCode: "VN", subdivisionName: "Binh Phuoc", code: "VN-58" }, + "VN-40": { countryCode: "VN", subdivisionName: "Binh Thuan", code: "VN-40" }, + "VN-59": { countryCode: "VN", subdivisionName: "Ca Mau", code: "VN-59" }, + "VN-CT": { countryCode: "VN", subdivisionName: "Can Tho", code: "VN-CT" }, + "VN-04": { countryCode: "VN", subdivisionName: "Cao Bang", code: "VN-04" }, + "VN-DN": { countryCode: "VN", subdivisionName: "Da Nang", code: "VN-DN" }, + "VN-33": { countryCode: "VN", subdivisionName: "Dak Lak", code: "VN-33" }, + "VN-72": { countryCode: "VN", subdivisionName: "Dak Nong", code: "VN-72" }, + "VN-71": { countryCode: "VN", subdivisionName: "Dien Bien", code: "VN-71" }, + "VN-39": { countryCode: "VN", subdivisionName: "Dong Nai", code: "VN-39" }, + "VN-45": { countryCode: "VN", subdivisionName: "Dong Thap", code: "VN-45" }, + "VN-30": { countryCode: "VN", subdivisionName: "Gia Lai", code: "VN-30" }, + "VN-03": { countryCode: "VN", subdivisionName: "Ha Giang", code: "VN-03" }, + "VN-63": { countryCode: "VN", subdivisionName: "Ha Nam", code: "VN-63" }, + "VN-HN": { countryCode: "VN", subdivisionName: "Ha Noi", code: "VN-HN" }, + "VN-23": { countryCode: "VN", subdivisionName: "Ha Tinh", code: "VN-23" }, + "VN-61": { countryCode: "VN", subdivisionName: "Hai Duong", code: "VN-61" }, + "VN-HP": { countryCode: "VN", subdivisionName: "Hai Phong", code: "VN-HP" }, + "VN-73": { countryCode: "VN", subdivisionName: "Hau Giang", code: "VN-73" }, + "VN-SG": { countryCode: "VN", subdivisionName: "Ho Chi Minh", code: "VN-SG" }, + "VN-14": { countryCode: "VN", subdivisionName: "Hoa Binh", code: "VN-14" }, + "VN-66": { countryCode: "VN", subdivisionName: "Hung Yen", code: "VN-66" }, + "VN-34": { countryCode: "VN", subdivisionName: "Khanh Hoa", code: "VN-34" }, + "VN-47": { countryCode: "VN", subdivisionName: "Kien Giang", code: "VN-47" }, + "VN-28": { countryCode: "VN", subdivisionName: "Kon Tum", code: "VN-28" }, + "VN-01": { countryCode: "VN", subdivisionName: "Lai Chau", code: "VN-01" }, + "VN-35": { countryCode: "VN", subdivisionName: "Lam Dong", code: "VN-35" }, + "VN-09": { countryCode: "VN", subdivisionName: "Lang Son", code: "VN-09" }, + "VN-02": { countryCode: "VN", subdivisionName: "Lao Cai", code: "VN-02" }, + "VN-41": { countryCode: "VN", subdivisionName: "Long An", code: "VN-41" }, + "VN-67": { countryCode: "VN", subdivisionName: "Nam Dinh", code: "VN-67" }, + "VN-22": { countryCode: "VN", subdivisionName: "Nghe An", code: "VN-22" }, + "VN-18": { countryCode: "VN", subdivisionName: "Ninh Binh", code: "VN-18" }, + "VN-36": { countryCode: "VN", subdivisionName: "Ninh Thuan", code: "VN-36" }, + "VN-68": { countryCode: "VN", subdivisionName: "Phu Tho", code: "VN-68" }, + "VN-32": { countryCode: "VN", subdivisionName: "Phu Yen", code: "VN-32" }, + "VN-24": { countryCode: "VN", subdivisionName: "Quang Binh", code: "VN-24" }, + "VN-27": { countryCode: "VN", subdivisionName: "Quang Nam", code: "VN-27" }, + "VN-29": { countryCode: "VN", subdivisionName: "Quang Ngai", code: "VN-29" }, + "VN-13": { countryCode: "VN", subdivisionName: "Quang Ninh", code: "VN-13" }, + "VN-25": { countryCode: "VN", subdivisionName: "Quang Tri", code: "VN-25" }, + "VN-52": { countryCode: "VN", subdivisionName: "Soc Trang", code: "VN-52" }, + "VN-05": { countryCode: "VN", subdivisionName: "Son La", code: "VN-05" }, + "VN-37": { countryCode: "VN", subdivisionName: "Tay Ninh", code: "VN-37" }, + "VN-20": { countryCode: "VN", subdivisionName: "Thai Binh", code: "VN-20" }, + "VN-69": { countryCode: "VN", subdivisionName: "Thai Nguyen", code: "VN-69" }, + "VN-21": { countryCode: "VN", subdivisionName: "Thanh Hoa", code: "VN-21" }, + "VN-26": { + countryCode: "VN", + subdivisionName: "Thua Thien-Hue", + code: "VN-26", + }, + "VN-46": { countryCode: "VN", subdivisionName: "Tien Giang", code: "VN-46" }, + "VN-51": { countryCode: "VN", subdivisionName: "Tra Vinh", code: "VN-51" }, + "VN-07": { countryCode: "VN", subdivisionName: "Tuyen Quang", code: "VN-07" }, + "VN-49": { countryCode: "VN", subdivisionName: "Vinh Long", code: "VN-49" }, + "VN-70": { countryCode: "VN", subdivisionName: "Vinh Phuc", code: "VN-70" }, + "VN-06": { countryCode: "VN", subdivisionName: "Yen Bai", code: "VN-06" }, + "VU-SAM": { countryCode: "VU", subdivisionName: "Sanma", code: "VU-SAM" }, + "VU-SEE": { countryCode: "VU", subdivisionName: "Shefa", code: "VU-SEE" }, + "VU-TAE": { countryCode: "VU", subdivisionName: "Tafea", code: "VU-TAE" }, + "VU-TOB": { countryCode: "VU", subdivisionName: "Torba", code: "VU-TOB" }, + "WF-SG": { countryCode: "WF", subdivisionName: "Sigave", code: "WF-SG" }, + "WF-UV": { countryCode: "WF", subdivisionName: "Uvea", code: "WF-UV" }, + "WS-AT": { countryCode: "WS", subdivisionName: "Atua", code: "WS-AT" }, + "WS-FA": { + countryCode: "WS", + subdivisionName: "Fa'asaleleaga", + code: "WS-FA", + }, + "WS-GI": { + countryCode: "WS", + subdivisionName: "Gagaifomauga", + code: "WS-GI", + }, + "WS-TU": { countryCode: "WS", subdivisionName: "Tuamasaga", code: "WS-TU" }, + "YE-AD": { countryCode: "YE", subdivisionName: "'Adan", code: "YE-AD" }, + "YE-AM": { countryCode: "YE", subdivisionName: "'Amran", code: "YE-AM" }, + "YE-DA": { countryCode: "YE", subdivisionName: "Ad Dali'", code: "YE-DA" }, + "YE-BA": { countryCode: "YE", subdivisionName: "Al Bayda'", code: "YE-BA" }, + "YE-HU": { countryCode: "YE", subdivisionName: "Al Hudaydah", code: "YE-HU" }, + "YE-JA": { countryCode: "YE", subdivisionName: "Al Jawf", code: "YE-JA" }, + "YE-MW": { countryCode: "YE", subdivisionName: "Al Mahwit", code: "YE-MW" }, + "YE-SA": { + countryCode: "YE", + subdivisionName: "Amanat al 'Asimah", + code: "YE-SA", + }, + "YE-DH": { countryCode: "YE", subdivisionName: "Dhamar", code: "YE-DH" }, + "YE-HD": { countryCode: "YE", subdivisionName: "Hadramawt", code: "YE-HD" }, + "YE-HJ": { countryCode: "YE", subdivisionName: "Hajjah", code: "YE-HJ" }, + "YE-IB": { countryCode: "YE", subdivisionName: "Ibb", code: "YE-IB" }, + "YE-LA": { countryCode: "YE", subdivisionName: "Lahij", code: "YE-LA" }, + "YE-MA": { countryCode: "YE", subdivisionName: "Ma'rib", code: "YE-MA" }, + "YE-RA": { countryCode: "YE", subdivisionName: "Raymah", code: "YE-RA" }, + "YE-SD": { countryCode: "YE", subdivisionName: "Sa'dah", code: "YE-SD" }, + "YE-SN": { countryCode: "YE", subdivisionName: "San'a'", code: "YE-SN" }, + "YE-SH": { countryCode: "YE", subdivisionName: "Shabwah", code: "YE-SH" }, + "YE-TA": { countryCode: "YE", subdivisionName: "Ta'izz", code: "YE-TA" }, + "ZA-EC": { + countryCode: "ZA", + subdivisionName: "Eastern Cape", + code: "ZA-EC", + }, + "ZA-FS": { countryCode: "ZA", subdivisionName: "Free State", code: "ZA-FS" }, + "ZA-GP": { countryCode: "ZA", subdivisionName: "Gauteng", code: "ZA-GP" }, + "ZA-KZN": { + countryCode: "ZA", + subdivisionName: "Kwazulu-Natal", + code: "ZA-KZN", + }, + "ZA-LP": { countryCode: "ZA", subdivisionName: "Limpopo", code: "ZA-LP" }, + "ZA-MP": { countryCode: "ZA", subdivisionName: "Mpumalanga", code: "ZA-MP" }, + "ZA-NW": { countryCode: "ZA", subdivisionName: "North-West", code: "ZA-NW" }, + "ZA-NC": { + countryCode: "ZA", + subdivisionName: "Northern Cape", + code: "ZA-NC", + }, + "ZA-WC": { + countryCode: "ZA", + subdivisionName: "Western Cape", + code: "ZA-WC", + }, + "ZM-02": { countryCode: "ZM", subdivisionName: "Central", code: "ZM-02" }, + "ZM-08": { countryCode: "ZM", subdivisionName: "Copperbelt", code: "ZM-08" }, + "ZM-03": { countryCode: "ZM", subdivisionName: "Eastern", code: "ZM-03" }, + "ZM-04": { countryCode: "ZM", subdivisionName: "Luapula", code: "ZM-04" }, + "ZM-09": { countryCode: "ZM", subdivisionName: "Lusaka", code: "ZM-09" }, + "ZM-10": { countryCode: "ZM", subdivisionName: "Muchinga", code: "ZM-10" }, + "ZM-06": { + countryCode: "ZM", + subdivisionName: "North-Western", + code: "ZM-06", + }, + "ZM-05": { countryCode: "ZM", subdivisionName: "Northern", code: "ZM-05" }, + "ZM-07": { countryCode: "ZM", subdivisionName: "Southern", code: "ZM-07" }, + "ZM-01": { countryCode: "ZM", subdivisionName: "Western", code: "ZM-01" }, + "ZW-BU": { countryCode: "ZW", subdivisionName: "Bulawayo", code: "ZW-BU" }, + "ZW-HA": { countryCode: "ZW", subdivisionName: "Harare", code: "ZW-HA" }, + "ZW-MA": { countryCode: "ZW", subdivisionName: "Manicaland", code: "ZW-MA" }, + "ZW-MC": { + countryCode: "ZW", + subdivisionName: "Mashonaland Central", + code: "ZW-MC", + }, + "ZW-ME": { + countryCode: "ZW", + subdivisionName: "Mashonaland East", + code: "ZW-ME", + }, + "ZW-MW": { + countryCode: "ZW", + subdivisionName: "Mashonaland West", + code: "ZW-MW", + }, + "ZW-MV": { countryCode: "ZW", subdivisionName: "Masvingo", code: "ZW-MV" }, + "ZW-MN": { + countryCode: "ZW", + subdivisionName: "Matabeleland North", + code: "ZW-MN", + }, + "ZW-MS": { + countryCode: "ZW", + subdivisionName: "Matabeleland South", + code: "ZW-MS", + }, + "ZW-MI": { countryCode: "ZW", subdivisionName: "Midlands", code: "ZW-MI" }, +}; diff --git a/packages/widget/src/vite-env.d.ts b/packages/widget/src/vite-env.d.ts index a2016576..3f6fc6d8 100644 --- a/packages/widget/src/vite-env.d.ts +++ b/packages/widget/src/vite-env.d.ts @@ -9,6 +9,7 @@ interface ImportMetaEnv { readonly VITE_FORCE_ADDRESS: string | undefined; readonly VITE_FORCE_DASHBOARD: string; readonly VITE_APP_VARIANT: "utila" | undefined; + readonly VITE_YIELDS_API_URL: string; } interface ImportMeta { diff --git a/packages/widget/src/worker.ts b/packages/widget/src/worker.ts index e4608e7e..80e878a0 100644 --- a/packages/widget/src/worker.ts +++ b/packages/widget/src/worker.ts @@ -1,190 +1,284 @@ import { HttpResponse, http } from "msw"; import { setupWorker } from "msw/browser"; +import { config } from "./config"; -// const validAddressAndNetwork = { -// address: "akash12z0hpqxj3txaf85zlla7zqffp7n9sl8wc3hlzh", -// network: "akash", -// }; +const yieldId = "ethereum-matic-native-staking"; +const getApiRoute = (baseUrl: string, path: string) => + new URL(path.startsWith("/") ? path : `/${path}`, baseUrl).toString(); +const legacyApiRoute = (path: string) => getApiRoute(config.env.apiUrl, path); +const yieldApiRoute = (path: string) => + getApiRoute(config.env.yieldsApiUrl, path); + +const maticToken = { + address: "0x0000000000000000000000000000000000001010", + symbol: "POL", + name: "Polygon Ecosystem Token", + decimals: 18, + network: "ethereum", + coinGeckoId: "matic-network", + logoURI: "https://assets.stakek.it/tokens/matic.svg", + isPoints: false, +}; + +const morphoToken = { + address: "0x58d97b57bb95320f9a05dc918aef65434969c2b3", + symbol: "MORPHO", + name: "Morpho Token", + decimals: 18, + network: "ethereum", + isPoints: false, +}; + +const campaignToken = { + address: "0x58d97b57bb95320f9a05dc918aef65434969c2b2", + symbol: "U", + name: "United Stables", + decimals: 18, + network: "ethereum", + isPoints: false, +}; + +const discoveryRewardRate = { + total: 0.045507546653006034, + rateType: "APY", + components: [ + { + rate: 0.0028386677110199426, + rateType: "APR", + token: morphoToken, + yieldSource: "protocol_incentive", + description: "MORPHO rewards", + }, + { + rate: 0.002, + rateType: "APR", + token: campaignToken, + yieldSource: "campaign_incentive", + description: "U rewards", + }, + { + rate: 0.042668878941986094, + rateType: "APY", + token: campaignToken, + yieldSource: "staking", + description: "Native staking APY", + }, + ], +}; + +const personalizedRewardRate = { + total: 0.04530754665300604, + rateType: "APY", + components: [ + { + rate: 0.0028386677110199426, + rateType: "APR", + token: morphoToken, + yieldSource: "protocol_incentive", + description: "MORPHO rewards", + }, + { + rate: 0.0018, + rateType: "APR", + token: campaignToken, + yieldSource: "campaign_incentive", + description: "U rewards", + }, + { + rate: 0.042668878941986094, + rateType: "APY", + token: campaignToken, + yieldSource: "staking", + description: "Native staking APY", + }, + ], +}; + +const legacyYieldDto = { + id: yieldId, + token: maticToken, + tokens: [maticToken], + rewardRate: discoveryRewardRate.total, + rewardType: "apy", + apy: discoveryRewardRate.total, + feeConfigurations: [], + args: { + enter: { + addresses: { + address: { + required: true, + network: "ethereum", + }, + }, + args: { + amount: { + required: true, + minimum: 0, + }, + }, + }, + exit: { + addresses: { + address: { + required: true, + network: "ethereum", + }, + }, + args: { + amount: { + required: true, + minimum: 0, + }, + }, + }, + }, + metadata: { + name: "Trust POL Staking", + description: "Local mock for campaign APY QA", + documentation: "https://trustwallet.com", + logoURI: "https://assets.stakek.it/tokens/matic.svg", + type: "staking", + token: maticToken, + tokens: [maticToken], + rewardTokens: [campaignToken, morphoToken], + rewardClaiming: "auto", + rewardSchedule: "day", + gasFeeToken: maticToken, + fee: { + enabled: false, + depositFee: false, + managementFee: false, + performanceFee: false, + }, + provider: { + id: "benqi", + name: "Trust", + description: "", + externalLink: "https://trustwallet.com", + logoURI: "https://assets.stakek.it/providers/benqi.svg", + }, + supportsLedgerWalletApi: true, + supportsMultipleValidators: false, + }, + status: { + enter: true, + exit: true, + }, + validators: [], +}; + +const yieldApiYieldDto = { + id: yieldId, + token: maticToken, + tokens: [maticToken], + inputTokens: [maticToken], + outputToken: maticToken, + network: "ethereum", + chainId: "1", + providerId: "benqi", + rewardRate: discoveryRewardRate, + metadata: { + name: "Trust POL Staking", + description: "Local mock for campaign APY QA", + documentation: "https://trustwallet.com", + logoURI: "https://assets.stakek.it/tokens/matic.svg", + }, + mechanics: { + type: "staking", + gasFeeToken: maticToken, + rewardClaiming: "auto", + rewardSchedule: "day", + supportsLedgerWalletApi: true, + requiresValidatorSelection: false, + arguments: { + enter: { + fields: [ + { + name: "amount", + type: "string", + label: "Amount", + required: true, + minimum: "0", + }, + ], + }, + exit: { + fields: [ + { + name: "amount", + type: "string", + label: "Amount", + required: true, + minimum: "0", + }, + ], + }, + }, + }, + status: { + enter: true, + exit: true, + }, +}; export const worker = setupWorker( + http.get(legacyApiRoute(`/v1/yields/${yieldId}`), async () => + HttpResponse.json(legacyYieldDto) + ), + http.get(yieldApiRoute(`/v1/yields/${yieldId}`), async () => + HttpResponse.json(yieldApiYieldDto) + ), + http.post("*/v1/yields/balances", async () => { + return HttpResponse.json({ + items: [ + { + yieldId, + balances: [ + { + address: "0x15775b23340c0f50e0428d674478b0e9d3d0a759", + amount: "1000251.8279906842", + amountRaw: "10002518279906842", + type: "active", + token: maticToken, + pendingActions: [], + amountUsd: "1000355.009527", + isEarning: true, + }, + ], + rewardRate: personalizedRewardRate, + }, + ], + errors: [], + }); + }), + http.post("*/v1/balances", async () => { + return HttpResponse.json({ + items: [ + { + yieldId, + balances: [ + { + address: "0x15775b23340c0f50e0428d674478b0e9d3d0a759", + amount: "1000251.8279906842", + amountRaw: "10002518279906842", + type: "active", + token: maticToken, + pendingActions: [], + amountUsd: "1000355.009527", + isEarning: true, + }, + ], + rewardRate: personalizedRewardRate, + }, + ], + errors: [], + }); + }), http.post("*/v1/actions/enter/estimate-gas", async () => { return HttpResponse.json({ amount: "0.1", - token: { - network: "polygon", - coinGeckoId: "matic-network", - name: "Polygon", - decimals: 18, - symbol: "MATIC", - logoURI: "https://assets.stakek.it/tokens/matic.svg", - }, + token: maticToken, gasLimit: "", }); }) - // http.get("*/v1/yields/celo-celo-native-staking", async () => { - // await delay(); - - // return HttpResponse.json({ - // id: "celo-celo-native-staking", - // token: { - // name: "Celo", - // symbol: "CELO", - // decimals: 18, - // address: "0x471EcE3750Da237f93B8E339c536989b8978a438", - // network: "celo", - // coinGeckoId: "celo", - // logoURI: "https://assets.stakek.it/tokens/celo.svg", - // }, - // tokens: [ - // { - // name: "Celo", - // symbol: "CELO", - // decimals: 18, - // address: "0x471EcE3750Da237f93B8E339c536989b8978a438", - // network: "celo", - // coinGeckoId: "celo", - // logoURI: "https://assets.stakek.it/tokens/celo.svg", - // }, - // ], - // args: { - // enter: { - // addresses: { - // address: { - // required: true, - // network: "celo", - // }, - // }, - // args: { - // amount: { - // required: true, - // minimum: 0, - // }, - // validatorAddress: { - // required: true, - // }, - // }, - // }, - // exit: { - // addresses: { - // address: { - // required: true, - // network: "celo", - // }, - // }, - // args: { - // amount: { - // required: true, - // minimum: 0, - // }, - // validatorAddress: { - // required: true, - // }, - // signatureVerification: { - // required: true, - // }, - // }, - // }, - // }, - // status: { - // enter: true, - // exit: true, - // }, - // apy: 0.03992371968603679, - // rewardRate: 0.03992371968603679, - // rewardType: "apy", - // metadata: { - // cooldownPeriod: { - // days: 3, - // }, - // defaultValidator: "0xdadbd6cfb29b054adc9c4c2ef0f21f0bbdb44871", - // description: "Stake your CELO natively", - // fee: { - // enabled: false, - // }, - // gasFeeToken: { - // name: "Celo", - // symbol: "CELO", - // decimals: 18, - // address: "0x471EcE3750Da237f93B8E339c536989b8978a438", - // network: "celo", - // coinGeckoId: "celo", - // logoURI: "https://assets.stakek.it/tokens/celo.svg", - // }, - // id: "celo-celo-native-staking", - // logoURI: "https://assets.stakek.it/tokens/celo.svg", - // minimumStake: 0, - // name: "CELO Native Staking", - // revshare: { - // enabled: true, - // }, - // rewardClaiming: "auto", - // rewardSchedule: "day", - // supportsMultipleValidators: true, - // token: { - // name: "Celo", - // symbol: "CELO", - // decimals: 18, - // address: "0x471EcE3750Da237f93B8E339c536989b8978a438", - // network: "celo", - // coinGeckoId: "celo", - // logoURI: "https://assets.stakek.it/tokens/celo.svg", - // }, - // type: "staking", - // warmupPeriod: { - // days: 1, - // }, - // documentation: "https://docs.stakek.it/docs/celo-celo-native-staking", - // supportsLedgerWalletApi: true, - // isUnderMaintenance: false, - // ledgerClearSigning: true, - // contractAddresses: [ - // "0x7d21685C17607338b313a7174bAb6620baD0aaB7", - // "0x8D6677192144292870907E3Fa8A5527fE55A7ff6", - // "0x6cC083Aed9e3ebe302A6336dBC7c921C9f03349E", - // ], - // }, - // validators: [ - // { - // address: "0xe92b7ba8497486e94bb59c51f595b590c4a5f894", - // status: "active", - // name: "Stakely", - // image: "https://assets.stakek.it/validators/stakely.png", - // website: "https://stakely.io/", - // apr: 0.0393, - // commission: 0.1, - // stakedBalance: "2263157", - // votingPower: 0.0090962642447408, - // preferred: true, - // }, - // { - // address: "0x81cef0668e15639d0b101bdc3067699309d73bed", - // status: "active", - // name: "Chorus One", - // image: "https://assets.stakek.it/validators/chorus_one.png", - // website: "https://chorus.one/", - // apr: 0.04015260366943412, - // commission: 0.075, - // stakedBalance: "4056456", - // votingPower: 0.0163040370920639, - // preferred: true, - // }, - // ], - // isAvailable: true, - // }); - // }) ); - -// http.post("*/v1/actions/enter", async () => { -// await delay(); -// return HttpResponse.json( -// { -// message: "YieldUnderMaintenanceError", -// details: { yieldId: "optimism-op-aave-v3-lending" }, -// }, -// { status: 400 } -// ); -// }), - -// http.all("*", () => { -// return passthrough(); -// }) diff --git a/packages/widget/tests/components/atoms/image.test.tsx b/packages/widget/tests/components/atoms/image.test.tsx new file mode 100644 index 00000000..e0342bbb --- /dev/null +++ b/packages/widget/tests/components/atoms/image.test.tsx @@ -0,0 +1,84 @@ +import { Image } from "../../../src/components/atoms/image"; +import { describe, expect, it } from "../../utils/test-extend"; +import { render } from "../../utils/test-utils"; + +const validSrcTwo = + "data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='2'%20height='2'%3E%3C/svg%3E"; +const brokenSrcOne = "data:image/png;base64,Zm9vYmFy"; +const brokenSrcFour = "data:image/png;base64,YmFkMw=="; + +describe("Image", () => { + it("swaps to the generated monogram when src fails and resets on src change", async () => { + const app = await render( + + ); + + const image = + app.container.querySelector("img[alt='icon']"); + + expect(image).not.toBeNull(); + + image?.dispatchEvent(new Event("error")); + + expect(image?.getAttribute("src")).toContain("data:image/svg+xml"); + + await app.rerender( + + ); + + const rerenderedImage = + app.container.querySelector("img[alt='icon']"); + + expect(rerenderedImage).not.toBeNull(); + expect(rerenderedImage?.getAttribute("src")).toBe(validSrcTwo); + + app.unmount(); + }); + + it("uses the generated monogram when src is missing", async () => { + const app = await render( + + ); + + const image = app.container.querySelector( + "img[alt='missing-src']" + ); + + expect(image).not.toBeNull(); + expect(image?.getAttribute("src")).toContain("data:image/svg+xml"); + }); + + it("falls back to the generated monogram after src fails", async () => { + const app = await render( + + ); + + const image = app.container.querySelector( + "img[alt='monogram']" + ); + + expect(image).not.toBeNull(); + image?.dispatchEvent(new Event("error")); + + expect(image?.getAttribute("src")).toContain("data:image/svg+xml"); + }); + + it("keeps the broken src when there is no monogram fallback", async () => { + const app = await render( + + ); + + const image = app.container.querySelector("img[alt='no-fallback']"); + + expect(image).not.toBeNull(); + expect(image?.getAttribute("src")).toBe(brokenSrcFour); + }); +}); diff --git a/packages/widget/tests/components/atoms/token-icon-image.test.tsx b/packages/widget/tests/components/atoms/token-icon-image.test.tsx new file mode 100644 index 00000000..74070ff7 --- /dev/null +++ b/packages/widget/tests/components/atoms/token-icon-image.test.tsx @@ -0,0 +1,45 @@ +import { TokenIconImage } from "../../../src/components/atoms/token-icon/token-icon-image"; +import { describe, expect, it } from "../../utils/test-extend"; +import { render } from "../../utils/test-utils"; + +const validSrc = + "data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='1'%20height='1'%3E%3C/svg%3E"; +const brokenSrcOne = "data:image/png;base64,dG9rZW4x"; + +describe("TokenIconImage", () => { + it("uses a single image element and prefers mainUrl when present", async () => { + const app = await render( + + ); + + expect(app.container.querySelectorAll("img")).toHaveLength(1); + + const image = app.container.querySelector("img"); + + expect(image).not.toBeNull(); + expect(image?.getAttribute("src")).toBe(validSrc); + }); + + it("falls through to the generated monogram after mainUrl fails", async () => { + const app = await render( + + ); + + const image = app.container.querySelector("img"); + + expect(image).not.toBeNull(); + image?.dispatchEvent(new Event("error")); + + expect(image?.getAttribute("src")).toContain("data:image/svg+xml"); + }); +}); diff --git a/packages/widget/tests/fixtures/index.ts b/packages/widget/tests/fixtures/index.ts index 4b375bc8..0848e6ab 100644 --- a/packages/widget/tests/fixtures/index.ts +++ b/packages/widget/tests/fixtures/index.ts @@ -1,53 +1,341 @@ import { faker } from "@faker-js/faker"; -import type { ActionDto, TransactionDto, YieldDto } from "@stakekit/api-hooks"; -import { - getActionControllerEnterResponseMock, - getActionControllerPendingResponseMock, - getTransactionControllerConstructResponseMock, - getYieldV2ControllerGetYieldByIdResponseMock, -} from "@stakekit/api-hooks/msw"; -import { Just } from "purify-ts"; +import type { + YieldActionDto, + YieldTransactionDto, +} from "../../src/domain/types/action"; +import { EvmNetworks } from "../../src/domain/types/chains/networks"; +import type { YieldBalanceDto } from "../../src/domain/types/positions"; +import type { YieldRewardRateDto } from "../../src/domain/types/reward-rate"; +import type { YieldValidatorDto } from "../../src/domain/types/validators"; +import type { Yield } from "../../src/domain/types/yields"; +import type { TokenDto as LegacyTokenDto } from "../../src/generated/api/legacy"; +import type { NetworkDto as YieldApiNetworkDto } from "../../src/generated/api/yield"; + +type YieldApiYieldDto = Omit; +type LegacyYieldDto = Yield["__fallback__"]; const apyFaker = () => faker.number.float({ min: 0, max: 0.05 }); -export const yieldFixture = (overrides?: Partial) => - Just(getYieldV2ControllerGetYieldByIdResponseMock()) - .map( - (val) => - ({ - ...val, - rewardRate: apyFaker(), - rewardType: "apy", - apy: apyFaker(), - args: { - enter: { - args: { - nfts: undefined, - providerId: { required: false, options: [] }, - }, - }, - }, - feeConfigurations: [], - status: { enter: true, exit: true }, - validators: val.validators.map((v) => ({ ...v, apr: apyFaker() })), - ...overrides, - }) satisfies YieldDto - ) - .unsafeCoerce(); - -export const enterResponseFixture = (overrides?: Partial) => ({ - ...getActionControllerEnterResponseMock(), +export const yieldRewardRateFixture = ( + overrides?: Partial +): YieldRewardRateDto => ({ + total: apyFaker(), + rateType: "APY", + components: [], + ...overrides, +}); + +const yieldApiTokenFixture = ( + overrides?: Partial +): YieldApiYieldDto["token"] => ({ + name: "Ethereum", + symbol: "ETH", + decimals: 18, + network: "ethereum", + coinGeckoId: "ethereum", + logoURI: "https://assets.stakek.it/tokens/eth.svg", + ...overrides, +}); + +const miscNetworks = new Set([ + "aptos", + "cardano", + "near", + "solana", + "solana-devnet", + "stellar", + "stellar-testnet", + "sui", + "tezos", + "tron", + "ton", + "ton-testnet", + "hyperliquid", +]); + +const substrateNetworks = new Set([ + "polkadot", + "kusama", + "westend", + "bittensor", +]); + +const getYieldApiNetworkCategory = ( + id: YieldApiNetworkDto["id"] +): YieldApiNetworkDto["category"] => { + if (miscNetworks.has(id)) return "misc"; + if (substrateNetworks.has(id)) return "substrate"; + if ( + [ + "ethereum", + "ethereum-goerli", + "ethereum-holesky", + "ethereum-sepolia", + "ethereum-hoodi", + "arbitrum", + "base", + "base-sepolia", + "gnosis", + "optimism", + "polygon", + "polygon-amoy", + "starknet", + "zksync", + "linea", + "unichain", + "monad-testnet", + "monad", + "avalanche-c", + "avalanche-c-atomic", + "avalanche-p", + "binance", + "celo", + "fantom", + "harmony", + "moonriver", + "okc", + "viction", + "core", + "sonic", + "plasma", + "katana", + "hyperevm", + ].includes(id) + ) { + return "evm"; + } + + return "cosmos"; +}; + +export const yieldApiNetworkFixture = ( + overrides?: Partial +): YieldApiNetworkDto => { + const id = overrides?.id ?? "ethereum"; + + return { + id, + name: id, + category: getYieldApiNetworkCategory(id), + logoURI: `https://assets.stakek.it/networks/${id}.svg`, + ...overrides, + }; +}; + +type YieldRiskSummaryDto = NonNullable; +type YieldRiskEntryDto = YieldRiskSummaryDto["ratings"][number]; + +const yieldRiskEntryFixture = ( + overrides?: Partial +): YieldRiskEntryDto => ({ + rating: "A-", + source: "credora", ...overrides, }); -export const transactionConstructFixture = ( - overrides?: Partial -) => ({ - ...getTransactionControllerConstructResponseMock(), +export const yieldRiskSummaryFixture = ( + overrides?: Partial +): YieldRiskSummaryDto => ({ + ratings: [yieldRiskEntryFixture()], ...overrides, }); -export const pendingActionFixture = (overrides?: Partial) => ({ - ...getActionControllerPendingResponseMock(), +export const yieldApiYieldFixture = ( + overrides?: Partial +): YieldApiYieldDto => { + const token = overrides?.token ?? yieldApiTokenFixture(); + const tokens = overrides?.tokens ?? [token]; + + return { + id: "ethereum-eth-native-staking", + network: token.network, + inputTokens: overrides?.inputTokens ?? tokens, + outputToken: overrides?.outputToken ?? token, + token, + tokens, + rewardRate: yieldRewardRateFixture(overrides?.rewardRate), + status: { enter: true, exit: true }, + metadata: { + name: "Ethereum Staking", + description: "Stake ETH", + documentation: "https://docs.stakek.it", + logoURI: token.logoURI ?? "", + underMaintenance: false, + deprecated: false, + supportedStandards: [], + supportsCampaigns: false, + }, + mechanics: { + type: "staking", + requiresValidatorSelection: false, + rewardSchedule: "day", + rewardClaiming: "auto", + gasFeeToken: token, + arguments: { + enter: { + fields: [], + }, + exit: { + fields: [], + }, + }, + }, + providerId: "stakekit", + validators: [], + ...overrides, + } as YieldApiYieldDto; +}; + +export const yieldApiValidatorFixture = ( + overrides?: Partial +): YieldValidatorDto => ({ + address: faker.finance.ethereumAddress(), + commission: 0, + logoURI: "https://assets.stakek.it/validators/default.png", + name: "StakeKit Validator", + preferred: false, + rewardRate: yieldRewardRateFixture({ rateType: "APR" }), + status: "active", ...overrides, }); + +export const yieldBalanceFixture = ( + overrides?: Partial +): YieldBalanceDto => { + const token = overrides?.token ?? yieldApiYieldFixture().token; + + return { + address: faker.finance.ethereumAddress(), + type: "active", + amount: "1", + amountRaw: "1000000000000000000", + pendingActions: [], + token, + isEarning: true, + ...overrides, + } as YieldBalanceDto; +}; + +export const legacyYieldFixture = ( + overrides?: Partial +): LegacyYieldDto => { + const token: LegacyTokenDto = { + name: "Ethereum", + symbol: "ETH", + decimals: 18, + network: EvmNetworks.Ethereum, + coinGeckoId: "ethereum", + logoURI: "https://assets.stakek.it/tokens/eth.svg", + }; + + return { + id: "ethereum-eth-native-staking", + token, + tokens: [token], + rewardRate: apyFaker(), + rewardType: "apy", + apy: apyFaker(), + args: { + enter: { + args: { + providerId: { required: false, options: [] }, + }, + }, + }, + feeConfigurations: [], + metadata: { + commission: [], + description: "Stake ETH", + documentation: "https://docs.stakek.it", + fee: { + depositFee: false, + enabled: false, + managementFee: false, + performanceFee: false, + }, + gasFeeToken: token, + logoURI: "https://assets.stakek.it/yields/ethereum.svg", + minimumStake: 0, + name: "Ethereum Staking", + provider: { + id: "stakekit", + name: "StakeKit", + description: "", + externalLink: "https://stakek.it", + logoURI: "https://assets.stakek.it/providers/stakekit.svg", + }, + revshare: { enabled: false }, + rewardClaiming: "auto", + rewardSchedule: "day", + rewardTokens: [], + token, + tokens: [token], + tvl: [{ level: "network", value: "1000000000000000000" }], + type: "staking", + warmupPeriod: { days: 0 }, + isIntegrationAggregator: false, + }, + status: { enter: true, exit: true }, + validators: [], + isAvailable: true, + ...overrides, + } as LegacyYieldDto; +}; + +export const yieldApiValidatorsFixture = ( + validators?: Partial[] +): YieldValidatorDto[] => + (validators?.length ? validators : [{}]).map((validator) => + yieldApiValidatorFixture(validator) + ); + +export const yieldApiTransactionFixture = ( + overrides?: Partial +): YieldTransactionDto => + ({ + id: faker.string.uuid(), + title: "Stake", + network: "ethereum", + status: "CREATED", + type: "STAKE", + hash: null, + createdAt: new Date(0).toISOString(), + broadcastedAt: null, + signedTransaction: null, + unsignedTransaction: null, + stepIndex: 0, + annotatedTransaction: null, + structuredTransaction: null, + explorerUrl: null, + isMessage: false, + ...overrides, + }) as YieldTransactionDto; + +export const yieldApiActionFixture = ( + overrides?: Partial +): YieldActionDto => { + const type = overrides?.type ?? "STAKE"; + const intent = + overrides?.intent ?? + (type === "STAKE" ? "enter" : type === "UNSTAKE" ? "exit" : "manage"); + + return { + id: faker.string.uuid(), + intent, + type, + yieldId: "ethereum-eth-native-staking", + address: faker.finance.ethereumAddress(), + amount: null, + amountRaw: null, + amountUsd: null, + transactions: [ + yieldApiTransactionFixture({ type: type as YieldTransactionDto["type"] }), + ], + executionPattern: "synchronous", + rawArguments: null, + createdAt: new Date(0).toISOString(), + completedAt: null, + status: "CREATED", + ...overrides, + } as YieldActionDto; +}; diff --git a/packages/widget/tests/mocks/api-routes.ts b/packages/widget/tests/mocks/api-routes.ts new file mode 100644 index 00000000..e9b7b3c2 --- /dev/null +++ b/packages/widget/tests/mocks/api-routes.ts @@ -0,0 +1,10 @@ +import { config } from "../../src/config"; + +const getApiRoute = (baseUrl: string, path: string) => + new URL(path.startsWith("/") ? path : `/${path}`, baseUrl).toString(); + +export const legacyApiRoute = (path: string) => + getApiRoute(config.env.apiUrl, path); + +export const yieldApiRoute = (path: string) => + getApiRoute(config.env.yieldsApiUrl, path); diff --git a/packages/widget/tests/mocks/external-api-handlers.ts b/packages/widget/tests/mocks/external-api-handlers.ts new file mode 100644 index 00000000..7683532e --- /dev/null +++ b/packages/widget/tests/mocks/external-api-handlers.ts @@ -0,0 +1,35 @@ +import { delay, HttpResponse, http } from "msw"; + +export const getExternalApiMock = () => [ + http.get("https://i18n.stakek.it/locales/:language/errors.json", async () => { + await delay(); + + return HttpResponse.json({}); + }), + + http.get("https://api.web3modal.org/appkit/v1/config", async () => { + await delay(); + + return HttpResponse.json({ + features: [], + }); + }), + + http.get("https://api.web3modal.org/projects/v1/origins", async () => { + await delay(); + + return HttpResponse.json({ + allowedOrigins: [window.location.origin], + }); + }), + + http.get("https://dapp.stakek.it/tonconnect-manifest.json", async () => { + await delay(); + + return HttpResponse.json({ + url: window.location.origin, + name: "StakeKit Widget Test", + iconUrl: "https://assets.stakek.it/stakekit/sk-icon_320x320.png", + }); + }), +]; diff --git a/packages/widget/tests/mocks/handlers.ts b/packages/widget/tests/mocks/handlers.ts index fa6d4370..98b0bcb4 100644 --- a/packages/widget/tests/mocks/handlers.ts +++ b/packages/widget/tests/mocks/handlers.ts @@ -1,22 +1,30 @@ -import { getStakeKitMock } from "@stakekit/api-hooks/msw"; import { delay, HttpResponse, http, passthrough } from "msw"; +import { getExternalApiMock } from "./external-api-handlers"; +import { getLegacyApiMock } from "./legacy-api-handlers"; +import { getYieldApiMock } from "./yield-api-handlers"; export const handlers = [ - http.get("*/v1/actions/:actionId/gas-estimate", async () => { - await delay(); + ...getExternalApiMock(), + ...getLegacyApiMock(), + ...getYieldApiMock(), + http.all("*", async ({ request }) => { + const url = new URL(request.url); + const isAppApiPath = + url.pathname === "/health" || + url.pathname.startsWith("/v1/") || + url.pathname.startsWith("/v2/"); - return new HttpResponse(null, { status: 400 }); - }), - http.get("https://i18n.stakek.it/locales/en/errors.json", async () => { - await delay(); + if (url.origin === window.location.origin && !isAppApiPath) { + return passthrough(); + } - return HttpResponse.json({}); - }), - http.get("*relay.walletconnect*", async () => { await delay(); - return new HttpResponse(null, { status: 500 }); + return HttpResponse.json( + { + message: `Unhandled test request: ${request.method} ${request.url}`, + }, + { status: 500 } + ); }), - http.all("*", passthrough), - ...getStakeKitMock(), ]; diff --git a/packages/widget/tests/mocks/legacy-api-handlers.ts b/packages/widget/tests/mocks/legacy-api-handlers.ts new file mode 100644 index 00000000..16d9a0c9 --- /dev/null +++ b/packages/widget/tests/mocks/legacy-api-handlers.ts @@ -0,0 +1,105 @@ +import { delay, HttpResponse, http } from "msw"; +import type { + TokenDto, + YieldRewardsSummaryResponseDto, +} from "../../src/generated/api/legacy"; +import { legacyYieldFixture } from "../fixtures"; +import { legacyApiRoute } from "./api-routes"; + +const defaultToken: TokenDto = { + name: "Ethereum", + symbol: "ETH", + decimals: 18, + network: "ethereum", + coinGeckoId: "ethereum", + logoURI: "https://assets.stakek.it/tokens/eth.svg", +}; + +const defaultYield = legacyYieldFixture({ + id: "ethereum-eth-native-staking", + token: defaultToken, + tokens: [defaultToken], + validators: [], +}); + +export const getLegacyApiMock = () => [ + http.get(legacyApiRoute("/v1/tokens"), async () => { + await delay(); + + return HttpResponse.json([ + { + token: defaultToken, + availableYields: [defaultYield.id], + }, + ]); + }), + + http.post(legacyApiRoute("/v1/tokens/balances/scan"), async () => { + await delay(); + + return HttpResponse.json([ + { + token: defaultToken, + amount: "0", + availableYields: [defaultYield.id], + }, + ]); + }), + + http.post(legacyApiRoute("/v1/tokens/balances"), async () => { + await delay(); + + return HttpResponse.json([ + { token: defaultToken, amount: "0", availableYields: [defaultYield.id] }, + ]); + }), + + http.post(legacyApiRoute("/v1/tokens/prices"), async () => { + await delay(); + + return HttpResponse.json({ + "ethereum-": { + price: 1, + price_24_h: 0, + }, + }); + }), + + http.get(legacyApiRoute("/v1/yields/:integrationId"), async ({ params }) => { + await delay(); + + return HttpResponse.json( + legacyYieldFixture({ + ...defaultYield, + id: String(params.integrationId), + }) + ); + }), + + http.post( + legacyApiRoute("/v1/yields/:integrationId/rewards-summary"), + async () => { + await delay(); + + return HttpResponse.json({ + rewards: { + total: "0", + last24H: "0", + last7D: "0", + last30D: "0", + lastYear: "0", + }, + token: defaultToken, + } satisfies YieldRewardsSummaryResponseDto); + } + ), + + http.post( + legacyApiRoute("/v1/transactions/verification/:network"), + async () => { + await delay(); + + return HttpResponse.json({ message: "verification-message" }); + } + ), +]; diff --git a/packages/widget/tests/mocks/yield-api-handlers.ts b/packages/widget/tests/mocks/yield-api-handlers.ts new file mode 100644 index 00000000..d430d945 --- /dev/null +++ b/packages/widget/tests/mocks/yield-api-handlers.ts @@ -0,0 +1,212 @@ +import { delay, HttpResponse, http } from "msw"; +import type { + YieldCreateActionDto, + YieldCreateManageActionDto, +} from "../../src/domain/types/action"; +import type { TokenDto } from "../../src/domain/types/tokens"; +import { + yieldApiActionFixture, + yieldApiNetworkFixture, + yieldApiTransactionFixture, + yieldApiValidatorsFixture, + yieldApiYieldFixture, + yieldBalanceFixture, + yieldRiskSummaryFixture, +} from "../fixtures"; +import { yieldApiRoute } from "./api-routes"; + +const defaultToken: TokenDto = { + name: "Ethereum", + symbol: "ETH", + decimals: 18, + network: "ethereum", + coinGeckoId: "ethereum", + logoURI: "https://assets.stakek.it/tokens/eth.svg", +}; + +const defaultYield = yieldApiYieldFixture({ + id: "ethereum-eth-native-staking", + token: defaultToken, + tokens: [defaultToken], + inputTokens: [defaultToken], + outputToken: defaultToken, + risk: yieldRiskSummaryFixture(), +}); + +const createDefaultAction = ( + body: YieldCreateActionDto | YieldCreateManageActionDto, + type: "STAKE" | "UNSTAKE" | "CLAIM_REWARDS" = "STAKE" +) => { + const transaction = yieldApiTransactionFixture({ + id: "default-transaction-id", + network: defaultToken.network, + status: "CREATED", + type, + }); + + return yieldApiActionFixture({ + id: "default-action-id", + yieldId: "yieldId" in body ? body.yieldId : defaultYield.id, + type, + address: body.address, + amount: body.arguments?.amount ?? null, + amountRaw: body.arguments?.amount ?? null, + transactions: [transaction], + rawArguments: body.arguments ?? null, + }); +}; + +export const getYieldApiMock = () => [ + http.get(yieldApiRoute("/health"), async () => { + await delay(); + + return HttpResponse.json({ + status: "OK", + timestamp: new Date(0).toISOString(), + }); + }), + + http.get(yieldApiRoute("/v1/networks"), async () => { + await delay(); + + return HttpResponse.json([ + yieldApiNetworkFixture({ id: defaultToken.network }), + ]); + }), + + http.get(yieldApiRoute("/v1/yields"), async () => { + await delay(); + + return HttpResponse.json({ + items: [defaultYield], + total: 1, + limit: 20, + offset: 0, + }); + }), + + http.get(yieldApiRoute("/v1/yields/:yieldId"), async ({ params }) => { + await delay(); + + return HttpResponse.json( + yieldApiYieldFixture({ + ...defaultYield, + id: String(params.yieldId), + }) + ); + }), + + http.get(yieldApiRoute("/v1/yields/:yieldId/validators"), async () => { + await delay(); + + return HttpResponse.json({ + items: yieldApiValidatorsFixture([]), + total: 0, + offset: 0, + limit: 20, + }); + }), + + http.post(yieldApiRoute("/v1/yields/balances"), async () => { + await delay(); + + return HttpResponse.json({ + items: [], + errors: [], + }); + }), + + http.post( + yieldApiRoute("/v1/yields/:yieldId/balances"), + async ({ params }) => { + await delay(); + + return HttpResponse.json({ + yieldId: String(params.yieldId), + balances: [yieldBalanceFixture({ token: defaultToken })], + }); + } + ), + + http.post(yieldApiRoute("/v1/actions/enter"), async ({ request }) => { + await delay(); + + return HttpResponse.json( + createDefaultAction((await request.json()) as YieldCreateActionDto) + ); + }), + + http.post(yieldApiRoute("/v1/actions/exit"), async ({ request }) => { + await delay(); + + return HttpResponse.json( + createDefaultAction( + (await request.json()) as YieldCreateActionDto, + "UNSTAKE" + ) + ); + }), + + http.post(yieldApiRoute("/v1/actions/manage"), async ({ request }) => { + await delay(); + + return HttpResponse.json( + createDefaultAction( + (await request.json()) as YieldCreateManageActionDto, + "CLAIM_REWARDS" + ) + ); + }), + + http.get(yieldApiRoute("/v1/actions"), async () => { + await delay(); + + return HttpResponse.json({ + items: [], + total: 0, + limit: 20, + offset: 0, + }); + }), + + http.get( + yieldApiRoute("/v1/transactions/:transactionId"), + async ({ params }) => { + await delay(); + + return HttpResponse.json( + yieldApiTransactionFixture({ + id: String(params.transactionId), + }) + ); + } + ), + + http.post( + yieldApiRoute("/v1/transactions/:transactionId/submit"), + async ({ params }) => { + await delay(); + + return HttpResponse.json( + yieldApiTransactionFixture({ + id: String(params.transactionId), + status: "BROADCASTED", + }) + ); + } + ), + + http.put( + yieldApiRoute("/v1/transactions/:transactionId/submit-hash"), + async ({ params }) => { + await delay(); + + return HttpResponse.json( + yieldApiTransactionFixture({ + id: String(params.transactionId), + status: "BROADCASTED", + }) + ); + } + ), +]; diff --git a/packages/widget/tests/providers/api-client.test.tsx b/packages/widget/tests/providers/api-client.test.tsx new file mode 100644 index 00000000..325cda71 --- /dev/null +++ b/packages/widget/tests/providers/api-client.test.tsx @@ -0,0 +1,269 @@ +import { HttpResponse, http } from "msw"; +import { delayAPIRequests } from "../../src/common/delay-api-requests"; +import { config } from "../../src/config"; +import { useGeoBlock } from "../../src/hooks/use-geo-block"; +import { useRichErrors } from "../../src/hooks/use-rich-errors"; +import { createApiClient } from "../../src/providers/api/api-client"; +import { describe, expect, it } from "../utils/test-extend"; +import { renderHook } from "../utils/test-utils"; + +const createTestClient = ( + options: Partial[0]> = {} +) => + createApiClient({ + apiKey: "test-key", + baseUrl: "https://api.example.com", + yieldsApiUrl: "https://yield.example.com", + ...options, + }); + +const normalizeUrl = (url: string) => url.replace(/\/$/, ""); + +describe("API client", () => { + it("constructs bound generated legacy and Yield clients with shared headers", async ({ + worker, + }) => { + const calls: Array<{ headers: Headers; url: string }> = []; + worker.use( + http.get("https://api.example.com/v1/tokens", ({ request }) => { + calls.push({ headers: request.headers, url: request.url }); + + return HttpResponse.json([]); + }), + http.get("https://yield.example.com/health", ({ request }) => { + calls.push({ headers: request.headers, url: request.url }); + + return HttpResponse.json({ + status: "OK", + timestamp: new Date(0).toISOString(), + }); + }) + ); + const client = createTestClient(); + + try { + await expect( + client.legacy.TokenControllerGetTokens(undefined) + ).resolves.toEqual([]); + await expect( + client.yield.HealthControllerHealth(undefined) + ).resolves.toMatchObject({ + status: "OK", + }); + + expect(calls.map((call) => call.url)).toEqual([ + "https://api.example.com/v1/tokens", + "https://yield.example.com/health", + ]); + expect( + calls.every((call) => call.headers.get("X-API-KEY") === "test-key") + ).toBe(true); + } finally { + client.dispose(); + } + }); + + it("exposes only the generated operations currently used by the app", () => { + const client = createTestClient(); + + try { + expect("TokenControllerGetTokens" in client.legacy).toBe(true); + expect("AuthControllerMe" in client.legacy).toBe(false); + expect("YieldsControllerGetAggregateBalances" in client.yield).toBe(true); + expect("ProvidersControllerGetProviders" in client.yield).toBe(false); + } finally { + client.dispose(); + } + }); + + it("records rich errors for failed StakeKit API responses", async ({ + worker, + }) => { + const richError = await renderHook(() => useRichErrors()); + richError.result.current.resetError(); + const apiUrl = normalizeUrl(config.env.apiUrl); + worker.use( + http.get(`${apiUrl}/v1/tokens`, () => + HttpResponse.json( + { code: 400, details: { code: "TEST" }, message: "Rich failure" }, + { status: 400 } + ) + ) + ); + const client = createTestClient({ baseUrl: apiUrl }); + + try { + await expect( + client.legacy.TokenControllerGetTokens(undefined) + ).rejects.toMatchObject({ + _tag: "TokenControllerGetTokens400", + response: { status: 400 }, + }); + await expect + .poll(() => richError.result.current.error?.message) + .toBe("Rich failure"); + } finally { + client.dispose(); + richError.unmount(); + } + }); + + it("records geo-block responses", async ({ worker }) => { + const geoBlock = await renderHook(() => useGeoBlock()); + const apiUrl = normalizeUrl(config.env.apiUrl); + worker.use( + http.get(`${apiUrl}/v1/tokens`, () => + HttpResponse.json( + { + countryCode: "CA", + message: "Access denied", + regionCode: "CA-ON", + tags: ["staking"], + type: "GEO_LOCATION", + }, + { status: 403 } + ) + ) + ); + const client = createTestClient({ baseUrl: apiUrl }); + + try { + await expect( + client.legacy.TokenControllerGetTokens(undefined) + ).rejects.toBeTruthy(); + await expect + .poll(() => { + const value = geoBlock.result.current; + + return value === false ? undefined : value.countryCode; + }) + .toBe("CA"); + + const value = geoBlock.result.current; + expect(value === false ? [] : [...value.tags]).toEqual(["staking"]); + } finally { + client.dispose(); + geoBlock.unmount(); + } + }); + + it("retries transient response statuses", async ({ worker }) => { + let attempts = 0; + worker.use( + http.get("https://api.example.com/v1/tokens", () => { + attempts += 1; + + return attempts < 3 + ? HttpResponse.json( + { code: 500, message: "temporary" }, + { status: 500 } + ) + : HttpResponse.json([]); + }) + ); + const client = createTestClient(); + + try { + await expect( + client.legacy.TokenControllerGetTokens(undefined) + ).resolves.toEqual([]); + expect(attempts).toBe(3); + } finally { + client.dispose(); + } + }); + + it("does not retry non-transient response statuses", async ({ worker }) => { + let attempts = 0; + worker.use( + http.get("https://api.example.com/v1/tokens", () => { + attempts += 1; + + return HttpResponse.json( + { code: 400, message: "bad request" }, + { status: 400 } + ); + }) + ); + const client = createTestClient(); + + try { + await expect( + client.legacy.TokenControllerGetTokens(undefined) + ).rejects.toMatchObject({ + _tag: "TokenControllerGetTokens400", + cause: { code: 400, message: "bad request" }, + response: { status: 400 }, + }); + expect(attempts).toBe(1); + } finally { + client.dispose(); + } + }); + + it("does not retry aborted requests", async ({ worker }) => { + let attempts = 0; + const controller = new AbortController(); + worker.use( + http.get("https://api.example.com/v1/tokens", async ({ request }) => { + attempts += 1; + controller.abort(); + + await new Promise((resolve) => { + request.signal.addEventListener("abort", resolve, { once: true }); + }); + + return HttpResponse.json([]); + }) + ); + const client = createTestClient(); + + try { + await expect( + client + .withRunOptions({ signal: controller.signal }) + .legacy.TokenControllerGetTokens(undefined) + ).rejects.toBeTruthy(); + expect(attempts).toBeLessThanOrEqual(1); + } finally { + client.dispose(); + } + }); + + it("waits for delayed API requests before resolving successful responses", async ({ + worker, + }) => { + const env = config.env as unknown as { isTestMode: boolean }; + const originalIsTestMode = env.isTestMode; + env.isTestMode = false; + + const releaseDelay = delayAPIRequests(); + let resolved = false; + worker.use( + http.get("https://api.example.com/v1/tokens", () => HttpResponse.json([])) + ); + const client = createTestClient(); + + try { + const request = client.legacy + .TokenControllerGetTokens(undefined) + .then(() => { + resolved = true; + }); + + await Promise.resolve(); + await Promise.resolve(); + + expect(resolved).toBe(false); + + releaseDelay(); + await request; + + expect(resolved).toBe(true); + } finally { + client.dispose(); + releaseDelay(); + env.isTestMode = originalIsTestMode; + } + }); +}); diff --git a/packages/widget/tests/use-cases/deep-links-flow/deep-links-flow.test.tsx b/packages/widget/tests/use-cases/deep-links-flow/deep-links-flow.test.tsx index af98aa92..774061b7 100644 --- a/packages/widget/tests/use-cases/deep-links-flow/deep-links-flow.test.tsx +++ b/packages/widget/tests/use-cases/deep-links-flow/deep-links-flow.test.tsx @@ -1,18 +1,18 @@ import { numberToHex } from "viem"; -import { describe, expect, it } from "vitest"; import { APToPercentage } from "../../../src/utils"; +import { describe, expect, it } from "../../utils/test-extend"; import { renderApp } from "../../utils/test-utils"; import { setup } from "./setup"; describe("Deep links flow", () => { - it("Loads app with correct yield opportunity", async () => { + it("Loads app with correct yield opportunity", async ({ worker }) => { const { customConnectors, setUrl, account, avaxLiquidStaking, avaxNativeStaking, - } = await setup(); + } = await setup(worker); setUrl({ accountId: account, yieldId: avaxLiquidStaking.id }); @@ -31,7 +31,7 @@ describe("Deep links flow", () => { await expect .element( withAvaxLiquidStakingApp - .getByText(`${avaxLiquidStaking.metadata.rewardTokens[0].symbol}`) + .getByText(`${avaxLiquidStaking.metadata.rewardTokens![0].symbol}`) .first() ) .toBeInTheDocument(); @@ -39,7 +39,7 @@ describe("Deep links flow", () => { await expect .element( withAvaxLiquidStakingApp - .getByText(`via ${avaxLiquidStaking.metadata.provider.name}`) + .getByText(`via ${avaxLiquidStaking.metadata.provider!.name}`) .first() ) .toBeInTheDocument(); @@ -75,9 +75,11 @@ describe("Deep links flow", () => { await withAvaxNativeStakingApp.unmount(); }); - it("Works correctly with pending action query param without validator address requirement", async () => { + it("Works correctly with pending action query param without validator address requirement", async ({ + worker, + }) => { const { customConnectors, setUrl, account, avaxLiquidStaking, requestFn } = - await setup(); + await setup(worker); setUrl({ accountId: account, @@ -121,9 +123,11 @@ describe("Deep links flow", () => { app.unmount(); }); - it("Works correctly with pending action query param with validator address requirement", async () => { + it("Works correctly with pending action query param with validator address requirement", async ({ + worker, + }) => { const { customConnectors, setUrl, account, avaxLiquidStaking, requestFn } = - await setup({ withValidatorAddressesRequired: true }); + await setup(worker, { withValidatorAddressesRequired: true }); setUrl({ accountId: account, @@ -182,9 +186,9 @@ describe("Deep links flow", () => { await app.unmount(); }); - it("Handles init network correctly", async () => { + it("Handles init network correctly", async ({ worker }) => { const { setUrl, customConnectors, requestFn, getCurrentChainId } = - await setup(); + await setup(worker); expect(getCurrentChainId()).not.toBe(1); setUrl({ network: "ethereum" }); diff --git a/packages/widget/tests/use-cases/deep-links-flow/param-validation.test.tsx b/packages/widget/tests/use-cases/deep-links-flow/param-validation.test.tsx index a9a0edc9..80a57696 100644 --- a/packages/widget/tests/use-cases/deep-links-flow/param-validation.test.tsx +++ b/packages/widget/tests/use-cases/deep-links-flow/param-validation.test.tsx @@ -1,9 +1,9 @@ -import type { ActionTypes } from "@stakekit/api-hooks"; import { I18nextProvider } from "react-i18next"; -import { describe, expect, it } from "vitest"; +import type { ActionType } from "../../../src/domain/types/action"; import { useInitQueryParams } from "../../../src/hooks/use-init-query-params"; import { SettingsContextProvider } from "../../../src/providers/settings"; import { i18nInstance } from "../../../src/translation"; +import { describe, expect, it } from "../../utils/test-extend"; import { renderHook } from "../../utils/test-utils"; import { setUrl as _setUrl } from "./utils"; @@ -60,7 +60,7 @@ describe("Deep link param validation", () => { it("Should validate pendingAction param", async () => { const setAndAssertIsValidPendingActionParam = async ( - pendingaction: ActionTypes | (string & {}), + pendingaction: ActionType | (string & {}), valid: boolean ) => { _setUrl({ pendingaction }); diff --git a/packages/widget/tests/use-cases/deep-links-flow/setup.ts b/packages/widget/tests/use-cases/deep-links-flow/setup.ts index abc739d7..4bda9b30 100644 --- a/packages/widget/tests/use-cases/deep-links-flow/setup.ts +++ b/packages/widget/tests/use-cases/deep-links-flow/setup.ts @@ -1,19 +1,33 @@ -import type { TokenDto, YieldBalanceDto, YieldDto } from "@stakekit/api-hooks"; import { delay, HttpResponse, http } from "msw"; import { Just } from "purify-ts"; import { vitest } from "vitest"; +import type { YieldCreateManageActionDto } from "../../../src/domain/types/action"; import { waitForMs } from "../../../src/utils"; -import { pendingActionFixture, yieldFixture } from "../../fixtures"; -import { worker } from "../../mocks/worker"; +import { + legacyYieldFixture, + yieldApiActionFixture, + yieldApiNetworkFixture, + yieldApiTransactionFixture, + yieldApiValidatorFixture, + yieldApiValidatorsFixture, + yieldApiYieldFixture, +} from "../../fixtures"; +import { legacyApiRoute, yieldApiRoute } from "../../mocks/api-routes"; import { rkMockWallet } from "../../utils/mock-connector"; +import type { TestWorker } from "../../utils/test-extend"; import { setUrl as _setUrl } from "./utils"; -export const setup = async (opts?: { - withValidatorAddressesRequired?: boolean; -}) => { +type LegacyTokenDto = ReturnType["token"]; + +export const setup = async ( + worker: TestWorker, + opts?: { + withValidatorAddressesRequired?: boolean; + } +) => { const account = "0xB6c5273e79E2aDD234EBC07d87F3824e0f94B2F7"; - const ether: TokenDto = { + const ether: LegacyTokenDto = { network: "ethereum", name: "Ethereum", symbol: "ETH", @@ -22,7 +36,7 @@ export const setup = async (opts?: { logoURI: "https://assets.stakek.it/tokens/eth.svg", }; - const token: TokenDto = { + const token: LegacyTokenDto = { name: "Avalanche C Chain", symbol: "AVAX", decimals: 18, @@ -32,112 +46,208 @@ export const setup = async (opts?: { }; const amount = "6.367499123588739454"; + const avaxNativeStakingRewardRate = 0.0508; + const avaxLiquidStakingRewardRate = 0.0475; + + const legacyYieldBase = legacyYieldFixture(); + const yieldApiYieldBase = yieldApiYieldFixture(); + const avaxNativeStaking = legacyYieldFixture({ + id: "avalanche-avax-native-staking", + token, + tokens: [token], + rewardRate: avaxNativeStakingRewardRate, + rewardType: "apy", + apy: avaxNativeStakingRewardRate, + metadata: { ...legacyYieldBase.metadata, type: "staking" }, + validators: [], + }); - const avaxNativeStaking = Just(yieldFixture()) - .map( - (def): YieldDto => ({ - ...def, - id: "avalanche-avax-native-staking", - token, - tokens: [token], - metadata: { ...def.metadata, type: "staking" }, - validators: [], + const avaxLiquidStakingLegacyValidators = opts?.withValidatorAddressesRequired + ? [ + { + address: "0xe92b7ba8497486e94bb59c51f595b590c4a5f894", + status: "active" as const, + name: "Stakely", + image: "https://assets.stakek.it/validators/stakely.png", + website: "https://stakely.io/", + apr: 0.0393, + commission: 0.1, + stakedBalance: "2263157", + votingPower: 0.0090962642447408, + preferred: true, + }, + ] + : []; + const avaxLiquidStakingValidators = avaxLiquidStakingLegacyValidators.map( + (validator) => + yieldApiValidatorFixture({ + address: validator.address, + status: validator.status, + name: validator.name, + logoURI: validator.image, + website: validator.website, + rewardRate: { + total: validator.apr, + rateType: "APR", + components: [], + }, + commission: validator.commission, + tvl: validator.stakedBalance, + votingPower: validator.votingPower, + preferred: validator.preferred, }) - ) - .unsafeCoerce(); + ); - const avaxLiquidStaking = Just(yieldFixture()) - .map( - (def) => - ({ - ...def, - id: "avalanche-avax-liquid-staking", - token, - tokens: [token], - metadata: { - ...def.metadata, - name: "AVAX Liquid Staking", - type: "liquid-staking", - provider: { - id: "benqi", - name: "Benqi", - description: "", - externalLink: "https://benqi.fi/", - logoURI: "https://assets.stakek.it/providers/benqi.svg", - }, - rewardTokens: [ + const rewardToken = { + name: "Staked AVAX", + symbol: "sAVAX", + decimals: 18, + network: token.network, + logoURI: "https://assets.stakek.it/tokens/savax.svg", + address: "0x2b2c81e08f1af8835a78bb2a90ae924ace0ea4be", + }; + const avaxLiquidStaking = legacyYieldFixture({ + id: "avalanche-avax-liquid-staking", + token, + tokens: [token], + rewardRate: avaxLiquidStakingRewardRate, + rewardType: "apy", + apy: avaxLiquidStakingRewardRate, + metadata: { + ...legacyYieldBase.metadata, + name: "AVAX Liquid Staking", + type: "liquid-staking", + provider: { + id: "benqi", + name: "Benqi", + description: "", + externalLink: "https://benqi.fi/", + logoURI: "https://assets.stakek.it/providers/benqi.svg", + }, + rewardTokens: [rewardToken], + }, + validators: avaxLiquidStakingLegacyValidators, + }); + const avaxNativeStakingYieldApi = yieldApiYieldFixture({ + id: avaxNativeStaking.id, + network: token.network, + token, + tokens: [token], + inputTokens: [token], + outputToken: token, + rewardRate: { + ...yieldApiYieldBase.rewardRate, + total: avaxNativeStaking.rewardRate, + }, + mechanics: { + ...yieldApiYieldBase.mechanics, + type: "staking", + gasFeeToken: token, + }, + }); + const avaxLiquidStakingYieldApi = yieldApiYieldFixture({ + id: avaxLiquidStaking.id, + network: token.network, + token, + tokens: [token], + inputTokens: [token], + outputToken: rewardToken, + rewardRate: { + ...yieldApiYieldBase.rewardRate, + total: avaxLiquidStaking.rewardRate, + }, + metadata: { + ...yieldApiYieldBase.metadata, + name: "AVAX Liquid Staking", + }, + mechanics: { + ...yieldApiYieldBase.mechanics, + type: "staking", + requiresValidatorSelection: avaxLiquidStakingValidators.length > 0, + gasFeeToken: token, + }, + }); + + const pendingActionAmount = "0.019258000000000000"; + const legacyPendingActions = [ + { + args: { + args: { + validatorAddresses: { + required: !!opts?.withValidatorAddressesRequired, + }, + }, + }, + amount: pendingActionAmount, + type: "CLAIM_REWARDS" as const, + passthrough: + "eyJhZGRyZXNzZXMiOnsiYWRkcmVzcyI6IlRTWjFBazlaVjNOam1Wd3NUejNxMnNuYzdYR1FFSlZTRUQifX0=", + }, + ]; + const yieldApiPendingActions = [ + { + intent: "manage" as const, + type: "CLAIM_REWARDS" as const, + passthrough: + "eyJhZGRyZXNzZXMiOnsiYWRkcmVzcyI6IlRTWjFBazlaVjNOam1Wd3NUejNxMnNuYzdYR1FFSlZTRUQifX0=", + amount: pendingActionAmount, + arguments: { + fields: opts?.withValidatorAddressesRequired + ? [ { - name: "Staked AVAX", - symbol: "sAVAX", - decimals: 18, - network: token.network, - logoURI: "https://assets.stakek.it/tokens/savax.svg", - address: "0x2b2c81e08f1af8835a78bb2a90ae924ace0ea4be", + name: "validatorAddresses" as const, + type: "address" as const, + label: "Validators", + required: true, + isArray: true, }, - ], - }, - validators: opts?.withValidatorAddressesRequired - ? [ - { - address: "0xe92b7ba8497486e94bb59c51f595b590c4a5f894", - status: "active", - name: "Stakely", - image: "https://assets.stakek.it/validators/stakely.png", - website: "https://stakely.io/", - apr: 0.0393, - commission: 0.1, - stakedBalance: "2263157", - votingPower: 0.0090962642447408, - preferred: true, - }, - ] - : [], - }) satisfies YieldDto - ) - .unsafeCoerce(); - - const avaxLiquidStakingBalances: YieldBalanceDto[] = [ + ] + : [], + }, + }, + ]; + const avaxLiquidStakingBalances = [ { groupId: "b4684f63-fe54-540d-b0ae-06a2c2ecdb9e", type: "rewards", - amount: "0.019258000000000000", - pendingActions: [ - { - args: { - args: { - validatorAddresses: { - required: !!opts?.withValidatorAddressesRequired, - }, - }, - }, - type: "CLAIM_REWARDS", - passthrough: - "eyJhZGRyZXNzZXMiOnsiYWRkcmVzcyI6IlRTWjFBazlaVjNOam1Wd3NUejNxMnNuYzdYR1FFSlZTRUQifX0=", - }, - ], + amount: pendingActionAmount, + pendingActions: legacyPendingActions, pricePerShare: "1", token: avaxLiquidStaking.token, }, ]; - const pendingAction = Just(pendingActionFixture()) - .map((def): typeof def => ({ - ...def, - type: "CLAIM_REWARDS", - transactions: [ - { - ...def.transactions[0], - type: "CLAIM_REWARDS", - isMessage: false, - id: "be6f79f6-938e-48e5-bc38-8f7485d6ea67", - status: "CREATED", - }, - ], - })) - .unsafeCoerce(); + const avaxLiquidStakingBalancesV2 = [ + { + address: account, + type: "claimable", + amount: pendingActionAmount, + amountRaw: "19258000000000000", + pendingActions: yieldApiPendingActions, + token: avaxLiquidStaking.token, + amountUsd: "0.84", + isEarning: false, + }, + ]; + + const pendingTransaction = yieldApiTransactionFixture({ + id: "be6f79f6-938e-48e5-bc38-8f7485d6ea67", + network: token.network, + type: "CLAIM_REWARDS", + status: "CREATED", + isMessage: false, + }); + const pendingAction = yieldApiActionFixture({ + id: "pending-claim-rewards-action", + intent: "manage", + type: "CLAIM_REWARDS", + yieldId: avaxLiquidStaking.id, + address: account, + transactions: [pendingTransaction], + }); worker.use( - http.get("*/v1/tokens", async () => { + http.get(legacyApiRoute("/v1/tokens"), async () => { await delay(); return HttpResponse.json([ @@ -155,12 +265,15 @@ export const setup = async (opts?: { { token: ether, availableYields: ["ethereum-eth-etherfi-staking"] }, ]); }), - http.get("*/v1/yields/enabled/networks", async () => { + http.get(yieldApiRoute("/v1/networks"), async () => { await delay(); - return HttpResponse.json([token.network, ether.network]); + return HttpResponse.json([ + yieldApiNetworkFixture({ id: token.network }), + yieldApiNetworkFixture({ id: ether.network }), + ]); }), - http.post("*/v1/tokens/balances/scan", async () => { + http.post(legacyApiRoute("/v1/tokens/balances/scan"), async () => { await delay(); return HttpResponse.json([ { @@ -171,12 +284,18 @@ export const setup = async (opts?: { ]); }), - http.post("*/v1/tokens/balances", async () => { + http.post(legacyApiRoute("/v1/tokens/balances"), async () => { await delay(); - return HttpResponse.json([{ token, amount }]); + return HttpResponse.json([ + { + token, + amount, + availableYields: [avaxNativeStaking.id, avaxLiquidStaking.id], + }, + ]); }), - http.post("*/v1/tokens/prices", async () => { + http.post(legacyApiRoute("/v1/tokens/prices"), async () => { await delay(); return HttpResponse.json({ "avalanche-c-undefined": { @@ -185,15 +304,43 @@ export const setup = async (opts?: { }, }); }), - http.get(`*/v1/yields/${avaxNativeStaking.id}`, async () => { + http.get(legacyApiRoute(`/v1/yields/${avaxNativeStaking.id}`), async () => { await delay(); return HttpResponse.json(avaxNativeStaking); }), - http.get(`*/v1/yields/${avaxLiquidStaking.id}`, async () => { + http.get(yieldApiRoute(`/v1/yields/${avaxNativeStaking.id}`), async () => { + await delay(); + return HttpResponse.json(avaxNativeStakingYieldApi); + }), + http.get(legacyApiRoute(`/v1/yields/${avaxLiquidStaking.id}`), async () => { await delay(); return HttpResponse.json(avaxLiquidStaking); }), - http.post("*/v1/yields/balances/scan", async () => { + http.get(yieldApiRoute(`/v1/yields/${avaxLiquidStaking.id}`), async () => { + await delay(); + return HttpResponse.json(avaxLiquidStakingYieldApi); + }), + http.get(yieldApiRoute("/v1/yields/:yieldId/validators"), async (info) => { + await delay(); + + const yieldId = info.params.yieldId as string; + const validators = + yieldId === avaxLiquidStaking.id + ? avaxLiquidStakingValidators.length + ? yieldApiValidatorsFixture(avaxLiquidStakingValidators) + : [] + : yieldId === avaxNativeStaking.id + ? [] + : []; + + return HttpResponse.json({ + items: validators, + total: validators.length, + offset: 0, + limit: 20, + }); + }), + http.post(legacyApiRoute("/v1/yields/balances/scan"), async () => { await delay(); return HttpResponse.json([ { @@ -202,49 +349,98 @@ export const setup = async (opts?: { }, ]); }), - http.post(`*/v1/yields/${avaxNativeStaking.id}/balances/scan`, async () => { + http.post(yieldApiRoute("/v1/yields/balances"), async () => { await delay(); return HttpResponse.json({ - integrationId: avaxLiquidStaking.id, - balances: avaxLiquidStakingBalances, + items: [ + { + yieldId: avaxLiquidStaking.id, + balances: avaxLiquidStakingBalancesV2, + }, + ], + errors: [], }); }), - http.post(`*/v1/yields/${avaxLiquidStaking.id}/balances`, async () => { - await delay(); - return HttpResponse.json(avaxLiquidStakingBalances); - }), - http.post("*/v1/actions/pending", async (info) => { - const data = (await info.request.json()) as { integrationId: string }; - await delay(); - return HttpResponse.json({ - ...pendingAction, - integrationId: data.integrationId, - } satisfies typeof pendingAction); - }), - http.patch("*/v1/transactions/:transactionId", async (info) => { + http.post( + legacyApiRoute(`/v1/yields/${avaxNativeStaking.id}/balances/scan`), + async () => { + await delay(); + return HttpResponse.json({ + integrationId: avaxLiquidStaking.id, + balances: avaxLiquidStakingBalances, + }); + } + ), + http.post( + yieldApiRoute(`/v1/yields/${avaxLiquidStaking.id}/balances`), + async () => { + await delay(); + return HttpResponse.json({ + yieldId: avaxLiquidStaking.id, + balances: avaxLiquidStakingBalancesV2, + }); + } + ), + http.post(yieldApiRoute("/v1/actions/manage"), async (info) => { + const data = (await info.request.json()) as YieldCreateManageActionDto; await delay(); - const transactionId = info.params.transactionId as string; - return HttpResponse.json({ - ...pendingAction.transactions[0], - type: "CLAIM_REWARDS", - status: "WAITING_FOR_SIGNATURE", - id: transactionId, - unsignedTransaction: - '{"from":"0xcaA141ece9fEE66D15f0257F5c6C48E26784345C","gasLimit":"0x0193e0","to":"0x7D2382b1f8Af621229d33464340541Db362B4907","data":"0x00f714ce00000000000000000000000000000000000000000000000000037cb07e6e4276000000000000000000000000caa141ece9fee66d15f0257f5c6c48e26784345c","nonce":89,"type":2,"maxFeePerGas":"0xbfa6de","maxPriorityFeePerGas":"0x0f4240","chainId":43114}', + ...yieldApiActionFixture({ + id: pendingAction.id, + yieldId: data.yieldId, + type: pendingAction.type, + address: data.address, + amount: pendingAction.amount, + amountRaw: pendingAction.amount, + amountUsd: pendingAction.amountUsd, + transactions: [ + yieldApiTransactionFixture({ + id: pendingAction.transactions[0].id, + network: pendingAction.transactions[0].network, + type: "CLAIM_REWARDS", + status: "CREATED", + unsignedTransaction: + '{"from":"0xcaA141ece9fEE66D15f0257F5c6C48E26784345C","gasLimit":"0x0193e0","to":"0x7D2382b1f8Af621229d33464340541Db362B4907","data":"0x00f714ce00000000000000000000000000000000000000000000000000037cb07e6e4276000000000000000000000000caa141ece9fee66d15f0257f5c6c48e26784345c","nonce":89,"type":2,"maxFeePerGas":"0xbfa6de","maxPriorityFeePerGas":"0x0f4240","chainId":43114}', + }), + ], + rawArguments: data.arguments ?? null, + createdAt: pendingAction.createdAt, + completedAt: pendingAction.completedAt, + status: pendingAction.status, + }), }); }), - http.post("*/v1/transactions/:transactionId/submit_hash", async () => { - await delay(1000); - return new HttpResponse(null, { status: 201 }); - }), - http.get("*/v1/transactions/:transactionId/status", async () => { + http.put( + yieldApiRoute("/v1/transactions/:transactionId/submit-hash"), + async (info) => { + await delay(); + + const transactionId = info.params.transactionId as string; + + return HttpResponse.json({ + ...yieldApiTransactionFixture({ + type: "CLAIM_REWARDS", + network: pendingAction.transactions[0].network, + status: "BROADCASTED", + id: transactionId, + hash: "transaction_hash", + }), + }); + } + ), + http.get(yieldApiRoute("/v1/transactions/:transactionId"), async (info) => { + const transactionId = info.params.transactionId as string; return HttpResponse.json({ - url: "https://snowtrace.dev/tx/0x5c2e4ac81fa12b8e935e1cf5e39eda4594d75e82da0c9b44c6d85f20214452fb", - network: avaxLiquidStaking.token.network, - hash: "0x5c2e4ac81fa12b8e935e1cf5e39eda4594d75e82da0c9b44c6d85f20214452fb", - status: "CONFIRMED", + ...yieldApiTransactionFixture({ + id: transactionId, + type: "CLAIM_REWARDS", + explorerUrl: + "https://snowtrace.dev/tx/0x5c2e4ac81fa12b8e935e1cf5e39eda4594d75e82da0c9b44c6d85f20214452fb", + network: avaxLiquidStaking.token.network, + hash: "0x5c2e4ac81fa12b8e935e1cf5e39eda4594d75e82da0c9b44c6d85f20214452fb", + status: "CONFIRMED", + }), }); }) ); diff --git a/packages/widget/tests/use-cases/external-provider/external-provider.test.tsx b/packages/widget/tests/use-cases/external-provider/external-provider.test.tsx index ec853d16..c36d6b25 100644 --- a/packages/widget/tests/use-cases/external-provider/external-provider.test.tsx +++ b/packages/widget/tests/use-cases/external-provider/external-provider.test.tsx @@ -1,15 +1,17 @@ import { avalanche, mainnet } from "viem/chains"; -import { describe, expect, it, vi } from "vitest"; import { userEvent } from "vitest/browser"; import { SKApp, type SKAppProps } from "../../../src/App"; import { solana, ton } from "../../../src/domain/types/chains/misc"; import { formatAddress } from "../../../src/utils"; +import { describe, expect, it, vi } from "../../utils/test-extend"; import { renderApp } from "../../utils/test-utils"; import { setup } from "./setup"; describe("External Provider", () => { - it("Handles changing address and supported chains correctly", async () => { - setup(); + it("Handles changing address and supported chains correctly", async ({ + worker, + }) => { + setup(worker); const switchChainSpy = vi.fn(async (_: number) => {}); const sendTransactionSpy = vi.fn(async () => "hash"); diff --git a/packages/widget/tests/use-cases/external-provider/setup.ts b/packages/widget/tests/use-cases/external-provider/setup.ts index 40767911..8df6c9ef 100644 --- a/packages/widget/tests/use-cases/external-provider/setup.ts +++ b/packages/widget/tests/use-cases/external-provider/setup.ts @@ -1,11 +1,17 @@ -import type { TokenDto, YieldDto } from "@stakekit/api-hooks"; import { delay, HttpResponse, http } from "msw"; -import { Just } from "purify-ts"; -import { yieldFixture } from "../../fixtures"; -import { worker } from "../../mocks/worker"; - -export const setup = () => { - const avalancheCToken: TokenDto = { +import { + legacyYieldFixture, + yieldApiNetworkFixture, + yieldApiValidatorsFixture, + yieldApiYieldFixture, +} from "../../fixtures"; +import { legacyApiRoute, yieldApiRoute } from "../../mocks/api-routes"; +import type { TestWorker } from "../../utils/test-extend"; + +type LegacyTokenDto = ReturnType["token"]; + +export const setup = (worker: TestWorker) => { + const avalancheCToken: LegacyTokenDto = { name: "Avalanche C Chain", symbol: "AVAX", decimals: 18, @@ -14,7 +20,7 @@ export const setup = () => { logoURI: "https://assets.stakek.it/tokens/avax.svg", }; - const ether: TokenDto = { + const ether: LegacyTokenDto = { network: "ethereum", name: "Ethereum", symbol: "ETH", @@ -23,7 +29,7 @@ export const setup = () => { logoURI: "https://assets.stakek.it/tokens/eth.svg", }; - const solanaToken: TokenDto = { + const solanaToken: LegacyTokenDto = { network: "solana", name: "Solana", symbol: "SOL", @@ -32,7 +38,7 @@ export const setup = () => { logoURI: "https://assets.stakek.it/tokens/sol.svg", }; - const tonToken: TokenDto = { + const tonToken: LegacyTokenDto = { network: "ton", name: "Toncoin", symbol: "TON", @@ -41,86 +47,95 @@ export const setup = () => { logoURI: "https://assets.stakek.it/tokens/ton.svg", }; - const avalancheAvaxNativeStaking = Just(yieldFixture()) - .map( - (val) => - ({ - ...val, - id: "avalanche-avax-native-staking", - token: avalancheCToken, - tokens: [avalancheCToken], - metadata: { - ...val.metadata, - type: "staking", - gasFeeToken: avalancheCToken, - }, - }) satisfies YieldDto - ) - .unsafeCoerce(); - - const etherNativeStaking = Just(yieldFixture()) - .map( - (val) => - ({ - ...val, - id: "ethereum-eth-etherfi-staking", - token: ether, - tokens: [ether], - metadata: { - ...val.metadata, - type: "staking", - gasFeeToken: ether, - }, - }) satisfies YieldDto - ) - .unsafeCoerce(); - - const solanaNativeStaking = Just(yieldFixture()) - .map( - (val) => - ({ - ...val, - id: "solana-sol-native-staking", - token: solanaToken, - tokens: [solanaToken], - metadata: { - ...val.metadata, - type: "staking", - gasFeeToken: solanaToken, - }, - }) satisfies YieldDto - ) - .unsafeCoerce(); - - const tonNativeStaking = Just(yieldFixture()) - .map( - (val) => - ({ - ...val, - id: "ton-native-staking", - token: tonToken, - tokens: [tonToken], - metadata: { - ...val.metadata, - type: "staking", - gasFeeToken: tonToken, - }, - }) satisfies YieldDto - ) - .unsafeCoerce(); + const legacyYieldBase = legacyYieldFixture(); + const yieldApiYieldBase = yieldApiYieldFixture(); + const createLegacyNativeStaking = ({ + id, + token, + }: { + id: string; + token: LegacyTokenDto; + }) => + legacyYieldFixture({ + id, + token, + tokens: [token], + validators: [], + metadata: { + ...legacyYieldBase.metadata, + type: "staking", + gasFeeToken: token, + }, + }); + const createYieldApiNativeStaking = ({ + id, + token, + }: { + id: string; + token: LegacyTokenDto; + }) => + yieldApiYieldFixture({ + id, + network: token.network, + token, + tokens: [token], + inputTokens: [token], + outputToken: token, + mechanics: { + ...yieldApiYieldBase.mechanics, + type: "staking", + gasFeeToken: token, + }, + }); + + const avalancheAvaxNativeStaking = createLegacyNativeStaking({ + id: "avalanche-avax-native-staking", + token: avalancheCToken, + }); + const etherNativeStaking = createLegacyNativeStaking({ + id: "ethereum-eth-etherfi-staking", + token: ether, + }); + const solanaNativeStaking = createLegacyNativeStaking({ + id: "solana-sol-native-staking", + token: solanaToken, + }); + const tonNativeStaking = createLegacyNativeStaking({ + id: "ton-native-staking", + token: tonToken, + }); + + const etherNativeStakingYieldApi = createYieldApiNativeStaking({ + id: etherNativeStaking.id, + token: ether, + }); + const avalancheAvaxNativeStakingYieldApi = createYieldApiNativeStaking({ + id: avalancheAvaxNativeStaking.id, + token: avalancheCToken, + }); + const solanaNativeStakingYieldApi = createYieldApiNativeStaking({ + id: solanaNativeStaking.id, + token: solanaToken, + }); + const tonNativeStakingYieldApi = createYieldApiNativeStaking({ + id: tonNativeStaking.id, + token: tonToken, + }); worker.use( - http.get("*/v1/yields/enabled/networks", async () => { + http.get(yieldApiRoute("/v1/networks"), async () => { await delay(); return HttpResponse.json([ - etherNativeStaking.token.network, - avalancheAvaxNativeStaking.token.network, - solanaNativeStaking.token.network, - tonNativeStaking.token.network, + yieldApiNetworkFixture({ id: etherNativeStaking.token.network }), + yieldApiNetworkFixture({ + id: avalancheAvaxNativeStaking.token.network, + }), + yieldApiNetworkFixture({ id: solanaNativeStaking.token.network }), + yieldApiNetworkFixture({ id: tonNativeStaking.token.network }), ]); }), - http.get("*/v1/tokens", async () => { + http.get(legacyApiRoute("/v1/tokens"), async () => { await delay(); return HttpResponse.json([ @@ -134,7 +149,7 @@ export const setup = () => { ]); }), - http.post("*/v1/tokens/balances/scan", async () => { + http.post(legacyApiRoute("/v1/tokens/balances/scan"), async () => { await delay(); return HttpResponse.json([ { @@ -160,25 +175,72 @@ export const setup = () => { ]); }), - http.get(`*/v1/yields/${etherNativeStaking.id}`, async () => { + http.get( + legacyApiRoute(`/v1/yields/${etherNativeStaking.id}`), + async () => { + await delay(); + + return HttpResponse.json(etherNativeStaking); + } + ), + http.get(yieldApiRoute(`/v1/yields/${etherNativeStaking.id}`), async () => { await delay(); - return HttpResponse.json(etherNativeStaking); + return HttpResponse.json(etherNativeStakingYieldApi); }), - http.get(`*/v1/yields/${avalancheAvaxNativeStaking.id}`, async () => { + http.get( + legacyApiRoute(`/v1/yields/${avalancheAvaxNativeStaking.id}`), + async () => { + await delay(); + + return HttpResponse.json(avalancheAvaxNativeStaking); + } + ), + http.get( + yieldApiRoute(`/v1/yields/${avalancheAvaxNativeStaking.id}`), + async () => { + await delay(); + + return HttpResponse.json(avalancheAvaxNativeStakingYieldApi); + } + ), + http.get( + legacyApiRoute(`/v1/yields/${solanaNativeStaking.id}`), + async () => { + await delay(); + + return HttpResponse.json(solanaNativeStaking); + } + ), + http.get( + yieldApiRoute(`/v1/yields/${solanaNativeStaking.id}`), + async () => { + await delay(); + + return HttpResponse.json(solanaNativeStakingYieldApi); + } + ), + http.get(legacyApiRoute(`/v1/yields/${tonNativeStaking.id}`), async () => { await delay(); - return HttpResponse.json(avalancheAvaxNativeStaking); + return HttpResponse.json(tonNativeStaking); }), - http.get(`*/v1/yields/${solanaNativeStaking.id}`, async () => { + http.get(yieldApiRoute(`/v1/yields/${tonNativeStaking.id}`), async () => { await delay(); - return HttpResponse.json(solanaNativeStaking); + return HttpResponse.json(tonNativeStakingYieldApi); }), - http.get(`*/v1/yields/${tonNativeStaking.id}`, async () => { + http.get(yieldApiRoute("/v1/yields/:yieldId/validators"), async () => { await delay(); - return HttpResponse.json(tonNativeStaking); + const validators = yieldApiValidatorsFixture([]); + + return HttpResponse.json({ + items: validators, + total: validators.length, + offset: 0, + limit: 20, + }); }) ); }; diff --git a/packages/widget/tests/use-cases/gas-warning-flow/gas-warning-flow.test.tsx b/packages/widget/tests/use-cases/gas-warning-flow/gas-warning-flow.test.tsx index 26bdb4ef..06be8107 100644 --- a/packages/widget/tests/use-cases/gas-warning-flow/gas-warning-flow.test.tsx +++ b/packages/widget/tests/use-cases/gas-warning-flow/gas-warning-flow.test.tsx @@ -1,7 +1,6 @@ -import type { YieldDto } from "@stakekit/api-hooks"; -import { describe, expect, it } from "vitest"; import { userEvent } from "vitest/browser"; import { formatAddress } from "../../../src/utils"; +import { describe, expect, it } from "../../utils/test-extend"; import { renderApp } from "../../utils/test-utils"; import { setup } from "./setup"; @@ -14,7 +13,9 @@ describe("Gas warning flow", () => { customConnectors, }: { availableAmount: string; - yieldDto: YieldDto; + yieldDto: ReturnType< + typeof setup + >["yieldWithSameGasAndStakeToken"]["yieldDto"]; withWarning: boolean; } & Pick, "account" | "customConnectors">) => { const app = await renderApp({ @@ -50,9 +51,11 @@ describe("Gas warning flow", () => { await userEvent.keyboard(stakeAmount); await expect - .element(app.getByRole("button", { name: "Stake" })) + .element(app.getByRole("button", { name: "Stake", exact: true })) .toBeInTheDocument(); - await userEvent.click(app.getByRole("button", { name: "Stake" })); + await userEvent.click( + app.getByRole("button", { name: "Stake", exact: true }) + ); if (withWarning) { await expect @@ -71,14 +74,14 @@ describe("Gas warning flow", () => { }; describe("Stake token same as gas token", () => { - it("Txs gas > gas token amount", async () => { + it("Txs gas > gas token amount", async ({ worker }) => { const { account, customConnectors, yieldWithSameGasAndStakeToken, setTxGas, setAvalanceCTokenAmount, - } = setup(); + } = setup(worker); const totalTxGas = 4; const availableAmount = totalTxGas - 1; @@ -98,14 +101,14 @@ describe("Gas warning flow", () => { }); }); - it("Txs gas < gas token amount", async () => { + it("Txs gas < gas token amount", async ({ worker }) => { const { account, customConnectors, yieldWithSameGasAndStakeToken, setTxGas, setAvalanceCTokenAmount, - } = setup(); + } = setup(worker); const totalTxGas = 4; const availableAmount = totalTxGas + 1; @@ -127,14 +130,14 @@ describe("Gas warning flow", () => { }); describe("Stake token different than gas token", () => { - it("Txs gas > gas token amount", async () => { + it("Txs gas > gas token amount", async ({ worker }) => { const { account, customConnectors, yieldWithDifferentGasAndStakeToken, setTxGas, setUsdcTokenAmount, - } = setup(); + } = setup(worker); const totalTxGas = 4; const availableAmount = totalTxGas - 1; @@ -154,14 +157,14 @@ describe("Gas warning flow", () => { }); }); - it("Txs gas < gas token amount", async () => { + it("Txs gas < gas token amount", async ({ worker }) => { const { account, customConnectors, yieldWithDifferentGasAndStakeToken, setTxGas, setUsdcTokenAmount, - } = setup(); + } = setup(worker); const totalTxGas = 4; const availableAmount = totalTxGas + 1; diff --git a/packages/widget/tests/use-cases/gas-warning-flow/setup.ts b/packages/widget/tests/use-cases/gas-warning-flow/setup.ts index dd16f71a..ea7f52fc 100644 --- a/packages/widget/tests/use-cases/gas-warning-flow/setup.ts +++ b/packages/widget/tests/use-cases/gas-warning-flow/setup.ts @@ -1,24 +1,23 @@ -import type { - ActionDto, - ActionRequestDto, - TokenDto, - TransactionDto, - YieldDto, -} from "@stakekit/api-hooks"; import { delay, HttpResponse, http } from "msw"; -import { Just } from "purify-ts"; import { vitest } from "vitest"; +import type { YieldCreateActionDto } from "../../../src/domain/types/action"; import { waitForMs } from "../../../src/utils"; import { - enterResponseFixture, - transactionConstructFixture, - yieldFixture, + legacyYieldFixture, + yieldApiActionFixture, + yieldApiNetworkFixture, + yieldApiTransactionFixture, + yieldApiValidatorsFixture, + yieldApiYieldFixture, } from "../../fixtures"; -import { worker } from "../../mocks/worker"; +import { legacyApiRoute, yieldApiRoute } from "../../mocks/api-routes"; import { rkMockWallet } from "../../utils/mock-connector"; +import type { TestWorker } from "../../utils/test-extend"; -export const setup = () => { - const avalancheCToken: TokenDto = { +type LegacyTokenDto = ReturnType["token"]; + +export const setup = (worker: TestWorker) => { + const avalancheCToken: LegacyTokenDto = { name: "Avalanche C Chain", symbol: "AVAX", decimals: 18, @@ -26,7 +25,7 @@ export const setup = () => { coinGeckoId: "avalanche-2", logoURI: "https://assets.stakek.it/tokens/avax.svg", }; - const usdcToken: TokenDto = { + const usdcToken: LegacyTokenDto = { network: "avalanche-c", symbol: "USDC", name: "USD Coin", @@ -36,78 +35,96 @@ export const setup = () => { logoURI: "https://assets.stakek.it/tokens/usdc.svg", }; - const yieldWithSameGasAndStakeToken = Just(yieldFixture()) - .map((val) => ({ - yieldDto: { - ...val, - id: "avalanche-avax-native-staking", - token: avalancheCToken, - tokens: [avalancheCToken], - metadata: { - ...val.metadata, - type: "staking", - gasFeeToken: avalancheCToken, - }, - } satisfies YieldDto, - })) - .map((val) => ({ - ...val, - actionDto: { - ...enterResponseFixture(), - integrationId: val.yieldDto.id, - transactions: [ - { - ...transactionConstructFixture(), - status: "CREATED", - stakeId: val.yieldDto.id, - gasEstimate: null, - }, - { - ...transactionConstructFixture(), - status: "CREATED", - stakeId: val.yieldDto.id, - gasEstimate: null, - }, - ], - } satisfies ActionDto, - })) - .unsafeCoerce(); + const legacyYieldBase = legacyYieldFixture(); + const yieldApiYieldBase = yieldApiYieldFixture(); + const createLegacyYield = ({ + id, + token, + gasFeeToken, + }: { + id: string; + token: LegacyTokenDto; + gasFeeToken: LegacyTokenDto; + }) => + legacyYieldFixture({ + id, + token, + tokens: [token], + validators: [], + metadata: { + ...legacyYieldBase.metadata, + type: "staking", + gasFeeToken, + }, + }); + const createYieldApiYield = ({ + id, + token, + gasFeeToken, + }: { + id: string; + token: LegacyTokenDto; + gasFeeToken: LegacyTokenDto; + }) => + yieldApiYieldFixture({ + id, + network: token.network, + token, + tokens: [token], + inputTokens: [token], + outputToken: token, + mechanics: { + ...yieldApiYieldBase.mechanics, + type: "staking", + gasFeeToken, + }, + }); + const createYieldApiAction = (yieldId: string) => + yieldApiActionFixture({ + yieldId, + transactions: [ + yieldApiTransactionFixture({ + id: `${yieldId}-transaction-0`, + network: "avalanche-c", + type: "STAKE", + status: "CREATED", + }), + yieldApiTransactionFixture({ + id: `${yieldId}-transaction-1`, + network: "avalanche-c", + type: "STAKE", + status: "CREATED", + }), + ], + }); - const yieldWithDifferentGasAndStakeToken = Just(yieldFixture()) - .map((val) => ({ - yieldDto: { - ...val, - id: "avalanche-c-usdc-aave-v3-lending", - token: usdcToken, - tokens: [usdcToken], - metadata: { - ...val.metadata, - type: "staking", - gasFeeToken: avalancheCToken, - }, - } satisfies YieldDto, - })) - .map((val) => ({ - ...val, - actionDto: enterResponseFixture({ - integrationId: val.yieldDto.id, - transactions: [ - { - ...transactionConstructFixture(), - stakeId: val.yieldDto.id, - status: "CREATED", - gasEstimate: null, - }, - { - ...transactionConstructFixture(), - stakeId: val.yieldDto.id, - status: "CREATED", - gasEstimate: null, - }, - ], - }), - })) - .unsafeCoerce(); + const yieldWithSameGasAndStakeToken = { + yieldDto: createLegacyYield({ + id: "avalanche-avax-native-staking", + token: avalancheCToken, + gasFeeToken: avalancheCToken, + }), + yieldApiDto: createYieldApiYield({ + id: "avalanche-avax-native-staking", + token: avalancheCToken, + gasFeeToken: avalancheCToken, + }), + actionDto: createYieldApiAction("avalanche-avax-native-staking"), + }; + + const yieldWithDifferentGasAndStakeToken = { + yieldDto: createLegacyYield({ + id: "avalanche-c-usdc-aave-v3-lending", + token: usdcToken, + gasFeeToken: avalancheCToken, + }), + yieldApiDto: createYieldApiYield({ + id: "avalanche-c-usdc-aave-v3-lending", + token: usdcToken, + gasFeeToken: avalancheCToken, + }), + actionDto: createYieldApiAction("avalanche-c-usdc-aave-v3-lending"), + }; let avalancheCTokenAmount = "0"; let usdcTokenAmount = "0"; @@ -120,23 +137,28 @@ export const setup = () => { usdcTokenAmount = amount.toString(); }; - const yieldsTxGasAmountMap = new Map([]); + const yieldsTxGasAmountMap = new Map< + ReturnType["id"], + string + >([]); const setTxGas = ({ yieldId, amount, }: { - yieldId: YieldDto["id"]; + yieldId: ReturnType["id"]; amount: string; }) => yieldsTxGasAmountMap.set(yieldId, amount); worker.use( - http.get("*/v1/yields/enabled/networks", async () => { + http.get(yieldApiRoute("/v1/networks"), async () => { await delay(); - return HttpResponse.json([avalancheCToken.network]); + return HttpResponse.json([ + yieldApiNetworkFixture({ id: avalancheCToken.network }), + ]); }), - http.get("*/v1/tokens", async () => { + http.get(legacyApiRoute("/v1/tokens"), async () => { await delay(); return HttpResponse.json([ @@ -151,7 +173,7 @@ export const setup = () => { ]); }), - http.post("*/v1/tokens/balances/scan", async () => { + http.post(legacyApiRoute("/v1/tokens/balances/scan"), async () => { await delay(); return HttpResponse.json([ { @@ -167,22 +189,24 @@ export const setup = () => { ]); }), - http.post("*/v1/tokens/balances", async () => { + http.post(legacyApiRoute("/v1/tokens/balances"), async () => { await delay(); return HttpResponse.json([ { token: avalancheCToken, amount: avalancheCTokenAmount, + availableYields: [yieldWithSameGasAndStakeToken.yieldDto.id], }, { token: usdcToken, amount: usdcTokenAmount, + availableYields: [yieldWithDifferentGasAndStakeToken.yieldDto.id], }, ]); }), http.get( - `*/v1/yields/${yieldWithSameGasAndStakeToken.yieldDto.id}`, + legacyApiRoute(`/v1/yields/${yieldWithSameGasAndStakeToken.yieldDto.id}`), async () => { await delay(); @@ -190,69 +214,88 @@ export const setup = () => { } ), http.get( - `*/v1/yields/${yieldWithDifferentGasAndStakeToken.yieldDto.id}`, + yieldApiRoute(`/v1/yields/${yieldWithSameGasAndStakeToken.yieldDto.id}`), async () => { await delay(); - return HttpResponse.json(yieldWithDifferentGasAndStakeToken.yieldDto); + return HttpResponse.json(yieldWithSameGasAndStakeToken.yieldApiDto); } ), - http.post("*/v1/actions/enter", async (info) => { - await delay(); - - const body = (await info.request.json()) as ActionRequestDto; - - return HttpResponse.json({ - ...(body.integrationId === yieldWithSameGasAndStakeToken.yieldDto.id - ? yieldWithSameGasAndStakeToken.actionDto - : yieldWithDifferentGasAndStakeToken.actionDto), - amount: body.args.amount, - } as ActionDto); - }), - http.patch("*/v1/transactions/:transactionId", async (info) => { - const transactionId = info.params.transactionId as string; - - const yieldWithAction = [ - yieldWithSameGasAndStakeToken, - yieldWithDifferentGasAndStakeToken, - ].find((val) => - val.actionDto.transactions.some((tx) => tx.id === transactionId) - ); + http.get( + legacyApiRoute( + `/v1/yields/${yieldWithDifferentGasAndStakeToken.yieldDto.id}` + ), + async () => { + await delay(); - if (!yieldWithAction) { - return new HttpResponse(null, { status: 400 }); + return HttpResponse.json(yieldWithDifferentGasAndStakeToken.yieldDto); } + ), + http.get( + yieldApiRoute( + `/v1/yields/${yieldWithDifferentGasAndStakeToken.yieldDto.id}` + ), + async () => { + await delay(); - const tx = yieldWithAction.actionDto.transactions.find( - (tx) => tx.id === transactionId - ); - - if (!tx) { - return new HttpResponse(null, { status: 400 }); + return HttpResponse.json( + yieldWithDifferentGasAndStakeToken.yieldApiDto + ); } - + ), + http.get(yieldApiRoute("/v1/yields/:yieldId/validators"), async (info) => { await delay(); + const yieldId = info.params.yieldId as string; + const validators = + yieldId === yieldWithSameGasAndStakeToken.yieldDto.id + ? yieldApiValidatorsFixture([]) + : yieldApiValidatorsFixture([]); + return HttpResponse.json({ - ...tx, - gasEstimate: { - token: yieldWithAction.yieldDto.token, - amount: - yieldsTxGasAmountMap.get( - `${yieldWithAction.yieldDto.id}-${tx.id}` - ) ?? "0", - }, - } satisfies TransactionDto); + items: validators, + total: validators.length, + offset: 0, + limit: 20, + }); }), - http.post("*/v1/actions/enter/estimate-gas", async (info) => { + http.post(yieldApiRoute("/v1/actions/enter"), async (info) => { await delay(); - const body = (await info.request.json()) as ActionRequestDto; + const body = (await info.request.json()) as YieldCreateActionDto; + const selectedYield = + body.yieldId === yieldWithSameGasAndStakeToken.yieldDto.id + ? yieldWithSameGasAndStakeToken + : yieldWithDifferentGasAndStakeToken; + const gasAmount = yieldsTxGasAmountMap.get(body.yieldId) ?? "0"; return HttpResponse.json({ - amount: yieldsTxGasAmountMap.get(body.integrationId) ?? "0", - token: avalancheCToken, - gasLimit: "", + ...yieldApiActionFixture({ + id: selectedYield.actionDto.id, + yieldId: selectedYield.actionDto.yieldId, + type: selectedYield.actionDto.type, + address: body.address, + amount: body.arguments?.amount ?? null, + amountRaw: body.arguments?.amount ?? null, + transactions: selectedYield.actionDto.transactions.map((tx, index) => + yieldApiTransactionFixture({ + id: tx.id, + network: tx.network, + type: tx.type, + unsignedTransaction: tx.unsignedTransaction ?? null, + gasEstimate: JSON.stringify({ + amount: gasAmount, + token: avalancheCToken, + }), + status: "CREATED", + stepIndex: index, + }) + ), + rawArguments: body.arguments ?? null, + createdAt: selectedYield.actionDto.createdAt, + completedAt: selectedYield.actionDto.completedAt, + status: selectedYield.actionDto.status, + }), }); }) ); diff --git a/packages/widget/tests/use-cases/geo-block.test.tsx b/packages/widget/tests/use-cases/geo-block.test.tsx index 209af567..2f3baa37 100644 --- a/packages/widget/tests/use-cases/geo-block.test.tsx +++ b/packages/widget/tests/use-cases/geo-block.test.tsx @@ -1,12 +1,12 @@ import { HttpResponse, http } from "msw"; -import { describe, expect, it } from "vitest"; -import { worker } from "../mocks/worker"; +import { yieldApiRoute } from "../mocks/api-routes"; +import { describe, expect, it } from "../utils/test-extend"; import { renderApp } from "../utils/test-utils"; describe("Geo block", () => { - it("Show geo block popup", async () => { + it("Show geo block popup", async ({ worker }) => { worker.use( - http.get("*/v1/yields/enabled/networks", async () => { + http.get(yieldApiRoute("/v1/networks"), async () => { return HttpResponse.json( { code: 403, diff --git a/packages/widget/tests/use-cases/renders-initial-page.test.tsx b/packages/widget/tests/use-cases/renders-initial-page.test.tsx index e68efdbf..c0f09609 100644 --- a/packages/widget/tests/use-cases/renders-initial-page.test.tsx +++ b/packages/widget/tests/use-cases/renders-initial-page.test.tsx @@ -1,14 +1,18 @@ -import type { TokenDto, YieldDto } from "@stakekit/api-hooks"; import { delay, HttpResponse, http } from "msw"; -import { Just } from "purify-ts"; -import { describe, expect, it } from "vitest"; -import { yieldFixture } from "../fixtures"; -import { worker } from "../mocks/worker"; +import { + legacyYieldFixture, + yieldApiNetworkFixture, + yieldApiYieldFixture, +} from "../fixtures"; +import { legacyApiRoute, yieldApiRoute } from "../mocks/api-routes"; +import { describe, expect, it } from "../utils/test-extend"; import { renderApp } from "../utils/test-utils"; +type LegacyTokenDto = ReturnType["token"]; + describe("Renders initial page", () => { - it("Works as expected", async () => { - const avalancheCToken: TokenDto = { + it("Works as expected", async ({ worker }) => { + const avalancheCToken: LegacyTokenDto = { name: "Avalanche C Chain", symbol: "AVAX", decimals: 18, @@ -17,7 +21,7 @@ describe("Renders initial page", () => { logoURI: "https://assets.stakek.it/tokens/avax.svg", }; - const ether: TokenDto = { + const ether: LegacyTokenDto = { network: "ethereum", name: "Ethereum", symbol: "ETH", @@ -26,50 +30,68 @@ describe("Renders initial page", () => { logoURI: "https://assets.stakek.it/tokens/eth.svg", }; - const avalancheAvaxNativeStaking = Just(yieldFixture()) - .map( - (val) => - ({ - ...val, - id: "avalanche-avax-native-staking", - token: avalancheCToken, - tokens: [avalancheCToken], - metadata: { - ...val.metadata, - type: "staking", - gasFeeToken: avalancheCToken, - }, - }) satisfies YieldDto - ) - .unsafeCoerce(); - - const etherNativeStaking = Just(yieldFixture()) - .map( - (val) => - ({ - ...val, - id: "ethereum-eth-etherfi-staking", - token: ether, - tokens: [ether], - metadata: { - ...val.metadata, - type: "staking", - gasFeeToken: ether, - }, - }) satisfies YieldDto - ) - .unsafeCoerce(); + const legacyYieldBase = legacyYieldFixture(); + const yieldApiYieldBase = yieldApiYieldFixture(); + const avalancheAvaxNativeStaking = legacyYieldFixture({ + id: "avalanche-avax-native-staking", + token: avalancheCToken, + tokens: [avalancheCToken], + metadata: { + ...legacyYieldBase.metadata, + type: "staking", + gasFeeToken: avalancheCToken, + }, + }); + const etherNativeStaking = legacyYieldFixture({ + id: "ethereum-eth-etherfi-staking", + token: ether, + tokens: [ether], + metadata: { + ...legacyYieldBase.metadata, + type: "staking", + gasFeeToken: ether, + }, + }); + + const avalancheAvaxNativeStakingYieldApi = yieldApiYieldFixture({ + id: avalancheAvaxNativeStaking.id, + network: avalancheCToken.network, + token: avalancheCToken, + tokens: [avalancheCToken], + inputTokens: [avalancheCToken], + outputToken: avalancheCToken, + mechanics: { + ...yieldApiYieldBase.mechanics, + type: "staking", + gasFeeToken: avalancheCToken, + }, + }); + const etherNativeStakingYieldApi = yieldApiYieldFixture({ + id: etherNativeStaking.id, + network: ether.network, + token: ether, + tokens: [ether], + inputTokens: [ether], + outputToken: ether, + mechanics: { + ...yieldApiYieldBase.mechanics, + type: "staking", + gasFeeToken: ether, + }, + }); worker.use( - http.get("*/v1/yields/enabled/networks", async () => { + http.get(yieldApiRoute("/v1/networks"), async () => { await delay(); return HttpResponse.json([ - etherNativeStaking.token.network, - avalancheAvaxNativeStaking.token.network, + yieldApiNetworkFixture({ id: etherNativeStaking.token.network }), + yieldApiNetworkFixture({ + id: avalancheAvaxNativeStaking.token.network, + }), ]); }), - http.get("*/v1/tokens", async () => { + http.get(legacyApiRoute("/v1/tokens"), async () => { await delay(); return HttpResponse.json([ @@ -81,16 +103,38 @@ describe("Renders initial page", () => { ]); }), - http.get(`*/v1/yields/${etherNativeStaking.id}`, async () => { - await delay(); + http.get( + legacyApiRoute(`/v1/yields/${etherNativeStaking.id}`), + async () => { + await delay(); - return HttpResponse.json(etherNativeStaking); - }), - http.get(`*/v1/yields/${avalancheAvaxNativeStaking.id}`, async () => { - await delay(); + return HttpResponse.json(etherNativeStaking); + } + ), + http.get( + yieldApiRoute(`/v1/yields/${etherNativeStaking.id}`), + async () => { + await delay(); + + return HttpResponse.json(etherNativeStakingYieldApi); + } + ), + http.get( + legacyApiRoute(`/v1/yields/${avalancheAvaxNativeStaking.id}`), + async () => { + await delay(); - return HttpResponse.json(avalancheAvaxNativeStaking); - }) + return HttpResponse.json(avalancheAvaxNativeStaking); + } + ), + http.get( + yieldApiRoute(`/v1/yields/${avalancheAvaxNativeStaking.id}`), + async () => { + await delay(); + + return HttpResponse.json(avalancheAvaxNativeStakingYieldApi); + } + ) ); const app = await renderApp(); diff --git a/packages/widget/tests/use-cases/select-opportunity.test.tsx b/packages/widget/tests/use-cases/select-opportunity.test.tsx index 04b4ee7c..540c3ad4 100644 --- a/packages/widget/tests/use-cases/select-opportunity.test.tsx +++ b/packages/widget/tests/use-cases/select-opportunity.test.tsx @@ -1,16 +1,23 @@ -import type { TokenDto, YieldDto } from "@stakekit/api-hooks"; import { delay, HttpResponse, http } from "msw"; -import { Just } from "purify-ts"; -import { describe, expect, it } from "vitest"; import { userEvent } from "vitest/browser"; -import { yieldFixture } from "../fixtures"; -import { worker } from "../mocks/worker"; +import { + legacyYieldFixture, + yieldApiNetworkFixture, + yieldApiYieldFixture, + yieldRiskSummaryFixture, +} from "../fixtures"; +import { legacyApiRoute, yieldApiRoute } from "../mocks/api-routes"; +import { describe, expect, it } from "../utils/test-extend"; import { renderApp } from "../utils/test-utils"; +type LegacyTokenDto = ReturnType["token"]; + describe("Select opportunity", () => { // This loads cosmos wagmi config, which takes some time, so we need to increase the timeout - it("Works as expected", { timeout: 20000 }, async () => { - const token: TokenDto = { + it("Works as expected", async ({ worker }) => { + window.history.pushState({}, "", "/"); + + const token: LegacyTokenDto = { network: "ethereum", name: "Ethereum", symbol: "ETH", @@ -18,61 +25,147 @@ describe("Select opportunity", () => { coinGeckoId: "ethereum", logoURI: "https://assets.stakek.it/tokens/eth.svg", }; + const yieldIds = [ + "ethereum-eth-lido-staking", + "ethereum-eth-stakewise-staking", + "ethereum-eth-reth-staking", + ] as const; + + const legacyYieldBase = legacyYieldFixture(); + const yieldApiYieldBase = yieldApiYieldFixture(); + const getRewardToken = (integrationId: (typeof yieldIds)[number]) => { + switch (integrationId) { + case "ethereum-eth-reth-staking": + return { ...token, name: "Rocket Pool ETH", symbol: "rETH" }; + case "ethereum-eth-lido-staking": + return { ...token, name: "Lido Staked ETH", symbol: "stETH" }; + default: + return { ...token, name: "Banana ETH", symbol: "bananaETH" }; + } + }; + const getLegacyYield = (integrationId: (typeof yieldIds)[number]) => { + const rewardToken = getRewardToken(integrationId); + + return legacyYieldFixture({ + id: integrationId, + args: { enter: { args: { nfts: undefined } } }, + token, + metadata: { + ...legacyYieldBase.metadata, + type: "liquid-staking", + rewardTokens: [rewardToken], + provider: { + id: "stakewise", + name: "Stakewise", + description: "", + externalLink: "https://stakewise.io", + logoURI: "https://assets.stakek.it/providers/stakewise.svg", + }, + }, + status: { + ...legacyYieldBase.status, + enter: integrationId !== "ethereum-eth-stakewise-staking", + }, + }); + }; + const getYieldApiYield = (integrationId: (typeof yieldIds)[number]) => + yieldApiYieldFixture({ + id: integrationId, + network: token.network, + token, + tokens: [token], + inputTokens: [token], + outputToken: getRewardToken(integrationId), + status: { + ...yieldApiYieldBase.status, + enter: integrationId !== "ethereum-eth-stakewise-staking", + }, + metadata: { + ...yieldApiYieldBase.metadata, + name: legacyYieldBase.metadata.name, + }, + mechanics: { + ...yieldApiYieldBase.mechanics, + type: "staking", + gasFeeToken: token, + }, + risk: + integrationId === "ethereum-eth-reth-staking" + ? yieldRiskSummaryFixture({ ratings: [] }) + : yieldRiskSummaryFixture({ + ratings: [ + { + rating: + integrationId === "ethereum-eth-lido-staking" + ? "A-" + : "B-", + source: + integrationId === "ethereum-eth-lido-staking" + ? "credora" + : "stakingRewards", + }, + ], + }), + }); worker.use( - http.get("*/v1/yields/enabled/networks", async () => { + http.get(yieldApiRoute("/v1/networks"), async () => { await delay(); - return HttpResponse.json([ - "ethereum", - "ethereum-goerli", - "avalanche-c", - "celo", - "akash", - "cosmos", - "kava", - "osmosis", - "juno", - "stargaze", - "persistence", - "axelar", - "onomy", - "quicksilver", - "agoric", - "band-protocol", - "bitsong", - "chihuahua", - "comdex", - "crescent", - "cronos", - "cudos", - "fetch-ai", - "gravity-bridge", - "injective", - "irisnet", - "ki-network", - "mars-protocol", - "regen", - "secret", - "sentinel", - "sommelier", - "teritori", - "umee", - "coreum", - "desmos", - "dydx", - "optimism", - "fantom", - "arbitrum", - "polygon", - "binance", - "near", - "harmony", - "solana", - "tezos", - ]); + return HttpResponse.json( + ( + [ + "ethereum", + "ethereum-goerli", + "avalanche-c", + "celo", + "akash", + "cosmos", + "kava", + "osmosis", + "juno", + "stargaze", + "persistence", + "axelar", + "onomy", + "quicksilver", + "agoric", + "band-protocol", + "bitsong", + "chihuahua", + "comdex", + "crescent", + "cronos", + "cudos", + "fetch-ai", + "gravity-bridge", + "injective", + "irisnet", + "ki-network", + "mars-protocol", + "regen", + "secret", + "sentinel", + "sommelier", + "teritori", + "umee", + "coreum", + "desmos", + "dydx", + "optimism", + "fantom", + "arbitrum", + "polygon", + "binance", + "near", + "harmony", + "solana", + "tezos", + ] as const + ).map((id) => yieldApiNetworkFixture({ id })) + ); }), - http.get("*/v1/tokens", async () => { + http.get(legacyApiRoute("/v1/tokens"), async () => { await delay(); return HttpResponse.json([ { @@ -86,42 +179,19 @@ describe("Select opportunity", () => { ]); }), - http.get("*/v1/yields/:integrationId", async (info) => { - const integrationId = info.params.integrationId as string; - await delay(); + ...yieldIds.flatMap((integrationId) => { + const legacyYield = getLegacyYield(integrationId); - return Just(yieldFixture()) - .map((mock) => { - const rewardToken = (() => { - switch (integrationId) { - case "ethereum-eth-reth-staking": - return { ...token, name: "Rocket Pool ETH", symbol: "rETH" }; - case "ethereum-eth-lido-staking": - return { ...token, name: "Lido Staked ETH", symbol: "stETH" }; - default: - return { ...token, name: "Banana ETH", symbol: "bananaETH" }; - } - })(); - - return { - ...mock, - id: integrationId, - args: { enter: { args: { nfts: undefined } } }, - token, - metadata: { - ...mock.metadata, - type: "liquid-staking", - rewardTokens: [rewardToken], - provider: { name: "Stakewise" }, - }, - status: { - ...mock.status, - enter: integrationId !== "ethereum-eth-stakewise-staking", - }, - } as YieldDto; - }) - .map((val) => HttpResponse.json(val)) - .unsafeCoerce(); + return [ + http.get(legacyApiRoute(`/v1/yields/${integrationId}`), async () => { + await delay(); + return HttpResponse.json(legacyYield); + }), + http.get(yieldApiRoute(`/v1/yields/${integrationId}`), async () => { + await delay(); + return HttpResponse.json(getYieldApiYield(integrationId)); + }), + ]; }) ); @@ -140,10 +210,6 @@ describe("Select opportunity", () => { selectContainer = app.getByTestId("select-modal__container"); - await expect - .element(selectContainer.getByText("Liquid Staking")) - .toBeInTheDocument(); - await expect .element( selectContainer.getByTestId( @@ -151,6 +217,13 @@ describe("Select opportunity", () => { ) ) .toBeInTheDocument(); + await expect + .element( + selectContainer + .getByTestId(/^select-opportunity__item_ethereum-eth-lido-staking/) + .getByText("A-") + ) + .toBeInTheDocument(); await expect .element( @@ -159,6 +232,13 @@ describe("Select opportunity", () => { ) ) .toBeInTheDocument(); + await expect + .element( + selectContainer.getByTestId( + /^risk-rating__select-opportunity__item_ethereum-eth-reth-staking/ + ) + ) + .not.toBeInTheDocument(); await expect .element( @@ -176,6 +256,9 @@ describe("Select opportunity", () => { .element(app.getByText("You'll receive").first()) .toBeInTheDocument(); await expect.element(app.getByText("rETH").first()).toBeInTheDocument(); + await expect + .element(app.getByTestId("yield-risk-rating-summary")) + .not.toBeInTheDocument(); await expect.element(app.getByText("Connect Wallet")).toBeInTheDocument(); @@ -183,6 +266,10 @@ describe("Select opportunity", () => { await expect.element(app.getByText("Select a Chain")).toBeInTheDocument(); + await app.getByText("EVM").click(); + + await expect.element(app.getByText("Connect a Wallet")).toBeInTheDocument(); + await userEvent.keyboard("[Escape]"); await app.getByTestId("select-opportunity").click(); @@ -197,6 +284,10 @@ describe("Select opportunity", () => { .element(app.getByText("You'll receive").first()) .toBeInTheDocument(); await expect.element(app.getByText("stETH").first()).toBeInTheDocument(); + await expect.element(app.getByText("Rated by Credora")).toBeInTheDocument(); + await expect + .element(app.getByTestId("yield-risk-rating-summary").getByText("A-")) + .toBeInTheDocument(); app.unmount(); }); diff --git a/packages/widget/tests/use-cases/sk-wallet.test.tsx b/packages/widget/tests/use-cases/sk-wallet.test.tsx index a458beff..f353a3ee 100644 --- a/packages/widget/tests/use-cases/sk-wallet.test.tsx +++ b/packages/widget/tests/use-cases/sk-wallet.test.tsx @@ -1,15 +1,17 @@ -import { MiscNetworks } from "@stakekit/common"; import { delay, HttpResponse, http } from "msw"; -import { describe, expect, it, vi } from "vitest"; import { solana, ton } from "../../src/domain/types/chains/misc"; +import { MiscNetworks } from "../../src/domain/types/chains/networks"; import type { SKExternalProviders } from "../../src/domain/types/wallets"; import { SKApiClientProvider } from "../../src/providers/api/api-client-provider"; import { SKQueryClientProvider } from "../../src/providers/query-client"; import { SettingsContextProvider } from "../../src/providers/settings"; import { SKWalletProvider, useSKWallet } from "../../src/providers/sk-wallet"; +import { SolanaProvider } from "../../src/providers/solana"; import { TrackingContextProviderWithProps } from "../../src/providers/tracking"; import { WagmiConfigProvider } from "../../src/providers/wagmi/provider"; -import { worker } from "../mocks/worker"; +import { yieldApiNetworkFixture } from "../fixtures"; +import { yieldApiRoute } from "../mocks/api-routes"; +import { describe, expect, it, vi } from "../utils/test-extend"; import { renderHook } from "../utils/test-utils"; const renderHookWithExternalProvider = ( @@ -24,11 +26,13 @@ const renderHookWithExternalProvider = ( > - - - {children} - - + + + + {children} + + + @@ -36,14 +40,16 @@ const renderHookWithExternalProvider = ( }); describe("SK Wallet", () => { - it("should work with solana external provider", async () => { + it("should work with solana external provider", async ({ worker }) => { const switchChainSpy = vi.fn(async (_: number) => {}); const sendTransactionSpy = vi.fn(async () => "hash"); worker.use( - http.get("*/v1/yields/enabled/networks", async () => { + http.get(yieldApiRoute("/v1/networks"), async () => { await delay(); - return HttpResponse.json([MiscNetworks.Solana]); + return HttpResponse.json([ + yieldApiNetworkFixture({ id: MiscNetworks.Solana }), + ]); }) ); @@ -113,14 +119,16 @@ describe("SK Wallet", () => { ); }); - it("should work with ton external provider", async () => { + it("should work with ton external provider", async ({ worker }) => { const switchChainSpy = vi.fn(async (_: number) => {}); const sendTransactionSpy = vi.fn(async (_: unknown) => "hash"); worker.use( - http.get("*/v1/yields/enabled/networks", async () => { + http.get(yieldApiRoute("/v1/networks"), async () => { await delay(); - return HttpResponse.json([MiscNetworks.Ton]); + return HttpResponse.json([ + yieldApiNetworkFixture({ id: MiscNetworks.Ton }), + ]); }) ); diff --git a/packages/widget/tests/use-cases/staking-flow/setup.ts b/packages/widget/tests/use-cases/staking-flow/setup.ts index f3727aed..ec3e86f0 100644 --- a/packages/widget/tests/use-cases/staking-flow/setup.ts +++ b/packages/widget/tests/use-cases/staking-flow/setup.ts @@ -1,19 +1,27 @@ +import { delay, HttpResponse, http } from "msw"; +import { avalanche } from "viem/chains"; +import { vitest } from "vitest"; +import type { YieldCreateActionDto } from "../../../src/domain/types/action"; import type { ActionDto, - ActionRequestDto, AddressesDto, TokenDto, TransactionDto, YieldDto, -} from "@stakekit/api-hooks"; -import { delay, HttpResponse, http } from "msw"; -import { avalanche } from "viem/chains"; -import { vitest } from "vitest"; +} from "../../../src/generated/api/legacy"; import { waitForMs } from "../../../src/utils"; -import { worker } from "../../mocks/worker"; +import { + yieldApiActionFixture, + yieldApiNetworkFixture, + yieldApiTransactionFixture, + yieldApiValidatorsFixture, + yieldApiYieldFixture, +} from "../../fixtures"; +import { legacyApiRoute, yieldApiRoute } from "../../mocks/api-routes"; import { rkMockWallet } from "../../utils/mock-connector"; +import type { TestWorker } from "../../utils/test-extend"; -export const setup = async () => { +export const setup = async (worker: TestWorker) => { const token: TokenDto = { name: "Avalanche C Chain", symbol: "AVAX", @@ -119,8 +127,34 @@ export const setup = async () => { validators: [], isAvailable: true, }; - - const enterAction: ActionDto = { + const yieldApiYieldBase = yieldApiYieldFixture(); + const yieldApiYieldOp = yieldApiYieldFixture({ + id: yieldOp.id, + network: token.network, + token, + tokens: [token], + inputTokens: [token], + outputToken: yieldOp.metadata.rewardTokens?.[0] ?? token, + rewardRate: { + ...yieldApiYieldBase.rewardRate, + total: yieldOp.rewardRate, + }, + status: yieldOp.status, + metadata: { + ...yieldApiYieldBase.metadata, + name: yieldOp.metadata.name, + description: yieldOp.metadata.description ?? "", + documentation: yieldOp.metadata.documentation ?? "", + logoURI: yieldOp.metadata.logoURI ?? "", + }, + mechanics: { + ...yieldApiYieldBase.mechanics, + type: "staking", + gasFeeToken: token, + supportsLedgerWalletApi: yieldOp.metadata.supportsLedgerWalletApi, + }, + }); + const enterAction = { id: "18bdda99-346a-4694-af71-58dfea68d542", integrationId: "avalanche-avax-liquid-staking", status: "CREATED", @@ -157,9 +191,9 @@ export const setup = async () => { }, ], addresses: null as unknown as AddressesDto, - }; + } as unknown as ActionDto; - const transactionConstruct: TransactionDto = { + const transactionConstruct = { id: "", network: token.network, status: "WAITING_FOR_SIGNATURE", @@ -190,15 +224,15 @@ export const setup = async () => { isMessage: false, broadcastedAt: null, createdAt: "2023-12-28T14:36:21.700Z", - }; + } as unknown as TransactionDto; worker.use( - http.get("*/v1/yields/enabled/networks", async () => { + http.get(yieldApiRoute("/v1/networks"), async () => { await delay(); - return HttpResponse.json(["avalanche-c"]); + return HttpResponse.json([yieldApiNetworkFixture({ id: "avalanche-c" })]); }), - http.get("*/v1/tokens", async () => { + http.get(legacyApiRoute("/v1/tokens"), async () => { await delay(); return HttpResponse.json([ @@ -216,7 +250,7 @@ export const setup = async () => { ]); }), - http.post("*/v1/tokens/balances/scan", async () => { + http.post(legacyApiRoute("/v1/tokens/balances/scan"), async () => { await delay(); return HttpResponse.json([ { @@ -227,12 +261,18 @@ export const setup = async () => { ]); }), - http.post("*/v1/tokens/balances", async () => { + http.post(legacyApiRoute("/v1/tokens/balances"), async () => { await delay(); - return HttpResponse.json([{ token, amount }]); + return HttpResponse.json([ + { + token, + amount, + availableYields: ["avalanche-avax-liquid-staking"], + }, + ]); }), - http.post("*/v1/tokens/prices", async () => { + http.post(legacyApiRoute("/v1/tokens/prices"), async () => { await delay(); return HttpResponse.json({ "avalanche-c-undefined": { @@ -241,91 +281,107 @@ export const setup = async () => { }, }); }), - http.get("*/v1/yields/avalanche-avax-liquid-staking", async () => { - await delay(); - return HttpResponse.json(yieldOp); - }), - http.get("*/v1/transactions/gas/avalanche-c", async () => { + http.get( + legacyApiRoute("/v1/yields/avalanche-avax-liquid-staking"), + async () => { + await delay(); + return HttpResponse.json(yieldOp); + } + ), + http.get( + yieldApiRoute("/v1/yields/avalanche-avax-liquid-staking"), + async () => { + await delay(); + return HttpResponse.json(yieldApiYieldOp); + } + ), + http.get(yieldApiRoute("/v1/yields/:yieldId/validators"), async (info) => { await delay(); + + const yieldId = info.params.yieldId as string; + const validators = + yieldId === yieldOp.id ? yieldApiValidatorsFixture([]) : []; + return HttpResponse.json({ - customisable: true, - modes: { - denom: "gwei", - values: [ - { - name: "slow", - value: "40", - gasArgs: { - denom: "wei", - type: 2, - maxFeePerGas: "40000000000", - maxPriorityFeePerGas: "0", - }, - }, - { - name: "average", - value: "50", - gasArgs: { - denom: "wei", - type: 2, - maxFeePerGas: "50000000000", - maxPriorityFeePerGas: "0", - }, - }, - { - name: "fast", - value: "75", - gasArgs: { - denom: "wei", - type: 2, - maxFeePerGas: "75000000000", - maxPriorityFeePerGas: "0", - }, - }, - ], - }, + items: validators, + total: validators.length, + offset: 0, + limit: 20, }); }), - http.post("*/v1/actions/enter/estimate-gas", async () => { - await delay(); - return HttpResponse.json({ - amount: "0.002828600000000000", - token: { - network: "polygon", - coinGeckoId: "matic-network", - name: "Polygon", - decimals: 18, - symbol: "MATIC", - logoURI: "https://assets.stakek.it/tokens/matic.svg", - }, - gasLimit: "", - }); - }), - http.post("*/v1/actions/enter", async (info) => { + http.post(yieldApiRoute("/v1/actions/enter"), async (info) => { await delay(); - const body = (await info.request.json()) as ActionRequestDto; + const body = (await info.request.json()) as YieldCreateActionDto; - return HttpResponse.json({ ...enterAction, amount: body.args.amount }); + return HttpResponse.json( + yieldApiActionFixture({ + id: enterAction.id, + yieldId: enterAction.integrationId, + type: enterAction.type, + address: body.address, + amount: body.arguments?.amount ?? null, + amountRaw: body.arguments?.amount ?? null, + amountUsd: null, + transactions: [ + yieldApiTransactionFixture({ + id: enterAction.transactions[0].id, + network: transactionConstruct.network, + status: "CREATED", + type: "STAKE", + gasEstimate: transactionConstruct.gasEstimate + ? JSON.stringify(transactionConstruct.gasEstimate) + : undefined, + unsignedTransaction: transactionConstruct.unsignedTransaction, + stepIndex: 0, + }), + ], + rawArguments: body.arguments ?? null, + createdAt: enterAction.createdAt, + completedAt: enterAction.completedAt, + status: enterAction.status, + }) + ); }), - http.patch("*/v1/transactions/:transactionId", async (info) => { - const transactionId = info.params.transactionId as string; + http.put( + yieldApiRoute("/v1/transactions/:transactionId/submit-hash"), + async (info) => { + const transactionId = info.params.transactionId as string; - await delay(); + await delay(); - return HttpResponse.json({ ...transactionConstruct, id: transactionId }); - }), - http.post("*/v1/transactions/:transactionId/submit_hash", async () => { - await delay(1000); - return new HttpResponse(null, { status: 201 }); - }), - http.get("*/v1/transactions/:transactionId/status", async () => { - return HttpResponse.json({ - url: "https://snowtrace.dev/tx/0x5c2e4ac81fa12b8e935e1cf5e39eda4594d75e82da0c9b44c6d85f20214452fb", - network: "avalanche-c", - hash: "0x5c2e4ac81fa12b8e935e1cf5e39eda4594d75e82da0c9b44c6d85f20214452fb", - status: "CONFIRMED", - }); + return HttpResponse.json( + yieldApiTransactionFixture({ + id: transactionId, + network: transactionConstruct.network, + type: transactionConstruct.type ?? "STAKE", + hash: "transaction_hash", + status: "BROADCASTED", + unsignedTransaction: transactionConstruct.unsignedTransaction, + gasEstimate: transactionConstruct.gasEstimate + ? JSON.stringify(transactionConstruct.gasEstimate) + : undefined, + }) + ); + } + ), + http.get(yieldApiRoute("/v1/transactions/:transactionId"), async (info) => { + const transactionId = info.params.transactionId as string; + return HttpResponse.json( + yieldApiTransactionFixture({ + id: transactionId, + network: transactionConstruct.network, + type: transactionConstruct.type ?? "STAKE", + explorerUrl: + "https://snowtrace.dev/tx/0x5c2e4ac81fa12b8e935e1cf5e39eda4594d75e82da0c9b44c6d85f20214452fb", + hash: "0x5c2e4ac81fa12b8e935e1cf5e39eda4594d75e82da0c9b44c6d85f20214452fb", + status: "CONFIRMED", + unsignedTransaction: transactionConstruct.unsignedTransaction, + gasEstimate: transactionConstruct.gasEstimate + ? JSON.stringify(transactionConstruct.gasEstimate) + : undefined, + }) + ); }) ); @@ -348,10 +404,14 @@ export const setup = async () => { }); const customConnectors = rkMockWallet({ accounts: [account], requestFn }); + const mergedYieldOp = { + ...yieldApiYieldOp, + __fallback__: yieldOp, + }; return { customConnectors, - yieldOp, + yieldOp: mergedYieldOp, enterAction, transactionConstruct, account, diff --git a/packages/widget/tests/use-cases/staking-flow/staking-flow.test.tsx b/packages/widget/tests/use-cases/staking-flow/staking-flow.test.tsx index 354d8f10..10d99b0f 100644 --- a/packages/widget/tests/use-cases/staking-flow/staking-flow.test.tsx +++ b/packages/widget/tests/use-cases/staking-flow/staking-flow.test.tsx @@ -1,21 +1,21 @@ import BigNumber from "bignumber.js"; import { Just } from "purify-ts"; -import { describe, expect, it } from "vitest"; import { userEvent } from "vitest/browser"; import { useRewardTokenDetails } from "../../../src/hooks/use-reward-token-details"; import { formatAddress, formatNumber } from "../../../src/utils"; +import { describe, expect, it } from "../../utils/test-extend"; import { renderApp, renderHook } from "../../utils/test-utils"; import { setup } from "./setup"; describe("Staking flow", () => { - it("Works as expected", async () => { + it("Works as expected", async ({ worker }) => { const { customConnectors, yieldOp, transactionConstruct, account, requestFn, - } = await setup(); + } = await setup(worker); const app = await renderApp({ wagmi: { @@ -74,7 +74,13 @@ describe("Staking flow", () => { .toBeInTheDocument(); const rewardTokenDetails = ( - await renderHook(() => useRewardTokenDetails(Just(yieldOp))) + await renderHook(() => + useRewardTokenDetails( + Just(yieldOp) as unknown as Parameters< + typeof useRewardTokenDetails + >[0] + ) + ) ).result.current.unsafeCoerce(); await expect diff --git a/packages/widget/tests/use-cases/trust-incentive-apy/setup.ts b/packages/widget/tests/use-cases/trust-incentive-apy/setup.ts new file mode 100644 index 00000000..713f9deb --- /dev/null +++ b/packages/widget/tests/use-cases/trust-incentive-apy/setup.ts @@ -0,0 +1,374 @@ +import { delay, HttpResponse, http } from "msw"; +import { avalanche } from "viem/chains"; +import { vitest } from "vitest"; +import type { YieldBalanceDto } from "../../../src/domain/types/positions"; +import type { YieldRewardRateDto } from "../../../src/domain/types/reward-rate"; +import type { Yield } from "../../../src/domain/types/yields"; +import { waitForMs } from "../../../src/utils"; +import { + legacyYieldFixture, + yieldApiNetworkFixture, + yieldApiYieldFixture, + yieldBalanceFixture, + yieldRewardRateFixture, +} from "../../fixtures"; +import { legacyApiRoute, yieldApiRoute } from "../../mocks/api-routes"; +import { rkMockWallet } from "../../utils/mock-connector"; +import type { TestWorker } from "../../utils/test-extend"; + +type LegacyTokenDto = ReturnType["token"]; +type YieldApiYieldDto = Omit; + +const setUrl = ({ + accountId, + balanceId, + yieldId, +}: { + accountId?: string; + balanceId?: string; + yieldId?: string; +}) => { + const searchParams = new URLSearchParams(); + + if (accountId) { + searchParams.set("accountId", accountId); + } + + if (balanceId) { + searchParams.set("balanceId", balanceId); + } + + if (yieldId) { + searchParams.set("yieldId", yieldId); + } + + const url = new URL(window.location.href); + url.search = searchParams.toString(); + window.history.pushState({}, "", url); +}; + +export const setup = async ( + worker: TestWorker, + { + personalizedRewardRate: providedPersonalizedRewardRate, + useRewardRateWithoutCampaign, + }: { + personalizedRewardRate?: YieldRewardRateDto; + useRewardRateWithoutCampaign?: boolean; + } = {} +) => { + const account = "0xB6c5273e79E2aDD234EBC07d87F3824e0f94B2F7"; + + const token: LegacyTokenDto = { + name: "USDA", + symbol: "USDA", + decimals: 18, + network: "avalanche-c", + coinGeckoId: "angle-usd", + logoURI: "https://assets.stakek.it/tokens/usda.svg", + }; + + const rewardToken: LegacyTokenDto = { + name: "United Stables", + symbol: "U", + decimals: 18, + network: token.network, + address: "0x58D97B57BB95320F9a05dC918Aef65434969c2B2", + logoURI: "https://assets.stakek.it/tokens/usda.svg", + }; + + const morphoToken: LegacyTokenDto = { + name: "Morpho Token", + symbol: "MORPHO", + decimals: 18, + network: token.network, + address: "0x58D97B57BB95320F9a05dC918Aef65434969c2B3", + logoURI: "https://assets.stakek.it/tokens/usda.svg", + }; + + const discoveryRewardRate: YieldRewardRateDto = yieldRewardRateFixture({ + total: 0.045507546653006034, + rateType: "APY", + components: [ + { + rate: 0.0028386677110199426, + rateType: "APR", + token: morphoToken, + yieldSource: "protocol_incentive", + description: "MORPHO rewards", + }, + { + rate: 0.002, + rateType: "APR", + token: rewardToken, + yieldSource: "campaign_incentive", + description: "U rewards", + }, + { + rate: 0.042668878941986094, + rateType: "APY", + token: rewardToken, + yieldSource: "vault", + description: "Supply APY", + }, + ], + }); + + const defaultPersonalizedRewardRate: YieldRewardRateDto = + yieldRewardRateFixture({ + total: 0.04530754665300604, + rateType: "APY", + components: [ + { + rate: 0.0028386677110199426, + rateType: "APR", + token: morphoToken, + yieldSource: "protocol_incentive", + description: "MORPHO rewards", + }, + { + rate: 0.0018, + rateType: "APR", + token: rewardToken, + yieldSource: "campaign_incentive", + description: "U rewards", + }, + { + rate: 0.042668878941986094, + rateType: "APY", + token: rewardToken, + yieldSource: "vault", + description: "Supply APY", + }, + ], + }); + + const personalizedRewardRateWithoutCampaign: YieldRewardRateDto = + yieldRewardRateFixture({ + total: 0.04530754665300604, + rateType: "APY", + components: [ + { + rate: 0.0028386677110199426, + rateType: "APR", + token: morphoToken, + yieldSource: "protocol_incentive", + description: "MORPHO rewards", + }, + { + rate: 0.042668878941986094, + rateType: "APY", + token: rewardToken, + yieldSource: "vault", + description: "Supply APY", + }, + ], + }); + + const personalizedRewardRate = + providedPersonalizedRewardRate ?? + (useRewardRateWithoutCampaign + ? personalizedRewardRateWithoutCampaign + : defaultPersonalizedRewardRate); + + const yieldId = + "avalanche-c-usda-trust-0xbeefa1abfebe621df50ceaef9f54fdb73648c92c-vault"; + + const legacyYieldBase = legacyYieldFixture(); + const rawYieldBase = yieldApiYieldFixture(); + + const legacyYield: ReturnType = { + ...legacyYieldBase, + id: yieldId, + token, + tokens: [token], + rewardRate: discoveryRewardRate.total, + rewardType: "apy", + apy: discoveryRewardRate.total, + validators: [], + feeConfigurations: [], + args: { + enter: { + args: { + amount: { + required: true, + minimum: 0, + }, + }, + }, + exit: { + args: { + amount: { + required: true, + minimum: 0, + }, + }, + }, + }, + metadata: { + ...legacyYieldBase.metadata, + name: "Trust USDA Earn", + type: "vault", + token, + rewardTokens: undefined, + gasFeeToken: token, + provider: { + id: legacyYieldBase.metadata.provider?.id ?? "benqi", + name: "Trust", + description: "", + externalLink: "https://trustwallet.com", + logoURI: "https://assets.stakek.it/providers/benqi.svg", + }, + }, + status: { + enter: true, + exit: true, + }, + }; + + const rawYield: YieldApiYieldDto = { + ...rawYieldBase, + id: yieldId, + token, + tokens: [token], + inputTokens: [token], + outputToken: { + ...token, + symbol: "steakUSDA", + name: "Steakhouse USDA", + }, + network: token.network, + chainId: `${avalanche.id}`, + providerId: rawYieldBase.providerId, + rewardRate: discoveryRewardRate, + metadata: { + ...(rawYieldBase.metadata ?? {}), + name: "Trust USDA Earn", + description: "Trust campaign vault", + logoURI: "https://assets.stakek.it/providers/benqi.svg", + }, + mechanics: { + ...(rawYieldBase.mechanics ?? {}), + type: "vault", + gasFeeToken: token, + rewardClaiming: "auto", + rewardSchedule: "day", + requiresValidatorSelection: false, + supportsLedgerWalletApi: true, + }, + status: { + enter: true, + exit: true, + }, + }; + + const activeBalance: YieldBalanceDto = yieldBalanceFixture({ + address: account, + type: "active", + amount: "1000251.8279906842", + amountRaw: "1000251827990684200000000", + amountUsd: "1000355.009527", + isEarning: true, + token, + pendingActions: [], + }); + + worker.use( + http.get(yieldApiRoute("/v1/networks"), async () => { + await delay(); + return HttpResponse.json([yieldApiNetworkFixture({ id: token.network })]); + }), + http.get(legacyApiRoute("/v1/tokens"), async () => { + await delay(); + return HttpResponse.json([ + { + token, + availableYields: [yieldId], + }, + ]); + }), + http.post(legacyApiRoute("/v1/tokens/balances/scan"), async () => { + await delay(); + return HttpResponse.json([ + { + token, + amount: "1000251.8279906842", + availableYields: [yieldId], + }, + ]); + }), + http.post(legacyApiRoute("/v1/tokens/balances"), async () => { + await delay(); + return HttpResponse.json([ + { + token, + amount: "1000251.8279906842", + availableYields: [yieldId], + }, + ]); + }), + http.post(legacyApiRoute("/v1/tokens/prices"), async () => { + await delay(); + return HttpResponse.json({ + "avalanche-c-undefined": { + price: 1, + price_24_h: 0, + }, + }); + }), + http.get(legacyApiRoute(`/v1/yields/${yieldId}`), async () => { + await delay(); + return HttpResponse.json(legacyYield); + }), + http.get(yieldApiRoute(`/v1/yields/${yieldId}`), async () => { + await delay(); + return HttpResponse.json(rawYield); + }), + http.get(yieldApiRoute("/v1/yields/:yieldId/validators"), async () => { + await delay(); + return HttpResponse.json({ + items: [], + total: 0, + offset: 0, + limit: 20, + }); + }), + http.post(yieldApiRoute("/v1/yields/balances"), async () => { + await delay(); + return HttpResponse.json({ + items: [ + { + yieldId, + balances: [activeBalance], + rewardRate: personalizedRewardRate, + }, + ], + errors: [], + }); + }) + ); + + const requestFn = vitest.fn(async ({ method }: { method: string }) => { + await waitForMs(100); + + switch (method) { + case "eth_chainId": + return avalanche.id; + case "eth_requestAccounts": + return [account]; + default: + throw new Error("unhandled method"); + } + }); + + const customConnectors = rkMockWallet({ accounts: [account], requestFn }); + + return { + account, + customConnectors, + setUrl, + legacyYield, + discoveryRewardRate, + personalizedRewardRate, + }; +}; diff --git a/packages/widget/tests/use-cases/trust-incentive-apy/trust-incentive-apy.test.tsx b/packages/widget/tests/use-cases/trust-incentive-apy/trust-incentive-apy.test.tsx new file mode 100644 index 00000000..dfdafb34 --- /dev/null +++ b/packages/widget/tests/use-cases/trust-incentive-apy/trust-incentive-apy.test.tsx @@ -0,0 +1,165 @@ +import { describe, expect, it } from "../../utils/test-extend"; +import { renderApp } from "../../utils/test-utils"; +import { setup } from "./setup"; + +describe("Trust incentive APY", () => { + it("shows APY composition during discovery", async ({ worker }) => { + const { account, customConnectors, legacyYield, setUrl } = + await setup(worker); + + setUrl({ + accountId: account, + yieldId: legacyYield.id, + }); + + const app = await renderApp({ + wagmi: { + __customConnectors__: customConnectors, + }, + }); + + await expect + .element(app.getByTestId("estimated-reward__percent").getByText("4.55%")) + .toBeInTheDocument(); + + await expect.element(app.getByText("APY composition")).toBeInTheDocument(); + await expect + .element( + app.getByTestId("reward-rate-breakdown__native").getByText("4.27%") + ) + .toBeInTheDocument(); + await expect + .element( + app + .getByTestId("reward-rate-breakdown__protocol-incentive") + .getByText("0.28%") + ) + .toBeInTheDocument(); + await expect + .element( + app + .getByTestId("reward-rate-breakdown__campaign") + .getByText("Up to 0.2%") + ) + .toBeInTheDocument(); + + await app.getByTestId("select-opportunity").click(); + + const selectContainer = app.getByTestId("select-modal__container"); + + await expect + .element(selectContainer.getByText("Trust USDA Earn")) + .toBeInTheDocument(); + await expect + .element(selectContainer.getByText("4.55%")) + .toBeInTheDocument(); + await expect + .element(selectContainer.getByText("Up to 4.55%")) + .toBeInTheDocument(); + + app.unmount(); + }); + + it("shows personalized APY on the position details page", async ({ + worker, + }) => { + const { account, customConnectors, legacyYield, setUrl } = + await setup(worker); + + setUrl({ + accountId: account, + balanceId: "default", + yieldId: legacyYield.id, + }); + + const app = await renderApp({ + wagmi: { + __customConnectors__: customConnectors, + }, + }); + + await expect.element(app.getByText("Personalized APY")).toBeInTheDocument(); + await expect + .element(app.getByTestId("personalized-reward-rate").getByText("4.53%")) + .toBeInTheDocument(); + await expect + .element( + app + .getByTestId("personalized-reward-rate-breakdown__native") + .getByText("4.27%") + ) + .toBeInTheDocument(); + await expect + .element( + app + .getByTestId("personalized-reward-rate-breakdown__protocol-incentive") + .getByText("0.28%") + ) + .toBeInTheDocument(); + await expect + .element( + app + .getByTestId("personalized-reward-rate-breakdown__campaign") + .getByText("0.18%") + ) + .toBeInTheDocument(); + + app.unmount(); + }); + + it("falls back to yield APY composition when the balance has no campaign component", async ({ + worker, + }) => { + const { account, customConnectors, legacyYield, setUrl } = await setup( + worker, + { + useRewardRateWithoutCampaign: true, + } + ); + + setUrl({ + accountId: account, + balanceId: "default", + yieldId: legacyYield.id, + }); + + const app = await renderApp({ + wagmi: { + __customConnectors__: customConnectors, + }, + }); + + await expect.poll(() => app.getByText("Personalized APY").length).toBe(0); + await expect + .poll(() => app.getByTestId("personalized-reward-rate").length) + .toBe(0); + await expect + .poll( + () => + app.getByTestId("personalized-reward-rate-breakdown__campaign").length + ) + .toBe(0); + await expect.element(app.getByText("APY composition")).toBeInTheDocument(); + await expect + .element( + app.getByTestId("reward-rate-breakdown__native").getByText("4.27%") + ) + .toBeInTheDocument(); + await expect + .element( + app + .getByTestId("reward-rate-breakdown__protocol-incentive") + .getByText("0.28%") + ) + .toBeInTheDocument(); + await expect + .element( + app + .getByTestId("reward-rate-breakdown__campaign") + .getByText("Up to 0.2%") + ) + .toBeInTheDocument(); + + app.unmount(); + }); +}); diff --git a/packages/widget/tests/use-cases/under-maintenance.test.tsx b/packages/widget/tests/use-cases/under-maintenance.test.tsx index 8384ddae..67d450cf 100644 --- a/packages/widget/tests/use-cases/under-maintenance.test.tsx +++ b/packages/widget/tests/use-cases/under-maintenance.test.tsx @@ -1,13 +1,16 @@ import { HttpResponse, http } from "msw"; -import { describe, expect, it } from "vitest"; -import { worker } from "../mocks/worker"; +import { yieldApiRoute } from "../mocks/api-routes"; +import { describe, expect, it } from "../utils/test-extend"; import { renderApp } from "../utils/test-utils"; describe("Under maintenance", () => { - it("Show under maintenance popup", async () => { + it("Show under maintenance popup", async ({ worker }) => { worker.use( - http.get("*/v2/health", async () => { - return HttpResponse.json({ db: "FAIL" }); + http.get(yieldApiRoute("/health"), async () => { + return HttpResponse.json({ + status: "FAIL", + timestamp: new Date().toISOString(), + }); }) ); diff --git a/packages/widget/tests/utils/setup.ts b/packages/widget/tests/utils/setup.ts index 5beb54f6..dcc937d2 100644 --- a/packages/widget/tests/utils/setup.ts +++ b/packages/widget/tests/utils/setup.ts @@ -1,8 +1,39 @@ -import { afterAll, afterEach, beforeAll, vi } from "vitest"; -import { worker } from "../mocks/worker"; +import { vi } from "vitest"; vi.setConfig({ testTimeout: 10000 }); -beforeAll(() => worker.start({ quiet: true })); -afterEach(() => worker.resetHandlers()); -afterAll(() => worker.stop()); +const ignoredConsoleMessages = [ + "All fibers interrupted without error", + "Lit is in dev mode", +]; + +const getConsoleMessage = (arg: unknown) => { + if (arg instanceof Error) { + return `${arg.name}: ${arg.message}`; + } + + return typeof arg === "string" ? arg : ""; +}; + +const isIgnoredConsoleNoise = (args: ReadonlyArray) => + args.some((arg) => { + const message = getConsoleMessage(arg); + + return ignoredConsoleMessages.some((ignored) => message.includes(ignored)); + }); + +const silenceConsoleNoise = (method: "error" | "log" | "warn") => { + const original = console[method].bind(console); + + vi.spyOn(console, method).mockImplementation((...args: unknown[]) => { + if (isIgnoredConsoleNoise(args)) { + return; + } + + original(...args); + }); +}; + +silenceConsoleNoise("error"); +silenceConsoleNoise("log"); +silenceConsoleNoise("warn"); diff --git a/packages/widget/tests/utils/test-extend.ts b/packages/widget/tests/utils/test-extend.ts new file mode 100644 index 00000000..849f1024 --- /dev/null +++ b/packages/widget/tests/utils/test-extend.ts @@ -0,0 +1,29 @@ +import { test as base, describe, expect, vi } from "vitest"; +import { worker } from "../mocks/worker"; + +export type TestWorker = typeof worker; + +let isWorkerStarted = false; + +const test = base.extend<{ worker: typeof worker }>({ + worker: [ + // biome-ignore lint/correctness/noEmptyPattern: Vitest fixtures require object destructuring here. + async ({}, use) => { + if (!isWorkerStarted) { + await worker.start({ quiet: true }); + isWorkerStarted = true; + } + + await use(worker); + + worker.resetHandlers(); + }, + { + auto: true, + }, + ], +}); + +export const it = test; + +export { describe, expect, vi }; diff --git a/packages/widget/tsconfig.build.json b/packages/widget/tsconfig.build.json index 87641201..6acb3a39 100644 --- a/packages/widget/tsconfig.build.json +++ b/packages/widget/tsconfig.build.json @@ -4,7 +4,9 @@ "compilerOptions": { "declaration": true, "emitDeclarationOnly": true, + "rootDir": "src", "outDir": "dist/types", - "noEmit": false + "noEmit": false, + "tsBuildInfoFile": "dist/.tsbuildinfo/tsconfig.build.tsbuildinfo" } } diff --git a/packages/widget/tsconfig.json b/packages/widget/tsconfig.json index 90244e28..3c51dbc5 100644 --- a/packages/widget/tsconfig.json +++ b/packages/widget/tsconfig.json @@ -1,8 +1,8 @@ { - "extends": "../../tsconfig.json", + "extends": "../../tsconfig.base.json", "compilerOptions": { - "baseUrl": "./src", - "lib": ["dom", "dom.iterable", "ESNext"] + "lib": ["dom", "dom.iterable", "ESNext"], + "tsBuildInfoFile": "dist/.tsbuildinfo/tsconfig.tsbuildinfo" }, "include": ["src", "scripts", "tests", "vite/**/*.ts"], "exclude": ["dist"] diff --git a/packages/widget/vite/vite.config.base.ts b/packages/widget/vite/vite.config.base.ts index fb22538f..bd70b700 100644 --- a/packages/widget/vite/vite.config.base.ts +++ b/packages/widget/vite/vite.config.base.ts @@ -1,14 +1,22 @@ import path from "node:path"; -import replace from "@rollup/plugin-replace"; +import babel from "@rolldown/plugin-babel"; import { vanillaExtractPlugin } from "@vanilla-extract/vite-plugin"; -import react from "@vitejs/plugin-react"; +import react, { reactCompilerPreset } from "@vitejs/plugin-react"; import { playwright } from "@vitest/browser-playwright"; import autoprefixer from "autoprefixer"; import merge from "lodash.merge"; import macros from "unplugin-macros/vite"; -import { defineConfig, type UserConfig, type UserConfigFnObject } from "vite"; -import { nodePolyfills } from "vite-plugin-node-polyfills"; +import { + defineConfig, + type Plugin, + type UserConfig, + type UserConfigFnObject, +} from "vite"; import type { InlineConfig } from "vitest/node"; +import { + nodePolyfillOptimizeDeps, + nodePolyfillPlugins, +} from "./vite.node-polyfills"; declare module "vite" { interface UserConfig { @@ -16,19 +24,19 @@ declare module "vite" { } } -const emptyPolyfill = path.resolve(__dirname, "..", "polyfills", "empty.js"); - -export const getConfig = (overides?: Partial): UserConfigFnObject => - defineConfig(({ mode }) => { - const isProd = mode === "build"; +export const getConfig = ( + overides?: Partial, + options?: { plugins?: Plugin[] } +): UserConfigFnObject => + defineConfig(({ command }) => { + const isBuild = command === "build"; + const shouldMinifyOutput = isBuild && overides?.build?.minify !== false; return merge(overides, { root: path.resolve(__dirname, ".."), optimizeDeps: { include: [ - "vite-plugin-node-polyfills/shims/buffer", - "vite-plugin-node-polyfills/shims/global", - "vite-plugin-node-polyfills/shims/process", + ...nodePolyfillOptimizeDeps, "@vanilla-extract/recipes/createRuntimeFn", "@vanilla-extract/sprinkles/createRuntimeSprinkles", "date-fns/locale", @@ -37,6 +45,7 @@ export const getConfig = (overides?: Partial): UserConfigFnObject => test: { browser: { enabled: true, + screenshotFailures: false, provider: playwright(), instances: [{ browser: "chromium" }], viewport: { width: 800, height: 900 }, @@ -46,54 +55,35 @@ export const getConfig = (overides?: Partial): UserConfigFnObject => setupFiles: [path.resolve(__dirname, "..", "tests/utils/setup.ts")], }, plugins: [ + ...(options?.plugins ?? []), + ...nodePolyfillPlugins(), macros(), - react({ - babel: { - plugins: [["babel-plugin-react-compiler"]], - }, - }), + react(), + babel({ presets: [reactCompilerPreset()] }), vanillaExtractPlugin(), - nodePolyfills({ include: ["buffer", "crypto"] }), ], css: { postcss: { plugins: [autoprefixer()], }, }, - esbuild: { drop: isProd ? ["console"] : [] }, server: { host: true, cors: true, - // https: { - // key: path.resolve(__dirname, "..", "certificates", "skwidget.key"), - // cert: path.resolve(__dirname, "..", "certificates", "skwidget.crt"), - // }, - }, - resolve: { - alias: { - crypto: emptyPolyfill, - stream: emptyPolyfill, - ws: emptyPolyfill, - "@emotion/is-prop-valid": emptyPolyfill, - "@react-native-async-storage/async-storage": emptyPolyfill, - }, }, build: { + reportCompressedSize: false, sourcemap: false, - commonjsOptions: { - transformMixedEsModules: true, - }, - rollupOptions: { - plugins: [ - replace({ - values: { - 'require("@emotion/is-prop-valid")': - "({ default: () => true })", + rolldownOptions: { + ...(shouldMinifyOutput && { + output: { + minify: { + compress: { + dropConsole: true, + }, }, - preventAssignment: true, - delimiters: ["", ""], - }), - ], + }, + }), }, }, } satisfies UserConfig); diff --git a/packages/widget/vite/vite.config.package.ts b/packages/widget/vite/vite.config.package.ts index 11de4e65..aef44450 100644 --- a/packages/widget/vite/vite.config.package.ts +++ b/packages/widget/vite/vite.config.package.ts @@ -1,23 +1,41 @@ import path from "node:path"; -import { defineConfig } from "vite"; +import { defineConfig, esmExternalRequirePlugin } from "vite"; import { getConfig } from "./vite.config.base"; -const config = getConfig({ - build: { - lib: { - entry: path.resolve(__dirname, "..", "src/index.package.ts"), - name: "StakeKit", - fileName: "index.package", - formats: ["es"], +const reactExternals = [/^react(?:\/.*)?$/, /^react-dom(?:\/.*)?$/]; + +const config = getConfig( + { + define: { + // Drop dead AMD branches from bundled UMD dependencies so Next Turbopack + // does not resolve their dependency arrays as real relative imports. + define: "undefined", }, - rollupOptions: { - external: ["react", "react/jsx-runtime", "react-dom", "react-dom/client"], - output: { banner: '"use client";\n' }, + build: { + lib: { + entry: path.resolve(__dirname, "..", "src/index.package.ts"), + name: "StakeKit", + fileName: "index.package", + formats: ["es"], + }, + rolldownOptions: { + external: reactExternals, + output: { banner: '"use client";\n' }, + }, + copyPublicDir: false, + minify: false, + outDir: "dist/package", + sourcemap: false, }, - copyPublicDir: false, - outDir: "dist/package", - sourcemap: false, }, -}); + { + plugins: [ + esmExternalRequirePlugin({ + external: reactExternals, + skipDuplicateCheck: true, + }), + ], + } +); export default defineConfig(config); diff --git a/packages/widget/vite/vite.node-polyfills.ts b/packages/widget/vite/vite.node-polyfills.ts new file mode 100644 index 00000000..9c05dbae --- /dev/null +++ b/packages/widget/vite/vite.node-polyfills.ts @@ -0,0 +1,80 @@ +import { createRequire } from "node:module"; +import path from "node:path"; +import type { Plugin } from "vite"; +import { nodePolyfills } from "vite-plugin-node-polyfills"; + +const require = createRequire(import.meta.url); + +type NodePolyfillShim = "buffer" | "global" | "process"; + +const getNodePolyfillShim = (shim: NodePolyfillShim) => + require + .resolve(`vite-plugin-node-polyfills/shims/${shim}`) + .replace(/\.cjs$/, ".js"); + +const getNodePolyfillShimRoot = (shim: NodePolyfillShim) => + path.dirname(path.dirname(getNodePolyfillShim(shim))); + +const nodePolyfillShimAliases = { + buffer: getNodePolyfillShimRoot("buffer"), + "buffer/": getNodePolyfillShimRoot("buffer"), + "node:buffer": getNodePolyfillShimRoot("buffer"), + "node:buffer/": getNodePolyfillShimRoot("buffer"), + global: getNodePolyfillShimRoot("global"), + "global/": getNodePolyfillShimRoot("global"), + process: getNodePolyfillShimRoot("process"), + "process/": getNodePolyfillShimRoot("process"), + "node:process": getNodePolyfillShimRoot("process"), + "node:process/": getNodePolyfillShimRoot("process"), + "vite-plugin-node-polyfills/shims/buffer": getNodePolyfillShimRoot("buffer"), + "vite-plugin-node-polyfills/shims/buffer/": getNodePolyfillShimRoot("buffer"), + "vite-plugin-node-polyfills/shims/global": getNodePolyfillShimRoot("global"), + "vite-plugin-node-polyfills/shims/global/": getNodePolyfillShimRoot("global"), + "vite-plugin-node-polyfills/shims/process": + getNodePolyfillShimRoot("process"), + "vite-plugin-node-polyfills/shims/process/": + getNodePolyfillShimRoot("process"), +} satisfies Record; + +const nodePolyfillShimInject = { + Buffer: getNodePolyfillShim("buffer"), + global: getNodePolyfillShim("global"), + process: getNodePolyfillShim("process"), +} satisfies Record; + +const nodePolyfillShimAliasPlugin = (): Plugin => ({ + name: "stakekit-node-polyfill-shim-aliases", + + config() { + return { + optimizeDeps: { + rolldownOptions: { + resolve: { + alias: nodePolyfillShimAliases, + }, + }, + }, + resolve: { + alias: nodePolyfillShimAliases, + }, + build: { + rolldownOptions: { + transform: { + inject: nodePolyfillShimInject, + }, + }, + }, + }; + }, +}); + +export const nodePolyfillOptimizeDeps = [ + "vite-plugin-node-polyfills/shims/buffer", + "vite-plugin-node-polyfills/shims/global", + "vite-plugin-node-polyfills/shims/process", +]; + +export const nodePolyfillPlugins = (): Plugin[] => [ + nodePolyfills(), + nodePolyfillShimAliasPlugin(), +]; diff --git a/patches/@stakekit__rainbowkit@2.2.11.patch b/patches/@stakekit__rainbowkit@2.2.11.patch new file mode 100644 index 00000000..06680464 --- /dev/null +++ b/patches/@stakekit__rainbowkit@2.2.11.patch @@ -0,0 +1,42 @@ +diff --git a/dist/wallets/walletConnectors/chunk-GGASEKUC.js b/dist/wallets/walletConnectors/chunk-GGASEKUC.js +index 1655964e16e8a6b02bf4a136310816326bc924df..09c8a4145e9522f8a9dbdb12e943843751c9058f 100644 +--- a/dist/wallets/walletConnectors/chunk-GGASEKUC.js ++++ b/dist/wallets/walletConnectors/chunk-GGASEKUC.js +@@ -1,11 +1,12 @@ + "use client"; ++import { ++ getInjectedConnector ++} from "./chunk-WXICAEA2.js"; + import { + evmChainGroup + } from "./chunk-ZRHKARGH.js"; + + // src/wallets/walletConnectors/geminiWallet/geminiWallet.ts +-import { createConnector } from "wagmi"; +-import { gemini } from "wagmi/connectors"; + var geminiWallet = ({ + appName, + appIcon +@@ -72,18 +73,10 @@ var geminiWallet = ({ + ] + } + }, +- createConnector: (walletDetails) => { +- const connector = gemini({ +- appMetadata: { +- name: appName, +- icon: appIcon +- } +- }); +- return createConnector((config) => ({ +- ...connector(config), +- ...walletDetails +- })); +- } ++ createConnector: getInjectedConnector({ ++ flag: "isGemini", ++ namespace: "gemini.ethereum" ++ }) + }; + }; + diff --git a/patches/vite-plugin-node-polyfills@0.26.0.patch b/patches/vite-plugin-node-polyfills@0.26.0.patch new file mode 100644 index 00000000..373e0b18 --- /dev/null +++ b/patches/vite-plugin-node-polyfills@0.26.0.patch @@ -0,0 +1,63 @@ +diff --git a/dist/index.cjs b/dist/index.cjs +index 835fc54b10d46f4f8e2153377c71f24f83eaa284..137ba1902b6129e93baee194f8bc0a92e3fdfb24 100644 +--- a/dist/index.cjs ++++ b/dist/index.cjs +@@ -1,3 +1,3 @@ + "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const T=require("node:module"),w=require("@rollup/plugin-inject"),x=require("node-stdlib-browser"),O=require("node-stdlib-browser/helpers/rollup/plugin"),P=require("node-stdlib-browser/helpers/esbuild/plugin");var h=typeof document<"u"?document.currentScript:null;const g=l=>l&&l.__esModule?l:{default:l},R=g(w),S=g(x),q=g(P),_=(l,e)=>b(l)===b(e),s=(l,e)=>l?l===!0?!0:l===e:!1,$=l=>l.startsWith("node:"),I=l=>{const e=l.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`^${e}$`)},b=l=>l.replace(/^node:/,""),a={buffer:["import __buffer_polyfill from 'vite-plugin-node-polyfills/shims/buffer'","globalThis.Buffer = globalThis.Buffer || __buffer_polyfill"],global:["import __global_polyfill from 'vite-plugin-node-polyfills/shims/global'","globalThis.global = globalThis.global || __global_polyfill"],process:["import __process_polyfill from 'vite-plugin-node-polyfills/shims/process'","globalThis.process = globalThis.process || __process_polyfill"]},D=(l={})=>{const e={include:[],exclude:[],overrides:{},protocolImports:!0,...l,globals:{Buffer:!0,global:!0,process:!0,...l.globals}},y=o=>e.include.length>0?!e.include.some(r=>_(o,r)):e.exclude.some(r=>_(o,r)),B=o=>{if(s(e.globals.Buffer,"dev")&&/^buffer$/.test(o))return"vite-plugin-node-polyfills/shims/buffer";if(s(e.globals.global,"dev")&&/^global$/.test(o))return"vite-plugin-node-polyfills/shims/global";if(s(e.globals.process,"dev")&&/^process$/.test(o))return"vite-plugin-node-polyfills/shims/process";if(o in e.overrides)return e.overrides[o]},u=Object.entries(S.default).reduce((o,[r,i])=>(!e.protocolImports&&$(r)||y(r)||(o[r]=B(b(r))||i),o),{}),f=T.createRequire(typeof document>"u"?require("url").pathToFileURL(__filename).href:h&&h.src||new URL("index.cjs",document.baseURI).href),p=[...s(e.globals.Buffer,"dev")?[f.resolve("vite-plugin-node-polyfills/shims/buffer")]:[],...s(e.globals.global,"dev")?[f.resolve("vite-plugin-node-polyfills/shims/global")]:[],...s(e.globals.process,"dev")?[f.resolve("vite-plugin-node-polyfills/shims/process")]:[]],d=[...s(e.globals.Buffer,"dev")?a.buffer:[],...s(e.globals.global,"dev")?a.global:[],...s(e.globals.process,"dev")?a.process:[],""].join(` +-`);return{name:"vite-plugin-node-polyfills",config(o,r){const i=r.command==="serve",v=!!this?.meta?.rolldownVersion,m={...i&&s(e.globals.Buffer,"dev")?{Buffer:"Buffer"}:{},...i&&s(e.globals.global,"dev")?{global:"global"}:{},...i&&s(e.globals.process,"dev")?{process:"process"}:{}},c={...s(e.globals.Buffer,"build")?{Buffer:"vite-plugin-node-polyfills/shims/buffer"}:{},...s(e.globals.global,"build")?{global:"vite-plugin-node-polyfills/shims/global"}:{},...s(e.globals.process,"build")?{process:"vite-plugin-node-polyfills/shims/process"}:{}};return{build:{rollupOptions:{onwarn:(t,n)=>{O.handleCircularDependancyWarning(t,()=>{if(o.build?.rollupOptions?.onwarn)return o.build.rollupOptions.onwarn(t,n);n(t)})},...Object.keys(c).length>0?v?{transform:{inject:c}}:{plugins:[R.default(c)]}:{}}},esbuild:{banner:i?d:void 0},optimizeDeps:{exclude:[...p],...v?{rolldownOptions:{resolve:{alias:{...u}},transform:{define:m},plugins:[{name:"vite-plugin-node-polyfills:optimizer",banner:i?d:void 0}]}}:{esbuildOptions:{banner:i?{js:d}:void 0,define:m,inject:[...p],plugins:[q.default(u),{name:"vite-plugin-node-polyfills-shims-resolver",setup(t){for(const n of p){const j=I(n);t.onResolve({filter:j},()=>({external:!1,path:n}))}}}]}}},resolve:{alias:{...u}}}}}};exports.nodePolyfills=D; ++`),F=o=>/\.(m?ts|[jt]sx)$/.test(o.split("?",1)[0]);let E=!1;return{name:"vite-plugin-node-polyfills",config(o,r){const i=r.command==="serve",v=!!this?.meta?.rolldownVersion,m={...i&&s(e.globals.Buffer,"dev")?{Buffer:"Buffer"}:{},...i&&s(e.globals.global,"dev")?{global:"global"}:{},...i&&s(e.globals.process,"dev")?{process:"process"}:{}},c={...s(e.globals.Buffer,"build")?{Buffer:"vite-plugin-node-polyfills/shims/buffer"}:{},...s(e.globals.global,"build")?{global:"vite-plugin-node-polyfills/shims/global"}:{},...s(e.globals.process,"build")?{process:"vite-plugin-node-polyfills/shims/process"}:{}};E=i;return{build:{rollupOptions:{onwarn:(t,n)=>{O.handleCircularDependancyWarning(t,()=>{if(o.build?.rollupOptions?.onwarn)return o.build.rollupOptions.onwarn(t,n);n(t)})},...Object.keys(c).length>0?v?{transform:{inject:c}}:{plugins:[R.default(c)]}:{}}},optimizeDeps:{exclude:[...p],...v?{rolldownOptions:{resolve:{alias:{...u}},transform:{define:m},plugins:[{name:"vite-plugin-node-polyfills:optimizer",banner:i?d:void 0}]}}:{esbuildOptions:{banner:i?{js:d}:void 0,define:m,inject:[...p],plugins:[q.default(u),{name:"vite-plugin-node-polyfills-shims-resolver",setup(t){for(const n of p){const j=I(n);t.onResolve({filter:j},()=>({external:!1,path:n}))}}}]}}},resolve:{alias:{...u}}}},transform(o,r){if(E&&d&&F(r))return{code:d+o,map:null}}}};exports.nodePolyfills=D; + //# sourceMappingURL=index.cjs.map +diff --git a/dist/index.js b/dist/index.js +index 007d9a62c8b5c9d4fbcfd25f4352e765bddd986e..93a8ec9cac91445b73433bcdf627edd6f92baa42 100644 +--- a/dist/index.js ++++ b/dist/index.js +@@ -19,7 +19,7 @@ const v = (s, l) => d(s) === d(l), e = (s, l) => s ? s === !0 ? !0 : s === l : ! + "import __process_polyfill from 'vite-plugin-node-polyfills/shims/process'", + "globalThis.process = globalThis.process || __process_polyfill" + ] +-}, D = (s = {}) => { ++}, E = (s) => /\.(m?ts|[jt]sx)$/.test(s.split("?", 1)[0]), D = (s = {}) => { + const l = { + include: [], + exclude: [], +@@ -52,6 +52,7 @@ const v = (s, l) => d(s) === d(l), e = (s, l) => s ? s === !0 ? !0 : s === l : ! + "" + ].join(` + `); ++ let _ = !1; + return { + name: "vite-plugin-node-polyfills", + config(o, r) { +@@ -65,6 +66,7 @@ const v = (s, l) => d(s) === d(l), e = (s, l) => s ? s === !0 ? !0 : s === l : ! + ...e(l.globals.global, "build") ? { global: "vite-plugin-node-polyfills/shims/global" } : {}, + ...e(l.globals.process, "build") ? { process: "vite-plugin-node-polyfills/shims/process" } : {} + }; ++ _ = i; + return { + build: { + rollupOptions: { +@@ -78,10 +80,6 @@ const v = (s, l) => d(s) === d(l), e = (s, l) => s ? s === !0 ? !0 : s === l : ! + ...Object.keys(b).length > 0 ? c ? { transform: { inject: b } } : { plugins: [x(b)] } : {} + } + }, +- esbuild: { +- // In dev, the global polyfills need to be injected as a banner in order for isolated scripts (such as Vue SFCs) to have access to them. +- banner: i ? a : void 0 +- }, + optimizeDeps: { + exclude: [ + ...u +@@ -139,6 +137,13 @@ const v = (s, l) => d(s) === d(l), e = (s, l) => s ? s === !0 ? !0 : s === l : ! + } + } + }; ++ }, ++ transform(o, r) { ++ if (_ && a && E(r)) ++ return { ++ code: a + o, ++ map: null ++ }; + } + }; + }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6db09c3a..033e5ec6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,46 +4,339 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -overrides: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4 +catalogs: + default: + '@biomejs/biome': + specifier: ^2.4.15 + version: 2.4.15 + '@commitlint/cli': + specifier: ^21.0.0 + version: 21.0.0 + '@commitlint/config-conventional': + specifier: ^21.0.0 + version: 21.0.0 + '@cosmjs/amino': + specifier: ^0.36.2 + version: 0.36.2 + '@cosmjs/encoding': + specifier: 0.36.2 + version: 0.36.2 + '@cosmos-kit/core': + specifier: 2.18.1 + version: 2.18.1 + '@cosmos-kit/keplr': + specifier: ^2.17.1 + version: 2.17.1 + '@cosmos-kit/leap': + specifier: ^2.17.1 + version: 2.17.1 + '@cosmos-kit/walletconnect': + specifier: 2.15.1 + version: 2.15.1 + '@effect/openapi-generator': + specifier: 4.0.0-beta.68 + version: 4.0.0-beta.68 + '@effect/platform-node': + specifier: 4.0.0-beta.68 + version: 4.0.0-beta.68 + '@faker-js/faker': + specifier: ^10.4.0 + version: 10.4.0 + '@ledgerhq/wallet-api-client': + specifier: ^1.14.0 + version: 1.14.0 + '@ledgerhq/wallet-api-core': + specifier: ^1.30.0 + version: 1.30.0 + '@luno-kit/core': + specifier: ^0.0.13 + version: 0.0.13 + '@meshsdk/wallet': + specifier: 1.9.0-beta-40 + version: 1.9.0-beta-40 + '@polkadot/types': + specifier: ^16.5.6 + version: 16.5.6 + '@polkadot/util': + specifier: ^14.0.3 + version: 14.0.3 + '@radix-ui/react-dialog': + specifier: ^1.1.15 + version: 1.1.15 + '@radix-ui/react-dropdown-menu': + specifier: ^2.1.16 + version: 2.1.16 + '@radix-ui/react-tooltip': + specifier: ^1.2.8 + version: 1.2.8 + '@radix-ui/react-visually-hidden': + specifier: ^1.2.4 + version: 1.2.4 + '@rolldown/plugin-babel': + specifier: ^0.2.3 + version: 0.2.3 + '@safe-global/safe-apps-provider': + specifier: ^0.18.6 + version: 0.18.6 + '@safe-global/safe-apps-sdk': + specifier: ^9.1.0 + version: 9.1.0 + '@solana/wallet-adapter-base': + specifier: ^0.9.27 + version: 0.9.27 + '@solana/wallet-adapter-react': + specifier: ^0.15.39 + version: 0.15.39 + '@solana/wallet-adapter-wallets': + specifier: ^0.19.38 + version: 0.19.38 + '@solana/web3.js': + specifier: ^1.98.4 + version: 1.98.4 + '@stakekit/rainbowkit': + specifier: ^2.2.11 + version: 2.2.11 + '@tanstack/react-query': + specifier: ^5.100.10 + version: 5.100.10 + '@tanstack/react-virtual': + specifier: ^3.13.24 + version: 3.13.24 + '@ton/core': + specifier: ^0.63.1 + version: 0.63.1 + '@tonconnect/ui': + specifier: ^2.4.4 + version: 2.4.4 + '@tronweb3/tronwallet-abstract-adapter': + specifier: ^1.1.13 + version: 1.1.13 + '@tronweb3/tronwallet-adapter-bitkeep': + specifier: ^1.1.8 + version: 1.1.8 + '@tronweb3/tronwallet-adapter-ledger': + specifier: ^1.1.13 + version: 1.1.13 + '@tronweb3/tronwallet-adapter-tronlink': + specifier: ^1.1.16 + version: 1.1.16 + '@tronweb3/tronwallet-adapter-walletconnect': + specifier: ^3.0.3 + version: 3.0.3 + '@types/lodash.merge': + specifier: ^4.6.9 + version: 4.6.9 + '@types/lodash.uniqwith': + specifier: ^4.5.9 + version: 4.5.9 + '@types/node': + specifier: ^25.7.0 + version: 25.7.0 + '@types/react': + specifier: 19.2.14 + version: 19.2.14 + '@types/react-dom': + specifier: 19.2.3 + version: 19.2.3 + '@vanilla-extract/css': + specifier: ^1.20.1 + version: 1.20.1 + '@vanilla-extract/dynamic': + specifier: ^2.1.5 + version: 2.1.5 + '@vanilla-extract/recipes': + specifier: ^0.5.7 + version: 0.5.7 + '@vanilla-extract/sprinkles': + specifier: ^1.6.5 + version: 1.6.5 + '@vanilla-extract/vite-plugin': + specifier: ^5.2.2 + version: 5.2.2 + '@vitejs/plugin-react': + specifier: ^6.0.1 + version: 6.0.1 + '@vitest/browser-playwright': + specifier: ^4.1.6 + version: 4.1.6 + '@xstate/react': + specifier: ^6.1.0 + version: 6.1.0 + '@xstate/store': + specifier: ^3.17.5 + version: 3.17.5 + autoprefixer: + specifier: ^10.5.0 + version: 10.5.0 + babel-plugin-react-compiler: + specifier: 1.0.0 + version: 1.0.0 + bignumber.js: + specifier: ^11.1.1 + version: 11.1.1 + chain-registry: + specifier: 1.69.221 + version: 1.69.221 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + cosmjs-types: + specifier: ^0.10.1 + version: 0.10.1 + date-fns: + specifier: ^4.1.0 + version: 4.1.0 + effect: + specifier: 4.0.0-beta.68 + version: 4.0.0-beta.68 + eventemitter3: + specifier: ^5.0.4 + version: 5.0.4 + husky: + specifier: ^9.1.7 + version: 9.1.7 + i18next: + specifier: ^26.1.0 + version: 26.1.0 + i18next-browser-languagedetector: + specifier: ^8.2.1 + version: 8.2.1 + lodash.merge: + specifier: ^4.6.2 + version: 4.6.2 + lodash.uniqwith: + specifier: ^4.5.0 + version: 4.5.0 + mipd: + specifier: ^0.0.7 + version: 0.0.7 + mixpanel-browser: + specifier: ^2.78.0 + version: 2.78.0 + motion: + specifier: 12.38.0 + version: 12.38.0 + msw: + specifier: ^2.14.6 + version: 2.14.6 + next: + specifier: ^16.2.6 + version: 16.2.6 + playwright: + specifier: ^1.60.0 + version: 1.60.0 + postcss: + specifier: ^8.5.14 + version: 8.5.14 + purify-ts: + specifier: 2.1.4 + version: 2.1.4 + react: + specifier: ^19.2.6 + version: 19.2.6 + react-dom: + specifier: ^19.2.6 + version: 19.2.6 + react-i18next: + specifier: ^17.0.7 + version: 17.0.7 + react-loading-skeleton: + specifier: ^3.5.0 + version: 3.5.0 + react-router: + specifier: ^7.15.0 + version: 7.15.0 + reselect: + specifier: ^5.1.1 + version: 5.1.1 + rev-dep: + specifier: ^2.13.2 + version: 2.13.2 + rxjs: + specifier: ^7.8.2 + version: 7.8.2 + serve: + specifier: ^14.2.6 + version: 14.2.6 + swagger2openapi: + specifier: ^7.0.8 + version: 7.0.8 + tsx: + specifier: ^4.21.0 + version: 4.21.0 + turbo: + specifier: ^2.9.12 + version: 2.9.12 + typescript: + specifier: ^6.0.3 + version: 6.0.3 + unplugin-macros: + specifier: ^0.20.0 + version: 0.20.0 + viem: + specifier: ^2.48.11 + version: 2.48.11 + vite: + specifier: ^8.0.12 + version: 8.0.12 + vite-plugin-node-polyfills: + specifier: ^0.26.0 + version: 0.26.0 + vitest: + specifier: ^4.1.6 + version: 4.1.6 + vitest-browser-react: + specifier: ^2.2.0 + version: 2.2.0 + wagmi: + specifier: 3.6.14 + version: 3.6.14 + xstate: + specifier: ^5.31.1 + version: 5.31.1 + yaml: + specifier: ^2.9.0 + version: 2.9.0 patchedDependencies: + '@stakekit/rainbowkit@2.2.11': + hash: d028a8df4a214c19e07d959c285fb81eb54f4f1f3cbc199c7331e502cd94fbea + path: patches/@stakekit__rainbowkit@2.2.11.patch purify-ts: hash: 5a25e93220157c14f071521854d75c4da38ec0e15fad1989f51e87be19c2fd63 path: patches/purify-ts.patch + vite-plugin-node-polyfills@0.26.0: + hash: 2f652eeb27eb59e7cd6a47bd85f51fe0133a1fdcd7fac68c42e21c232383a67a + path: patches/vite-plugin-node-polyfills@0.26.0.patch importers: .: devDependencies: '@biomejs/biome': - specifier: ^2.3.8 - version: 2.3.8 - '@changesets/cli': - specifier: ^2.29.8 - version: 2.29.8(@types/node@25.0.2) + specifier: 'catalog:' + version: 2.4.15 '@commitlint/cli': - specifier: ^20.2.0 - version: 20.2.0(@types/node@25.0.2)(typescript@5.9.3) + specifier: 'catalog:' + version: 21.0.0(@types/node@25.7.0)(conventional-commits-parser@6.4.0)(typescript@6.0.3) '@commitlint/config-conventional': - specifier: ^20.2.0 - version: 20.2.0 + specifier: 'catalog:' + version: 21.0.0 husky: - specifier: ^9.1.7 + specifier: 'catalog:' version: 9.1.7 - knip: - specifier: ^5.73.4 - version: 5.73.4(@types/node@25.0.2)(typescript@5.9.3) + rev-dep: + specifier: 'catalog:' + version: 2.13.2 turbo: - specifier: ^2.6.3 - version: 2.6.3 + specifier: 'catalog:' + version: 2.9.12 packages/examples/with-cdn-script: devDependencies: serve: - specifier: ^14.2.5 - version: 14.2.5 + specifier: 'catalog:' + version: 14.2.6 packages/examples/with-nextjs: dependencies: @@ -51,27 +344,27 @@ importers: specifier: workspace:* version: link:../../widget next: - specifier: ^16.0.10 - version: 16.0.10(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.85.0) + specifier: 'catalog:' + version: 16.2.6(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(sass@1.85.0) react: - specifier: ^19.2.3 - version: 19.2.3 + specifier: 'catalog:' + version: 19.2.6 react-dom: - specifier: ^19.2.3 - version: 19.2.3(react@19.2.3) + specifier: 'catalog:' + version: 19.2.6(react@19.2.6) devDependencies: '@types/node': - specifier: ^25.0.2 - version: 25.0.2 + specifier: 'catalog:' + version: 25.7.0 '@types/react': - specifier: 19.0.10 - version: 19.0.10 + specifier: 'catalog:' + version: 19.2.14 '@types/react-dom': - specifier: 19.0.4 - version: 19.0.4(@types/react@19.0.10) + specifier: 'catalog:' + version: 19.2.3(@types/react@19.2.14) typescript: - specifier: ^5.9.3 - version: 5.9.3 + specifier: 'catalog:' + version: 6.0.3 packages/examples/with-vite: dependencies: @@ -79,27 +372,27 @@ importers: specifier: workspace:* version: link:../../widget react: - specifier: ^19.2.3 - version: 19.2.3 + specifier: 'catalog:' + version: 19.2.6 react-dom: - specifier: ^19.2.3 - version: 19.2.3(react@19.2.3) + specifier: 'catalog:' + version: 19.2.6(react@19.2.6) devDependencies: '@types/react': - specifier: 19.0.10 - version: 19.0.10 + specifier: 'catalog:' + version: 19.2.14 '@types/react-dom': - specifier: 19.0.4 - version: 19.0.4(@types/react@19.0.10) - '@vitejs/plugin-react-swc': - specifier: ^4.2.2 - version: 4.2.2(vite@7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 19.2.3(@types/react@19.2.14) + '@vitejs/plugin-react': + specifier: 'catalog:' + version: 6.0.1(@rolldown/plugin-babel@0.2.3(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0)(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)))(babel-plugin-react-compiler@1.0.0)(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) typescript: - specifier: ^5.9.3 - version: 5.9.3 + specifier: 'catalog:' + version: 6.0.3 vite: - specifier: ^7.2.7 - version: 7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) packages/examples/with-vite-bundled: dependencies: @@ -108,298 +401,286 @@ importers: version: link:../../widget devDependencies: typescript: - specifier: ~5.9.3 - version: 5.9.3 + specifier: 'catalog:' + version: 6.0.3 vite: - specifier: ^7.2.7 - version: 7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) packages/widget: devDependencies: '@cosmjs/amino': - specifier: ^0.33.0 - version: 0.33.1 + specifier: 'catalog:' + version: 0.36.2 '@cosmjs/encoding': - specifier: 0.33.1 - version: 0.33.1 + specifier: 'catalog:' + version: 0.36.2 '@cosmos-kit/core': - specifier: 2.16.0 - version: 2.16.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + specifier: 'catalog:' + version: 2.18.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(utf-8-validate@5.0.10) '@cosmos-kit/keplr': - specifier: ^2.15.0 - version: 2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@walletconnect/sign-client@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@walletconnect/types@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))))(bufferutil@4.0.9)(encoding@0.1.13)(starknet@6.23.1(encoding@0.1.13))(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + specifier: 'catalog:' + version: 2.17.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@walletconnect/sign-client@2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@walletconnect/types@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(starknet@6.23.1(encoding@0.1.13))(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@cosmos-kit/leap': - specifier: ^2.15.0 - version: 2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@walletconnect/types@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))))(bufferutil@4.0.9)(cosmjs-types@0.9.0)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + specifier: 'catalog:' + version: 2.17.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@walletconnect/types@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1))(bufferutil@4.0.9)(cosmjs-types@0.10.1)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@cosmos-kit/walletconnect': - specifier: 2.13.0 - version: 2.13.0(@cosmjs/amino@0.33.1)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@walletconnect/types@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + specifier: 'catalog:' + version: 2.15.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@walletconnect/types@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@effect/openapi-generator': + specifier: 'catalog:' + version: 4.0.0-beta.68(@effect/platform-node@4.0.0-beta.68(bufferutil@4.0.9)(effect@4.0.0-beta.68)(ioredis@5.10.1)(utf-8-validate@5.0.10))(effect@4.0.0-beta.68) + '@effect/platform-node': + specifier: 'catalog:' + version: 4.0.0-beta.68(bufferutil@4.0.9)(effect@4.0.0-beta.68)(ioredis@5.10.1)(utf-8-validate@5.0.10) '@faker-js/faker': - specifier: ^10.1.0 - version: 10.1.0 + specifier: 'catalog:' + version: 10.4.0 '@ledgerhq/wallet-api-client': - specifier: ^1.12.6 - version: 1.12.6(@ton/crypto@3.3.0)(encoding@0.1.13) + specifier: 'catalog:' + version: 1.14.0(@ton/crypto@3.3.0)(encoding@0.1.13) + '@ledgerhq/wallet-api-core': + specifier: 'catalog:' + version: 1.30.0(@ton/crypto@3.3.0)(encoding@0.1.13) '@luno-kit/core': - specifier: ^0.0.10 - version: 0.0.10(@dedot/chaintypes@0.123.0(dedot@0.13.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(dedot@0.13.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + specifier: 'catalog:' + version: 0.0.13(@dedot/chaintypes@0.123.0(dedot@0.13.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(dedot@0.13.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@meshsdk/wallet': - specifier: 1.9.0-beta-40 + specifier: 'catalog:' version: 1.9.0-beta-40(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(bufferutil@4.0.9)(encoding@0.1.13)(rxjs@7.8.2)(utf-8-validate@5.0.10) '@polkadot/types': - specifier: ^16.5.4 - version: 16.5.4 + specifier: 'catalog:' + version: 16.5.6 '@polkadot/util': - specifier: ^14.0.1 - version: 14.0.1 + specifier: 'catalog:' + version: 14.0.3 '@radix-ui/react-dialog': - specifier: ^1.1.15 - version: 1.1.15(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: 'catalog:' + version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@radix-ui/react-dropdown-menu': - specifier: ^2.1.16 - version: 2.1.16(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: 'catalog:' + version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@radix-ui/react-tooltip': - specifier: ^1.2.8 - version: 1.2.8(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: 'catalog:' + version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@radix-ui/react-visually-hidden': - specifier: ^1.2.4 - version: 1.2.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@rollup/plugin-replace': - specifier: ^6.0.3 - version: 6.0.3(rollup@4.53.3) + specifier: 'catalog:' + version: 1.2.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@rolldown/plugin-babel': + specifier: 'catalog:' + version: 0.2.3(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0)(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) '@safe-global/safe-apps-provider': - specifier: ^0.18.6 - version: 0.18.6(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + specifier: 'catalog:' + version: 0.18.6(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@safe-global/safe-apps-sdk': - specifier: ^9.1.0 - version: 9.1.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + specifier: 'catalog:' + version: 9.1.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@solana/wallet-adapter-base': - specifier: ^0.9.27 - version: 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) + specifier: 'catalog:' + version: 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) '@solana/wallet-adapter-react': - specifier: ^0.15.39 - version: 0.15.39(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3) + specifier: 'catalog:' + version: 0.15.39(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6) '@solana/wallet-adapter-wallets': - specifier: ^0.19.37 - version: 0.19.37(@babel/runtime@7.28.4)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(@types/react@19.0.10)(bs58@5.0.0)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-dom@19.2.3(react@19.2.3))(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3)(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76) + specifier: 'catalog:' + version: 0.19.38(@babel/runtime@7.29.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(@types/react@19.2.14)(bs58@5.0.0)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(ioredis@5.10.1)(react-dom@19.2.6(react@19.2.6))(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6)(tslib@2.8.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76) '@solana/web3.js': - specifier: ^1.98.4 - version: 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@stakekit/api-hooks': - specifier: 0.0.113 - version: 0.0.113(@faker-js/faker@10.1.0)(@tanstack/react-query@5.90.12(react@19.2.3))(msw@2.12.4(@types/node@25.0.2)(typescript@5.9.3))(react@19.2.3) - '@stakekit/common': - specifier: ^0.0.61 - version: 0.0.61 + specifier: 'catalog:' + version: 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) '@stakekit/rainbowkit': - specifier: ^2.2.11 - version: 2.2.11(@tanstack/react-query@5.90.12(react@19.2.3))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(viem@2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@3.1.0) + specifier: 'catalog:' + version: 2.2.11(patch_hash=d028a8df4a214c19e07d959c285fb81eb54f4f1f3cbc199c7331e502cd94fbea)(@tanstack/react-query@5.100.10(react@19.2.6))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(typescript@6.0.3)(viem@2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@3.6.14) '@tanstack/react-query': - specifier: ^5.90.12 - version: 5.90.12(react@19.2.3) + specifier: 'catalog:' + version: 5.100.10(react@19.2.6) '@tanstack/react-virtual': - specifier: ^3.13.13 - version: 3.13.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: 'catalog:' + version: 3.13.24(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@ton/core': - specifier: ^0.62.0 - version: 0.62.0(@ton/crypto@3.3.0) + specifier: 'catalog:' + version: 0.63.1(@ton/crypto@3.3.0) '@tonconnect/ui': - specifier: ^2.3.1 - version: 2.3.1(encoding@0.1.13) + specifier: 'catalog:' + version: 2.4.4(encoding@0.1.13) '@tronweb3/tronwallet-abstract-adapter': - specifier: ^1.1.10 - version: 1.1.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) + specifier: 'catalog:' + version: 1.1.13(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@tronweb3/tronwallet-adapter-bitkeep': - specifier: ^1.1.7 - version: 1.1.7(bufferutil@4.0.9)(utf-8-validate@5.0.10) + specifier: 'catalog:' + version: 1.1.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@tronweb3/tronwallet-adapter-ledger': - specifier: ^1.1.11 - version: 1.1.11(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@tronweb3/tronwallet-adapter-tronlink': - specifier: ^1.1.13 + specifier: 'catalog:' version: 1.1.13(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@tronweb3/tronwallet-adapter-tronlink': + specifier: 'catalog:' + version: 1.1.16(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@tronweb3/tronwallet-adapter-walletconnect': - specifier: ^3.0.0 - version: 3.0.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + specifier: 'catalog:' + version: 3.0.3(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@types/lodash.merge': - specifier: ^4.6.9 + specifier: 'catalog:' version: 4.6.9 '@types/lodash.uniqwith': - specifier: ^4.5.9 + specifier: 'catalog:' version: 4.5.9 - '@types/mixpanel-browser': - specifier: ^2.66.0 - version: 2.66.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2) '@types/react': - specifier: 19.0.10 - version: 19.0.10 + specifier: 'catalog:' + version: 19.2.14 '@types/react-dom': - specifier: 19.0.4 - version: 19.0.4(@types/react@19.0.10) + specifier: 'catalog:' + version: 19.2.3(@types/react@19.2.14) '@vanilla-extract/css': - specifier: ^1.17.5 - version: 1.17.5 + specifier: 'catalog:' + version: 1.20.1 '@vanilla-extract/dynamic': - specifier: ^2.1.5 + specifier: 'catalog:' version: 2.1.5 '@vanilla-extract/recipes': - specifier: ^0.5.7 - version: 0.5.7(@vanilla-extract/css@1.17.5) + specifier: 'catalog:' + version: 0.5.7(@vanilla-extract/css@1.20.1) '@vanilla-extract/sprinkles': - specifier: ^1.6.5 - version: 1.6.5(@vanilla-extract/css@1.17.5) + specifier: 'catalog:' + version: 1.6.5(@vanilla-extract/css@1.20.1) '@vanilla-extract/vite-plugin': - specifier: ^5.1.3 - version: 5.1.3(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(vite@7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2) + specifier: 'catalog:' + version: 5.2.2(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))(yaml@2.9.0) '@vitejs/plugin-react': - specifier: ^5.1.2 - version: 5.1.2(vite@7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 6.0.1(@rolldown/plugin-babel@0.2.3(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0)(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)))(babel-plugin-react-compiler@1.0.0)(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) '@vitest/browser-playwright': - specifier: ^4.0.15 - version: 4.0.15(bufferutil@4.0.9)(msw@2.12.4(@types/node@25.0.2)(typescript@5.9.3))(playwright@1.57.0)(utf-8-validate@5.0.10)(vite@7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15) + specifier: 'catalog:' + version: 4.1.6(bufferutil@4.0.9)(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(playwright@1.60.0)(utf-8-validate@5.0.10)(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.6) '@xstate/react': - specifier: ^6.0.0 - version: 6.0.0(@types/react@19.0.10)(react@19.2.3)(xstate@5.25.0) + specifier: 'catalog:' + version: 6.1.0(@types/react@19.2.14)(react@19.2.6)(xstate@5.31.1) '@xstate/store': - specifier: ^3.13.0 - version: 3.13.0(react@19.2.3) + specifier: 'catalog:' + version: 3.17.5(react@19.2.6) autoprefixer: - specifier: ^10.4.22 - version: 10.4.22(postcss@8.5.6) - axios: - specifier: ^1.13.2 - version: 1.13.2 + specifier: 'catalog:' + version: 10.5.0(postcss@8.5.14) babel-plugin-react-compiler: - specifier: 1.0.0 + specifier: 'catalog:' version: 1.0.0 bignumber.js: - specifier: ^9.3.1 - version: 9.3.1 + specifier: 'catalog:' + version: 11.1.1 chain-registry: - specifier: 1.69.221 + specifier: 'catalog:' version: 1.69.221 - chart.js: - specifier: ^4.5.1 - version: 4.5.1 - chartjs-plugin-annotation: - specifier: ^3.1.0 - version: 3.1.0(chart.js@4.5.1) clsx: - specifier: ^2.1.1 + specifier: 'catalog:' version: 2.1.1 cosmjs-types: - specifier: ^0.9.0 - version: 0.9.0 + specifier: 'catalog:' + version: 0.10.1 date-fns: - specifier: ^4.1.0 + specifier: 'catalog:' version: 4.1.0 + effect: + specifier: 'catalog:' + version: 4.0.0-beta.68 eventemitter3: - specifier: ^5.0.1 - version: 5.0.1 + specifier: 'catalog:' + version: 5.0.4 i18next: - specifier: ^25.7.2 - version: 25.7.2(typescript@5.9.3) + specifier: 'catalog:' + version: 26.1.0(typescript@6.0.3) i18next-browser-languagedetector: - specifier: ^8.2.0 - version: 8.2.0 + specifier: 'catalog:' + version: 8.2.1 lodash.merge: - specifier: ^4.6.2 + specifier: 'catalog:' version: 4.6.2 lodash.uniqwith: - specifier: ^4.5.0 + specifier: 'catalog:' version: 4.5.0 mipd: - specifier: ^0.0.7 - version: 0.0.7(typescript@5.9.3) + specifier: 'catalog:' + version: 0.0.7(typescript@6.0.3) mixpanel-browser: - specifier: ^2.72.0 - version: 2.72.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2) + specifier: 'catalog:' + version: 2.78.0 motion: - specifier: 12.23.26 - version: 12.23.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: 'catalog:' + version: 12.38.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6) msw: - specifier: ^2.12.4 - version: 2.12.4(@types/node@25.0.2)(typescript@5.9.3) + specifier: 'catalog:' + version: 2.14.6(@types/node@25.7.0)(typescript@6.0.3) playwright: - specifier: ^1.57.0 - version: 1.57.0 + specifier: 'catalog:' + version: 1.60.0 postcss: - specifier: ^8.5.6 - version: 8.5.6 + specifier: 'catalog:' + version: 8.5.14 purify-ts: - specifier: 2.1.0 - version: 2.1.0(patch_hash=5a25e93220157c14f071521854d75c4da38ec0e15fad1989f51e87be19c2fd63) + specifier: 'catalog:' + version: 2.1.4(patch_hash=5a25e93220157c14f071521854d75c4da38ec0e15fad1989f51e87be19c2fd63) react: - specifier: ^19.2.3 - version: 19.2.3 - react-chartjs-2: - specifier: ^5.3.1 - version: 5.3.1(chart.js@4.5.1)(react@19.2.3) + specifier: 'catalog:' + version: 19.2.6 react-dom: - specifier: ^19.2.3 - version: 19.2.3(react@19.2.3) + specifier: 'catalog:' + version: 19.2.6(react@19.2.6) react-i18next: - specifier: ^16.5.0 - version: 16.5.0(i18next@25.7.2(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3)(typescript@5.9.3) + specifier: 'catalog:' + version: 17.0.7(i18next@26.1.0(typescript@6.0.3))(react-dom@19.2.6(react@19.2.6))(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6)(typescript@6.0.3) react-loading-skeleton: - specifier: ^3.5.0 - version: 3.5.0(react@19.2.3) + specifier: 'catalog:' + version: 3.5.0(react@19.2.6) react-router: - specifier: ^7.10.1 - version: 7.10.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: 'catalog:' + version: 7.15.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6) reselect: - specifier: ^5.1.1 + specifier: 'catalog:' version: 5.1.1 rxjs: - specifier: ^7.8.2 + specifier: 'catalog:' version: 7.8.2 - skott: - specifier: ^0.35.6 - version: 0.35.6 - tronweb: - specifier: ^6.1.0 - version: 6.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + swagger2openapi: + specifier: 'catalog:' + version: 7.0.8(encoding@0.1.13) tsx: - specifier: ^4.21.0 + specifier: 'catalog:' version: 4.21.0 typescript: - specifier: 5.9.3 - version: 5.9.3 + specifier: 'catalog:' + version: 6.0.3 unplugin-macros: - specifier: ^0.18.5 - version: 0.18.5(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 0.20.0(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(rolldown@1.0.0)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) viem: - specifier: ^2.42.0 - version: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + specifier: 'catalog:' + version: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) vite: - specifier: ^7.2.7 - version: 7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) vite-plugin-node-polyfills: - specifier: ^0.24.0 - version: 0.24.0(rollup@4.53.3)(vite@7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 0.26.0(patch_hash=2f652eeb27eb59e7cd6a47bd85f51fe0133a1fdcd7fac68c42e21c232383a67a)(rollup@4.53.3)(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) vitest: - specifier: ^4.0.15 - version: 4.0.15(@types/node@25.0.2)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@5.0.10))(less@4.2.2)(msw@2.12.4(@types/node@25.0.2)(typescript@5.9.3))(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.6(@types/node@25.7.0)(@vitest/browser-playwright@4.1.6)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) vitest-browser-react: - specifier: ^2.0.2 - version: 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vitest@4.0.15) + specifier: 'catalog:' + version: 2.2.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(vitest@4.1.6) wagmi: - specifier: 3.1.0 - version: 3.1.0(81f493ce3f77f1eeec2bc71ce4932d5f) + specifier: 'catalog:' + version: 3.6.14(@coinbase/wallet-sdk@4.3.6(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.2.6))(utf-8-validate@5.0.10)(zod@3.25.76))(@safe-global/safe-apps-provider@0.18.6(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@tanstack/query-core@5.100.10)(@tanstack/react-query@5.100.10(react@19.2.6))(@types/react@19.2.14)(@walletconnect/ethereum-provider@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(porto@0.2.35)(react@19.2.6)(typescript@6.0.3)(viem@2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)) xstate: - specifier: ^5.25.0 - version: 5.25.0 - zx: - specifier: ^8.8.5 - version: 8.8.5 + specifier: 'catalog:' + version: 5.31.1 + yaml: + specifier: 'catalog:' + version: 2.9.0 packages: - '@acemir/cssom@0.9.29': - resolution: {integrity: sha512-G90x0VW+9nW4dFajtjCoT+NM0scAfH9Mb08IcjgFHYbfiL/lU04dTF9JuVOi3/OH+DJCQdcIseSXkdCB9Ky6JA==} + '@acemir/cssom@0.9.31': + resolution: {integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==} - '@adraffy/ens-normalize@1.10.0': - resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} + '@adobe/css-tools@4.4.4': + resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} '@adraffy/ens-normalize@1.10.1': resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} @@ -407,58 +688,51 @@ packages: '@adraffy/ens-normalize@1.11.1': resolution: {integrity: sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==} - '@adraffy/ens-normalize@1.9.0': - resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} - - '@arr/every@1.0.1': - resolution: {integrity: sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg==} - engines: {node: '>=4'} - - '@asamuzakjp/css-color@4.1.0': - resolution: {integrity: sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==} + '@asamuzakjp/css-color@4.1.2': + resolution: {integrity: sha512-NfBUvBaYgKIuq6E/RBLY1m0IohzNHAYyaJGuTK79Z23uNwmz2jl1mPsC5ZxCCxylinKhT1Amn5oNTlx1wN8cQg==} - '@asamuzakjp/dom-selector@6.7.6': - resolution: {integrity: sha512-hBaJER6A9MpdG3WgdlOolHmbOYvSk46y7IQN/1+iqiCuUu6iWdQrs9DGKF8ocqsEqWujWf/V7b7vaDgiUmIvUg==} + '@asamuzakjp/dom-selector@6.8.1': + resolution: {integrity: sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ==} '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.5': - resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} + '@babel/compat-data@7.29.3': + resolution: {integrity: sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.5': - resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.5': - resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.2': - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} engines: {node: '>=6.9.0'} '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.28.3': - resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.27.1': @@ -473,12 +747,12 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.4': - resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + '@babel/helpers@7.29.2': + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + '@babel/parser@7.29.3': + resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==} engines: {node: '>=6.0.0'} hasBin: true @@ -503,8 +777,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.27.1': - resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + '@babel/plugin-syntax-import-attributes@7.28.6': + resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -561,20 +835,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.27.1': - resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-self@7.27.1': - resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-source@7.27.1': - resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + '@babel/plugin-syntax-typescript@7.28.6': + resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -583,90 +845,86 @@ packages: resolution: {integrity: sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.27.6': - resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} - engines: {node: '>=6.9.0'} - - '@babel/runtime@7.28.4': - resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + '@babel/runtime@7.29.2': + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.5': - resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} - '@base-org/account@2.4.0': - resolution: {integrity: sha512-A4Umpi8B9/pqR78D1Yoze4xHyQaujioVRqqO3d6xuDFw9VRtjg6tK3bPlwE0aW+nVH/ntllCpPa2PbI8Rnjcug==} - '@biglup/is-cid@1.0.3': resolution: {integrity: sha512-R0XPZ/IQhU2TtetSFI9vI+7kJOJYNiCncn5ixEBW+/LNaZCo2HK37Mq3pRNzrM4FryuAkyeqY7Ujmj3I3e3t9g==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} - '@biomejs/biome@2.3.8': - resolution: {integrity: sha512-Qjsgoe6FEBxWAUzwFGFrB+1+M8y/y5kwmg5CHac+GSVOdmOIqsAiXM5QMVGZJ1eCUCLlPZtq4aFAQ0eawEUuUA==} + '@biomejs/biome@2.4.15': + resolution: {integrity: sha512-j5VH3a/h/HXTKBM50MDMxRCzkeLv9S2XJcW2WgnZT1+xyisi+0bISrXR82gCX+8S9lvK0skEvHJRN+3Ktr2hlw==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@2.3.8': - resolution: {integrity: sha512-HM4Zg9CGQ3txTPflxD19n8MFPrmUAjaC7PQdLkugeeC0cQ+PiVrd7i09gaBS/11QKsTDBJhVg85CEIK9f50Qww==} + '@biomejs/cli-darwin-arm64@2.4.15': + resolution: {integrity: sha512-rF3PPqLq1yoST79zaQbDjVJwsuIeci/O+9bgNmC5QpgOqz6aqYuzA4abyAGx+mgyiDXn4A049xAN8gijbuR1Qg==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@2.3.8': - resolution: {integrity: sha512-lUDQ03D7y/qEao7RgdjWVGCu+BLYadhKTm40HkpJIi6kn8LSv5PAwRlew/DmwP4YZ9ke9XXoTIQDO1vAnbRZlA==} + '@biomejs/cli-darwin-x64@2.4.15': + resolution: {integrity: sha512-/5KHXYMfSJs1fNXiX30xFtI8JcCFV6zaVVLxOa0M2sfqBKHkpQhRTv94yxQWxeTY2lzo2OuTlNvPC+hDQt2wcQ==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@2.3.8': - resolution: {integrity: sha512-PShR4mM0sjksUMyxbyPNMxoKFPVF48fU8Qe8Sfx6w6F42verbwRLbz+QiKNiDPRJwUoMG1nPM50OBL3aOnTevA==} + '@biomejs/cli-linux-arm64-musl@2.4.15': + resolution: {integrity: sha512-ZPcxznxm0pogHBLZhYntyR3sR+MrZjqJIKEr7ZqVen0Rl+P/4upVmfYXjftizi9RoqZntg33fv/1fbdhbYXpEQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] libc: [musl] - '@biomejs/cli-linux-arm64@2.3.8': - resolution: {integrity: sha512-Uo1OJnIkJgSgF+USx970fsM/drtPcQ39I+JO+Fjsaa9ZdCN1oysQmy6oAGbyESlouz+rzEckLTF6DS7cWse95g==} + '@biomejs/cli-linux-arm64@2.4.15': + resolution: {integrity: sha512-owaAMZD/T4LrD0ELNCk0Km3qrRHuM0X6EAyVE1FSqGY0rbLoiDLrO4Us2tllm6cAeB2Ioa9C2C08NZPdr8+0Ug==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] libc: [glibc] - '@biomejs/cli-linux-x64-musl@2.3.8': - resolution: {integrity: sha512-YGLkqU91r1276uwSjiUD/xaVikdxgV1QpsicT0bIA1TaieM6E5ibMZeSyjQ/izBn4tKQthUSsVZacmoJfa3pDA==} + '@biomejs/cli-linux-x64-musl@2.4.15': + resolution: {integrity: sha512-CNq/9W38SYSH023lfcQ4KKU8K0YX8T//FZUhcgtMMRABDojx5XsMV7jlweAvGSl389wJQB29Qo6Zb/a+jdvt+w==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] libc: [musl] - '@biomejs/cli-linux-x64@2.3.8': - resolution: {integrity: sha512-QDPMD5bQz6qOVb3kiBui0zKZXASLo0NIQ9JVJio5RveBEFgDgsvJFUvZIbMbUZT3T00M/1wdzwWXk4GIh0KaAw==} + '@biomejs/cli-linux-x64@2.4.15': + resolution: {integrity: sha512-0jj7THz12GbUOLmMibktK6DZjqz2zV64KFxyBtcFTKPiiOIY0a7vns1elpO1dERvxpsZ5ik0oFfz0oGwFde1+g==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] libc: [glibc] - '@biomejs/cli-win32-arm64@2.3.8': - resolution: {integrity: sha512-H4IoCHvL1fXKDrTALeTKMiE7GGWFAraDwBYFquE/L/5r1927Te0mYIGseXi4F+lrrwhSWbSGt5qPFswNoBaCxg==} + '@biomejs/cli-win32-arm64@2.4.15': + resolution: {integrity: sha512-ouhkYdlhp/1GghEJPdWwD/Vi3gQ1nFxuSpMolWsbq3Lsq3QUR4jl6UdhhscdCugKU5vOEuMiJhvKj66O0OCq+w==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@2.3.8': - resolution: {integrity: sha512-RguzimPoZWtBapfKhKjcWXBVI91tiSprqdBYu7tWhgN8pKRZhw24rFeNZTNf6UiBfjCYCi9eFQs/JzJZIhuK4w==} + '@biomejs/cli-win32-x64@2.4.15': + resolution: {integrity: sha512-zBrGq5mx5wwpnow4+2BxUvleDM+GNd4sLbPaMapsSLQLD0NGRCquqPBTgN+7XkUteHvj7M+BstuI8tmnV7+HgQ==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] + '@blazediff/core@1.9.1': + resolution: {integrity: sha512-ehg3jIkYKulZh+8om/O25vkvSsXXwC+skXmyA87FFx6A/45eqOkZsBltMw/TVteb0mloiGT8oGRTcjRAz66zaA==} + '@cardano-ogmios/client@6.9.0': resolution: {integrity: sha512-IsoUVsaMXiYyhWrdVKYOA5PDlX0EZ2gaq4lfk4JelRw6mcWVxemUrMaU2ndvugO9LQ3SCM1nESPgMIU0xe5FWw==} engines: {node: '>=14'} @@ -774,23 +1032,20 @@ packages: '@cardanosolutions/json-bigint@1.0.2': resolution: {integrity: sha512-hRgKDFRR5zW6vv6KoymE1PuhKk8hxA/F5YsH37ghIFIYnWAMbVoQ7xRKAT5AEy9HrqWM6HxNQLIZ3r3omg96/w==} - '@chain-registry/client@1.53.100': - resolution: {integrity: sha512-ewmg9JV7e4nhanPghZXKPnHSejIGjpeMngfWNovVIGg7IxwLV1PBeQJhgpMK5DmtK1KssVucZPlpadBnpyZ7MQ==} + '@chain-registry/client@1.53.355': + resolution: {integrity: sha512-x2uBOfBoR2qNbgD0ZkRB1PbLOPL7QwxmNYJyVI1okrtFz1i8p9VR5sg/8DpJIA6p8B3zQlGB7oV5Ga3A09rt3Q==} - '@chain-registry/keplr@1.74.164': - resolution: {integrity: sha512-7YUdiI4Q3099eD7g8fkJ2jUekpyrzd4QSFDjcN8EHlBdNa0VUUZLNFFVZNFBoYJGGRBjqVmWmCLAUKl3CfX0MQ==} + '@chain-registry/keplr@1.74.577': + resolution: {integrity: sha512-Who/z9fub8tYjd3tc2FLWaONCAlzDBH4SP1zdjk+pwgSBwYd6iWoL37q2fj0yhP7fJv2DW6i9nGptV5iZVJPgg==} '@chain-registry/types@0.46.15': resolution: {integrity: sha512-gzf+pkAbEZ7fKuTuwmrEAEcx1K/BNrKuCnB9s+WwSo9Ad/3s+GV5LOXcOOxjjHh9Mrs9kvnxKvzKjOwWu8gDJw==} - '@chain-registry/types@0.50.100': - resolution: {integrity: sha512-ZaEtpC6Qkt6y1MJjRbGifSLt4UjSnLPknJbzx6TLeC+N3EVavcaR0ionz+1HozTlb0SMKdO1/zt/N6X4NJlDkw==} - - '@chain-registry/types@0.50.136': - resolution: {integrity: sha512-t5TC0jUkaQA4zqdq/CaeLNQL/rvraq1PIONyo4jGFCYdCrLqeuQSJycYp8QCw6LhPvZERp7E/+emggj71dwTEQ==} + '@chain-registry/types@0.50.355': + resolution: {integrity: sha512-TjR/Bt3jVyywvfDw0T5708M90Xd/pBj+pH2sWsm4rUXJmtt5UkLmdBFK53rq7IeCWURUd2RdSvOE/e9QcCdSrw==} - '@chain-registry/utils@1.51.100': - resolution: {integrity: sha512-cjWGICklfHVJQOfY8cmZiv/papeNIeLu+zvQ9M4G9CsVqBHYueLGIy6bM61J6MnbIf5xP3vv0b+AtiOvDUrIAA==} + '@chain-registry/utils@1.51.355': + resolution: {integrity: sha512-/64JhrX7nyCuchSlmqlZqUdsCHPlo/ynxC1fWFeagjQ1i8oe5GAMUiBxu8x0Xpv66eMNAXzcUbIAzXj2HrCHAQ==} '@chainsafe/is-ip@2.1.0': resolution: {integrity: sha512-KIjt+6IfysQ4GCv66xihEitBjvhU/bixbbbFxdJ1sqCp4uJ0wuZiYBPhksZoy4lfaF0k9cwNzY5upEW/VWdw3w==} @@ -798,275 +1053,227 @@ packages: '@chainsafe/netmask@2.0.0': resolution: {integrity: sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg==} - '@changesets/apply-release-plan@7.0.14': - resolution: {integrity: sha512-ddBvf9PHdy2YY0OUiEl3TV78mH9sckndJR14QAt87KLEbIov81XO0q0QAmvooBxXlqRRP8I9B7XOzZwQG7JkWA==} - - '@changesets/assemble-release-plan@6.0.9': - resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} - - '@changesets/changelog-git@0.2.1': - resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} - - '@changesets/cli@2.29.8': - resolution: {integrity: sha512-1weuGZpP63YWUYjay/E84qqwcnt5yJMM0tep10Up7Q5cS/DGe2IZ0Uj3HNMxGhCINZuR7aO9WBMdKnPit5ZDPA==} - hasBin: true - - '@changesets/config@3.1.2': - resolution: {integrity: sha512-CYiRhA4bWKemdYi/uwImjPxqWNpqGPNbEBdX1BdONALFIDK7MCUj6FPkzD+z9gJcvDFUQJn9aDVf4UG7OT6Kog==} - - '@changesets/errors@0.2.0': - resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - - '@changesets/get-dependents-graph@2.1.3': - resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} - - '@changesets/get-release-plan@4.0.14': - resolution: {integrity: sha512-yjZMHpUHgl4Xl5gRlolVuxDkm4HgSJqT93Ri1Uz8kGrQb+5iJ8dkXJ20M2j/Y4iV5QzS2c5SeTxVSKX+2eMI0g==} - - '@changesets/get-version-range-type@0.4.0': - resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} - - '@changesets/git@3.0.4': - resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} - - '@changesets/logger@0.1.1': - resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} - - '@changesets/parse@0.4.2': - resolution: {integrity: sha512-Uo5MC5mfg4OM0jU3up66fmSn6/NE9INK+8/Vn/7sMVcdWg46zfbvvUSjD9EMonVqPi9fbrJH9SXHn48Tr1f2yA==} - - '@changesets/pre@2.0.2': - resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} - - '@changesets/read@0.6.6': - resolution: {integrity: sha512-P5QaN9hJSQQKJShzzpBT13FzOSPyHbqdoIBUd2DJdgvnECCyO6LmAOWSV+O8se2TaZJVwSXjL+v9yhb+a9JeJg==} - - '@changesets/should-skip-package@0.1.2': - resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} - - '@changesets/types@4.1.0': - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - - '@changesets/types@6.1.0': - resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} - - '@changesets/write@0.4.0': - resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} - - '@coinbase/cdp-sdk@1.40.1': - resolution: {integrity: sha512-VZxAUYvWbqM4gw/ZHyr9fKBlCAKdMbBQzJxpV9rMUNkdulHIrj0cko2Mw3dyVyw+gdT62jAVxzVkPuQTRnECLw==} - - '@coinbase/wallet-sdk@3.9.3': - resolution: {integrity: sha512-N/A2DRIf0Y3PHc1XAMvbBUu4zisna6qAdqABMZwBMNEfWrXpAwx16pZGkYCLGE+Rvv1edbcB2LYDRnACNcmCiw==} - '@coinbase/wallet-sdk@4.3.6': resolution: {integrity: sha512-4q8BNG1ViL4mSAAvPAtpwlOs1gpC+67eQtgIwNvT3xyeyFFd+guwkc8bcX5rTmQhXpqnhzC4f0obACbP9CqMSA==} - '@commitlint/cli@20.2.0': - resolution: {integrity: sha512-l37HkrPZ2DZy26rKiTUvdq/LZtlMcxz+PeLv9dzK9NzoFGuJdOQyYU7IEkEQj0pO++uYue89wzOpZ0hcTtoqUA==} - engines: {node: '>=v18'} + '@commitlint/cli@21.0.0': + resolution: {integrity: sha512-p3y2oC0G2R45zaadMwBxCiSesS8digi5RDplP3Zrfpzm7xIgrgAj0W4fGzONjpHyg8obDVJDU45g5txzeMcblg==} + engines: {node: '>=22.12.0'} hasBin: true - '@commitlint/config-conventional@20.2.0': - resolution: {integrity: sha512-MsRac+yNIbTB4Q/psstKK4/ciVzACHicSwz+04Sxve+4DW+PiJeTjU0JnS4m/oOnulrXYN+yBPlKaBSGemRfgQ==} - engines: {node: '>=v18'} + '@commitlint/config-conventional@21.0.0': + resolution: {integrity: sha512-QJX/rPK4Yu3f5J4OCIBy5aXq2e0EEdwSDFZ3NQvFAXTm3gs12ipyZ+yjhZxm3hHn6DB8wuv3zhFTL1I2tYzUBA==} + engines: {node: '>=22.12.0'} - '@commitlint/config-validator@20.2.0': - resolution: {integrity: sha512-SQCBGsL9MFk8utWNSthdxd9iOD1pIVZSHxGBwYIGfd67RTjxqzFOSAYeQVXOu3IxRC3YrTOH37ThnTLjUlyF2w==} - engines: {node: '>=v18'} + '@commitlint/config-validator@21.0.0': + resolution: {integrity: sha512-v0UplTYryNUB463X5WrelzKq5/qyYm9/iUNk38S7ZLnd56Uuk2T9awhYKGlgD2/4L5YuN2gsKkyy4EHpRPPz2Q==} + engines: {node: '>=22.12.0'} - '@commitlint/ensure@20.2.0': - resolution: {integrity: sha512-+8TgIGv89rOWyt3eC6lcR1H7hqChAKkpawytlq9P1i/HYugFRVqgoKJ8dhd89fMnlrQTLjA5E97/4sF09QwdoA==} - engines: {node: '>=v18'} + '@commitlint/ensure@21.0.0': + resolution: {integrity: sha512-n+OYs0Ws9GKC2WlmAeLNoPz9CUg6n/ZyYMkFF8rJ0aMn2kDTDTG0VqK/2Dco0EB4fhuF3JPIllJmU9/LKTl4aw==} + engines: {node: '>=22.12.0'} - '@commitlint/execute-rule@20.0.0': - resolution: {integrity: sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==} - engines: {node: '>=v18'} + '@commitlint/execute-rule@21.0.0': + resolution: {integrity: sha512-3OhTq2gQX1tEheMsbDNqxfcNHsAM6g9cub9plf05I9jCxtbNfn8Y+mhClKyUwhX4dbtmC4OLZ9i+HNmoL1aksA==} + engines: {node: '>=22.12.0'} - '@commitlint/format@20.2.0': - resolution: {integrity: sha512-PhNoLNhxpfIBlW/i90uZ3yG3hwSSYx7n4d9Yc+2FAorAHS0D9btYRK4ZZXX+Gm3W5tDtu911ow/eWRfcRVgNWg==} - engines: {node: '>=v18'} + '@commitlint/format@21.0.0': + resolution: {integrity: sha512-RTfGSrueEgofs1piqwi42U05d85wfxiMH2ncMCZnltx1XqPR3N2S48oACBtTy4xRAhWlf5XlHkK2RaDzEQu3dA==} + engines: {node: '>=22.12.0'} - '@commitlint/is-ignored@20.2.0': - resolution: {integrity: sha512-Lz0OGeZCo/QHUDLx5LmZc0EocwanneYJUM8z0bfWexArk62HKMLfLIodwXuKTO5y0s6ddXaTexrYHs7v96EOmw==} - engines: {node: '>=v18'} + '@commitlint/is-ignored@21.0.0': + resolution: {integrity: sha512-K3SaaOTVY9VKhge7vl0R3ng7GENRzJQ9MPV43Tu53kAwEgSx/E0HF4US3AcVqdvlvsDUbF2yXvED95dhela83w==} + engines: {node: '>=22.12.0'} - '@commitlint/lint@20.2.0': - resolution: {integrity: sha512-cQEEB+jlmyQbyiji/kmh8pUJSDeUmPiWq23kFV0EtW3eM+uAaMLMuoTMajbrtWYWQpPzOMDjYltQ8jxHeHgITg==} - engines: {node: '>=v18'} + '@commitlint/lint@21.0.0': + resolution: {integrity: sha512-dlUJA0Ka14R1YaR46JVRWE3m/8dOQAgE/D0heUfzYua5Jogtq/zzu2ITAIaB/u25DaKjtEO6kuvASzsFDyrPMw==} + engines: {node: '>=22.12.0'} - '@commitlint/load@20.2.0': - resolution: {integrity: sha512-iAK2GaBM8sPFTSwtagI67HrLKHIUxQc2BgpgNc/UMNme6LfmtHpIxQoN1TbP+X1iz58jq32HL1GbrFTCzcMi6g==} - engines: {node: '>=v18'} + '@commitlint/load@21.0.0': + resolution: {integrity: sha512-l0nBfO/20PKcJXHZqDIgh7kw/TWVVwn8zZJOkVGBK/ig/h328jBu9jK7OiDl2oZr5mLphmKGjYDR2ffEyb2lIA==} + engines: {node: '>=22.12.0'} - '@commitlint/message@20.0.0': - resolution: {integrity: sha512-gLX4YmKnZqSwkmSB9OckQUrI5VyXEYiv3J5JKZRxIp8jOQsWjZgHSG/OgEfMQBK9ibdclEdAyIPYggwXoFGXjQ==} - engines: {node: '>=v18'} + '@commitlint/message@21.0.0': + resolution: {integrity: sha512-+daU92JaOHhI2En9KcH+2mvZGJ6D4YSxb/32QDwqkOwSj1Vanjio8PbAqX7dneACdg6B7RgQ7i3mpyYZAws4nw==} + engines: {node: '>=22.12.0'} - '@commitlint/parse@20.2.0': - resolution: {integrity: sha512-LXStagGU1ivh07X7sM+hnEr4BvzFYn1iBJ6DRg2QsIN8lBfSzyvkUcVCDwok9Ia4PWiEgei5HQjju6xfJ1YaSQ==} - engines: {node: '>=v18'} + '@commitlint/parse@21.0.0': + resolution: {integrity: sha512-1dbvFBcQK79aTbpc2QCrgEDc6/MMkQ0Mdz4gGmYkN4AHMnAK9HesSewTHqGTrW5mALrMlYSgcWyvKjloY2w19A==} + engines: {node: '>=22.12.0'} - '@commitlint/read@20.2.0': - resolution: {integrity: sha512-+SjF9mxm5JCbe+8grOpXCXMMRzAnE0WWijhhtasdrpJoAFJYd5UgRTj/oCq5W3HJTwbvTOsijEJ0SUGImECD7Q==} - engines: {node: '>=v18'} + '@commitlint/read@21.0.0': + resolution: {integrity: sha512-8VKLKLl2vBSKoTMm1LwcySsyxrBeotnqcT5qJi9pPuPfqSapdAD870Ckgh79c41UFywL6kMqtiyY+kxtfcqZGg==} + engines: {node: '>=22.12.0'} - '@commitlint/resolve-extends@20.2.0': - resolution: {integrity: sha512-KVoLDi9BEuqeq+G0wRABn4azLRiCC22/YHR2aCquwx6bzCHAIN8hMt3Nuf1VFxq/c8ai6s8qBxE8+ZD4HeFTlQ==} - engines: {node: '>=v18'} + '@commitlint/resolve-extends@21.0.0': + resolution: {integrity: sha512-hrJYSZRpmecmSoxYrpuJ/1Q4J9JHt4AVVtr5/Ac6upLO/jJ1DnIm2AjD+38gru3KGOec4aHCVqETuWWLJhydWw==} + engines: {node: '>=22.12.0'} - '@commitlint/rules@20.2.0': - resolution: {integrity: sha512-27rHGpeAjnYl/A+qUUiYDa7Yn1WIjof/dFJjYW4gA1Ug+LUGa1P0AexzGZ5NBxTbAlmDgaxSZkLLxtLVqtg8PQ==} - engines: {node: '>=v18'} + '@commitlint/rules@21.0.0': + resolution: {integrity: sha512-NgQhX1qENA+rbrMw5KKyvVZpZG4D/0wgK8Z4INtcwKbfKtVDFMbn0oNc/Rs8wdyBPBj7ue8Lo/GllUL2Mqjwkg==} + engines: {node: '>=22.12.0'} - '@commitlint/to-lines@20.0.0': - resolution: {integrity: sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==} - engines: {node: '>=v18'} + '@commitlint/to-lines@21.0.0': + resolution: {integrity: sha512-qMwvrJK/x3dPcXsIAtQAMKV5Q0wTioyqyHKR06vVN4wmBF4cCrrLq5x81FDeY3Ba+GWgDt0/P3Zw/IHGM8lwgg==} + engines: {node: '>=22.12.0'} - '@commitlint/top-level@20.0.0': - resolution: {integrity: sha512-drXaPSP2EcopukrUXvUXmsQMu3Ey/FuJDc/5oiW4heoCfoE5BdLQyuc7veGeE3aoQaTVqZnh4D5WTWe2vefYKg==} - engines: {node: '>=v18'} + '@commitlint/top-level@21.0.0': + resolution: {integrity: sha512-8jPqyWZueuN4hU6/ArKVsZ6i8xWtjIrbzHEOaLaTGUfjhhbZNBfXef/DGjzxy55hAv3yFNxHLINfI1bCJ0/MzA==} + engines: {node: '>=22.12.0'} - '@commitlint/types@20.2.0': - resolution: {integrity: sha512-KTy0OqRDLR5y/zZMnizyx09z/rPlPC/zKhYgH8o/q6PuAjoQAKlRfY4zzv0M64yybQ//6//4H1n14pxaLZfUnA==} - engines: {node: '>=v18'} + '@commitlint/types@21.0.0': + resolution: {integrity: sha512-6nEz+M7I90iix4sviA8NLwskOuyt0M98KUU2aYgiKbn46jMSxUm1l2ACtzRd9ec+y38aKyJhW4Fp6NW0z35kJQ==} + engines: {node: '>=22.12.0'} - '@confio/ics23@0.6.8': - resolution: {integrity: sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==} - deprecated: Unmaintained. The codebase for this package was moved to https://github.com/cosmos/ics23 but then the JS implementation was removed in https://github.com/cosmos/ics23/pull/353. Please consult the maintainers of https://github.com/cosmos for further assistance. + '@conventional-changelog/git-client@2.7.0': + resolution: {integrity: sha512-j7A8/LBEQ+3rugMzPXoKYzyUPpw/0CBQCyvtTR7Lmu4olG4yRC/Tfkq79Mr3yuPs0SUitlO2HwGP3gitMJnRFw==} + engines: {node: '>=18'} + peerDependencies: + conventional-commits-filter: ^5.0.0 + conventional-commits-parser: ^6.4.0 + peerDependenciesMeta: + conventional-commits-filter: + optional: true + conventional-commits-parser: + optional: true '@cosmjs/amino@0.32.4': resolution: {integrity: sha512-zKYOt6hPy8obIFtLie/xtygCkH9ZROiQ12UHfKsOkWaZfPQUvVbtgmu6R4Kn1tFLI/SRkw7eqhaogmW/3NYu/Q==} - '@cosmjs/amino@0.33.1': - resolution: {integrity: sha512-WfWiBf2EbIWpwKG9AOcsIIkR717SY+JdlXM/SL/bI66BdrhniAF+/ZNis9Vo9HF6lP2UU5XrSmFA4snAvEgdrg==} + '@cosmjs/amino@0.36.2': + resolution: {integrity: sha512-r4yV1bhl412gwHGlyaUaJHIJnmldtyGsAwyz3oHHVxduiECj06Rv6wqeyLZfQa9W6hU+MlZwy7LabSUkkyGwjA==} - '@cosmjs/cosmwasm-stargate@0.32.4': - resolution: {integrity: sha512-Fuo9BGEiB+POJ5WeRyBGuhyKR1ordvxZGLPuPosFJOH9U0gKMgcjwKMCgAlWFkMlHaTB+tNdA8AifWiHrI7VgA==} + '@cosmjs/cosmwasm-stargate@0.36.2': + resolution: {integrity: sha512-BU7i/gpvOkghR7XOhI5yT/KJuq3Sqexge2LrU+sBG//vN2ZKDdbLmjwP0S1IMP7aD8IWJfgEM41qbzWEILoPxw==} '@cosmjs/crypto@0.32.4': resolution: {integrity: sha512-zicjGU051LF1V9v7bp8p7ovq+VyC91xlaHdsFOTo2oVry3KQikp8L/81RkXmUIT8FxMwdx1T7DmFwVQikcSDIw==} deprecated: This uses elliptic for cryptographic operations, which contains several security-relevant bugs. To what degree this affects your application is something you need to carefully investigate. See https://github.com/cosmos/cosmjs/issues/1708 for further pointers. Starting with version 0.34.0 the cryptographic library has been replaced. However, private keys might still be at risk. - '@cosmjs/crypto@0.33.1': - resolution: {integrity: sha512-U4kGIj/SNBzlb2FGgA0sMR0MapVgJUg8N+oIAiN5+vl4GZ3aefmoL1RDyTrFS/7HrB+M+MtHsxC0tvEu4ic/zA==} - deprecated: This uses elliptic for cryptographic operations, which contains several security-relevant bugs. To what degree this affects your application is something you need to carefully investigate. See https://github.com/cosmos/cosmjs/issues/1708 for further pointers. Starting with version 0.34.0 the cryptographic library has been replaced. However, private keys might still be at risk. + '@cosmjs/crypto@0.36.2': + resolution: {integrity: sha512-QL4NHtcqR6DEKIN200aLeR8gKO433K0f5avKV0TVFP/g12UtnEGSk79PJq5Gv1PLc9GtATHgLLQI/3D8TEe+ig==} '@cosmjs/encoding@0.32.4': resolution: {integrity: sha512-tjvaEy6ZGxJchiizzTn7HVRiyTg1i4CObRRaTRPknm5EalE13SV+TCHq38gIDfyUeden4fCuaBVEdBR5+ti7Hw==} - '@cosmjs/encoding@0.33.1': - resolution: {integrity: sha512-nuNxf29fUcQE14+1p//VVQDwd1iau5lhaW/7uMz7V2AH3GJbFJoJVaKvVyZvdFk+Cnu+s3wCqgq4gJkhRCJfKw==} + '@cosmjs/encoding@0.36.2': + resolution: {integrity: sha512-i3+P1EKYoLcONAsmpJPhDAc3Wh3ajZNRHt/hczi/JEQXmleTJLVzv2mXUyllM6Qa+B6ybbr3Z2lnEFa8L3yLqg==} - '@cosmjs/json-rpc@0.32.4': - resolution: {integrity: sha512-/jt4mBl7nYzfJ2J/VJ+r19c92mUKF0Lt0JxM3MXEJl7wlwW5haHAWtzRujHkyYMXOwIR+gBqT2S0vntXVBRyhQ==} + '@cosmjs/json-rpc@0.36.2': + resolution: {integrity: sha512-3IRamylHVCxBevXGlnIoWUdJCLsP5LwHbXYUsBnC9T8UttZ5oYRN5gDf6+2dQEPk+p9xOv2i8xrCwNWxo7675Q==} '@cosmjs/math@0.32.4': resolution: {integrity: sha512-++dqq2TJkoB8zsPVYCvrt88oJWsy1vMOuSOKcdlnXuOA/ASheTJuYy4+oZlTQ3Fr8eALDLGGPhJI02W2HyAQaw==} - '@cosmjs/math@0.33.1': - resolution: {integrity: sha512-ytGkWdKFCPiiBU5eqjHNd59djPpIsOjbr2CkNjlnI1Zmdj+HDkSoD9MUGpz9/RJvRir5IvsXqdE05x8EtoQkJA==} + '@cosmjs/math@0.36.2': + resolution: {integrity: sha512-uJZRzxqnBk3MgxFgeyUwLgUzWkAIcmznWSB/tgGCjGCnUNebzI+44dA3ncEDCMqQysi/MZ+cSwAcDU7IY2PFeA==} '@cosmjs/proto-signing@0.32.4': resolution: {integrity: sha512-QdyQDbezvdRI4xxSlyM1rSVBO2st5sqtbEIl3IX03uJ7YiZIQHyv6vaHVf1V4mapusCqguiHJzm4N4gsFdLBbQ==} - '@cosmjs/socket@0.32.4': - resolution: {integrity: sha512-davcyYziBhkzfXQTu1l5NrpDYv0K9GekZCC9apBRvL1dvMc9F/ygM7iemHjUA+z8tJkxKxrt/YPjJ6XNHzLrkw==} + '@cosmjs/proto-signing@0.36.2': + resolution: {integrity: sha512-dyZsgZBQgGkaE4cazHVX8GDwrRJVKUVDnrODkyFXVNbxMnm4t6nxpK1qwgY9GHlWUhck3Dh9NT3BoMbXiMYTZQ==} - '@cosmjs/stargate@0.32.4': - resolution: {integrity: sha512-usj08LxBSsPRq9sbpCeVdyLx2guEcOHfJS9mHGCLCXpdAPEIEQEtWLDpEUc0LEhWOx6+k/ChXTc5NpFkdrtGUQ==} + '@cosmjs/socket@0.36.2': + resolution: {integrity: sha512-Pb7JcTFWnq6yfY0IEejHrpSxNDJYcqjjAa1D29a6b/obk4qa4o3oIV5bIx6zAbdRq8uLoBfvWs0bHTNnVuBWJg==} - '@cosmjs/stream@0.32.4': - resolution: {integrity: sha512-Gih++NYHEiP+oyD4jNEUxU9antoC0pFSg+33Hpp0JlHwH0wXhtD3OOKnzSfDB7OIoEbrzLJUpEjOgpCp5Z+W3A==} + '@cosmjs/stargate@0.36.2': + resolution: {integrity: sha512-vnNK4dXF+s2v1aKPfYxKVrvXPcnBQb8rPoBScnTpPWnRt3XXbLw7Oo6fTQQWwKYNKQzi6DOApeEB+bCYcaPAAw==} - '@cosmjs/tendermint-rpc@0.32.4': - resolution: {integrity: sha512-MWvUUno+4bCb/LmlMIErLypXxy7ckUuzEmpufYYYd9wgbdCXaTaO08SZzyFM5PI8UJ/0S2AmUrgWhldlbxO8mw==} + '@cosmjs/stream@0.36.2': + resolution: {integrity: sha512-FlZx2Buovem837LdTLPkPFcxzuQ7zierAqSXwMPr/MG3k+qMxHNfLFTTCXMNWQ4ZlbYedud8ZqCL3/HKdS5mig==} + + '@cosmjs/tendermint-rpc@0.36.2': + resolution: {integrity: sha512-76Z99C1NVf/Yv/1bWU0wul8MhRwVdqiZxqU5bcHqvJLoQ2nKUfGpSSYRdbMHfZ63J8ryRqQ95uPvPTfrBb+agw==} '@cosmjs/utils@0.32.4': resolution: {integrity: sha512-D1Yc+Zy8oL/hkUkFUL/bwxvuDBzRGpc4cF7/SkdhxX4iHpSLgdOuTt1mhCh9+kl6NQREy9t7SYZ6xeW5gFe60w==} - '@cosmjs/utils@0.33.1': - resolution: {integrity: sha512-UnLHDY6KMmC+UXf3Ufyh+onE19xzEXjT4VZ504Acmk4PXxqyvG4cCPprlKUFnGUX7f0z8Or9MAOHXBx41uHBcg==} + '@cosmjs/utils@0.36.2': + resolution: {integrity: sha512-OOr2HU/Ph+/GI1Fx2UCf3LOyX9YTCP51d2HitTOjjEJRYnkfKXP3lMBl1FZo5QaFWxnfuBc+Cj+cSoiQUJRyzQ==} - '@cosmos-kit/core@2.16.0': - resolution: {integrity: sha512-bhN3Fs4TcAoasdYMVaYHbpJWo8ZUhmCRc49t1Nc5UJHHu9VGs9NSnSk2NoprLA+kciIt+Y+RUXZLnt588nkG3Q==} + '@cosmos-kit/core@2.18.1': + resolution: {integrity: sha512-LIOPHJevy3kuaE/U6gAsIAb+HOpEn8zeqrp3nGJdqyTR1oYOyaGDFZUfjMph1wXTJ+vgu7Loix49TIgFCxDVXw==} - '@cosmos-kit/keplr-extension@2.15.0': - resolution: {integrity: sha512-jaB2mEfy4bamnZL+RYonfrsAecoVNrk1e+PsTxPNNJh8EFAohRTY6OG4Q6ZZGy8zIQuUNTGdFTIt2T03o7o0ig==} + '@cosmos-kit/keplr-extension@2.17.1': + resolution: {integrity: sha512-81fxThFG4m4Am4cUaNVYo99nF0KBfWN+Zz6Kmgskff7FBdOlh8wGk0kEHKExX7GOnpTV2xK50lf3cVJ1ZQTYKA==} peerDependencies: '@cosmjs/amino': '>=0.32.3' '@cosmjs/proto-signing': '>=0.32.3' - '@cosmos-kit/keplr-mobile@2.15.0': - resolution: {integrity: sha512-3p8ZjPfvaUeOJEi0rTUtRrf0yOHhsSwokglaBNUcLOkk7MtCCVsoTnPpYWfmchJttqLrtWCs1ehCVrsYXwTmTg==} + '@cosmos-kit/keplr-mobile@2.17.1': + resolution: {integrity: sha512-QyxgnoVT5GMAgTmGNRhMuM/mxBBY/6CCh2ZRGh02A2rO7wqwxdAzBN27r0YDtkaKppWVPY6mxSIoTl+6fraOXw==} peerDependencies: '@cosmjs/amino': '>=0.32.3' '@cosmjs/proto-signing': '>=0.32.3' - '@cosmos-kit/keplr@2.15.0': - resolution: {integrity: sha512-wXMvk6bgtSG86w42kym9q1iaA1FQu1u4/gMvcb1/DzrgCQ5q5Oru7ysmtKLYEZcY6cjBDqEQsBccQggNmR1oyA==} + '@cosmos-kit/keplr@2.17.1': + resolution: {integrity: sha512-szVutDVDCWE4bCUWNo6M49OVd1ta4opuc896KXBGPOwndSuw1si95n488zpo+ang3lRZ0IyaqpLVkDHdQ9lqSg==} - '@cosmos-kit/leap-extension@2.15.0': - resolution: {integrity: sha512-HNbO9qDu2wKHbY5XG/EMVAHHX8arfiIl4EiLTHgrvHMdLnwg5wAmy2lSTnybuEwpTttIvUjN4AvgcsnQoJhb+Q==} + '@cosmos-kit/leap-extension@2.17.1': + resolution: {integrity: sha512-LXvCSAvRmAexnoqa9iYaKa8bGwIoHKIOl/YznBFBiWrkdjwOwabMXhOJ/UN+sZzhu0syBsinPoZVB+2amLsOjQ==} peerDependencies: '@cosmjs/amino': '>=0.32.3' '@cosmjs/proto-signing': '>=0.32.3' - '@cosmos-kit/leap-metamask-cosmos-snap@0.15.0': - resolution: {integrity: sha512-GQSqv2rSgJ+OHR0S/TKKczoPxeBw41aMzhW9m3hjHqGM1SP8AuoMi/1032Ul678gcaznDZRee7D8ANk4AGh02g==} + '@cosmos-kit/leap-metamask-cosmos-snap@0.17.1': + resolution: {integrity: sha512-/DSziXSePt72fYsc1/UIt64bYLSx/bjelGZPeWmJFDwNRjU8FUdvdvZxQHrLOLCwKFfzYgyB1Vvc4MPprM7kMw==} peerDependencies: '@cosmjs/amino': '>=0.32.3' '@cosmjs/proto-signing': '>=0.32.3' cosmjs-types: '>=0.9.0' - '@cosmos-kit/leap-mobile@2.14.0': - resolution: {integrity: sha512-ZBndYzl2rymuhw42HQuJ+n+qAEzcy+ISV026hEPG5YuKlOcd4iokXUOFUC8tLaVRSiiGJrLn9Sh/+XxUWbx5eA==} + '@cosmos-kit/leap-mobile@2.16.1': + resolution: {integrity: sha512-NTmmT6kj68CYmQIup+M+uBichyH9B4R07gtFpfXI0AfyjFLRuEJrrhkEYt5hAMGmxOj21p7vbwjLtfPXb29a5w==} - '@cosmos-kit/leap@2.15.0': - resolution: {integrity: sha512-QWNle7CGYJnM92iPq8gvk9E2njXyLxoYvPdkhO2LAFQOMqiW4FzZxBPlHQ/3XPprI++FlDt8kk1mBmvf+9H+jg==} + '@cosmos-kit/leap@2.17.1': + resolution: {integrity: sha512-8L5SpANb3PVGUmk6ScnyoDbrkwmQ8GPuGvM9/9FzJud8k1B73CXQ1KsGLNjFK/FSteVQbN2n9+11K9UYEdoqPg==} - '@cosmos-kit/walletconnect@2.13.0': - resolution: {integrity: sha512-sW8YG7o8wylsZF7IMTLPArBo29ccwb8PKdKYQZdGd4/nU3Lx+ELL/2Kjt3Eeav4YW5LmyrkOgFi0t60958YDGg==} + '@cosmos-kit/walletconnect@2.15.1': + resolution: {integrity: sha512-KinnhgLbrxDpP3Teic8dZaDkD3NNHBTM341B89ua5MCz63T7bqPi6KeViHQZZeL89/hA4W4V/3ZrMg4tkdRHog==} peerDependencies: '@cosmjs/amino': '>=0.32.3' + '@cosmjs/proto-signing': '>=0.32.3' '@walletconnect/types': 2.11.0 - '@csstools/color-helpers@5.1.0': - resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} - engines: {node: '>=18'} + '@csstools/color-helpers@6.0.2': + resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} + engines: {node: '>=20.19.0'} - '@csstools/css-calc@2.1.4': - resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} - engines: {node: '>=18'} + '@csstools/css-calc@3.2.0': + resolution: {integrity: sha512-bR9e6o2BDB12jzN/gIbjHa5wLJ4UjD1CB9pM7ehlc0ddk6EBz+yYS1EV2MF55/HUxrHcB/hehAyt5vhsA3hx7w==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-color-parser@3.1.0': - resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} - engines: {node: '>=18'} + '@csstools/css-color-parser@4.1.0': + resolution: {integrity: sha512-U0KhLYmy2GVj6q4T3WaAe6NPuFYCPQoE3b0dRGxejWDgcPp8TP7S5rVdM5ZrFaqu4N67X8YaPBw14dQSYx3IyQ==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-parser-algorithms@3.0.5': - resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} - engines: {node: '>=18'} + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.0.14': - resolution: {integrity: sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q==} - engines: {node: '>=18'} + '@csstools/css-syntax-patches-for-csstree@1.1.3': + resolution: {integrity: sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg==} peerDependencies: - postcss: ^8.4 + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true - '@csstools/css-tokenizer@3.0.4': - resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} - engines: {node: '>=18'} + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} - '@dao-dao/cosmiframe@1.0.0-rc.1': - resolution: {integrity: sha512-XftJPwbqgS1RWg9SUNBI58vTGnjINZ995OYRwDuUZ6CsuENS2DifAzqgzDgdac+0o5Hqvy/5Aq+HN1Jl/dptTw==} + '@dao-dao/cosmiframe@1.0.0': + resolution: {integrity: sha512-xPaD9MV1tUueYl+VIJD7CEi4+MCdcgo4E1R9w8XplKlM7pvmBaSBeTz88HwITpKxWKI+DWoJngeCWu5/8oqLJQ==} peerDependencies: '@cosmjs/amino': '>= ^0.32' '@cosmjs/proto-signing': '>= ^0.32' @@ -1129,20 +1336,34 @@ packages: resolution: {integrity: sha512-NStEiNulgpo8s1NQvvr/vVUaA31eYSkquOolxritMBiLCdJBM1rgNtOdQ1S2JfrDnn3vrU/UVkCE9ZHIpj5AzQ==} engines: {node: '>=18'} - '@ecies/ciphers@0.2.5': - resolution: {integrity: sha512-GalEZH4JgOMHYYcYmVqnFirFsjZHeoGMDt9IxEnM9F7GRUUyUksJ7Ou53L83WHJq3RWKD3AcBpo0iQh0oMpf8A==} - engines: {bun: '>=1', deno: '>=2', node: '>=16'} + '@effect/openapi-generator@4.0.0-beta.68': + resolution: {integrity: sha512-+rWHNxb5OGei5A03ThiZKxQt8Q3NCPLIB+Gl5AinKW53gZWJ+eE77m1wrOYOyAQ7Zm8EGkxL1tTYDDdDimeJ6w==} + hasBin: true + peerDependencies: + '@effect/platform-node': ^4.0.0-beta.68 + effect: ^4.0.0-beta.68 + + '@effect/platform-node-shared@4.0.0-beta.68': + resolution: {integrity: sha512-a6q/Rid2CQQBSoTIhBnT2oCozeaEvx5DXreSdT4jbvxPSC0j2l0EqcYdHgvEGDqvhocIAezgmSQbcHNcnyDg8w==} + engines: {node: '>=18.0.0'} + peerDependencies: + effect: ^4.0.0-beta.68 + + '@effect/platform-node@4.0.0-beta.68': + resolution: {integrity: sha512-q2WakGBfZ5wIg9WdL4flbIwxC5TNFq1/qroT4HRT9yOl19dLg0khd2LE9ewOybOPrTQHV3PUyV3Sx6Y3eMYTWQ==} + engines: {node: '>=18.0.0'} peerDependencies: - '@noble/ciphers': ^1.0.0 + effect: ^4.0.0-beta.68 + ioredis: ^5.7.0 - '@emnapi/core@1.7.1': - resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} - '@emnapi/runtime@1.7.1': - resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} - '@emnapi/wasi-threads@1.1.0': - resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} '@emotion/hash@0.9.2': resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} @@ -1156,23 +1377,17 @@ packages: '@emurgo/cardano-serialization-lib-nodejs@13.2.0': resolution: {integrity: sha512-Bz1zLGEqBQ0BVkqt1OgMxdBOE3BdUWUd7Ly9Ecr/aUwkA8AV1w1XzBMe4xblmJHnB1XXNlPH4SraXCvO+q0Mig==} - '@esbuild/aix-ppc64@0.25.12': - resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.27.0': resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + '@esbuild/aix-ppc64@0.28.0': + resolution: {integrity: sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==} engines: {node: '>=18'} - cpu: [arm64] - os: [android] + cpu: [ppc64] + os: [aix] '@esbuild/android-arm64@0.27.0': resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} @@ -1180,10 +1395,10 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + '@esbuild/android-arm64@0.28.0': + resolution: {integrity: sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==} engines: {node: '>=18'} - cpu: [arm] + cpu: [arm64] os: [android] '@esbuild/android-arm@0.27.0': @@ -1192,10 +1407,10 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.12': - resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + '@esbuild/android-arm@0.28.0': + resolution: {integrity: sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==} engines: {node: '>=18'} - cpu: [x64] + cpu: [arm] os: [android] '@esbuild/android-x64@0.27.0': @@ -1204,11 +1419,11 @@ packages: cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.12': - resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + '@esbuild/android-x64@0.28.0': + resolution: {integrity: sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==} engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] + cpu: [x64] + os: [android] '@esbuild/darwin-arm64@0.27.0': resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} @@ -1216,10 +1431,10 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.12': - resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + '@esbuild/darwin-arm64@0.28.0': + resolution: {integrity: sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==} engines: {node: '>=18'} - cpu: [x64] + cpu: [arm64] os: [darwin] '@esbuild/darwin-x64@0.27.0': @@ -1228,11 +1443,11 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.12': - resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + '@esbuild/darwin-x64@0.28.0': + resolution: {integrity: sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==} engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] + cpu: [x64] + os: [darwin] '@esbuild/freebsd-arm64@0.27.0': resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} @@ -1240,10 +1455,10 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.12': - resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + '@esbuild/freebsd-arm64@0.28.0': + resolution: {integrity: sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==} engines: {node: '>=18'} - cpu: [x64] + cpu: [arm64] os: [freebsd] '@esbuild/freebsd-x64@0.27.0': @@ -1252,11 +1467,11 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + '@esbuild/freebsd-x64@0.28.0': + resolution: {integrity: sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==} engines: {node: '>=18'} - cpu: [arm64] - os: [linux] + cpu: [x64] + os: [freebsd] '@esbuild/linux-arm64@0.27.0': resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} @@ -1264,10 +1479,10 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + '@esbuild/linux-arm64@0.28.0': + resolution: {integrity: sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==} engines: {node: '>=18'} - cpu: [arm] + cpu: [arm64] os: [linux] '@esbuild/linux-arm@0.27.0': @@ -1276,10 +1491,10 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.12': - resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + '@esbuild/linux-arm@0.28.0': + resolution: {integrity: sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==} engines: {node: '>=18'} - cpu: [ia32] + cpu: [arm] os: [linux] '@esbuild/linux-ia32@0.27.0': @@ -1288,10 +1503,10 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.12': - resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + '@esbuild/linux-ia32@0.28.0': + resolution: {integrity: sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==} engines: {node: '>=18'} - cpu: [loong64] + cpu: [ia32] os: [linux] '@esbuild/linux-loong64@0.27.0': @@ -1300,10 +1515,10 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.12': - resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + '@esbuild/linux-loong64@0.28.0': + resolution: {integrity: sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==} engines: {node: '>=18'} - cpu: [mips64el] + cpu: [loong64] os: [linux] '@esbuild/linux-mips64el@0.27.0': @@ -1312,10 +1527,10 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.12': - resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + '@esbuild/linux-mips64el@0.28.0': + resolution: {integrity: sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==} engines: {node: '>=18'} - cpu: [ppc64] + cpu: [mips64el] os: [linux] '@esbuild/linux-ppc64@0.27.0': @@ -1324,10 +1539,10 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.12': - resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + '@esbuild/linux-ppc64@0.28.0': + resolution: {integrity: sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==} engines: {node: '>=18'} - cpu: [riscv64] + cpu: [ppc64] os: [linux] '@esbuild/linux-riscv64@0.27.0': @@ -1336,10 +1551,10 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.12': - resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + '@esbuild/linux-riscv64@0.28.0': + resolution: {integrity: sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==} engines: {node: '>=18'} - cpu: [s390x] + cpu: [riscv64] os: [linux] '@esbuild/linux-s390x@0.27.0': @@ -1348,10 +1563,10 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.12': - resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + '@esbuild/linux-s390x@0.28.0': + resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==} engines: {node: '>=18'} - cpu: [x64] + cpu: [s390x] os: [linux] '@esbuild/linux-x64@0.27.0': @@ -1360,11 +1575,11 @@ packages: cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.12': - resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + '@esbuild/linux-x64@0.28.0': + resolution: {integrity: sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==} engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] + cpu: [x64] + os: [linux] '@esbuild/netbsd-arm64@0.27.0': resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} @@ -1372,10 +1587,10 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.12': - resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + '@esbuild/netbsd-arm64@0.28.0': + resolution: {integrity: sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==} engines: {node: '>=18'} - cpu: [x64] + cpu: [arm64] os: [netbsd] '@esbuild/netbsd-x64@0.27.0': @@ -1384,11 +1599,11 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.12': - resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + '@esbuild/netbsd-x64@0.28.0': + resolution: {integrity: sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==} engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] + cpu: [x64] + os: [netbsd] '@esbuild/openbsd-arm64@0.27.0': resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} @@ -1396,10 +1611,10 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.12': - resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + '@esbuild/openbsd-arm64@0.28.0': + resolution: {integrity: sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==} engines: {node: '>=18'} - cpu: [x64] + cpu: [arm64] os: [openbsd] '@esbuild/openbsd-x64@0.27.0': @@ -1408,11 +1623,11 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.12': - resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + '@esbuild/openbsd-x64@0.28.0': + resolution: {integrity: sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==} engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] + cpu: [x64] + os: [openbsd] '@esbuild/openharmony-arm64@0.27.0': resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} @@ -1420,11 +1635,11 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.12': - resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + '@esbuild/openharmony-arm64@0.28.0': + resolution: {integrity: sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==} engines: {node: '>=18'} - cpu: [x64] - os: [sunos] + cpu: [arm64] + os: [openharmony] '@esbuild/sunos-x64@0.27.0': resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} @@ -1432,11 +1647,11 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.12': - resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + '@esbuild/sunos-x64@0.28.0': + resolution: {integrity: sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==} engines: {node: '>=18'} - cpu: [arm64] - os: [win32] + cpu: [x64] + os: [sunos] '@esbuild/win32-arm64@0.27.0': resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} @@ -1444,10 +1659,10 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.12': - resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + '@esbuild/win32-arm64@0.28.0': + resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==} engines: {node: '>=18'} - cpu: [ia32] + cpu: [arm64] os: [win32] '@esbuild/win32-ia32@0.27.0': @@ -1456,10 +1671,10 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.12': - resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + '@esbuild/win32-ia32@0.28.0': + resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==} engines: {node: '>=18'} - cpu: [x64] + cpu: [ia32] os: [win32] '@esbuild/win32-x64@0.27.0': @@ -1468,20 +1683,18 @@ packages: cpu: [x64] os: [win32] - '@ethereumjs/common@10.1.0': - resolution: {integrity: sha512-zIHCy0i2LFmMDp+QkENyoPGxcoD3QzeNVhx6/vE4nJk4uWGNXzO8xJ2UC4gtGW4UJTAOXja8Z1yZMVeRc2/+Ew==} - - '@ethereumjs/common@3.2.0': - resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} - - '@ethereumjs/rlp@10.1.0': - resolution: {integrity: sha512-r67BJbwilammAqYI4B5okA66cNdTlFzeWxPNJOolKV52ZS/flo0tUBf4x4gxWXBgh48OgsdFV1Qp5pRoSe8IhQ==} + '@esbuild/win32-x64@0.28.0': + resolution: {integrity: sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==} engines: {node: '>=18'} - hasBin: true + cpu: [x64] + os: [win32] - '@ethereumjs/rlp@4.0.1': - resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} - engines: {node: '>=14'} + '@ethereumjs/common@10.1.1': + resolution: {integrity: sha512-NefPzPlrJ9w+NWVe06P+sHZQU98E1AEU9vhiHJEVT2wEcNBC1YX6hON9+smrfbn86C4U1pb2zbvjhkF+n/LKBw==} + + '@ethereumjs/rlp@10.1.1': + resolution: {integrity: sha512-jbnWTEwcpoY+gE0r+wxfDG9zgiu54DcTcwnc9sX3DsqKR4l5K7x2V8mQL3Et6hURa4DuT9g7z6ukwpBLFchszg==} + engines: {node: '>=20'} hasBin: true '@ethereumjs/rlp@5.0.2': @@ -1489,21 +1702,13 @@ packages: engines: {node: '>=18'} hasBin: true - '@ethereumjs/tx@10.1.0': - resolution: {integrity: sha512-svG6pyzUZDpunafszf2BaolA6Izuvo8ZTIETIegpKxAXYudV1hmzPQDdSI+d8nHCFyQfEFbQ6tfUq95lNArmmg==} - engines: {node: '>=18'} - - '@ethereumjs/tx@4.2.0': - resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} - engines: {node: '>=14'} - - '@ethereumjs/util@10.1.0': - resolution: {integrity: sha512-GGTCkRu1kWXbz2JoUnIYtJBOoA9T5akzsYa91Bh+DZQ3Cj4qXj3hkNU0Rx6wZlbcmkmhQfrjZfVt52eJO/y2nA==} - engines: {node: '>=18'} + '@ethereumjs/tx@10.1.1': + resolution: {integrity: sha512-Kz8GWIKQjEQB60ko9hsYDX3rZMHZZOTcmm6OFl855Lu3padVnf5ZactUKM6nmWPsumHED5bWDjO32novZd1zyw==} + engines: {node: '>=20'} - '@ethereumjs/util@8.1.0': - resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} - engines: {node: '>=14'} + '@ethereumjs/util@10.1.1': + resolution: {integrity: sha512-r2EhaeEmLZXVs1dT2HJFQysAkr63ZWATu/9tgYSp1IlvjvwyC++DLg5kCDwMM49HBq3sOAhrPnXkoqf9DV2gbw==} + engines: {node: '>=20'} '@ethereumjs/util@9.1.0': resolution: {integrity: sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog==} @@ -1527,8 +1732,11 @@ packages: '@ethersproject/rlp@5.8.0': resolution: {integrity: sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==} - '@faker-js/faker@10.1.0': - resolution: {integrity: sha512-C3mrr3b5dRVlKPJdfrAXS8+dq+rq8Qm5SNRazca0JKgw1HQERFmrVb0towvMmw5uu8hHKNiQasMaR/tydf3Zsg==} + '@exodus/schemasafe@1.3.0': + resolution: {integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==} + + '@faker-js/faker@10.4.0': + resolution: {integrity: sha512-sDBWI3yLy8EcDzgobvJTWq1MJYzAkQdpjXuPukga9wXonhpMRvd1Izuo2Qgwey2OiEoRIBr35RMU9HJRoOHzpw==} engines: {node: ^20.19.0 || ^22.13.0 || ^23.5.0 || >=24.0.0, npm: '>=10'} '@fivebinaries/coin-selection@3.0.0': @@ -1561,11 +1769,6 @@ packages: '@fractalwagmi/solana-wallet-adapter@0.1.1': resolution: {integrity: sha512-oTZLEuD+zLKXyhZC5tDRMPKPj8iaxKLxXiCjqRfOo4xmSbS2izGRWLJbKMYYsJysn/OI3UJ3P6CWP8WUWi0dZg==} - '@gemini-wallet/core@0.3.2': - resolution: {integrity: sha512-Z4aHi3ECFf5oWYWM3F1rW83GJfB9OvhBYPTmb5q+VyK3uvzvS48lwo+jwh2eOoCRWEuT/crpb9Vwp2QaS5JqgQ==} - peerDependencies: - viem: '>=2.0.0' - '@harmoniclabs/bigint-utils@1.0.0': resolution: {integrity: sha512-OhZMHcdtH2hHKMlxWFHf71PmKHdoi9ARpjS9mUu0/cd8VWDDjT7VQoQwC5NN/68iyO4O5Dojrvrp9tjG5BDABA==} @@ -1609,8 +1812,8 @@ packages: '@harmoniclabs/pair': ^1.0.0 '@harmoniclabs/plutus-data': ^1.2.4 - '@img/colour@1.0.0': - resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + '@img/colour@1.1.0': + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} '@img/sharp-darwin-arm64@0.34.5': @@ -1762,50 +1965,44 @@ packages: cpu: [x64] os: [win32] - '@inquirer/ansi@1.0.2': - resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} - engines: {node: '>=18'} - - '@inquirer/confirm@5.1.21': - resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true + '@inquirer/ansi@2.0.5': + resolution: {integrity: sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} - '@inquirer/core@10.3.2': - resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} - engines: {node: '>=18'} + '@inquirer/confirm@6.0.13': + resolution: {integrity: sha512-wkGPC7yJ5WJk1DJ5SX7fzk+gfj4BM8cf5dDDi71B/551xHrdsZVRJOC0WyikXd0pEsb/9cLniuE4atbsMqmFkw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/external-editor@1.0.3': - resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} - engines: {node: '>=18'} + '@inquirer/core@11.1.10': + resolution: {integrity: sha512-a4Q5BXHQAHa9eO202sTaFCHFYVB3x5fauDuThEAdZ9gfn76pSxiKU7wWcEH0N1O0XmQvNfQNU6QXpiRxmYQx+A==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/figures@1.0.15': - resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} - engines: {node: '>=18'} + '@inquirer/figures@2.0.5': + resolution: {integrity: sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} - '@inquirer/type@3.0.10': - resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} - engines: {node: '>=18'} + '@inquirer/type@4.0.5': + resolution: {integrity: sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true + '@ioredis/commands@1.5.1': + resolution: {integrity: sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==} + '@isaacs/ttlcache@1.4.1': resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} engines: {node: '>=12'} @@ -1814,26 +2011,46 @@ packages: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + '@istanbuljs/schema@0.1.6': + resolution: {integrity: sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==} engines: {node: '>=8'} '@jest/create-cache-key-function@29.7.0': resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/diff-sequences@30.4.0': + resolution: {integrity: sha512-zOpzlfUs45l6u7jm39qr87JCHUDsaeCtvL+kQe/Vn9jSnRB4/5IPXISm0h9I1vZW/o00Kn4UTJ2MOlhnUGwv3g==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/environment@29.7.0': resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect-utils@30.4.1': + resolution: {integrity: sha512-ZBn5CglH8fBsQsvs4VWNzD4aWfUYks+IdOOQU3MEK71ol/BcVm+P+rtb1KpiFBpSWSCE27uOahyyf1vfqOVbcQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/fake-timers@29.7.0': resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/get-type@30.1.0': + resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/pattern@30.4.0': + resolution: {integrity: sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/schemas@29.6.3': resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/schemas@30.4.1': + resolution: {integrity: sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/transform@29.7.0': resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1842,6 +2059,10 @@ packages: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/types@30.4.1': + resolution: {integrity: sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1873,39 +2094,39 @@ packages: '@keplr-wallet/proto-types@0.12.28': resolution: {integrity: sha512-ukti/eCTltPUP64jxtk5TjtwJogyfKPqlBIT3KGUCGzBLIPeYMsffL5w5aoHsMjINzOITjYqzXyEF8LTIK/fmw==} - '@keplr-wallet/provider-extension@0.12.209': - resolution: {integrity: sha512-28Jn9WbGYRTBm+mcr3FH4qx2ZIRrxVz/zMS2xtbDvSABYhtF4L7xkXeROp2/ckstL4byw9TxlI9bQadSNXteew==} + '@keplr-wallet/provider-extension@0.12.313': + resolution: {integrity: sha512-ffIXfUiZUfakEzcn1cE6gcnUs3p8IDRpopb1Xu87W+8aGVKv8HCDReIesE/jmJ6cj2TZc11BjKh4EdXKCscX2w==} peerDependencies: - starknet: ^6 + starknet: ^8 - '@keplr-wallet/provider@0.12.209': - resolution: {integrity: sha512-+5YAXr5WFuzNDmHCX+swhhvLRVOGiY/81hgoq9/ZErEiP2BPEiU0NMFf+X/u7WmeYhVk3vOqRlW3VRtPPRhYnQ==} + '@keplr-wallet/provider@0.12.313': + resolution: {integrity: sha512-hZP0Z4TX/1H9XY/KkRoE9vGaYHVdiF0xTVRS47LoIkrl0hplc5M40q7bcfO7qePDoNp32FMxsRw1fHnDzKPVUQ==} peerDependencies: - starknet: ^6 + starknet: ^8 - '@keplr-wallet/router@0.12.209': - resolution: {integrity: sha512-2wfNJxlDvnviY6YXe/3bqH7fNvOZuvU+8KjEzd93r6ek51+vFIy/3uy2elUMbcmpWeb0KHMEY1CweiXPoZVmsw==} + '@keplr-wallet/router@0.12.313': + resolution: {integrity: sha512-MofZchl2fhpAEzwxPnwkeEPQ0VXZho2A3vYR6gj0VIbfTOXcL1QpZuTOzCkGTN63LehhII/pRnQMhs5a1aXwYg==} '@keplr-wallet/simple-fetch@0.12.28': resolution: {integrity: sha512-T2CiKS2B5n0ZA7CWw0CA6qIAH0XYI1siE50MP+i+V0ZniCGBeL+BMcDw64vFJUcEH+1L5X4sDAzV37fQxGwllA==} - '@keplr-wallet/types@0.12.209': - resolution: {integrity: sha512-e1ingWKjzkmWn4GP7LBqv9oN4CK80IpROaCfZuoApC6D/gsrNaOBygX71agTLu5eWcED0M2dVBWh3HPQMcdgWA==} - peerDependencies: - starknet: ^6 - '@keplr-wallet/types@0.12.28': resolution: {integrity: sha512-EcM9d46hYDm3AO4lf4GUbTSLRySONtTmhKb7p88q56OQOgJN3MMjRacEo2p9jX9gpPe7gRIjMUalhAfUiFpZoQ==} + '@keplr-wallet/types@0.12.313': + resolution: {integrity: sha512-of3e8ISp8h9skE6NXHvaj7yKoNLhVkSdbFgcjSKH6JGg584zSIRrlyawjbNg3JI1kqi3MiuuOrFQZ+SOztGK9Q==} + peerDependencies: + starknet: ^8 + '@keplr-wallet/unit@0.12.28': resolution: {integrity: sha512-kpXigHDBJGOmhtPkv9hqsQid9zkFo7OQPeKgO2n8GUlOINIXW6kWG5LXYTi/Yg9Uiw1CQF69gFMuZCJ8IzVHlA==} - '@keplr-wallet/wc-client@0.12.209': - resolution: {integrity: sha512-6DpiJOtww4d9diRRRoRAszlJm6+ByRzC3uxth1M+C6JQVSllz3yztNMczcOtNqpoiShXuGdFFkBllVwABIp45w==} + '@keplr-wallet/wc-client@0.12.313': + resolution: {integrity: sha512-lXWv3qN9Z2JIa7Z+O0QUMEau4bog3ZAAwGUt0QfMfKKD9QySDvu4K6H7SwTRe2Br/RlOWS2LbLG8QxNUMu9LCw==} peerDependencies: '@walletconnect/sign-client': ^2 '@walletconnect/types': ^2 - starknet: ^6 + starknet: ^8 '@keystonehq/alias-sampling@0.1.2': resolution: {integrity: sha512-5ukLB3bcgltgaFfQfYKYwHDUbwHicekYo53fSEa7xhVkAEqsA74kxdIwoBIURmGUtXe3EVIRm4SYlgcrt2Ri0w==} @@ -1916,8 +2137,8 @@ packages: '@keystonehq/bc-ur-registry@0.5.4': resolution: {integrity: sha512-z7bZe10I5k0zz9znmDTXh+o3Rzb5XsRVpwAzexubOaLxVdZ0F7aMbe2LoEsw766Hpox/7zARi7UGmLz5C8BAzA==} - '@keystonehq/bc-ur-registry@0.7.0': - resolution: {integrity: sha512-E6NUd6Y+YYM+IcYGOEXfO9+MU1s63Qjm8brtHftvNhxbdXhGtTYIsa4FQmqZ6q34q91bMkMqUQFsQYPmIxcxfg==} + '@keystonehq/bc-ur-registry@0.7.1': + resolution: {integrity: sha512-6eVIjNt/P+BmuwcYccbPYVS85473SFNplkqWF/Vb3ePCzLX00tn0WZBO1FGpS4X4nfXtceTfvUeNvQKoTGtXrw==} '@keystonehq/sdk@0.19.2': resolution: {integrity: sha512-ilA7xAhPKvpHWlxjzv3hjMehD6IKYda4C1TeG2/DhFgX9VSffzv77Eebf8kVwzPLdYV4LjX1KQ2ZDFoN1MsSFQ==} @@ -1928,84 +2149,81 @@ packages: '@keystonehq/sol-keyring@0.20.0': resolution: {integrity: sha512-UBeMlecybTDQaFMI951LBEVRyZarqKHOcwWqqvphV+x7WquYz0SZ/wf/PhizV0MWoGTQwt2m5aqROzksi6svqw==} - '@kurkle/color@0.3.4': - resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==} - '@leapwallet/cosmos-snap-provider@0.1.26': resolution: {integrity: sha512-KqT4OTECINPZohosLkAzdYotzV5YYJwzg2r/GKKMv3ndIuiqom/9WCaEs9W3KzPaRe69rOZpjbFmcu0gB4PSww==} '@ledgerhq/devices@6.27.1': resolution: {integrity: sha512-jX++oy89jtv7Dp2X6gwt3MMkoajel80JFWcdc0HCouwDsV1mVJ3SQdwl/bQU0zd8HI6KebvUP95QTwbQLLK/RQ==} - '@ledgerhq/devices@8.5.1': - resolution: {integrity: sha512-oW75YQQiP2muHveXTuwSAze6CBxJ7jOYILhFiJbsVzmgLPVqtdw4s0bJJlOBft4Aup67yNAjboFCIU7kTYQBFg==} + '@ledgerhq/devices@8.14.2': + resolution: {integrity: sha512-T3pnfrsQEC/eJU0XHIqWI6qww+CL1k3NumR2XGWlMz8lVpoZ9HhcuGoCkMevp+8SWmymgyNIIFue3jlNA5KiMw==} + + '@ledgerhq/devices@8.5.0': + resolution: {integrity: sha512-zDB6Pdk6NYYbYis8cWoLLkL9k/IvjhC3hkuuz2lhpJ2AxIs3/PDMUKoyK4DpjPtRyKk1W1lwsnpc6J1i87r4/Q==} '@ledgerhq/devices@8.7.0': resolution: {integrity: sha512-3pSOULPUhClk2oOxa6UnoyXW8+05FK7r6cpq2WiTey4kyIUjmIraO7AX9lhz9IU73dGVtBMdU+NCPPO2RYJaTQ==} - '@ledgerhq/errors@6.25.0': - resolution: {integrity: sha512-9cU0dgUyq3Adb1bHAjJnbwl+r+4WBjuPq0k+/DbBNpuYHwcz2xKtRIjLimUJyACjHti3iWwRt1sFcbQDDdI08w==} + '@ledgerhq/errors@6.34.1': + resolution: {integrity: sha512-Atkim7yM9bbfWN7OikiE1vbtRLABRz6rDayTHkX0rkPTs6EkMVZSgoNNDGhcYQRlUXrTz9Eko+5ixCLpJQpEWg==} - '@ledgerhq/errors@6.27.0': - resolution: {integrity: sha512-EE2hATONHdNP3YWFe3rZwwpSEzI5oN+q/xTjOulnjHZo84TLjungegEJ54A/Pzld0woulkkeVA27FbW5SAO1aA==} - - '@ledgerhq/hw-app-trx@6.29.4': - resolution: {integrity: sha512-CKxkNkmFW/JhOVaRubHNRibIKyyX6GSaaEm58ST2AHV98CRFzn0SgI/vqIzQTnLwuFuI823lCKI6urSmje6cnw==} + '@ledgerhq/hw-app-trx@6.29.2': + resolution: {integrity: sha512-sLb5IiGf2Sqc64iUMcudt+YyJ/J68YhpupxAQDnEsyhDTrxxrn4ihRIxeYTYOSUwsSP/VNZaAuL+zqn3IqsA0w==} '@ledgerhq/hw-transport-webhid@6.27.1': resolution: {integrity: sha512-u74rBYlibpbyGblSn74fRs2pMM19gEAkYhfVibq0RE1GNFjxDMFC1n7Sb+93Jqmz8flyfB4UFJsxs8/l1tm2Kw==} - '@ledgerhq/hw-transport-webhid@6.30.6': - resolution: {integrity: sha512-AOzjFv5n1OTMfvEInAZRfLO11G5zfG8pB5zhmjK5d/mVQfFNcKsLZNAC2h4OZZMBtUy8UTT3n03z93e6k6n4pQ==} + '@ledgerhq/hw-transport-webhid@6.35.2': + resolution: {integrity: sha512-gPqOIVW0cn5WjL23EtO+h9hD12mDIKS/buha3YJkzdxVBJufobc1N8a8CdtOcFoe53o0i1mTdHqo8MJzzueQCw==} + + '@ledgerhq/hw-transport-webusb@6.29.13': + resolution: {integrity: sha512-RhQMCX2kjpI5N+4EvepDtIH9opTJxmCAEWIip4Im+ScjoSvBI1wveE5aDFhjDsHJUcKIQzIbB5jSuv0DZaajFA==} '@ledgerhq/hw-transport@6.27.1': resolution: {integrity: sha512-hnE4/Fq1YzQI4PA1W0H8tCkI99R3UWDb3pJeZd6/Xs4Qw/q1uiQO+vNLC6KIPPhK0IajUfuI/P2jk0qWcMsuAQ==} - '@ledgerhq/hw-transport@6.31.10': - resolution: {integrity: sha512-ruNtkTPMO3rFCaSM+oPTOXXerzxWFZF43pAHVAHhsjiQGhLWzLSkMc7qBEpWIpZPubKRAbWSXR2zXBIJPNy8oQ==} - '@ledgerhq/hw-transport@6.31.13': resolution: {integrity: sha512-MrJRDk74wY980ofiFPRpTHQBbRw1wDuKbdag1zqlO1xtJglymwwY03K2kvBNvkm1RTSCPUp/nAoNG+WThZuuew==} - '@ledgerhq/logs@6.13.0': - resolution: {integrity: sha512-4+qRW2Pc8V+btL0QEmdB2X+uyx0kOWMWE1/LWsq5sZy3Q5tpi4eItJS6mB0XL3wGW59RQ+8bchNQQ1OW/va8Og==} + '@ledgerhq/hw-transport@6.31.9': + resolution: {integrity: sha512-HqB2Whl2qbrzyvs9gC/GmLhIy8RO4CWzjqHS4k0bPWDZRqKa8m6H32vjrbXGO//pUL1Mlu87UwvxvLyuICdjwg==} + + '@ledgerhq/hw-transport@6.35.2': + resolution: {integrity: sha512-eSXFFqMDAB2Ra/5uqmlru0cUyc2XDQPEKf4ITWHeMms2fHhETw9lcgAEl61vszkiz0RLUVB4VQsLJjj7O8kCvg==} - '@ledgerhq/wallet-api-client@1.12.6': - resolution: {integrity: sha512-qp5t/uLP6xi3paw9j1p9ITtfISmnnJKkCVer86elYxWftDsGm3xDsihEhQRijw8wDoGVIAJt/16ZU7o2tt3zxQ==} + '@ledgerhq/logs@6.17.0': + resolution: {integrity: sha512-yra33g5q/AU7+PwAws+GaVpQGUuxnDREjVBnviJjcaJLVKuLzI4pnj8Bd3nY3fypM5k1yZEYKEXfUuGFUjP2+w==} - '@ledgerhq/wallet-api-core@1.27.0': - resolution: {integrity: sha512-2arGTtqK/YtleQBV6H2a3AC4a9GJeZAbQaeGn+3un8Pbe8aGSuHLd3F7/v4sDAA0/QHCtcb+CvIJj+OR4ONyxg==} + '@ledgerhq/wallet-api-client@1.14.0': + resolution: {integrity: sha512-YVmNi8I7B8+1JJVZ8ZnegTY/hDBlhP+qhbfbN5r9Zfi/Z5mL0OK8EfKv8dqlGRkyb2v7tqpePnkyCXYxU0+pig==} + + '@ledgerhq/wallet-api-core@1.30.0': + resolution: {integrity: sha512-lWBaKt0Utv3r+ImQS+pl/zlvyi08mL0gAo9ePv78hmKZEGKgFkhYbjgUuiBHAq5j/9v8PU9JnbBtiDsVTrggug==} '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - '@lit-labs/ssr-dom-shim@1.4.0': - resolution: {integrity: sha512-ficsEARKnmmW5njugNYKipTm4SFnbik7CXtoencDZzmzo/dQ+2Q0bgkzJuoJP20Aj0F+izzJjOqsnkd6F/o1bw==} + '@lit-labs/ssr-dom-shim@1.5.1': + resolution: {integrity: sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==} '@lit/react@1.0.8': resolution: {integrity: sha512-p2+YcF+JE67SRX3mMlJ1TKCSTsgyOVdAwd/nxp3NuV1+Cb6MWALbN6nT7Ld4tpmYofcE5kcaSY1YBB9erY+6fw==} peerDependencies: - '@types/react': 19.0.10 + '@types/react': 17 || 18 || 19 '@lit/reactive-element@1.6.3': resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} - '@lit/reactive-element@2.1.1': - resolution: {integrity: sha512-N+dm5PAYdQ8e6UlywyyrgI2t++wFGXfHx+dSJ1oBrg6FAxUj40jId++EaRm80MKX5JnlH1sBsyZ5h0bcZKemCg==} + '@lit/reactive-element@2.1.2': + resolution: {integrity: sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==} - '@luno-kit/core@0.0.10': - resolution: {integrity: sha512-A6v7o+XNbITpvRxf4jfZms30BWEywu7dQZmilfuktYq3AJDugjpnkFA6cl7lPBxudPdqYCiTVfYM+snBTzpcxQ==} + '@luno-kit/core@0.0.13': + resolution: {integrity: sha512-xscD4HZ+OEHSBhU7VSJwkitO09Z3xzkskQ9dAAkr1vuY8XseIRBjrj1o+FhxLN9nvIsisd5TG5lnv7wD2KJuQQ==} engines: {node: '>=20.0.0', pnpm: '>=10.0.0'} peerDependencies: '@dedot/chaintypes': ^0.152.0 dedot: ^0.16.0 - '@manypkg/find-root@1.1.0': - resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - - '@manypkg/get-packages@1.1.3': - resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - '@meshsdk/common@1.9.0-beta-40': resolution: {integrity: sha512-owMpLDCJAIY5SFcvrh5uIBd7EPKl7vfxLuPFv9ZA/QcbT7YvbzBD/f6H+2ZgCHnNkuHFqoqBPoC+DQEzjeyagQ==} @@ -2018,49 +2236,14 @@ packages: '@meshsdk/wallet@1.9.0-beta-40': resolution: {integrity: sha512-MEMQEbbC5Ej++VrLt1Gf3nzmtnRieI6NJ/EgoWEmBvMlgj6g5OdDF3DkWJDOSAx38OJCnKnZQ/DN7W3zDmmaGA==} - '@metamask/eth-json-rpc-provider@1.0.1': - resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} - engines: {node: '>=14.0.0'} - - '@metamask/json-rpc-engine@7.3.3': - resolution: {integrity: sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==} - engines: {node: '>=16.0.0'} - - '@metamask/json-rpc-engine@8.0.2': - resolution: {integrity: sha512-IoQPmql8q7ABLruW7i4EYVHWUbF74yrp63bRuXV5Zf9BQwcn5H9Ww1eLtROYvI1bUXwOiHZ6qT5CWTrDc/t/AA==} - engines: {node: '>=16.0.0'} - - '@metamask/json-rpc-middleware-stream@7.0.2': - resolution: {integrity: sha512-yUdzsJK04Ev98Ck4D7lmRNQ8FPioXYhEUZOMS01LXW8qTvPGiRVXmVltj2p4wrLkh0vW7u6nv0mNl5xzC5Qmfg==} - engines: {node: '>=16.0.0'} - '@metamask/object-multiplex@1.3.0': resolution: {integrity: sha512-czcQeVYdSNtabd+NcYQnrM69MciiJyd1qvKH8WM2Id3C0ZiUUX5Xa/MK+/VUk633DBhVOwdNzAKIQ33lGyA+eQ==} engines: {node: '>=12.0.0'} - '@metamask/object-multiplex@2.1.0': - resolution: {integrity: sha512-4vKIiv0DQxljcXwfpnbsXcfa5glMj5Zg9mqn4xpIWqkv6uJ2ma5/GtUfLFSxhlxnR8asRMv8dDmWya1Tc1sDFA==} - engines: {node: ^16.20 || ^18.16 || >=20} - - '@metamask/onboarding@1.0.1': - resolution: {integrity: sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ==} - '@metamask/providers@11.1.2': resolution: {integrity: sha512-xjE4cKrGpKZjripkMKMStc0H4LXrWJPijfbaj1kKeDLVhRH2Yu3ZecV3iIhf1EIJePeA+Kx6Pcm7d0IVJ+ea7g==} engines: {node: '>=16.0.0'} - '@metamask/providers@16.1.0': - resolution: {integrity: sha512-znVCvux30+3SaUwcUGaSf+pUckzT5ukPRpcBmy+muBLC0yaWnBcvDqGfcsw6CBIenUdFrVoAFa8B6jsuCY/a+g==} - engines: {node: ^18.18 || >=20} - - '@metamask/rpc-errors@6.4.0': - resolution: {integrity: sha512-1ugFO1UoirU2esS3juZanS/Fo8C8XYocCuBpfZI5N7ECtoG+zu0wF+uWZASik6CkO6w9n/Iebt4iI4pT0vptpg==} - engines: {node: '>=16.0.0'} - - '@metamask/rpc-errors@7.0.2': - resolution: {integrity: sha512-YYYHsVYd46XwY2QZzpGeU4PSdRhHdxnzkB8piWGvJW2xbikZ3R+epAYEL4q/K8bh9JPTucsUdwRFnACor1aOYw==} - engines: {node: ^18.20 || ^20.17 || >=22} - '@metamask/safe-event-emitter@2.0.0': resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} @@ -2068,70 +2251,32 @@ packages: resolution: {integrity: sha512-5yb2gMI1BDm0JybZezeoX/3XhPDOtTbcFvpTXM9kxsoZjPZFh4XciqRbpD6N86HYZqWDhEaKUDuOyR0sQHEjMA==} engines: {node: '>=12.0.0'} - '@metamask/sdk-analytics@0.0.5': - resolution: {integrity: sha512-fDah+keS1RjSUlC8GmYXvx6Y26s3Ax1U9hGpWb6GSY5SAdmTSIqp2CvYy6yW0WgLhnYhW+6xERuD0eVqV63QIQ==} - - '@metamask/sdk-communication-layer@0.33.1': - resolution: {integrity: sha512-0bI9hkysxcfbZ/lk0T2+aKVo1j0ynQVTuB3sJ5ssPWlz+Z3VwveCkP1O7EVu1tsVVCb0YV5WxK9zmURu2FIiaA==} - peerDependencies: - cross-fetch: ^4.0.0 - eciesjs: '*' - eventemitter2: ^6.4.9 - readable-stream: ^3.6.2 - socket.io-client: ^4.5.1 - - '@metamask/sdk-install-modal-web@0.32.1': - resolution: {integrity: sha512-MGmAo6qSjf1tuYXhCu2EZLftq+DSt5Z7fsIKr2P+lDgdTPWgLfZB1tJKzNcwKKOdf6q9Qmmxn7lJuI/gq5LrKw==} - - '@metamask/sdk@0.33.1': - resolution: {integrity: sha512-1mcOQVGr9rSrVcbKPNVzbZ8eCl1K0FATsYH3WJ/MH4WcZDWGECWrXJPNMZoEAkLxWiMe8jOQBumg2pmcDa9zpQ==} - - '@metamask/superstruct@3.2.1': - resolution: {integrity: sha512-fLgJnDOXFmuVlB38rUN5SmU7hAFQcCjrg3Vrxz67KTY7YHFnSNEKvX4avmEBdOI0yTCxZjwMCFEqsC8k2+Wd3g==} - engines: {node: '>=16.0.0'} - - '@metamask/utils@11.8.1': - resolution: {integrity: sha512-DIbsNUyqWLFgqJlZxi1OOCMYvI23GqFCvNJAtzv8/WXWzJfnJnvp1M24j7VvUe3URBi3S86UgQ7+7aWU9p/cnQ==} - engines: {node: ^18.18 || ^20.14 || >=22} - - '@metamask/utils@5.0.2': - resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} - engines: {node: '>=14.0.0'} - - '@metamask/utils@8.5.0': - resolution: {integrity: sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==} - engines: {node: '>=16.0.0'} - - '@metamask/utils@9.3.0': - resolution: {integrity: sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==} - engines: {node: '>=16.0.0'} - '@mimirdev/apps-inject@3.2.0': resolution: {integrity: sha512-yKWFaZsUgxaPIU/xM8OFvWRsNld6x8iCeqbQbt/LyUsikLGlkrHOZl29MwMfSQiYAWrYNqwhFpCU07sS2DTOLQ==} '@mimirdev/apps-sdk@3.1.0': resolution: {integrity: sha512-EevWZhaaP9gKcIJeEbokAugx5X0sd8jRae1CX1Uzg5KsVxODjeLLaAE1D90Lj6//JE1NPaEq3QKi9PliSMLVNg==} - '@mixpanel/rrdom@2.0.0-alpha.18.2': - resolution: {integrity: sha512-vX/tbnS14ZzzatC7vOyvAm9tOLU8tof0BuppBlphzEx1YHTSw8DQiAmyAc0AmXidchLV0W+cUHV/WsehPLh2hQ==} + '@mixpanel/rrdom@2.0.0-alpha.18.4': + resolution: {integrity: sha512-58sWLQDPRU0VQn8VzB1tx4ujih9X327Vr6xAzbJ4zge9GENm2L696T4TbWvrRGWPW6w99tHIHbv6SvcLhjjmcQ==} - '@mixpanel/rrweb-plugin-console-record@2.0.0-alpha.18.2': - resolution: {integrity: sha512-Xkwh2gSdLqHRkWSXv8CPVCPQj5L85KnWc5DZQ0CXNRFgm2hTl5/YP6zfUubVs2JVXZHGcSGU+g7JVO2WcFJyyg==} + '@mixpanel/rrweb-plugin-console-record@2.0.0-alpha.18.4': + resolution: {integrity: sha512-gGxEnNpfWurQht+fpSJbwPV60ug0LAENlk4Ux3XRmYooNJGPBO1TiQHcM7g0yhrKf4tfbTiKKZ4EXzFlOZs/pw==} peerDependencies: '@mixpanel/rrweb': ^2.0.0-alpha.18 '@mixpanel/rrweb-utils': ^2.0.0-alpha.18 - '@mixpanel/rrweb-snapshot@2.0.0-alpha.18.2': - resolution: {integrity: sha512-2kSnjZZ3QZ9zOz/isOt8s54mXUUDgXk/u0eEi/rE0xBWDeuA0NHrBcqiMc+w4F/yWWUpo5F5zcuPeYpc6ufAsw==} + '@mixpanel/rrweb-snapshot@2.0.0-alpha.18.4': + resolution: {integrity: sha512-ubLGwgPiMMi0rl7zJRh1uMScQ480lT95tkHkIAHkiZOemMY4JSkYZh2v9fpMNwJhaGwB5n/76KI7Cwy8F5qixQ==} - '@mixpanel/rrweb-types@2.0.0-alpha.18.2': - resolution: {integrity: sha512-ucIYe1mfJ2UksvXW+d3bOySTB2/0yUSqQJlUydvbBz6OO2Bhq3nJHyLXV9ExkgUMZm1ZyDcvvmNUd1+5tAXlpA==} + '@mixpanel/rrweb-types@2.0.0-alpha.18.4': + resolution: {integrity: sha512-7kRuk7pK6Firrb26Mm235Po7s/z+9k0gUKZU/DZkzg5U1yQRcsu4byIrnWTiTQr+LFLUrIiyRKnpGK/QneAhTw==} - '@mixpanel/rrweb-utils@2.0.0-alpha.18.2': - resolution: {integrity: sha512-OomKIB6GTx5xvCLJ7iic2khT/t/tnCJUex13aEqsbSqIT/UzUUsqf+LTrgUK5ex+f6odmkCNjre2y5jvpNqn+g==} + '@mixpanel/rrweb-utils@2.0.0-alpha.18.4': + resolution: {integrity: sha512-c3nUbQl19kxHjf8nowFMeXlJw0ZqLesIVBb9t4g1nC4WtaNEPkFotWRdGt5V2cJNQ+aY38/v2uYb8Ren4IcdSQ==} - '@mixpanel/rrweb@2.0.0-alpha.18.2': - resolution: {integrity: sha512-J3dVTEu6Z4p8di7y9KKvUooNuBjX97DdG6XGWoPEPi07A9512h9M8MEtvlY3mK0PGfuC0Mz5Pv/Ws6gjGYfKQg==} + '@mixpanel/rrweb@2.0.0-alpha.18.4': + resolution: {integrity: sha512-ICpEYDFEEiCoUuQg+de3VvQCsolF4lNHfEM9DBp5Pwuc7EgXqwWV4wUpiRF/NbhoKk+82X1Qe+oqqlKJb/CGFw==} '@mobily/ts-belt@3.13.1': resolution: {integrity: sha512-K5KqIhPI/EoCTbA6CGbrenM9s41OouyK8A03fGJJcla/zKucsgLbz8HNbeseoLarRPgyWJsUyCYqFhI7t3Ra9Q==} @@ -2166,73 +2311,110 @@ packages: resolution: {integrity: sha512-JEW4DEtBzfe8HvUYecLU9e6+XJnKDlUAIve8FvPzF3Kzs6Xo/KuZkZJsDH0wJXl/qEZbeeE7edxDNY3kMs39hQ==} engines: {node: '>= 18'} - '@mswjs/interceptors@0.40.0': - resolution: {integrity: sha512-EFd6cVbHsgLa6wa4RljGj6Wk75qoHxUSyc5asLyyPSyuhIcdS2Q3Phw6ImS1q+CkALthJRShiYfKANcQMuMqsQ==} - engines: {node: '>=18'} - - '@multiformats/dns@1.0.10': - resolution: {integrity: sha512-6X200ceQLns0b/CU0S/So16tGjB5eIXHJ1xvJMPoWaKFHWSgfpW2EhkWJrqap4U3+c37zcowVR0ToPXeYEL7Vw==} - - '@multiformats/mafmt@12.1.6': - resolution: {integrity: sha512-tlJRfL21X+AKn9b5i5VnaTD6bNttpSpcqwKVmDmSHLwxoz97fAHaepqFOk/l1fIu94nImIXneNbhsJx/RQNIww==} - - '@multiformats/multiaddr@12.5.1': - resolution: {integrity: sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==} - - '@napi-rs/wasm-runtime@1.1.0': - resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==} - - '@next/env@16.0.10': - resolution: {integrity: sha512-8tuaQkyDVgeONQ1MeT9Mkk8pQmZapMKFh5B+OrFUlG3rVmYTXcXlBetBgTurKXGaIZvkoqRT9JL5K3phXcgang==} + '@msgpack/msgpack@3.1.3': + resolution: {integrity: sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA==} + engines: {node: '>= 18'} - '@next/swc-darwin-arm64@16.0.10': - resolution: {integrity: sha512-4XgdKtdVsaflErz+B5XeG0T5PeXKDdruDf3CRpnhN+8UebNa5N2H58+3GDgpn/9GBurrQ1uWW768FfscwYkJRg==} - engines: {node: '>= 10'} + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@16.0.10': - resolution: {integrity: sha512-spbEObMvRKkQ3CkYVOME+ocPDFo5UqHb8EMTS78/0mQ+O1nqE8toHJVioZo4TvebATxgA8XMTHHrScPrn68OGw==} - engines: {node: '>= 10'} + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + resolution: {integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@16.0.10': - resolution: {integrity: sha512-uQtWE3X0iGB8apTIskOMi2w/MKONrPOUCi5yLO+v3O8Mb5c7K4Q5KD1jvTpTF5gJKa3VH/ijKjKUq9O9UhwOYw==} - engines: {node: '>= 10'} + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + resolution: {integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==} cpu: [arm64] os: [linux] - libc: [glibc] - '@next/swc-linux-arm64-musl@16.0.10': - resolution: {integrity: sha512-llA+hiDTrYvyWI21Z0L1GiXwjQaanPVQQwru5peOgtooeJ8qx3tlqRV2P7uH2pKQaUfHxI/WVarvI5oYgGxaTw==} + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + resolution: {integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==} + cpu: [arm] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + resolution: {integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==} + cpu: [x64] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==} + cpu: [x64] + os: [win32] + + '@mswjs/interceptors@0.41.9': + resolution: {integrity: sha512-VVPPgHyQ6ShqnrmDWuxjmUIsO9gWyOZFmuOfLd9LfBGQJwZfy0gvv9pbHSJuoFNIYC7ZDX9aoFwowjcdSC4E8w==} + engines: {node: '>=18'} + + '@multiformats/dns@1.0.10': + resolution: {integrity: sha512-6X200ceQLns0b/CU0S/So16tGjB5eIXHJ1xvJMPoWaKFHWSgfpW2EhkWJrqap4U3+c37zcowVR0ToPXeYEL7Vw==} + + '@multiformats/mafmt@12.1.6': + resolution: {integrity: sha512-tlJRfL21X+AKn9b5i5VnaTD6bNttpSpcqwKVmDmSHLwxoz97fAHaepqFOk/l1fIu94nImIXneNbhsJx/RQNIww==} + + '@multiformats/multiaddr@12.5.1': + resolution: {integrity: sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==} + + '@napi-rs/wasm-runtime@1.1.4': + resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + + '@next/env@16.2.6': + resolution: {integrity: sha512-gd8HoHN4ufj73WmR3JmVolrpJR47ILK6LouP5xElPglaVxir6e1a7VzvTvDWkOoPXT9rkkTzyCxBu4yeZfZwcw==} + + '@next/swc-darwin-arm64@16.2.6': + resolution: {integrity: sha512-ZJGkkcNfYgrrMkqOdZ7zoLa1TOy0qpcMfk/z4Mh/FKUz40gVO+HNQWqmLxf67Z5WB64DRp0dhEbyHfel+6sJUg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@16.2.6': + resolution: {integrity: sha512-v/YLBHIY132Ced3puBJ7YJKw1lqsCrgcNo2aRJlCEyQrrCeRJlvGlnmxhPxNQI3KE3N1DN5r9TPNPvka3nq5RQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@16.2.6': + resolution: {integrity: sha512-RPOvqlYBbcQjkz9VQQDZ2T2bARIjXZV1KFlt+V2Mr6SW/e4I9fcKsaA0hdyf2FHoTlsV2xnBd5Y912rP/1Ce6w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@next/swc-linux-arm64-musl@16.2.6': + resolution: {integrity: sha512-URUTu1+dMkxJsPFgm+OeEvq9wf5sujw0EvgYy80TDGHTSLTnIHeqb0Eu8A3sC95IRgjejQL+kC4mw+4yPxiAXA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [musl] - '@next/swc-linux-x64-gnu@16.0.10': - resolution: {integrity: sha512-AK2q5H0+a9nsXbeZ3FZdMtbtu9jxW4R/NgzZ6+lrTm3d6Zb7jYrWcgjcpM1k8uuqlSy4xIyPR2YiuUr+wXsavA==} + '@next/swc-linux-x64-gnu@16.2.6': + resolution: {integrity: sha512-DOj182mPV8G3UkrayLoREM5YEYI+Dk5wv7Ox9xl1fFibAELEsFD0lDPfHIeILlutMMfdyhlzYPELG3peuKaurw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [glibc] - '@next/swc-linux-x64-musl@16.0.10': - resolution: {integrity: sha512-1TDG9PDKivNw5550S111gsO4RGennLVl9cipPhtkXIFVwo31YZ73nEbLjNC8qG3SgTz/QZyYyaFYMeY4BKZR/g==} + '@next/swc-linux-x64-musl@16.2.6': + resolution: {integrity: sha512-HKQ5SP/V/ub73UvF7n/zeJlxk2kLmtL7Wzrg4WfmkjmNos5onJ2tKu7yZOPdL18A6Svfn3max29ym+ry7NkK4g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [musl] - '@next/swc-win32-arm64-msvc@16.0.10': - resolution: {integrity: sha512-aEZIS4Hh32xdJQbHz121pyuVZniSNoqDVx1yIr2hy+ZwJGipeqnMZBJHyMxv2tiuAXGx6/xpTcQJ6btIiBjgmg==} + '@next/swc-win32-arm64-msvc@16.2.6': + resolution: {integrity: sha512-LZXpTlPyS5v7HhSmnvsLGP3iIYgYOBnc8r8ArlT55sGHV89bR2HlDdBjWQ+PY6SJMmk8TuVGFuxalnP3k/0Dwg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@16.0.10': - resolution: {integrity: sha512-E+njfCoFLb01RAFEnGZn6ERoOqhK1Gl3Lfz1Kjnj0Ulfu7oJbuMyvBKNj/bw8XZnenHDASlygTjZICQW+rYW1Q==} + '@next/swc-win32-x64-msvc@16.2.6': + resolution: {integrity: sha512-F0+4i0h9J6C4eE3EAPWsoCk7UW/dbzOjyzxY0qnDUOYFu6FFmdZ6l97/XdV3/Nz3VYyO7UWjyEJUXkGqcoXfMA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -2240,10 +2422,6 @@ packages: '@ngraveio/bc-ur@1.1.13': resolution: {integrity: sha512-j73akJMV4+vLR2yQ4AphPIT5HZmxVjn/LxpL7YHoINnXoH6ccc90Zzck6/n6a3bCXOVZwBxq+YHwbAKRV+P8Zg==} - '@noble/ciphers@1.2.0': - resolution: {integrity: sha512-YGdEUzYEd+82jeaVbSKKVp1jFZb8LwaNMIIzHFkihGvYdd/KKAr7KaJHdEdSYGredE3ssSravXIa0Jxg28Sv5w==} - engines: {node: ^14.21.3 || >=16} - '@noble/ciphers@1.2.1': resolution: {integrity: sha512-rONPWMC7PeExE077uLE4oqWrZ1IvAfz3oH9LibVAcVCopJiA9R62uavnbEzdkVmJYI6M6Zgkbeb07+tWjlq2XA==} engines: {node: ^14.21.3 || >=16} @@ -2252,9 +2430,6 @@ packages: resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} engines: {node: ^14.21.3 || >=16} - '@noble/curves@1.0.0': - resolution: {integrity: sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==} - '@noble/curves@1.2.0': resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} @@ -2273,10 +2448,6 @@ packages: resolution: {integrity: sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==} engines: {node: ^14.21.3 || >=16} - '@noble/curves@1.9.0': - resolution: {integrity: sha512-7YDlXiNMdO1YZeH6t/kvopHHbIZzlxrCV9WLqCY6QhcXOoXiNCMDqJIglZ9Yjx5+w7Dz30TITFrlTjnRg7sKEg==} - engines: {node: ^14.21.3 || >=16} - '@noble/curves@1.9.1': resolution: {integrity: sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==} engines: {node: ^14.21.3 || >=16} @@ -2285,20 +2456,17 @@ packages: resolution: {integrity: sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==} engines: {node: ^14.21.3 || >=16} - '@noble/curves@1.9.4': - resolution: {integrity: sha512-2bKONnuM53lINoDrSmK8qP8W271ms7pygDhZt4SiLOoLwBtoHqeCFi6RG42V8zd3mLHuJFhU/Bmaqo4nX0/kBw==} - engines: {node: ^14.21.3 || >=16} - '@noble/curves@1.9.7': resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==} engines: {node: ^14.21.3 || >=16} + '@noble/curves@2.2.0': + resolution: {integrity: sha512-T/BoHgFXirb0ENSPBquzX0rcjXeM6Lo892a2jlYJkqk83LqZx0l1Of7DzlKJ6jkpvMrkHSnAcgb5JegL8SeIkQ==} + engines: {node: '>= 20.19.0'} + '@noble/hashes@1.1.5': resolution: {integrity: sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==} - '@noble/hashes@1.3.0': - resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} - '@noble/hashes@1.3.2': resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} engines: {node: '>= 16'} @@ -2323,228 +2491,114 @@ packages: resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} engines: {node: ^14.21.3 || >=16} - '@noble/hashes@2.0.1': - resolution: {integrity: sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==} + '@noble/hashes@2.2.0': + resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==} engines: {node: '>= 20.19.0'} '@noble/secp256k1@1.7.1': resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - '@open-draft/deferred-promise@2.2.0': resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} + '@open-draft/deferred-promise@3.0.0': + resolution: {integrity: sha512-XW375UK8/9SqUVNVa6M0yEy8+iTi4QN5VZ7aZuRFQmy76LRwI9wy5F4YIBU6T+eTe2/DNDo8tqu8RHlwLHM6RA==} + '@open-draft/logger@0.3.0': resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} '@open-draft/until@2.1.0': resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - '@oxc-resolver/binding-android-arm-eabi@11.15.0': - resolution: {integrity: sha512-Q+lWuFfq7whNelNJIP1dhXaVz4zO9Tu77GcQHyxDWh3MaCoO2Bisphgzmsh4ZoUe2zIchQh6OvQL99GlWHg9Tw==} - cpu: [arm] - os: [android] - - '@oxc-resolver/binding-android-arm64@11.15.0': - resolution: {integrity: sha512-vbdBttesHR0W1oJaxgWVTboyMUuu+VnPsHXJ6jrXf4czELzB6GIg5DrmlyhAmFBhjwov+yJH/DfTnHS+2sDgOw==} - cpu: [arm64] - os: [android] - - '@oxc-resolver/binding-darwin-arm64@11.15.0': - resolution: {integrity: sha512-R67lsOe1UzNjqVBCwCZX1rlItTsj/cVtBw4Uy19CvTicqEWvwaTn8t34zLD75LQwDDPCY3C8n7NbD+LIdw+ZoA==} - cpu: [arm64] - os: [darwin] - - '@oxc-resolver/binding-darwin-x64@11.15.0': - resolution: {integrity: sha512-77mya5F8WV0EtCxI0MlVZcqkYlaQpfNwl/tZlfg4jRsoLpFbaTeWv75hFm6TE84WULVlJtSgvf7DhoWBxp9+ZQ==} - cpu: [x64] - os: [darwin] - - '@oxc-resolver/binding-freebsd-x64@11.15.0': - resolution: {integrity: sha512-X1Sz7m5PC+6D3KWIDXMUtux+0Imj6HfHGdBStSvgdI60OravzI1t83eyn6eN0LPTrynuPrUgjk7tOnOsBzSWHw==} - cpu: [x64] - os: [freebsd] - - '@oxc-resolver/binding-linux-arm-gnueabihf@11.15.0': - resolution: {integrity: sha512-L1x/wCaIRre+18I4cH/lTqSAymlV0k4HqfSYNNuI9oeL28Ks86lI6O5VfYL6sxxWYgjuWB98gNGo7tq7d4GarQ==} - cpu: [arm] - os: [linux] - - '@oxc-resolver/binding-linux-arm-musleabihf@11.15.0': - resolution: {integrity: sha512-abGXd/zMGa0tH8nKlAXdOnRy4G7jZmkU0J85kMKWns161bxIgGn/j7zxqh3DKEW98wAzzU9GofZMJ0P5YCVPVw==} - cpu: [arm] - os: [linux] - - '@oxc-resolver/binding-linux-arm64-gnu@11.15.0': - resolution: {integrity: sha512-SVjjjtMW66Mza76PBGJLqB0KKyFTBnxmtDXLJPbL6ZPGSctcXVmujz7/WAc0rb9m2oV0cHQTtVjnq6orQnI/jg==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@oxc-resolver/binding-linux-arm64-musl@11.15.0': - resolution: {integrity: sha512-JDv2/AycPF2qgzEiDeMJCcSzKNDm3KxNg0KKWipoKEMDFqfM7LxNwwSVyAOGmrYlE4l3dg290hOMsr9xG7jv9g==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@oxc-resolver/binding-linux-ppc64-gnu@11.15.0': - resolution: {integrity: sha512-zbu9FhvBLW4KJxo7ElFvZWbSt4vP685Qc/Gyk/Ns3g2gR9qh2qWXouH8PWySy+Ko/qJ42+HJCLg+ZNcxikERfg==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@oxc-resolver/binding-linux-riscv64-gnu@11.15.0': - resolution: {integrity: sha512-Kfleehe6B09C2qCnyIU01xLFqFXCHI4ylzkicfX/89j+gNHh9xyNdpEvit88Kq6i5tTGdavVnM6DQfOE2qNtlg==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@oxc-resolver/binding-linux-riscv64-musl@11.15.0': - resolution: {integrity: sha512-J7LPiEt27Tpm8P+qURDwNc8q45+n+mWgyys4/V6r5A8v5gDentHRGUx3iVk5NxdKhgoGulrzQocPTZVosq25Eg==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@oxc-resolver/binding-linux-s390x-gnu@11.15.0': - resolution: {integrity: sha512-+8/d2tAScPjVJNyqa7GPGnqleTB/XW9dZJQ2D/oIM3wpH3TG+DaFEXBbk4QFJ9K9AUGBhvQvWU2mQyhK/yYn3Q==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@oxc-resolver/binding-linux-x64-gnu@11.15.0': - resolution: {integrity: sha512-xtvSzH7Nr5MCZI2FKImmOdTl9kzuQ51RPyLh451tvD2qnkg3BaqI9Ox78bTk57YJhlXPuxWSOL5aZhKAc9J6qg==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@oxc-resolver/binding-linux-x64-musl@11.15.0': - resolution: {integrity: sha512-14YL1zuXj06+/tqsuUZuzL0T425WA/I4nSVN1kBXeC5WHxem6lQ+2HGvG+crjeJEqHgZUT62YIgj88W+8E7eyg==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@oxc-resolver/binding-openharmony-arm64@11.15.0': - resolution: {integrity: sha512-/7Qli+1Wk93coxnrQaU8ySlICYN8HsgyIrzqjgIkQEpI//9eUeaeIHZptNl2fMvBGeXa7k2QgLbRNaBRgpnvMw==} - cpu: [arm64] - os: [openharmony] - - '@oxc-resolver/binding-wasm32-wasi@11.15.0': - resolution: {integrity: sha512-q5rn2eIMQLuc/AVGR2rQKb2EVlgreATGG8xXg8f4XbbYCVgpxaq+dgMbiPStyNywW1MH8VU2T09UEm30UtOQvg==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - - '@oxc-resolver/binding-win32-arm64-msvc@11.15.0': - resolution: {integrity: sha512-yCAh2RWjU/8wWTxQDgGPgzV9QBv0/Ojb5ej1c/58iOjyTuy/J1ZQtYi2SpULjKmwIxLJdTiCHpMilauWimE31w==} - cpu: [arm64] - os: [win32] - - '@oxc-resolver/binding-win32-ia32-msvc@11.15.0': - resolution: {integrity: sha512-lmXKb6lvA6M6QIbtYfgjd+AryJqExZVSY2bfECC18OPu7Lv1mHFF171Mai5l9hG3r4IhHPPIwT10EHoilSCYeA==} - cpu: [ia32] - os: [win32] - - '@oxc-resolver/binding-win32-x64-msvc@11.15.0': - resolution: {integrity: sha512-HZsfne0s/tGOcJK9ZdTGxsNU2P/dH0Shf0jqrPvsC6wX0Wk+6AyhSpHFLQCnLOuFQiHHU0ePfM8iYsoJb5hHpQ==} - cpu: [x64] - os: [win32] + '@oxc-project/types@0.129.0': + resolution: {integrity: sha512-3oz8m3FGdr2nDXVqmFUw7jolKliC4MoyXYIG2c7gpjBnzUWQpUGIYcXYKxTdTi+N2jusvt610ckTMkxdwHkYEg==} - '@parcel/watcher-android-arm64@2.5.1': - resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} + '@parcel/watcher-android-arm64@2.5.6': + resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] - '@parcel/watcher-darwin-arm64@2.5.1': - resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} + '@parcel/watcher-darwin-arm64@2.5.6': + resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] - '@parcel/watcher-darwin-x64@2.5.1': - resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} + '@parcel/watcher-darwin-x64@2.5.6': + resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] - '@parcel/watcher-freebsd-x64@2.5.1': - resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} + '@parcel/watcher-freebsd-x64@2.5.6': + resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] - '@parcel/watcher-linux-arm-glibc@2.5.1': - resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} + '@parcel/watcher-linux-arm-glibc@2.5.6': + resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] libc: [glibc] - '@parcel/watcher-linux-arm-musl@2.5.1': - resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} + '@parcel/watcher-linux-arm-musl@2.5.6': + resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] libc: [musl] - '@parcel/watcher-linux-arm64-glibc@2.5.1': - resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} + '@parcel/watcher-linux-arm64-glibc@2.5.6': + resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] libc: [glibc] - '@parcel/watcher-linux-arm64-musl@2.5.1': - resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} + '@parcel/watcher-linux-arm64-musl@2.5.6': + resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] libc: [musl] - '@parcel/watcher-linux-x64-glibc@2.5.1': - resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} + '@parcel/watcher-linux-x64-glibc@2.5.6': + resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] libc: [glibc] - '@parcel/watcher-linux-x64-musl@2.5.1': - resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} + '@parcel/watcher-linux-x64-musl@2.5.6': + resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] libc: [musl] - '@parcel/watcher-win32-arm64@2.5.1': - resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} + '@parcel/watcher-win32-arm64@2.5.6': + resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] - '@parcel/watcher-win32-ia32@2.5.1': - resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} + '@parcel/watcher-win32-ia32@2.5.6': + resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==} engines: {node: '>= 10.0.0'} cpu: [ia32] os: [win32] - '@parcel/watcher-win32-x64@2.5.1': - resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} + '@parcel/watcher-win32-x64@2.5.6': + resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] - '@parcel/watcher@2.5.1': - resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} + '@parcel/watcher@2.5.6': + resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} engines: {node: '>= 10.0.0'} '@particle-network/analytics@1.0.2': @@ -2565,13 +2619,6 @@ packages: '@solana/web3.js': ^1.50.1 bs58: ^4.0.1 - '@paulmillr/qr@0.2.1': - resolution: {integrity: sha512-IHnV6A+zxU7XwmKFinmYjUcwlyK9+xkG3/s9KcQhI9BjQKycrJ1JRO+FbNYPwZiPKW3je/DR0k7w8/gLa5eaxQ==} - deprecated: 'The package is now available as "qr": npm install qr' - - '@polka/url@0.5.0': - resolution: {integrity: sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==} - '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} @@ -2596,45 +2643,45 @@ packages: '@polkadot-api/wasm-executor@0.1.2': resolution: {integrity: sha512-a5wGenltB3EFPdf72u8ewi6HsUg2qubUAf3ekJprZf24lTK3+w8a/GUF/y6r08LJF35MALZ32SAtLqtVTIOGnQ==} - '@polkadot/keyring@14.0.1': - resolution: {integrity: sha512-kHydQPCeTvJrMC9VQO8LPhAhTUxzxfNF1HEknhZDBPPsxP/XpkYsEy/Ln1QzJmQqD5VsgwzLDE6cExbJ2CT9CA==} + '@polkadot/keyring@14.0.3': + resolution: {integrity: sha512-ozp1dQwaHCjgX/fpTTORmHjxdUNQnyiTVJszpzUaUpvtH/IGZhSU/mSHXMqNETS/g57vQa7NatIDcWfyR9abyA==} engines: {node: '>=18'} peerDependencies: - '@polkadot/util': 14.0.1 - '@polkadot/util-crypto': 14.0.1 + '@polkadot/util': 14.0.3 + '@polkadot/util-crypto': 14.0.3 - '@polkadot/networks@14.0.1': - resolution: {integrity: sha512-wGlBtXDkusRAj4P7uxfPz80gLO1+j99MLBaQi3bEym2xrFrFhgIWVHOZlBit/1PfaBjhX2Z8XjRxaM2w1p7w2w==} + '@polkadot/networks@14.0.3': + resolution: {integrity: sha512-/VqTLUDn+Wm8S2L/yaGFddo3oW4vRYav0Rg4pLg/semMZLaN8PJ6h927ucn9JyWdH82QfZfyiIPORt0ZF3isyw==} engines: {node: '>=18'} - '@polkadot/types-augment@16.5.4': - resolution: {integrity: sha512-AGjXR+Q9O9UtVkGw/HuOXlbRqVpvG6H8nr+taXP71wuC6RD9gznFBFBqoNkfWHD2w89esNVQLTvXHVxlLpTXqA==} + '@polkadot/types-augment@16.5.6': + resolution: {integrity: sha512-QN5UrluUZCVgknUDW0gps/FRQ13Qgm24w53pCd2HgD0nmTtXDt9D4psjWwx5JkGTkUAvpzFWwN41bkxAeCiV6g==} engines: {node: '>=18'} - '@polkadot/types-codec@16.5.4': - resolution: {integrity: sha512-OQtT1pmJu2F3/+Vh1OiXifKoeRy+CU1+Lu7dgTcdO705dnxU4447Zup5JVCJDnxBmMITts/38vbFN2pD225AnA==} + '@polkadot/types-codec@16.5.6': + resolution: {integrity: sha512-3tzUv1LZOL97IlQmko4dqbfRC0cg9IQ2QAHRVoDIWsXrVovp1V3kPdP0o6e3I8T2XB9IlbabK91v+ZiIxhGMZw==} engines: {node: '>=18'} - '@polkadot/types-create@16.5.4': - resolution: {integrity: sha512-URQnvr/sgvgIRSxIW3lmml6HMSTRRj2hTZIm6nhMTlYSVT4rLWx0ZbYUAjoPBbaJ+BmoqZ6Bbs+tA+5cQViv5Q==} + '@polkadot/types-create@16.5.6': + resolution: {integrity: sha512-g7g3hrjpz4KgqQqei9PU0JY9fsFHBmThWALZk5pWB32vyDyDcXZiyhH3agDhqfmzQiolTW2FuvcNJxgS634J1w==} engines: {node: '>=18'} - '@polkadot/types-support@16.5.4': - resolution: {integrity: sha512-Ra6keCaO73ibxN6MzA56jFq9EReje7jjE4JQfzV5IpyDZdXcmPyJiEfa2Yps/YSP13Gc2e38t9FFyVau0V+SFQ==} + '@polkadot/types-support@16.5.6': + resolution: {integrity: sha512-Hqpa/hCvXZXUTUiJMAE55UXpzAeCVLaFlzzXQXLkne0vhmv3/JkWcBnX755a/b9+C4b3MKEz2i0tSKLsa3DldA==} engines: {node: '>=18'} - '@polkadot/types@16.5.4': - resolution: {integrity: sha512-8Oo1QWaL0DkIc/n2wKBIozPWug/0b2dPVhL+XrXHxJX7rIqS0x8sXDRbM9r166sI0nTqJiUho7pRIkt2PR/DMQ==} + '@polkadot/types@16.5.6': + resolution: {integrity: sha512-X/sfMHJS4RkRhnsc4CQqzUy7BM/s2y71TrBFHPYAjs2q/rbZ/BwvBk70SrUiSa0+iRRn3RewbBZm+AB8CbkdKw==} engines: {node: '>=18'} - '@polkadot/util-crypto@14.0.1': - resolution: {integrity: sha512-Cu7AKUzBTsUkbOtyuNzXcTpDjR9QW0fVR56o3gBmzfUCmvO1vlsuGzmmPzqpHymQQ3rrfqV78CPs62EGhw0R+A==} + '@polkadot/util-crypto@14.0.3': + resolution: {integrity: sha512-V00BI6XnZLCkrAmV8uN0eSB6fy48CkxdDZT29cgSMSwHPtY6oKUNgd1ST07PGCL5x8XflwjoA7CTlhdbp1Y9gw==} engines: {node: '>=18'} peerDependencies: - '@polkadot/util': 14.0.1 + '@polkadot/util': 14.0.3 - '@polkadot/util@14.0.1': - resolution: {integrity: sha512-764HhxkPV3x5rM0/p6QdynC2dw26n+SaE+jisjx556ViCd4E28Ke4xSPef6C0Spy4aoXf2gt0PuLEcBvd6fVZg==} + '@polkadot/util@14.0.3': + resolution: {integrity: sha512-mg1NR7ixHlNiz2zbvdcdy1OXZmca2tVA4DpewGpY/qFkW/gq9HdDrHLu7g0k90QnunDcFW4emb7NB60sGJQ0bw==} engines: {node: '>=18'} '@polkadot/wasm-bridge@7.5.4': @@ -2676,31 +2723,31 @@ packages: peerDependencies: '@polkadot/util': '*' - '@polkadot/x-bigint@14.0.1': - resolution: {integrity: sha512-gfozjGnebr2rqURs31KtaWumbW4rRZpbiluhlmai6luCNrf5u8pB+oLA35kPEntrsLk9PnIG9OsC/n4hEtx4OQ==} + '@polkadot/x-bigint@14.0.3': + resolution: {integrity: sha512-U0al6BKgldFrEbmSObRAlzv9VDs5SMa/rbvZKvvkVec0sWTzYPWQZU1ZC/biXLYdjdKML89BeuCKmXZtCcGhUQ==} engines: {node: '>=18'} '@polkadot/x-global@13.5.9': resolution: {integrity: sha512-zSRWvELHd3Q+bFkkI1h2cWIqLo1ETm+MxkNXLec3lB56iyq/MjWBxfXnAFFYFayvlEVneo7CLHcp+YTFd9aVSA==} engines: {node: '>=18'} - '@polkadot/x-global@14.0.1': - resolution: {integrity: sha512-aCI44DJU4fU0XXqrrSGIpi7JrZXK2kpe0jaQ2p6oDVXOOYEnZYXnMhTTmBE1lF/xtxzX50MnZrrU87jziU0qbA==} + '@polkadot/x-global@14.0.3': + resolution: {integrity: sha512-MzMEynJ7HMTy/plLmdyP8rv14RS/6s29HZodUG9aCOscBnEiEDxVEax/ztRJqxhhQuHeYdx0LYDwVbdQDTkqNw==} engines: {node: '>=18'} - '@polkadot/x-randomvalues@14.0.1': - resolution: {integrity: sha512-/XkQcvshzJLHITuPrN3zmQKuFIPdKWoaiHhhVLD6rQWV60lTXA3ajw3ocju8ZN7xRxnweMS9Ce0kMPYa0NhRMg==} + '@polkadot/x-randomvalues@14.0.3': + resolution: {integrity: sha512-qTPcrk0nIHL2tIu5e0cLj3puQvjCK7onehnqO2fvlmWeIlvDel66fwWs06Ipsib+CwLJdmE6WgNy+8Jv74r6YA==} engines: {node: '>=18'} peerDependencies: - '@polkadot/util': 14.0.1 + '@polkadot/util': 14.0.3 '@polkadot/wasm-util': '*' - '@polkadot/x-textdecoder@14.0.1': - resolution: {integrity: sha512-CcWiPCuPVJsNk4Vq43lgFHqLRBQHb4r9RD7ZIYgmwoebES8TNm4g2ew9ToCzakFKSpzKu6I07Ne9wv/dt5zLuw==} + '@polkadot/x-textdecoder@14.0.3': + resolution: {integrity: sha512-4RJYDG00iUzQ7YAuS/yvkWRZlkjYU8PUNdJHRfqtJ+SjrSPB7LYYxFhLgw43TZUtHmIueNTsml2Ukv3xXTr2kA==} engines: {node: '>=18'} - '@polkadot/x-textencoder@14.0.1': - resolution: {integrity: sha512-VY51SpQmF1ccmAGLfxhYnAe95Spfz049WZ/+kK4NfsGF9WejxVdU53Im5C80l45r8qHuYQsCWU3+t0FNunh2Kg==} + '@polkadot/x-textencoder@14.0.3': + resolution: {integrity: sha512-9HH6o2L+r99wEfXhPb5g+Xwn7qouqD32PsMux7B0dFGR2KNqP4KwO19Hu+gdij6wsEhy7delhZwzHenrWwDfhQ==} engines: {node: '>=18'} '@polkadot/x-ws@13.5.9': @@ -2719,8 +2766,8 @@ packages: '@protobufjs/base64@1.1.2': resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + '@protobufjs/codegen@2.0.5': + resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==} '@protobufjs/eventemitter@1.1.0': resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} @@ -2731,8 +2778,8 @@ packages: '@protobufjs/float@1.0.2': resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - '@protobufjs/inquire@1.1.0': - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + '@protobufjs/inquire@1.1.1': + resolution: {integrity: sha512-mnzgDV26ueAvk7rsbt9L7bE0SuAoqyuys/sMMrmVcN5x9VsxpcG3rqAUSgDyLp0UZlmNfIbQ4fHfCtreVBk8Ew==} '@protobufjs/path@1.1.2': resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} @@ -2740,8 +2787,8 @@ packages: '@protobufjs/pool@1.1.0': resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - '@protobufjs/utf8@1.1.0': - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@protobufjs/utf8@1.1.1': + resolution: {integrity: sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==} '@radix-ui/primitive@1.1.3': resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} @@ -2749,8 +2796,8 @@ packages: '@radix-ui/react-arrow@1.1.7': resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} peerDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4 + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -2762,8 +2809,8 @@ packages: '@radix-ui/react-collection@1.1.7': resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} peerDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4 + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -2775,7 +2822,7 @@ packages: '@radix-ui/react-compose-refs@1.1.2': resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -2784,7 +2831,7 @@ packages: '@radix-ui/react-context@1.1.2': resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -2793,8 +2840,8 @@ packages: '@radix-ui/react-dialog@1.1.15': resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} peerDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4 + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -2806,7 +2853,7 @@ packages: '@radix-ui/react-direction@1.1.1': resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -2815,8 +2862,8 @@ packages: '@radix-ui/react-dismissable-layer@1.1.11': resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} peerDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4 + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -2828,8 +2875,8 @@ packages: '@radix-ui/react-dropdown-menu@2.1.16': resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==} peerDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4 + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -2841,7 +2888,7 @@ packages: '@radix-ui/react-focus-guards@1.1.3': resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -2850,8 +2897,8 @@ packages: '@radix-ui/react-focus-scope@1.1.7': resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} peerDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4 + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -2863,7 +2910,7 @@ packages: '@radix-ui/react-id@1.1.1': resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -2872,8 +2919,8 @@ packages: '@radix-ui/react-menu@2.1.16': resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==} peerDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4 + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -2885,8 +2932,8 @@ packages: '@radix-ui/react-popper@1.2.8': resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} peerDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4 + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -2898,8 +2945,8 @@ packages: '@radix-ui/react-portal@1.1.9': resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} peerDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4 + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -2911,8 +2958,8 @@ packages: '@radix-ui/react-presence@1.1.5': resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} peerDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4 + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -2924,8 +2971,8 @@ packages: '@radix-ui/react-primitive@2.1.3': resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} peerDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4 + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -2937,8 +2984,8 @@ packages: '@radix-ui/react-primitive@2.1.4': resolution: {integrity: sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==} peerDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4 + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -2950,8 +2997,8 @@ packages: '@radix-ui/react-roving-focus@1.1.11': resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==} peerDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4 + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -2963,7 +3010,7 @@ packages: '@radix-ui/react-slot@1.2.3': resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -2972,7 +3019,7 @@ packages: '@radix-ui/react-slot@1.2.4': resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -2981,8 +3028,8 @@ packages: '@radix-ui/react-tooltip@1.2.8': resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==} peerDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4 + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -2994,7 +3041,7 @@ packages: '@radix-ui/react-use-callback-ref@1.1.1': resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3003,7 +3050,7 @@ packages: '@radix-ui/react-use-controllable-state@1.2.2': resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3012,7 +3059,7 @@ packages: '@radix-ui/react-use-effect-event@0.0.2': resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3021,7 +3068,7 @@ packages: '@radix-ui/react-use-escape-keydown@1.1.1': resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3030,7 +3077,7 @@ packages: '@radix-ui/react-use-layout-effect@1.1.1': resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3039,7 +3086,7 @@ packages: '@radix-ui/react-use-rect@1.1.1': resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3048,7 +3095,7 @@ packages: '@radix-ui/react-use-size@1.1.1': resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3057,8 +3104,8 @@ packages: '@radix-ui/react-visually-hidden@1.2.3': resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} peerDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4 + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3070,8 +3117,8 @@ packages: '@radix-ui/react-visually-hidden@1.2.4': resolution: {integrity: sha512-kaeiyGCe844dkb9AVF+rb4yTyb1LiLN/e3es3nLiRyN4dC8AduBYPMnnNlDjX2VDOcvDEiPnRNMJeWCfsX0txg==} peerDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4 + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -3133,7 +3180,7 @@ packages: resolution: {integrity: sha512-yG+zcMtyApW1yRwkNFvlXzEg3RIFdItuwr/zEvPCSdjaL+paX4rounpL0YX5kS9MsDIE5FXfcqINXg7L0xuwPg==} engines: {node: '>= 20.19.4'} peerDependencies: - '@types/react': 19.0.10 + '@types/react': ^19.1.0 react: '*' react-native: '*' peerDependenciesMeta: @@ -3224,23 +3271,144 @@ packages: '@reown/appkit@1.7.8': resolution: {integrity: sha512-51kTleozhA618T1UvMghkhKfaPcc9JlKwLJ5uV+riHyvSoWPKPRIa5A6M1Wano5puNyW0s3fwywhyqTHSilkaA==} - '@rolldown/pluginutils@1.0.0-beta.47': - resolution: {integrity: sha512-8QagwMH3kNCuzD8EWL8R2YPW5e4OrHNSAHRFDdmFqEwEaD/KcNKjVoumo+gP2vW5eKB2UPbM6vTYiGZX0ixLnw==} + '@rev-dep/darwin-arm64@2.13.2': + resolution: {integrity: sha512-HixmhdgPOlY5OHeVEuebAaypt0kFOHZTJrFLWpaeNNSOPh0cA+EySIM5hENPyL548rrZQ/mdiDdfKLD9TCtt7A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] - '@rolldown/pluginutils@1.0.0-beta.53': - resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} + '@rev-dep/linux-x64@2.13.2': + resolution: {integrity: sha512-p8rCLUbxhQl9hM8LbqTD9eG1BeuRbAp2f0kFA+Kge7RAvhlB1ShP039o9LSECXGS7a1nYSTl7Tkq3VApMBATXg==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] - '@rollup/plugin-inject@5.0.5': - resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} - engines: {node: '>=14.0.0'} + '@rev-dep/win32-x64@2.13.2': + resolution: {integrity: sha512-/XQ8mKPMBBM760vGvrHrE3g/C6x6HlD91raM7C0RD1sKaRkxXVQeBVPzR3aBHYCxP8kjT+FS+vOGz3kdH5PKmg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@rolldown/binding-android-arm64@1.0.0': + resolution: {integrity: sha512-TWMZnRLMe63C2Lhyicviu7ZHaU4kxa6PS3rofvc9GmcvptzNN11BcfQ4Sl7MwTOsisQoa2keB/EBdNCAnUo8vA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0': + resolution: {integrity: sha512-6XcD+8k0gPVItNagEw78/qqcBDwKcwDYS8V2hRmVsfUSIrd8cWe/CBvRDI5toqFyPfj+FJr6t8U6Xj2P2prEew==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0': + resolution: {integrity: sha512-iN/tWVXRQDWvmZlKdceP1Dwug9GDpEymhb9p4xnEe6zvCg5lFmzVljl+1qR1NVx3yfGpr2Na+CuLmv5IU8uzfQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0': + resolution: {integrity: sha512-jjQMDvvwSOuhOwMszD/klSOjyWMM3zI64hWTj9KT5x4MxRbZAf+7vLQ6qouRhtsLVFHr3f0ILaJAfgENPiQdAQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0': + resolution: {integrity: sha512-d//Dtg2x6/m3mbV64yUGNnDGNZaDGRpDLLNGerHQUVObuNaIQaaDp25yUiqGXtHEXX+NP2d0wAlmKgpYgIAJ2A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0': + resolution: {integrity: sha512-n7Ofp0mx+aB2cC+Sdy5YtMnXtY9lchnHbY+3Yt0uq9JsWQExf4f5Whu0tK0R8Jdc9S6RchTHjIFY7uc92puOVQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.0.0': + resolution: {integrity: sha512-EIVjy2cgd7uuMMo94FVkBp7F6DhcZAUwNURkSG3RwUmvAXR6s0ISxM81U+IydcZByPG0pZIHsf1b6kTxoFDgJA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.0.0': + resolution: {integrity: sha512-JEwwOPcwTLAcpDQlqSmjEmfs63xJnSiUNIGvLcDLUHCWK4XowpS/7c7tUsUH6uT/ct6bMUTdXKfI8967FYj6mg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.0.0': + resolution: {integrity: sha512-0wjCFhLrihtAubnT9iA0N++0pSV0z5Hg7tNGdNJ4RFaINceHadoF+kiFGyY1qSSNVIAZtLotG8Ju1bgDPkjnFA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.0.0': + resolution: {integrity: sha512-Dfn7iak9BcMMePxcoJfpSbWqnEyrp/dRF63/8qW/eHBdOZov6x5aShLLEYGYdIeSJ6vMLK/XCVB+lGIxm41bQA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.0.0': + resolution: {integrity: sha512-5/utzzDmD/pD/bmuaUcbTf/sZYy0aztwIVlfpoW1fTjCZ0BaPOMVWGZL1zvgxyi7ZIVYWlxKONHmSbHuiOh8Jw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.0.0': + resolution: {integrity: sha512-ouJs8VcUomfLfpbUECqFMRqdV4x6aeAK3MA4m6vTrJJjKyWTV5KnxZx7Jd9G+GlDaQQxubcba00x16OyJ1meig==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0': + resolution: {integrity: sha512-E+oHKGiDA+lsKMmFtffDDw91EryDT7uJocrIuCHqhm6bCTM6xFK+3gaCkYOHfPwQr0cCNarSM2xaELoQDz9jJg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0': + resolution: {integrity: sha512-yYK02n8Rngo+gbm1y6G0+7jk1sJ/2Wt7K0me0Y7k/ErBpyf+LJ2gFpqWVTcRV1rUepBlQRmpgWkTQCiiwrK0Ow==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0': + resolution: {integrity: sha512-14bpChMahXRRXiTwahSl+zzHPW6qQTXtkMuJBFlbo+pqSAews2d4BdCSHfrJ/MBsCZtpmTafsY+1QhBzitcmdg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/plugin-babel@0.2.3': + resolution: {integrity: sha512-+zEk16yGlz1F9STiRr6uG9hmIXb6nprjLczV/htGptYuLoCuxb+itZ03RKCEeOhBpDDd1NU7qF6x1VLMUp62bw==} + engines: {node: '>=22.12.0 || ^24.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + '@babel/core': ^7.29.0 || ^8.0.0-rc.1 + '@babel/plugin-transform-runtime': ^7.29.0 || ^8.0.0-rc.1 + '@babel/runtime': ^7.27.0 || ^8.0.0-rc.1 + rolldown: ^1.0.0-rc.5 + vite: ^8.0.0 peerDependenciesMeta: - rollup: + '@babel/plugin-transform-runtime': optional: true + '@babel/runtime': + optional: true + vite: + optional: true + + '@rolldown/pluginutils@1.0.0': + resolution: {integrity: sha512-aKs/3GSWyV0mrhNmt/96/Z3yczC3yvrzYATCiCXQebBsGyYzjNdUphRVLeJQ67ySKVXRfMxt2lm12pmXvbPFQQ==} - '@rollup/plugin-replace@6.0.3': - resolution: {integrity: sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==} + '@rolldown/pluginutils@1.0.0-rc.7': + resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} + + '@rollup/plugin-inject@5.0.5': + resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -3248,8 +3416,8 @@ packages: rollup: optional: true - '@rollup/pluginutils@5.2.0': - resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -3381,19 +3549,13 @@ packages: '@safe-global/safe-apps-provider@0.18.6': resolution: {integrity: sha512-4LhMmjPWlIO8TTDC2AwLk44XKXaK6hfBTWyljDm0HQ6TWlOEijVWNrt2s3OCVMSxlXAcEzYfqyu1daHZooTC2Q==} - '@safe-global/safe-apps-sdk@8.1.0': - resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==} - '@safe-global/safe-apps-sdk@9.1.0': resolution: {integrity: sha512-N5p/ulfnnA2Pi2M3YeWjULeWbjo7ei22JwU/IXnhoHzKq3pYCN6ynL9mJBOlvDVv892EgLPCWCOwQk/uBT2v0Q==} '@safe-global/safe-gateway-typescript-sdk@3.22.9': resolution: {integrity: sha512-7ojVK/crhOaGowEO8uYWaopZzcr5rR76emgllGIfjCLR70aY4PbASpi9Pbs+7jIRzPDBBkM0RBo+zYx5UduX8Q==} engines: {node: '>=16'} - - '@safe-global/safe-gateway-typescript-sdk@3.23.1': - resolution: {integrity: sha512-6ORQfwtEJYpalCeVO21L4XXGSdbEMfyp2hEv6cP82afKXSwvse6d3sdelgaPWUxHIsFRkWvHDdzh8IyyKHZKxw==} - engines: {node: '>=16'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. '@scure/base@1.1.9': resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} @@ -3404,14 +3566,8 @@ packages: '@scure/base@1.2.6': resolution: {integrity: sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==} - '@scure/base@2.0.0': - resolution: {integrity: sha512-3E1kpuZginKkek01ovG8krQ0Z44E3DHPjc5S2rjJw9lZn3KSQOs8S7wqikF/AH7iRanHypj85uGyxk0XAyC37w==} - - '@scure/bip32@1.3.0': - resolution: {integrity: sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==} - - '@scure/bip32@1.3.2': - resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} + '@scure/base@2.2.0': + resolution: {integrity: sha512-b8XEupJibegiXV+tDUseI8oLQc8ei3d/4Jkb2RpbHh3MfE054ov3uIz2dhFkB3FI8iwYkEh0gGCApkrYggkPNg==} '@scure/bip32@1.4.0': resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} @@ -3422,12 +3578,6 @@ packages: '@scure/bip32@1.7.0': resolution: {integrity: sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==} - '@scure/bip39@1.2.0': - resolution: {integrity: sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==} - - '@scure/bip39@1.2.1': - resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} - '@scure/bip39@1.3.0': resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} @@ -3443,15 +3593,26 @@ packages: '@scure/starknet@1.1.0': resolution: {integrity: sha512-83g3M6Ix2qRsPN4wqLDqiRZ2GBNbjVWfboJE/9UjfG+MHr6oDSu/CWgy8hsBSJejr09DkkL+l0Ze4KVrlCIdtQ==} + '@simple-libs/child-process-utils@1.0.2': + resolution: {integrity: sha512-/4R8QKnd/8agJynkNdJmNw2MBxuFTRcNFnE5Sg/G+jkSsV8/UBgULMzhizWWW42p8L5H7flImV2ATi79Ove2Tw==} + engines: {node: '>=18'} + + '@simple-libs/stream-utils@1.2.0': + resolution: {integrity: sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==} + engines: {node: '>=18'} + '@simplewebauthn/browser@13.2.2': resolution: {integrity: sha512-FNW1oLQpTJyqG5kkDg5ZsotvWgmBaC6jCHR7Ej0qUNep36Wl9tj2eZu7J5rP+uhXgHaLk+QQ3lqcw2vS5MX1IA==} - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@sinclair/typebox@0.27.10': + resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==} '@sinclair/typebox@0.33.22': resolution: {integrity: sha512-auUj4k+f4pyrIVf4GW5UKquSZFHJWri06QgARy9C0t9ZTjJLIuNIrr1yl9bWcJWJ1Gz1vOvYN1D+QPaIlNMVkQ==} + '@sinclair/typebox@0.34.49': + resolution: {integrity: sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==} + '@sinonjs/commons@3.0.1': resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} @@ -3494,11 +3655,6 @@ packages: peerDependencies: '@solana/kit': ^2.1.0 - '@solana-program/system@0.8.1': - resolution: {integrity: sha512-71U9Mzdpw8HQtfgfJSL5xKZbLMRnza2Llsfk7gGnmg2waqK+o8MMH4YNma8xXS1UmOBptXIiNvoZ3p7cmOVktg==} - peerDependencies: - '@solana/kit': ^3.0 - '@solana-program/token-2022@0.4.2': resolution: {integrity: sha512-zIpR5t4s9qEU3hZKupzIBxJ6nUV5/UVyIT400tu9vT1HMs5JHxaTTsb5GUhYjiiTvNwU0MQavbwc4Dl29L0Xvw==} peerDependencies: @@ -3510,11 +3666,6 @@ packages: peerDependencies: '@solana/kit': ^2.1.0 - '@solana-program/token@0.6.0': - resolution: {integrity: sha512-omkZh4Tt9rre4wzWHNOhOEHyenXQku3xyc/UrKvShexA/Qlhza67q7uRwmwEDUs4QqoDBidSZPooOmepnA/jig==} - peerDependencies: - '@solana/kit': ^3.0 - '@solana/accounts@2.3.0': resolution: {integrity: sha512-QgQTj404Z6PXNOyzaOpSzjgMOuGwG8vC66jSDB+3zHaRcEPRVRd2sVSrd1U6sHtnV3aiaS6YyDuPQMheg4K2jw==} engines: {node: '>=20.18.0'} @@ -3637,66 +3788,30 @@ packages: peerDependencies: typescript: '>=5.3.3' - '@solana/fast-stable-stringify@3.0.3': - resolution: {integrity: sha512-ED0pxB6lSEYvg+vOd5hcuQrgzEDnOrURFgp1ZOY+lQhJkQU6xo+P829NcJZQVP1rdU2/YQPAKJKEseyfe9VMIw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/functional@2.3.0': resolution: {integrity: sha512-AgsPh3W3tE+nK3eEw/W9qiSfTGwLYEvl0rWaxHht/lRcuDVwfKRzeSa5G79eioWFFqr+pTtoCr3D3OLkwKz02Q==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.3.3' - '@solana/functional@3.0.3': - resolution: {integrity: sha512-2qX1kKANn8995vOOh5S9AmF4ItGZcfbny0w28Eqy8AFh+GMnSDN4gqpmV2LvxBI9HibXZptGH3RVOMk82h1Mpw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - - '@solana/instruction-plans@3.0.3': - resolution: {integrity: sha512-eqoaPtWtmLTTpdvbt4BZF5H6FIlJtXi9H7qLOM1dLYonkOX2Ncezx5NDCZ9tMb2qxVMF4IocYsQnNSnMfjQF1w==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/instructions@2.3.0': resolution: {integrity: sha512-PLMsmaIKu7hEAzyElrk2T7JJx4D+9eRwebhFZpy2PXziNSmFF929eRHKUsKqBFM3cYR1Yy3m6roBZfA+bGE/oQ==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.3.3' - '@solana/instructions@3.0.3': - resolution: {integrity: sha512-4csIi8YUDb5j/J+gDzmYtOvq7ZWLbCxj4t0xKn+fPrBk/FD2pK29KVT3Fu7j4Lh1/ojunQUP9X4NHwUexY3PnA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/keys@2.3.0': resolution: {integrity: sha512-ZVVdga79pNH+2pVcm6fr2sWz9HTwfopDVhYb0Lh3dh+WBmJjwkabXEIHey2rUES7NjFa/G7sV8lrUn/v8LDCCQ==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.3.3' - '@solana/keys@3.0.3': - resolution: {integrity: sha512-tp8oK9tMadtSIc4vF4aXXWkPd4oU5XPW8nf28NgrGDWGt25fUHIydKjkf2hPtMt9i1WfRyQZ33B5P3dnsNqcPQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/kit@2.3.0': resolution: {integrity: sha512-sb6PgwoW2LjE5oTFu4lhlS/cGt/NB3YrShEyx7JgWFWysfgLdJnhwWThgwy/4HjNsmtMrQGWVls0yVBHcMvlMQ==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.3.3' - '@solana/kit@3.0.3': - resolution: {integrity: sha512-CEEhCDmkvztd1zbgADsEQhmj9GyWOOGeW1hZD+gtwbBSF5YN1uofS/pex5MIh/VIqKRj+A2UnYWI1V+9+q/lyQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/nominal-types@2.3.0': resolution: {integrity: sha512-uKlMnlP4PWW5UTXlhKM8lcgIaNj8dvd8xO4Y9l+FVvh9RvW2TO0GwUO6JCo7JBzCB0PSqRJdWWaQ8pu1Ti/OkA==} engines: {node: '>=20.18.0'} @@ -3727,48 +3842,24 @@ packages: peerDependencies: typescript: '>=5.3.3' - '@solana/programs@3.0.3': - resolution: {integrity: sha512-JZlVE3/AeSNDuH3aEzCZoDu8GTXkMpGXxf93zXLzbxfxhiQ/kHrReN4XE/JWZ/uGWbaFZGR5B3UtdN2QsoZL7w==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/promises@2.3.0': resolution: {integrity: sha512-GjVgutZKXVuojd9rWy1PuLnfcRfqsaCm7InCiZc8bqmJpoghlyluweNc7ml9Y5yQn1P2IOyzh9+p/77vIyNybQ==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.3.3' - '@solana/promises@3.0.3': - resolution: {integrity: sha512-K+UflGBVxj30XQMHTylHHZJdKH5QG3oj5k2s42GrZ/Wbu72oapVJySMBgpK45+p90t8/LEqV6rRPyTXlet9J+Q==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/rpc-api@2.3.0': resolution: {integrity: sha512-UUdiRfWoyYhJL9PPvFeJr4aJ554ob2jXcpn4vKmRVn9ire0sCbpQKYx6K8eEKHZWXKrDW8IDspgTl0gT/aJWVg==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.3.3' - '@solana/rpc-api@3.0.3': - resolution: {integrity: sha512-Yym9/Ama62OY69rAZgbOCAy1QlqaWAyb0VlqFuwSaZV1pkFCCFSwWEJEsiN1n8pb2ZP+RtwNvmYixvWizx9yvA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/rpc-parsed-types@2.3.0': resolution: {integrity: sha512-B5pHzyEIbBJf9KHej+zdr5ZNAdSvu7WLU2lOUPh81KHdHQs6dEb310LGxcpCc7HVE8IEdO20AbckewDiAN6OCg==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.3.3' - '@solana/rpc-parsed-types@3.0.3': - resolution: {integrity: sha512-/koM05IM2fU91kYDQxXil3VBNlOfcP+gXE0js1sdGz8KonGuLsF61CiKB5xt6u1KEXhRyDdXYLjf63JarL4Ozg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/rpc-spec-types@2.3.0': resolution: {integrity: sha512-xQsb65lahjr8Wc9dMtP7xa0ZmDS8dOE2ncYjlvfyw/h4mpdXTUdrSMi6RtFwX33/rGuztQ7Hwaid5xLNSLvsFQ==} engines: {node: '>=20.18.0'} @@ -3799,12 +3890,6 @@ packages: peerDependencies: typescript: '>=5.3.3' - '@solana/rpc-subscriptions-api@3.0.3': - resolution: {integrity: sha512-MGgVK3PUS15qsjuhimpzGZrKD/CTTvS0mAlQ0Jw84zsr1RJVdQJK/F0igu07BVd172eTZL8d90NoAQ3dahW5pA==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/rpc-subscriptions-channel-websocket@2.3.0': resolution: {integrity: sha512-2oL6ceFwejIgeWzbNiUHI2tZZnaOxNTSerszcin7wYQwijxtpVgUHiuItM/Y70DQmH9sKhmikQp+dqeGalaJxw==} engines: {node: '>=20.18.0'} @@ -3812,61 +3897,30 @@ packages: typescript: '>=5.3.3' ws: ^8.18.0 - '@solana/rpc-subscriptions-channel-websocket@3.0.3': - resolution: {integrity: sha512-zUzUlb8Cwnw+SHlsLrSqyBRtOJKGc+FvSNJo/vWAkLShoV0wUDMPv7VvhTngJx3B/3ANfrOZ4i08i9QfYPAvpQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - ws: ^8.18.0 - '@solana/rpc-subscriptions-spec@2.3.0': resolution: {integrity: sha512-rdmVcl4PvNKQeA2l8DorIeALCgJEMSu7U8AXJS1PICeb2lQuMeaR+6cs/iowjvIB0lMVjYN2sFf6Q3dJPu6wWg==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.3.3' - '@solana/rpc-subscriptions-spec@3.0.3': - resolution: {integrity: sha512-9KpQ32OBJWS85mn6q3gkM0AjQe1LKYlMU7gpJRrla/lvXxNLhI95tz5K6StctpUreVmRWTVkNamHE69uUQyY8A==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/rpc-subscriptions@2.3.0': resolution: {integrity: sha512-Uyr10nZKGVzvCOqwCZgwYrzuoDyUdwtgQRefh13pXIrdo4wYjVmoLykH49Omt6abwStB0a4UL5gX9V4mFdDJZg==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.3.3' - '@solana/rpc-subscriptions@3.0.3': - resolution: {integrity: sha512-LRvz6NaqvtsYFd32KwZ+rwYQ9XCs+DWjV8BvBLsJpt9/NWSuHf/7Sy/vvP6qtKxut692H/TMvHnC4iulg0WmiQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/rpc-transformers@2.3.0': resolution: {integrity: sha512-UuHYK3XEpo9nMXdjyGKkPCOr7WsZsxs7zLYDO1A5ELH3P3JoehvrDegYRAGzBS2VKsfApZ86ZpJToP0K3PhmMA==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.3.3' - '@solana/rpc-transformers@3.0.3': - resolution: {integrity: sha512-lzdaZM/dG3s19Tsk4mkJA5JBoS1eX9DnD7z62gkDwrwJDkDBzkAJT9aLcsYFfTmwTfIp6uU2UPgGYc97i1wezw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/rpc-transport-http@2.3.0': resolution: {integrity: sha512-HFKydmxGw8nAF5N+S0NLnPBDCe5oMDtI2RAmW8DMqP4U3Zxt2XWhvV1SNkAldT5tF0U1vP+is6fHxyhk4xqEvg==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.3.3' - '@solana/rpc-transport-http@3.0.3': - resolution: {integrity: sha512-bIXFwr2LR5A97Z46dI661MJPbHnPfcShBjFzOS/8Rnr8P4ho3j/9EUtjDrsqoxGJT3SLWj5OlyXAlaDAvVTOUQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/rpc-types@2.3.0': resolution: {integrity: sha512-O09YX2hED2QUyGxrMOxQ9GzH1LlEwwZWu69QbL4oYmIf6P5dzEEHcqRY6L1LsDVqc/dzAdEs/E1FaPrcIaIIPw==} engines: {node: '>=20.18.0'} @@ -3885,36 +3939,18 @@ packages: peerDependencies: typescript: '>=5.3.3' - '@solana/rpc@3.0.3': - resolution: {integrity: sha512-3oukAaLK78GegkKcm6iNmRnO4mFeNz+BMvA8T56oizoBNKiRVEq/6DFzVX/LkmZ+wvD601pAB3uCdrTPcC0YKQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/signers@2.3.0': resolution: {integrity: sha512-OSv6fGr/MFRx6J+ZChQMRqKNPGGmdjkqarKkRzkwmv7v8quWsIRnJT5EV8tBy3LI4DLO/A8vKiNSPzvm1TdaiQ==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.3.3' - '@solana/signers@3.0.3': - resolution: {integrity: sha512-UwCd/uPYTZiwd283JKVyOWLLN5sIgMBqGDyUmNU3vo9hcmXKv5ZGm/9TvwMY2z35sXWuIOcj7etxJ8OoWc/ObQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/subscribable@2.3.0': resolution: {integrity: sha512-DkgohEDbMkdTWiKAoatY02Njr56WXx9e/dKKfmne8/Ad6/2llUIrax78nCdlvZW9quXMaXPTxZvdQqo9N669Og==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.3.3' - '@solana/subscribable@3.0.3': - resolution: {integrity: sha512-FJ27LKGHLQ5GGttPvTOLQDLrrOZEgvaJhB7yYaHAhPk25+p+erBaQpjePhfkMyUbL1FQbxn1SUJmS6jUuaPjlQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/sysvars@2.3.0': resolution: {integrity: sha512-LvjADZrpZ+CnhlHqfI5cmsRzX9Rpyb1Ox2dMHnbsRNzeKAMhu9w4ZBIaeTdO322zsTr509G1B+k2ABD3whvUBA==} engines: {node: '>=20.18.0'} @@ -3933,36 +3969,18 @@ packages: peerDependencies: typescript: '>=5.3.3' - '@solana/transaction-confirmation@3.0.3': - resolution: {integrity: sha512-dXx0OLtR95LMuARgi2dDQlL1QYmk56DOou5q9wKymmeV3JTvfDExeWXnOgjRBBq/dEfj4ugN1aZuTaS18UirFw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/transaction-messages@2.3.0': resolution: {integrity: sha512-bgqvWuy3MqKS5JdNLH649q+ngiyOu5rGS3DizSnWwYUd76RxZl1kN6CoqHSrrMzFMvis6sck/yPGG3wqrMlAww==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.3.3' - '@solana/transaction-messages@3.0.3': - resolution: {integrity: sha512-s+6NWRnBhnnjFWV4x2tzBzoWa6e5LiIxIvJlWwVQBFkc8fMGY04w7jkFh0PM08t/QFKeXBEWkyBDa/TFYdkWug==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/transactions@2.3.0': resolution: {integrity: sha512-LnTvdi8QnrQtuEZor5Msje61sDpPstTVwKg4y81tNxDhiyomjuvnSNLAq6QsB9gIxUqbNzPZgOG9IU4I4/Uaug==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.3.3' - '@solana/transactions@3.0.3': - resolution: {integrity: sha512-iMX+n9j4ON7H1nKlWEbMqMOpKYC6yVGxKKmWHT1KdLRG7v+03I4DnDeFoI+Zmw56FA+7Bbne8jwwX60Q1vk/MQ==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - '@solana/wallet-adapter-alpha@0.1.14': resolution: {integrity: sha512-ZSEvQmTdkiXPeHWIHbvdU4yDC5PfyTqG/1ZKIf2Uo6c+HslMkYer7mf9HUqJJ80dU68XqBbzBlIv34LCDVWijw==} engines: {node: '>=20'} @@ -4089,8 +4107,8 @@ packages: peerDependencies: '@solana/web3.js': ^1.98.0 - '@solana/wallet-adapter-phantom@0.9.28': - resolution: {integrity: sha512-g/hcuWwWjzo5l8I4vor9htniVhLxd/GhoVK52WSd0hy8IZ8/FBnV3u8ABVTheLqO13d0IVy+xTxoVBbDaMjLog==} + '@solana/wallet-adapter-phantom@0.9.29': + resolution: {integrity: sha512-nAFvjtX2S1aRLzi70CSLajsmixGxev+1O1GzGzety4eyfv2AYxTHEuDIJySugcMTtSTleVpOMhHXjzlUkxuf1w==} engines: {node: '>=20'} peerDependencies: '@solana/web3.js': ^1.98.0 @@ -4126,8 +4144,8 @@ packages: peerDependencies: '@solana/web3.js': ^1.98.0 - '@solana/wallet-adapter-solflare@0.6.32': - resolution: {integrity: sha512-FIqNyooif3yjPnw2gPNBZnsG6X9JYSrwCf1Oa0NN4/VxQcPjzGqvc+Tq1+js/nBOHju5roToeMFTbwNTdEOuZw==} + '@solana/wallet-adapter-solflare@0.6.33': + resolution: {integrity: sha512-eYDjpXMF+LyfWf5jG89IqJG2ehaEsWvv7P3y3NjPmhCqe0WjfFc2EwED19G4R0JUqdhnY5zFj+gn3pJ3ystGhg==} engines: {node: '>=20'} peerDependencies: '@solana/web3.js': ^1.98.0 @@ -4186,8 +4204,8 @@ packages: peerDependencies: '@solana/web3.js': ^1.98.0 - '@solana/wallet-adapter-wallets@0.19.37': - resolution: {integrity: sha512-LUHK2Zh6gELt0+kt+viIMxqc/bree65xZgTPXXBzjhbJNKJaV4D4wanYG2LM9O35/avehZ5BTLMHltbkibE+GA==} + '@solana/wallet-adapter-wallets@0.19.38': + resolution: {integrity: sha512-uwWP3DZe8uG9X80SMHo8+NvXaat8ChBnZExTcvQVQhxhvzsYdS04YyVhCiU0zFyPpmkZuBCsArHXDQnFr1XhjA==} engines: {node: '>=20'} peerDependencies: '@solana/web3.js': ^1.98.0 @@ -4239,64 +4257,11 @@ packages: '@solana/web3.js@1.98.4': resolution: {integrity: sha512-vv9lfnvjUsRiq//+j5pBdXig0IQdtzA0BRZ3bXEP4KaIyF1CcaydWqgyzQgfZMNIsWNWmG+AUHwPy4AHOD6gpw==} - '@solflare-wallet/metamask-sdk@1.0.3': - resolution: {integrity: sha512-os5Px5PTMYKGS5tzOoyjDxtOtj0jZKnbI1Uwt8+Jsw1HHIA+Ib2UACCGNhQ/un2f8sIbTfLD1WuucNMOy8KZpQ==} - peerDependencies: - '@solana/web3.js': '*' - '@solflare-wallet/sdk@1.4.2': resolution: {integrity: sha512-jrseNWipwl9xXZgrzwZF3hhL0eIVxuEtoZOSLmuPuef7FgHjstuTtNJAeT4icA7pzdDV4hZvu54pI2r2f7SmrQ==} peerDependencies: '@solana/web3.js': '*' - '@stablelib/aead@1.0.1': - resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} - - '@stablelib/binary@1.0.1': - resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} - - '@stablelib/bytes@1.0.1': - resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} - - '@stablelib/chacha20poly1305@1.0.1': - resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} - - '@stablelib/chacha@1.0.1': - resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} - - '@stablelib/constant-time@1.0.1': - resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} - - '@stablelib/hash@1.0.1': - resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} - - '@stablelib/hkdf@1.0.1': - resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} - - '@stablelib/hmac@1.0.1': - resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} - - '@stablelib/int@1.0.1': - resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} - - '@stablelib/keyagreement@1.0.1': - resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} - - '@stablelib/poly1305@1.0.1': - resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} - - '@stablelib/random@1.0.2': - resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} - - '@stablelib/sha256@1.0.1': - resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} - - '@stablelib/wipe@1.0.1': - resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} - - '@stablelib/x25519@1.0.3': - resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} - '@stacks/common@6.16.0': resolution: {integrity: sha512-PnzvhrdGRMVZvxTulitlYafSK4l02gPCBBoI9QEoTqgSnv62oaOXhYAUUkTMFKxdHW1seVEwZsrahuXiZPIAwg==} @@ -4306,24 +4271,6 @@ packages: '@stacks/transactions@6.17.0': resolution: {integrity: sha512-FUah2BRgV66ApLcEXGNGhwyFTRXqX5Zco3LpiM3essw8PF0NQlHwwdPgtDko5RfrJl3LhGXXe/30nwsfNnB3+g==} - '@stakekit/api-hooks@0.0.113': - resolution: {integrity: sha512-bRAMP0bkWjUYNNwzCyz4CirHIiaUHQkGqSSSwlue8pGG0/6eEIjQULxwrUcdQqppZ+l7QpjrON6JzLuiRp6ZRQ==} - peerDependencies: - '@faker-js/faker': ^9 - '@tanstack/react-query': '>=5' - msw: ^2 - react: '>=18' - peerDependenciesMeta: - '@faker-js/faker': - optional: true - '@tanstack/react-query': - optional: true - msw: - optional: true - - '@stakekit/common@0.0.61': - resolution: {integrity: sha512-NHaJ9Yq5ykjryWB/EIACcHvq5mUrqU5eNfMIcv9Ovadq0TOqfKAJSs8FcFQu6/p2zAHcFywJQUbNOunOsTR8xg==} - '@stakekit/rainbowkit@2.2.11': resolution: {integrity: sha512-Cmrqmhfuis+KnXPAWV/0pswVXd0nLTtq4lG1PMK+XHjIzWzPZBfA/UMx83Om2TfyOrBbHSEzfwcqI9a2mkBecQ==} engines: {node: '>=12.4'} @@ -4334,8 +4281,8 @@ packages: viem: 2.38.0 wagmi: ^2.19 - '@standard-schema/spec@1.0.0': - resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} '@starknet-io/types-js@0.7.10': resolution: {integrity: sha512-1VtCqX4AHWJlRRSYGSn+4X1mqolI1Tdq62IwzoU2vUuEE72S1OlEeGhpvd6XsdqXcfHmVzYfj8k1XtKBQqwo9w==} @@ -4343,118 +4290,48 @@ packages: '@stellar/js-xdr@3.1.2': resolution: {integrity: sha512-VVolPL5goVEIsvuGqDc5uiKxV03lzfWdvYg1KikvwheDmTBO68CKDji3bAZ/kppZrx5iTA8z3Ld5yuytcvhvOQ==} - '@stellar/stellar-base@13.1.0': - resolution: {integrity: sha512-90EArG+eCCEzDGj3OJNoCtwpWDwxjv+rs/RNPhvg4bulpjN/CSRj+Ys/SalRcfM4/WRC5/qAfjzmJBAuquWhkA==} - engines: {node: '>=18.0.0'} + '@stellar/stellar-base@14.1.0': + resolution: {integrity: sha512-A8kFli6QGy22SRF45IjgPAJfUNGjnI+R7g4DF5NZYVsD1kGf7B4ITyc4OPclLV9tqNI4/lXxafGEw0JEUbHixw==} + engines: {node: '>=20.0.0'} - '@stellar/stellar-sdk@13.3.0': - resolution: {integrity: sha512-8+GHcZLp+mdin8gSjcgfb/Lb6sSMYRX6Nf/0LcSJxvjLQR0XHpjGzOiRbYb2jSXo51EnA6kAV5j+4Pzh5OUKUg==} - engines: {node: '>=18.0.0'} + '@stellar/stellar-sdk@14.2.0': + resolution: {integrity: sha512-7nh2ogzLRMhfkIC0fGjn1LHUzk3jqVw8tjAuTt5ADWfL9CSGBL18ILucE9igz2L/RU2AZgeAvhujAnW91Ut/oQ==} + engines: {node: '>=20.0.0'} '@substrate/ss58-registry@1.51.0': resolution: {integrity: sha512-TWDurLiPxndFgKjVavCniytBIw+t4ViOi7TYp9h/D0NMmkEc9klFTo+827eyEJ0lELpqO207Ey7uGxUa+BS1jQ==} - '@swc/core-darwin-arm64@1.15.1': - resolution: {integrity: sha512-vEPrVxegWIjKEz+1VCVuKRY89jhokhSmQ/YXBWLnmLj9cI08G61RTZJvdsIcjYUjjTu7NgZlYVK+b2y0fbh11g==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - - '@swc/core-darwin-x64@1.15.1': - resolution: {integrity: sha512-z9QguKxE3aldvwKHHDg5OlKehasbJBF1lacn5CnN6SlrHbdwokXHFA3nIoO3Bh1Tw7bCgFtdIR4jKlTTn3kBZA==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - - '@swc/core-linux-arm-gnueabihf@1.15.1': - resolution: {integrity: sha512-yS2FHA8E4YeiPG9YeYk/6mKiCWuXR5RdYlCmtlGzKcjWbI4GXUVe7+p9C0M6myRt3zdj3M1knmJxk52MQA9EZQ==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - - '@swc/core-linux-arm64-gnu@1.15.1': - resolution: {integrity: sha512-IFrjDu7+5Y61jLsUqBVXlXutDoPBX10eEeNTjW6C1yzm+cSTE7ayiKXMIFri4gEZ4VpXS6MUgkwjxtDpIXTh+w==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@swc/core-linux-arm64-musl@1.15.1': - resolution: {integrity: sha512-fKzP9mRQGbhc5QhJPIsqKNNX/jyWrZgBxmo3Nz1SPaepfCUc7RFmtcJQI5q8xAun3XabXjh90wqcY/OVyg2+Kg==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@swc/core-linux-x64-gnu@1.15.1': - resolution: {integrity: sha512-ZLjMi138uTJxb+1wzo4cB8mIbJbAsSLWRNeHc1g1pMvkERPWOGlem+LEYkkzaFzCNv1J8aKcL653Vtw8INHQeg==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@swc/core-linux-x64-musl@1.15.1': - resolution: {integrity: sha512-jvSI1IdsIYey5kOITzyajjofXOOySVitmLxb45OPUjoNojql4sDojvlW5zoHXXFePdA6qAX4Y6KbzAOV3T3ctA==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@swc/core-win32-arm64-msvc@1.15.1': - resolution: {integrity: sha512-X/FcDtNrDdY9r4FcXHt9QxUqC/2FbQdvZobCKHlHe8vTSKhUHOilWl5EBtkFVfsEs4D5/yAri9e3bJbwyBhhBw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - - '@swc/core-win32-ia32-msvc@1.15.1': - resolution: {integrity: sha512-vfheiWBux8PpC87oy1cshcqzgH7alWYpnVq5jWe7xuVkjqjGGDbBUKuS84eJCdsWcVaB5EXIWLKt+11W3/BOwA==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - - '@swc/core-win32-x64-msvc@1.15.1': - resolution: {integrity: sha512-n3Ppn0LSov/IdlANq+8kxHqENuJRX5XtwQqPgQsgwKIcFq22u17NKfDs9vL5PwRsEHY6Xd67pnOqQX0h4AvbuQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - - '@swc/core@1.15.1': - resolution: {integrity: sha512-s9GN3M2jA32k+StvuS9uGe4ztf5KVGBdlJMMC6LR6Ah23Lq/CWKVcC3WeQi8qaAcLd+DiddoNCNMUWymLv+wWQ==} - engines: {node: '>=10'} - peerDependencies: - '@swc/helpers': '>=0.5.17' - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@swc/types@0.1.25': - resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} - - '@tanstack/query-core@5.90.12': - resolution: {integrity: sha512-T1/8t5DhV/SisWjDnaiU2drl6ySvsHj1bHBCWNXd+/T+Hh1cf6JodyEYMd5sgwm+b/mETT4EV3H+zCVczCU5hg==} + '@tanstack/query-core@5.100.10': + resolution: {integrity: sha512-8UR0yJR+GiQ40m3lPhUr0xbfAupe6GSQiksSBSa9SM2NjezFyxXCIA69/lz8cSoNKZLrw1/PktIyQBJcVeMi3w==} - '@tanstack/react-query@5.90.12': - resolution: {integrity: sha512-graRZspg7EoEaw0a8faiUASCyJrqjKPdqJ9EwuDRUF9mEYJ1YPczI9H+/agJ0mOJkPCJDk0lsz5QTrLZ/jQ2rg==} + '@tanstack/react-query@5.100.10': + resolution: {integrity: sha512-FLaZf2RCrA/Zgp4aiu5tG3TyasTRO7aZ99skxQpr3Hg/zXOhu6yq5FZCYQ/tRaJtM9ylnoK8tFK7PolXQadv6Q==} peerDependencies: react: ^18 || ^19 - '@tanstack/react-virtual@3.13.13': - resolution: {integrity: sha512-4o6oPMDvQv+9gMi8rE6gWmsOjtUZUYIJHv7EB+GblyYdi8U6OqLl8rhHWIUZSL1dUU2dPwTdTgybCKf9EjIrQg==} + '@tanstack/react-virtual@3.13.24': + resolution: {integrity: sha512-aIJvz5OSkhNIhZIpYivrxrPTKYsjW9Uzy+sP/mx0S3sev2HyvPb7xmjbYvokzEpfgYHy/HjzJ2zFAETuUfgCpg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/virtual-core@3.13.13': - resolution: {integrity: sha512-uQFoSdKKf5S8k51W5t7b2qpfkyIbdHMzAn+AMQvHPxKUPeo1SsGaA4JRISQT87jm28b7z8OEqPcg1IOZagQHcA==} + '@tanstack/virtual-core@3.14.0': + resolution: {integrity: sha512-JLANqGy/D6k4Ujmh8Tr25lGimuOXNiaVyXaCAZS0W+1390sADdGnyUdSWNIfd49gebtIxGMij4IktRVzrdr12Q==} + + '@testing-library/jest-dom@5.17.0': + resolution: {integrity: sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==} + engines: {node: '>=8', npm: '>=6', yarn: '>=1'} + + '@ton/core@0.62.1': + resolution: {integrity: sha512-RaEGBo9gCf6ZHyS8SKq1K53pswvYW9E5A6vwUuzFBTRX14g4qMDlB9F+fq4aBE5kN7XyVr8ScQtOJfQj41usCw==} + peerDependencies: + '@ton/crypto': '>=3.2.0' - '@ton/core@0.62.0': - resolution: {integrity: sha512-GCYlzzx11rSESKkiHvNy9tL8zWth+ZtUbvV29WH478FvBp8xTw24AyoigwXWNV+OLCAcnwlGhZpTpxjD3wzCwA==} + '@ton/core@0.63.1': + resolution: {integrity: sha512-hDWMjlKzc18W2E4OeV3hUP8ohRJNHPD4Wd1+AQJj8zshZyCRT0usrvnExgbNUTo/vntDqCGMzgYWbXxyaA+L4g==} peerDependencies: '@ton/crypto': '>=3.2.0' @@ -4470,14 +4347,14 @@ packages: '@tonconnect/isomorphic-fetch@0.0.3': resolution: {integrity: sha512-jIg5nTrDwnite4fXao3dD83eCpTvInTjZon/rZZrIftIegh4XxyVb5G2mpMqXrVGk1e8SVXm3Kj5OtfMplQs0w==} - '@tonconnect/protocol@2.3.0': - resolution: {integrity: sha512-OxrmcXF/EsSdGeASP9VpTRojuMtTV87DKYFLRq4ZJvF/Hirfm2cgcxzzj2uksEGm5IIR010UWo6b38RuokNwFQ==} + '@tonconnect/protocol@2.4.0': + resolution: {integrity: sha512-3xg6sMWIrSgW7/f7iPgOb2BI3LaMScjDMqfu20fcEMbOVvNFk3TGAUKK5cJ3pfvUINsyLgPoylcIbPap37jXiA==} - '@tonconnect/sdk@3.3.1': - resolution: {integrity: sha512-lhXJu95VvbD36u5mMPg2sg+w4GQwkrYnHeJ8rVveu2N7UPwt0jvrEqKlvf7Ss1gh5RDtzs35SS3GbJlaIOAJNA==} + '@tonconnect/sdk@3.4.1': + resolution: {integrity: sha512-eVH8erAFout89gXYHXua/es+mmLPiW1r7ng9hgHKYQv85HLq8/zzQEkbJpbTlnIuQ6CJ/QKchjMsIgYz3BYCUQ==} - '@tonconnect/ui@2.3.1': - resolution: {integrity: sha512-G1hKn5TrqFYztbR94EG8YuhGUpp7wY8PjC1Fu7/d8rFg7XnPGlUcGmuqH8+2lYrb9Ms0M7v6+5U6S4q4+yCQtQ==} + '@tonconnect/ui@2.4.4': + resolution: {integrity: sha512-XgIHAkdimDk+YeRDPsQp7eOz2lM4aScYL3hiTP1Z9YgWRVROjEqTbw5ZP9pt6rgmYTzL26QpqhI6uNTFdYNFIA==} '@toruslabs/base-controllers@5.11.0': resolution: {integrity: sha512-5AsGOlpf3DRIsd6PzEemBoRq+o2OhgSFXj5LZD6gXcBlfe0OpF+ydJb7Q8rIt5wwpQLNJCs8psBUbqIv7ukD2w==} @@ -4534,56 +4411,59 @@ packages: peerDependencies: '@babel/runtime': 7.x - '@trezor/analytics@1.4.2': - resolution: {integrity: sha512-FgjJekuDvx1TjiDemvpnPiRck7Kp/v1ZeppsBYpQR3yGKyKzbG1pVpcl0RyI2237raXxbORaz7XV8tcyjq4BXg==} + '@trezor/analytics@1.5.0': + resolution: {integrity: sha512-evILW5XJEmfPlf0TY1duOLtGJ47pdGeSKVE3P75ODEUsRNxtPVqlkOUBPmYpCxPnzS8XDmkatT8lf9/DF0G6nA==} peerDependencies: tslib: ^2.6.2 - '@trezor/blockchain-link-types@1.4.2': - resolution: {integrity: sha512-KThBmGOFLJAFnmou9ThQhnjEVxfYPfEwMOaVTVNgJ+NAkt5rEMx0SKBBelCGZ63XtOLWdVPglFo83wtm+I9Vpg==} + '@trezor/blockchain-link-types@1.5.1': + resolution: {integrity: sha512-Idavz6LwLBW8sXc69fh5AJEnl666EDl2Nt3io7updvBgOR0/P12I900DgjNhCKtiWuv66A33/5RE7zLcj3lfnw==} peerDependencies: tslib: ^2.6.2 - '@trezor/blockchain-link-utils@1.4.2': - resolution: {integrity: sha512-PBEBrdtHn0dn/c9roW6vjdHI/CucMywJm5gthETZAZmzBOtg6ZDpLTn+qL8+jZGIbwcAkItrQ3iHrHhR6xTP5g==} + '@trezor/blockchain-link-utils@1.5.2': + resolution: {integrity: sha512-OSS5OEE98FMnYfjoEALPjBt7ebjC/FKnq3HOolHdEWXBpVlXZNN2+Vo1R9J6WbZUU087sHuUTJJy/GJYWY13Tg==} peerDependencies: tslib: ^2.6.2 - '@trezor/blockchain-link@2.5.2': - resolution: {integrity: sha512-/egUnIt/fR57QY33ejnkPMhZwRvVRS/pUCoqdVIGitN1Q7QZsdopoR4hw37hdK/Ux/q1ZLH6LZz7U2UFahjppw==} + '@trezor/blockchain-link@2.6.2': + resolution: {integrity: sha512-HMz+Dm6nMflqRkaebMqpv3uNnVkRrb6lD2HKTHNBGhjVbqf0wRzJ8JoQ08wn/sF00ljJZz8pGnpcMYHJNxE+wQ==} peerDependencies: tslib: ^2.6.2 - '@trezor/connect-analytics@1.3.5': - resolution: {integrity: sha512-Aoi+EITpZZycnELQJEp9XV0mHFfaCQ6JE0Ka5mWuHtOny3nJdFLBrih4ipcEXJdJbww6pBxRJB09sJ19cTyacA==} + '@trezor/connect-analytics@1.4.0': + resolution: {integrity: sha512-hy2J2oeIhRC/e1bOWXo5dsVMVnDwO2UKnxhR6FD8PINR3jgM6PWAXc6k33WJsBcyiTzwMP7/xPysLcgNJH5o4w==} peerDependencies: tslib: ^2.6.2 - '@trezor/connect-common@0.4.2': - resolution: {integrity: sha512-ND5TTjrTPnJdfl8Wlhl9YtFWnY2u6FHM1dsPkNYCmyUKIMoflJ5cLn95Xabl6l1btHERYn3wTUvgEYQG7r8OVQ==} + '@trezor/connect-common@0.5.1': + resolution: {integrity: sha512-wdpVCwdylBh4SBO5Ys40tB/d59UlfjmxgBHDkkLgaR+JcqkthCfiw5VlUrV9wu65lquejAZhA5KQL4mUUUhCow==} peerDependencies: tslib: ^2.6.2 - '@trezor/connect-web@9.6.2': - resolution: {integrity: sha512-QGuCjX8Bx9aCq1Pg52KifbbzYn00FQu9mCTDSgCVGH/HAzbxhcRkDKc86kFwW8z9NdJxw+XeVJq5Ky/js3iEDA==} + '@trezor/connect-web@9.7.3': + resolution: {integrity: sha512-oTI/v9sUJMvLZgLa0seSGyPaumXydRYeAT4OVTQxIaEiL1hOA0yH+UvEfT4WKwxbxOtOqWosD8chP3uuWSArcg==} peerDependencies: tslib: ^2.6.2 - '@trezor/connect@9.6.2': - resolution: {integrity: sha512-XsSERBK+KnF6FPsATuhB9AEM0frekVLwAwFo35MRV9I4P+mdv6tnUiZUq8O8aoPbfJwDjtNJSYv+PMsKuRH6rg==} + '@trezor/connect@9.7.3': + resolution: {integrity: sha512-oAOfvJHT8tPqOXTmCOhn8uTZcoqSDuWAiWXQegx7C46tq+NLg+enkYXxUYEHq/9PmfZAOrUT9VMxZDsXM2thkA==} peerDependencies: tslib: ^2.6.2 - '@trezor/crypto-utils@1.1.4': - resolution: {integrity: sha512-Y6VziniqMPoMi70IyowEuXKqRvBYQzgPAekJaUZTHhR+grtYNRKRH2HJCvuZ8MGmSKUFSYfa7y8AvwALA8mQmA==} + '@trezor/crypto-utils@1.2.0': + resolution: {integrity: sha512-9i1NrfW1IE6JO910ut7xrx4u5LxE++GETbpJhWLj4P5xpuGDDSDLEn/MXaYisls2DpE897aOrGPaa1qyt8V6tw==} peerDependencies: tslib: ^2.6.2 - '@trezor/device-utils@1.1.2': - resolution: {integrity: sha512-R3AJvAo+a3wYVmcGZO2VNl9PZOmDEzCZIlmCJn0BlSRWWd8G9u1qyo/fL9zOwij/YhCaJyokmSHmIEmbY9qpgw==} + '@trezor/device-authenticity@1.1.2': + resolution: {integrity: sha512-313uSXYR4XKDv3CjtCpgHA+yEe9xxqN7EFl/D68FEn70SPsuWI0+2zUvjPPh6TIOh/EcLv7hCO/QTHUAGd7ZWQ==} - '@trezor/env-utils@1.4.2': - resolution: {integrity: sha512-lQvrqcNK5I4dy2MuiLyMuEm0KzY59RIu2GLtc9GsvqyxSPZkADqVzGeLJjXj/vI2ajL8leSpMvmN4zPw3EK8AA==} + '@trezor/device-utils@1.2.0': + resolution: {integrity: sha512-Aqp7pIooFTx21zRUtTI6i1AS4d9Lrx7cclvksh2nJQF9WJvbzuCXshEGkLoOsHwhQrCl3IXfbGuMdA12yDenPA==} + + '@trezor/env-utils@1.5.0': + resolution: {integrity: sha512-u1TN7dMQ5Qhpbae08Z4JJmI9fQrbbJ4yj8eIAsuzMQn6vb+Sg9vbntl+IDsZ1G9WeI73uHTLu1wWMmAgiujH8w==} peerDependencies: expo-constants: '*' expo-localization: '*' @@ -4597,70 +4477,105 @@ packages: react-native: optional: true - '@trezor/protobuf@1.4.2': - resolution: {integrity: sha512-AeIYKCgKcE9cWflggGL8T9gD+IZLSGrwkzqCk3wpIiODd5dUCgEgA4OPBufR6OMu3RWu/Tgu2xviHunijG3LXQ==} + '@trezor/protobuf@1.5.2': + resolution: {integrity: sha512-zViaL1jKue8DUTVEDg0C/lMipqNMd/Z3kr29/+MeZOoupjaXIQ2Lqp3WAMe8hvNTKKX8aNQH9JrbapJ6w9FMXw==} + peerDependencies: + tslib: ^2.6.2 + + '@trezor/protobuf@1.5.3': + resolution: {integrity: sha512-ZYQtapkT2NaiVrAgb91Zprnk3uhl2Wca0bsnJcWgE7vwzqKegjrSorRnkZLqLTKTbCaT6sgkCYtM2hPl4Hqw5Q==} peerDependencies: tslib: ^2.6.2 - '@trezor/protocol@1.2.8': - resolution: {integrity: sha512-8EH+EU4Z1j9X4Ljczjbl9G7vVgcUz41qXcdE+6FOG3BFvMDK4KUVvaOtWqD+1dFpeo5yvWSTEKdhgXMPFprWYQ==} + '@trezor/protocol@1.3.1': + resolution: {integrity: sha512-uNJ83n38+BM+AJKsWza1ocvQ206d6NXJQ8/g+DelPLTj5c37Rj6hFiY5Nb5zgM7DBnq6T8Aa2K8t4TVCzHT1qg==} peerDependencies: tslib: ^2.6.2 - '@trezor/schema-utils@1.3.4': - resolution: {integrity: sha512-guP5TKjQEWe6c5HGx+7rhM0SAdEL5gylpkvk9XmJXjZDnl1Ew81nmLHUs2ghf8Od3pKBe4qjBIMBHUQNaOqWUg==} + '@trezor/schema-utils@1.4.0': + resolution: {integrity: sha512-K7upSeh7VDrORaIC4KAxYVW93XNlohmUnH5if/5GKYmTdQSRp1nBkO6Jm+Z4hzIthdnz/1aLgnbeN3bDxWLRxA==} peerDependencies: tslib: ^2.6.2 - '@trezor/transport@1.5.2': - resolution: {integrity: sha512-rYP87zdVll2bNBtsD3VxJq0yjaNvIClcgszZjQwVTQxpKGFPkx8bLSpAGI05R9qfxusZJCfYarjX3qki9nHYPw==} + '@trezor/transport@1.6.3': + resolution: {integrity: sha512-GEi9KfiJsBgT/MCGNDIn9RDeXceLaAPjJT/GCayirXaCr3KnlpZCs6LGYkrjqapxiBm73nxM+BctKBKhpUl2cQ==} peerDependencies: tslib: ^2.6.2 - '@trezor/type-utils@1.1.8': - resolution: {integrity: sha512-VtvkPXpwtMtTX9caZWYlMMTmhjUeDq4/1LGn0pSdjd4OuL/vQyuPWXCT/0RtlnRraW6R2dZF7rX2UON2kQIMTQ==} + '@trezor/type-utils@1.2.0': + resolution: {integrity: sha512-+E2QntxkyQuYfQQyl8RvT01tq2i5Dp/LFUOXuizF+KVOqsZBjBY43j5hewcCO3+MokD7deDiPyekbUEN5/iVlw==} - '@trezor/utils@9.4.2': - resolution: {integrity: sha512-Fm3m2gmfXsgv4chqn5HX8e8dElEr2ibBJSJ7HE3bsHh/1OSQcDdzsSioAK04Fo9ws/v7n6lt+QBZ6fGmwyIkZQ==} + '@trezor/utils@9.5.0': + resolution: {integrity: sha512-kdyMyDbxzvOZmwBNvTjAK+C/kzyOz8T4oUbFvq+KaXn5mBFf1uf8rq5X2HkxgdYRPArtHS3PxLKsfkNCdhCYtQ==} peerDependencies: tslib: ^2.6.2 - '@trezor/utxo-lib@2.4.2': - resolution: {integrity: sha512-dTXfBg/cEKnmHM5CLG5+0qrp6fqOfwxqe8YPACdKeM7g1XJKCGDAuFpDUVeT3lrcUsTh6bEMHM06z4H3gZp5MQ==} + '@trezor/utxo-lib@2.5.0': + resolution: {integrity: sha512-Fa2cZh0037oX6AHNLfpFIj65UR/OoX0ZJTocFuQASe77/1PjZHysf6BvvGfmzuFToKfrAQ+DM/1Sx+P/vnyNmA==} peerDependencies: tslib: ^2.6.2 - '@trezor/websocket-client@1.2.2': - resolution: {integrity: sha512-vu9L1V/5yh8LHQCmsGC9scCnihELsVuR5Tri1IvW3CdgTUFFcfjsEgXsFqFME3HlxuUmx6qokw0Gx/o0/hzaSQ==} + '@trezor/websocket-client@1.3.0': + resolution: {integrity: sha512-9KQSaVc3NtmM6rFFj1e+9bM0C5mVKVidbnxlfzuBJu7G2YMRdIdLPcAXhvmRZjs40uzDuBeApK+p547kODz2ug==} peerDependencies: tslib: ^2.6.2 - '@tronweb3/tronwallet-abstract-adapter@1.1.10': - resolution: {integrity: sha512-gZExaEZwPfI9oI7qSi56p/5Zl/DEzo1JlcD3lQzz1cuz0rZmEFpIqDS2mhY4r/IwEPwilIU7lg7T8/RQDVk9gA==} + '@tronweb3/tronwallet-abstract-adapter@1.1.13': + resolution: {integrity: sha512-Sv1FUo5A1fNgc2oZ2LMJ7SmA5TpW5MSWTNjnWJ8t6Z+aRfLbc/s8nkPPLqm0YfR+Sa80sLhMfqJsJzYf73ynMg==} engines: {node: '>=16', pnpm: '>=7'} - '@tronweb3/tronwallet-adapter-bitkeep@1.1.7': - resolution: {integrity: sha512-J557vdOZoZOSu4CDQO+WpaXcnmOSzHxURepnlpvhnCYHvY5cZhPKVTDI4CfxarMmryExxOXjnnomWMj6o/nY1A==} + '@tronweb3/tronwallet-adapter-bitkeep@1.1.8': + resolution: {integrity: sha512-TqCfYTBhPMm9kW6GW9gsxNiyuFeqdkvvyDjfGD8L2o4KExNKOSuGOCU/Qgwo0imwtmPg8LAWZzMBWxQGfGugIQ==} engines: {node: '>=16', pnpm: '>=7'} - '@tronweb3/tronwallet-adapter-ledger@1.1.11': - resolution: {integrity: sha512-r0S/4W9fszd247nKa+e/QWTdd1q6crqtUsHumbkT6YSU//tAy2iDoI9Ecz5o1ORabZ5WL7nLiuEr/ZuqCYcabA==} + '@tronweb3/tronwallet-adapter-ledger@1.1.13': + resolution: {integrity: sha512-pMjO9dxIFA53WsTbUTXA4NPocST4qXXDvpXx7WMTvm1ingBliOH5Jn2YwKFQ6B1dbcU/hBXWNGO6dN/K9ATmyQ==} engines: {node: '>=16', pnpm: '>=7'} - '@tronweb3/tronwallet-adapter-tronlink@1.1.13': - resolution: {integrity: sha512-Oq5L0FyBM+g49DCr0DYdSx8xuhiqIlKoBTPNVmCTSDoWnoZpIh0XE33Axm/4OUMO2NHFpQMvP3pFo7QIllOZ/w==} + '@tronweb3/tronwallet-adapter-tronlink@1.1.16': + resolution: {integrity: sha512-PqwiRQdcZ3y+YiVX2kPcmLZtHDD9IDw/9oTjAyla/jFkaaEpMDpPRV4S6yulDyHzjVOJD9yOan9EXtr0KU+aKg==} engines: {node: '>=16', pnpm: '>=7'} - '@tronweb3/tronwallet-adapter-walletconnect@3.0.0': - resolution: {integrity: sha512-0b0NQYdSS6bkECImdHlstXamirWXr+ITOQwORozsAg6JBMBuXIBgW1jMdqXCQgHf7JS39Hw78NNfkjkihHuXGQ==} + '@tronweb3/tronwallet-adapter-walletconnect@3.0.3': + resolution: {integrity: sha512-ePLs2LMgLkhi0ldXyK2ClxN34N9CeOG8YxgERnAm7tVj30XQEXk4S6yn1QHXHfyU1SJSGaveVl0Mp7lCiVwyhA==} engines: {node: '>=16', pnpm: '>=7'} - '@tronweb3/walletconnect-tron@4.0.0': - resolution: {integrity: sha512-Pv2g2rGlBXHSfCPmTP6qpCnQ6l61Ci7bkry6ef7NF3t/ilye3ZIlWlCWxM2REOr0s9WEoXzD0O+t+9XHRAeHFw==} + '@tronweb3/walletconnect-tron@4.0.2': + resolution: {integrity: sha512-ubJHqCYxeS3obAxIdWkGOi2kWfX8CNbWHBmAj9LEiTwB4BAgdBJ3P7T2TwSSIZa6ARvc7zmbFtarFCQ4ckWAKQ==} engines: {node: '>=18', pnpm: '>=7'} - '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@turbo/darwin-64@2.9.12': + resolution: {integrity: sha512-eu3eFRmE9NjgZ0wPdRJ44l+LGSeIky+tz5ZQd8zQkw/Yqi+BM7wq+8nbabeoiVUcICi/IZweMOKl/MCmkrd1+g==} + cpu: [x64] + os: [darwin] + + '@turbo/darwin-arm64@2.9.12': + resolution: {integrity: sha512-RUkAE404z/J8NsyrUosMcBaXT6M4bRFxTQrmkDQBLQVXaC8Jl0e9bMvYDSX0GW7Ffm2m3j9y7RXgR1foeUAM9w==} + cpu: [arm64] + os: [darwin] + + '@turbo/linux-64@2.9.12': + resolution: {integrity: sha512-InIUtH7cw/vqXNX1Gr7QgWfmw3ct08pV5CpfdEOR48z2u2rzdmpIuk00B/Q2xCb0PMWtKgiMQynfuphmEuUyTQ==} + cpu: [x64] + os: [linux] + + '@turbo/linux-arm64@2.9.12': + resolution: {integrity: sha512-lC6nD//Xh67fmJM0LKaLsg74Wry0aYrgMklpiNgCbUaMdPIOqj0A00iri3NU7Lb7pZHx8ViisgpeDKlpSgFUCA==} + cpu: [arm64] + os: [linux] + + '@turbo/windows-64@2.9.12': + resolution: {integrity: sha512-conYri8VUl72JOdYnLDPYwzqbPcY5ECoHmo9FWoKznemhaAIilj4maHqs9Uar0aKfNoZIULniy+6iWaLtLO34A==} + cpu: [x64] + os: [win32] + + '@turbo/windows-arm64@2.9.12': + resolution: {integrity: sha512-XoR4bsg62/L/esRVcmoMESEiNZ36+YmyjYGLpoqk8nwMgXzzVjNOgX0lRSz5w/U/ajLGv3nhMsS0Q2QOdvp2AQ==} + cpu: [arm64] + os: [win32] + + '@tybys/wasm-util@0.10.2': + resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -4686,21 +4601,18 @@ packages: '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - '@types/conventional-commits-parser@5.0.2': - resolution: {integrity: sha512-BgT2szDXnVypgpNxOK8aL5SGjUdaQbC++WZNjF1Qge3Og2+zhHj+RWhmehLhYyvQwqAmvezruVfOf8+3m74W+g==} - '@types/css-font-loading-module@0.0.7': resolution: {integrity: sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q==} - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} @@ -4713,9 +4625,15 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/jest@30.0.0': + resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==} + '@types/json-bigint@1.0.4': resolution: {integrity: sha512-ydHooXLbOmxBbubnA7Eh+RpBzuaIiQjh8WGJYQB50JFGFrdxW7JzVlyEV7fAXw0T2sqJ1ysTneJbiyNLqZRAag==} + '@types/json-logic-js@2.0.5': + resolution: {integrity: sha512-hu/FTi0zwCjQEFfbPur275cNoZj6NsuOBhhYNzqoSdfmMhuxFr58OZ957lyIOWc9+kO+2tFlBthRjcxuytD4HA==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -4728,25 +4646,9 @@ packages: '@types/lodash@4.17.16': resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==} - '@types/lodash@4.17.21': - resolution: {integrity: sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==} - '@types/long@4.0.2': resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} - '@types/minimatch@3.0.5': - resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} - - '@types/mixpanel-browser@2.66.0': - resolution: {integrity: sha512-07zYZZ9ZVHc7R4ktM+3a2clZvKkj+EJcYZ/FevTs011Fr9tdp59lVgAskMf6ZQUp3lOHLqi7K3f+9QtmEsqh1w==} - deprecated: This is a stub types definition. mixpanel-browser provides its own type definitions, so you do not need this installed. - - '@types/ms@2.1.0': - resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - - '@types/node-fetch@2.6.13': - resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} - '@types/node@10.12.18': resolution: {integrity: sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==} @@ -4759,19 +4661,19 @@ packages: '@types/node@22.7.5': resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} - '@types/node@25.0.2': - resolution: {integrity: sha512-gWEkeiyYE4vqjON/+Obqcoeffmk0NF15WSBwSs7zwVA2bAbTaE0SJ7P0WNGoJn8uE7fiaV5a7dKYIJriEqOrmA==} + '@types/node@25.7.0': + resolution: {integrity: sha512-z+pdZyxE+RTQE9AcboAZCb4otwcrvgHD+GlBpPgn0emDVt0ohrTMhAwlr2Wd9nZ+nihhYFxO2pThz3C5qSu2Eg==} - '@types/parse-json@4.0.2': - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - - '@types/react-dom@19.0.4': - resolution: {integrity: sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==} + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: - '@types/react': 19.0.10 + '@types/react': ^19.2.0 + + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} - '@types/react@19.0.10': - resolution: {integrity: sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==} + '@types/set-cookie-parser@2.4.10': + resolution: {integrity: sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==} '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -4779,14 +4681,17 @@ packages: '@types/statuses@2.0.6': resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==} + '@types/testing-library__jest-dom@5.14.9': + resolution: {integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==} + '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} '@types/uuid@8.3.4': resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - '@types/w3c-web-usb@1.0.12': - resolution: {integrity: sha512-GD9XFhJZFtCbspsB3t1vD3SgkWVInIMoL1g1CcE0p3DD7abgLrQ2Ws22RS38CXPUCQXgyKjUAGKdy5d0CLT5jw==} + '@types/w3c-web-usb@1.0.14': + resolution: {integrity: sha512-Qu3Nn6JFuF4+sHKYl+IcX9vYiI40ogleXzFFSxoE1W94rG98o/kXs8uJ0QSfFzuwBCZWlGfUGpPkgwuuX4PchA==} '@types/web@0.0.197': resolution: {integrity: sha512-V4sOroWDADFx9dLodWpKm298NOJ1VJ6zoDVgaP+WBb/utWxqQ6gnMzd9lvVDAr/F3ibiKaxH9i45eS0gQPSTaQ==} @@ -4803,34 +4708,17 @@ packages: '@types/yargs@17.0.35': resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} - '@typescript-eslint/types@7.13.1': - resolution: {integrity: sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/typescript-estree@7.13.1': - resolution: {integrity: sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/visitor-keys@7.13.1': - resolution: {integrity: sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==} - engines: {node: ^18.18.0 || >=20.0.0} - '@vanilla-extract/babel-plugin-debug-ids@1.2.2': resolution: {integrity: sha512-MeDWGICAF9zA/OZLOKwhoRlsUW+fiMwnfuOAqFVohL31Agj7Q/RBWAYweqjHLgFBCsdnr6XIfwjJnmb2znEWxw==} - '@vanilla-extract/compiler@0.3.3': - resolution: {integrity: sha512-y/RCcjhITi/JV/jbH22QN0aDSTtWELOBbkod/rcrUfGTS8bfVrthSsFmH+0ZoL9LJBx3vHrf0Qaf24xZkoiJoQ==} + '@vanilla-extract/compiler@0.7.0': + resolution: {integrity: sha512-rZQ40HVmsxfGLjoflwwsaUBLfpbpKDoZC19oiDA0FHq4LdrYtyVbFkc0MfqkNo/qBCvaZfsRezCqk0QQxCqZ8w==} '@vanilla-extract/css@1.17.3': resolution: {integrity: sha512-jHivr1UPoJTX5Uel4AZSOwrCf4mO42LcdmnhJtUxZaRWhW4FviFbIfs0moAWWld7GOT+2XnuVZjjA/K32uUnMQ==} - '@vanilla-extract/css@1.17.5': - resolution: {integrity: sha512-u29cUVL5Z2qjJ2Eh8pusT1ToGtTeA4eb/y0ygaw2vWv9XFQSixtkBYEsVkrJExSI/0+SR1g8n5NYas4KlWOdfA==} + '@vanilla-extract/css@1.20.1': + resolution: {integrity: sha512-5I9RNo5uZW9tsBnqrWzJqELegOqTHBrZyDFnES0gR9gJJHBB9dom1N0bwITM9tKwBcfKrTX4a6DHVeQdJ2ubQA==} '@vanilla-extract/dynamic@2.1.4': resolution: {integrity: sha512-7+Ot7VlP3cIzhJnTsY/kBtNs21s0YD7WI1rKJJKYP56BkbDxi/wrQUWMGEczKPUDkJuFcvbye+E2ub1u/mHH9w==} @@ -4838,8 +4726,8 @@ packages: '@vanilla-extract/dynamic@2.1.5': resolution: {integrity: sha512-QGIFGb1qyXQkbzx6X6i3+3LMc/iv/ZMBttMBL+Wm/DetQd36KsKsFg5CtH3qy+1hCA/5w93mEIIAiL4fkM8ycw==} - '@vanilla-extract/integration@8.0.6': - resolution: {integrity: sha512-BlDtXtb6Fin8XEGwf4BhsJkKQh0rhj/YiN6ylNNOqXtRU0+DQmzE5WGE056ScKg3p5e0IFaeH7PPxuWJca9aXw==} + '@vanilla-extract/integration@8.0.10': + resolution: {integrity: sha512-01IB5gbrgTe8IIrtfRXXTmACl5D8Enzqp2cKbCWaMKXmnoilXXVCPbJoA96q88PXkNDXsXepCxUugMvEmL3c7A==} '@vanilla-extract/private@1.0.9': resolution: {integrity: sha512-gT2jbfZuaaCLrAxwXbRgIhGhcXbRZCG3v4TTUnjw0EJ7ArdBRxkq4msNJkbuRkCgfIK5ATmprB5t9ljvLeFDEA==} @@ -4859,106 +4747,75 @@ packages: peerDependencies: '@vanilla-extract/css': ^1.0.0 - '@vanilla-extract/vite-plugin@5.1.3': - resolution: {integrity: sha512-QKojhn+O4NIjPQsjfF3Lz+DCC9VaGE/P6eNXcZGoWhdCuGXbMOdSX0xogCX9O6ewzwJOiJJ++3NvuSlh7oVkcw==} + '@vanilla-extract/vite-plugin@5.2.2': + resolution: {integrity: sha512-AUyB4fDR2b/Mo0lcXhhlf6RxnDPYwFMyKKopalJ4BwQNKYzZSoTwHJ1PLPO9SKhpz7lzXc0Z18GHQZOewzl3YA==} peerDependencies: - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - '@vitejs/plugin-react-swc@4.2.2': - resolution: {integrity: sha512-x+rE6tsxq/gxrEJN3Nv3dIV60lFflPj94c90b+NNo6n1QV1QQUTLoL0MpaOVasUZ0zqVBn7ead1B5ecx1JAGfA==} + '@vitejs/plugin-react@6.0.1': + resolution: {integrity: sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - vite: ^4 || ^5 || ^6 || ^7 - - '@vitejs/plugin-react@5.1.2': - resolution: {integrity: sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ==} - engines: {node: ^20.19.0 || >=22.12.0} - peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 + babel-plugin-react-compiler: ^1.0.0 + vite: ^8.0.0 + peerDependenciesMeta: + '@rolldown/plugin-babel': + optional: true + babel-plugin-react-compiler: + optional: true - '@vitest/browser-playwright@4.0.15': - resolution: {integrity: sha512-94yVpDbb+ykiT7mK6ToonGnq2GIHEQGBTZTAzGxBGQXcVNCh54YKC2/WkfaDzxy0m6Kgw05kq3FYHKHu+wRdIA==} + '@vitest/browser-playwright@4.1.6': + resolution: {integrity: sha512-4csoeyl/qwHyxU2zNL0++WaoDr8YJDXOQPwWPNJoTZ+QzcdO3INYKgF5Zfz730Io7zbkuv914aZmfQ+QE+1Hvw==} peerDependencies: playwright: '*' - vitest: 4.0.15 + vitest: 4.1.6 - '@vitest/browser@4.0.15': - resolution: {integrity: sha512-zedtczX688KehaIaAv7m25CeDLb0gBtAOa2Oi1G1cqvSO5aLSVfH6lpZMJLW8BKYuWMxLQc9/5GYoM+jgvGIrw==} + '@vitest/browser@4.1.6': + resolution: {integrity: sha512-ynsspTubXGSpa58JFJ24xIQt4z4A25epSbugEyaTmmrV1//Wec9EgE/LtoaC6yxUrXi5P7erGHRrkdZIHaVQuA==} peerDependencies: - vitest: 4.0.15 + vitest: 4.1.6 - '@vitest/expect@4.0.15': - resolution: {integrity: sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==} + '@vitest/expect@4.1.6': + resolution: {integrity: sha512-7EHDquPthALSV0jhhjgEW8FXaviMx7rSqu8W6oqCoAuOhKov814P99QDV1pxMA3QPv21YudvJngIhjrNI4opLg==} - '@vitest/mocker@4.0.15': - resolution: {integrity: sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==} + '@vitest/mocker@4.1.6': + resolution: {integrity: sha512-MCFc63czMjEInOlcY2cpQCvCN+KgbAn+60xu9cMgP4sKaLC5JNAKw7JH8QdAnoAC88hW1IiSNZ+GgVXlN1UcMQ==} peerDependencies: msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@4.0.15': - resolution: {integrity: sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==} - - '@vitest/runner@4.0.15': - resolution: {integrity: sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==} - - '@vitest/snapshot@4.0.15': - resolution: {integrity: sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==} - - '@vitest/spy@4.0.15': - resolution: {integrity: sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==} - - '@vitest/utils@4.0.15': - resolution: {integrity: sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==} - - '@vue/compiler-core@3.5.24': - resolution: {integrity: sha512-eDl5H57AOpNakGNAkFDH+y7kTqrQpJkZFXhWZQGyx/5Wh7B1uQYvcWkvZi11BDhscPgj8N7XV3oRwiPnx1Vrig==} + '@vitest/pretty-format@4.1.6': + resolution: {integrity: sha512-h5SxD/IzNhZYnrSZRsUZQIC+vD0GY8cUvq0iwsmkFKixRCKLLWqCXa/FIQ4S1R+sI+PGoojkHsdNrbZiM9Qpgw==} - '@vue/compiler-dom@3.5.24': - resolution: {integrity: sha512-1QHGAvs53gXkWdd3ZMGYuvQFXHW4ksKWPG8HP8/2BscrbZ0brw183q2oNWjMrSWImYLHxHrx1ItBQr50I/q2zw==} + '@vitest/runner@4.1.6': + resolution: {integrity: sha512-nOPCmn2+yD0ZNmKdsXGv/UxMMWbMuKeD6GyYncNwdkYDxpQvrPSKYj2rWuDjC2Y4b6w6hjip5dBKFzEUuZe3vA==} - '@vue/compiler-sfc@3.5.24': - resolution: {integrity: sha512-8EG5YPRgmTB+YxYBM3VXy8zHD9SWHUJLIGPhDovo3Z8VOgvP+O7UP5vl0J4BBPWYD9vxtBabzW1EuEZ+Cqs14g==} + '@vitest/snapshot@4.1.6': + resolution: {integrity: sha512-YhsdE6xAVfTDmzjxL2ZDUvjj+ZsgyOKe+TdQzqkD72wIOmHka8NuGQ6NpTNZv9D2Z63fbwWKJPeVpEw4EQgYxw==} - '@vue/compiler-ssr@3.5.24': - resolution: {integrity: sha512-trOvMWNBMQ/odMRHW7Ae1CdfYx+7MuiQu62Jtu36gMLXcaoqKvAyh+P73sYG9ll+6jLB6QPovqoKGGZROzkFFg==} + '@vitest/spy@4.1.6': + resolution: {integrity: sha512-JFKxMx6udhwKh/Ldo270e17QX710vgunMkuPAvXjHSvC6oqLWAHhVhjg/I71q0u0CBSErIODV1Kjv0FQNSWjdg==} - '@vue/shared@3.5.24': - resolution: {integrity: sha512-9cwHL2EsJBdi8NY22pngYYWzkTDhld6fAD6jlaeloNGciNSJL6bLpbxVgXl96X00Jtc6YWQv96YA/0sxex/k1A==} - - '@wagmi/chains@1.0.0': - resolution: {integrity: sha512-eNbqRWyHbivcMNq5tbXJks4NaOzVLHnNQauHPeE/EDT9AlpqzcrMc+v2T1/2Iw8zN4zgqB86NCsxeJHJs7+xng==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - - '@wagmi/connectors@3.1.11': - resolution: {integrity: sha512-wzxp9f9PtSUFjDUP/QDjc1t7HON4D8wrVKsw35ejdO8hToDpx1gU9lwH/47Zo/1zExGezQc392sjoHSszYd7OA==} - peerDependencies: - typescript: '>=5.0.4' - viem: '>=0.3.35' - peerDependenciesMeta: - typescript: - optional: true + '@vitest/utils@4.1.6': + resolution: {integrity: sha512-FxIY+U81R3LGKCxaHHFRQ5+g6/iRgGLmeHWdp2Amj4ljQRrEIWHmZyDfDYBRZlpyqA7qKxtS9DD1dhk8RnRIVQ==} - '@wagmi/connectors@7.0.2': - resolution: {integrity: sha512-JQmFNZR/EmeAkIWgEfAsS8lrnqMjVHFEpnPgVl6wIDU58LhrWe0D1/lHxzdCyFiX3gu/rkIERrHu0BXRxkuB1A==} + '@wagmi/connectors@8.0.13': + resolution: {integrity: sha512-uRWutZygoX5K1Vk4svKeMxmyeTEjdZn8f/+EDKQEQaFMvy6yMVlLpy5DKFK0NRjtTIinRrqVccDqJQYCcC62hw==} peerDependencies: - '@base-org/account': ~2.4.0 - '@coinbase/wallet-sdk': ~4.3.6 - '@gemini-wallet/core': ~0.3.1 - '@metamask/sdk': ~0.33.1 + '@base-org/account': ^2.5.1 + '@coinbase/wallet-sdk': ^4.3.6 + '@metamask/connect-evm': ^1.0.0 '@safe-global/safe-apps-provider': ~0.18.6 - '@safe-global/safe-apps-sdk': ~9.1.0 - '@wagmi/core': 3.0.0 - '@walletconnect/ethereum-provider': ~2.21.1 + '@safe-global/safe-apps-sdk': ^9.1.0 + '@wagmi/core': 3.4.11 + '@walletconnect/ethereum-provider': ^2.21.1 + accounts: ~0.10 porto: ~0.2.35 typescript: '>=5.7.3' viem: 2.x @@ -4967,9 +4824,7 @@ packages: optional: true '@coinbase/wallet-sdk': optional: true - '@gemini-wallet/core': - optional: true - '@metamask/sdk': + '@metamask/connect-evm': optional: true '@safe-global/safe-apps-provider': optional: true @@ -4977,29 +4832,25 @@ packages: optional: true '@walletconnect/ethereum-provider': optional: true - porto: + accounts: optional: true - typescript: + porto: optional: true - - '@wagmi/core@1.4.13': - resolution: {integrity: sha512-ytMCvXbBOgfDu9Qw67279wq/jNEe7EZLjLyekX7ROnvHRADqFr3lwZI6ih41UmtRZAmXAx8Ghyuqy154EjB5mQ==} - peerDependencies: - typescript: '>=5.0.4' - viem: '>=0.3.35' - peerDependenciesMeta: typescript: optional: true - '@wagmi/core@3.0.0': - resolution: {integrity: sha512-wOn8jwB9GNYTdrc4CP/huf1aAhDoQ5GKl5OhxGBZx9X4qE+wReW05dTcurEc+XBl9B/ZVis2JdXVU3ZiYqyS8Q==} + '@wagmi/core@3.4.11': + resolution: {integrity: sha512-dmrZr0fKxCmG3pyWO9//oYtE5cgWRrgaQjC0+jX6IiuufE4MSW7gSL2MKdK8bvT3jg4Ra8cdRIJpveHJSHKdNw==} peerDependencies: '@tanstack/query-core': '>=5.0.0' + accounts: ~0.8.1 typescript: '>=5.7.3' viem: 2.x peerDependenciesMeta: '@tanstack/query-core': optional: true + accounts: + optional: true typescript: optional: true @@ -5028,9 +4879,6 @@ packages: resolution: {integrity: sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==} engines: {node: '>=16'} - '@walletconnect/core@2.11.0': - resolution: {integrity: sha512-2Tjp5BCevI7dbmqo/OrCjX4tqgMqwJNQLlQAlphqPfvwlF9+tIu6pGcVbSN3U9zyXzWIZCeleqEaWUeSeET4Ew==} - '@walletconnect/core@2.19.0': resolution: {integrity: sha512-AEoyICLHQEnjijZr9XsL4xtFhC5Cmu0RsEGxAxmwxbfGvAcYcSCNp1fYq0Q6nHc8jyoPOALpwySTle300Y1vxw==} engines: {node: '>=18'} @@ -5055,23 +4903,13 @@ packages: resolution: {integrity: sha512-q/Au5Ne3g4R+q4GvHR5cvRd3+ha00QZCZiCs058lmy+eDbiZd0YsautvTPJ5a2guD6UaS1k/w5e1JHgixdcgLA==} engines: {node: '>=18'} - '@walletconnect/core@2.23.1': - resolution: {integrity: sha512-fW48PIw41Q/LJW+q0msFogD/OcelkrrDONQMcpGw4C4Y6w+IvFKGEg+7dxGLKWx1g8QuHk/p6C9VEIV/tDsm5A==} + '@walletconnect/core@2.23.9': + resolution: {integrity: sha512-ws4WG8LeagUo2ERRo02HryXRcpwIRmCQ3pHLW5gWbVReLXXIpgk6ZAfID3fEGHevIwwnHSGww+nNhNpdXyiq0g==} engines: {node: '>=18.20.8'} - '@walletconnect/crypto@1.1.0': - resolution: {integrity: sha512-yZO8BBTQt7BcaemjDgwN56OmSv0OO4QjIpvtfj5OxZfL6IQZQWHOhwC6pJg+BmZPbDlJlWFqFuCZRtiPwRmsoA==} - - '@walletconnect/encoding@1.0.2': - resolution: {integrity: sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag==} - '@walletconnect/environment@1.0.1': resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} - '@walletconnect/ethereum-provider@2.11.0': - resolution: {integrity: sha512-YrTeHVjuSuhlUw7SQ6xBJXDuJ6iAC+RwINm9nVhoKYJSHAy3EVSJZOofMKrnecL0iRMtD29nj57mxAInIBRuZA==} - deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' - '@walletconnect/ethereum-provider@2.21.1': resolution: {integrity: sha512-SSlIG6QEVxClgl1s0LMk4xr2wg4eT3Zn/Hb81IocyqNSGfXpjtawWxKxiC5/9Z95f1INyBD6MctJbL/R1oBwIw==} @@ -5087,9 +4925,6 @@ packages: '@walletconnect/jsonrpc-http-connection@1.0.8': resolution: {integrity: sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==} - '@walletconnect/jsonrpc-provider@1.0.13': - resolution: {integrity: sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==} - '@walletconnect/jsonrpc-provider@1.0.14': resolution: {integrity: sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==} @@ -5102,9 +4937,6 @@ packages: '@walletconnect/jsonrpc-utils@1.0.8': resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} - '@walletconnect/jsonrpc-ws-connection@1.0.14': - resolution: {integrity: sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==} - '@walletconnect/jsonrpc-ws-connection@1.0.16': resolution: {integrity: sha512-G81JmsMqh5nJheE1mPst1W0WfVv0SG3N7JggwLLGnI7iuDZJq8cRJvQwLGKHn5H1WTW7DEPCo00zz5w62AbL3Q==} @@ -5116,29 +4948,14 @@ packages: '@react-native-async-storage/async-storage': optional: true - '@walletconnect/legacy-client@2.0.0': - resolution: {integrity: sha512-v5L7rYk9loVnfvUf0mF+76bUPFaU5/Vh7mzL6/950CD/yoGdzYZ3Kj+L7mkC6HPMEGeQsBP1+sqBuiVGZ/aODA==} - - '@walletconnect/legacy-modal@2.0.0': - resolution: {integrity: sha512-jckNd8lMhm4X7dX9TDdxM3bXKJnaqkRs6K2Mo5j6GmbIF9Eyx40jZ5+q457RVxvM6ciZEDT5s1wBHWdWoOo+9Q==} - - '@walletconnect/legacy-provider@2.0.0': - resolution: {integrity: sha512-A8xPebMI1A+50HbWwTpFCbwP7G+1NGKdTKyg8BUUg3h3Y9JucpC1W6w/x0v1Xw7qFEqQnz74LoIN/A3ytH9xrQ==} - - '@walletconnect/legacy-types@2.0.0': - resolution: {integrity: sha512-sOVrA7HUdbI1OwKyPOQU0/DdvTSVFlsXWpAk2K2WvP2erTkBWPMTJq6cv2BmKdoJ3p6gLApT7sd+jHi3OF71uw==} - - '@walletconnect/legacy-utils@2.0.0': - resolution: {integrity: sha512-CPWxSVVXw0kgNCxvU126g4GiV3mzXmC8IPJ15twE46aJ1FX+RHEIfAzFMFz2F2+fEhBxL63A7dwNQKDXorRPcQ==} - '@walletconnect/logger@2.1.2': resolution: {integrity: sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==} '@walletconnect/logger@2.1.3': resolution: {integrity: sha512-wRsD0eDQSajj8YMM/jpxoH1yeSLyS7FPkh0VKCQ1BWrERTy1Z7/DmOE8FYm/gmd7Cg6BNXVWiymhGq6wnmlq8w==} - '@walletconnect/logger@3.0.1': - resolution: {integrity: sha512-O8lXGMZO1+e5NtHhBSjsAih/I9KC+1BxNhGNGD+SIWTqWd0zsbT5wJtNnJ+LnSXTRE7XZRxFUlvZgkER3vlhFA==} + '@walletconnect/logger@3.0.2': + resolution: {integrity: sha512-7wR3wAwJTOmX4gbcUZcFMov8fjftY05+5cO/d4cpDD8wDzJ+cIlKdYOXaXfxHLSYeDazMXIsxMYjHYVDfkx+nA==} '@walletconnect/modal-core@2.6.2': resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} @@ -5150,9 +4967,6 @@ packages: resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} deprecated: Please follow the migration guide on https://docs.reown.com/appkit/upgrade/wcm - '@walletconnect/randombytes@1.1.0': - resolution: {integrity: sha512-X+LO/9ClnXX2Q/1+u83qMnohVaxC4qsXByM/gMSwGMrUObxEiqEWS+b9Upg9oNl6mTr85dTCRF8W17KVcKKXQw==} - '@walletconnect/relay-api@1.0.11': resolution: {integrity: sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q==} @@ -5162,10 +4976,6 @@ packages: '@walletconnect/safe-json@1.0.2': resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} - '@walletconnect/sign-client@2.11.0': - resolution: {integrity: sha512-H2ukscibBS+6WrzQWh+WyVBqO5z4F5et12JcwobdwgHnJSlqIoZxqnUYYWNCI5rUR5UKsKWaUyto4AE9N5dw4Q==} - deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' - '@walletconnect/sign-client@2.19.0': resolution: {integrity: sha512-+GkuJzPK9SPq+RZgdKHNOvgRagxh/hhYWFHOeSiGh3DyAQofWuFTq4UrN/MPjKOYswSSBKfIa+iqKYsi4t8zLQ==} deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' @@ -5190,8 +5000,8 @@ packages: resolution: {integrity: sha512-9k/JEl9copR6nXRhqnmzWz2Zk1hiWysH+o6bp6Cqo8TgDUrZoMLBZMZ6qbo+2HLI54V02kKf0Vg8M81nNFOpjQ==} deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' - '@walletconnect/sign-client@2.23.1': - resolution: {integrity: sha512-x0sG8ZuuaOi3G/gYWLppf7nmNItWlV8Yga9Bltb46/Ve6G20nCBis6gcTVVeJOpnmqQ85FISwExqOYPmJ0FQlw==} + '@walletconnect/sign-client@2.23.9': + resolution: {integrity: sha512-Xj+hw4E6mGRyhCdVOT/RMgnG+up/Y3v0ho5PlkVozvXWeVSqHNh9DmjLuU97a7OACoGd/oHBF6g3NVqD7MgCMQ==} '@walletconnect/solana-adapter@0.0.8': resolution: {integrity: sha512-Qb7MT8SdkeBldfUCmF+rYW6vL98mxPuT1yAwww5X2vpx7xEPZvFCoAKnyT5fXu0v56rMxhW3MGejnHyyYdDY7Q==} @@ -5223,12 +5033,8 @@ packages: '@walletconnect/types@2.21.7': resolution: {integrity: sha512-kyGnFje4Iq+XGkZZcSoAIrJWBE4BeghVW4O7n9e1MhUyeOOtO55M/kcqceNGYrvwjHvdN+Kf+aoLnKC0zKlpbQ==} - '@walletconnect/types@2.23.1': - resolution: {integrity: sha512-sbWOM9oCuzSbz/187rKWnSB3sy7FCFcbTQYeIJMc9+HTMTG2TUPftPCn8NnkfvmXbIeyLw00Y0KNvXoCV/eIeQ==} - - '@walletconnect/universal-provider@2.11.0': - resolution: {integrity: sha512-zgJv8jDvIMP4Qse/D9oIRXGdfoNqonsrjPZanQ/CHNe7oXGOBiQND2IIeX+tS0H7uNA0TPvctljCLiIN9nw4eA==} - deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' + '@walletconnect/types@2.23.9': + resolution: {integrity: sha512-IUl1PpD/Dig8IE2OZ9XtjbPohEyOZJ73xs92EDUzoIyzRtfm36g2D340pY3iu3AAdLv1yFiaZafB8Hf8RFze8A==} '@walletconnect/universal-provider@2.19.0': resolution: {integrity: sha512-e9JvadT5F8QwdLmd7qBrmACq04MT7LQEe1m3X2Fzvs3DWo8dzY8QbacnJy4XSv5PCdxMWnua+2EavBk8nrI9QA==} @@ -5254,9 +5060,6 @@ packages: resolution: {integrity: sha512-8PB+vA5VuR9PBqt5Y0xj4JC2doYNPlXLGQt3wJORVF9QC227Mm/8R1CAKpmneeLrUH02LkSRwx+wnN/pPnDiQA==} deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' - '@walletconnect/utils@2.11.0': - resolution: {integrity: sha512-hxkHPlTlDQILHfIKXlmzgNJau/YcSBC3XHUSuZuKZbNEw3duFT6h6pm3HT/1+j1a22IG05WDsNBuTCRkwss+BQ==} - '@walletconnect/utils@2.19.0': resolution: {integrity: sha512-LZ0D8kevknKfrfA0Sq3Hf3PpmM8oWyNfsyWwFR51t//2LBgtN2Amz5xyoDDJcjLibIbKAxpuo/i0JYAQxz+aPA==} @@ -5275,8 +5078,8 @@ packages: '@walletconnect/utils@2.21.7': resolution: {integrity: sha512-qyaclTgcFf9AwVuoV8CLLg8wfH3nX7yZdpylNkDqCpS7wawQL9zmFFTaGgma8sQrCsd3Sd9jUIymcpRvCJnSTw==} - '@walletconnect/utils@2.23.1': - resolution: {integrity: sha512-J12DadZHIL0KvsUoQuK0rag9jDUy8qu1zwz47xEHl03LrMcgrotQiXvdTQ3uHwAVA4yKLTQB/LEI2JiTIt7X8Q==} + '@walletconnect/utils@2.23.9': + resolution: {integrity: sha512-C5TltCs8UPypNiteYnKSv8+ZDK2EjVDyXCxN6kA9bkA+j6KGsNIV7l9MUA8WBAvE5Gi5EcBdhD3R9Hpo/1HHqQ==} '@walletconnect/window-getters@1.0.1': resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} @@ -5294,17 +5097,17 @@ packages: '@xstate/fsm@1.6.5': resolution: {integrity: sha512-b5o1I6aLNeYlU/3CPlj/Z91ybk1gUsKT+5NAJI+2W4UjvS5KLG28K9v5UvNoFVjHV8PajVZ00RH3vnjyQO7ZAw==} - '@xstate/react@6.0.0': - resolution: {integrity: sha512-xXlLpFJxqLhhmecAXclBECgk+B4zYSrDTl8hTfPZBogkn82OHKbm9zJxox3Z/YXoOhAQhKFTRLMYGdlbhc6T9A==} + '@xstate/react@6.1.0': + resolution: {integrity: sha512-ep9F0jGTI63B/jE8GHdMpUqtuz7yRebNaKv8EMUaiSi29NOglywc2X2YSOV/ygbIK+LtmgZ0q9anoEA2iBSEOw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - xstate: ^5.20.0 + xstate: ^5.28.0 peerDependenciesMeta: xstate: optional: true - '@xstate/store@3.13.0': - resolution: {integrity: sha512-uZqacmcn1L4wZFeqSuQvUH2r18Vw31W+Ow0K1xz5CdbIZ9122o1BegaTLqUKHSk6YAYMs2zkcN6REeMAQLkKIA==} + '@xstate/store@3.17.5': + resolution: {integrity: sha512-ITajQVRAMa1pgmgM0OdRFYQ6OQ8GK4ynh391p13GKtZnELXn9Hgs9pr4mqO1Z95HH9INcmczmWi5xk3O18GBWg==} peerDependencies: react: ^18.2.0 || ^19.0.0 solid-js: ^1.7.6 @@ -5317,48 +5120,19 @@ packages: '@zeit/schemas@2.36.0': resolution: {integrity: sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==} + '@zondax/ledger-js@1.3.1': + resolution: {integrity: sha512-sDBwsunK2nSzkqJ5xi6QTiVVpAxSy+X1BVcMfKioBsInjktki2SezT7K8Hw6kSlYd3yfOJlw8cs+hqVtxpAGtg==} + + '@zondax/ledger-substrate@2.0.0': + resolution: {integrity: sha512-N1mHa6vUa/XFSucTpt5zemO9b0qYzmiZf9mubmw/vpPOVU02C0/8drf80nk6eMcBKgfjwQEaB8DDTsZF0pRo6Q==} + '@zxing/text-encoding@0.9.0': resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - abi-wan-kanabi@2.2.4: resolution: {integrity: sha512-0aA81FScmJCPX+8UvkXLki3X1+yPQuWxEkqXBVKltgPAK79J+NB+Lp5DouMXa7L6f+zcRlIA/6XO7BN/q9fnvg==} hasBin: true - abitype@0.8.7: - resolution: {integrity: sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.19.1 - peerDependenciesMeta: - zod: - optional: true - - abitype@0.9.8: - resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.19.1 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - - abitype@1.0.6: - resolution: {integrity: sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - abitype@1.0.8: resolution: {integrity: sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==} peerDependencies: @@ -5370,8 +5144,8 @@ packages: zod: optional: true - abitype@1.1.0: - resolution: {integrity: sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A==} + abitype@1.2.3: + resolution: {integrity: sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==} peerDependencies: typescript: '>=5.0.4' zod: ^3.22.0 || ^4.0.0 @@ -5381,8 +5155,8 @@ packages: zod: optional: true - abitype@1.2.2: - resolution: {integrity: sha512-4DOIMWscIB3j8hboLAUjLZCE8TMLdgecBpHFumfU4PdO/C1SBCVx4Nu1wPYXaL2iK8B0Jk3tiwnDLCpUtm3fZg==} + abitype@1.2.4: + resolution: {integrity: sha512-dpKH+N27vRjarMVTFFkeY445VTKftzGWpL0FiT7xmVmzQRKazZexzC5uHG0f6XKsVLAuUlndnbGau6lRejClxg==} peerDependencies: typescript: '>=5.0.4' zod: ^3.22.0 || ^4.0.0 @@ -5399,12 +5173,12 @@ packages: abort-error@1.0.1: resolution: {integrity: sha512-fxqCblJiIPdSXIUrxI0PL+eJG49QdP9SQ70qtB65MVAoMr2rASlOyAbJFOylfB467F/f+5BCLJJq58RYi7mGfg==} - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} engines: {node: '>= 0.6'} - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} hasBin: true @@ -5419,11 +5193,11 @@ packages: resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + ajv@8.18.0: + resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} anser@1.4.10: resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} @@ -5431,10 +5205,6 @@ packages: ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -5451,8 +5221,8 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} ansicolors@0.3.2: @@ -5478,21 +5248,13 @@ packages: resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} engines: {node: '>=10'} - array-differ@3.0.0: - resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} - engines: {node: '>=8'} + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - arrify@2.0.1: - resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} - engines: {node: '>=8'} - asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} @@ -5513,9 +5275,6 @@ packages: async-limiter@1.0.1: resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - async-mutex@0.2.6: - resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} - async-mutex@0.5.0: resolution: {integrity: sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==} @@ -5526,8 +5285,8 @@ packages: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} - autoprefixer@10.4.22: - resolution: {integrity: sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==} + autoprefixer@10.5.0: + resolution: {integrity: sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -5537,16 +5296,11 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axios-retry@4.5.0: - resolution: {integrity: sha512-aR99oXhpEDGo0UuAlYcn2iGRds30k366Zfa05XWScR9QaQD4JYiP3/1Qt1u7YlefUOK+cn0CcwoL1oefavQUlQ==} - peerDependencies: - axios: 0.x || 1.x - - axios@1.12.2: - resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==} + axios@1.13.5: + resolution: {integrity: sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==} - axios@1.13.2: - resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} + axios@1.16.0: + resolution: {integrity: sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==} b4a@1.7.3: resolution: {integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==} @@ -5590,35 +5344,6 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-addon-resolve@1.9.4: - resolution: {integrity: sha512-unn6Vy/Yke6F99vg/7tcrvM2KUvIhTNniaSqDbam4AWkd4NhvDVSrQiRYVlNzUV2P7SPobkCK7JFVxrJk9btCg==} - peerDependencies: - bare-url: '*' - peerDependenciesMeta: - bare-url: - optional: true - - bare-module-resolve@1.11.1: - resolution: {integrity: sha512-DCxeT9i8sTs3vUMA3w321OX/oXtNEu5EjObQOnTmCdNp5RXHBAvAaBDHvAi9ta0q/948QPz+co6SsGi6aQMYRg==} - peerDependencies: - bare-url: '*' - peerDependenciesMeta: - bare-url: - optional: true - - bare-os@3.6.2: - resolution: {integrity: sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==} - engines: {bare: '>=1.14.0'} - - bare-path@3.0.0: - resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} - - bare-semver@1.0.1: - resolution: {integrity: sha512-UtggzHLiTrmFOC/ogQ+Hy7VfoKoIwrP1UFcYtTxoCUdLtsIErT8+SWtOC2DH/snT9h+xDrcBEPcwKei1mzemgg==} - - bare-url@2.2.2: - resolution: {integrity: sha512-g+ueNGKkrjMazDG3elZO1pNs3HY5+mMmOet1jtKyhOaCnkLzitxf26z7hoAEkDNgdNmnc1KIlt/dw6Po6xZMpA==} - base-x@3.0.11: resolution: {integrity: sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==} @@ -5646,24 +5371,17 @@ packages: resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} engines: {node: '>=6.0.0'} - baseline-browser-mapping@2.8.25: - resolution: {integrity: sha512-2NovHVesVF5TXefsGX1yzx1xgr7+m9JQenvz6FQY3qd+YXkKkYiv+vTCc7OriP9mcDZpTC5mAOYN4ocd29+erA==} + baseline-browser-mapping@2.10.29: + resolution: {integrity: sha512-Asa2krT+XTPZINCS+2QcyS8WTkObE77RwkydwF7h6DmnKqbvlalz93m/dnphUyCa6SWSP51VgtEUf2FN+gelFQ==} + engines: {node: '>=6.0.0'} hasBin: true - bchaddrjs@0.5.2: - resolution: {integrity: sha512-OO7gIn3m7ea4FVx4cT8gdlWQR2+++EquhdpWQJH9BQjK63tJJ6ngB3QMZDO6DiBoXiIGUsTPHjlrHVxPGcGxLQ==} - engines: {node: '>=8.0.0'} - bech32@1.1.4: resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} bech32@2.0.0: resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} - better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} - bfs-path@1.0.2: resolution: {integrity: sha512-KTKx2JJtAAAT7C/rJYDXXWA2VLPycAS4kwFktKsxUo0hj4UTtw/Gm5PJuY7Uf3xSlIQNo7HRCSWei2ivncVwbQ==} @@ -5681,6 +5399,9 @@ packages: big.js@6.2.2: resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} + bignumber.js@11.1.1: + resolution: {integrity: sha512-LNkCYMieJqAts/Sj5094B92c5q+yRPlXWpABJnHMbUjB/F8AUjELmSmYX5mxbNiY/QnGnJvJIrnRuW5gUqbW5Q==} + bignumber.js@9.1.2: resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} @@ -5716,11 +5437,11 @@ packages: blakejs@1.2.1: resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} - bn.js@4.12.2: - resolution: {integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==} + bn.js@4.12.3: + resolution: {integrity: sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==} - bn.js@5.2.2: - resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==} + bn.js@5.2.3: + resolution: {integrity: sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==} borsh@0.7.0: resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} @@ -5728,18 +5449,15 @@ packages: bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - bowser@2.13.1: - resolution: {integrity: sha512-OHawaAbjwx6rqICCKgSG0SAnT05bzd7ppyKLVUITZpANBaaMFBAsaNkto3LoQ31tyFP5kNujE8Cdx85G9VzOkw==} + bowser@2.14.1: + resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} boxen@7.0.0: resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==} engines: {node: '>=14.16'} - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@1.1.14: + resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -5764,15 +5482,15 @@ packages: resolution: {integrity: sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==} engines: {node: '>= 0.10'} - browserify-sign@4.2.3: - resolution: {integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==} - engines: {node: '>= 0.12'} + browserify-sign@4.2.5: + resolution: {integrity: sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==} + engines: {node: '>= 0.10'} browserify-zlib@0.2.0: resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} - browserslist@4.28.0: - resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -5828,24 +5546,24 @@ packages: resolution: {integrity: sha512-rpwfAcS/CMqo0oCqDf3r9eeLgScRE3l/xHDCXhM3UyrfvIn7PrLq63uHh7yYbv8NzaZn5MVsVhIRpQ+5GZ5HyA==} engines: {node: '>=8'} - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} + cac@7.0.0: + resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} + engines: {node: '>=20.19.0'} call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} - call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + call-bind@1.0.9: + resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} engines: {node: '>= 0.4'} call-bound@1.0.4: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} - callsite@1.0.0: - resolution: {integrity: sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==} + call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -5863,14 +5581,8 @@ packages: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} - caniuse-lite@1.0.30001754: - resolution: {integrity: sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==} - - caniuse-lite@1.0.30001757: - resolution: {integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==} - - caniuse-lite@1.0.30001760: - resolution: {integrity: sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==} + caniuse-lite@1.0.30001792: + resolution: {integrity: sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==} cardinal@2.1.1: resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==} @@ -5882,14 +5594,18 @@ packages: cbor-sync@1.0.4: resolution: {integrity: sha512-GWlXN4wiz0vdWWXBU71Dvc1q3aBo0HytqwAZnXF1wOwjqNnDWA1vZ1gDMFLlqohak31VQzmhiYfiCX5QSSfagA==} + cbor@10.0.12: + resolution: {integrity: sha512-exQDevYd7ZQLP4moMQcZkKCVZsXLAtUSflObr3xTh4xzFIv/xBCdvCd6L259kQOUP2kcTC0jvC6PpZIf/WmRXA==} + engines: {node: '>=20'} + chacha-native@2.0.3: resolution: {integrity: sha512-93h+osfjhR2sMHAaapTLlL/COoBPEZ6upicPBQ4GfUyadoMb8t9/M0PKK8kC+F+DEA/Oy3Kg9w3HzY3J1foP3g==} chacha@2.1.0: resolution: {integrity: sha512-FhVtqaZOiHlOKUkAWfDlJ+oe/O8iPQbCC0pFXJqphr4YQBCZPXa8Mv3j35+W4eWFWCoTUcW2u5IWDDkknygvVA==} - chai@6.2.1: - resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} chain-registry@1.69.221: @@ -5899,6 +5615,10 @@ packages: resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} engines: {node: '>=12'} + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -5907,33 +5627,18 @@ packages: resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - chalk@5.6.2: resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - chardet@2.1.1: - resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} - - charenc@0.0.2: - resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - - chart.js@4.5.1: - resolution: {integrity: sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==} - engines: {pnpm: '>=8'} - - chartjs-plugin-annotation@3.1.0: - resolution: {integrity: sha512-EkAed6/ycXD/7n0ShrlT1T2Hm3acnbFhgkIEJLa0X+M6S16x0zwj1Fv4suv/2bwayCT3jGPdAtI9uLcAMToaQQ==} - peerDependencies: - chart.js: '>=4.0.0' - chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + chrome-launcher@0.15.2: resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} engines: {node: '>=12.13.0'} @@ -5949,8 +5654,12 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - cipher-base@1.0.6: - resolution: {integrity: sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==} + ci-info@4.4.0: + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} + engines: {node: '>=8'} + + cipher-base@1.0.7: + resolution: {integrity: sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==} engines: {node: '>= 0.10'} classnames@2.5.1: @@ -5982,13 +5691,14 @@ packages: cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + cliui@9.0.1: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} + clsx@1.2.1: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} @@ -5997,6 +5707,10 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} + cluster-key-slot@1.1.2: + resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} + engines: {node: '>=0.10.0'} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -6015,10 +5729,6 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} - commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} - commander@12.1.0: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} @@ -6065,24 +5775,24 @@ packages: resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} engines: {node: '>= 0.6'} - conventional-changelog-angular@7.0.0: - resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} - engines: {node: '>=16'} + conventional-changelog-angular@8.3.1: + resolution: {integrity: sha512-6gfI3otXK5Ph5DfCOI1dblr+kN3FAm5a97hYoQkqNZxOaYa5WKfXH+AnpsmS+iUH2mgVC2Cg2Qw9m5OKcmNrIg==} + engines: {node: '>=18'} - conventional-changelog-conventionalcommits@7.0.2: - resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} - engines: {node: '>=16'} + conventional-changelog-conventionalcommits@9.3.1: + resolution: {integrity: sha512-dTYtpIacRpcZgrvBYvBfArMmK2xvIpv2TaxM0/ZI5CBtNUzvF2x0t15HsbRABWprS6UPmvj+PzHVjSx4qAVKyw==} + engines: {node: '>=18'} - conventional-commits-parser@5.0.0: - resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} - engines: {node: '>=16'} + conventional-commits-parser@6.4.0: + resolution: {integrity: sha512-tvRg7FIBNlyPzjdG8wWRlPHQJJHI7DylhtRGeU9Lq+JuoPh5BKpPRX83ZdLrvXuOSu5Eo/e7SzOQhU4Hd2Miuw==} + engines: {node: '>=18'} hasBin: true convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-es@1.2.2: - resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} + cookie-es@1.2.3: + resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==} cookie@1.1.1: resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} @@ -6091,26 +5801,19 @@ packages: copy-anything@2.0.6: resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} - copy-to-clipboard@3.3.3: - resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} - core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - cosmiconfig-typescript-loader@6.2.0: - resolution: {integrity: sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==} + cosmiconfig-typescript-loader@6.3.0: + resolution: {integrity: sha512-Akr82WH1Wfqatyiqpj8HDkO2o2KmJRu1FhKfSNJP3K4IdXwHfEyL7MOb62i1AGQVLtIQM+iCE9CGOtrfhR+mmA==} engines: {node: '>=v18'} peerDependencies: '@types/node': '*' cosmiconfig: '>=9' typescript: '>=5' - cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + cosmiconfig@9.0.1: + resolution: {integrity: sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==} engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' @@ -6118,23 +5821,18 @@ packages: typescript: optional: true + cosmjs-types@0.10.1: + resolution: {integrity: sha512-CENXb4O5GN+VyB68HYXFT2SOhv126Z59631rZC56m8uMWa6/cSlFeai8BwZGT1NMepw0Ecf+U8XSOnBzZUWh9Q==} + cosmjs-types@0.9.0: resolution: {integrity: sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==} - crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - crc@3.8.0: resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==} create-ecdh@4.0.4: resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} - create-hash@1.1.3: - resolution: {integrity: sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA==} - create-hash@1.2.0: resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} @@ -6154,11 +5852,11 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - crossws@0.3.4: - resolution: {integrity: sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw==} + crossws@0.3.5: + resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} - crypt@0.0.2: - resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + crypto-browserify@3.12.0: + resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} crypto-browserify@3.12.1: resolution: {integrity: sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==} @@ -6167,26 +5865,26 @@ packages: crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - css-tree@3.1.0: - resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} css-what@6.2.2: resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true - cssstyle@5.3.4: - resolution: {integrity: sha512-KyOS/kJMEq5O9GdPnaf82noigg5X5DYn0kZPJTaAsCUaBizp6Xa1y9D4Qoqf/JazEXWuruErHgVXwjN5391ZJw==} + cssstyle@5.3.7: + resolution: {integrity: sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==} engines: {node: '>=20'} - csstype@3.2.1: - resolution: {integrity: sha512-98XGutrXoh75MlgLihlNxAGbUuFQc7l1cqcnEZlLNKc0UrVdPndgmaDmYTDDh929VS/eqTZV0rozmhu2qqT1/g==} - csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} @@ -6200,18 +5898,10 @@ packages: typescript: optional: true - dargs@8.1.0: - resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} - engines: {node: '>=12'} - - data-urls@6.0.0: - resolution: {integrity: sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==} + data-urls@6.0.1: + resolution: {integrity: sha512-euIQENZg6x8mj3fO6o9+fOW8MimUI4PpD/fZBhJfeioZVy9TUpM4UY7KjQNVZFlqwJ0UdzRDzkycB997HEq1BQ==} engines: {node: '>=20'} - date-fns@2.30.0: - resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} - engines: {node: '>=0.11'} - date-fns@4.1.0: resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} @@ -6226,24 +5916,6 @@ packages: supports-color: optional: true - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -6264,8 +5936,8 @@ packages: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} - dedent@1.7.0: - resolution: {integrity: sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==} + dedent@1.7.2: + resolution: {integrity: sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -6296,8 +5968,8 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} delay@4.4.1: resolution: {integrity: sha512-aL3AhqtfhOlT/3ai6sWXeqwnw63ATNpnUiN4HL7x9q+My5QtHlO3OIkasmug9LKzpheLdmUKGRKnYXYAS7FQkQ==} @@ -6311,18 +5983,14 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - depcheck@1.4.7: - resolution: {integrity: sha512-1lklS/bV5chOxwNKA/2XUUk/hPORp8zihZsXflr8x0kLwmcZ9Y9BsS6Hs3ssvA+2wUVbG0U2Ciqvm1SokNjPkA==} - engines: {node: '>=10'} - hasBin: true + denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} - deps-regex@0.2.0: - resolution: {integrity: sha512-PwuBojGMQAYbWkMXOY9Pd/NWCDNHVH12pnS7WHqZkTSeMESe4hwnKKRp0yR87g37113x4JPbo/oIvXY+s/f56Q==} - derive-valtio@0.1.0: resolution: {integrity: sha512-OCg2UsLbXK7GmmpzMXhYkdO64vhJ1ROUUGaTFyHjVwEdMEcTTRj7W1TxLbSBxdY8QLBPCcp66MTyaSy0RpO17A==} peerDependencies: @@ -6334,8 +6002,8 @@ packages: deshape@0.1.0: resolution: {integrity: sha512-6Z941WJcKPE2nMz2lqq5H3OlOAgxECQqOj/OtHluaqgM8ajKESt/vcexMkUw7JGzeuLVKXkGe7+vsCC71NC9SQ==} - destr@2.0.3: - resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} @@ -6347,19 +6015,6 @@ packages: detect-europe-js@0.1.2: resolution: {integrity: sha512-lgdERlL3u0aUdHocoouzT10d9I89VVhk0qNRmll7mXdGfJT1/wqZ2ZLA4oJAjeACPY5fT1wsbq2AT+GkuInsow==} - detect-file@1.0.0: - resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} - engines: {node: '>=0.10.0'} - - detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -6370,21 +6025,16 @@ packages: diffie-hellman@5.0.3: resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} - digraph-js@2.2.4: - resolution: {integrity: sha512-K42PmnGfSO73gOUDwq/kM7DLZaCQJpEKImEuz/aiSbmzEwoEUWSfkDNGfYcIFVZuNgn3tCkyEvzXJOoluP3bSQ==} - engines: {node: '>=16.0.0'} - dijkstrajs@1.0.3: resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dns-packet@5.6.1: resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} engines: {node: '>=6'} + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dom-walk@0.1.2: resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} @@ -6412,18 +6062,14 @@ packages: ecdsa-sig-formatter@1.0.11: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - eciesjs@0.4.16: - resolution: {integrity: sha512-dS5cbA9rA2VR4Ybuvhg6jvdmp46ubLn3E+px8cG/35aEDNclrqoCjg6mt0HYZ/M+OoESS3jSkCrqk1kWAEhWAw==} - engines: {bun: '>=1', deno: '>=2', node: '>=16'} - ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - effect@3.3.2: - resolution: {integrity: sha512-695XQBtp+UUYG50oREG9ujnRoeQU7xhwHDhT6ZAexm3Q+umdml1kjxcPoYRrS65crmaLlhVpjZHePJNzWOODnA==} + effect@4.0.0-beta.68: + resolution: {integrity: sha512-JVmKXJvpyKBzr4xEr9nRlA6wQoInsI2WCfu2F69On49hvyDAmAOMb5ACa51HJksvRdqbSg7Zf0d++NQebY9cFQ==} - electron-to-chromium@1.5.250: - resolution: {integrity: sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==} + electron-to-chromium@1.5.353: + resolution: {integrity: sha512-kOrWphBi8TOZyiJZqsgqIle0lw+tzmnQK83pV9dZUd01Nm2POECSyFQMAuarzZdYqQW7FH9RaYOuaRo3h+bQ3w==} elliptic@6.6.1: resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} @@ -6451,30 +6097,19 @@ packages: encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - engine.io-client@6.6.3: - resolution: {integrity: sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==} + engine.io-client@6.6.4: + resolution: {integrity: sha512-+kjUJnZGwzewFDw951CDWcwj35vMNf2fcj7xQWOctq1F2i1jkDdVvdFG9kM/BEChymCH36KgjnW0NsL58JYRxw==} engine.io-parser@5.2.3: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} engines: {node: '>=10.0.0'} - enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - entities@6.0.1: - resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} - engines: {node: '>=0.12'} + entities@8.0.0: + resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} + engines: {node: '>=20.19.0'} env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} @@ -6498,8 +6133,8 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@1.7.0: - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} @@ -6515,19 +6150,28 @@ packages: es-toolkit@1.39.3: resolution: {integrity: sha512-Qb/TCFCldgOy8lZ5uC7nLGdqJwSabkQiYQShmw4jyiPk1pZzaYWTwaYKYP7EgLccWYgZocMrtItrwh683voaww==} + es-toolkit@1.44.0: + resolution: {integrity: sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg==} + + es-toolkit@1.46.1: + resolution: {integrity: sha512-5eNtXOs3tbfxXOj04tjjseeWkRWaoCjdEI+96DgwzZoe6c9juL49pXlzAFTI72aWC9Y8p7168g6XIKjh7k6pyQ==} + + es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + es6-promise@4.2.8: resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} es6-promisify@5.0.0: resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - esbuild@0.25.12: - resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + esbuild@0.27.0: + resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==} engines: {node: '>=18'} hasBin: true - esbuild@0.27.0: - resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==} + esbuild@0.28.0: + resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==} engines: {node: '>=18'} hasBin: true @@ -6546,10 +6190,6 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -6565,27 +6205,12 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} - eth-block-tracker@7.1.0: - resolution: {integrity: sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==} - engines: {node: '>=14.0.0'} - - eth-json-rpc-filters@6.0.1: - resolution: {integrity: sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==} - engines: {node: '>=14.0.0'} - - eth-query@2.1.2: - resolution: {integrity: sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==} - eth-rpc-errors@4.0.3: resolution: {integrity: sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==} ethereum-cryptography@2.2.1: resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} - ethereum-cryptography@3.2.0: - resolution: {integrity: sha512-Urr5YVsalH+Jo0sYkTkv1MyI9bLYZwW8BENZCeE1QYaTHETEYx0Nv/SVsWkSqpYrzweg6d8KMY1wTjH/1m/BIg==} - engines: {node: ^14.21.3 || >=16, npm: '>=9'} - ethers@6.13.5: resolution: {integrity: sha512-+knKNieu5EKRThQJWwqaJ10a6HE9sSehGeqWN65//wE7j47ZpFhKAnHB/JJFibwwg61I/koxaPsXbXpD/skNOQ==} engines: {node: '>=14.0.0'} @@ -6601,15 +6226,15 @@ packages: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} - eventemitter2@6.4.9: - resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} - eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -6628,39 +6253,32 @@ packages: exenv@1.2.2: resolution: {integrity: sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==} - expand-tilde@2.0.2: - resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} - engines: {node: '>=0.10.0'} - expect-type@1.3.0: resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} + expect@30.4.1: + resolution: {integrity: sha512-PMARsyh/JtqC20HoGqlFcIlQAyqUtW4PlI1rup1uhYJtKuwAjbvWi3GQMAn+STdHum/dk8xrKfUM1+5SAwpolA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + exponential-backoff@3.1.3: resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} - extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - extension-port-stream@2.1.1: resolution: {integrity: sha512-qknp5o5rj2J9CRKfVB8KJr+uXQlrojNZzdESUPhKYLXf97TPcGf6qWWKmpsNNtUyOdzFhab1ON0jzouNxHHvow==} engines: {node: '>=12.0.0'} - extension-port-stream@3.0.0: - resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} - engines: {node: '>=12.0.0'} - eyes@0.1.8: resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} engines: {node: '> 0.1.90'} + fast-check@4.8.0: + resolution: {integrity: sha512-GOJ158CUMnN6cSahsv4+ExARvIDuzzinFjkp0E9WtiBa5zcVeLozVkWaE4IzFcc+Y48Wp1EDlUZsXRyAztQcSg==} + engines: {node: '>=12.17.0'} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -6674,21 +6292,27 @@ packages: fast-stable-stringify@1.0.0: resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - fast-uri@3.1.0: - resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fast-string-truncated-width@3.0.3: + resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} + + fast-string-width@3.0.2: + resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} + + fast-uri@3.1.2: + resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} + + fast-wrap-ansi@0.2.0: + resolution: {integrity: sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==} fastestsmallesttextencoderdecoder@1.0.22: resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - fd-package-json@2.0.0: - resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==} - fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -6719,6 +6343,9 @@ packages: resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} engines: {node: '>= 0.8'} + find-my-way-ts@0.1.6: + resolution: {integrity: sha512-a85L9ZoXtNAey3Y6Z+eBWW658kO/MwR7zIafkIUPUMf3isZG0NCs2pjW2wtjxAKuJPxMAsHUIP4ZPGv0o5gyTA==} + find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -6727,19 +6354,11 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - find-up@7.0.0: - resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} - engines: {node: '>=18'} - - findup-sync@5.0.0: - resolution: {integrity: sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==} - engines: {node: '>= 10.13.0'} - flow-enums-runtime@0.0.6: resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - follow-redirects@1.15.11: - resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -6751,26 +6370,18 @@ packages: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} - form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} - formatly@0.3.0: - resolution: {integrity: sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==} - engines: {node: '>=18.3.0'} - hasBin: true - - fp-ts@2.5.0: - resolution: {integrity: sha512-xkC9ZKl/i2cU+8FAsdyLcTvPRXphp42FcK5WmZpB47VXb4gggC3DHlVDKNLdbC+U8zz6yp1b0bj0mZg0axmZYQ==} - fraction.js@4.0.1: resolution: {integrity: sha512-NQYzZw8MUsxSZFQo6E8tKOlmSd/BlDTNOR4puXFSHSwFwNaIlmbortQy5PDN/KnVQ4xWG2NtN0J0hjPw7eE06A==} fraction.js@5.3.4: resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} - framer-motion@12.23.26: - resolution: {integrity: sha512-cPcIhgR42xBn1Uj+PzOyheMtZ73H927+uWPDVhUMqxy8UHt6Okavb6xIz9J/phFUHUj0OncR6UvMfJTXoc/LKA==} + framer-motion@12.38.0: + resolution: {integrity: sha512-rFYkY/pigbcswl1XQSb7q424kSTQ8q6eAC+YUsSKooHQYuLdzdHjrt6uxUC+PRAO++q5IS7+TamgIw1AphxR+g==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -6791,17 +6402,6 @@ packages: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} - fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - - fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - - fs-tree-structure@0.0.5: - resolution: {integrity: sha512-827ACYnAMC1DQRvhLUzZH0fCPhBJLo9P7WfxxwP4cibIzlrSzbD+Fh9W4FxFtSU+p9GlX0BoQUWLJ2LFJuoKuQ==} - fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -6826,8 +6426,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.4.0: - resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} engines: {node: '>=18'} get-intrinsic@1.3.0: @@ -6857,33 +6457,21 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-tsconfig@4.13.0: - resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} + get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} - git-raw-commits@4.0.0: - resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} - engines: {node: '>=16'} + git-raw-commits@5.0.1: + resolution: {integrity: sha512-Y+csSm2GD/PCSh6Isd/WiMjNAydu0VBiG9J7EdQsNA5P9uXvLayqjmTsNlK5Gs9IhblFZqOU0yid5Il5JPoLiQ==} + engines: {node: '>=18'} hasBin: true - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - global-directory@4.0.1: - resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} - engines: {node: '>=18'} - - global-modules@1.0.0: - resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} - engines: {node: '>=0.10.0'} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - global-prefix@1.0.2: - resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} - engines: {node: '>=0.10.0'} + global-directory@5.0.0: + resolution: {integrity: sha512-1pgFdhK3J2LeM+dVf2Pd424yHx2ou338lC0ErNP2hPx4j8eW1Sp0XqSjNxtk6Tc4Kr5wlWtSvz8cn2yb7/SG/w==} + engines: {node: '>=20'} global@4.4.0: resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} @@ -6892,10 +6480,6 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - google-protobuf@3.21.4: resolution: {integrity: sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==} @@ -6906,15 +6490,15 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphql@16.12.0: - resolution: {integrity: sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==} + graphql@16.14.0: + resolution: {integrity: sha512-BBvQ/406p+4CZbTpCbVPSxfzrZrbnuWSP1ELYgyS6B+hNeKzgrdB4JczCa5VZUBQrDa9hUngm0KnexY6pJRN5Q==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - h3@1.15.1: - resolution: {integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==} + h3@1.15.11: + resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==} - handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + handlebars@4.7.9: + resolution: {integrity: sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==} engines: {node: '>=0.4.7'} hasBin: true @@ -6933,9 +6517,6 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - hash-base@2.0.2: - resolution: {integrity: sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw==} - hash-base@3.0.5: resolution: {integrity: sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==} engines: {node: '>= 0.10'} @@ -6944,30 +6525,33 @@ packages: resolution: {integrity: sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==} engines: {node: '>= 0.8'} + hash-wasm@4.12.0: + resolution: {integrity: sha512-+/2B2rYLb48I/evdOIhP+K/DD2ca2fgBjp6O+GBEnCDk2e4rpeXIK8GvIyRPjTezgmWn9gmKwkQjjx6BtqDHVQ==} + hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} hashlru@2.3.0: resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + hasown@2.0.3: + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} engines: {node: '>= 0.4'} - headers-polyfill@4.0.3: - resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} + headers-polyfill@5.0.1: + resolution: {integrity: sha512-1TJ6Fih/b8h5TIcv+1+Hw0PDQWJTKDKzFZzcKOiW1wJza3XoAQlkCuXLbymPYB8+ZQyw8mHvdw560e8zVFIWyA==} hermes-estree@0.29.1: resolution: {integrity: sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==} - hermes-estree@0.32.0: - resolution: {integrity: sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==} + hermes-estree@0.35.0: + resolution: {integrity: sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==} hermes-parser@0.29.1: resolution: {integrity: sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==} - hermes-parser@0.32.0: - resolution: {integrity: sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==} + hermes-parser@0.35.0: + resolution: {integrity: sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==} hey-listen@1.0.8: resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} @@ -6975,12 +6559,8 @@ packages: hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - homedir-polyfill@1.0.3: - resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} - engines: {node: '>=0.10.0'} - - hono@4.11.0: - resolution: {integrity: sha512-Jg8uZzN2ul8/qlyid5FO8O624F3AK0wKtkgoeEON1qBum1rM1itYBxoMKu/1SPJC7F1+xlIZsJMmc4HHhJ1AWg==} + hono@4.12.18: + resolution: {integrity: sha512-RWzP96k/yv0PQfyXnWjs6zot20TqfpfsNXhOnev8d1InAxubW93L11/oNUc3tQqn2G0bSdAOBpX+2uDFHV7kdQ==} engines: {node: '>=16.9.0'} html-encoding-sniffer@4.0.0: @@ -6990,14 +6570,17 @@ packages: html-parse-stringify@3.0.1: resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} + http2-client@1.3.5: + resolution: {integrity: sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==} + https-browserify@1.0.0: resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} @@ -7005,10 +6588,6 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} - human-id@4.1.3: - resolution: {integrity: sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==} - hasBin: true - human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -7021,13 +6600,13 @@ packages: engines: {node: '>=18'} hasBin: true - i18next-browser-languagedetector@8.2.0: - resolution: {integrity: sha512-P+3zEKLnOF0qmiesW383vsLdtQVyKtCNA9cjSoKCppTKPQVfKd2W8hbVo5ZhNJKDqeM7BOcvNoKJOjpHh4Js9g==} + i18next-browser-languagedetector@8.2.1: + resolution: {integrity: sha512-bZg8+4bdmaOiApD7N7BPT9W8MLZG+nPTOFlLiJiT8uzKXFjhxw4v2ierCXOwB5sFDMtuA5G4kgYZ0AznZxQ/cw==} - i18next@25.7.2: - resolution: {integrity: sha512-58b4kmLpLv1buWUEwegMDUqZVR5J+rT+WTRFaBGL7lxDuJQQ0NrJFrq+eT2N94aYVR1k1Sr13QITNOL88tZCuw==} + i18next@26.1.0: + resolution: {integrity: sha512-dIU6td04DvQuIqVst5S9g0GviTmhZ0DYD4b9ociVGJmuCa5vZ2de/t+Enf4olvj87mF8Y2lwjNQBwC9QZsvzKQ==} peerDependencies: - typescript: ^5 + typescript: ^5 || ^6 peerDependenciesMeta: typescript: optional: true @@ -7040,10 +6619,6 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} - iconv-lite@0.7.0: - resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} - engines: {node: '>=0.10.0'} - idb-keyval@6.2.1: resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} @@ -7053,14 +6628,6 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore-walk@6.0.5: - resolution: {integrity: sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - image-size@0.5.5: resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} engines: {node: '>=0.10.0'} @@ -7071,20 +6638,21 @@ packages: engines: {node: '>=16.x'} hasBin: true - immutable@5.1.4: - resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==} + immutable@5.1.5: + resolution: {integrity: sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==} import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} - import-meta-resolve@4.2.0: - resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} - imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -7095,9 +6663,13 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - ini@4.1.1: - resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + ini@6.0.0: + resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} + engines: {node: ^20.17.0 || >=22.9.0} + + ini@7.0.0: + resolution: {integrity: sha512-ifK0CgjALofS5bkrcTy4RaQ9Vx2Knf/eLeIO+NaswQEpH1UblrtTSCIvN71qQDMq0PeQ/SSPojvEJp9vvvfr+w==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} int64-buffer@1.1.0: resolution: {integrity: sha512-94smTCQOvigN4d/2R/YDjz8YVG0Sufvv2aAh8P5m42gwhCsDAJqnbNOrxJsrADuAFAA69Q/ptGzxvNcNuIJcvw==} @@ -7105,13 +6677,12 @@ packages: invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - io-ts@2.2.22: - resolution: {integrity: sha512-FHCCztTkHoV9mdBsHpocLpdTAfh956ZQcIkWQxxS0U5HT53vtrcuYdQneEJKH6xILaLNzXVl2Cvwtoy8XNN0AA==} - peerDependencies: - fp-ts: ^2.5.0 + ioredis@5.10.1: + resolution: {integrity: sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==} + engines: {node: '>=12.22.0'} - ip-address@10.0.1: - resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} + ip-address@10.2.0: + resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==} engines: {node: '>= 12'} ip-address@9.0.5: @@ -7128,18 +6699,15 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - - is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + is-arrayish@0.3.4: + resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + is-core-module@2.16.2: + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} engines: {node: '>= 0.4'} is-docker@2.2.1: @@ -7147,11 +6715,6 @@ packages: engines: {node: '>=8'} hasBin: true - is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -7168,11 +6731,6 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - is-interactive@2.0.0: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} @@ -7196,6 +6754,10 @@ packages: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + is-port-reachable@4.0.0: resolution: {integrity: sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -7207,10 +6769,6 @@ packages: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} - is-retry-allowed@2.2.0: - resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} - engines: {node: '>=10'} - is-retry-allowed@3.0.0: resolution: {integrity: sha512-9xH0xvoggby+u0uGF7cZXdrutWiBiaFG8ZT4YFPXL8NzkyAwX3AKGLeFQLvzDpM430+nDFBZ1LHkie/8ocL06A==} engines: {node: '>=12'} @@ -7222,21 +6780,10 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} - - is-text-path@2.0.0: - resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} - engines: {node: '>=8'} - is-typed-array@1.1.15: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} - is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - is-unicode-supported@1.3.0: resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} @@ -7248,18 +6795,10 @@ packages: is-what@3.14.1: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} - is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} - isarray@0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} @@ -7283,24 +6822,11 @@ packages: resolution: {integrity: sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==} engines: {node: '>=10'} - isomorphic-unfetch@3.1.0: - resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} - isomorphic-ws@4.0.1: resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} peerDependencies: ws: '*' - isomorphic-ws@5.0.0: - resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} - peerDependencies: - ws: '*' - - isows@1.0.3: - resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} - peerDependencies: - ws: '*' - isows@1.0.6: resolution: {integrity: sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==} peerDependencies: @@ -7327,6 +6853,10 @@ packages: engines: {node: '>=8'} hasBin: true + jest-diff@30.4.1: + resolution: {integrity: sha512-CRpFK0RtLriVDGcPPAnR6HMVI8bSR2jnUIgralhauzYQZIb4RH9AtEInTuQr65LmmGggGcRT6HIASxwqsVsmlA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-environment-node@29.7.0: resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7339,22 +6869,42 @@ packages: resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-matcher-utils@30.4.1: + resolution: {integrity: sha512-zvYfX5CaeEkFrrLS9suWe9rvJrm9J1Iv3ua8kIBv9GEPzcnsfBf0bob37la7s67fs0nlBC3EuvkOLnXQKxtx4A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-message-util@29.7.0: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-message-util@30.4.1: + resolution: {integrity: sha512-kwCKIvq0MCW1HzLoGola9Te6JUdzgV0loyKJ3Qghrkz9i5/RRIHsL95BMQc2HBBhlBKC4j22K9p11TGHH8RBpQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-mock@29.7.0: resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-mock@30.4.1: + resolution: {integrity: sha512-/i8SVb8/NSB7RfNi8gfqu8gxLV23KaL5EpAttyb9iz8qWRIqXRLflycz/32wXsYkOnaUlx8NAKnJYtpsmXUmfw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-regex-util@29.6.3: resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-regex-util@30.4.0: + resolution: {integrity: sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-util@30.4.1: + resolution: {integrity: sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-validate@29.7.0: resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7367,8 +6917,9 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true - jose@6.1.3: - resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==} + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true js-base64@3.7.8: resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==} @@ -7379,10 +6930,6 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - js-yaml@3.14.2: resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true @@ -7417,6 +6964,9 @@ packages: json-bigint@1.0.0: resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + json-logic-js@2.0.5: + resolution: {integrity: sha512-rTT2+lqcuUmj4DgWfmzupZqQDA64AdmYqizzMPWj3DxGdfFNsxPpcNVSaTj4l8W2tG/+hg7/mQhxjU3aPacO6g==} + json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -7428,9 +6978,6 @@ packages: resolution: {integrity: sha512-4iFb0yffm5vo3eFKDbQgke9o17XBcLQ2c3sONrXSbcOLzP8LTojqo8hRGVgtJShhm5q4ZDSNq039fAx9o65E1w==} engines: {node: '>=14.0.0'} - json-rpc-random-id@1.0.1: - resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} - json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -7446,19 +6993,12 @@ packages: engines: {node: '>=6'} hasBin: true - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - - jsonfile@6.2.0: - resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} jsonify@0.0.1: resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - jsqr@1.4.0: resolution: {integrity: sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==} @@ -7468,31 +7008,18 @@ packages: jwa@2.0.1: resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} - jws@4.0.0: - resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} + jws@4.0.1: + resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} jwt-decode@4.0.0: resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==} engines: {node: '>=18'} - keccak@3.0.4: - resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} - engines: {node: '>=10.0.0'} - keyvaluestorage-interface@1.0.0: resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - - knip@5.73.4: - resolution: {integrity: sha512-q0DDgqsRMa4z2IMEPEblns0igitG8Fu7exkvEgQx1QMLKEqSvcvKP9fMk+C1Ehy+Ux6oayl6zfAEGt6DvFtidw==} - engines: {node: '>=18.18.0'} - hasBin: true - peerDependencies: - '@types/node': '>=18' - typescript: '>=5.0.4 <7' + kubernetes-types@1.30.0: + resolution: {integrity: sha512-Dew1okvhM/SQcIa2rcgujNndZwU8VnSapDgdxlYoB84ZlpAD43U6KLAFqYo17ykSFGHNPrg0qry0bP+GJd9v7Q==} less@4.2.2: resolution: {integrity: sha512-tkuLHQlvWUTeQ3doAqnHbNn8T6WX1KA8yvbKG9x4VtKtIjHsVKQZCH11zRgAfbDAXC2UNIg/K9BYAAcEzUIrNg==} @@ -7506,26 +7033,106 @@ packages: libsodium-sumo@0.7.15: resolution: {integrity: sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==} + libsodium-sumo@0.7.16: + resolution: {integrity: sha512-x6atrz2AdXCJg6G709x9W9TTJRI6/0NcL5dD0l5GGVqNE48UJmDsjO4RUWYTeyXXUpg+NXZ2SHECaZnFRYzwGA==} + libsodium-wrappers-sumo@0.7.15: resolution: {integrity: sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==} + libsodium-wrappers-sumo@0.7.16: + resolution: {integrity: sha512-gR0JEFPeN3831lB9+ogooQk0KH4K5LSMIO5Prd5Q5XYR2wHFtZfPg0eP7t1oJIWq+UIzlU4WVeBxZ97mt28tXw==} + lighthouse-logger@1.4.2: resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} lit-element@3.3.3: resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} - lit-element@4.2.1: - resolution: {integrity: sha512-WGAWRGzirAgyphK2urmYOV72tlvnxw7YfyLDgQ+OZnM9vQQBQnumQ7jUJe6unEzwGU3ahFOjuz1iz1jjrpCPuw==} + lit-element@4.2.2: + resolution: {integrity: sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==} lit-html@2.8.0: resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} - lit-html@3.3.1: - resolution: {integrity: sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA==} + lit-html@3.3.2: + resolution: {integrity: sha512-Qy9hU88zcmaxBXcc10ZpdK7cOLXvXpRoBxERdtqV9QOrfpMZZ6pSYP91LhpPtap3sFMUiL7Tw2RImbe0Al2/kw==} lit@2.8.0: resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} @@ -7544,56 +7151,37 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} lodash.clonedeep@4.5.0: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + + lodash.isarguments@3.1.0: + resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - lodash.kebabcase@4.1.1: - resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.mergewith@4.6.2: - resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} - - lodash.snakecase@4.1.1: - resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} - - lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - lodash.throttle@4.1.1: resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - lodash.uniqwith@4.5.0: resolution: {integrity: sha512-7lYL8bLopMoy4CTICbxygAUq6CdRJ36vFc80DucPueUee+d5NBRxz3FdT9Pes/HEx5mPoT9jwnsEJWz1N7uq7Q==} - lodash.upperfirst@4.3.1: - resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} - lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + log-symbols@6.0.0: resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} engines: {node: '>=18'} @@ -7608,8 +7196,8 @@ packages: long@5.2.5: resolution: {integrity: sha512-e0r9YBBgNCq1D1o5Dp8FMH0N5hsFtXDBiVa0qoJPHpakvZkmDKPRoGffZJII/XsHvj9An9blm+cRJ01yQqU+Dw==} - long@5.3.1: - resolution: {integrity: sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng==} + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} @@ -7621,8 +7209,8 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.2.4: - resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} + lru-cache@11.3.6: + resolution: {integrity: sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==} engines: {node: 20 || >=22} lru-cache@5.1.1: @@ -7645,10 +7233,6 @@ packages: marky@1.3.0: resolution: {integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==} - matchit@1.1.0: - resolution: {integrity: sha512-+nGYoOlfHmxe5BW5tE0EMJppXEwdSf8uBA1GTZC7Q77kbT35+VKLYJMzVNWCHSsga1ps1tPYFtFyvxvKzWVmMA==} - engines: {node: '>=6'} - math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -7656,11 +7240,8 @@ packages: md5.js@1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - md5@2.3.0: - resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} - - mdn-data@2.12.2: - resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} media-query-parser@2.0.2: resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} @@ -7668,9 +7249,9 @@ packages: memoize-one@5.2.1: resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} - meow@12.1.1: - resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} - engines: {node: '>=16.10'} + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} merge-options@3.0.4: resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} @@ -7679,75 +7260,64 @@ packages: merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - meriyah@4.5.0: - resolution: {integrity: sha512-Rbiu0QPIxTXgOXwiIpRVJfZRQ2FWyfzYrOGBs9SN5RbaXg1CN5ELn/plodwWwluX93yzc4qO/bNIen1ThGFCxw==} - engines: {node: '>=10.4.0'} - - metro-babel-transformer@0.83.3: - resolution: {integrity: sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==} + metro-babel-transformer@0.83.7: + resolution: {integrity: sha512-sBqBkt6kNut/88bv+Ucvm4yqdPetbvAEsHzi3MAgJEifOSYYzX5Z5Kgw3TFOrwf/mHJTOBG2ONlaMHoyfP15TA==} engines: {node: '>=20.19.4'} - metro-cache-key@0.83.3: - resolution: {integrity: sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==} + metro-cache-key@0.83.7: + resolution: {integrity: sha512-W1c2Nmx8MiJTJt+eWhMO08z9VKi3kZOaz99IYGdqeqDgY9j+yZjXl62rUav4Di0heZfh4/n2s722PqRL1OODeg==} engines: {node: '>=20.19.4'} - metro-cache@0.83.3: - resolution: {integrity: sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==} + metro-cache@0.83.7: + resolution: {integrity: sha512-E9SRePXQ1Zvlj79VcOk57q7VC7rMHMFQ+jhmPHBiq+dJ0bJB5BL87lWZF6oh5X76Cci5tpDuQNaDwwuSCToEeg==} engines: {node: '>=20.19.4'} - metro-config@0.83.3: - resolution: {integrity: sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==} + metro-config@0.83.7: + resolution: {integrity: sha512-83mjWFbFOt2GeJ6pFIum5mSnc1uTsZJAtD8o4ej0s4NVsYsA7fB+pHvTfHhFrpeMONaobu2riKavkPei05Er/Q==} engines: {node: '>=20.19.4'} - metro-core@0.83.3: - resolution: {integrity: sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==} + metro-core@0.83.7: + resolution: {integrity: sha512-6yn3w1wnltT6RQl7p7YES2l95ArC+mWrOssEiH8p5/DDrJS65/szf9LsC9JrBv8c5DdvSY3V3f0GRYg0Ox7hCg==} engines: {node: '>=20.19.4'} - metro-file-map@0.83.3: - resolution: {integrity: sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==} + metro-file-map@0.83.7: + resolution: {integrity: sha512-+j0F1m+FQYVAQ6syf+mwhIPV5GoFQrkInX8bppuc50IzNsZbMrp8R5H/Sx/K2daQ3YEa9F/XwkeZT8gzJfgeCw==} engines: {node: '>=20.19.4'} - metro-minify-terser@0.83.3: - resolution: {integrity: sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==} + metro-minify-terser@0.83.7: + resolution: {integrity: sha512-MfJar2IS4tBRuLb9svwb0Gu5l9BsH+pcRm8eGcEi/wy8MzZinfinh5dFLt2nWkocnulIgtGB5NkFDdbXqMXKhQ==} engines: {node: '>=20.19.4'} - metro-resolver@0.83.3: - resolution: {integrity: sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==} + metro-resolver@0.83.7: + resolution: {integrity: sha512-WSJIENlMcoSsuz66IfBHOkgfp3KJt2UW2TnEHPf1b8pIG2eEXNOVmo2+03A0H17WY2XGXWgxL0CG7FAopqgB1A==} engines: {node: '>=20.19.4'} - metro-runtime@0.83.3: - resolution: {integrity: sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==} + metro-runtime@0.83.7: + resolution: {integrity: sha512-9GKkJURaB2iyYoEExKnedzAHzxmKtSi+k0tsZUvMoU27tBZJElchYt7JH/Ai/XzYAI9lCAaV7u5HZSI8J5Z+wQ==} engines: {node: '>=20.19.4'} - metro-source-map@0.83.3: - resolution: {integrity: sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==} + metro-source-map@0.83.7: + resolution: {integrity: sha512-JgA1h7oc1a1jydBe1GhVFsUoMYo3wLPk7oRA32rjlDsq+sP2JLt9x2p2lWbNSxTm/u8NV4VRid3hvEJgcX8tKw==} engines: {node: '>=20.19.4'} - metro-symbolicate@0.83.3: - resolution: {integrity: sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==} + metro-symbolicate@0.83.7: + resolution: {integrity: sha512-g4suyxw20WOHWI680c+Kq4wC/NF+Hx5pRH9afrMp+sMTxqLeKcPR1Xf4wMhsjlbvx7LbIREdke6q928jEjvJWw==} engines: {node: '>=20.19.4'} hasBin: true - metro-transform-plugins@0.83.3: - resolution: {integrity: sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==} + metro-transform-plugins@0.83.7: + resolution: {integrity: sha512-Ss0FpBiZDjX2kwhukMDl5sNdYK8T/06IPqxNE4H6PTlRlfs9q11cef13c/xESY/Pm4VCkp1yJUZO3kXzvMxQFA==} engines: {node: '>=20.19.4'} - metro-transform-worker@0.83.3: - resolution: {integrity: sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==} + metro-transform-worker@0.83.7: + resolution: {integrity: sha512-UegCo7ygB2fT64mRK2nbAjQVJ1zSwIIHy8d96jJv2nKZFDaViYBiughEdu5HM/Ceq0WN3LZrZk3zhl9aoiLYFw==} engines: {node: '>=20.19.4'} - metro@0.83.3: - resolution: {integrity: sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==} + metro@0.83.7: + resolution: {integrity: sha512-SPaPEyvTsTmd0LpT7RaZciQyDw2i/JB7+iY9L5VfBo72+psescFxBqpI1TL9dnL+pmnfkU+l/J1mEEGLeF65EQ==} engines: {node: '>=20.19.4'} hasBin: true - micro-ftch@0.3.1: - resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} - micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -7764,6 +7334,10 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + mime-types@2.1.18: resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} engines: {node: '>= 0.6'} @@ -7772,11 +7346,20 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} + mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true + mime@4.1.0: + resolution: {integrity: sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==} + engines: {node: '>=16'} + hasBin: true + mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -7788,22 +7371,18 @@ packages: min-document@2.19.2: resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==} + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -7819,34 +7398,35 @@ packages: mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - mixpanel-browser@2.72.0: - resolution: {integrity: sha512-Olc+1ebVBSVBjtR/Pp4t8Pc1wAI9AfA5e668B0MsI/gKJ43QcndzfQ/AT/TiP1Klup8O1C9vwykoWjvPqX+SRA==} + mixpanel-browser@2.78.0: + resolution: {integrity: sha512-K2nsMLnTK0PXcQxhj1aJyGpKyEfo2u7wgZhVm532DTjkoCbJJkuSjDBWJFCH5agEM5oE0aVoCYKd0hZ+i8LsYw==} + engines: {node: '>=20 <26'} mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true - mlly@1.8.0: - resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + mlly@1.8.2: + resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} - mobx@6.13.7: - resolution: {integrity: sha512-aChaVU/DO5aRPmk1GX8L+whocagUUpBQqoPtJk+cm7UOXUk87J4PeWCh6nNmTTIfEhiR9DI/+FnA8dln/hTK7g==} + mobx@6.15.3: + resolution: {integrity: sha512-6+ZSYDs5zgH5CdGfEU2q2Lsa5PztVryL1ys7kAImTU25n2A9LAMj/yneVsQpd03MfwMLDQF+7kakJR9Z+cQxSw==} modern-ahocorasick@1.1.0: resolution: {integrity: sha512-sEKPVl2rM+MNVkGQt3ChdmD8YsigmXdn5NifZn6jiwn9LRJpWm8F3guhaqrJT/JOat6pwpbXEk6kv+b9DMIjsQ==} - motion-dom@12.23.23: - resolution: {integrity: sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==} + motion-dom@12.38.0: + resolution: {integrity: sha512-pdkHLD8QYRp8VfiNLb8xIBJis1byQ9gPT3Jnh2jqfFtAsWUA3dEepDlsWe/xMpO8McV+VdpKVcp+E+TGJEtOoA==} - motion-utils@12.23.6: - resolution: {integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==} + motion-utils@12.36.0: + resolution: {integrity: sha512-eHWisygbiwVvf6PZ1vhaHCLamvkSbPIeAYxWUuL3a2PD/TROgE7FvfHWTIH4vMl798QLfMw15nRqIaRDXTlYRg==} motion@10.16.2: resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} - motion@12.23.26: - resolution: {integrity: sha512-Ll8XhVxY8LXMVYTCfme27WH2GjBrCIzY4+ndr5QKxsK+YwCtOi2B/oBi5jcIbik5doXuWT/4KKDOVAZJkeY5VQ==} + motion@12.38.0: + resolution: {integrity: sha512-uYfXzeHlgThchzwz5Te47dlv5JOUC7OB4rjJ/7XTUgtBZD8CchMN8qEJ4ZVsUmTyYA44zjV0fBwsiktRuFnn+w==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -7859,10 +7439,6 @@ packages: react-dom: optional: true - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} @@ -7870,14 +7446,18 @@ packages: ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - msw@2.12.4: - resolution: {integrity: sha512-rHNiVfTyKhzc0EjoXUBVGteNKBevdjOlVC6GlIRXpy+/3LHEIGRovnB5WPjcvmNODVQ1TNFnoa7wsGbd0V3epg==} + msgpackr-extract@3.0.3: + resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} + hasBin: true + + msgpackr@2.0.1: + resolution: {integrity: sha512-9J+tqTEsbHqY8YohazYgty7LgerFIWxvMLpUjqETSmjHojtJm2WnX2kK/2a1fLI7CO7ERP1YSEUXMucz4j+yBA==} + + msw@2.14.6: + resolution: {integrity: sha512-ALe+N10S72cyx94cMcy3Zs4HhXCj35sgeAL4c+WTvKi0zWnbd8/h0lcFqv0mb2P+aSgAdD7p9HzvA0DiUPxsyg==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -7892,16 +7472,12 @@ packages: multiformats@9.9.0: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} - multimatch@5.0.0: - resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} - engines: {node: '>=10'} - - mute-stream@2.0.0: - resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} - engines: {node: ^18.17.0 || >=20.5.0} + multipasta@0.2.7: + resolution: {integrity: sha512-KPA58d68KgGil15oDqXjkUBEBYc00XvbPj5/X+dyzeo/lWm9Nc25pQRlf1D+gv4OpK7NM0J1odrbu9JNNGvynA==} - nan@2.22.2: - resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==} + mute-stream@3.0.0: + resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} + engines: {node: ^20.17.0 || >=22.9.0} nan@2.23.1: resolution: {integrity: sha512-r7bBUGKzlqk8oPBDYxt6Z0aEdF1G1rwlMcLk8LCOMbOzf0mG+JUfUzG4fIMWwHWP0iyaLWEQZJmtB7nOHEm/qw==} @@ -7909,32 +7485,29 @@ packages: nanoassert@2.0.0: resolution: {integrity: sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==} - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanospinner@1.2.2: - resolution: {integrity: sha512-Zt/AmG6qRU3e+WnzGGLuMCEAO/dAu45stNbHY223tUxldaDAeE+FxSPsd9Q+j+paejmm0ZbrNVs5Sraqy3dRxA==} - - needle@3.3.1: - resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + needle@3.5.0: + resolution: {integrity: sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==} engines: {node: '>= 4.4.x'} hasBin: true - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - negotiator@0.6.4: resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} engines: {node: '>= 0.6'} + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - next@16.0.10: - resolution: {integrity: sha512-RtWh5PUgI+vxlV3HdR+IfWA1UUHu0+Ram/JBO4vWB54cVPentCD0e+lxyAYEsDTqGGMg7qpjhKh6dc6aW7W/sA==} + next@16.2.6: + resolution: {integrity: sha512-qOVgKJg1+At15NpeUP+eJgCHvTCgXsogweq87Ri/Ix7PkqQHg4sdaXmSFqKlgaIXE4kW0g25LE68W87UANlHtw==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -7958,21 +7531,22 @@ packages: resolution: {integrity: sha512-yAyTfdeNJGGBFxWdzSKCBYxs5FxLbCg5X5Q4ets974hcQzG1+qCxvIyOo4j2Ry6MUlhWVMX4OoYDefAIIwupjw==} engines: {node: '>= 10.13'} - node-addon-api@2.0.2: - resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} - node-addon-api@3.2.1: resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - node-addon-api@8.5.0: - resolution: {integrity: sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==} + node-addon-api@8.7.0: + resolution: {integrity: sha512-9MdFxmkKaOYVTV+XVRG8ArDwwQ77XIgIPyKASB1k3JPq3M8fGQQQE3YpMOrKm6g//Ktx8ivZr8xo1Qmtqub+GA==} engines: {node: ^18 || ^20 || >= 21} - node-fetch-native@1.6.6: - resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} + node-fetch-h2@2.3.0: + resolution: {integrity: sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==} + engines: {node: 4.x || >=6.0.0} + + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} @@ -7983,6 +7557,10 @@ packages: encoding: optional: true + node-gyp-build-optional-packages@5.2.2: + resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} + hasBin: true + node-gyp-build@4.8.4: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true @@ -7990,24 +7568,27 @@ packages: node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - node-mock-http@1.0.0: - resolution: {integrity: sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==} + node-mock-http@1.0.4: + resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} + + node-readfiles@0.2.0: + resolution: {integrity: sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==} - node-releases@2.0.27: - resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + node-releases@2.0.44: + resolution: {integrity: sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==} node-stdlib-browser@1.3.1: resolution: {integrity: sha512-X75ZN8DCLftGM5iKwoYLA3rjnrAEs97MkzvSd4q2746Tgpg8b8XWiBGiBG4ZpgcAqBgtgPHTiAc8ZMCvZuikDw==} engines: {node: '>=10'} + nofilter@3.1.0: + resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} + engines: {node: '>=12.19'} + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -8091,12 +7672,25 @@ packages: nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - ob1@0.83.3: - resolution: {integrity: sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==} - engines: {node: '>=20.19.4'} + oas-kit-common@1.0.8: + resolution: {integrity: sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==} + + oas-linter@3.2.2: + resolution: {integrity: sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==} + + oas-resolver@2.5.6: + resolution: {integrity: sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ==} + hasBin: true + + oas-schema-walker@1.1.5: + resolution: {integrity: sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==} - obj-multiplex@1.0.0: - resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} + oas-validator@5.0.8: + resolution: {integrity: sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw==} + + ob1@0.83.7: + resolution: {integrity: sha512-9M5kpuOLyTPogMtZiQUIxdAZxl7Dxs6tVBbJErSumsqGMuhVSoUbkfeZ3XNPpLpwBBtqY5QDUzGwggLHX3slQg==} + engines: {node: '>=20.19.4'} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -8125,8 +7719,8 @@ packages: obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} - ofetch@1.4.1: - resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + ofetch@1.5.1: + resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} on-exit-leak-free@0.2.0: resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} @@ -8162,12 +7756,6 @@ packages: resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} engines: {node: '>=8'} - openapi-fetch@0.13.8: - resolution: {integrity: sha512-yJ4QKRyNxE44baQ9mY5+r/kAzZ8yXMemtNAOFwOzRXJscdjSxxzWSNlyBAr+o5JjkUw9Lc3W7OIoca0cY3PYnQ==} - - openapi-typescript-helpers@0.0.15: - resolution: {integrity: sha512-opyTPaunsklCBpTK8JGef6mfPhLSnyy5a0IN9vKtx3+4aExf+KxEqYwIy3hqkedXIB97u357uLMJsOnm3GVjsw==} - ora@8.2.0: resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} engines: {node: '>=18'} @@ -8175,12 +7763,17 @@ packages: os-browserify@0.3.0: resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} - outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - outvariant@1.4.3: resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} + ox@0.14.20: + resolution: {integrity: sha512-rby38C3nDn8eQkf29Zgw4hkCZJ64Qqi0zRPWL8ENUQ7JVuoITqrVtwWQgM/He19SCMUEc7hS/Sjw0jIOSLJhOw==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + ox@0.6.7: resolution: {integrity: sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==} peerDependencies: @@ -8221,21 +7814,6 @@ packages: typescript: optional: true - ox@0.9.6: - resolution: {integrity: sha512-8SuCbHPvv2eZLYXrNmC0EC12rdzXQLdhnOMlHDW2wiCPLxBrOOJwX5L5E61by+UjTPOryqQiRSnjIKCI+GykKg==} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - oxc-resolver@11.15.0: - resolution: {integrity: sha512-Hk2J8QMYwmIO9XTCUiOH00+Xk2/+aBxRUnhrSlANDyCnLYc32R1WSIq1sU2yEdlqd53FfMpPEpnBYIKQMzliJw==} - - p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} - p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -8244,10 +7822,6 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -8256,14 +7830,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - p-queue@9.0.0: resolution: {integrity: sha512-KO1RyxstL9g1mK76530TExamZC/S2Glm080Nx8PE5sTd7nlduDQsAfEl4uXX+qZjLiwvDauvzXavufy3+rJ9zQ==} engines: {node: '>=20'} @@ -8276,9 +7842,6 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - package-manager-detector@0.2.11: - resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} - pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} @@ -8289,14 +7852,10 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - parse-asn1@5.1.7: - resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==} + parse-asn1@5.1.9: + resolution: {integrity: sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==} engines: {node: '>= 0.10'} - parse-gitignore@2.0.0: - resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} - engines: {node: '>=14'} - parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -8305,12 +7864,8 @@ packages: resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} engines: {node: '>= 0.10'} - parse-passwd@1.0.0: - resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} - engines: {node: '>=0.10.0'} - - parse5@8.0.0: - resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} + parse5@8.0.1: + resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==} parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} @@ -8323,10 +7878,6 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -8347,17 +7898,9 @@ packages: path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pbkdf2@3.1.3: - resolution: {integrity: sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA==} - engines: {node: '>=0.12'} - pbkdf2@3.1.5: resolution: {integrity: sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==} engines: {node: '>= 0.10'} @@ -8365,26 +7908,18 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} - pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - pify@5.0.0: - resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} - engines: {node: '>=10'} - pino-abstract-transport@0.5.0: resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} @@ -8394,8 +7929,8 @@ packages: pino-std-serializers@4.0.0: resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} - pino-std-serializers@7.0.0: - resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} + pino-std-serializers@7.1.0: + resolution: {integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==} pino@10.0.0: resolution: {integrity: sha512-eI9pKwWEix40kfvSzqEP6ldqOoBIN7dwD/o91TY5z8vQI12sAffpR/pOqAD1IVVwIVHDpHjkq0joBPdJD0rafA==} @@ -8409,10 +7944,6 @@ packages: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} - pixelmatch@7.1.0: - resolution: {integrity: sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==} - hasBin: true - pkg-dir@5.0.0: resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} engines: {node: '>=10'} @@ -8420,19 +7951,16 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - playwright-core@1.57.0: - resolution: {integrity: sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==} + playwright-core@1.60.0: + resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} engines: {node: '>=18'} hasBin: true - playwright@1.57.0: - resolution: {integrity: sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==} + playwright@1.60.0: + resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==} engines: {node: '>=18'} hasBin: true - please-upgrade-node@3.2.0: - resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} - pngjs@5.0.0: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} @@ -8441,13 +7969,6 @@ packages: resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==} engines: {node: '>=14.19.0'} - polka@0.5.2: - resolution: {integrity: sha512-FVg3vDmCqP80tOrs+OeNlgXYmFppTXdjD5E7I4ET1NjvtNmQrb1/mJibybKkb/d4NA7YWAr1ojxuhpL3FHqdlw==} - - pony-cause@2.1.11: - resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} - engines: {node: '>=12.0.0'} - porto@0.2.35: resolution: {integrity: sha512-gu9FfjjvvYBgQXUHWTp6n3wkTxVtEcqFotM7i3GEZeoQbvLGbssAicCz6hFZ8+xggrJWwi/RLmbwNra50SMmUQ==} hasBin: true @@ -8491,26 +8012,18 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + postcss@8.5.14: + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} + preact@10.23.0: + resolution: {integrity: sha512-Pox0jeY4q6PGkFB5AsXni+zHxxx/sAYFIFZzukW4nIpoJLRziRX0xC4WjZENlkSrDQvqVgZcaZzZ/NL8/A+H/w==} + preact@10.24.2: resolution: {integrity: sha512-1cSoF0aCC8uaARATfrlz4VCBqE8LwZwRfLgkxJOQwAlQt6ayTmi0D9OF7nXid1POI5SZidFuG9CnlXbDfLqY/Q==} - preact@10.26.4: - resolution: {integrity: sha512-KJhO7LBFTjP71d83trW+Ilnjbo+ySsaAgCfXOXUlmGzJ4ygYPWmysm77yg4emwfmoz3b22yvH5IsVFHbhUaH5w==} - - preact@10.28.0: - resolution: {integrity: sha512-rytDAoiXr3+t6OIP3WGlDd0ouCUG1iCWzkcY3++Nreuoi17y6T5i/zRhe6uYfoVcxq6YU+sBtJouuRDsq8vvqA==} - - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - - prettier@3.7.4: - resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} + prettier@3.8.3: + resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} engines: {node: '>=14'} hasBin: true @@ -8518,6 +8031,10 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + pretty-format@30.4.1: + resolution: {integrity: sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -8544,14 +8061,18 @@ packages: resolution: {integrity: sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==} engines: {node: '>= 8'} - protobufjs@6.11.4: - resolution: {integrity: sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==} + protobufjs@6.11.6: + resolution: {integrity: sha512-k8BHqgPBOtrlougZZqF2uUk5Z7bN8f0wj+3e8M3hvtSv0NBAz4VBy5f6R5Nxq/l+i7mRFTgNZb2trxqTpHNY/A==} hasBin: true protobufjs@7.4.0: resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} engines: {node: '>=12.0.0'} + protobufjs@7.5.5: + resolution: {integrity: sha512-3wY1AxV+VBNW8Yypfd1yQY9pXnqTAN+KwQxL8iYm3/BjKYMNg4i0owhEe26PWDOMaIrzeeF98Lqd5NGz4omiIg==} + engines: {node: '>=12.0.0'} + proxy-compare@2.5.1: resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} @@ -8564,6 +8085,10 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} + prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} @@ -8573,11 +8098,8 @@ packages: public-encrypt@4.0.3: resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} - pump@3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} - - pump@3.0.3: - resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} @@ -8586,8 +8108,11 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - purify-ts@2.1.0: - resolution: {integrity: sha512-+KNUHV9FxB9BbjadFdvxa+LNJIaqZmSF7CQH5Rv6+f0rBzsxm9FEqrvkALQbWYJobAja2ZCbBDUY7O4fH2znMA==} + pure-rand@8.4.0: + resolution: {integrity: sha512-IoM8YF/jY0hiugFo/wOWqfmarlE6J0wc6fDK1PhftMk7MGhVZl88sZimmqBBFomLOCSmcCCpsfj7wXASCpvK9A==} + + purify-ts@2.1.4: + resolution: {integrity: sha512-PKSMYPJRoxxHdsI9I2/caXmMDoAFd15lHmOAJsq55cl9o2gHH6NWaPTuwRW6cNkTRhZRkmoTN7U6062mRMcIsA==} pushdata-bitcoin@1.0.1: resolution: {integrity: sha512-hw7rcYTJRAl4olM8Owe8x0fBuJJ+WGbMhQuLWOXEMN3PxPCKQHRkhfL+XG0+iXUmSHjkMmb3Ba55Mt21cZc9kQ==} @@ -8614,17 +8139,10 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - qs@6.14.0: - resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + qs@6.15.1: + resolution: {integrity: sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==} engines: {node: '>=0.6'} - quansync@0.2.11: - resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} - - query-string@6.14.1: - resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==} - engines: {node: '>=6'} - query-string@7.1.3: resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} engines: {node: '>=6'} @@ -8636,9 +8154,6 @@ packages: querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - queue@6.0.2: resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} @@ -8666,28 +8181,22 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - react-chartjs-2@5.3.1: - resolution: {integrity: sha512-h5IPXKg9EXpjoBzUfyWJvllMjG2mQ4EiuHQFhms/AjUm0XSZHhyRy2xVmLXHKrtcdrPO4mnGqRtYoD0vp95A0A==} - peerDependencies: - chart.js: ^4.1.1 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-devtools-core@6.1.5: resolution: {integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==} - react-dom@19.2.3: - resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==} + react-dom@19.2.6: + resolution: {integrity: sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==} peerDependencies: - react: ^19.2.3 + react: ^19.2.6 - react-i18next@16.5.0: - resolution: {integrity: sha512-IMpPTyCTKxEj8klCrLKUTIUa8uYTd851+jcu2fJuUB9Agkk9Qq8asw4omyeHVnOXHrLgQJGTm5zTvn8HpaPiqw==} + react-i18next@17.0.7: + resolution: {integrity: sha512-rwtPXsb/zwzDafN+gytcjF5YnqGQQIRmCQ6DctBC1VSipRB8GD/MWEVrFP42vjMyuYydxWxM8CZRt+yiNuuoHg==} peerDependencies: - i18next: '>= 25.6.2' + i18next: '>= 26.0.10' react: '>= 16.8.0' react-dom: '*' react-native: '*' - typescript: ^5 + typescript: ^5 || ^6 peerDependenciesMeta: react-dom: optional: true @@ -8702,6 +8211,9 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-is@19.2.6: + resolution: {integrity: sha512-XjBR15BhXuylgWGuslhDKqlSayuqvqBX91BP8pauG8kd1zY8kotkNWbXksTCNRarse4kuGbe2kIY05ARtwNIvw==} + react-lifecycles-compat@3.0.4: resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} @@ -8721,7 +8233,7 @@ packages: engines: {node: '>= 20.19.4'} hasBin: true peerDependencies: - '@types/react': 19.0.10 + '@types/react': ^19.1.0 react: ^19.1.0 peerDependenciesMeta: '@types/react': @@ -8737,15 +8249,11 @@ packages: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} - react-refresh@0.18.0: - resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} - engines: {node: '>=0.10.0'} - react-remove-scroll-bar@2.3.8: resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': @@ -8755,7 +8263,7 @@ packages: resolution: {integrity: sha512-KmONPx5fnlXYJQqC62Q+lwIeAk64ws/cUw6omIumRzMRPqgnYqhSSti99nbj0Ry13bv7dF+BKn7NB+OqkdZGTw==} engines: {node: '>=10'} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -8765,14 +8273,14 @@ packages: resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} engines: {node: '>=10'} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - react-router@7.10.1: - resolution: {integrity: sha512-gHL89dRa3kwlUYtRQ+m8NmxGI6CgqN+k4XyGjwcFoQwwCWF6xXpOCUlDovkXClS0d0XJN/5q7kc5W3kiFEd0Yw==} + react-router@7.15.0: + resolution: {integrity: sha512-HW9vYwuM8f4yx66Izy8xfrzCM+SBJluoZcCbww9A1TySax11S5Vgw6fi3ZjMONw9J4gQwngL7PzkyIpJJpJ7RQ==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -8785,20 +8293,16 @@ packages: resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} engines: {node: '>=10'} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - react@19.2.3: - resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} + react@19.2.6: + resolution: {integrity: sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==} engines: {node: '>=0.10.0'} - read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} - readable-stream@1.1.14: resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} @@ -8813,14 +8317,14 @@ packages: resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - readdirp@4.1.2: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} + readonly-date@1.0.0: resolution: {integrity: sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==} @@ -8832,9 +8336,24 @@ packages: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + redeyed@2.1.1: resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==} + redis-errors@1.2.0: + resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} + engines: {node: '>=4'} + + redis-parser@3.0.0: + resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} + engines: {node: '>=4'} + + reftools@1.1.9: + resolution: {integrity: sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==} + regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} @@ -8848,10 +8367,6 @@ packages: resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} engines: {node: '>=0.10.0'} - require-addon@1.1.0: - resolution: {integrity: sha512-KbXAD5q2+v1GJnkzd8zzbOxchTkStSyJZ9QwoCq3QwEXAaIlG3wDYRZGzVD357jmwaGY7hr5VaoEAL0BkF0Kvg==} - engines: {bare: '>=1.10.0'} - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -8866,19 +8381,12 @@ packages: require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - require-package-name@2.0.1: - resolution: {integrity: sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==} - requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} reselect@5.1.1: resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==} - resolve-dir@1.0.1: - resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} - engines: {node: '>=0.10.0'} - resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -8890,13 +8398,8 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - - resolve@1.22.11: - resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + resolve@1.22.12: + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} engines: {node: '>= 0.4'} hasBin: true @@ -8904,24 +8407,23 @@ packages: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} - rettime@0.7.0: - resolution: {integrity: sha512-LPRKoHnLKd/r3dVxcwO7vhCW+orkOGj9ViueosEBK6ie89CijnfRlhaDhHq/3Hxu4CkWQtxwlBG0mzTQY6uQjw==} + rettime@0.11.11: + resolution: {integrity: sha512-ILJRqVWBCTlg9r42fFgwVZx1gnFAcQF8mRoMkbgQfIrjEDf9nbBFDFx00oloOa+Q869FUtaYDXZvEfnecQSCoQ==} reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rev-dep@2.13.2: + resolution: {integrity: sha512-5jI5Kco8GFb7AW3PzaCHigMNGTM9a53M3shNpkhjVe/TBSR/TD7iHZ/2p3Qe2wULvUvKrRJlBhmYfLLV8dYFvQ==} + engines: {node: '>=18'} + hasBin: true + rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - ripemd160@2.0.1: - resolution: {integrity: sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w==} - - ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - ripemd160@2.0.3: resolution: {integrity: sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==} engines: {node: '>= 0.8'} @@ -8930,14 +8432,28 @@ packages: resolution: {integrity: sha512-de7osLRH/pt5HX2xw2TRJtbdLLWHu0RXirpQaEeCnWKY5DYHykh3ETSkofvm0aX0LJiV7kwkegJxQkmbO94gWw==} engines: {node: '>= 16'} - ripple-binary-codec@2.5.0: - resolution: {integrity: sha512-n2EPs3YRX0/XE6zO8Mav/XFmI1wWmWraCRyCSb0fQ0Fkpv4kJ1tMhQXfX9E/DbLtyXbeogcoxYsQZtAmG8u+Ww==} + ripple-binary-codec@2.7.0: + resolution: {integrity: sha512-gEBqan5muVp+q7jgZ6aUniSyN+e4FKRzn9uFAeFSIW7IgvkezP1cUolNtpahQ+jvaSK/33hxZA7wNmn1mc330g==} engines: {node: '>= 18'} ripple-keypairs@2.0.0: resolution: {integrity: sha512-b5rfL2EZiffmklqZk1W+dvSy97v3V/C7936WxCCgDynaGPp7GE6R2XO7EU9O2LlM/z95rj870IylYnOQs+1Rag==} engines: {node: '>= 16'} + rolldown-string@0.3.0: + resolution: {integrity: sha512-qGhBPNSv/27uzFBQdO+Cs4YAXC/1PKznD7Jz5Fl7NIAIlteuTPBTBWBhCpJ2AFTqLsoKvvUr7wSjqSUip0Fkpg==} + engines: {node: '>=20.19.0'} + peerDependencies: + rolldown: '*' + peerDependenciesMeta: + rolldown: + optional: true + + rolldown@1.0.0: + resolution: {integrity: sha512-yD986aXDESFGS95spT1LAv0jssywP4npMEjmMHyN2/5+eE8qQJUype2AaKkRiLgBgyD0LFlubwAht7VmY8rGoA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup@4.53.3: resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -8950,9 +8466,6 @@ packages: resolution: {integrity: sha512-C6DxhXt7bssQ1nHb154lqeL0SXz5Dx4RczXZu2Aa/L1NJFnEVDxFwCBo3fqtuljhHIGceg5JKBV4XJ0gW5JKyw==} engines: {node: '>=6.0.0', npm: '>=3.10.0'} - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - rxjs@6.6.7: resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} engines: {npm: '>=2.0.0'} @@ -8987,8 +8500,9 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - sax@1.4.3: - resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} + engines: {node: '>=11.0.0'} saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} @@ -9006,9 +8520,6 @@ packages: sdp@2.12.0: resolution: {integrity: sha512-jhXqQAQVM+8Xj5EjJGVweuEzgtGWb3tmEEpl3CLP3cStInSbVHSg0QWOGQzNq8pSID4JkpeV2mPqlMDLrm0/Vw==} - semver-compare@1.0.0: - resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} - semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -9032,8 +8543,13 @@ packages: engines: {node: '>=10'} hasBin: true - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + semver@7.8.0: + resolution: {integrity: sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.2: + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} engines: {node: '>= 0.8.0'} serialize-error@2.1.0: @@ -9044,15 +8560,15 @@ packages: resolution: {integrity: sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==} engines: {node: '>=10'} - serve-handler@6.1.6: - resolution: {integrity: sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==} + serve-handler@6.1.7: + resolution: {integrity: sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==} - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} engines: {node: '>= 0.8.0'} - serve@14.2.5: - resolution: {integrity: sha512-Qn/qMkzCcMFVPb60E/hQy+iRLpiU8PamOfOSYoAHmmF+fFFmpPpqa6Oci2iWYpTdOUM3VF+TINud7CfbQnsZbA==} + serve@14.2.6: + resolution: {integrity: sha512-QEjUSA+sD4Rotm1znR8s50YqA3kYpRGPmtd5GlFxbaL9n/FdUNbqMhxClqdditSk0LlZyA/dhud6XNRTOC9x2Q==} engines: {node: '>= 14'} hasBin: true @@ -9062,6 +8578,9 @@ packages: set-cookie-parser@2.7.2: resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} + set-cookie-parser@3.1.0: + resolution: {integrity: sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==} + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -9093,8 +8612,26 @@ packages: resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} - side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + should-equal@2.0.0: + resolution: {integrity: sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==} + + should-format@3.0.3: + resolution: {integrity: sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==} + + should-type-adaptors@1.1.0: + resolution: {integrity: sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==} + + should-type@1.4.0: + resolution: {integrity: sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==} + + should-util@1.0.1: + resolution: {integrity: sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==} + + should@13.2.3: + resolution: {integrity: sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==} + + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} engines: {node: '>= 0.4'} side-channel-map@1.0.1: @@ -9119,24 +8656,13 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - - sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} + simple-swizzle@0.2.4: + resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} sirv@3.0.2: resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} engines: {node: '>=18'} - skott-webapp@2.3.0: - resolution: {integrity: sha512-nmt+ilxGOqX5zN2WDKv1Y5gLfxy/lceHgbB8HM/ym/Cm8572ypD1s2S+pcN+jOw13xqoavHJPonX1WT2QvkpDg==} - - skott@0.35.6: - resolution: {integrity: sha512-AuYWMdX0tqdXZUXF43wnfsDuUZC3ZS3jYdjuguGFh7Sv51SgvN8K4bpfErbUEeDulZG6LRLbouFD4e0JWrZ4SA==} - hasBin: true - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -9148,37 +8674,30 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - smol-toml@1.5.2: - resolution: {integrity: sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==} - engines: {node: '>= 18'} - smoldot@2.0.40: resolution: {integrity: sha512-h6XC/kKDLdZBBTI0X8y4ZxmaZ2KYVVB0+5isCQm6j26ljeNjHZUDOV+hf8VyoE23+jg00wrxNJ2IVcIAURxwtg==} - socket.io-client@4.8.1: - resolution: {integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==} + socket.io-client@4.8.3: + resolution: {integrity: sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g==} engines: {node: '>=10.0.0'} - socket.io-parser@4.2.4: - resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + socket.io-parser@4.2.6: + resolution: {integrity: sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==} engines: {node: '>=10.0.0'} socks-proxy-agent@8.0.5: resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} - socks@2.8.7: - resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} + socks@2.8.9: + resolution: {integrity: sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - sodium-native@4.3.3: - resolution: {integrity: sha512-OnxSlN3uyY8D0EsLHpmm2HOFmKddQVvEMmsakCrXUzSd8kjjbzL413t4ZNF3n0UxSwNgwTyUvkmZHTfuCeiYSw==} - sonic-boom@2.8.0: resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} - sonic-boom@4.2.0: - resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} + sonic-boom@4.2.1: + resolution: {integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==} source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} @@ -9195,9 +8714,6 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - spawndamnit@3.0.1: - resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} - split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} @@ -9226,6 +8742,9 @@ packages: resolution: {integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==} engines: {node: '>=6'} + standard-as-callback@2.1.0: + resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + starknet@6.23.1: resolution: {integrity: sha512-vQV9luXpmwZZs9RVZaRwm2iD8T0PYx1AzgZeQsCvD89tR0HwUF0paty27ZzuJrdPe0CmAs/ipAYFCE55jbj0RQ==} @@ -9233,16 +8752,12 @@ packages: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - statuses@2.0.2: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} - std-env@3.10.0: - resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} stdin-discarder@0.2.2: resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} @@ -9295,30 +8810,22 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} - strip-ansi@7.1.2: - resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} - engines: {node: '>=12'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} - strip-json-comments@5.0.3: - resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} - engines: {node: '>=14.16'} - styled-jsx@5.1.6: resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} @@ -9332,10 +8839,6 @@ packages: babel-plugin-macros: optional: true - superstruct@1.0.4: - resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} - engines: {node: '>=14.0.0'} - superstruct@2.0.2: resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} engines: {node: '>=14.0.0'} @@ -9352,6 +8855,10 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + swagger2openapi@7.0.8: + resolution: {integrity: sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g==} + hasBin: true + symbol-observable@2.0.3: resolution: {integrity: sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==} engines: {node: '>=0.10'} @@ -9359,19 +8866,12 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - symbol.inspect@1.0.1: - resolution: {integrity: sha512-YQSL4duoHmLhsTD1Pw8RW6TZ5MaTX5rXJnqacJottr2P2LZBF/Yvrc3ku4NUpMOm8aM0KOCqM+UAkMA5HWQCzQ==} - tagged-tag@1.0.0: resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} engines: {node: '>=20'} - term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - - terser@5.44.1: - resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} + terser@5.47.1: + resolution: {integrity: sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==} engines: {node: '>=10'} hasBin: true @@ -9382,10 +8882,6 @@ packages: text-encoding-utf-8@1.0.2: resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - text-extensions@2.4.0: - resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} - engines: {node: '>=8'} - thread-stream@0.15.2: resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} @@ -9395,9 +8891,6 @@ packages: throat@5.0.0: resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - timers-browserify@2.0.12: resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} engines: {node: '>=0.6.0'} @@ -9409,23 +8902,23 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@1.0.2: - resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + tinyexec@1.1.2: + resolution: {integrity: sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==} engines: {node: '>=18'} - tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} - tinyrainbow@3.0.3: - resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} - tldts-core@7.0.19: - resolution: {integrity: sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==} + tldts-core@7.0.30: + resolution: {integrity: sha512-uiHN8PIB1VmWyS98eZYja4xzlYqeFZVjb4OuYlJQnZAuJhMw4PbKQOKgHKhBdJR3FE/t5mUQ1Kd80++B+qhD1Q==} - tldts@7.0.19: - resolution: {integrity: sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA==} + tldts@7.0.30: + resolution: {integrity: sha512-ELrFxuqsDdHUwoh0XxDbxuLD3Wnz49Z57IFvTtvWy1hJdcMZjXLIuonjilCiWHlT2GbE4Wlv1wKVTzDFnXH1aw==} hasBin: true tmpl@1.0.5: @@ -9439,9 +8932,6 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - toggle-selection@1.0.6: - resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} - toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -9449,6 +8939,10 @@ packages: toml@3.0.0: resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} + toml@4.1.1: + resolution: {integrity: sha512-EBJnVBr3dTXdA89WVFoAIPUqkBjxPMwRqsfuo1r240tKFHXv3zgca4+NJib/h6TyvGF7vOawz0jGuryJCdNHrw==} + engines: {node: '>=20'} + totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} @@ -9457,8 +8951,8 @@ packages: resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} - tough-cookie@6.0.0: - resolution: {integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==} + tough-cookie@6.0.1: + resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} engines: {node: '>=16'} tr46@0.0.3: @@ -9468,18 +8962,8 @@ packages: resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} engines: {node: '>=20'} - tronweb@6.1.0: - resolution: {integrity: sha512-ANEr2YneA2frXTpsxDR21yk2cJLIvOdPe7dg7gu96TyqfVbS9eCrguNuN+qCUZOC/zW3n6R880bBDbEWKZiWzA==} - - trouter@2.0.1: - resolution: {integrity: sha512-kr8SKKw94OI+xTGOkfsvwZQ8mWoikZDd2n8XZHjJVZUARZT+4/VV6cacRS6CLsH9bNm+HFIPU1Zx4CnNnb4qlQ==} - engines: {node: '>=6'} - - ts-api-utils@1.4.3: - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' + tronweb@6.2.2: + resolution: {integrity: sha512-jRBf4+7fJ0HUVzveBi0tE21r3EygCNtbYE92T38Sxlwr/x320W2vz+dvGLOIpp4kW/CvJ4HLvtnb6U30A0V2eA==} ts-custom-error@3.3.1: resolution: {integrity: sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A==} @@ -9508,38 +8992,8 @@ packages: tty-browserify@0.0.1: resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} - turbo-darwin-64@2.6.3: - resolution: {integrity: sha512-BlJJDc1CQ7SK5Y5qnl7AzpkvKSnpkfPmnA+HeU/sgny3oHZckPV2776ebO2M33CYDSor7+8HQwaodY++IINhYg==} - cpu: [x64] - os: [darwin] - - turbo-darwin-arm64@2.6.3: - resolution: {integrity: sha512-MwVt7rBKiOK7zdYerenfCRTypefw4kZCue35IJga9CH1+S50+KTiCkT6LBqo0hHeoH2iKuI0ldTF2a0aB72z3w==} - cpu: [arm64] - os: [darwin] - - turbo-linux-64@2.6.3: - resolution: {integrity: sha512-cqpcw+dXxbnPtNnzeeSyWprjmuFVpHJqKcs7Jym5oXlu/ZcovEASUIUZVN3OGEM6Y/OTyyw0z09tOHNt5yBAVg==} - cpu: [x64] - os: [linux] - - turbo-linux-arm64@2.6.3: - resolution: {integrity: sha512-MterpZQmjXyr4uM7zOgFSFL3oRdNKeflY7nsjxJb2TklsYqiu3Z9pQ4zRVFFH8n0mLGna7MbQMZuKoWqqHb45w==} - cpu: [arm64] - os: [linux] - - turbo-windows-64@2.6.3: - resolution: {integrity: sha512-biDU70v9dLwnBdLf+daoDlNJVvqOOP8YEjqNipBHzgclbQlXbsi6Gqqelp5er81Qo3BiRgmTNx79oaZQTPb07Q==} - cpu: [x64] - os: [win32] - - turbo-windows-arm64@2.6.3: - resolution: {integrity: sha512-dDHVKpSeukah3VsI/xMEKeTnV9V9cjlpFSUs4bmsUiLu3Yv2ENlgVEZv65wxbeE0bh0jjpmElDT+P1KaCxArQQ==} - cpu: [arm64] - os: [win32] - - turbo@2.6.3: - resolution: {integrity: sha512-bf6YKUv11l5Xfcmg76PyWoy/e2vbkkxFNBGJSnfdSXQC33ZiUfutYh6IXidc5MhsnrFkWfdNNLyaRk+kHMLlwA==} + turbo@2.9.12: + resolution: {integrity: sha512-lCPgus1NuTiBdaITWqzSH/Ff6HVL8HHGBtOXHg1dHRfcshN79XkygSdh0M6g8b0td91ILLG5MTkLOkp5UvyPJw==} hasBin: true tweetnacl-util@0.15.1: @@ -9564,46 +9018,35 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type-fest@5.3.1: - resolution: {integrity: sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg==} + type-fest@5.6.0: + resolution: {integrity: sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==} engines: {node: '>=20'} typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} - typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - typeforce@1.18.0: resolution: {integrity: sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==} - typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} - engines: {node: '>=14.17'} - hasBin: true - - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} hasBin: true ua-is-frozen@0.1.2: resolution: {integrity: sha512-RwKDW2p3iyWn4UbaxpP2+VxwqXh0jpvdxsYpZ5j/MLLiQOfbsV5shpgQiw93+KMYQPcteeMQ289MaAFzs3G9pw==} - ua-parser-js@1.0.40: - resolution: {integrity: sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==} + ua-parser-js@1.0.41: + resolution: {integrity: sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==} hasBin: true - ua-parser-js@2.0.4: - resolution: {integrity: sha512-XiBOnM/UpUq21ZZ91q2AVDOnGROE6UQd37WrO9WBgw4u2eGvUCNOheMmZ3EfEUj7DLHr8tre+Um/436Of/Vwzg==} + ua-parser-js@2.0.9: + resolution: {integrity: sha512-OsqGhxyo/wGdLSXMSJxuMGN6H4gDnKz6Fb3IBm4bxZFMnyy0sdf6MN96Ie8tC6z/btdO+Bsy8guxlvLdwT076w==} hasBin: true - ufo@1.5.4: - resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} - - ufo@1.6.1: - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + ufo@1.6.4: + resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} uglify-js@3.19.3: resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} @@ -9638,23 +9081,19 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici-types@7.16.0: - resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + undici-types@7.21.0: + resolution: {integrity: sha512-w9IMgQrz4O0YN1LtB7K5P63vhlIOvC7opSmouCJ+ZywlPAlO9gIkJ+otk6LvGpAs2wg4econaCz3TvQ9xPoyuQ==} - unfetch@4.2.0: - resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + undici-types@7.25.0: + resolution: {integrity: sha512-AXNgS1Byr27fTI+2bsPEkV9CxkT8H6xNyRI68b3TatlZo3RkzlqQBLL+w7SmGPVpokjHbcuNVQUWE7FRTg+LRA==} - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} + undici@8.3.0: + resolution: {integrity: sha512-TkUDgb6tl7KOGZ+7e8E3d2FYgUQgF6z5YypqjWmixVQSQERFcVrVg0ySADm2LVLRh5ljAaHTCR5Fmz3Q34rB7Q==} + engines: {node: '>=22.19.0'} unidragger@3.0.1: resolution: {integrity: sha512-RngbGSwBFmqGBWjkaH+yB677uzR95blSQyxq6hYbrQCejH3Mx1nm8DVOuh3M9k2fQyTstWUG5qlgCnNqV/9jVw==} - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} @@ -9670,16 +9109,16 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unplugin-macros@0.18.5: - resolution: {integrity: sha512-FPlNKJIgPxS2YHFP3MeBAqwP077JjUae6X60v4ajNeTtU7LS9Nf0O94j5wmeaHhsQe3D+ofnIAQKVVUuJEoLFA==} - engines: {node: '>=20.19.0'} + unplugin-macros@0.20.0: + resolution: {integrity: sha512-iEdXyXRkdm8Qn8WhRs+SRUOwL7Wrxic55dGG4i3fYly2WZlzA2mDUPKDGOKOjAj5oce+ZYtyrsj+0WCvqPrr7Q==} + engines: {node: ^22.18.0 || >=24.0.0} - unplugin@2.3.11: - resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} - engines: {node: '>=18.12.0'} + unplugin@3.0.0: + resolution: {integrity: sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==} + engines: {node: ^20.19.0 || >=22.12.0} - unstorage@1.15.0: - resolution: {integrity: sha512-m40eHdGY/gA6xAPqo8eaxqXgBuzQTlAKfmB1iF7oCKXE1HfwHwzDJBywK+qQGn52dta+bPlZluPF7++yR3p/bg==} + unstorage@1.17.5: + resolution: {integrity: sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==} peerDependencies: '@azure/app-configuration': ^1.8.0 '@azure/cosmos': ^4.2.0 @@ -9687,13 +9126,14 @@ packages: '@azure/identity': ^4.6.0 '@azure/keyvault-secrets': ^4.9.0 '@azure/storage-blob': ^12.26.0 - '@capacitor/preferences': ^6.0.3 + '@capacitor/preferences': ^6 || ^7 || ^8 '@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/kv': ^1.0.1 + '@vercel/functions': ^2.2.12 || ^3.0.0 + '@vercel/kv': ^1 || ^2 || ^3 aws4fetch: ^1.0.20 db0: '>=0.2.1' idb-keyval: ^6.2.1 @@ -9724,6 +9164,8 @@ packages: optional: true '@vercel/blob': optional: true + '@vercel/functions': + optional: true '@vercel/kv': optional: true aws4fetch: @@ -9740,8 +9182,8 @@ packages: until-async@3.0.2: resolution: {integrity: sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==} - update-browserslist-db@1.1.4: - resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -9749,9 +9191,6 @@ packages: update-check@1.5.4: resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - urijs@1.19.11: resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==} @@ -9762,15 +9201,15 @@ packages: resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} engines: {node: '>= 0.4'} - usb@2.16.0: - resolution: {integrity: sha512-jD88fvzDViMDH5KmmNJgzMBDj/95bDTt6+kBNaNxP4G98xUTnDMiLUY2CYmToba6JAFhM9VkcaQuxCNRLGR7zg==} + usb@2.17.0: + resolution: {integrity: sha512-UuFgrlglgDn5ll6d5l7kl3nDb2Yx43qLUGcDq+7UNLZLtbNug0HZBb2Xodhgx2JZB1LqvU+dOGqLEeYUeZqsHg==} engines: {node: '>=12.22.0 <13.0 || >=14.17.0'} use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -9789,7 +9228,7 @@ packages: resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} engines: {node: '>=10'} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '*' react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -9805,11 +9244,6 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - use-sync-external-store@1.5.0: - resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - use-sync-external-store@1.6.0: resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} peerDependencies: @@ -9833,27 +9267,37 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} + uuid@11.1.1: + resolution: {integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==} + hasBin: true + + uuid@14.0.0: + resolution: {integrity: sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==} + hasBin: true + uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true uuidv4@6.2.13: resolution: {integrity: sha512-AXyzMjazYB3ovL3q051VLH06Ixj//Knx7QnUSi1T//Ie3io6CpsPu9nVMOx5MoLWh6xV0B9J0hIaxungxXUbPQ==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - validator@13.15.20: - resolution: {integrity: sha512-KxPOq3V2LmfQPP4eqf3Mq/zrT0Dqp2Vmx2Bn285LwVahLc+CsxOM0crBHczm8ijlcjZ0Q5Xd6LW3z3odTPnlrw==} + validator@13.15.23: + resolution: {integrity: sha512-4yoz1kEWqUjzi5zsPbAS/903QXSYp0UOtHsPpp7p9rHAw/W+dkInskAE386Fat3oKRROwO98d9ZB0G4cObgUyw==} engines: {node: '>= 0.10'} valtio@1.11.2: resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} engines: {node: '>=12.20.0'} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '>=16.8' react: '>=16.8' peerDependenciesMeta: '@types/react': @@ -9865,7 +9309,7 @@ packages: resolution: {integrity: sha512-Qik0o+DSy741TmkqmRfjq+0xpZBXi/Y6+fXZLn0xNF1z/waFMbE3rkivv5Zcf9RrMUp6zswf2J7sbh2KBlba5A==} engines: {node: '>=12.20.0'} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '>=16.8' react: '>=16.8' peerDependenciesMeta: '@types/react': @@ -9877,7 +9321,7 @@ packages: resolution: {integrity: sha512-vsh1Ixu5mT0pJFZm+Jspvhga5GzHUTYv0/+Th203pLfh3/wbHwxhu/Z2OkZDXIgHfjnjBns7SN9HNcbDvPmaGw==} engines: {node: '>=12.20.0'} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '>=18.0.0' react: '>=18.0.0' peerDependenciesMeta: '@types/react': @@ -9892,17 +9336,6 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - viem@0.3.50: - resolution: {integrity: sha512-s+LxCYZTR9F/qPk1/n1YDVAX9vSeVz7GraqBZWGrDuenCJxo9ArCoIceJ6ksI0WwSeNzcZ0VVbD/kWRzTxkipw==} - - viem@1.21.4: - resolution: {integrity: sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - viem@2.23.2: resolution: {integrity: sha512-NVmW/E0c5crMOtbEAqMF0e3NmvQykFXhLOc/CkLIXOlzHSA6KXVz3CYVmaKqBF8/xtjsjHAGjdJN3Ru1kFJLaA==} peerDependencies: @@ -9919,38 +9352,34 @@ packages: typescript: optional: true - viem@2.42.0: - resolution: {integrity: sha512-H0WC6czWi7ITBoHkHJVGyjLOecqh/9XJzl4V9XVIwGs/JC3UAJ44rPvkzuYbhDknLWcnREMY/MnXJY7fc7mpGA==} + viem@2.48.11: + resolution: {integrity: sha512-+WZ5E0dBS6GtKb+1wEk5DeYRRRW42+pFnXCo67Ydodf42sBwO+hu3wnQy66lc4MKmHz+llPVdbyehYr9oTE2iw==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: typescript: optional: true - vite-node@3.2.4: - resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - - vite-node@5.2.0: - resolution: {integrity: sha512-7UT39YxUukIA97zWPXUGb0SGSiLexEGlavMwU3HDE6+d/HJhKLjLqu4eX2qv6SQiocdhKLRcusroDwXHQ6CnRQ==} + vite-node@6.0.0: + resolution: {integrity: sha512-oj4PVrT+pDh6GYf5wfUXkcZyekYS8kKPfLPXVl8qe324Ec6l4K2DUKNadRbZ3LQl0qGcDz+PyOo7ZAh00Y+JjQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - vite-plugin-node-polyfills@0.24.0: - resolution: {integrity: sha512-GA9QKLH+vIM8NPaGA+o2t8PDfFUl32J8rUp1zQfMKVJQiNkOX4unE51tR6ppl6iKw5yOrDAdSH7r/UIFLCVhLw==} + vite-plugin-node-polyfills@0.26.0: + resolution: {integrity: sha512-BAe5YzJf368XGev02hDvioidx4uVH8dqEJlG73bjQSxM26/AQnGcKFomq9n3vGq5yqpSHKN4h1XQNxx9l98mBg==} peerDependencies: - vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - vite@7.2.7: - resolution: {integrity: sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==} + vite@8.0.12: + resolution: {integrity: sha512-w2dDofOWv2QB09ZITZBsvKTVAlYvPR4IAmrY/v0ir9KvLs0xybR7i48wxhM1/oyBWO34wPns+bPGw5ZrZqDpZg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.18 + esbuild: ^0.27.0 || ^0.28.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' @@ -9961,12 +9390,14 @@ packages: peerDependenciesMeta: '@types/node': optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true jiti: optional: true less: optional: true - lightningcss: - optional: true sass: optional: true sass-embedded: @@ -9982,11 +9413,11 @@ packages: yaml: optional: true - vitest-browser-react@2.0.2: - resolution: {integrity: sha512-zuSgTe/CKODU3ip+w4ls6Qm4xZ9+A4OHmDf0obt/mwAqavpOtqtq2YcioZt8nfDQE50EWmhdnRfDmpS1jCsbTQ==} + vitest-browser-react@2.2.0: + resolution: {integrity: sha512-oY3KM6305kwJMa6nHo92vVtkOsih7mjEf12dLKuphaF+9ywWPEc+qanIBd394SZ6m5LadVEaG6dicvvizOzmjA==} peerDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4 + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 vitest: ^4.0.0 @@ -9996,20 +9427,23 @@ packages: '@types/react-dom': optional: true - vitest@4.0.15: - resolution: {integrity: sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==} + vitest@4.1.6: + resolution: {integrity: sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.15 - '@vitest/browser-preview': 4.0.15 - '@vitest/browser-webdriverio': 4.0.15 - '@vitest/ui': 4.0.15 + '@vitest/browser-playwright': 4.1.6 + '@vitest/browser-preview': 4.1.6 + '@vitest/browser-webdriverio': 4.1.6 + '@vitest/coverage-istanbul': 4.1.6 + '@vitest/coverage-v8': 4.1.6 + '@vitest/ui': 4.1.6 happy-dom: '*' jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -10023,6 +9457,10 @@ packages: optional: true '@vitest/browser-webdriverio': optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true '@vitest/ui': optional: true happy-dom: @@ -10044,8 +9482,8 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} - wagmi@3.1.0: - resolution: {integrity: sha512-7194n7C4HqCSOwjH6InHhaDBRHyBAVsyI5gD+52a+erFQwGHpJip/c33a2nhhB3UAZ+nx90m+z00X3CbGqoiWw==} + wagmi@3.6.14: + resolution: {integrity: sha512-kHRaaD9DeFaUN6WcVMEKApTwVwImt0fGINh04Z4WYXLJhkb0rBxG4js+3t8EzXsV/veec5dV90j7jfGwjGSsqQ==} peerDependencies: '@tanstack/react-query': '>=5.0.0' react: '>=18' @@ -10055,10 +9493,6 @@ packages: typescript: optional: true - walk-up-path@4.0.0: - resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} - engines: {node: 20 || >=22} - walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} @@ -10077,8 +9511,8 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@8.0.0: - resolution: {integrity: sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==} + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} engines: {node: '>=20'} webpack-virtual-modules@0.6.2: @@ -10091,6 +9525,7 @@ packages: whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-fetch@3.6.20: resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} @@ -10099,6 +9534,10 @@ packages: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} + whatwg-url@15.1.0: resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==} engines: {node: '>=20'} @@ -10113,10 +9552,6 @@ packages: resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} engines: {node: '>= 0.4'} - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -10152,6 +9587,10 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -10182,20 +9621,8 @@ packages: utf-8-validate: optional: true - ws@8.12.0: - resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -10206,8 +9633,8 @@ packages: utf-8-validate: optional: true - ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -10218,8 +9645,8 @@ packages: utf-8-validate: optional: true - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + ws@8.18.2: + resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -10230,8 +9657,8 @@ packages: utf-8-validate: optional: true - ws@8.18.2: - resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -10242,8 +9669,8 @@ packages: utf-8-validate: optional: true - ws@8.18.3: - resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + ws@8.20.0: + resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -10265,12 +9692,12 @@ packages: resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==} engines: {node: '>=0.4.0'} - xrpl@4.4.1: - resolution: {integrity: sha512-zTEGYdbNQo36qhWqwr0B0ufq7tezRbqThmXLZ0D/+OiKAD8v9wtKhEbJwWzL+0KVrbqOsDADFG7p95898RC4lA==} + xrpl@4.4.3: + resolution: {integrity: sha512-vi2OjuNkiaP8nv1j+nqHp8GZwwEjO6Y8+j/OuVMg6M4LwXEwyHdIj33dlg7cyY1Lw5+jb9HqFOQvABhaywVbTQ==} engines: {node: '>=18.0.0'} - xstate@5.25.0: - resolution: {integrity: sha512-yyWzfhVRoTHNLjLoMmdwZGagAYfmnzpm9gPjlX2MhJZsDojXGqRxODDOi4BsgGRKD46NZRAdcLp6CKOyvQS0Bw==} + xstate@5.31.1: + resolution: {integrity: sha512-3P7t7GQ61BvLu+8Cj6Zq7rcS34vecL9pvfN2ucUWmIFIUG+rAREviOs4Xy4OO3BuJHSz6RLU8eqDXxSbVotjDQ==} xstream@11.14.0: resolution: {integrity: sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==} @@ -10289,12 +9716,12 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + yaml@1.10.3: + resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} engines: {node: '>= 6'} - yaml@2.8.2: - resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} engines: {node: '>= 14.6'} hasBin: true @@ -10302,67 +9729,44 @@ packages: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yargs@18.0.0: + resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-queue@1.2.2: - resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} - engines: {node: '>=12.20'} - - yoctocolors-cjs@2.1.3: - resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} - engines: {node: '>=18'} - zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.1.13: - resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==} - - zustand@4.5.7: - resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==} - engines: {node: '>=12.7.0'} - peerDependencies: - '@types/react': 19.0.10 - immer: '>=9.0.6' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - immer: - optional: true - react: - optional: true + zod@4.4.3: + resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} zustand@5.0.0: resolution: {integrity: sha512-LE+VcmbartOPM+auOjCCLQOsQ05zUTp8RkgwRzefUk+2jISdMMFnxvyTjA4YNWr5ZGXYbVsEMZosttuxUBkojQ==} engines: {node: '>=12.20.0'} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '>=18.0.0' immer: '>=9.0.6' react: '>=18.0.0' use-sync-external-store: '>=1.2.0' @@ -10376,11 +9780,11 @@ packages: use-sync-external-store: optional: true - zustand@5.0.3: - resolution: {integrity: sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==} + zustand@5.0.13: + resolution: {integrity: sha512-efI2tVaVQPqtOh114loML/Z80Y4NP3yc+Ff0fYiZJPauNeWZeIp/bRFD7I9bfmCOYBh/PHxlglQ9+wvlwnPikQ==} engines: {node: '>=12.20.0'} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '>=18.0.0' immer: '>=9.0.6' react: '>=18.0.0' use-sync-external-store: '>=1.2.0' @@ -10394,11 +9798,11 @@ packages: use-sync-external-store: optional: true - zustand@5.0.9: - resolution: {integrity: sha512-ALBtUj0AfjJt3uNRQoL1tL2tMvj6Gp/6e39dnfT6uzpelGru8v1tPOGBzayOWbPJvujM8JojDk3E1LxeFisBNg==} + zustand@5.0.3: + resolution: {integrity: sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==} engines: {node: '>=12.20.0'} peerDependencies: - '@types/react': 19.0.10 + '@types/react': '>=18.0.0' immer: '>=9.0.6' react: '>=18.0.0' use-sync-external-store: '>=1.2.0' @@ -10412,66 +9816,57 @@ packages: use-sync-external-store: optional: true - zx@8.8.5: - resolution: {integrity: sha512-SNgDF5L0gfN7FwVOdEFguY3orU5AkfFZm9B5YSHog/UDHv+lvmd82ZAsOenOkQixigwH2+yyH198AwNdKhj+RA==} - engines: {node: '>= 12.17.0'} - hasBin: true - snapshots: - '@acemir/cssom@0.9.29': + '@acemir/cssom@0.9.31': optional: true - '@adraffy/ens-normalize@1.10.0': {} + '@adobe/css-tools@4.4.4': {} '@adraffy/ens-normalize@1.10.1': {} '@adraffy/ens-normalize@1.11.1': {} - '@adraffy/ens-normalize@1.9.0': {} - - '@arr/every@1.0.1': {} - - '@asamuzakjp/css-color@4.1.0': + '@asamuzakjp/css-color@4.1.2': dependencies: - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 - lru-cache: 11.2.4 + '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.1.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + lru-cache: 11.3.6 optional: true - '@asamuzakjp/dom-selector@6.7.6': + '@asamuzakjp/dom-selector@6.8.1': dependencies: '@asamuzakjp/nwsapi': 2.3.9 bidi-js: 1.0.3 - css-tree: 3.1.0 + css-tree: 3.2.1 is-potential-custom-element-name: 1.0.1 - lru-cache: 11.2.4 + lru-cache: 11.3.6 optional: true '@asamuzakjp/nwsapi@2.3.9': optional: true - '@babel/code-frame@7.27.1': + '@babel/code-frame@7.29.0': dependencies: '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.28.5': {} + '@babel/compat-data@7.29.3': {} - '@babel/core@7.28.5': + '@babel/core@7.29.0': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helpers': 7.28.4 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.3 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3 @@ -10481,41 +9876,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.28.5': + '@babel/generator@7.29.1': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - '@babel/helper-compilation-targets@7.27.2': + '@babel/helper-compilation-targets@7.28.6': dependencies: - '@babel/compat-data': 7.28.5 + '@babel/compat-data': 7.29.3 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.0 + browserslist: 4.28.2 lru-cache: 5.1.1 semver: 6.3.1 '@babel/helper-globals@7.28.0': {} - '@babel/helper-module-imports@7.27.1': + '@babel/helper-module-imports@7.28.6': dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-plugin-utils@7.27.1': {} + '@babel/helper-plugin-utils@7.28.6': {} '@babel/helper-string-parser@7.27.1': {} @@ -10523,162 +9918,124 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helpers@7.28.4': - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 - - '@babel/parser@7.28.5': - dependencies: - '@babel/types': 7.28.5 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.5)': + '@babel/helpers@7.29.2': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.5)': + '@babel/parser@7.29.3': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/types': 7.29.0 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.5)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.5)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.5)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.5)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.5)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.5)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.5)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 '@babel/runtime@7.26.10': dependencies: regenerator-runtime: 0.14.1 - '@babel/runtime@7.27.6': {} - - '@babel/runtime@7.28.4': {} + '@babel/runtime@7.29.2': {} - '@babel/template@7.27.2': + '@babel/template@7.28.6': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 - '@babel/traverse@7.28.5': + '@babel/traverse@7.29.0': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/parser': 7.29.3 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 debug: 4.4.3 transitivePeerDependencies: - supports-color - '@babel/types@7.28.5': + '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@base-org/account@2.4.0(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)': - dependencies: - '@coinbase/cdp-sdk': 1.40.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@noble/hashes': 1.4.0 - clsx: 1.2.1 - eventemitter3: 5.0.1 - idb-keyval: 6.2.1 - ox: 0.6.9(typescript@5.9.3)(zod@3.25.76) - preact: 10.24.2 - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - zustand: 5.0.3(@types/react@19.0.10)(react@19.2.3)(use-sync-external-store@1.4.0(react@19.2.3)) - transitivePeerDependencies: - - '@types/react' - - bufferutil - - debug - - encoding - - fastestsmallesttextencoderdecoder - - immer - - react - - typescript - - use-sync-external-store - - utf-8-validate - - ws - - zod - optional: true - '@biglup/is-cid@1.0.3': dependencies: '@multiformats/mafmt': 12.1.6 @@ -10687,41 +10044,43 @@ snapshots: multiformats: 13.4.1 uint8arrays: 5.1.0 - '@biomejs/biome@2.3.8': + '@biomejs/biome@2.4.15': optionalDependencies: - '@biomejs/cli-darwin-arm64': 2.3.8 - '@biomejs/cli-darwin-x64': 2.3.8 - '@biomejs/cli-linux-arm64': 2.3.8 - '@biomejs/cli-linux-arm64-musl': 2.3.8 - '@biomejs/cli-linux-x64': 2.3.8 - '@biomejs/cli-linux-x64-musl': 2.3.8 - '@biomejs/cli-win32-arm64': 2.3.8 - '@biomejs/cli-win32-x64': 2.3.8 + '@biomejs/cli-darwin-arm64': 2.4.15 + '@biomejs/cli-darwin-x64': 2.4.15 + '@biomejs/cli-linux-arm64': 2.4.15 + '@biomejs/cli-linux-arm64-musl': 2.4.15 + '@biomejs/cli-linux-x64': 2.4.15 + '@biomejs/cli-linux-x64-musl': 2.4.15 + '@biomejs/cli-win32-arm64': 2.4.15 + '@biomejs/cli-win32-x64': 2.4.15 - '@biomejs/cli-darwin-arm64@2.3.8': + '@biomejs/cli-darwin-arm64@2.4.15': optional: true - '@biomejs/cli-darwin-x64@2.3.8': + '@biomejs/cli-darwin-x64@2.4.15': optional: true - '@biomejs/cli-linux-arm64-musl@2.3.8': + '@biomejs/cli-linux-arm64-musl@2.4.15': optional: true - '@biomejs/cli-linux-arm64@2.3.8': + '@biomejs/cli-linux-arm64@2.4.15': optional: true - '@biomejs/cli-linux-x64-musl@2.3.8': + '@biomejs/cli-linux-x64-musl@2.4.15': optional: true - '@biomejs/cli-linux-x64@2.3.8': + '@biomejs/cli-linux-x64@2.4.15': optional: true - '@biomejs/cli-win32-arm64@2.3.8': + '@biomejs/cli-win32-arm64@2.4.15': optional: true - '@biomejs/cli-win32-x64@2.3.8': + '@biomejs/cli-win32-x64@2.4.15': optional: true + '@blazediff/core@1.9.1': {} + '@cardano-ogmios/client@6.9.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@cardano-ogmios/schema': 6.9.0 @@ -10729,9 +10088,9 @@ snapshots: '@types/json-bigint': 1.0.4 bech32: 2.0.0 cross-fetch: 3.2.0(encoding@0.1.13) - fastq: 1.19.1 + fastq: 1.20.1 isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - nanoid: 3.3.11 + nanoid: 3.3.12 ts-custom-error: 3.3.1 ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: @@ -10752,7 +10111,7 @@ snapshots: '@scure/base': 1.2.6 fraction.js: 4.0.1 ip-address: 9.0.5 - lodash: 4.17.21 + lodash: 4.18.1 ts-custom-error: 3.3.1 ts-log: 2.2.7 web-encoding: 1.1.5 @@ -10778,7 +10137,7 @@ snapshots: '@scure/base': 1.2.6 fraction.js: 4.0.1 ip-address: 9.0.5 - lodash: 4.17.21 + lodash: 4.18.1 ts-custom-error: 3.3.1 ts-log: 2.2.7 web-encoding: 1.1.5 @@ -10804,7 +10163,7 @@ snapshots: '@scure/base': 1.2.6 fraction.js: 4.0.1 ip-address: 9.0.5 - lodash: 4.17.21 + lodash: 4.18.1 ts-custom-error: 3.3.1 ts-log: 2.2.7 web-encoding: 1.1.5 @@ -10825,7 +10184,7 @@ snapshots: blake2b: 2.1.4 i: 0.3.7 libsodium-wrappers-sumo: 0.7.15 - lodash: 4.17.21 + lodash: 4.18.1 npm: 9.9.4 pbkdf2: 3.1.5 ts-custom-error: 3.3.1 @@ -10839,7 +10198,7 @@ snapshots: blake2b: 2.1.4 i: 0.3.7 libsodium-wrappers-sumo: 0.7.15 - lodash: 4.17.21 + lodash: 4.18.1 npm: 9.9.4 pbkdf2: 3.1.5 ts-custom-error: 3.3.1 @@ -10853,7 +10212,7 @@ snapshots: blake2b: 2.1.4 i: 0.3.7 libsodium-wrappers-sumo: 0.7.15 - lodash: 4.17.21 + lodash: 4.18.1 pbkdf2: 3.1.5 ts-custom-error: 3.3.1 ts-log: 2.2.7 @@ -10884,7 +10243,7 @@ snapshots: '@cardano-sdk/key-management': 0.25.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@cardano-sdk/util': 0.15.7 bignumber.js: 9.3.1 - lodash: 4.17.21 + lodash: 4.18.1 ts-custom-error: 3.3.1 transitivePeerDependencies: - '@dcspark/cardano-multiplatform-lib-asmjs' @@ -10906,7 +10265,7 @@ snapshots: bip39: 3.1.0 chacha: 2.1.0 get-random-values: 2.1.0 - lodash: 4.17.21 + lodash: 4.18.1 pbkdf2: 3.1.5 rxjs: 7.8.2 ts-custom-error: 3.3.1 @@ -10923,7 +10282,7 @@ snapshots: '@cardano-sdk/util@0.15.7': dependencies: bech32: 2.0.0 - lodash: 4.17.21 + lodash: 4.18.1 serialize-error: 8.1.0 ts-custom-error: 3.3.1 ts-log: 2.2.7 @@ -10932,7 +10291,7 @@ snapshots: '@cardano-sdk/util@0.16.0': dependencies: bech32: 2.0.0 - lodash: 4.17.21 + lodash: 4.18.1 serialize-error: 8.1.0 ts-custom-error: 3.3.1 ts-log: 2.2.7 @@ -10941,7 +10300,7 @@ snapshots: '@cardano-sdk/util@0.17.1': dependencies: bech32: 2.0.0 - lodash: 4.17.21 + lodash: 4.18.1 serialize-error: 8.1.0 ts-custom-error: 3.3.1 ts-log: 2.2.7 @@ -10950,31 +10309,29 @@ snapshots: dependencies: bignumber.js: 9.3.1 - '@chain-registry/client@1.53.100(encoding@0.1.13)': + '@chain-registry/client@1.53.355(encoding@0.1.13)': dependencies: - '@chain-registry/types': 0.50.100 - '@chain-registry/utils': 1.51.100 + '@chain-registry/types': 0.50.355 + '@chain-registry/utils': 1.51.355 bfs-path: 1.0.2 cross-fetch: 3.2.0(encoding@0.1.13) transitivePeerDependencies: - encoding - '@chain-registry/keplr@1.74.164': + '@chain-registry/keplr@1.74.577': dependencies: - '@chain-registry/types': 0.50.100 + '@chain-registry/types': 0.50.355 '@keplr-wallet/cosmos': 0.12.28 '@keplr-wallet/crypto': 0.12.28 - semver: 7.7.1 + semver: 7.8.0 '@chain-registry/types@0.46.15': {} - '@chain-registry/types@0.50.100': {} + '@chain-registry/types@0.50.355': {} - '@chain-registry/types@0.50.136': {} - - '@chain-registry/utils@1.51.100': + '@chain-registry/utils@1.51.355': dependencies: - '@chain-registry/types': 0.50.100 + '@chain-registry/types': 0.50.355 bignumber.js: 9.1.2 sha.js: 2.4.12 @@ -10984,198 +10341,16 @@ snapshots: dependencies: '@chainsafe/is-ip': 2.1.0 - '@changesets/apply-release-plan@7.0.14': - dependencies: - '@changesets/config': 3.1.2 - '@changesets/get-version-range-type': 0.4.0 - '@changesets/git': 3.0.4 - '@changesets/should-skip-package': 0.1.2 - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - detect-indent: 6.1.0 - fs-extra: 7.0.1 - lodash.startcase: 4.4.0 - outdent: 0.5.0 - prettier: 2.8.8 - resolve-from: 5.0.0 - semver: 7.7.3 - - '@changesets/assemble-release-plan@6.0.9': - dependencies: - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.3 - '@changesets/should-skip-package': 0.1.2 - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - semver: 7.7.3 - - '@changesets/changelog-git@0.2.1': - dependencies: - '@changesets/types': 6.1.0 - - '@changesets/cli@2.29.8(@types/node@25.0.2)': - dependencies: - '@changesets/apply-release-plan': 7.0.14 - '@changesets/assemble-release-plan': 6.0.9 - '@changesets/changelog-git': 0.2.1 - '@changesets/config': 3.1.2 - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.3 - '@changesets/get-release-plan': 4.0.14 - '@changesets/git': 3.0.4 - '@changesets/logger': 0.1.1 - '@changesets/pre': 2.0.2 - '@changesets/read': 0.6.6 - '@changesets/should-skip-package': 0.1.2 - '@changesets/types': 6.1.0 - '@changesets/write': 0.4.0 - '@inquirer/external-editor': 1.0.3(@types/node@25.0.2) - '@manypkg/get-packages': 1.1.3 - ansi-colors: 4.1.3 - ci-info: 3.9.0 - enquirer: 2.4.1 - fs-extra: 7.0.1 - mri: 1.2.0 - p-limit: 2.3.0 - package-manager-detector: 0.2.11 - picocolors: 1.1.1 - resolve-from: 5.0.0 - semver: 7.7.3 - spawndamnit: 3.0.1 - term-size: 2.2.1 - transitivePeerDependencies: - - '@types/node' - - '@changesets/config@3.1.2': - dependencies: - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.3 - '@changesets/logger': 0.1.1 - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - micromatch: 4.0.8 - - '@changesets/errors@0.2.0': - dependencies: - extendable-error: 0.1.7 - - '@changesets/get-dependents-graph@2.1.3': - dependencies: - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - picocolors: 1.1.1 - semver: 7.7.3 - - '@changesets/get-release-plan@4.0.14': - dependencies: - '@changesets/assemble-release-plan': 6.0.9 - '@changesets/config': 3.1.2 - '@changesets/pre': 2.0.2 - '@changesets/read': 0.6.6 - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - - '@changesets/get-version-range-type@0.4.0': {} - - '@changesets/git@3.0.4': - dependencies: - '@changesets/errors': 0.2.0 - '@manypkg/get-packages': 1.1.3 - is-subdir: 1.2.0 - micromatch: 4.0.8 - spawndamnit: 3.0.1 - - '@changesets/logger@0.1.1': - dependencies: - picocolors: 1.1.1 - - '@changesets/parse@0.4.2': - dependencies: - '@changesets/types': 6.1.0 - js-yaml: 4.1.1 - - '@changesets/pre@2.0.2': - dependencies: - '@changesets/errors': 0.2.0 - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - - '@changesets/read@0.6.6': - dependencies: - '@changesets/git': 3.0.4 - '@changesets/logger': 0.1.1 - '@changesets/parse': 0.4.2 - '@changesets/types': 6.1.0 - fs-extra: 7.0.1 - p-filter: 2.1.0 - picocolors: 1.1.1 - - '@changesets/should-skip-package@0.1.2': - dependencies: - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - - '@changesets/types@4.1.0': {} - - '@changesets/types@6.1.0': {} - - '@changesets/write@0.4.0': - dependencies: - '@changesets/types': 6.1.0 - fs-extra: 7.0.1 - human-id: 4.1.3 - prettier: 2.8.8 - - '@coinbase/cdp-sdk@1.40.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': - dependencies: - '@solana-program/system': 0.8.1(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))) - '@solana-program/token': 0.6.0(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))) - '@solana/kit': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) - abitype: 1.0.6(typescript@5.9.3)(zod@3.25.76) - axios: 1.13.2 - axios-retry: 4.5.0(axios@1.13.2) - jose: 6.1.3 - md5: 2.3.0 - uncrypto: 0.1.3 - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - zod: 3.25.76 - transitivePeerDependencies: - - bufferutil - - debug - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - ws - optional: true - - '@coinbase/wallet-sdk@3.9.3': - dependencies: - bn.js: 5.2.2 - buffer: 6.0.3 - clsx: 1.2.1 - eth-block-tracker: 7.1.0 - eth-json-rpc-filters: 6.0.1 - eventemitter3: 5.0.1 - keccak: 3.0.4 - preact: 10.28.0 - sha.js: 2.4.12 - transitivePeerDependencies: - - supports-color - - '@coinbase/wallet-sdk@4.3.6(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(utf-8-validate@5.0.10)(zod@3.25.76)': + '@coinbase/wallet-sdk@4.3.6(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.2.6))(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@noble/hashes': 1.4.0 clsx: 1.2.1 eventemitter3: 5.0.1 idb-keyval: 6.2.1 - ox: 0.6.9(typescript@5.9.3)(zod@3.25.76) + ox: 0.6.9(typescript@6.0.3)(zod@3.25.76) preact: 10.24.2 - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - zustand: 5.0.3(@types/react@19.0.10)(react@19.2.3)(use-sync-external-store@1.4.0(react@19.2.3)) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + zustand: 5.0.3(@types/react@19.2.14)(react@19.2.6)(use-sync-external-store@1.4.0(react@19.2.6)) transitivePeerDependencies: - '@types/react' - bufferutil @@ -11187,120 +10362,121 @@ snapshots: - zod optional: true - '@commitlint/cli@20.2.0(@types/node@25.0.2)(typescript@5.9.3)': + '@commitlint/cli@21.0.0(@types/node@25.7.0)(conventional-commits-parser@6.4.0)(typescript@6.0.3)': dependencies: - '@commitlint/format': 20.2.0 - '@commitlint/lint': 20.2.0 - '@commitlint/load': 20.2.0(@types/node@25.0.2)(typescript@5.9.3) - '@commitlint/read': 20.2.0 - '@commitlint/types': 20.2.0 - tinyexec: 1.0.2 - yargs: 17.7.2 + '@commitlint/format': 21.0.0 + '@commitlint/lint': 21.0.0 + '@commitlint/load': 21.0.0(@types/node@25.7.0)(typescript@6.0.3) + '@commitlint/read': 21.0.0(conventional-commits-parser@6.4.0) + '@commitlint/types': 21.0.0 + tinyexec: 1.1.2 + yargs: 18.0.0 transitivePeerDependencies: - '@types/node' + - conventional-commits-filter + - conventional-commits-parser - typescript - '@commitlint/config-conventional@20.2.0': + '@commitlint/config-conventional@21.0.0': dependencies: - '@commitlint/types': 20.2.0 - conventional-changelog-conventionalcommits: 7.0.2 + '@commitlint/types': 21.0.0 + conventional-changelog-conventionalcommits: 9.3.1 - '@commitlint/config-validator@20.2.0': + '@commitlint/config-validator@21.0.0': dependencies: - '@commitlint/types': 20.2.0 - ajv: 8.17.1 + '@commitlint/types': 21.0.0 + ajv: 8.20.0 - '@commitlint/ensure@20.2.0': + '@commitlint/ensure@21.0.0': dependencies: - '@commitlint/types': 20.2.0 - lodash.camelcase: 4.3.0 - lodash.kebabcase: 4.1.1 - lodash.snakecase: 4.1.1 - lodash.startcase: 4.4.0 - lodash.upperfirst: 4.3.1 + '@commitlint/types': 21.0.0 + es-toolkit: 1.46.1 - '@commitlint/execute-rule@20.0.0': {} + '@commitlint/execute-rule@21.0.0': {} - '@commitlint/format@20.2.0': + '@commitlint/format@21.0.0': dependencies: - '@commitlint/types': 20.2.0 - chalk: 5.6.2 + '@commitlint/types': 21.0.0 + picocolors: 1.1.1 - '@commitlint/is-ignored@20.2.0': + '@commitlint/is-ignored@21.0.0': dependencies: - '@commitlint/types': 20.2.0 - semver: 7.7.3 + '@commitlint/types': 21.0.0 + semver: 7.8.0 - '@commitlint/lint@20.2.0': + '@commitlint/lint@21.0.0': dependencies: - '@commitlint/is-ignored': 20.2.0 - '@commitlint/parse': 20.2.0 - '@commitlint/rules': 20.2.0 - '@commitlint/types': 20.2.0 + '@commitlint/is-ignored': 21.0.0 + '@commitlint/parse': 21.0.0 + '@commitlint/rules': 21.0.0 + '@commitlint/types': 21.0.0 - '@commitlint/load@20.2.0(@types/node@25.0.2)(typescript@5.9.3)': + '@commitlint/load@21.0.0(@types/node@25.7.0)(typescript@6.0.3)': dependencies: - '@commitlint/config-validator': 20.2.0 - '@commitlint/execute-rule': 20.0.0 - '@commitlint/resolve-extends': 20.2.0 - '@commitlint/types': 20.2.0 - chalk: 5.6.2 - cosmiconfig: 9.0.0(typescript@5.9.3) - cosmiconfig-typescript-loader: 6.2.0(@types/node@25.0.2)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3) - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 + '@commitlint/config-validator': 21.0.0 + '@commitlint/execute-rule': 21.0.0 + '@commitlint/resolve-extends': 21.0.0 + '@commitlint/types': 21.0.0 + cosmiconfig: 9.0.1(typescript@6.0.3) + cosmiconfig-typescript-loader: 6.3.0(@types/node@25.7.0)(cosmiconfig@9.0.1(typescript@6.0.3))(typescript@6.0.3) + es-toolkit: 1.46.1 + is-plain-obj: 4.1.0 + picocolors: 1.1.1 transitivePeerDependencies: - '@types/node' - typescript - '@commitlint/message@20.0.0': {} + '@commitlint/message@21.0.0': {} - '@commitlint/parse@20.2.0': + '@commitlint/parse@21.0.0': dependencies: - '@commitlint/types': 20.2.0 - conventional-changelog-angular: 7.0.0 - conventional-commits-parser: 5.0.0 + '@commitlint/types': 21.0.0 + conventional-changelog-angular: 8.3.1 + conventional-commits-parser: 6.4.0 - '@commitlint/read@20.2.0': + '@commitlint/read@21.0.0(conventional-commits-parser@6.4.0)': dependencies: - '@commitlint/top-level': 20.0.0 - '@commitlint/types': 20.2.0 - git-raw-commits: 4.0.0 - minimist: 1.2.8 - tinyexec: 1.0.2 + '@commitlint/top-level': 21.0.0 + '@commitlint/types': 21.0.0 + git-raw-commits: 5.0.1(conventional-commits-parser@6.4.0) + tinyexec: 1.1.2 + transitivePeerDependencies: + - conventional-commits-filter + - conventional-commits-parser - '@commitlint/resolve-extends@20.2.0': + '@commitlint/resolve-extends@21.0.0': dependencies: - '@commitlint/config-validator': 20.2.0 - '@commitlint/types': 20.2.0 - global-directory: 4.0.1 - import-meta-resolve: 4.2.0 - lodash.mergewith: 4.6.2 + '@commitlint/config-validator': 21.0.0 + '@commitlint/types': 21.0.0 + es-toolkit: 1.46.1 + global-directory: 5.0.0 resolve-from: 5.0.0 - '@commitlint/rules@20.2.0': + '@commitlint/rules@21.0.0': dependencies: - '@commitlint/ensure': 20.2.0 - '@commitlint/message': 20.0.0 - '@commitlint/to-lines': 20.0.0 - '@commitlint/types': 20.2.0 + '@commitlint/ensure': 21.0.0 + '@commitlint/message': 21.0.0 + '@commitlint/to-lines': 21.0.0 + '@commitlint/types': 21.0.0 - '@commitlint/to-lines@20.0.0': {} + '@commitlint/to-lines@21.0.0': {} - '@commitlint/top-level@20.0.0': + '@commitlint/top-level@21.0.0': dependencies: - find-up: 7.0.0 + escalade: 3.2.0 - '@commitlint/types@20.2.0': + '@commitlint/types@21.0.0': dependencies: - '@types/conventional-commits-parser': 5.0.2 - chalk: 5.6.2 + conventional-commits-parser: 6.4.0 + picocolors: 1.1.1 - '@confio/ics23@0.6.8': + '@conventional-changelog/git-client@2.7.0(conventional-commits-parser@6.4.0)': dependencies: - '@noble/hashes': 1.8.0 - protobufjs: 6.11.4 + '@simple-libs/child-process-utils': 1.0.2 + '@simple-libs/stream-utils': 1.2.0 + semver: 7.8.0 + optionalDependencies: + conventional-commits-parser: 6.4.0 '@cosmjs/amino@0.32.4': dependencies: @@ -11309,28 +10485,27 @@ snapshots: '@cosmjs/math': 0.32.4 '@cosmjs/utils': 0.32.4 - '@cosmjs/amino@0.33.1': + '@cosmjs/amino@0.36.2': dependencies: - '@cosmjs/crypto': 0.33.1 - '@cosmjs/encoding': 0.33.1 - '@cosmjs/math': 0.33.1 - '@cosmjs/utils': 0.33.1 + '@cosmjs/crypto': 0.36.2 + '@cosmjs/encoding': 0.36.2 + '@cosmjs/math': 0.36.2 + '@cosmjs/utils': 0.36.2 - '@cosmjs/cosmwasm-stargate@0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@cosmjs/cosmwasm-stargate@0.36.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@cosmjs/amino': 0.32.4 - '@cosmjs/crypto': 0.32.4 - '@cosmjs/encoding': 0.32.4 - '@cosmjs/math': 0.32.4 - '@cosmjs/proto-signing': 0.32.4 - '@cosmjs/stargate': 0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmjs/tendermint-rpc': 0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmjs/utils': 0.32.4 - cosmjs-types: 0.9.0 + '@cosmjs/amino': 0.36.2 + '@cosmjs/crypto': 0.36.2 + '@cosmjs/encoding': 0.36.2 + '@cosmjs/math': 0.36.2 + '@cosmjs/proto-signing': 0.36.2 + '@cosmjs/stargate': 0.36.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@cosmjs/tendermint-rpc': 0.36.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@cosmjs/utils': 0.36.2 + cosmjs-types: 0.10.1 pako: 2.1.0 transitivePeerDependencies: - bufferutil - - debug - utf-8-validate '@cosmjs/crypto@0.32.4': @@ -11339,19 +10514,19 @@ snapshots: '@cosmjs/math': 0.32.4 '@cosmjs/utils': 0.32.4 '@noble/hashes': 1.8.0 - bn.js: 5.2.2 + bn.js: 5.2.3 elliptic: 6.6.1 - libsodium-wrappers-sumo: 0.7.15 + libsodium-wrappers-sumo: 0.7.16 - '@cosmjs/crypto@0.33.1': + '@cosmjs/crypto@0.36.2': dependencies: - '@cosmjs/encoding': 0.33.1 - '@cosmjs/math': 0.33.1 - '@cosmjs/utils': 0.33.1 - '@noble/hashes': 1.7.1 - bn.js: 5.2.2 - elliptic: 6.6.1 - libsodium-wrappers-sumo: 0.7.15 + '@cosmjs/encoding': 0.36.2 + '@cosmjs/math': 0.36.2 + '@cosmjs/utils': 0.36.2 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + hash-wasm: 4.12.0 '@cosmjs/encoding@0.32.4': dependencies: @@ -11359,24 +10534,22 @@ snapshots: bech32: 1.1.4 readonly-date: 1.0.0 - '@cosmjs/encoding@0.33.1': + '@cosmjs/encoding@0.36.2': dependencies: base64-js: 1.5.1 bech32: 1.1.4 readonly-date: 1.0.0 - '@cosmjs/json-rpc@0.32.4': + '@cosmjs/json-rpc@0.36.2': dependencies: - '@cosmjs/stream': 0.32.4 + '@cosmjs/stream': 0.36.2 xstream: 11.14.0 '@cosmjs/math@0.32.4': dependencies: - bn.js: 5.2.2 + bn.js: 5.2.3 - '@cosmjs/math@0.33.1': - dependencies: - bn.js: 5.2.2 + '@cosmjs/math@0.36.2': {} '@cosmjs/proto-signing@0.32.4': dependencies: @@ -11387,9 +10560,18 @@ snapshots: '@cosmjs/utils': 0.32.4 cosmjs-types: 0.9.0 - '@cosmjs/socket@0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@cosmjs/proto-signing@0.36.2': + dependencies: + '@cosmjs/amino': 0.36.2 + '@cosmjs/crypto': 0.36.2 + '@cosmjs/encoding': 0.36.2 + '@cosmjs/math': 0.36.2 + '@cosmjs/utils': 0.36.2 + cosmjs-types: 0.10.1 + + '@cosmjs/socket@0.36.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@cosmjs/stream': 0.32.4 + '@cosmjs/stream': 0.36.2 isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) xstream: 11.14.0 @@ -11397,61 +10579,56 @@ snapshots: - bufferutil - utf-8-validate - '@cosmjs/stargate@0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@cosmjs/stargate@0.36.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@confio/ics23': 0.6.8 - '@cosmjs/amino': 0.32.4 - '@cosmjs/encoding': 0.32.4 - '@cosmjs/math': 0.32.4 - '@cosmjs/proto-signing': 0.32.4 - '@cosmjs/stream': 0.32.4 - '@cosmjs/tendermint-rpc': 0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmjs/utils': 0.32.4 - cosmjs-types: 0.9.0 - xstream: 11.14.0 + '@cosmjs/amino': 0.36.2 + '@cosmjs/encoding': 0.36.2 + '@cosmjs/math': 0.36.2 + '@cosmjs/proto-signing': 0.36.2 + '@cosmjs/stream': 0.36.2 + '@cosmjs/tendermint-rpc': 0.36.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@cosmjs/utils': 0.36.2 + cosmjs-types: 0.10.1 transitivePeerDependencies: - bufferutil - - debug - utf-8-validate - '@cosmjs/stream@0.32.4': + '@cosmjs/stream@0.36.2': dependencies: xstream: 11.14.0 - '@cosmjs/tendermint-rpc@0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@cosmjs/tendermint-rpc@0.36.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@cosmjs/crypto': 0.32.4 - '@cosmjs/encoding': 0.32.4 - '@cosmjs/json-rpc': 0.32.4 - '@cosmjs/math': 0.32.4 - '@cosmjs/socket': 0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmjs/stream': 0.32.4 - '@cosmjs/utils': 0.32.4 - axios: 1.13.2 + '@cosmjs/crypto': 0.36.2 + '@cosmjs/encoding': 0.36.2 + '@cosmjs/json-rpc': 0.36.2 + '@cosmjs/math': 0.36.2 + '@cosmjs/socket': 0.36.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@cosmjs/stream': 0.36.2 + '@cosmjs/utils': 0.36.2 readonly-date: 1.0.0 xstream: 11.14.0 transitivePeerDependencies: - bufferutil - - debug - utf-8-validate '@cosmjs/utils@0.32.4': {} - '@cosmjs/utils@0.33.1': {} + '@cosmjs/utils@0.36.2': {} - '@cosmos-kit/core@2.16.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@cosmos-kit/core@2.18.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(utf-8-validate@5.0.10)': dependencies: - '@chain-registry/client': 1.53.100(encoding@0.1.13) - '@chain-registry/keplr': 1.74.164 + '@chain-registry/client': 1.53.355(encoding@0.1.13) + '@chain-registry/keplr': 1.74.577 '@chain-registry/types': 0.46.15 - '@cosmjs/amino': 0.32.4 - '@cosmjs/cosmwasm-stargate': 0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmjs/proto-signing': 0.32.4 - '@cosmjs/stargate': 0.32.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@dao-dao/cosmiframe': 1.0.0-rc.1(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4) - '@walletconnect/types': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@cosmjs/amino': 0.36.2 + '@cosmjs/cosmwasm-stargate': 0.36.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@cosmjs/proto-signing': 0.36.2 + '@cosmjs/stargate': 0.36.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@dao-dao/cosmiframe': 1.0.0(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2) + '@walletconnect/types': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) bowser: 2.11.0 - cosmjs-types: 0.9.0 + cosmjs-types: 0.10.1 events: 3.3.0 nock: 13.5.4 uuid: 9.0.1 @@ -11469,25 +10646,25 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil - db0 - - debug - encoding - ioredis - supports-color - uploadthing - utf-8-validate - '@cosmos-kit/keplr-extension@2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(starknet@6.23.1(encoding@0.1.13))(utf-8-validate@5.0.10)': + '@cosmos-kit/keplr-extension@2.17.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(starknet@6.23.1(encoding@0.1.13))(utf-8-validate@5.0.10)': dependencies: - '@chain-registry/keplr': 1.74.164 - '@cosmjs/amino': 0.33.1 - '@cosmjs/proto-signing': 0.32.4 - '@cosmos-kit/core': 2.16.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@keplr-wallet/provider-extension': 0.12.209(starknet@6.23.1(encoding@0.1.13)) - '@keplr-wallet/types': 0.12.209(starknet@6.23.1(encoding@0.1.13)) + '@chain-registry/keplr': 1.74.577 + '@cosmjs/amino': 0.36.2 + '@cosmjs/proto-signing': 0.36.2 + '@cosmos-kit/core': 2.18.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(utf-8-validate@5.0.10) + '@keplr-wallet/provider-extension': 0.12.313(starknet@6.23.1(encoding@0.1.13)) + '@keplr-wallet/types': 0.12.313(starknet@6.23.1(encoding@0.1.13)) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -11502,11 +10679,11 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil - db0 - - debug - encoding - ioredis - starknet @@ -11514,16 +10691,16 @@ snapshots: - uploadthing - utf-8-validate - '@cosmos-kit/keplr-mobile@2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@walletconnect/sign-client@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@walletconnect/types@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))))(bufferutil@4.0.9)(encoding@0.1.13)(starknet@6.23.1(encoding@0.1.13))(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@cosmos-kit/keplr-mobile@2.17.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@walletconnect/sign-client@2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@walletconnect/types@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(starknet@6.23.1(encoding@0.1.13))(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@chain-registry/keplr': 1.74.164 - '@cosmjs/amino': 0.33.1 - '@cosmjs/proto-signing': 0.32.4 - '@cosmos-kit/core': 2.16.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@cosmos-kit/keplr-extension': 2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(starknet@6.23.1(encoding@0.1.13))(utf-8-validate@5.0.10) - '@cosmos-kit/walletconnect': 2.13.0(@cosmjs/amino@0.33.1)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@walletconnect/types@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@keplr-wallet/provider-extension': 0.12.209(starknet@6.23.1(encoding@0.1.13)) - '@keplr-wallet/wc-client': 0.12.209(@walletconnect/sign-client@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@walletconnect/types@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))))(starknet@6.23.1(encoding@0.1.13)) + '@chain-registry/keplr': 1.74.577 + '@cosmjs/amino': 0.36.2 + '@cosmjs/proto-signing': 0.36.2 + '@cosmos-kit/core': 2.18.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(utf-8-validate@5.0.10) + '@cosmos-kit/keplr-extension': 2.17.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(starknet@6.23.1(encoding@0.1.13))(utf-8-validate@5.0.10) + '@cosmos-kit/walletconnect': 2.15.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@walletconnect/types@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@keplr-wallet/provider-extension': 0.12.313(starknet@6.23.1(encoding@0.1.13)) + '@keplr-wallet/wc-client': 0.12.313(@walletconnect/sign-client@2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@walletconnect/types@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1))(starknet@6.23.1(encoding@0.1.13)) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -11538,13 +10715,13 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - '@walletconnect/sign-client' - '@walletconnect/types' - aws4fetch - bufferutil - db0 - - debug - encoding - ioredis - starknet @@ -11554,10 +10731,10 @@ snapshots: - utf-8-validate - zod - '@cosmos-kit/keplr@2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@walletconnect/sign-client@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@walletconnect/types@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))))(bufferutil@4.0.9)(encoding@0.1.13)(starknet@6.23.1(encoding@0.1.13))(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@cosmos-kit/keplr@2.17.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@walletconnect/sign-client@2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@walletconnect/types@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(starknet@6.23.1(encoding@0.1.13))(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@cosmos-kit/keplr-extension': 2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(starknet@6.23.1(encoding@0.1.13))(utf-8-validate@5.0.10) - '@cosmos-kit/keplr-mobile': 2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@walletconnect/sign-client@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@walletconnect/types@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))))(bufferutil@4.0.9)(encoding@0.1.13)(starknet@6.23.1(encoding@0.1.13))(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@cosmos-kit/keplr-extension': 2.17.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(starknet@6.23.1(encoding@0.1.13))(utf-8-validate@5.0.10) + '@cosmos-kit/keplr-mobile': 2.17.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@walletconnect/sign-client@2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@walletconnect/types@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(starknet@6.23.1(encoding@0.1.13))(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -11574,13 +10751,13 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - '@walletconnect/sign-client' - '@walletconnect/types' - aws4fetch - bufferutil - db0 - - debug - encoding - ioredis - starknet @@ -11590,12 +10767,12 @@ snapshots: - utf-8-validate - zod - '@cosmos-kit/leap-extension@2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@cosmos-kit/leap-extension@2.17.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(utf-8-validate@5.0.10)': dependencies: - '@chain-registry/keplr': 1.74.164 - '@cosmjs/amino': 0.33.1 - '@cosmjs/proto-signing': 0.32.4 - '@cosmos-kit/core': 2.16.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@chain-registry/keplr': 1.74.577 + '@cosmjs/amino': 0.36.2 + '@cosmjs/proto-signing': 0.36.2 + '@cosmos-kit/core': 2.18.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(utf-8-validate@5.0.10) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -11610,26 +10787,26 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil - db0 - - debug - encoding - ioredis - supports-color - uploadthing - utf-8-validate - '@cosmos-kit/leap-metamask-cosmos-snap@0.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(cosmjs-types@0.9.0)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@cosmos-kit/leap-metamask-cosmos-snap@0.17.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(cosmjs-types@0.10.1)(encoding@0.1.13)(ioredis@5.10.1)(utf-8-validate@5.0.10)': dependencies: - '@chain-registry/keplr': 1.74.164 - '@cosmjs/amino': 0.33.1 - '@cosmjs/proto-signing': 0.32.4 - '@cosmos-kit/core': 2.16.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@chain-registry/keplr': 1.74.577 + '@cosmjs/amino': 0.36.2 + '@cosmjs/proto-signing': 0.36.2 + '@cosmos-kit/core': 2.18.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(utf-8-validate@5.0.10) '@leapwallet/cosmos-snap-provider': 0.1.26 '@metamask/providers': 11.1.2 - cosmjs-types: 0.9.0 + cosmjs-types: 0.10.1 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -11644,22 +10821,22 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil - db0 - - debug - encoding - ioredis - supports-color - uploadthing - utf-8-validate - '@cosmos-kit/leap-mobile@2.14.0(@cosmjs/amino@0.33.1)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@walletconnect/types@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@cosmos-kit/leap-mobile@2.16.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@walletconnect/types@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@chain-registry/keplr': 1.74.164 - '@cosmos-kit/core': 2.16.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@cosmos-kit/walletconnect': 2.13.0(@cosmjs/amino@0.33.1)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@walletconnect/types@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@chain-registry/keplr': 1.74.577 + '@cosmos-kit/core': 2.18.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(utf-8-validate@5.0.10) + '@cosmos-kit/walletconnect': 2.15.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@walletconnect/types@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -11669,18 +10846,19 @@ snapshots: - '@azure/storage-blob' - '@capacitor/preferences' - '@cosmjs/amino' + - '@cosmjs/proto-signing' - '@deno/kv' - '@netlify/blobs' - '@planetscale/database' - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - '@walletconnect/types' - aws4fetch - bufferutil - db0 - - debug - encoding - ioredis - supports-color @@ -11689,11 +10867,11 @@ snapshots: - utf-8-validate - zod - '@cosmos-kit/leap@2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@walletconnect/types@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))))(bufferutil@4.0.9)(cosmjs-types@0.9.0)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@cosmos-kit/leap@2.17.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@walletconnect/types@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1))(bufferutil@4.0.9)(cosmjs-types@0.10.1)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@cosmos-kit/leap-extension': 2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@cosmos-kit/leap-metamask-cosmos-snap': 0.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(cosmjs-types@0.9.0)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@cosmos-kit/leap-mobile': 2.14.0(@cosmjs/amino@0.33.1)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@walletconnect/types@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@cosmos-kit/leap-extension': 2.17.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(utf-8-validate@5.0.10) + '@cosmos-kit/leap-metamask-cosmos-snap': 0.17.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(cosmjs-types@0.10.1)(encoding@0.1.13)(ioredis@5.10.1)(utf-8-validate@5.0.10) + '@cosmos-kit/leap-mobile': 2.16.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@walletconnect/types@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -11710,13 +10888,13 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - '@walletconnect/types' - aws4fetch - bufferutil - cosmjs-types - db0 - - debug - encoding - ioredis - supports-color @@ -11725,14 +10903,14 @@ snapshots: - utf-8-validate - zod - '@cosmos-kit/walletconnect@2.13.0(@cosmjs/amino@0.33.1)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@walletconnect/types@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@cosmos-kit/walletconnect@2.15.1(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@walletconnect/types@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@cosmjs/amino': 0.33.1 - '@cosmjs/proto-signing': 0.32.4 - '@cosmos-kit/core': 2.16.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@walletconnect/sign-client': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/types': 2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@cosmjs/amino': 0.36.2 + '@cosmjs/proto-signing': 0.36.2 + '@cosmos-kit/core': 2.18.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(utf-8-validate@5.0.10) + '@walletconnect/sign-client': 2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1)(typescript@6.0.3)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -11748,11 +10926,11 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil - db0 - - debug - encoding - ioredis - supports-color @@ -11761,40 +10939,40 @@ snapshots: - utf-8-validate - zod - '@csstools/color-helpers@5.1.0': + '@csstools/color-helpers@6.0.2': optional: true - '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-calc@3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 optional: true - '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-color-parser@4.1.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/color-helpers': 5.1.0 - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + '@csstools/color-helpers': 6.0.2 + '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 optional: true - '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-tokenizer': 4.0.0 optional: true - '@csstools/css-syntax-patches-for-csstree@1.0.14(postcss@8.5.6)': - dependencies: - postcss: 8.5.6 + '@csstools/css-syntax-patches-for-csstree@1.1.3(css-tree@3.2.1)': + optionalDependencies: + css-tree: 3.2.1 optional: true - '@csstools/css-tokenizer@3.0.4': + '@csstools/css-tokenizer@4.0.0': optional: true - '@dao-dao/cosmiframe@1.0.0-rc.1(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)': + '@dao-dao/cosmiframe@1.0.0(@cosmjs/amino@0.36.2)(@cosmjs/proto-signing@0.36.2)': dependencies: - '@cosmjs/amino': 0.32.4 - '@cosmjs/proto-signing': 0.32.4 + '@cosmjs/amino': 0.36.2 + '@cosmjs/proto-signing': 0.36.2 uuid: 9.0.1 '@dedot/api@0.13.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': @@ -11820,7 +10998,7 @@ snapshots: '@dedot/codecs': 0.13.2 '@dedot/codegen': 0.13.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@polkadot-api/wasm-executor': 0.1.2 - '@polkadot/types-support': 16.5.4 + '@polkadot/types-support': 16.5.6 ora: 8.2.0 yargs: 17.7.2 transitivePeerDependencies: @@ -11842,8 +11020,8 @@ snapshots: '@dedot/shape': 0.13.2 '@dedot/types': 0.13.2 '@dedot/utils': 0.13.2 - handlebars: 4.7.8 - prettier: 3.7.4 + handlebars: 4.7.9 + prettier: 3.8.3 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -11854,7 +11032,7 @@ snapshots: '@dedot/codecs': 0.13.2 '@dedot/types': 0.13.2 '@dedot/utils': 0.13.2 - '@ethereumjs/rlp': 10.1.0 + '@ethereumjs/rlp': 10.1.1 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -11903,25 +11081,45 @@ snapshots: dependencies: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 - '@ecies/ciphers@0.2.5(@noble/ciphers@1.3.0)': + '@effect/openapi-generator@4.0.0-beta.68(@effect/platform-node@4.0.0-beta.68(bufferutil@4.0.9)(effect@4.0.0-beta.68)(ioredis@5.10.1)(utf-8-validate@5.0.10))(effect@4.0.0-beta.68)': dependencies: - '@noble/ciphers': 1.3.0 - optional: true + '@effect/platform-node': 4.0.0-beta.68(bufferutil@4.0.9)(effect@4.0.0-beta.68)(ioredis@5.10.1)(utf-8-validate@5.0.10) + effect: 4.0.0-beta.68 + + '@effect/platform-node-shared@4.0.0-beta.68(bufferutil@4.0.9)(effect@4.0.0-beta.68)(utf-8-validate@5.0.10)': + dependencies: + '@types/ws': 8.18.1 + effect: 4.0.0-beta.68 + ws: 8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@effect/platform-node@4.0.0-beta.68(bufferutil@4.0.9)(effect@4.0.0-beta.68)(ioredis@5.10.1)(utf-8-validate@5.0.10)': + dependencies: + '@effect/platform-node-shared': 4.0.0-beta.68(bufferutil@4.0.9)(effect@4.0.0-beta.68)(utf-8-validate@5.0.10) + effect: 4.0.0-beta.68 + ioredis: 5.10.1 + mime: 4.1.0 + undici: 8.3.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate - '@emnapi/core@1.7.1': + '@emnapi/core@1.10.0': dependencies: - '@emnapi/wasi-threads': 1.1.0 + '@emnapi/wasi-threads': 1.2.1 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.7.1': + '@emnapi/runtime@1.10.0': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.1.0': + '@emnapi/wasi-threads@1.2.1': dependencies: tslib: 2.8.1 optional: true @@ -11934,202 +11132,184 @@ snapshots: '@emurgo/cardano-serialization-lib-nodejs@13.2.0': {} - '@esbuild/aix-ppc64@0.25.12': - optional: true - '@esbuild/aix-ppc64@0.27.0': optional: true - '@esbuild/android-arm64@0.25.12': + '@esbuild/aix-ppc64@0.28.0': optional: true '@esbuild/android-arm64@0.27.0': optional: true - '@esbuild/android-arm@0.25.12': + '@esbuild/android-arm64@0.28.0': optional: true '@esbuild/android-arm@0.27.0': optional: true - '@esbuild/android-x64@0.25.12': + '@esbuild/android-arm@0.28.0': optional: true '@esbuild/android-x64@0.27.0': optional: true - '@esbuild/darwin-arm64@0.25.12': + '@esbuild/android-x64@0.28.0': optional: true '@esbuild/darwin-arm64@0.27.0': optional: true - '@esbuild/darwin-x64@0.25.12': + '@esbuild/darwin-arm64@0.28.0': optional: true '@esbuild/darwin-x64@0.27.0': optional: true - '@esbuild/freebsd-arm64@0.25.12': + '@esbuild/darwin-x64@0.28.0': optional: true '@esbuild/freebsd-arm64@0.27.0': optional: true - '@esbuild/freebsd-x64@0.25.12': + '@esbuild/freebsd-arm64@0.28.0': optional: true '@esbuild/freebsd-x64@0.27.0': optional: true - '@esbuild/linux-arm64@0.25.12': + '@esbuild/freebsd-x64@0.28.0': optional: true '@esbuild/linux-arm64@0.27.0': optional: true - '@esbuild/linux-arm@0.25.12': + '@esbuild/linux-arm64@0.28.0': optional: true '@esbuild/linux-arm@0.27.0': optional: true - '@esbuild/linux-ia32@0.25.12': + '@esbuild/linux-arm@0.28.0': optional: true '@esbuild/linux-ia32@0.27.0': optional: true - '@esbuild/linux-loong64@0.25.12': + '@esbuild/linux-ia32@0.28.0': optional: true '@esbuild/linux-loong64@0.27.0': optional: true - '@esbuild/linux-mips64el@0.25.12': + '@esbuild/linux-loong64@0.28.0': optional: true '@esbuild/linux-mips64el@0.27.0': optional: true - '@esbuild/linux-ppc64@0.25.12': + '@esbuild/linux-mips64el@0.28.0': optional: true '@esbuild/linux-ppc64@0.27.0': optional: true - '@esbuild/linux-riscv64@0.25.12': + '@esbuild/linux-ppc64@0.28.0': optional: true '@esbuild/linux-riscv64@0.27.0': optional: true - '@esbuild/linux-s390x@0.25.12': + '@esbuild/linux-riscv64@0.28.0': optional: true '@esbuild/linux-s390x@0.27.0': optional: true - '@esbuild/linux-x64@0.25.12': + '@esbuild/linux-s390x@0.28.0': optional: true '@esbuild/linux-x64@0.27.0': optional: true - '@esbuild/netbsd-arm64@0.25.12': + '@esbuild/linux-x64@0.28.0': optional: true '@esbuild/netbsd-arm64@0.27.0': optional: true - '@esbuild/netbsd-x64@0.25.12': + '@esbuild/netbsd-arm64@0.28.0': optional: true '@esbuild/netbsd-x64@0.27.0': optional: true - '@esbuild/openbsd-arm64@0.25.12': + '@esbuild/netbsd-x64@0.28.0': optional: true '@esbuild/openbsd-arm64@0.27.0': optional: true - '@esbuild/openbsd-x64@0.25.12': + '@esbuild/openbsd-arm64@0.28.0': optional: true '@esbuild/openbsd-x64@0.27.0': optional: true - '@esbuild/openharmony-arm64@0.25.12': + '@esbuild/openbsd-x64@0.28.0': optional: true '@esbuild/openharmony-arm64@0.27.0': optional: true - '@esbuild/sunos-x64@0.25.12': + '@esbuild/openharmony-arm64@0.28.0': optional: true '@esbuild/sunos-x64@0.27.0': optional: true - '@esbuild/win32-arm64@0.25.12': + '@esbuild/sunos-x64@0.28.0': optional: true '@esbuild/win32-arm64@0.27.0': optional: true - '@esbuild/win32-ia32@0.25.12': + '@esbuild/win32-arm64@0.28.0': optional: true '@esbuild/win32-ia32@0.27.0': optional: true - '@esbuild/win32-x64@0.25.12': + '@esbuild/win32-ia32@0.28.0': optional: true '@esbuild/win32-x64@0.27.0': optional: true - '@ethereumjs/common@10.1.0': - dependencies: - '@ethereumjs/util': 10.1.0 - eventemitter3: 5.0.1 + '@esbuild/win32-x64@0.28.0': + optional: true - '@ethereumjs/common@3.2.0': + '@ethereumjs/common@10.1.1': dependencies: - '@ethereumjs/util': 8.1.0 - crc-32: 1.2.2 - - '@ethereumjs/rlp@10.1.0': {} + '@ethereumjs/util': 10.1.1 + eventemitter3: 5.0.4 - '@ethereumjs/rlp@4.0.1': {} + '@ethereumjs/rlp@10.1.1': {} '@ethereumjs/rlp@5.0.2': {} - '@ethereumjs/tx@10.1.0': + '@ethereumjs/tx@10.1.1': dependencies: - '@ethereumjs/common': 10.1.0 - '@ethereumjs/rlp': 10.1.0 - '@ethereumjs/util': 10.1.0 - ethereum-cryptography: 3.2.0 + '@ethereumjs/common': 10.1.1 + '@ethereumjs/rlp': 10.1.1 + '@ethereumjs/util': 10.1.1 + '@noble/curves': 2.2.0 + '@noble/hashes': 2.2.0 - '@ethereumjs/tx@4.2.0': + '@ethereumjs/util@10.1.1': dependencies: - '@ethereumjs/common': 3.2.0 - '@ethereumjs/rlp': 4.0.1 - '@ethereumjs/util': 8.1.0 - ethereum-cryptography: 2.2.1 - - '@ethereumjs/util@10.1.0': - dependencies: - '@ethereumjs/rlp': 10.1.0 - ethereum-cryptography: 3.2.0 - - '@ethereumjs/util@8.1.0': - dependencies: - '@ethereumjs/rlp': 4.0.1 - ethereum-cryptography: 2.2.1 - micro-ftch: 0.3.1 + '@ethereumjs/rlp': 10.1.1 + '@noble/curves': 2.2.0 + '@noble/hashes': 2.2.0 '@ethereumjs/util@9.1.0': dependencies: @@ -12148,7 +11328,7 @@ snapshots: dependencies: '@ethersproject/bytes': 5.8.0 '@ethersproject/logger': 5.8.0 - bn.js: 5.2.2 + bn.js: 5.2.3 '@ethersproject/bytes@5.8.0': dependencies: @@ -12166,7 +11346,9 @@ snapshots: '@ethersproject/bytes': 5.8.0 '@ethersproject/logger': 5.8.0 - '@faker-js/faker@10.1.0': {} + '@exodus/schemasafe@1.3.0': {} + + '@faker-js/faker@10.4.0': {} '@fivebinaries/coin-selection@3.0.0': dependencies: @@ -12182,40 +11364,31 @@ snapshots: '@floating-ui/core': 1.7.3 '@floating-ui/utils': 0.2.10 - '@floating-ui/react-dom@2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@floating-ui/react-dom@2.1.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@floating-ui/dom': 1.7.4 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) '@floating-ui/utils@0.2.10': {} '@foxglove/crc@0.0.3': {} - '@fractalwagmi/popup-connection@1.1.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@fractalwagmi/popup-connection@1.1.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) - '@fractalwagmi/solana-wallet-adapter@0.1.1(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@fractalwagmi/solana-wallet-adapter@0.1.1(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@fractalwagmi/popup-connection': 1.1.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) + '@fractalwagmi/popup-connection': 1.1.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) bs58: 5.0.0 transitivePeerDependencies: - '@solana/web3.js' - react - react-dom - '@gemini-wallet/core@0.3.2(viem@2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': - dependencies: - '@metamask/rpc-errors': 7.0.2 - eventemitter3: 5.0.1 - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - transitivePeerDependencies: - - supports-color - optional: true - '@harmoniclabs/bigint-utils@1.0.0': dependencies: '@harmoniclabs/uint8array-utils': 1.0.4 @@ -12266,7 +11439,7 @@ snapshots: '@harmoniclabs/plutus-data': 1.2.4(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.3.0) '@harmoniclabs/uint8array-utils': 1.0.4 - '@img/colour@1.0.0': + '@img/colour@1.1.0': optional: true '@img/sharp-darwin-arm64@0.34.5': @@ -12351,7 +11524,7 @@ snapshots: '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.7.1 + '@emnapi/runtime': 1.10.0 optional: true '@img/sharp-win32-arm64@0.34.5': @@ -12363,40 +11536,34 @@ snapshots: '@img/sharp-win32-x64@0.34.5': optional: true - '@inquirer/ansi@1.0.2': {} + '@inquirer/ansi@2.0.5': {} - '@inquirer/confirm@5.1.21(@types/node@25.0.2)': + '@inquirer/confirm@6.0.13(@types/node@25.7.0)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.0.2) - '@inquirer/type': 3.0.10(@types/node@25.0.2) + '@inquirer/core': 11.1.10(@types/node@25.7.0) + '@inquirer/type': 4.0.5(@types/node@25.7.0) optionalDependencies: - '@types/node': 25.0.2 + '@types/node': 25.7.0 - '@inquirer/core@10.3.2(@types/node@25.0.2)': + '@inquirer/core@11.1.10(@types/node@25.7.0)': dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.0.2) + '@inquirer/ansi': 2.0.5 + '@inquirer/figures': 2.0.5 + '@inquirer/type': 4.0.5(@types/node@25.7.0) cli-width: 4.1.0 - mute-stream: 2.0.0 + fast-wrap-ansi: 0.2.0 + mute-stream: 3.0.0 signal-exit: 4.1.0 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 25.0.2 - - '@inquirer/external-editor@1.0.3(@types/node@25.0.2)': - dependencies: - chardet: 2.1.1 - iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 25.0.2 + '@types/node': 25.7.0 - '@inquirer/figures@1.0.15': {} + '@inquirer/figures@2.0.5': {} - '@inquirer/type@3.0.10(@types/node@25.0.2)': + '@inquirer/type@4.0.5(@types/node@25.7.0)': optionalDependencies: - '@types/node': 25.0.2 + '@types/node': 25.7.0 + + '@ioredis/commands@1.5.1': {} '@isaacs/ttlcache@1.4.1': {} @@ -12408,35 +11575,52 @@ snapshots: js-yaml: 3.14.2 resolve-from: 5.0.0 - '@istanbuljs/schema@0.1.3': {} + '@istanbuljs/schema@0.1.6': {} '@jest/create-cache-key-function@29.7.0': dependencies: '@jest/types': 29.6.3 + '@jest/diff-sequences@30.4.0': {} + '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 25.0.2 + '@types/node': 25.7.0 jest-mock: 29.7.0 + '@jest/expect-utils@30.4.1': + dependencies: + '@jest/get-type': 30.1.0 + '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 25.0.2 + '@types/node': 25.7.0 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 + '@jest/get-type@30.1.0': {} + + '@jest/pattern@30.4.0': + dependencies: + '@types/node': 25.7.0 + jest-regex-util: 30.4.0 + '@jest/schemas@29.6.3': dependencies: - '@sinclair/typebox': 0.27.8 + '@sinclair/typebox': 0.27.10 + + '@jest/schemas@30.4.1': + dependencies: + '@sinclair/typebox': 0.34.49 '@jest/transform@29.7.0': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.31 babel-plugin-istanbul: 6.1.1 @@ -12459,7 +11643,17 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 25.0.2 + '@types/node': 25.7.0 + '@types/yargs': 17.0.35 + chalk: 4.1.2 + + '@jest/types@30.4.1': + dependencies: + '@jest/pattern': 30.4.0 + '@jest/schemas': 30.4.1 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 25.7.0 '@types/yargs': 17.0.35 chalk: 4.1.2 @@ -12493,7 +11687,7 @@ snapshots: '@keplr-wallet/types': 0.12.28 buffer: 6.0.3 delay: 4.4.1 - mobx: 6.13.7 + mobx: 6.15.3 '@keplr-wallet/cosmos@0.12.28': dependencies: @@ -12507,7 +11701,7 @@ snapshots: bech32: 1.1.4 buffer: 6.0.3 long: 4.0.0 - protobufjs: 6.11.4 + protobufjs: 6.11.6 '@keplr-wallet/crypto@0.12.28': dependencies: @@ -12523,36 +11717,37 @@ snapshots: '@keplr-wallet/proto-types@0.12.28': dependencies: long: 4.0.0 - protobufjs: 6.11.4 + protobufjs: 6.11.6 - '@keplr-wallet/provider-extension@0.12.209(starknet@6.23.1(encoding@0.1.13))': + '@keplr-wallet/provider-extension@0.12.313(starknet@6.23.1(encoding@0.1.13))': dependencies: - '@keplr-wallet/types': 0.12.209(starknet@6.23.1(encoding@0.1.13)) + '@keplr-wallet/types': 0.12.313(starknet@6.23.1(encoding@0.1.13)) deepmerge: 4.3.1 long: 4.0.0 starknet: 6.23.1(encoding@0.1.13) + uuid: 11.1.1 - '@keplr-wallet/provider@0.12.209(starknet@6.23.1(encoding@0.1.13))': + '@keplr-wallet/provider@0.12.313(starknet@6.23.1(encoding@0.1.13))': dependencies: - '@keplr-wallet/router': 0.12.209 - '@keplr-wallet/types': 0.12.209(starknet@6.23.1(encoding@0.1.13)) + '@keplr-wallet/router': 0.12.313 + '@keplr-wallet/types': 0.12.313(starknet@6.23.1(encoding@0.1.13)) buffer: 6.0.3 deepmerge: 4.3.1 long: 4.0.0 starknet: 6.23.1(encoding@0.1.13) - '@keplr-wallet/router@0.12.209': {} + '@keplr-wallet/router@0.12.313': {} '@keplr-wallet/simple-fetch@0.12.28': {} - '@keplr-wallet/types@0.12.209(starknet@6.23.1(encoding@0.1.13))': + '@keplr-wallet/types@0.12.28': dependencies: long: 4.0.0 - starknet: 6.23.1(encoding@0.1.13) - '@keplr-wallet/types@0.12.28': + '@keplr-wallet/types@0.12.313(starknet@6.23.1(encoding@0.1.13))': dependencies: long: 4.0.0 + starknet: 6.23.1(encoding@0.1.13) '@keplr-wallet/unit@0.12.28': dependencies: @@ -12560,22 +11755,22 @@ snapshots: big-integer: 1.6.52 utility-types: 3.11.0 - '@keplr-wallet/wc-client@0.12.209(@walletconnect/sign-client@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@walletconnect/types@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))))(starknet@6.23.1(encoding@0.1.13))': + '@keplr-wallet/wc-client@0.12.313(@walletconnect/sign-client@2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@walletconnect/types@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1))(starknet@6.23.1(encoding@0.1.13))': dependencies: - '@keplr-wallet/provider': 0.12.209(starknet@6.23.1(encoding@0.1.13)) - '@keplr-wallet/types': 0.12.209(starknet@6.23.1(encoding@0.1.13)) - '@walletconnect/sign-client': 2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/types': 2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@keplr-wallet/provider': 0.12.313(starknet@6.23.1(encoding@0.1.13)) + '@keplr-wallet/types': 0.12.313(starknet@6.23.1(encoding@0.1.13)) + '@walletconnect/sign-client': 2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) buffer: 6.0.3 deepmerge: 4.3.1 - long: 5.3.1 + long: 5.3.2 starknet: 6.23.1(encoding@0.1.13) '@keystonehq/alias-sampling@0.1.2': {} '@keystonehq/bc-ur-registry-sol@0.9.5': dependencies: - '@keystonehq/bc-ur-registry': 0.7.0 + '@keystonehq/bc-ur-registry': 0.7.1 bs58check: 2.1.2 uuid: 8.3.2 @@ -12585,28 +11780,28 @@ snapshots: bs58check: 2.1.2 tslib: 2.8.1 - '@keystonehq/bc-ur-registry@0.7.0': + '@keystonehq/bc-ur-registry@0.7.1': dependencies: '@ngraveio/bc-ur': 1.1.13 bs58check: 2.1.2 tslib: 2.8.1 - '@keystonehq/sdk@0.19.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@keystonehq/sdk@0.19.2(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@ngraveio/bc-ur': 1.1.13 - qrcode.react: 1.0.1(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - react-modal: 3.16.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react-qr-reader: 2.2.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + qrcode.react: 1.0.1(react@19.2.6) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + react-modal: 3.16.3(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + react-qr-reader: 2.2.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6) rxjs: 6.6.7 - '@keystonehq/sol-keyring@0.20.0(bufferutil@4.0.9)(encoding@0.1.13)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@keystonehq/sol-keyring@0.20.0(bufferutil@4.0.9)(encoding@0.1.13)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)': dependencies: '@keystonehq/bc-ur-registry': 0.5.4 '@keystonehq/bc-ur-registry-sol': 0.9.5 - '@keystonehq/sdk': 0.19.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@keystonehq/sdk': 0.19.2(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) bs58: 5.0.0 uuid: 8.3.2 transitivePeerDependencies: @@ -12617,94 +11812,111 @@ snapshots: - typescript - utf-8-validate - '@kurkle/color@0.3.4': {} - '@leapwallet/cosmos-snap-provider@0.1.26': dependencies: '@cosmjs/amino': 0.32.4 '@cosmjs/proto-signing': 0.32.4 bignumber.js: 9.3.1 - long: 5.3.1 + long: 5.3.2 '@ledgerhq/devices@6.27.1': dependencies: - '@ledgerhq/errors': 6.25.0 - '@ledgerhq/logs': 6.13.0 + '@ledgerhq/errors': 6.34.1 + '@ledgerhq/logs': 6.17.0 rxjs: 6.6.7 - semver: 7.7.3 + semver: 7.8.0 - '@ledgerhq/devices@8.5.1': + '@ledgerhq/devices@8.14.2': dependencies: - '@ledgerhq/errors': 6.25.0 - '@ledgerhq/logs': 6.13.0 + '@ledgerhq/errors': 6.34.1 + '@ledgerhq/logs': 6.17.0 rxjs: 7.8.2 semver: 7.7.3 - '@ledgerhq/devices@8.7.0': + '@ledgerhq/devices@8.5.0': dependencies: - '@ledgerhq/errors': 6.27.0 - '@ledgerhq/logs': 6.13.0 + '@ledgerhq/errors': 6.34.1 + '@ledgerhq/logs': 6.17.0 rxjs: 7.8.2 - semver: 7.7.3 + semver: 7.8.0 - '@ledgerhq/errors@6.25.0': {} + '@ledgerhq/devices@8.7.0': + dependencies: + '@ledgerhq/errors': 6.34.1 + '@ledgerhq/logs': 6.17.0 + rxjs: 7.8.2 + semver: 7.8.0 - '@ledgerhq/errors@6.27.0': {} + '@ledgerhq/errors@6.34.1': {} - '@ledgerhq/hw-app-trx@6.29.4': + '@ledgerhq/hw-app-trx@6.29.2': dependencies: - '@ledgerhq/hw-transport': 6.31.13 + '@ledgerhq/hw-transport': 6.35.2 '@ledgerhq/hw-transport-webhid@6.27.1': dependencies: '@ledgerhq/devices': 6.27.1 - '@ledgerhq/errors': 6.25.0 - '@ledgerhq/hw-transport': 6.27.1 - '@ledgerhq/logs': 6.13.0 + '@ledgerhq/errors': 6.34.1 + '@ledgerhq/hw-transport': 6.35.2 + '@ledgerhq/logs': 6.17.0 + + '@ledgerhq/hw-transport-webhid@6.35.2': + dependencies: + '@ledgerhq/devices': 8.14.2 + '@ledgerhq/errors': 6.34.1 + '@ledgerhq/hw-transport': 6.35.2 + '@ledgerhq/logs': 6.17.0 - '@ledgerhq/hw-transport-webhid@6.30.6': + '@ledgerhq/hw-transport-webusb@6.29.13': dependencies: - '@ledgerhq/devices': 8.5.1 - '@ledgerhq/errors': 6.25.0 - '@ledgerhq/hw-transport': 6.31.10 - '@ledgerhq/logs': 6.13.0 + '@ledgerhq/devices': 8.7.0 + '@ledgerhq/errors': 6.34.1 + '@ledgerhq/hw-transport': 6.31.13 + '@ledgerhq/logs': 6.17.0 '@ledgerhq/hw-transport@6.27.1': dependencies: '@ledgerhq/devices': 6.27.1 - '@ledgerhq/errors': 6.25.0 + '@ledgerhq/errors': 6.34.1 events: 3.3.0 - '@ledgerhq/hw-transport@6.31.10': + '@ledgerhq/hw-transport@6.31.13': dependencies: - '@ledgerhq/devices': 8.5.1 - '@ledgerhq/errors': 6.25.0 - '@ledgerhq/logs': 6.13.0 + '@ledgerhq/devices': 8.7.0 + '@ledgerhq/errors': 6.34.1 + '@ledgerhq/logs': 6.17.0 events: 3.3.0 - '@ledgerhq/hw-transport@6.31.13': + '@ledgerhq/hw-transport@6.31.9': dependencies: - '@ledgerhq/devices': 8.7.0 - '@ledgerhq/errors': 6.27.0 - '@ledgerhq/logs': 6.13.0 + '@ledgerhq/devices': 8.5.0 + '@ledgerhq/errors': 6.34.1 + '@ledgerhq/logs': 6.17.0 + events: 3.3.0 + + '@ledgerhq/hw-transport@6.35.2': + dependencies: + '@ledgerhq/devices': 8.14.2 + '@ledgerhq/errors': 6.34.1 + '@ledgerhq/logs': 6.17.0 events: 3.3.0 - '@ledgerhq/logs@6.13.0': {} + '@ledgerhq/logs@6.17.0': {} - '@ledgerhq/wallet-api-client@1.12.6(@ton/crypto@3.3.0)(encoding@0.1.13)': + '@ledgerhq/wallet-api-client@1.14.0(@ton/crypto@3.3.0)(encoding@0.1.13)': dependencies: - '@ledgerhq/hw-transport': 6.31.13 - '@ledgerhq/wallet-api-core': 1.27.0(@ton/crypto@3.3.0)(encoding@0.1.13) + '@ledgerhq/hw-transport': 6.35.2 + '@ledgerhq/wallet-api-core': 1.30.0(@ton/crypto@3.3.0)(encoding@0.1.13) bignumber.js: 9.3.1 transitivePeerDependencies: - '@ton/crypto' - encoding - '@ledgerhq/wallet-api-core@1.27.0(@ton/crypto@3.3.0)(encoding@0.1.13)': + '@ledgerhq/wallet-api-core@1.30.0(@ton/crypto@3.3.0)(encoding@0.1.13)': dependencies: - '@ledgerhq/errors': 6.27.0 + '@ledgerhq/errors': 6.34.1 '@stacks/transactions': 6.17.0(encoding@0.1.13) - '@ton/core': 0.62.0(@ton/crypto@3.3.0) + '@ton/core': 0.62.1(@ton/crypto@3.3.0) bignumber.js: 9.3.1 uuid: 9.0.1 zod: 3.25.76 @@ -12714,27 +11926,30 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@lit-labs/ssr-dom-shim@1.4.0': {} + '@lit-labs/ssr-dom-shim@1.5.1': {} - '@lit/react@1.0.8(@types/react@19.0.10)': + '@lit/react@1.0.8(@types/react@19.2.14)': dependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 optional: true '@lit/reactive-element@1.6.3': dependencies: - '@lit-labs/ssr-dom-shim': 1.4.0 + '@lit-labs/ssr-dom-shim': 1.5.1 - '@lit/reactive-element@2.1.1': + '@lit/reactive-element@2.1.2': dependencies: - '@lit-labs/ssr-dom-shim': 1.4.0 + '@lit-labs/ssr-dom-shim': 1.5.1 - '@luno-kit/core@0.0.10(@dedot/chaintypes@0.123.0(dedot@0.13.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(dedot@0.13.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@luno-kit/core@0.0.13(@dedot/chaintypes@0.123.0(dedot@0.13.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(dedot@0.13.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@dedot/chaintypes': 0.123.0(dedot@0.13.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@ledgerhq/hw-transport-webusb': 6.29.13 '@mimirdev/apps-inject': 3.2.0 '@polkadot-api/pjs-signer': 0.6.14 - '@walletconnect/universal-provider': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@zondax/ledger-substrate': 2.0.0 + buffer: 6.0.3 dedot: 0.13.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) eventemitter3: 5.0.1 transitivePeerDependencies: @@ -12751,10 +11966,12 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil - db0 + - debug - encoding - ioredis - typescript @@ -12762,22 +11979,6 @@ snapshots: - utf-8-validate - zod - '@manypkg/find-root@1.1.0': - dependencies: - '@babel/runtime': 7.28.4 - '@types/node': 12.20.55 - find-up: 4.1.0 - fs-extra: 8.1.0 - - '@manypkg/get-packages@1.1.3': - dependencies: - '@babel/runtime': 7.28.4 - '@changesets/types': 4.1.0 - '@manypkg/find-root': 1.1.0 - fs-extra: 8.1.0 - globby: 11.1.0 - read-yaml-file: 1.1.0 - '@meshsdk/common@1.9.0-beta-40': dependencies: bech32: 2.0.0 @@ -12802,7 +12003,7 @@ snapshots: base32-encoding: 1.0.0 bech32: 2.0.0 blakejs: 1.2.1 - bn.js: 5.2.2 + bn.js: 5.2.3 transitivePeerDependencies: - '@dcspark/cardano-multiplatform-lib-asmjs' - '@dcspark/cardano-multiplatform-lib-browser' @@ -12853,58 +12054,12 @@ snapshots: - rxjs - utf-8-validate - '@metamask/eth-json-rpc-provider@1.0.1': - dependencies: - '@metamask/json-rpc-engine': 7.3.3 - '@metamask/safe-event-emitter': 3.1.2 - '@metamask/utils': 5.0.2 - transitivePeerDependencies: - - supports-color - - '@metamask/json-rpc-engine@7.3.3': - dependencies: - '@metamask/rpc-errors': 6.4.0 - '@metamask/safe-event-emitter': 3.1.2 - '@metamask/utils': 8.5.0 - transitivePeerDependencies: - - supports-color - - '@metamask/json-rpc-engine@8.0.2': - dependencies: - '@metamask/rpc-errors': 6.4.0 - '@metamask/safe-event-emitter': 3.1.2 - '@metamask/utils': 8.5.0 - transitivePeerDependencies: - - supports-color - optional: true - - '@metamask/json-rpc-middleware-stream@7.0.2': - dependencies: - '@metamask/json-rpc-engine': 8.0.2 - '@metamask/safe-event-emitter': 3.1.2 - '@metamask/utils': 8.5.0 - readable-stream: 3.6.2 - transitivePeerDependencies: - - supports-color - optional: true - '@metamask/object-multiplex@1.3.0': dependencies: - end-of-stream: 1.4.4 + end-of-stream: 1.4.5 once: 1.4.0 readable-stream: 2.3.8 - '@metamask/object-multiplex@2.1.0': - dependencies: - once: 1.4.0 - readable-stream: 3.6.2 - optional: true - - '@metamask/onboarding@1.0.1': - dependencies: - bowser: 2.13.1 - optional: true - '@metamask/providers@11.1.2': dependencies: '@metamask/object-multiplex': 1.3.0 @@ -12916,225 +12071,79 @@ snapshots: is-stream: 2.0.1 json-rpc-engine: 6.1.0 json-rpc-middleware-stream: 4.2.3 - pump: 3.0.2 + pump: 3.0.4 webextension-polyfill: 0.10.0 - '@metamask/providers@16.1.0': + '@metamask/safe-event-emitter@2.0.0': {} + + '@metamask/safe-event-emitter@3.1.2': {} + + '@mimirdev/apps-inject@3.2.0': dependencies: - '@metamask/json-rpc-engine': 8.0.2 - '@metamask/json-rpc-middleware-stream': 7.0.2 - '@metamask/object-multiplex': 2.1.0 - '@metamask/rpc-errors': 6.4.0 - '@metamask/safe-event-emitter': 3.1.2 - '@metamask/utils': 8.5.0 - detect-browser: 5.3.0 - extension-port-stream: 3.0.0 - fast-deep-equal: 3.1.3 - is-stream: 2.0.1 - readable-stream: 3.6.2 - webextension-polyfill: 0.10.0 - transitivePeerDependencies: - - supports-color - optional: true + '@mimirdev/apps-sdk': 3.1.0 - '@metamask/rpc-errors@6.4.0': + '@mimirdev/apps-sdk@3.1.0': dependencies: - '@metamask/utils': 9.3.0 - fast-safe-stringify: 2.1.1 - transitivePeerDependencies: - - supports-color + eventemitter3: 5.0.4 - '@metamask/rpc-errors@7.0.2': + '@mixpanel/rrdom@2.0.0-alpha.18.4': dependencies: - '@metamask/utils': 11.8.1 - fast-safe-stringify: 2.1.1 - transitivePeerDependencies: - - supports-color - optional: true + '@mixpanel/rrweb-snapshot': 2.0.0-alpha.18.4 - '@metamask/safe-event-emitter@2.0.0': {} + '@mixpanel/rrweb-plugin-console-record@2.0.0-alpha.18.4(@mixpanel/rrweb-utils@2.0.0-alpha.18.4)(@mixpanel/rrweb@2.0.0-alpha.18.4)': + dependencies: + '@mixpanel/rrweb': 2.0.0-alpha.18.4 + '@mixpanel/rrweb-utils': 2.0.0-alpha.18.4 - '@metamask/safe-event-emitter@3.1.2': {} + '@mixpanel/rrweb-snapshot@2.0.0-alpha.18.4': + dependencies: + postcss: 8.5.14 - '@metamask/sdk-analytics@0.0.5': + '@mixpanel/rrweb-types@2.0.0-alpha.18.4': {} + + '@mixpanel/rrweb-utils@2.0.0-alpha.18.4': {} + + '@mixpanel/rrweb@2.0.0-alpha.18.4': dependencies: - openapi-fetch: 0.13.8 - optional: true + '@mixpanel/rrdom': 2.0.0-alpha.18.4 + '@mixpanel/rrweb-snapshot': 2.0.0-alpha.18.4 + '@mixpanel/rrweb-types': 2.0.0-alpha.18.4 + '@mixpanel/rrweb-utils': 2.0.0-alpha.18.4 + '@types/css-font-loading-module': 0.0.7 + '@xstate/fsm': 1.6.5 + base64-arraybuffer: 1.0.2 + mitt: 3.0.1 + + '@mobily/ts-belt@3.13.1': {} - '@metamask/sdk-communication-layer@0.33.1(cross-fetch@4.1.0(encoding@0.1.13))(eciesjs@0.4.16)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@motionone/animation@10.18.0': dependencies: - '@metamask/sdk-analytics': 0.0.5 - bufferutil: 4.0.9 - cross-fetch: 4.1.0(encoding@0.1.13) - date-fns: 2.30.0 - debug: 4.3.4 - eciesjs: 0.4.16 - eventemitter2: 6.4.9 - readable-stream: 3.6.2 - socket.io-client: 4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) - utf-8-validate: 5.0.10 - uuid: 8.3.2 - transitivePeerDependencies: - - supports-color - optional: true + '@motionone/easing': 10.18.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + tslib: 2.8.1 - '@metamask/sdk-install-modal-web@0.32.1': + '@motionone/dom@10.18.0': dependencies: - '@paulmillr/qr': 0.2.1 - optional: true + '@motionone/animation': 10.18.0 + '@motionone/generators': 10.18.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + hey-listen: 1.0.8 + tslib: 2.8.1 - '@metamask/sdk@0.33.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@motionone/easing@10.18.0': dependencies: - '@babel/runtime': 7.28.4 - '@metamask/onboarding': 1.0.1 - '@metamask/providers': 16.1.0 - '@metamask/sdk-analytics': 0.0.5 - '@metamask/sdk-communication-layer': 0.33.1(cross-fetch@4.1.0(encoding@0.1.13))(eciesjs@0.4.16)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@metamask/sdk-install-modal-web': 0.32.1 - '@paulmillr/qr': 0.2.1 - bowser: 2.13.1 - cross-fetch: 4.1.0(encoding@0.1.13) - debug: 4.3.4 - eciesjs: 0.4.16 - eth-rpc-errors: 4.0.3 - eventemitter2: 6.4.9 - obj-multiplex: 1.0.0 - pump: 3.0.3 - readable-stream: 3.6.2 - socket.io-client: 4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@motionone/utils': 10.18.0 tslib: 2.8.1 - util: 0.12.5 - uuid: 8.3.2 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - optional: true - '@metamask/superstruct@3.2.1': {} + '@motionone/generators@10.18.0': + dependencies: + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + tslib: 2.8.1 - '@metamask/utils@11.8.1': - dependencies: - '@ethereumjs/tx': 4.2.0 - '@metamask/superstruct': 3.2.1 - '@noble/hashes': 1.8.0 - '@scure/base': 1.2.6 - '@types/debug': 4.1.12 - '@types/lodash': 4.17.21 - debug: 4.4.3 - lodash: 4.17.21 - pony-cause: 2.1.11 - semver: 7.7.3 - uuid: 9.0.1 - transitivePeerDependencies: - - supports-color - optional: true - - '@metamask/utils@5.0.2': - dependencies: - '@ethereumjs/tx': 4.2.0 - '@types/debug': 4.1.12 - debug: 4.4.3 - semver: 7.7.3 - superstruct: 1.0.4 - transitivePeerDependencies: - - supports-color - - '@metamask/utils@8.5.0': - dependencies: - '@ethereumjs/tx': 4.2.0 - '@metamask/superstruct': 3.2.1 - '@noble/hashes': 1.8.0 - '@scure/base': 1.2.6 - '@types/debug': 4.1.12 - debug: 4.4.3 - pony-cause: 2.1.11 - semver: 7.7.3 - uuid: 9.0.1 - transitivePeerDependencies: - - supports-color - - '@metamask/utils@9.3.0': - dependencies: - '@ethereumjs/tx': 4.2.0 - '@metamask/superstruct': 3.2.1 - '@noble/hashes': 1.8.0 - '@scure/base': 1.2.6 - '@types/debug': 4.1.12 - debug: 4.4.3 - pony-cause: 2.1.11 - semver: 7.7.3 - uuid: 9.0.1 - transitivePeerDependencies: - - supports-color - - '@mimirdev/apps-inject@3.2.0': - dependencies: - '@mimirdev/apps-sdk': 3.1.0 - - '@mimirdev/apps-sdk@3.1.0': - dependencies: - eventemitter3: 5.0.1 - - '@mixpanel/rrdom@2.0.0-alpha.18.2': - dependencies: - '@mixpanel/rrweb-snapshot': 2.0.0-alpha.18.2 - - '@mixpanel/rrweb-plugin-console-record@2.0.0-alpha.18.2(@mixpanel/rrweb-utils@2.0.0-alpha.18.2)(@mixpanel/rrweb@2.0.0-alpha.18.2)': - dependencies: - '@mixpanel/rrweb': 2.0.0-alpha.18.2 - '@mixpanel/rrweb-utils': 2.0.0-alpha.18.2 - - '@mixpanel/rrweb-snapshot@2.0.0-alpha.18.2': - dependencies: - postcss: 8.5.6 - - '@mixpanel/rrweb-types@2.0.0-alpha.18.2': {} - - '@mixpanel/rrweb-utils@2.0.0-alpha.18.2': {} - - '@mixpanel/rrweb@2.0.0-alpha.18.2': - dependencies: - '@mixpanel/rrdom': 2.0.0-alpha.18.2 - '@mixpanel/rrweb-snapshot': 2.0.0-alpha.18.2 - '@mixpanel/rrweb-types': 2.0.0-alpha.18.2 - '@mixpanel/rrweb-utils': 2.0.0-alpha.18.2 - '@types/css-font-loading-module': 0.0.7 - '@xstate/fsm': 1.6.5 - base64-arraybuffer: 1.0.2 - mitt: 3.0.1 - - '@mobily/ts-belt@3.13.1': {} - - '@motionone/animation@10.18.0': - dependencies: - '@motionone/easing': 10.18.0 - '@motionone/types': 10.17.1 - '@motionone/utils': 10.18.0 - tslib: 2.8.1 - - '@motionone/dom@10.18.0': - dependencies: - '@motionone/animation': 10.18.0 - '@motionone/generators': 10.18.0 - '@motionone/types': 10.17.1 - '@motionone/utils': 10.18.0 - hey-listen: 1.0.8 - tslib: 2.8.1 - - '@motionone/easing@10.18.0': - dependencies: - '@motionone/utils': 10.18.0 - tslib: 2.8.1 - - '@motionone/generators@10.18.0': - dependencies: - '@motionone/types': 10.17.1 - '@motionone/utils': 10.18.0 - tslib: 2.8.1 - - '@motionone/svelte@10.16.4': + '@motionone/svelte@10.16.4': dependencies: '@motionone/dom': 10.18.0 tslib: 2.8.1 @@ -13154,7 +12163,27 @@ snapshots: '@msgpack/msgpack@3.1.2': {} - '@mswjs/interceptors@0.40.0': + '@msgpack/msgpack@3.1.3': {} + + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + optional: true + + '@mswjs/interceptors@0.41.9': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 @@ -13186,37 +12215,37 @@ snapshots: uint8-varint: 2.0.4 uint8arrays: 5.1.0 - '@napi-rs/wasm-runtime@1.1.0': + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: - '@emnapi/core': 1.7.1 - '@emnapi/runtime': 1.7.1 - '@tybys/wasm-util': 0.10.1 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.2 optional: true - '@next/env@16.0.10': {} + '@next/env@16.2.6': {} - '@next/swc-darwin-arm64@16.0.10': + '@next/swc-darwin-arm64@16.2.6': optional: true - '@next/swc-darwin-x64@16.0.10': + '@next/swc-darwin-x64@16.2.6': optional: true - '@next/swc-linux-arm64-gnu@16.0.10': + '@next/swc-linux-arm64-gnu@16.2.6': optional: true - '@next/swc-linux-arm64-musl@16.0.10': + '@next/swc-linux-arm64-musl@16.2.6': optional: true - '@next/swc-linux-x64-gnu@16.0.10': + '@next/swc-linux-x64-gnu@16.2.6': optional: true - '@next/swc-linux-x64-musl@16.0.10': + '@next/swc-linux-x64-musl@16.2.6': optional: true - '@next/swc-win32-arm64-msvc@16.0.10': + '@next/swc-win32-arm64-msvc@16.2.6': optional: true - '@next/swc-win32-x64-msvc@16.0.10': + '@next/swc-win32-x64-msvc@16.2.6': optional: true '@ngraveio/bc-ur@1.1.13': @@ -13229,16 +12258,10 @@ snapshots: jsbi: 3.2.5 sha.js: 2.4.12 - '@noble/ciphers@1.2.0': {} - '@noble/ciphers@1.2.1': {} '@noble/ciphers@1.3.0': {} - '@noble/curves@1.0.0': - dependencies: - '@noble/hashes': 1.3.0 - '@noble/curves@1.2.0': dependencies: '@noble/hashes': 1.3.2 @@ -13259,10 +12282,6 @@ snapshots: dependencies: '@noble/hashes': 1.7.1 - '@noble/curves@1.9.0': - dependencies: - '@noble/hashes': 1.8.0 - '@noble/curves@1.9.1': dependencies: '@noble/hashes': 1.8.0 @@ -13271,18 +12290,16 @@ snapshots: dependencies: '@noble/hashes': 1.8.0 - '@noble/curves@1.9.4': + '@noble/curves@1.9.7': dependencies: '@noble/hashes': 1.8.0 - '@noble/curves@1.9.7': + '@noble/curves@2.2.0': dependencies: - '@noble/hashes': 1.8.0 + '@noble/hashes': 2.2.0 '@noble/hashes@1.1.5': {} - '@noble/hashes@1.3.0': {} - '@noble/hashes@1.3.2': {} '@noble/hashes@1.4.0': {} @@ -13295,24 +12312,14 @@ snapshots: '@noble/hashes@1.8.0': {} - '@noble/hashes@2.0.1': {} + '@noble/hashes@2.2.0': {} '@noble/secp256k1@1.7.1': {} - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 - '@open-draft/deferred-promise@2.2.0': {} + '@open-draft/deferred-promise@3.0.0': {} + '@open-draft/logger@0.3.0': dependencies: is-node-process: 1.2.0 @@ -13320,127 +12327,68 @@ snapshots: '@open-draft/until@2.1.0': {} - '@oxc-resolver/binding-android-arm-eabi@11.15.0': - optional: true - - '@oxc-resolver/binding-android-arm64@11.15.0': - optional: true - - '@oxc-resolver/binding-darwin-arm64@11.15.0': - optional: true - - '@oxc-resolver/binding-darwin-x64@11.15.0': - optional: true - - '@oxc-resolver/binding-freebsd-x64@11.15.0': - optional: true - - '@oxc-resolver/binding-linux-arm-gnueabihf@11.15.0': - optional: true - - '@oxc-resolver/binding-linux-arm-musleabihf@11.15.0': - optional: true - - '@oxc-resolver/binding-linux-arm64-gnu@11.15.0': - optional: true - - '@oxc-resolver/binding-linux-arm64-musl@11.15.0': - optional: true - - '@oxc-resolver/binding-linux-ppc64-gnu@11.15.0': - optional: true - - '@oxc-resolver/binding-linux-riscv64-gnu@11.15.0': - optional: true - - '@oxc-resolver/binding-linux-riscv64-musl@11.15.0': - optional: true - - '@oxc-resolver/binding-linux-s390x-gnu@11.15.0': - optional: true - - '@oxc-resolver/binding-linux-x64-gnu@11.15.0': - optional: true - - '@oxc-resolver/binding-linux-x64-musl@11.15.0': - optional: true - - '@oxc-resolver/binding-openharmony-arm64@11.15.0': - optional: true - - '@oxc-resolver/binding-wasm32-wasi@11.15.0': - dependencies: - '@napi-rs/wasm-runtime': 1.1.0 - optional: true - - '@oxc-resolver/binding-win32-arm64-msvc@11.15.0': - optional: true - - '@oxc-resolver/binding-win32-ia32-msvc@11.15.0': - optional: true - - '@oxc-resolver/binding-win32-x64-msvc@11.15.0': - optional: true + '@oxc-project/types@0.129.0': {} - '@parcel/watcher-android-arm64@2.5.1': + '@parcel/watcher-android-arm64@2.5.6': optional: true - '@parcel/watcher-darwin-arm64@2.5.1': + '@parcel/watcher-darwin-arm64@2.5.6': optional: true - '@parcel/watcher-darwin-x64@2.5.1': + '@parcel/watcher-darwin-x64@2.5.6': optional: true - '@parcel/watcher-freebsd-x64@2.5.1': + '@parcel/watcher-freebsd-x64@2.5.6': optional: true - '@parcel/watcher-linux-arm-glibc@2.5.1': + '@parcel/watcher-linux-arm-glibc@2.5.6': optional: true - '@parcel/watcher-linux-arm-musl@2.5.1': + '@parcel/watcher-linux-arm-musl@2.5.6': optional: true - '@parcel/watcher-linux-arm64-glibc@2.5.1': + '@parcel/watcher-linux-arm64-glibc@2.5.6': optional: true - '@parcel/watcher-linux-arm64-musl@2.5.1': + '@parcel/watcher-linux-arm64-musl@2.5.6': optional: true - '@parcel/watcher-linux-x64-glibc@2.5.1': + '@parcel/watcher-linux-x64-glibc@2.5.6': optional: true - '@parcel/watcher-linux-x64-musl@2.5.1': + '@parcel/watcher-linux-x64-musl@2.5.6': optional: true - '@parcel/watcher-win32-arm64@2.5.1': + '@parcel/watcher-win32-arm64@2.5.6': optional: true - '@parcel/watcher-win32-ia32@2.5.1': + '@parcel/watcher-win32-ia32@2.5.6': optional: true - '@parcel/watcher-win32-x64@2.5.1': + '@parcel/watcher-win32-x64@2.5.6': optional: true - '@parcel/watcher@2.5.1': + '@parcel/watcher@2.5.6': dependencies: - detect-libc: 1.0.3 + detect-libc: 2.1.2 is-glob: 4.0.3 - micromatch: 4.0.8 node-addon-api: 7.1.1 + picomatch: 4.0.4 optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.1 - '@parcel/watcher-darwin-arm64': 2.5.1 - '@parcel/watcher-darwin-x64': 2.5.1 - '@parcel/watcher-freebsd-x64': 2.5.1 - '@parcel/watcher-linux-arm-glibc': 2.5.1 - '@parcel/watcher-linux-arm-musl': 2.5.1 - '@parcel/watcher-linux-arm64-glibc': 2.5.1 - '@parcel/watcher-linux-arm64-musl': 2.5.1 - '@parcel/watcher-linux-x64-glibc': 2.5.1 - '@parcel/watcher-linux-x64-musl': 2.5.1 - '@parcel/watcher-win32-arm64': 2.5.1 - '@parcel/watcher-win32-ia32': 2.5.1 - '@parcel/watcher-win32-x64': 2.5.1 + '@parcel/watcher-android-arm64': 2.5.6 + '@parcel/watcher-darwin-arm64': 2.5.6 + '@parcel/watcher-darwin-x64': 2.5.6 + '@parcel/watcher-freebsd-x64': 2.5.6 + '@parcel/watcher-linux-arm-glibc': 2.5.6 + '@parcel/watcher-linux-arm-musl': 2.5.6 + '@parcel/watcher-linux-arm64-glibc': 2.5.6 + '@parcel/watcher-linux-arm64-musl': 2.5.6 + '@parcel/watcher-linux-x64-glibc': 2.5.6 + '@parcel/watcher-linux-x64-musl': 2.5.6 + '@parcel/watcher-win32-arm64': 2.5.6 + '@parcel/watcher-win32-ia32': 2.5.6 + '@parcel/watcher-win32-x64': 2.5.6 + optional: true '@particle-network/analytics@1.0.2': dependencies: @@ -13462,17 +12410,12 @@ snapshots: crypto-js: 4.2.0 uuidv4: 6.2.13 - '@particle-network/solana-wallet@1.3.2(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0)': + '@particle-network/solana-wallet@1.3.2(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0)': dependencies: '@particle-network/auth': 1.3.1 - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) bs58: 5.0.0 - '@paulmillr/qr@0.2.1': - optional: true - - '@polka/url@0.5.0': {} - '@polka/url@1.0.0-next.29': {} '@polkadot-api/metadata-builders@0.13.4': @@ -13499,172 +12442,172 @@ snapshots: '@polkadot-api/substrate-bindings@0.16.2': dependencies: - '@noble/hashes': 2.0.1 + '@noble/hashes': 2.2.0 '@polkadot-api/utils': 0.2.0 - '@scure/base': 2.0.0 + '@scure/base': 2.2.0 scale-ts: 1.6.1 '@polkadot-api/utils@0.2.0': {} '@polkadot-api/wasm-executor@0.1.2': {} - '@polkadot/keyring@14.0.1(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1)': + '@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/util-crypto': 14.0.1(@polkadot/util@14.0.1) + '@polkadot/util': 14.0.3 + '@polkadot/util-crypto': 14.0.3(@polkadot/util@14.0.3) tslib: 2.8.1 - '@polkadot/networks@14.0.1': + '@polkadot/networks@14.0.3': dependencies: - '@polkadot/util': 14.0.1 + '@polkadot/util': 14.0.3 '@substrate/ss58-registry': 1.51.0 tslib: 2.8.1 - '@polkadot/types-augment@16.5.4': + '@polkadot/types-augment@16.5.6': dependencies: - '@polkadot/types': 16.5.4 - '@polkadot/types-codec': 16.5.4 - '@polkadot/util': 14.0.1 + '@polkadot/types': 16.5.6 + '@polkadot/types-codec': 16.5.6 + '@polkadot/util': 14.0.3 tslib: 2.8.1 - '@polkadot/types-codec@16.5.4': + '@polkadot/types-codec@16.5.6': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/x-bigint': 14.0.1 + '@polkadot/util': 14.0.3 + '@polkadot/x-bigint': 14.0.3 tslib: 2.8.1 - '@polkadot/types-create@16.5.4': + '@polkadot/types-create@16.5.6': dependencies: - '@polkadot/types-codec': 16.5.4 - '@polkadot/util': 14.0.1 + '@polkadot/types-codec': 16.5.6 + '@polkadot/util': 14.0.3 tslib: 2.8.1 - '@polkadot/types-support@16.5.4': + '@polkadot/types-support@16.5.6': dependencies: - '@polkadot/util': 14.0.1 + '@polkadot/util': 14.0.3 tslib: 2.8.1 - '@polkadot/types@16.5.4': + '@polkadot/types@16.5.6': dependencies: - '@polkadot/keyring': 14.0.1(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1) - '@polkadot/types-augment': 16.5.4 - '@polkadot/types-codec': 16.5.4 - '@polkadot/types-create': 16.5.4 - '@polkadot/util': 14.0.1 - '@polkadot/util-crypto': 14.0.1(@polkadot/util@14.0.1) + '@polkadot/keyring': 14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3) + '@polkadot/types-augment': 16.5.6 + '@polkadot/types-codec': 16.5.6 + '@polkadot/types-create': 16.5.6 + '@polkadot/util': 14.0.3 + '@polkadot/util-crypto': 14.0.3(@polkadot/util@14.0.3) rxjs: 7.8.2 tslib: 2.8.1 - '@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1)': + '@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3)': dependencies: '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 - '@polkadot/networks': 14.0.1 - '@polkadot/util': 14.0.1 - '@polkadot/wasm-crypto': 7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))) - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/x-bigint': 14.0.1 - '@polkadot/x-randomvalues': 14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)) + '@polkadot/networks': 14.0.3 + '@polkadot/util': 14.0.3 + '@polkadot/wasm-crypto': 7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3))) + '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/x-bigint': 14.0.3 + '@polkadot/x-randomvalues': 14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)) '@scure/base': 1.2.6 '@scure/sr25519': 0.2.0 tslib: 2.8.1 - '@polkadot/util@14.0.1': + '@polkadot/util@14.0.3': dependencies: - '@polkadot/x-bigint': 14.0.1 - '@polkadot/x-global': 14.0.1 - '@polkadot/x-textdecoder': 14.0.1 - '@polkadot/x-textencoder': 14.0.1 + '@polkadot/x-bigint': 14.0.3 + '@polkadot/x-global': 14.0.3 + '@polkadot/x-textdecoder': 14.0.3 + '@polkadot/x-textencoder': 14.0.3 '@types/bn.js': 5.2.0 - bn.js: 5.2.2 + bn.js: 5.2.3 tslib: 2.8.1 - '@polkadot/wasm-bridge@7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)))': + '@polkadot/wasm-bridge@7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)))': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/x-randomvalues': 14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)) + '@polkadot/util': 14.0.3 + '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/x-randomvalues': 14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)) tslib: 2.8.1 - '@polkadot/wasm-crypto-asmjs@7.5.4(@polkadot/util@14.0.1)': + '@polkadot/wasm-crypto-asmjs@7.5.4(@polkadot/util@14.0.3)': dependencies: - '@polkadot/util': 14.0.1 + '@polkadot/util': 14.0.3 tslib: 2.8.1 - '@polkadot/wasm-crypto-init@7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)))': + '@polkadot/wasm-crypto-init@7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)))': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/wasm-bridge': 7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))) - '@polkadot/wasm-crypto-asmjs': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/wasm-crypto-wasm': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/x-randomvalues': 14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)) + '@polkadot/util': 14.0.3 + '@polkadot/wasm-bridge': 7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3))) + '@polkadot/wasm-crypto-asmjs': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/wasm-crypto-wasm': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/x-randomvalues': 14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)) tslib: 2.8.1 - '@polkadot/wasm-crypto-wasm@7.5.4(@polkadot/util@14.0.1)': + '@polkadot/wasm-crypto-wasm@7.5.4(@polkadot/util@14.0.3)': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) + '@polkadot/util': 14.0.3 + '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) tslib: 2.8.1 - '@polkadot/wasm-crypto@7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)))': + '@polkadot/wasm-crypto@7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)))': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/wasm-bridge': 7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))) - '@polkadot/wasm-crypto-asmjs': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/wasm-crypto-init': 7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))) - '@polkadot/wasm-crypto-wasm': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/x-randomvalues': 14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)) + '@polkadot/util': 14.0.3 + '@polkadot/wasm-bridge': 7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3))) + '@polkadot/wasm-crypto-asmjs': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/wasm-crypto-init': 7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3))) + '@polkadot/wasm-crypto-wasm': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/x-randomvalues': 14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)) tslib: 2.8.1 - '@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)': + '@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)': dependencies: - '@polkadot/util': 14.0.1 + '@polkadot/util': 14.0.3 tslib: 2.8.1 - '@polkadot/x-bigint@14.0.1': + '@polkadot/x-bigint@14.0.3': dependencies: - '@polkadot/x-global': 14.0.1 + '@polkadot/x-global': 14.0.3 tslib: 2.8.1 '@polkadot/x-global@13.5.9': dependencies: tslib: 2.8.1 - '@polkadot/x-global@14.0.1': + '@polkadot/x-global@14.0.3': dependencies: tslib: 2.8.1 - '@polkadot/x-randomvalues@14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))': + '@polkadot/x-randomvalues@14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3))': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/x-global': 14.0.1 + '@polkadot/util': 14.0.3 + '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/x-global': 14.0.3 tslib: 2.8.1 - '@polkadot/x-textdecoder@14.0.1': + '@polkadot/x-textdecoder@14.0.3': dependencies: - '@polkadot/x-global': 14.0.1 + '@polkadot/x-global': 14.0.3 tslib: 2.8.1 - '@polkadot/x-textencoder@14.0.1': + '@polkadot/x-textencoder@14.0.3': dependencies: - '@polkadot/x-global': 14.0.1 + '@polkadot/x-global': 14.0.3 tslib: 2.8.1 '@polkadot/x-ws@13.5.9(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@polkadot/x-global': 13.5.9 tslib: 2.8.1 - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate - '@project-serum/sol-wallet-adapter@0.2.6(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@project-serum/sol-wallet-adapter@0.2.6(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) bs58: 4.0.1 eventemitter3: 4.0.7 @@ -13672,353 +12615,353 @@ snapshots: '@protobufjs/base64@1.1.2': {} - '@protobufjs/codegen@2.0.4': {} + '@protobufjs/codegen@2.0.5': {} '@protobufjs/eventemitter@1.1.0': {} '@protobufjs/fetch@1.1.0': dependencies: '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 1.1.0 + '@protobufjs/inquire': 1.1.1 '@protobufjs/float@1.0.2': {} - '@protobufjs/inquire@1.1.0': {} + '@protobufjs/inquire@1.1.1': {} '@protobufjs/path@1.1.2': {} '@protobufjs/pool@1.1.0': {} - '@protobufjs/utf8@1.1.0': {} + '@protobufjs/utf8@1.1.1': {} '@radix-ui/primitive@1.1.3': {} - '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-collection@1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-slot': 1.2.3(@types/react@19.0.10)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.6) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.0.10)(react@19.2.3)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.6)': dependencies: - react: 19.2.3 + react: 19.2.6 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - '@radix-ui/react-context@1.1.2(@types/react@19.0.10)(react@19.2.3)': + '@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.6)': dependencies: - react: 19.2.3 + react: 19.2.6 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-id': 1.1.1(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-slot': 1.2.3(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.0.10)(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.6) aria-hidden: 1.2.6 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - react-remove-scroll: 2.7.1(@types/react@19.0.10)(react@19.2.3) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + react-remove-scroll: 2.7.1(@types/react@19.2.14)(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-direction@1.1.1(@types/react@19.0.10)(react@19.2.3)': + '@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.2.6)': dependencies: - react: 19.2.3 + react: 19.2.6 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.0.10)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.6) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-id': 1.1.1(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.0.10)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.6) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-focus-guards@1.1.3(@types/react@19.0.10)(react@19.2.3)': + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.6)': dependencies: - react: 19.2.3 + react: 19.2.6 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.6) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-id@1.1.1(@types/react@19.0.10)(react@19.2.3)': + '@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.6)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.2.3) - react: 19.2.3 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) + react: 19.2.6 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - '@radix-ui/react-menu@2.1.16(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-direction': 1.1.1(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-id': 1.1.1(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-slot': 1.2.3(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.2.3) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.6) aria-hidden: 1.2.6 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - react-remove-scroll: 2.7.1(@types/react@19.0.10)(react@19.2.3) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + react-remove-scroll: 2.7.1(@types/react@19.2.14)(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) - - '@radix-ui/react-popper@1.2.8(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': - dependencies: - '@floating-ui/react-dom': 2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-use-rect': 1.1.1(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.0.10)(react@19.2.3) + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.6) '@radix-ui/rect': 1.1.1 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-portal@1.1.9(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-presence@1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@19.0.10)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.6) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-slot': 1.2.4(@types/react@19.0.10)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.6) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-direction': 1.1.1(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-id': 1.1.1(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.0.10)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.6) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-slot@1.2.3(@types/react@19.0.10)(react@19.2.3)': + '@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.6)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.2.3) - react: 19.2.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) + react: 19.2.6 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - '@radix-ui/react-slot@1.2.4(@types/react@19.0.10)(react@19.2.3)': + '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.6)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.2.3) - react: 19.2.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) + react: 19.2.6 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-id': 1.1.1(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-slot': 1.2.3(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.0.10)(react@19.2.3)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.6)': dependencies: - react: 19.2.3 + react: 19.2.6 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.0.10)(react@19.2.3)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.6)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.0.10)(react@19.2.3) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.2.3) - react: 19.2.3 + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) + react: 19.2.6 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.0.10)(react@19.2.3)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.6)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.2.3) - react: 19.2.3 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) + react: 19.2.6 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.0.10)(react@19.2.3)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.6)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.2.3) - react: 19.2.3 + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.6) + react: 19.2.6 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.0.10)(react@19.2.3)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.6)': dependencies: - react: 19.2.3 + react: 19.2.6 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - '@radix-ui/react-use-rect@1.1.1(@types/react@19.0.10)(react@19.2.3)': + '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.14)(react@19.2.6)': dependencies: '@radix-ui/rect': 1.1.1 - react: 19.2.3 + react: 19.2.6 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - '@radix-ui/react-use-size@1.1.1(@types/react@19.0.10)(react@19.2.3)': + '@radix-ui/react-use-size@1.1.1(@types/react@19.2.14)(react@19.2.6)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.2.3) - react: 19.2.3 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) + react: 19.2.6 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-visually-hidden@1.2.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-visually-hidden@1.2.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) '@radix-ui/rect@1.1.1': {} - '@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))': + '@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))': dependencies: merge-options: 3.0.4 - react-native: 0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10) + react-native: 0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10) optional: true '@react-native/assets-registry@0.81.1': {} - '@react-native/codegen@0.81.1(@babel/core@7.28.5)': + '@react-native/codegen@0.81.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/parser': 7.28.5 + '@babel/core': 7.29.0 + '@babel/parser': 7.29.3 glob: 7.2.3 hermes-parser: 0.29.1 invariant: 2.2.4 @@ -14030,10 +12973,10 @@ snapshots: '@react-native/dev-middleware': 0.81.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) debug: 4.4.3 invariant: 2.2.4 - metro: 0.83.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - metro-config: 0.83.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - metro-core: 0.83.3 - semver: 7.7.3 + metro: 0.83.7(bufferutil@4.0.9)(utf-8-validate@5.0.10) + metro-config: 0.83.7(bufferutil@4.0.9)(utf-8-validate@5.0.10) + metro-core: 0.83.7 + semver: 7.8.0 transitivePeerDependencies: - bufferutil - supports-color @@ -14052,7 +12995,7 @@ snapshots: invariant: 2.2.4 nullthrows: 1.1.1 open: 7.4.2 - serve-static: 1.16.2 + serve-static: 1.16.3 ws: 6.2.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil @@ -14065,64 +13008,64 @@ snapshots: '@react-native/normalize-colors@0.81.1': {} - '@react-native/virtualized-lists@0.81.1(@types/react@19.0.10)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3)': + '@react-native/virtualized-lists@0.81.1(@types/react@19.2.14)(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 - react: 19.2.3 - react-native: 0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10) + react: 19.2.6 + react-native: 0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10) optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - '@reown/appkit-common@1.7.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@reown/appkit-common@1.7.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@reown/appkit-common@1.7.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-common@1.7.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@reown/appkit-common@1.7.20(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@reown/appkit-common@1.7.20(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@reown/appkit-common@1.7.20(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-common@1.7.20(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@reown/appkit-common@1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@reown/appkit-common@1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) transitivePeerDependencies: - bufferutil - typescript @@ -14130,11 +13073,11 @@ snapshots: - zod optional: true - '@reown/appkit-common@1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-common@1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - bufferutil - typescript @@ -14142,13 +13085,13 @@ snapshots: - zod optional: true - '@reown/appkit-controllers@1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-controllers@1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-wallet': 1.7.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@walletconnect/universal-provider': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - valtio: 1.13.2(@types/react@19.0.10)(react@19.2.3) - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-wallet': 1.7.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) + '@walletconnect/universal-provider': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.6) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -14164,6 +13107,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -14176,13 +13120,13 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-controllers@1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-controllers@1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.20(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-wallet': 1.7.20(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@walletconnect/universal-provider': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - valtio: 2.1.5(@types/react@19.0.10)(react@19.2.3) - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.20(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-wallet': 1.7.20(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) + '@walletconnect/universal-provider': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + valtio: 2.1.5(@types/react@19.2.14)(react@19.2.6) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -14198,6 +13142,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -14210,13 +13155,13 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-controllers@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-controllers@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@walletconnect/universal-provider': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - valtio: 1.13.2(@types/react@19.0.10)(react@19.2.3) - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) + '@walletconnect/universal-provider': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.6) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -14232,6 +13177,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -14245,14 +13191,14 @@ snapshots: - zod optional: true - '@reown/appkit-pay@1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-pay@1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.20(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@2.1.5(@types/react@19.0.10)(react@19.2.3))(zod@3.25.76) + '@reown/appkit-common': 1.7.20(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-ui': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@2.1.5(@types/react@19.2.14)(react@19.2.6))(zod@3.25.76) lit: 3.3.0 - valtio: 2.1.5(@types/react@19.0.10)(react@19.2.3) + valtio: 2.1.5(@types/react@19.2.14)(react@19.2.6) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -14268,6 +13214,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -14280,14 +13227,14 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-pay@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-pay@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.2.3))(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-ui': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.6))(zod@3.25.76) lit: 3.3.0 - valtio: 1.13.2(@types/react@19.0.10)(react@19.2.3) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.6) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -14303,6 +13250,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -14329,13 +13277,13 @@ snapshots: buffer: 6.0.3 optional: true - '@reown/appkit-scaffold-ui@1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.2.3))(zod@3.25.76)': + '@reown/appkit-scaffold-ui@1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.6))(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.2.3))(zod@3.25.76) - '@reown/appkit-wallet': 1.7.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-common': 1.7.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-ui': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.6))(zod@3.25.76) + '@reown/appkit-wallet': 1.7.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) lit: 3.1.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -14352,6 +13300,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -14365,13 +13314,13 @@ snapshots: - valtio - zod - '@reown/appkit-scaffold-ui@1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@2.1.5(@types/react@19.0.10)(react@19.2.3))(zod@3.25.76)': + '@reown/appkit-scaffold-ui@1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@2.1.5(@types/react@19.2.14)(react@19.2.6))(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.20(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@2.1.5(@types/react@19.0.10)(react@19.2.3))(zod@3.25.76) - '@reown/appkit-wallet': 1.7.20(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-common': 1.7.20(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-ui': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@2.1.5(@types/react@19.2.14)(react@19.2.6))(zod@3.25.76) + '@reown/appkit-wallet': 1.7.20(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) lit: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -14388,6 +13337,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -14401,13 +13351,13 @@ snapshots: - valtio - zod - '@reown/appkit-scaffold-ui@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.2.3))(zod@3.25.76)': + '@reown/appkit-scaffold-ui@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.6))(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.2.3))(zod@3.25.76) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-ui': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.6))(zod@3.25.76) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) lit: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -14424,6 +13374,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -14438,11 +13389,11 @@ snapshots: - zod optional: true - '@reown/appkit-ui@1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-ui@1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-wallet': 1.7.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-common': 1.7.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-wallet': 1.7.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) lit: 3.1.0 qrcode: 1.5.3 transitivePeerDependencies: @@ -14460,6 +13411,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -14472,11 +13424,11 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-ui@1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-ui@1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.20(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-wallet': 1.7.20(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-common': 1.7.20(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-wallet': 1.7.20(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) lit: 3.3.0 qrcode: 1.5.3 transitivePeerDependencies: @@ -14494,6 +13446,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -14506,11 +13459,11 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-ui@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-ui@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) lit: 3.3.0 qrcode: 1.5.3 transitivePeerDependencies: @@ -14528,6 +13481,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -14541,16 +13495,16 @@ snapshots: - zod optional: true - '@reown/appkit-utils@1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.2.3))(zod@3.25.76)': + '@reown/appkit-utils@1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.6))(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-polyfills': 1.7.2 - '@reown/appkit-wallet': 1.7.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-wallet': 1.7.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) '@walletconnect/logger': 2.1.2 - '@walletconnect/universal-provider': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - valtio: 1.13.2(@types/react@19.0.10)(react@19.2.3) - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.6) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -14566,6 +13520,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -14578,17 +13533,17 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-utils@1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@2.1.5(@types/react@19.0.10)(react@19.2.3))(zod@3.25.76)': + '@reown/appkit-utils@1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@2.1.5(@types/react@19.2.14)(react@19.2.6))(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.20(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.20(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-polyfills': 1.7.20 - '@reown/appkit-wallet': 1.7.20(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-wallet': 1.7.20(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) '@wallet-standard/wallet': 1.1.0 '@walletconnect/logger': 2.1.2 - '@walletconnect/universal-provider': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - valtio: 2.1.5(@types/react@19.0.10)(react@19.2.3) - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + valtio: 2.1.5(@types/react@19.2.14)(react@19.2.6) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -14604,6 +13559,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -14616,16 +13572,16 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-utils@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.2.3))(zod@3.25.76)': + '@reown/appkit-utils@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.6))(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-polyfills': 1.7.8 - '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) '@walletconnect/logger': 2.1.2 - '@walletconnect/universal-provider': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - valtio: 1.13.2(@types/react@19.0.10)(react@19.2.3) - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.6) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -14641,6 +13597,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -14654,9 +13611,9 @@ snapshots: - zod optional: true - '@reown/appkit-wallet@1.7.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@reown/appkit-wallet@1.7.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)': dependencies: - '@reown/appkit-common': 1.7.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-common': 1.7.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@reown/appkit-polyfills': 1.7.2 '@walletconnect/logger': 2.1.2 zod: 3.22.4 @@ -14665,9 +13622,9 @@ snapshots: - typescript - utf-8-validate - '@reown/appkit-wallet@1.7.20(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@reown/appkit-wallet@1.7.20(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)': dependencies: - '@reown/appkit-common': 1.7.20(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-common': 1.7.20(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@reown/appkit-polyfills': 1.7.20 '@walletconnect/logger': 2.1.2 zod: 3.22.4 @@ -14676,9 +13633,9 @@ snapshots: - typescript - utf-8-validate - '@reown/appkit-wallet@1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@reown/appkit-wallet@1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@reown/appkit-polyfills': 1.7.8 '@walletconnect/logger': 2.1.2 zod: 3.22.4 @@ -14688,20 +13645,20 @@ snapshots: - utf-8-validate optional: true - '@reown/appkit@1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit@1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-polyfills': 1.7.2 - '@reown/appkit-scaffold-ui': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.2.3))(zod@3.25.76) - '@reown/appkit-ui': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.2.3))(zod@3.25.76) - '@reown/appkit-wallet': 1.7.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@walletconnect/types': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/universal-provider': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-scaffold-ui': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.6))(zod@3.25.76) + '@reown/appkit-ui': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.6))(zod@3.25.76) + '@reown/appkit-wallet': 1.7.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/universal-provider': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) bs58: 6.0.0 - valtio: 1.13.2(@types/react@19.0.10)(react@19.2.3) - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.6) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -14717,6 +13674,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -14729,23 +13687,23 @@ snapshots: - utf-8-validate - zod - '@reown/appkit@1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit@1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.20(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-pay': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.20(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-pay': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-polyfills': 1.7.20 - '@reown/appkit-scaffold-ui': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@2.1.5(@types/react@19.0.10)(react@19.2.3))(zod@3.25.76) - '@reown/appkit-ui': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@2.1.5(@types/react@19.0.10)(react@19.2.3))(zod@3.25.76) - '@reown/appkit-wallet': 1.7.20(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@walletconnect/universal-provider': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-scaffold-ui': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@2.1.5(@types/react@19.2.14)(react@19.2.6))(zod@3.25.76) + '@reown/appkit-ui': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@2.1.5(@types/react@19.2.14)(react@19.2.6))(zod@3.25.76) + '@reown/appkit-wallet': 1.7.20(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) + '@walletconnect/universal-provider': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) bs58: 6.0.0 semver: 7.7.2 - valtio: 2.1.5(@types/react@19.0.10)(react@19.2.3) - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + valtio: 2.1.5(@types/react@19.2.14)(react@19.2.6) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) optionalDependencies: - '@lit/react': 1.0.8(@types/react@19.0.10) + '@lit/react': 1.0.8(@types/react@19.2.14) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -14761,6 +13719,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -14773,21 +13732,21 @@ snapshots: - utf-8-validate - zod - '@reown/appkit@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-pay': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-pay': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-polyfills': 1.7.8 - '@reown/appkit-scaffold-ui': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.2.3))(zod@3.25.76) - '@reown/appkit-ui': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.2.3))(zod@3.25.76) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/universal-provider': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-scaffold-ui': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.6))(zod@3.25.76) + '@reown/appkit-ui': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.6))(zod@3.25.76) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/universal-provider': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) bs58: 6.0.0 - valtio: 1.13.2(@types/react@19.0.10)(react@19.2.3) - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.6) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -14803,6 +13762,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -14816,30 +13776,90 @@ snapshots: - zod optional: true - '@rolldown/pluginutils@1.0.0-beta.47': {} + '@rev-dep/darwin-arm64@2.13.2': + optional: true - '@rolldown/pluginutils@1.0.0-beta.53': {} + '@rev-dep/linux-x64@2.13.2': + optional: true - '@rollup/plugin-inject@5.0.5(rollup@4.53.3)': + '@rev-dep/win32-x64@2.13.2': + optional: true + + '@rolldown/binding-android-arm64@1.0.0': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.0': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.0': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.53.3) - estree-walker: 2.0.2 - magic-string: 0.30.21 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0': + optional: true + + '@rolldown/plugin-babel@0.2.3(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0)(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))': + dependencies: + '@babel/core': 7.29.0 + picomatch: 4.0.4 + rolldown: 1.0.0 optionalDependencies: - rollup: 4.53.3 + '@babel/runtime': 7.29.2 + vite: 8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) - '@rollup/plugin-replace@6.0.3(rollup@4.53.3)': + '@rolldown/pluginutils@1.0.0': {} + + '@rolldown/pluginutils@1.0.0-rc.7': {} + + '@rollup/plugin-inject@5.0.5(rollup@4.53.3)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.53.3) + '@rollup/pluginutils': 5.3.0(rollup@4.53.3) + estree-walker: 2.0.2 magic-string: 0.30.21 optionalDependencies: rollup: 4.53.3 - '@rollup/pluginutils@5.2.0(rollup@4.53.3)': + '@rollup/pluginutils@5.3.0(rollup@4.53.3)': dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 estree-walker: 2.0.2 - picomatch: 4.0.3 + picomatch: 4.0.4 optionalDependencies: rollup: 4.53.3 @@ -14909,9 +13929,9 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.53.3': optional: true - '@safe-global/safe-apps-provider@0.18.6(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@safe-global/safe-apps-provider@0.18.6(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - bufferutil @@ -14919,20 +13939,10 @@ snapshots: - utf-8-validate - zod - '@safe-global/safe-apps-sdk@8.1.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': - dependencies: - '@safe-global/safe-gateway-typescript-sdk': 3.23.1 - viem: 1.21.4(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - transitivePeerDependencies: - - bufferutil - - typescript - - utf-8-validate - - zod - - '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.22.9 - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - bufferutil - typescript @@ -14941,27 +13951,13 @@ snapshots: '@safe-global/safe-gateway-typescript-sdk@3.22.9': {} - '@safe-global/safe-gateway-typescript-sdk@3.23.1': {} - '@scure/base@1.1.9': {} '@scure/base@1.2.1': {} '@scure/base@1.2.6': {} - '@scure/base@2.0.0': {} - - '@scure/bip32@1.3.0': - dependencies: - '@noble/curves': 1.0.0 - '@noble/hashes': 1.3.0 - '@scure/base': 1.1.9 - - '@scure/bip32@1.3.2': - dependencies: - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/base': 1.1.9 + '@scure/base@2.2.0': {} '@scure/bip32@1.4.0': dependencies: @@ -14977,20 +13973,10 @@ snapshots: '@scure/bip32@1.7.0': dependencies: - '@noble/curves': 1.9.1 + '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 - '@scure/bip39@1.2.0': - dependencies: - '@noble/hashes': 1.3.0 - '@scure/base': 1.1.9 - - '@scure/bip39@1.2.1': - dependencies: - '@noble/hashes': 1.3.2 - '@scure/base': 1.1.9 - '@scure/bip39@1.3.0': dependencies: '@noble/hashes': 1.4.0 @@ -15016,12 +14002,20 @@ snapshots: '@noble/curves': 1.7.0 '@noble/hashes': 1.6.0 + '@simple-libs/child-process-utils@1.0.2': + dependencies: + '@simple-libs/stream-utils': 1.2.0 + + '@simple-libs/stream-utils@1.2.0': {} + '@simplewebauthn/browser@13.2.2': {} - '@sinclair/typebox@0.27.8': {} + '@sinclair/typebox@0.27.10': {} '@sinclair/typebox@0.33.22': {} + '@sinclair/typebox@0.34.49': {} + '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 @@ -15032,10 +14026,10 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@solana-mobile/mobile-wallet-adapter-protocol-web3js@2.2.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3)': + '@solana-mobile/mobile-wallet-adapter-protocol-web3js@2.2.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6)': dependencies: - '@solana-mobile/mobile-wallet-adapter-protocol': 2.2.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana-mobile/mobile-wallet-adapter-protocol': 2.2.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) bs58: 5.0.0 js-base64: 3.7.8 transitivePeerDependencies: @@ -15043,36 +14037,36 @@ snapshots: - react - react-native - '@solana-mobile/mobile-wallet-adapter-protocol@2.2.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3)': + '@solana-mobile/mobile-wallet-adapter-protocol@2.2.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6)': dependencies: - '@solana/wallet-standard': 1.1.4(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react@19.2.3) + '@solana/wallet-standard': 1.1.4(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react@19.2.6) '@solana/wallet-standard-util': 1.1.2 '@wallet-standard/core': 1.1.1 js-base64: 3.7.8 - react-native: 0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10) + react-native: 0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10) transitivePeerDependencies: - '@solana/wallet-adapter-base' - '@solana/web3.js' - bs58 - react - '@solana-mobile/wallet-adapter-mobile@2.2.3(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3)': + '@solana-mobile/wallet-adapter-mobile@2.2.3(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6)': dependencies: - '@solana-mobile/mobile-wallet-adapter-protocol-web3js': 2.2.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3) - '@solana-mobile/wallet-standard-mobile': 0.4.1(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3) - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) + '@solana-mobile/mobile-wallet-adapter-protocol-web3js': 2.2.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6) + '@solana-mobile/wallet-standard-mobile': 0.4.1(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) '@solana/wallet-standard-features': 1.3.0 - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) js-base64: 3.7.8 optionalDependencies: - '@react-native-async-storage/async-storage': 1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)) + '@react-native-async-storage/async-storage': 1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)) transitivePeerDependencies: - react - react-native - '@solana-mobile/wallet-standard-mobile@0.4.1(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3)': + '@solana-mobile/wallet-standard-mobile@0.4.1(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6)': dependencies: - '@solana-mobile/mobile-wallet-adapter-protocol': 2.2.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3) + '@solana-mobile/mobile-wallet-adapter-protocol': 2.2.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6) '@solana/wallet-standard-chains': 1.1.1 '@solana/wallet-standard-features': 1.3.0 '@wallet-standard/base': 1.1.0 @@ -15086,853 +14080,575 @@ snapshots: - react - react-native - '@solana-program/compute-budget@0.8.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))': - dependencies: - '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - - '@solana-program/stake@0.2.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))': + '@solana-program/compute-budget@0.8.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))': dependencies: - '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana-program/system@0.7.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))': + '@solana-program/stake@0.2.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))': dependencies: - '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana-program/system@0.8.1(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))': + '@solana-program/system@0.7.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))': dependencies: - '@solana/kit': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - optional: true - - '@solana-program/token-2022@0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))': - dependencies: - '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/sysvars': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana-program/token@0.5.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))': + '@solana-program/token-2022@0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3))': dependencies: - '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/sysvars': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) - '@solana-program/token@0.6.0(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))': + '@solana-program/token@0.5.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))': dependencies: - '@solana/kit': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - optional: true + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/accounts@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/accounts@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/codecs-core': 2.3.0(typescript@5.9.3) - '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 2.3.0(typescript@5.9.3) - '@solana/rpc-spec': 2.3.0(typescript@5.9.3) - '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/codecs-core': 2.3.0(typescript@6.0.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/errors': 2.3.0(typescript@6.0.3) + '@solana/rpc-spec': 2.3.0(typescript@6.0.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/accounts@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/accounts@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/addresses': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/codecs-core': 3.0.3(typescript@5.9.3) - '@solana/codecs-strings': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/rpc-spec': 3.0.3(typescript@5.9.3) - '@solana/rpc-types': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 + '@solana/addresses': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/codecs-core': 3.0.3(typescript@6.0.3) + '@solana/codecs-strings': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/errors': 3.0.3(typescript@6.0.3) + '@solana/rpc-spec': 3.0.3(typescript@6.0.3) + '@solana/rpc-types': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/addresses@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/addresses@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/assertions': 2.3.0(typescript@5.9.3) - '@solana/codecs-core': 2.3.0(typescript@5.9.3) - '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 2.3.0(typescript@5.9.3) - '@solana/nominal-types': 2.3.0(typescript@5.9.3) - typescript: 5.9.3 + '@solana/assertions': 2.3.0(typescript@6.0.3) + '@solana/codecs-core': 2.3.0(typescript@6.0.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/errors': 2.3.0(typescript@6.0.3) + '@solana/nominal-types': 2.3.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/addresses@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/addresses@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/assertions': 3.0.3(typescript@5.9.3) - '@solana/codecs-core': 3.0.3(typescript@5.9.3) - '@solana/codecs-strings': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/nominal-types': 3.0.3(typescript@5.9.3) - typescript: 5.9.3 + '@solana/assertions': 3.0.3(typescript@6.0.3) + '@solana/codecs-core': 3.0.3(typescript@6.0.3) + '@solana/codecs-strings': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/errors': 3.0.3(typescript@6.0.3) + '@solana/nominal-types': 3.0.3(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/assertions@2.3.0(typescript@5.9.3)': + '@solana/assertions@2.3.0(typescript@6.0.3)': dependencies: - '@solana/errors': 2.3.0(typescript@5.9.3) - typescript: 5.9.3 + '@solana/errors': 2.3.0(typescript@6.0.3) + typescript: 6.0.3 - '@solana/assertions@3.0.3(typescript@5.9.3)': + '@solana/assertions@3.0.3(typescript@6.0.3)': dependencies: - '@solana/errors': 3.0.3(typescript@5.9.3) - typescript: 5.9.3 + '@solana/errors': 3.0.3(typescript@6.0.3) + typescript: 6.0.3 '@solana/buffer-layout@4.0.1': dependencies: buffer: 6.0.3 - '@solana/codecs-core@2.3.0(typescript@5.9.3)': + '@solana/codecs-core@2.3.0(typescript@6.0.3)': dependencies: - '@solana/errors': 2.3.0(typescript@5.9.3) - typescript: 5.9.3 + '@solana/errors': 2.3.0(typescript@6.0.3) + typescript: 6.0.3 - '@solana/codecs-core@3.0.3(typescript@5.9.3)': + '@solana/codecs-core@3.0.3(typescript@6.0.3)': dependencies: - '@solana/errors': 3.0.3(typescript@5.9.3) - typescript: 5.9.3 + '@solana/errors': 3.0.3(typescript@6.0.3) + typescript: 6.0.3 - '@solana/codecs-data-structures@2.3.0(typescript@5.9.3)': + '@solana/codecs-data-structures@2.3.0(typescript@6.0.3)': dependencies: - '@solana/codecs-core': 2.3.0(typescript@5.9.3) - '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) - '@solana/errors': 2.3.0(typescript@5.9.3) - typescript: 5.9.3 + '@solana/codecs-core': 2.3.0(typescript@6.0.3) + '@solana/codecs-numbers': 2.3.0(typescript@6.0.3) + '@solana/errors': 2.3.0(typescript@6.0.3) + typescript: 6.0.3 - '@solana/codecs-data-structures@3.0.3(typescript@5.9.3)': + '@solana/codecs-data-structures@3.0.3(typescript@6.0.3)': dependencies: - '@solana/codecs-core': 3.0.3(typescript@5.9.3) - '@solana/codecs-numbers': 3.0.3(typescript@5.9.3) - '@solana/errors': 3.0.3(typescript@5.9.3) - typescript: 5.9.3 + '@solana/codecs-core': 3.0.3(typescript@6.0.3) + '@solana/codecs-numbers': 3.0.3(typescript@6.0.3) + '@solana/errors': 3.0.3(typescript@6.0.3) + typescript: 6.0.3 - '@solana/codecs-numbers@2.3.0(typescript@5.9.3)': + '@solana/codecs-numbers@2.3.0(typescript@6.0.3)': dependencies: - '@solana/codecs-core': 2.3.0(typescript@5.9.3) - '@solana/errors': 2.3.0(typescript@5.9.3) - typescript: 5.9.3 + '@solana/codecs-core': 2.3.0(typescript@6.0.3) + '@solana/errors': 2.3.0(typescript@6.0.3) + typescript: 6.0.3 - '@solana/codecs-numbers@3.0.3(typescript@5.9.3)': + '@solana/codecs-numbers@3.0.3(typescript@6.0.3)': dependencies: - '@solana/codecs-core': 3.0.3(typescript@5.9.3) - '@solana/errors': 3.0.3(typescript@5.9.3) - typescript: 5.9.3 + '@solana/codecs-core': 3.0.3(typescript@6.0.3) + '@solana/errors': 3.0.3(typescript@6.0.3) + typescript: 6.0.3 - '@solana/codecs-strings@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/codecs-strings@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/codecs-core': 2.3.0(typescript@5.9.3) - '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) - '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/codecs-core': 2.3.0(typescript@6.0.3) + '@solana/codecs-numbers': 2.3.0(typescript@6.0.3) + '@solana/errors': 2.3.0(typescript@6.0.3) fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 5.9.3 + typescript: 6.0.3 - '@solana/codecs-strings@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/codecs-strings@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/codecs-core': 3.0.3(typescript@5.9.3) - '@solana/codecs-numbers': 3.0.3(typescript@5.9.3) - '@solana/errors': 3.0.3(typescript@5.9.3) + '@solana/codecs-core': 3.0.3(typescript@6.0.3) + '@solana/codecs-numbers': 3.0.3(typescript@6.0.3) + '@solana/errors': 3.0.3(typescript@6.0.3) fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 5.9.3 + typescript: 6.0.3 - '@solana/codecs@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/codecs@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/codecs-core': 2.3.0(typescript@5.9.3) - '@solana/codecs-data-structures': 2.3.0(typescript@5.9.3) - '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) - '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/options': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 + '@solana/codecs-core': 2.3.0(typescript@6.0.3) + '@solana/codecs-data-structures': 2.3.0(typescript@6.0.3) + '@solana/codecs-numbers': 2.3.0(typescript@6.0.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/options': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/codecs@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/codecs@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/codecs-core': 3.0.3(typescript@5.9.3) - '@solana/codecs-data-structures': 3.0.3(typescript@5.9.3) - '@solana/codecs-numbers': 3.0.3(typescript@5.9.3) - '@solana/codecs-strings': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/options': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 + '@solana/codecs-core': 3.0.3(typescript@6.0.3) + '@solana/codecs-data-structures': 3.0.3(typescript@6.0.3) + '@solana/codecs-numbers': 3.0.3(typescript@6.0.3) + '@solana/codecs-strings': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/options': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/errors@2.3.0(typescript@5.9.3)': + '@solana/errors@2.3.0(typescript@6.0.3)': dependencies: - chalk: 5.4.1 + chalk: 5.6.2 commander: 14.0.0 - typescript: 5.9.3 + typescript: 6.0.3 - '@solana/errors@3.0.3(typescript@5.9.3)': + '@solana/errors@3.0.3(typescript@6.0.3)': dependencies: chalk: 5.6.2 commander: 14.0.0 - typescript: 5.9.3 + typescript: 6.0.3 - '@solana/fast-stable-stringify@2.3.0(typescript@5.9.3)': + '@solana/fast-stable-stringify@2.3.0(typescript@6.0.3)': dependencies: - typescript: 5.9.3 + typescript: 6.0.3 - '@solana/fast-stable-stringify@3.0.3(typescript@5.9.3)': + '@solana/functional@2.3.0(typescript@6.0.3)': dependencies: - typescript: 5.9.3 - optional: true + typescript: 6.0.3 - '@solana/functional@2.3.0(typescript@5.9.3)': + '@solana/instructions@2.3.0(typescript@6.0.3)': dependencies: - typescript: 5.9.3 + '@solana/codecs-core': 2.3.0(typescript@6.0.3) + '@solana/errors': 2.3.0(typescript@6.0.3) + typescript: 6.0.3 - '@solana/functional@3.0.3(typescript@5.9.3)': + '@solana/keys@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - typescript: 5.9.3 - optional: true + '@solana/assertions': 2.3.0(typescript@6.0.3) + '@solana/codecs-core': 2.3.0(typescript@6.0.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/errors': 2.3.0(typescript@6.0.3) + '@solana/nominal-types': 2.3.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder - '@solana/instruction-plans@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': - dependencies: - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/instructions': 3.0.3(typescript@5.9.3) - '@solana/promises': 3.0.3(typescript@5.9.3) - '@solana/transaction-messages': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transactions': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 + '@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@solana/accounts': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/codecs': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/errors': 2.3.0(typescript@6.0.3) + '@solana/functional': 2.3.0(typescript@6.0.3) + '@solana/instructions': 2.3.0(typescript@6.0.3) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/programs': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/rpc': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/rpc-parsed-types': 2.3.0(typescript@6.0.3) + '@solana/rpc-spec-types': 2.3.0(typescript@6.0.3) + '@solana/rpc-subscriptions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/signers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/sysvars': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/transaction-confirmation': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - optional: true + - ws - '@solana/instructions@2.3.0(typescript@5.9.3)': + '@solana/nominal-types@2.3.0(typescript@6.0.3)': dependencies: - '@solana/codecs-core': 2.3.0(typescript@5.9.3) - '@solana/errors': 2.3.0(typescript@5.9.3) - typescript: 5.9.3 + typescript: 6.0.3 - '@solana/instructions@3.0.3(typescript@5.9.3)': + '@solana/nominal-types@3.0.3(typescript@6.0.3)': dependencies: - '@solana/codecs-core': 3.0.3(typescript@5.9.3) - '@solana/errors': 3.0.3(typescript@5.9.3) - typescript: 5.9.3 - optional: true + typescript: 6.0.3 - '@solana/keys@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/options@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/assertions': 2.3.0(typescript@5.9.3) - '@solana/codecs-core': 2.3.0(typescript@5.9.3) - '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 2.3.0(typescript@5.9.3) - '@solana/nominal-types': 2.3.0(typescript@5.9.3) - typescript: 5.9.3 + '@solana/codecs-core': 2.3.0(typescript@6.0.3) + '@solana/codecs-data-structures': 2.3.0(typescript@6.0.3) + '@solana/codecs-numbers': 2.3.0(typescript@6.0.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/errors': 2.3.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/keys@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/options@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/assertions': 3.0.3(typescript@5.9.3) - '@solana/codecs-core': 3.0.3(typescript@5.9.3) - '@solana/codecs-strings': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/nominal-types': 3.0.3(typescript@5.9.3) - typescript: 5.9.3 + '@solana/codecs-core': 3.0.3(typescript@6.0.3) + '@solana/codecs-data-structures': 3.0.3(typescript@6.0.3) + '@solana/codecs-numbers': 3.0.3(typescript@6.0.3) + '@solana/codecs-strings': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/errors': 3.0.3(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - optional: true - '@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': - dependencies: - '@solana/accounts': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/codecs': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 2.3.0(typescript@5.9.3) - '@solana/functional': 2.3.0(typescript@5.9.3) - '@solana/instructions': 2.3.0(typescript@5.9.3) - '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/programs': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-parsed-types': 2.3.0(typescript@5.9.3) - '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) - '@solana/rpc-subscriptions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/signers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/sysvars': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transaction-confirmation': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 + '@solana/programs@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/errors': 2.3.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - - ws - '@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': - dependencies: - '@solana/accounts': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/addresses': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/codecs': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/functional': 3.0.3(typescript@5.9.3) - '@solana/instruction-plans': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/instructions': 3.0.3(typescript@5.9.3) - '@solana/keys': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/programs': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-parsed-types': 3.0.3(typescript@5.9.3) - '@solana/rpc-spec-types': 3.0.3(typescript@5.9.3) - '@solana/rpc-subscriptions': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/rpc-types': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/signers': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/sysvars': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transaction-confirmation': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/transaction-messages': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transactions': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - ws - optional: true - - '@solana/nominal-types@2.3.0(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - - '@solana/nominal-types@3.0.3(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - - '@solana/options@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 2.3.0(typescript@5.9.3) - '@solana/codecs-data-structures': 2.3.0(typescript@5.9.3) - '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) - '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 2.3.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/options@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': - dependencies: - '@solana/codecs-core': 3.0.3(typescript@5.9.3) - '@solana/codecs-data-structures': 3.0.3(typescript@5.9.3) - '@solana/codecs-numbers': 3.0.3(typescript@5.9.3) - '@solana/codecs-strings': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 3.0.3(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/programs@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': - dependencies: - '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 2.3.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/programs@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': - dependencies: - '@solana/addresses': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 3.0.3(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - optional: true - - '@solana/promises@2.3.0(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - - '@solana/promises@3.0.3(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - optional: true - - '@solana/rpc-api@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': - dependencies: - '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/codecs-core': 2.3.0(typescript@5.9.3) - '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 2.3.0(typescript@5.9.3) - '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-parsed-types': 2.3.0(typescript@5.9.3) - '@solana/rpc-spec': 2.3.0(typescript@5.9.3) - '@solana/rpc-transformers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/rpc-api@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': - dependencies: - '@solana/addresses': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/codecs-core': 3.0.3(typescript@5.9.3) - '@solana/codecs-strings': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/keys': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-parsed-types': 3.0.3(typescript@5.9.3) - '@solana/rpc-spec': 3.0.3(typescript@5.9.3) - '@solana/rpc-transformers': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-types': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transaction-messages': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transactions': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - optional: true - - '@solana/rpc-parsed-types@2.3.0(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - - '@solana/rpc-parsed-types@3.0.3(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - optional: true - - '@solana/rpc-spec-types@2.3.0(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - - '@solana/rpc-spec-types@3.0.3(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - - '@solana/rpc-spec@2.3.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 2.3.0(typescript@5.9.3) - '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) - typescript: 5.9.3 - - '@solana/rpc-spec@3.0.3(typescript@5.9.3)': - dependencies: - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/rpc-spec-types': 3.0.3(typescript@5.9.3) - typescript: 5.9.3 - - '@solana/rpc-subscriptions-api@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': - dependencies: - '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 2.3.0(typescript@5.9.3) - '@solana/rpc-transformers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 + '@solana/promises@2.3.0(typescript@6.0.3)': + dependencies: + typescript: 6.0.3 + + '@solana/rpc-api@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/codecs-core': 2.3.0(typescript@6.0.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/errors': 2.3.0(typescript@6.0.3) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/rpc-parsed-types': 2.3.0(typescript@6.0.3) + '@solana/rpc-spec': 2.3.0(typescript@6.0.3) + '@solana/rpc-transformers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/rpc-subscriptions-api@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/rpc-parsed-types@2.3.0(typescript@6.0.3)': dependencies: - '@solana/addresses': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/keys': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 3.0.3(typescript@5.9.3) - '@solana/rpc-transformers': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-types': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transaction-messages': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transactions': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - optional: true + typescript: 6.0.3 - '@solana/rpc-subscriptions-channel-websocket@2.3.0(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@solana/rpc-spec-types@2.3.0(typescript@6.0.3)': dependencies: - '@solana/errors': 2.3.0(typescript@5.9.3) - '@solana/functional': 2.3.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 2.3.0(typescript@5.9.3) - '@solana/subscribable': 2.3.0(typescript@5.9.3) - typescript: 5.9.3 - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + typescript: 6.0.3 - '@solana/rpc-subscriptions-channel-websocket@3.0.3(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@solana/rpc-spec-types@3.0.3(typescript@6.0.3)': dependencies: - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/functional': 3.0.3(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 3.0.3(typescript@5.9.3) - '@solana/subscribable': 3.0.3(typescript@5.9.3) - typescript: 5.9.3 - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - optional: true + typescript: 6.0.3 - '@solana/rpc-subscriptions-spec@2.3.0(typescript@5.9.3)': + '@solana/rpc-spec@2.3.0(typescript@6.0.3)': dependencies: - '@solana/errors': 2.3.0(typescript@5.9.3) - '@solana/promises': 2.3.0(typescript@5.9.3) - '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) - '@solana/subscribable': 2.3.0(typescript@5.9.3) - typescript: 5.9.3 + '@solana/errors': 2.3.0(typescript@6.0.3) + '@solana/rpc-spec-types': 2.3.0(typescript@6.0.3) + typescript: 6.0.3 - '@solana/rpc-subscriptions-spec@3.0.3(typescript@5.9.3)': + '@solana/rpc-spec@3.0.3(typescript@6.0.3)': dependencies: - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/promises': 3.0.3(typescript@5.9.3) - '@solana/rpc-spec-types': 3.0.3(typescript@5.9.3) - '@solana/subscribable': 3.0.3(typescript@5.9.3) - typescript: 5.9.3 - optional: true + '@solana/errors': 3.0.3(typescript@6.0.3) + '@solana/rpc-spec-types': 3.0.3(typescript@6.0.3) + typescript: 6.0.3 - '@solana/rpc-subscriptions@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@solana/rpc-subscriptions-api@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/errors': 2.3.0(typescript@5.9.3) - '@solana/fast-stable-stringify': 2.3.0(typescript@5.9.3) - '@solana/functional': 2.3.0(typescript@5.9.3) - '@solana/promises': 2.3.0(typescript@5.9.3) - '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) - '@solana/rpc-subscriptions-api': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-subscriptions-channel-websocket': 2.3.0(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/rpc-subscriptions-spec': 2.3.0(typescript@5.9.3) - '@solana/rpc-transformers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/subscribable': 2.3.0(typescript@5.9.3) - typescript: 5.9.3 + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/rpc-subscriptions-spec': 2.3.0(typescript@6.0.3) + '@solana/rpc-transformers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - - ws - '@solana/rpc-subscriptions@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': - dependencies: - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/fast-stable-stringify': 3.0.3(typescript@5.9.3) - '@solana/functional': 3.0.3(typescript@5.9.3) - '@solana/promises': 3.0.3(typescript@5.9.3) - '@solana/rpc-spec-types': 3.0.3(typescript@5.9.3) - '@solana/rpc-subscriptions-api': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-subscriptions-channel-websocket': 3.0.3(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/rpc-subscriptions-spec': 3.0.3(typescript@5.9.3) - '@solana/rpc-transformers': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-types': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/subscribable': 3.0.3(typescript@5.9.3) - typescript: 5.9.3 + '@solana/rpc-subscriptions-channel-websocket@2.3.0(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@solana/errors': 2.3.0(typescript@6.0.3) + '@solana/functional': 2.3.0(typescript@6.0.3) + '@solana/rpc-subscriptions-spec': 2.3.0(typescript@6.0.3) + '@solana/subscribable': 2.3.0(typescript@6.0.3) + typescript: 6.0.3 + ws: 8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + + '@solana/rpc-subscriptions-spec@2.3.0(typescript@6.0.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@6.0.3) + '@solana/promises': 2.3.0(typescript@6.0.3) + '@solana/rpc-spec-types': 2.3.0(typescript@6.0.3) + '@solana/subscribable': 2.3.0(typescript@6.0.3) + typescript: 6.0.3 + + '@solana/rpc-subscriptions@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@solana/errors': 2.3.0(typescript@6.0.3) + '@solana/fast-stable-stringify': 2.3.0(typescript@6.0.3) + '@solana/functional': 2.3.0(typescript@6.0.3) + '@solana/promises': 2.3.0(typescript@6.0.3) + '@solana/rpc-spec-types': 2.3.0(typescript@6.0.3) + '@solana/rpc-subscriptions-api': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/rpc-subscriptions-channel-websocket': 2.3.0(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/rpc-subscriptions-spec': 2.3.0(typescript@6.0.3) + '@solana/rpc-transformers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/subscribable': 2.3.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - ws - optional: true - '@solana/rpc-transformers@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/rpc-transformers@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/errors': 2.3.0(typescript@5.9.3) - '@solana/functional': 2.3.0(typescript@5.9.3) - '@solana/nominal-types': 2.3.0(typescript@5.9.3) - '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) - '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 + '@solana/errors': 2.3.0(typescript@6.0.3) + '@solana/functional': 2.3.0(typescript@6.0.3) + '@solana/nominal-types': 2.3.0(typescript@6.0.3) + '@solana/rpc-spec-types': 2.3.0(typescript@6.0.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/rpc-transformers@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/rpc-transport-http@2.3.0(typescript@6.0.3)': dependencies: - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/functional': 3.0.3(typescript@5.9.3) - '@solana/nominal-types': 3.0.3(typescript@5.9.3) - '@solana/rpc-spec-types': 3.0.3(typescript@5.9.3) - '@solana/rpc-types': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - optional: true - - '@solana/rpc-transport-http@2.3.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 2.3.0(typescript@5.9.3) - '@solana/rpc-spec': 2.3.0(typescript@5.9.3) - '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) - typescript: 5.9.3 - undici-types: 7.16.0 - - '@solana/rpc-transport-http@3.0.3(typescript@5.9.3)': - dependencies: - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/rpc-spec': 3.0.3(typescript@5.9.3) - '@solana/rpc-spec-types': 3.0.3(typescript@5.9.3) - typescript: 5.9.3 - undici-types: 7.16.0 - optional: true + '@solana/errors': 2.3.0(typescript@6.0.3) + '@solana/rpc-spec': 2.3.0(typescript@6.0.3) + '@solana/rpc-spec-types': 2.3.0(typescript@6.0.3) + typescript: 6.0.3 + undici-types: 7.25.0 - '@solana/rpc-types@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/rpc-types@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/codecs-core': 2.3.0(typescript@5.9.3) - '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) - '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 2.3.0(typescript@5.9.3) - '@solana/nominal-types': 2.3.0(typescript@5.9.3) - typescript: 5.9.3 + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/codecs-core': 2.3.0(typescript@6.0.3) + '@solana/codecs-numbers': 2.3.0(typescript@6.0.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/errors': 2.3.0(typescript@6.0.3) + '@solana/nominal-types': 2.3.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/rpc-types@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/rpc-types@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/addresses': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/codecs-core': 3.0.3(typescript@5.9.3) - '@solana/codecs-numbers': 3.0.3(typescript@5.9.3) - '@solana/codecs-strings': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/nominal-types': 3.0.3(typescript@5.9.3) - typescript: 5.9.3 + '@solana/addresses': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/codecs-core': 3.0.3(typescript@6.0.3) + '@solana/codecs-numbers': 3.0.3(typescript@6.0.3) + '@solana/codecs-strings': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/errors': 3.0.3(typescript@6.0.3) + '@solana/nominal-types': 3.0.3(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/rpc@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/rpc@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/errors': 2.3.0(typescript@5.9.3) - '@solana/fast-stable-stringify': 2.3.0(typescript@5.9.3) - '@solana/functional': 2.3.0(typescript@5.9.3) - '@solana/rpc-api': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-spec': 2.3.0(typescript@5.9.3) - '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) - '@solana/rpc-transformers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-transport-http': 2.3.0(typescript@5.9.3) - '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 + '@solana/errors': 2.3.0(typescript@6.0.3) + '@solana/fast-stable-stringify': 2.3.0(typescript@6.0.3) + '@solana/functional': 2.3.0(typescript@6.0.3) + '@solana/rpc-api': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/rpc-spec': 2.3.0(typescript@6.0.3) + '@solana/rpc-spec-types': 2.3.0(typescript@6.0.3) + '@solana/rpc-transformers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/rpc-transport-http': 2.3.0(typescript@6.0.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/rpc@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/signers@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/fast-stable-stringify': 3.0.3(typescript@5.9.3) - '@solana/functional': 3.0.3(typescript@5.9.3) - '@solana/rpc-api': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-spec': 3.0.3(typescript@5.9.3) - '@solana/rpc-spec-types': 3.0.3(typescript@5.9.3) - '@solana/rpc-transformers': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-transport-http': 3.0.3(typescript@5.9.3) - '@solana/rpc-types': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/codecs-core': 2.3.0(typescript@6.0.3) + '@solana/errors': 2.3.0(typescript@6.0.3) + '@solana/instructions': 2.3.0(typescript@6.0.3) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/nominal-types': 2.3.0(typescript@6.0.3) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - optional: true - '@solana/signers@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/subscribable@2.3.0(typescript@6.0.3)': dependencies: - '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/codecs-core': 2.3.0(typescript@5.9.3) - '@solana/errors': 2.3.0(typescript@5.9.3) - '@solana/instructions': 2.3.0(typescript@5.9.3) - '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/nominal-types': 2.3.0(typescript@5.9.3) - '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder + '@solana/errors': 2.3.0(typescript@6.0.3) + typescript: 6.0.3 - '@solana/signers@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/sysvars@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/addresses': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/codecs-core': 3.0.3(typescript@5.9.3) - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/instructions': 3.0.3(typescript@5.9.3) - '@solana/keys': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/nominal-types': 3.0.3(typescript@5.9.3) - '@solana/transaction-messages': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transactions': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 + '@solana/accounts': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/codecs': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/errors': 2.3.0(typescript@6.0.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - optional: true - '@solana/subscribable@2.3.0(typescript@5.9.3)': + '@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/errors': 2.3.0(typescript@5.9.3) - typescript: 5.9.3 - - '@solana/subscribable@3.0.3(typescript@5.9.3)': - dependencies: - '@solana/errors': 3.0.3(typescript@5.9.3) - typescript: 5.9.3 - optional: true - - '@solana/sysvars@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': - dependencies: - '@solana/accounts': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/codecs': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 2.3.0(typescript@5.9.3) - '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': - dependencies: - '@solana/accounts': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/codecs': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/rpc-types': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/transaction-confirmation@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': - dependencies: - '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 2.3.0(typescript@5.9.3) - '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/promises': 2.3.0(typescript@5.9.3) - '@solana/rpc': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-subscriptions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 + '@solana/accounts': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/codecs': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/errors': 3.0.3(typescript@6.0.3) + '@solana/rpc-types': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - - ws - '@solana/transaction-confirmation@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@solana/transaction-confirmation@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@solana/addresses': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/codecs-strings': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/keys': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/promises': 3.0.3(typescript@5.9.3) - '@solana/rpc': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/rpc-subscriptions': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/rpc-types': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transaction-messages': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transactions': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/errors': 2.3.0(typescript@6.0.3) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/promises': 2.3.0(typescript@6.0.3) + '@solana/rpc': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/rpc-subscriptions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - ws - optional: true - - '@solana/transaction-messages@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': - dependencies: - '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/codecs-core': 2.3.0(typescript@5.9.3) - '@solana/codecs-data-structures': 2.3.0(typescript@5.9.3) - '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) - '@solana/errors': 2.3.0(typescript@5.9.3) - '@solana/functional': 2.3.0(typescript@5.9.3) - '@solana/instructions': 2.3.0(typescript@5.9.3) - '@solana/nominal-types': 2.3.0(typescript@5.9.3) - '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - '@solana/transaction-messages@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + '@solana/transaction-messages@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': dependencies: - '@solana/addresses': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/codecs-core': 3.0.3(typescript@5.9.3) - '@solana/codecs-data-structures': 3.0.3(typescript@5.9.3) - '@solana/codecs-numbers': 3.0.3(typescript@5.9.3) - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/functional': 3.0.3(typescript@5.9.3) - '@solana/instructions': 3.0.3(typescript@5.9.3) - '@solana/nominal-types': 3.0.3(typescript@5.9.3) - '@solana/rpc-types': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - optional: true - - '@solana/transactions@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': - dependencies: - '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/codecs-core': 2.3.0(typescript@5.9.3) - '@solana/codecs-data-structures': 2.3.0(typescript@5.9.3) - '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) - '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 2.3.0(typescript@5.9.3) - '@solana/functional': 2.3.0(typescript@5.9.3) - '@solana/instructions': 2.3.0(typescript@5.9.3) - '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/nominal-types': 2.3.0(typescript@5.9.3) - '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/codecs-core': 2.3.0(typescript@6.0.3) + '@solana/codecs-data-structures': 2.3.0(typescript@6.0.3) + '@solana/codecs-numbers': 2.3.0(typescript@6.0.3) + '@solana/errors': 2.3.0(typescript@6.0.3) + '@solana/functional': 2.3.0(typescript@6.0.3) + '@solana/instructions': 2.3.0(typescript@6.0.3) + '@solana/nominal-types': 2.3.0(typescript@6.0.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/transactions@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': - dependencies: - '@solana/addresses': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/codecs-core': 3.0.3(typescript@5.9.3) - '@solana/codecs-data-structures': 3.0.3(typescript@5.9.3) - '@solana/codecs-numbers': 3.0.3(typescript@5.9.3) - '@solana/codecs-strings': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/errors': 3.0.3(typescript@5.9.3) - '@solana/functional': 3.0.3(typescript@5.9.3) - '@solana/instructions': 3.0.3(typescript@5.9.3) - '@solana/keys': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/nominal-types': 3.0.3(typescript@5.9.3) - '@solana/rpc-types': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@solana/transaction-messages': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - typescript: 5.9.3 + '@solana/transactions@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/codecs-core': 2.3.0(typescript@6.0.3) + '@solana/codecs-data-structures': 2.3.0(typescript@6.0.3) + '@solana/codecs-numbers': 2.3.0(typescript@6.0.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/errors': 2.3.0(typescript@6.0.3) + '@solana/functional': 2.3.0(typescript@6.0.3) + '@solana/instructions': 2.3.0(typescript@6.0.3) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/nominal-types': 2.3.0(typescript@6.0.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - optional: true - '@solana/wallet-adapter-alpha@0.1.14(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-alpha@0.1.14(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-avana@0.1.17(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-avana@0.1.17(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: '@solana/wallet-standard-features': 1.3.0 - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) '@wallet-standard/base': 1.1.0 '@wallet-standard/features': 1.1.0 - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 - '@solana/wallet-adapter-bitkeep@0.3.24(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-bitkeep@0.3.24(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-bitpie@0.5.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-bitpie@0.5.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-clover@0.4.23(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-clover@0.4.23(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-coin98@0.5.24(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-coin98@0.5.24(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) bs58: 6.0.0 buffer: 6.0.3 - '@solana/wallet-adapter-coinbase@0.1.23(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-coinbase@0.1.23(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-coinhub@0.3.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-coinhub@0.3.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-fractal@0.1.12(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@solana/wallet-adapter-fractal@0.1.12(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@fractalwagmi/solana-wallet-adapter': 0.1.1(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@fractalwagmi/solana-wallet-adapter': 0.1.1(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) transitivePeerDependencies: - react - react-dom - '@solana/wallet-adapter-huobi@0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-huobi@0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-hyperpay@0.1.18(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-hyperpay@0.1.18(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-keystone@0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@solana/wallet-adapter-keystone@0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)': dependencies: - '@keystonehq/sol-keyring': 0.20.0(bufferutil@4.0.9)(encoding@0.1.13)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@keystonehq/sol-keyring': 0.20.0(bufferutil@4.0.9)(encoding@0.1.13)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -15942,124 +14658,121 @@ snapshots: - typescript - utf-8-validate - '@solana/wallet-adapter-krystal@0.1.16(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-krystal@0.1.16(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-ledger@0.9.29(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-ledger@0.9.29(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@ledgerhq/devices': 8.5.1 - '@ledgerhq/hw-transport': 6.31.10 - '@ledgerhq/hw-transport-webhid': 6.30.6 - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@ledgerhq/devices': 8.14.2 + '@ledgerhq/hw-transport': 6.35.2 + '@ledgerhq/hw-transport-webhid': 6.35.2 + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) buffer: 6.0.3 - '@solana/wallet-adapter-mathwallet@0.9.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-mathwallet@0.9.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-neko@0.2.16(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-neko@0.2.16(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-nightly@0.1.20(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-nightly@0.1.20(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-nufi@0.1.21(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-nufi@0.1.21(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-onto@0.1.11(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-onto@0.1.11(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-particle@0.1.16(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0)': + '@solana/wallet-adapter-particle@0.1.16(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0)': dependencies: - '@particle-network/solana-wallet': 1.3.2(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0) - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@particle-network/solana-wallet': 1.3.2(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) transitivePeerDependencies: - bs58 - '@solana/wallet-adapter-phantom@0.9.28(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-phantom@0.9.29(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-react@0.15.39(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3)': + '@solana/wallet-adapter-react@0.15.39(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6)': dependencies: - '@solana-mobile/wallet-adapter-mobile': 2.2.3(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3) - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-standard-wallet-adapter-react': 1.1.4(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react@19.2.3) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) - react: 19.2.3 + '@solana-mobile/wallet-adapter-mobile': 2.2.3(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-standard-wallet-adapter-react': 1.1.4(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react@19.2.6) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) + react: 19.2.6 transitivePeerDependencies: - bs58 - react-native - '@solana/wallet-adapter-safepal@0.5.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-safepal@0.5.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-saifu@0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-saifu@0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-salmon@0.1.18(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-salmon@0.1.18(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) - salmon-adapter-sdk: 1.1.1(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) + salmon-adapter-sdk: 1.1.1(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-sky@0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-sky@0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-solflare@0.6.32(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-solflare@0.6.33(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-standard-chains': 1.1.1 - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@solflare-wallet/metamask-sdk': 1.0.3(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solflare-wallet/sdk': 1.4.2(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@wallet-standard/wallet': 1.1.0 + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) + '@solflare-wallet/sdk': 1.4.2(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-solong@0.9.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-solong@0.9.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-spot@0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-spot@0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-tokenary@0.1.16(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-tokenary@0.1.16(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-tokenpocket@0.4.23(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-tokenpocket@0.4.23(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-torus@0.11.32(@babel/runtime@7.28.4)(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@solana/wallet-adapter-torus@0.11.32(@babel/runtime@7.29.2)(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@toruslabs/solana-embed': 2.1.0(@babel/runtime@7.28.4)(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) + '@toruslabs/solana-embed': 2.1.0(@babel/runtime@7.29.2)(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) assert: 2.1.0 crypto-browserify: 3.12.1 process: 0.11.10 @@ -16073,11 +14786,11 @@ snapshots: - typescript - utf-8-validate - '@solana/wallet-adapter-trezor@0.1.6(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-trezor@0.1.6(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@trezor/connect-web': 9.6.2(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) + '@trezor/connect-web': 9.7.3(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) buffer: 6.0.3 transitivePeerDependencies: - '@solana/sysvars' @@ -16094,24 +14807,24 @@ snapshots: - utf-8-validate - ws - '@solana/wallet-adapter-trust@0.1.17(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-trust@0.1.17(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-unsafe-burner@0.1.11(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-unsafe-burner@0.1.11(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@noble/curves': 1.9.4 - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) + '@noble/curves': 1.9.7 + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) '@solana/wallet-standard-features': 1.3.0 '@solana/wallet-standard-util': 1.1.2 - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-walletconnect@0.1.21(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@solana/wallet-adapter-walletconnect@0.1.21(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@walletconnect/solana-adapter': 0.0.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) + '@walletconnect/solana-adapter': 0.0.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -16127,6 +14840,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -16139,45 +14853,45 @@ snapshots: - utf-8-validate - zod - '@solana/wallet-adapter-wallets@0.19.37(@babel/runtime@7.28.4)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(@types/react@19.0.10)(bs58@5.0.0)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-dom@19.2.3(react@19.2.3))(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3)(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)': - dependencies: - '@solana/wallet-adapter-alpha': 0.1.14(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-avana': 0.1.17(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-bitkeep': 0.3.24(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-bitpie': 0.5.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-clover': 0.4.23(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-coin98': 0.5.24(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-coinbase': 0.1.23(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-coinhub': 0.3.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-fractal': 0.1.12(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@solana/wallet-adapter-huobi': 0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-hyperpay': 0.1.18(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-keystone': 0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-krystal': 0.1.16(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-ledger': 0.9.29(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-mathwallet': 0.9.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-neko': 0.2.16(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-nightly': 0.1.20(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-nufi': 0.1.21(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-onto': 0.1.11(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-particle': 0.1.16(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0) - '@solana/wallet-adapter-phantom': 0.9.28(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-safepal': 0.5.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-saifu': 0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-salmon': 0.1.18(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-sky': 0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-solflare': 0.6.32(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-solong': 0.9.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-spot': 0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-tokenary': 0.1.16(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-tokenpocket': 0.4.23(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-torus': 0.11.32(@babel/runtime@7.28.4)(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-trezor': 0.1.6(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-trust': 0.1.17(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-unsafe-burner': 0.1.11(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-walletconnect': 0.1.21(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@solana/wallet-adapter-xdefi': 0.1.11(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-wallets@0.19.38(@babel/runtime@7.29.2)(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(@types/react@19.2.14)(bs58@5.0.0)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(ioredis@5.10.1)(react-dom@19.2.6(react@19.2.6))(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6)(tslib@2.8.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)': + dependencies: + '@solana/wallet-adapter-alpha': 0.1.14(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-avana': 0.1.17(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-bitkeep': 0.3.24(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-bitpie': 0.5.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-clover': 0.4.23(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-coin98': 0.5.24(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-coinbase': 0.1.23(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-coinhub': 0.3.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-fractal': 0.1.12(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@solana/wallet-adapter-huobi': 0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-hyperpay': 0.1.18(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-keystone': 0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-krystal': 0.1.16(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-ledger': 0.9.29(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-mathwallet': 0.9.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-neko': 0.2.16(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-nightly': 0.1.20(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-nufi': 0.1.21(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-onto': 0.1.11(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-particle': 0.1.16(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0) + '@solana/wallet-adapter-phantom': 0.9.29(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-safepal': 0.5.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-saifu': 0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-salmon': 0.1.18(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-sky': 0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-solflare': 0.6.33(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-solong': 0.9.22(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-spot': 0.1.19(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-tokenary': 0.1.16(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-tokenpocket': 0.4.23(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-torus': 0.11.32(@babel/runtime@7.29.2)(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-trezor': 0.1.6(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-trust': 0.1.17(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-unsafe-burner': 0.1.11(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-walletconnect': 0.1.21(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@solana/wallet-adapter-xdefi': 0.1.11(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -16196,6 +14910,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bs58 @@ -16218,10 +14933,10 @@ snapshots: - ws - zod - '@solana/wallet-adapter-xdefi@0.1.11(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-xdefi@0.1.11(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) '@solana/wallet-standard-chains@1.1.1': dependencies: @@ -16240,63 +14955,63 @@ snapshots: '@solana/wallet-standard-util@1.1.2': dependencies: - '@noble/curves': 1.9.4 + '@noble/curves': 1.9.7 '@solana/wallet-standard-chains': 1.1.1 '@solana/wallet-standard-features': 1.3.0 - '@solana/wallet-standard-wallet-adapter-base@1.1.4(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0)': + '@solana/wallet-standard-wallet-adapter-base@1.1.4(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0)': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) '@solana/wallet-standard-chains': 1.1.1 '@solana/wallet-standard-features': 1.3.0 '@solana/wallet-standard-util': 1.1.2 - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) '@wallet-standard/app': 1.1.0 '@wallet-standard/base': 1.1.0 '@wallet-standard/features': 1.1.0 '@wallet-standard/wallet': 1.1.0 bs58: 5.0.0 - '@solana/wallet-standard-wallet-adapter-react@1.1.4(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react@19.2.3)': + '@solana/wallet-standard-wallet-adapter-react@1.1.4(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react@19.2.6)': dependencies: - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/wallet-standard-wallet-adapter-base': 1.1.4(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/wallet-standard-wallet-adapter-base': 1.1.4(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0) '@wallet-standard/app': 1.1.0 '@wallet-standard/base': 1.1.0 - react: 19.2.3 + react: 19.2.6 transitivePeerDependencies: - '@solana/web3.js' - bs58 - '@solana/wallet-standard-wallet-adapter@1.1.4(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react@19.2.3)': + '@solana/wallet-standard-wallet-adapter@1.1.4(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react@19.2.6)': dependencies: - '@solana/wallet-standard-wallet-adapter-base': 1.1.4(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0) - '@solana/wallet-standard-wallet-adapter-react': 1.1.4(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react@19.2.3) + '@solana/wallet-standard-wallet-adapter-base': 1.1.4(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0) + '@solana/wallet-standard-wallet-adapter-react': 1.1.4(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react@19.2.6) transitivePeerDependencies: - '@solana/wallet-adapter-base' - '@solana/web3.js' - bs58 - react - '@solana/wallet-standard@1.1.4(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react@19.2.3)': + '@solana/wallet-standard@1.1.4(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react@19.2.6)': dependencies: '@solana/wallet-standard-core': 1.1.2 - '@solana/wallet-standard-wallet-adapter': 1.1.4(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react@19.2.3) + '@solana/wallet-standard-wallet-adapter': 1.1.4(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@5.0.0)(react@19.2.6) transitivePeerDependencies: - '@solana/wallet-adapter-base' - '@solana/web3.js' - bs58 - react - '@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)': dependencies: - '@babel/runtime': 7.27.6 - '@noble/curves': 1.9.4 + '@babel/runtime': 7.29.2 + '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 '@solana/buffer-layout': 4.0.1 - '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + '@solana/codecs-numbers': 2.3.0(typescript@6.0.3) agentkeepalive: 4.6.0 - bn.js: 5.2.2 + bn.js: 5.2.3 borsh: 0.7.0 bs58: 4.0.1 buffer: 6.0.3 @@ -16311,90 +15026,13 @@ snapshots: - typescript - utf-8-validate - '@solflare-wallet/metamask-sdk@1.0.3(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solflare-wallet/sdk@1.4.2(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-standard-features': 1.3.0 - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@wallet-standard/base': 1.1.0 + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) bs58: 5.0.0 - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 uuid: 9.0.1 - '@solflare-wallet/sdk@1.4.2(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))': - dependencies: - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) - bs58: 5.0.0 - eventemitter3: 5.0.1 - uuid: 9.0.1 - - '@stablelib/aead@1.0.1': {} - - '@stablelib/binary@1.0.1': - dependencies: - '@stablelib/int': 1.0.1 - - '@stablelib/bytes@1.0.1': {} - - '@stablelib/chacha20poly1305@1.0.1': - dependencies: - '@stablelib/aead': 1.0.1 - '@stablelib/binary': 1.0.1 - '@stablelib/chacha': 1.0.1 - '@stablelib/constant-time': 1.0.1 - '@stablelib/poly1305': 1.0.1 - '@stablelib/wipe': 1.0.1 - - '@stablelib/chacha@1.0.1': - dependencies: - '@stablelib/binary': 1.0.1 - '@stablelib/wipe': 1.0.1 - - '@stablelib/constant-time@1.0.1': {} - - '@stablelib/hash@1.0.1': {} - - '@stablelib/hkdf@1.0.1': - dependencies: - '@stablelib/hash': 1.0.1 - '@stablelib/hmac': 1.0.1 - '@stablelib/wipe': 1.0.1 - - '@stablelib/hmac@1.0.1': - dependencies: - '@stablelib/constant-time': 1.0.1 - '@stablelib/hash': 1.0.1 - '@stablelib/wipe': 1.0.1 - - '@stablelib/int@1.0.1': {} - - '@stablelib/keyagreement@1.0.1': - dependencies: - '@stablelib/bytes': 1.0.1 - - '@stablelib/poly1305@1.0.1': - dependencies: - '@stablelib/constant-time': 1.0.1 - '@stablelib/wipe': 1.0.1 - - '@stablelib/random@1.0.2': - dependencies: - '@stablelib/binary': 1.0.1 - '@stablelib/wipe': 1.0.1 - - '@stablelib/sha256@1.0.1': - dependencies: - '@stablelib/binary': 1.0.1 - '@stablelib/hash': 1.0.1 - '@stablelib/wipe': 1.0.1 - - '@stablelib/wipe@1.0.1': {} - - '@stablelib/x25519@1.0.3': - dependencies: - '@stablelib/keyagreement': 1.0.1 - '@stablelib/random': 1.0.2 - '@stablelib/wipe': 1.0.1 - '@stacks/common@6.16.0': dependencies: '@types/bn.js': 5.2.0 @@ -16418,56 +15056,44 @@ snapshots: transitivePeerDependencies: - encoding - '@stakekit/api-hooks@0.0.113(@faker-js/faker@10.1.0)(@tanstack/react-query@5.90.12(react@19.2.3))(msw@2.12.4(@types/node@25.0.2)(typescript@5.9.3))(react@19.2.3)': - dependencies: - react: 19.2.3 - optionalDependencies: - '@faker-js/faker': 10.1.0 - '@tanstack/react-query': 5.90.12(react@19.2.3) - msw: 2.12.4(@types/node@25.0.2)(typescript@5.9.3) - - '@stakekit/common@0.0.61': {} - - '@stakekit/rainbowkit@2.2.11(@tanstack/react-query@5.90.12(react@19.2.3))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(viem@2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@3.1.0)': + '@stakekit/rainbowkit@2.2.11(patch_hash=d028a8df4a214c19e07d959c285fb81eb54f4f1f3cbc199c7331e502cd94fbea)(@tanstack/react-query@5.100.10(react@19.2.6))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(typescript@6.0.3)(viem@2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@3.6.14)': dependencies: - '@tanstack/react-query': 5.90.12(react@19.2.3) + '@tanstack/react-query': 5.100.10(react@19.2.6) '@vanilla-extract/css': 1.17.3 '@vanilla-extract/dynamic': 2.1.4 '@vanilla-extract/sprinkles': 1.6.4(@vanilla-extract/css@1.17.3) clsx: 2.1.1 - cuer: 0.0.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - react-remove-scroll: 2.6.2(@types/react@19.0.10)(react@19.2.3) - ua-parser-js: 1.0.40 - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - wagmi: 3.1.0(81f493ce3f77f1eeec2bc71ce4932d5f) + cuer: 0.0.3(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(typescript@6.0.3) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + react-remove-scroll: 2.6.2(@types/react@19.2.14)(react@19.2.6) + ua-parser-js: 1.0.41 + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + wagmi: 3.6.14(@coinbase/wallet-sdk@4.3.6(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.2.6))(utf-8-validate@5.0.10)(zod@3.25.76))(@safe-global/safe-apps-provider@0.18.6(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@tanstack/query-core@5.100.10)(@tanstack/react-query@5.100.10(react@19.2.6))(@types/react@19.2.14)(@walletconnect/ethereum-provider@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(porto@0.2.35)(react@19.2.6)(typescript@6.0.3)(viem@2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)) transitivePeerDependencies: - '@types/react' - babel-plugin-macros - typescript - '@standard-schema/spec@1.0.0': {} + '@standard-schema/spec@1.1.0': {} '@starknet-io/types-js@0.7.10': {} '@stellar/js-xdr@3.1.2': {} - '@stellar/stellar-base@13.1.0': + '@stellar/stellar-base@14.1.0': dependencies: + '@noble/curves': 1.9.7 '@stellar/js-xdr': 3.1.2 base32.js: 0.1.0 bignumber.js: 9.3.1 buffer: 6.0.3 sha.js: 2.4.12 - tweetnacl: 1.0.3 - optionalDependencies: - sodium-native: 4.3.3 - '@stellar/stellar-sdk@13.3.0': + '@stellar/stellar-sdk@14.2.0': dependencies: - '@stellar/stellar-base': 13.1.0 - axios: 1.13.2 + '@stellar/stellar-base': 14.1.0 + axios: 1.16.0 bignumber.js: 9.3.1 eventsource: 2.0.2 feaxios: 0.0.23 @@ -16479,81 +15105,44 @@ snapshots: '@substrate/ss58-registry@1.51.0': {} - '@swc/core-darwin-arm64@1.15.1': - optional: true - - '@swc/core-darwin-x64@1.15.1': - optional: true - - '@swc/core-linux-arm-gnueabihf@1.15.1': - optional: true - - '@swc/core-linux-arm64-gnu@1.15.1': - optional: true - - '@swc/core-linux-arm64-musl@1.15.1': - optional: true - - '@swc/core-linux-x64-gnu@1.15.1': - optional: true - - '@swc/core-linux-x64-musl@1.15.1': - optional: true - - '@swc/core-win32-arm64-msvc@1.15.1': - optional: true - - '@swc/core-win32-ia32-msvc@1.15.1': - optional: true - - '@swc/core-win32-x64-msvc@1.15.1': - optional: true - - '@swc/core@1.15.1': - dependencies: - '@swc/counter': 0.1.3 - '@swc/types': 0.1.25 - optionalDependencies: - '@swc/core-darwin-arm64': 1.15.1 - '@swc/core-darwin-x64': 1.15.1 - '@swc/core-linux-arm-gnueabihf': 1.15.1 - '@swc/core-linux-arm64-gnu': 1.15.1 - '@swc/core-linux-arm64-musl': 1.15.1 - '@swc/core-linux-x64-gnu': 1.15.1 - '@swc/core-linux-x64-musl': 1.15.1 - '@swc/core-win32-arm64-msvc': 1.15.1 - '@swc/core-win32-ia32-msvc': 1.15.1 - '@swc/core-win32-x64-msvc': 1.15.1 - - '@swc/counter@0.1.3': {} - '@swc/helpers@0.5.15': dependencies: tslib: 2.8.1 - '@swc/types@0.1.25': - dependencies: - '@swc/counter': 0.1.3 + '@tanstack/query-core@5.100.10': {} - '@tanstack/query-core@5.90.12': {} + '@tanstack/react-query@5.100.10(react@19.2.6)': + dependencies: + '@tanstack/query-core': 5.100.10 + react: 19.2.6 - '@tanstack/react-query@5.90.12(react@19.2.3)': + '@tanstack/react-virtual@3.13.24(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@tanstack/query-core': 5.90.12 - react: 19.2.3 + '@tanstack/virtual-core': 3.14.0 + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + + '@tanstack/virtual-core@3.14.0': {} - '@tanstack/react-virtual@3.13.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@testing-library/jest-dom@5.17.0': dependencies: - '@tanstack/virtual-core': 3.13.13 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@adobe/css-tools': 4.4.4 + '@babel/runtime': 7.29.2 + '@types/testing-library__jest-dom': 5.14.9 + aria-query: 5.3.2 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.5.16 + lodash: 4.18.1 + redent: 3.0.0 - '@tanstack/virtual-core@3.13.13': {} + '@ton/core@0.62.1(@ton/crypto@3.3.0)': + dependencies: + '@ton/crypto': 3.3.0 - '@ton/core@0.62.0(@ton/crypto@3.3.0)': + '@ton/core@0.63.1(@ton/crypto@3.3.0)': dependencies: '@ton/crypto': 3.3.0 - symbol.inspect: 1.0.1 '@ton/crypto-primitives@2.1.0': dependencies: @@ -16575,40 +15164,40 @@ snapshots: transitivePeerDependencies: - encoding - '@tonconnect/protocol@2.3.0': + '@tonconnect/protocol@2.4.0': dependencies: tweetnacl: 1.0.3 tweetnacl-util: 0.15.1 - '@tonconnect/sdk@3.3.1(encoding@0.1.13)': + '@tonconnect/sdk@3.4.1(encoding@0.1.13)': dependencies: '@tonconnect/isomorphic-eventsource': 0.0.2 '@tonconnect/isomorphic-fetch': 0.0.3(encoding@0.1.13) - '@tonconnect/protocol': 2.3.0 + '@tonconnect/protocol': 2.4.0 transitivePeerDependencies: - encoding - '@tonconnect/ui@2.3.1(encoding@0.1.13)': + '@tonconnect/ui@2.4.4(encoding@0.1.13)': dependencies: - '@tonconnect/sdk': 3.3.1(encoding@0.1.13) + '@tonconnect/sdk': 3.4.1(encoding@0.1.13) classnames: 2.5.1 - csstype: 3.2.1 + csstype: 3.2.3 deepmerge: 4.3.1 - ua-parser-js: 1.0.40 + ua-parser-js: 1.0.41 transitivePeerDependencies: - encoding - '@toruslabs/base-controllers@5.11.0(@babel/runtime@7.28.4)(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@toruslabs/base-controllers@5.11.0(@babel/runtime@7.29.2)(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.29.2 '@ethereumjs/util': 9.1.0 '@toruslabs/broadcast-channel': 10.0.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@toruslabs/http-helpers': 6.1.1(@babel/runtime@7.28.4) - '@toruslabs/openlogin-jrpc': 8.3.0(@babel/runtime@7.28.4) - '@toruslabs/openlogin-utils': 8.2.1(@babel/runtime@7.28.4) + '@toruslabs/http-helpers': 6.1.1(@babel/runtime@7.29.2) + '@toruslabs/openlogin-jrpc': 8.3.0(@babel/runtime@7.29.2) + '@toruslabs/openlogin-utils': 8.2.1(@babel/runtime@7.29.2) async-mutex: 0.5.0 bignumber.js: 9.3.1 - bowser: 2.11.0 + bowser: 2.14.1 jwt-decode: 4.0.0 loglevel: 1.9.2 transitivePeerDependencies: @@ -16619,12 +15208,12 @@ snapshots: '@toruslabs/broadcast-channel@10.0.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.29.2 '@toruslabs/eccrypto': 4.0.0 - '@toruslabs/metadata-helpers': 5.1.0(@babel/runtime@7.28.4) + '@toruslabs/metadata-helpers': 5.1.0(@babel/runtime@7.29.2) loglevel: 1.9.2 oblivious-set: 1.4.0 - socket.io-client: 4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + socket.io-client: 4.8.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) unload: 2.4.1 transitivePeerDependencies: - '@sentry/types' @@ -16632,60 +15221,60 @@ snapshots: - supports-color - utf-8-validate - '@toruslabs/constants@13.4.0(@babel/runtime@7.28.4)': + '@toruslabs/constants@13.4.0(@babel/runtime@7.29.2)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.29.2 '@toruslabs/eccrypto@4.0.0': dependencies: elliptic: 6.6.1 - '@toruslabs/http-helpers@6.1.1(@babel/runtime@7.28.4)': + '@toruslabs/http-helpers@6.1.1(@babel/runtime@7.29.2)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.29.2 lodash.merge: 4.6.2 loglevel: 1.9.2 - '@toruslabs/metadata-helpers@5.1.0(@babel/runtime@7.28.4)': + '@toruslabs/metadata-helpers@5.1.0(@babel/runtime@7.29.2)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.29.2 '@toruslabs/eccrypto': 4.0.0 - '@toruslabs/http-helpers': 6.1.1(@babel/runtime@7.28.4) + '@toruslabs/http-helpers': 6.1.1(@babel/runtime@7.29.2) elliptic: 6.6.1 ethereum-cryptography: 2.2.1 json-stable-stringify: 1.3.0 transitivePeerDependencies: - '@sentry/types' - '@toruslabs/openlogin-jrpc@8.3.0(@babel/runtime@7.28.4)': + '@toruslabs/openlogin-jrpc@8.3.0(@babel/runtime@7.29.2)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.29.2 end-of-stream: 1.4.5 events: 3.3.0 fast-safe-stringify: 2.1.1 once: 1.4.0 - pump: 3.0.3 + pump: 3.0.4 readable-stream: 4.7.0 - '@toruslabs/openlogin-utils@8.2.1(@babel/runtime@7.28.4)': + '@toruslabs/openlogin-utils@8.2.1(@babel/runtime@7.29.2)': dependencies: - '@babel/runtime': 7.28.4 - '@toruslabs/constants': 13.4.0(@babel/runtime@7.28.4) + '@babel/runtime': 7.29.2 + '@toruslabs/constants': 13.4.0(@babel/runtime@7.29.2) base64url: 3.0.1 color: 4.2.3 - '@toruslabs/solana-embed@2.1.0(@babel/runtime@7.28.4)(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@toruslabs/solana-embed@2.1.0(@babel/runtime@7.29.2)(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)': dependencies: - '@babel/runtime': 7.28.4 - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@toruslabs/base-controllers': 5.11.0(@babel/runtime@7.28.4)(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@toruslabs/http-helpers': 6.1.1(@babel/runtime@7.28.4) - '@toruslabs/openlogin-jrpc': 8.3.0(@babel/runtime@7.28.4) + '@babel/runtime': 7.29.2 + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) + '@toruslabs/base-controllers': 5.11.0(@babel/runtime@7.29.2)(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@toruslabs/http-helpers': 6.1.1(@babel/runtime@7.29.2) + '@toruslabs/openlogin-jrpc': 8.3.0(@babel/runtime@7.29.2) eth-rpc-errors: 4.0.3 fast-deep-equal: 3.1.3 - lodash-es: 4.17.21 + lodash-es: 4.18.1 loglevel: 1.9.2 - pump: 3.0.3 + pump: 3.0.4 transitivePeerDependencies: - '@sentry/types' - bufferutil @@ -16694,63 +15283,64 @@ snapshots: - typescript - utf-8-validate - '@trezor/analytics@1.4.2(encoding@0.1.13)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1)': + '@trezor/analytics@1.5.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1)': dependencies: - '@trezor/env-utils': 1.4.2(encoding@0.1.13)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1) - '@trezor/utils': 9.4.2(tslib@2.8.1) + '@trezor/env-utils': 1.5.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1) + '@trezor/utils': 9.5.0(tslib@2.8.1) tslib: 2.8.1 transitivePeerDependencies: - - encoding - expo-constants - expo-localization - react-native - '@trezor/blockchain-link-types@1.4.2(tslib@2.8.1)': + '@trezor/blockchain-link-types@1.5.1(tslib@2.8.1)': dependencies: - '@trezor/utxo-lib': 2.4.2(tslib@2.8.1) + '@trezor/utils': 9.5.0(tslib@2.8.1) + '@trezor/utxo-lib': 2.5.0(tslib@2.8.1) tslib: 2.8.1 - '@trezor/blockchain-link-utils@1.4.2(bufferutil@4.0.9)(encoding@0.1.13)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1)(utf-8-validate@5.0.10)': + '@trezor/blockchain-link-utils@1.5.2(bufferutil@4.0.9)(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1)(utf-8-validate@5.0.10)': dependencies: '@mobily/ts-belt': 3.13.1 - '@stellar/stellar-sdk': 13.3.0 - '@trezor/env-utils': 1.4.2(encoding@0.1.13)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1) - '@trezor/utils': 9.4.2(tslib@2.8.1) + '@stellar/stellar-sdk': 14.2.0 + '@trezor/env-utils': 1.5.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1) + '@trezor/protobuf': 1.5.2(tslib@2.8.1) + '@trezor/utils': 9.5.0(tslib@2.8.1) tslib: 2.8.1 - xrpl: 4.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + xrpl: 4.4.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - debug - - encoding - expo-constants - expo-localization - react-native - utf-8-validate - '@trezor/blockchain-link@2.5.2(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': - dependencies: - '@solana-program/stake': 0.2.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))) - '@solana-program/token': 0.5.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))) - '@solana-program/token-2022': 0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)) - '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) - '@stellar/stellar-sdk': 13.3.0 - '@trezor/blockchain-link-types': 1.4.2(tslib@2.8.1) - '@trezor/blockchain-link-utils': 1.4.2(bufferutil@4.0.9)(encoding@0.1.13)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1)(utf-8-validate@5.0.10) - '@trezor/env-utils': 1.4.2(encoding@0.1.13)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1) - '@trezor/utils': 9.4.2(tslib@2.8.1) - '@trezor/utxo-lib': 2.4.2(tslib@2.8.1) - '@trezor/websocket-client': 1.2.2(bufferutil@4.0.9)(tslib@2.8.1)(utf-8-validate@5.0.10) + '@trezor/blockchain-link@2.6.2(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@solana-program/compute-budget': 0.8.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))) + '@solana-program/stake': 0.2.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))) + '@solana-program/token': 0.5.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))) + '@solana-program/token-2022': 0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)) + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3) + '@stellar/stellar-sdk': 14.2.0 + '@trezor/blockchain-link-types': 1.5.1(tslib@2.8.1) + '@trezor/blockchain-link-utils': 1.5.2(bufferutil@4.0.9)(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1)(utf-8-validate@5.0.10) + '@trezor/env-utils': 1.5.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1) + '@trezor/utils': 9.5.0(tslib@2.8.1) + '@trezor/utxo-lib': 2.5.0(tslib@2.8.1) + '@trezor/websocket-client': 1.3.0(bufferutil@4.0.9)(tslib@2.8.1)(utf-8-validate@5.0.10) '@types/web': 0.0.197 - events: 3.3.0 + crypto-browserify: 3.12.0 socks-proxy-agent: 8.0.5 + stream-browserify: 3.0.0 tslib: 2.8.1 - xrpl: 4.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + xrpl: 4.4.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - '@solana/sysvars' - bufferutil - debug - - encoding - expo-constants - expo-localization - fastestsmallesttextencoderdecoder @@ -16760,33 +15350,32 @@ snapshots: - utf-8-validate - ws - '@trezor/connect-analytics@1.3.5(encoding@0.1.13)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1)': + '@trezor/connect-analytics@1.4.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1)': dependencies: - '@trezor/analytics': 1.4.2(encoding@0.1.13)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1) + '@trezor/analytics': 1.5.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1) tslib: 2.8.1 transitivePeerDependencies: - - encoding - expo-constants - expo-localization - react-native - '@trezor/connect-common@0.4.2(encoding@0.1.13)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1)': + '@trezor/connect-common@0.5.1(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1)': dependencies: - '@trezor/env-utils': 1.4.2(encoding@0.1.13)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1) - '@trezor/utils': 9.4.2(tslib@2.8.1) + '@trezor/env-utils': 1.5.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1) + '@trezor/type-utils': 1.2.0 + '@trezor/utils': 9.5.0(tslib@2.8.1) tslib: 2.8.1 transitivePeerDependencies: - - encoding - expo-constants - expo-localization - react-native - '@trezor/connect-web@9.6.2(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@trezor/connect-web@9.7.3(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@trezor/connect': 9.6.2(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@trezor/connect-common': 0.4.2(encoding@0.1.13)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1) - '@trezor/utils': 9.4.2(tslib@2.8.1) - '@trezor/websocket-client': 1.2.2(bufferutil@4.0.9)(tslib@2.8.1)(utf-8-validate@5.0.10) + '@trezor/connect': 9.7.3(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@trezor/connect-common': 0.5.1(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1) + '@trezor/utils': 9.5.0(tslib@2.8.1) + '@trezor/websocket-client': 1.3.0(bufferutil@4.0.9)(tslib@2.8.1)(utf-8-validate@5.0.10) tslib: 2.8.1 transitivePeerDependencies: - '@solana/sysvars' @@ -16802,39 +15391,41 @@ snapshots: - utf-8-validate - ws - '@trezor/connect@9.6.2(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@trezor/connect@9.7.3(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@ethereumjs/common': 10.1.0 - '@ethereumjs/tx': 10.1.0 + '@ethereumjs/common': 10.1.1 + '@ethereumjs/tx': 10.1.1 '@fivebinaries/coin-selection': 3.0.0 '@mobily/ts-belt': 3.13.1 '@noble/hashes': 1.8.0 '@scure/bip39': 1.6.0 - '@solana-program/compute-budget': 0.8.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))) - '@solana-program/system': 0.7.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))) - '@solana-program/token': 0.5.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))) - '@solana-program/token-2022': 0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)) - '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@trezor/blockchain-link': 2.5.2(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@trezor/blockchain-link-types': 1.4.2(tslib@2.8.1) - '@trezor/blockchain-link-utils': 1.4.2(bufferutil@4.0.9)(encoding@0.1.13)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1)(utf-8-validate@5.0.10) - '@trezor/connect-analytics': 1.3.5(encoding@0.1.13)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1) - '@trezor/connect-common': 0.4.2(encoding@0.1.13)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1) - '@trezor/crypto-utils': 1.1.4(tslib@2.8.1) - '@trezor/device-utils': 1.1.2 - '@trezor/env-utils': 1.4.2(encoding@0.1.13)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1) - '@trezor/protobuf': 1.4.2(tslib@2.8.1) - '@trezor/protocol': 1.2.8(tslib@2.8.1) - '@trezor/schema-utils': 1.3.4(tslib@2.8.1) - '@trezor/transport': 1.5.2(encoding@0.1.13)(tslib@2.8.1) - '@trezor/type-utils': 1.1.8 - '@trezor/utils': 9.4.2(tslib@2.8.1) - '@trezor/utxo-lib': 2.4.2(tslib@2.8.1) + '@solana-program/compute-budget': 0.8.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))) + '@solana-program/system': 0.7.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))) + '@solana-program/token': 0.5.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))) + '@solana-program/token-2022': 0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)) + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@trezor/blockchain-link': 2.6.2(@solana/sysvars@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@6.0.3))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@trezor/blockchain-link-types': 1.5.1(tslib@2.8.1) + '@trezor/blockchain-link-utils': 1.5.2(bufferutil@4.0.9)(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1)(utf-8-validate@5.0.10) + '@trezor/connect-analytics': 1.4.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1) + '@trezor/connect-common': 0.5.1(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1) + '@trezor/crypto-utils': 1.2.0(tslib@2.8.1) + '@trezor/device-authenticity': 1.1.2(tslib@2.8.1) + '@trezor/device-utils': 1.2.0 + '@trezor/env-utils': 1.5.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1) + '@trezor/protobuf': 1.5.3(tslib@2.8.1) + '@trezor/protocol': 1.3.1(tslib@2.8.1) + '@trezor/schema-utils': 1.4.0(tslib@2.8.1) + '@trezor/transport': 1.6.3(encoding@0.1.13)(tslib@2.8.1) + '@trezor/type-utils': 1.2.0 + '@trezor/utils': 9.5.0(tslib@2.8.1) + '@trezor/utxo-lib': 2.5.0(tslib@2.8.1) blakejs: 1.2.1 bs58: 6.0.0 bs58check: 4.0.0 + cbor: 10.0.12 cross-fetch: 4.1.0(encoding@0.1.13) - jws: 4.0.0 + jws: 4.0.1 tslib: 2.8.1 transitivePeerDependencies: - '@solana/sysvars' @@ -16850,69 +15441,84 @@ snapshots: - utf-8-validate - ws - '@trezor/crypto-utils@1.1.4(tslib@2.8.1)': + '@trezor/crypto-utils@1.2.0(tslib@2.8.1)': dependencies: tslib: 2.8.1 - '@trezor/device-utils@1.1.2': {} + '@trezor/device-authenticity@1.1.2(tslib@2.8.1)': + dependencies: + '@noble/curves': 2.2.0 + '@trezor/crypto-utils': 1.2.0(tslib@2.8.1) + '@trezor/protobuf': 1.5.2(tslib@2.8.1) + '@trezor/schema-utils': 1.4.0(tslib@2.8.1) + '@trezor/utils': 9.5.0(tslib@2.8.1) + transitivePeerDependencies: + - tslib + + '@trezor/device-utils@1.2.0': {} - '@trezor/env-utils@1.4.2(encoding@0.1.13)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(tslib@2.8.1)': + '@trezor/env-utils@1.5.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(tslib@2.8.1)': dependencies: tslib: 2.8.1 - ua-parser-js: 2.0.4(encoding@0.1.13) + ua-parser-js: 2.0.9 optionalDependencies: - react-native: 0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - encoding + react-native: 0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10) - '@trezor/protobuf@1.4.2(tslib@2.8.1)': + '@trezor/protobuf@1.5.2(tslib@2.8.1)': dependencies: - '@trezor/schema-utils': 1.3.4(tslib@2.8.1) + '@trezor/schema-utils': 1.4.0(tslib@2.8.1) long: 5.2.5 protobufjs: 7.4.0 tslib: 2.8.1 - '@trezor/protocol@1.2.8(tslib@2.8.1)': + '@trezor/protobuf@1.5.3(tslib@2.8.1)': + dependencies: + '@trezor/schema-utils': 1.4.0(tslib@2.8.1) + long: 5.2.5 + protobufjs: 7.5.5 + tslib: 2.8.1 + + '@trezor/protocol@1.3.1(tslib@2.8.1)': dependencies: tslib: 2.8.1 - '@trezor/schema-utils@1.3.4(tslib@2.8.1)': + '@trezor/schema-utils@1.4.0(tslib@2.8.1)': dependencies: '@sinclair/typebox': 0.33.22 ts-mixer: 6.0.4 tslib: 2.8.1 - '@trezor/transport@1.5.2(encoding@0.1.13)(tslib@2.8.1)': + '@trezor/transport@1.6.3(encoding@0.1.13)(tslib@2.8.1)': dependencies: - '@trezor/protobuf': 1.4.2(tslib@2.8.1) - '@trezor/protocol': 1.2.8(tslib@2.8.1) - '@trezor/type-utils': 1.1.8 - '@trezor/utils': 9.4.2(tslib@2.8.1) + '@trezor/protobuf': 1.5.3(tslib@2.8.1) + '@trezor/protocol': 1.3.1(tslib@2.8.1) + '@trezor/type-utils': 1.2.0 + '@trezor/utils': 9.5.0(tslib@2.8.1) cross-fetch: 4.1.0(encoding@0.1.13) tslib: 2.8.1 - usb: 2.16.0 + usb: 2.17.0 transitivePeerDependencies: - encoding - '@trezor/type-utils@1.1.8': {} + '@trezor/type-utils@1.2.0': {} - '@trezor/utils@9.4.2(tslib@2.8.1)': + '@trezor/utils@9.5.0(tslib@2.8.1)': dependencies: bignumber.js: 9.3.1 tslib: 2.8.1 - '@trezor/utxo-lib@2.4.2(tslib@2.8.1)': + '@trezor/utxo-lib@2.5.0(tslib@2.8.1)': dependencies: - '@trezor/utils': 9.4.2(tslib@2.8.1) - bchaddrjs: 0.5.2 + '@trezor/utils': 9.5.0(tslib@2.8.1) bech32: 2.0.0 bip66: 2.0.0 bitcoin-ops: 1.4.1 blake-hash: 2.0.0 blakejs: 1.2.1 - bn.js: 5.2.2 + bn.js: 5.2.3 bs58: 6.0.0 bs58check: 4.0.0 + cashaddrjs: 0.4.4 create-hmac: 1.1.7 int64-buffer: 1.1.0 pushdata-bitcoin: 1.0.1 @@ -16922,64 +15528,63 @@ snapshots: varuint-bitcoin: 2.0.0 wif: 5.0.0 - '@trezor/websocket-client@1.2.2(bufferutil@4.0.9)(tslib@2.8.1)(utf-8-validate@5.0.10)': + '@trezor/websocket-client@1.3.0(bufferutil@4.0.9)(tslib@2.8.1)(utf-8-validate@5.0.10)': dependencies: - '@trezor/utils': 9.4.2(tslib@2.8.1) + '@trezor/utils': 9.5.0(tslib@2.8.1) tslib: 2.8.1 - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate - '@tronweb3/tronwallet-abstract-adapter@1.1.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@tronweb3/tronwallet-abstract-adapter@1.1.13(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: eventemitter3: 4.0.7 - tronweb: 6.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + tronweb: 6.2.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - debug - utf-8-validate - '@tronweb3/tronwallet-adapter-bitkeep@1.1.7(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@tronweb3/tronwallet-adapter-bitkeep@1.1.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@tronweb3/tronwallet-abstract-adapter': 1.1.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@tronweb3/tronwallet-adapter-tronlink': 1.1.13(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@tronweb3/tronwallet-abstract-adapter': 1.1.13(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@tronweb3/tronwallet-adapter-tronlink': 1.1.16(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - debug - utf-8-validate - '@tronweb3/tronwallet-adapter-ledger@1.1.11(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@tronweb3/tronwallet-adapter-ledger@1.1.13(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@ledgerhq/hw-app-trx': 6.29.4 + '@ledgerhq/hw-app-trx': 6.29.2 '@ledgerhq/hw-transport': 6.27.1 '@ledgerhq/hw-transport-webhid': 6.27.1 - '@tronweb3/tronwallet-abstract-adapter': 1.1.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@testing-library/jest-dom': 5.17.0 + '@tronweb3/tronwallet-abstract-adapter': 1.1.13(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 - eventemitter3: 4.0.7 - preact: 10.26.4 + eventemitter3: 5.0.4 + preact: 10.23.0 + tronweb: 6.2.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - debug - utf-8-validate - '@tronweb3/tronwallet-adapter-tronlink@1.1.13(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@tronweb3/tronwallet-adapter-tronlink@1.1.16(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@tronweb3/tronwallet-abstract-adapter': 1.1.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@tronweb3/tronwallet-abstract-adapter': 1.1.13(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - debug - utf-8-validate - '@tronweb3/tronwallet-adapter-walletconnect@3.0.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@tronweb3/tronwallet-adapter-walletconnect@3.0.3(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@tronweb3/tronwallet-abstract-adapter': 1.1.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@tronweb3/walletconnect-tron': 4.0.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@wagmi/core': 1.4.13(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@0.3.50(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) - '@walletconnect/modal': 2.6.2(@types/react@19.0.10)(react@19.2.3) - '@walletconnect/sign-client': 2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/types': 2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - viem: 0.3.50(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@tronweb3/tronwallet-abstract-adapter': 1.1.13(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@tronweb3/walletconnect-tron': 4.0.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/modal': 2.6.2(@types/react@19.2.14)(react@19.2.6) + '@walletconnect/types': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -16995,27 +15600,26 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil - db0 - debug - encoding - - immer - ioredis - react - - supports-color - typescript - uploadthing - utf-8-validate - zod - '@tronweb3/walletconnect-tron@4.0.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@tronweb3/walletconnect-tron@4.0.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/sign-client': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/universal-provider': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/utils': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit': 1.7.20(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/sign-client': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -17031,6 +15635,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -17043,39 +15648,57 @@ snapshots: - utf-8-validate - zod - '@tybys/wasm-util@0.10.1': + '@turbo/darwin-64@2.9.12': + optional: true + + '@turbo/darwin-arm64@2.9.12': + optional: true + + '@turbo/linux-64@2.9.12': + optional: true + + '@turbo/linux-arm64@2.9.12': + optional: true + + '@turbo/windows-64@2.9.12': + optional: true + + '@turbo/windows-arm64@2.9.12': + optional: true + + '@tybys/wasm-util@0.10.2': dependencies: tslib: 2.8.1 optional: true '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.29.0 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.29.0 '@types/base32-encoding@1.0.2': dependencies: - '@types/node': 25.0.2 + '@types/node': 25.7.0 '@types/bn.js@5.2.0': dependencies: - '@types/node': 25.0.2 + '@types/node': 25.7.0 '@types/chai@5.2.3': dependencies: @@ -17084,25 +15707,20 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 12.20.55 - - '@types/conventional-commits-parser@5.0.2': - dependencies: - '@types/node': 25.0.2 + '@types/node': 25.7.0 '@types/css-font-loading-module@0.0.7': {} - '@types/debug@4.1.12': - dependencies: - '@types/ms': 2.1.0 - '@types/deep-eql@4.0.2': {} - '@types/estree@1.0.8': {} + '@types/estree@1.0.8': + optional: true + + '@types/estree@1.0.9': {} '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 25.0.2 + '@types/node': 25.7.0 '@types/istanbul-lib-coverage@2.0.6': {} @@ -17114,8 +15732,15 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 + '@types/jest@30.0.0': + dependencies: + expect: 30.4.1 + pretty-format: 30.4.1 + '@types/json-bigint@1.0.4': {} + '@types/json-logic-js@2.0.5': {} + '@types/json-schema@7.0.15': {} '@types/lodash.merge@4.6.9': @@ -17128,26 +15753,8 @@ snapshots: '@types/lodash@4.17.16': {} - '@types/lodash@4.17.21': - optional: true - '@types/long@4.0.2': {} - '@types/minimatch@3.0.5': {} - - '@types/mixpanel-browser@2.66.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2)': - dependencies: - mixpanel-browser: 2.72.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2) - transitivePeerDependencies: - - '@mixpanel/rrweb-utils' - - '@types/ms@2.1.0': {} - - '@types/node-fetch@2.6.13': - dependencies: - '@types/node': 25.0.2 - form-data: 4.0.4 - '@types/node@10.12.18': {} '@types/node@12.20.55': {} @@ -17160,39 +15767,45 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/node@25.0.2': + '@types/node@25.7.0': dependencies: - undici-types: 7.16.0 - - '@types/parse-json@4.0.2': {} + undici-types: 7.21.0 - '@types/react-dom@19.0.4(@types/react@19.0.10)': + '@types/react-dom@19.2.3(@types/react@19.2.14)': dependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - '@types/react@19.0.10': + '@types/react@19.2.14': dependencies: csstype: 3.2.3 + '@types/set-cookie-parser@2.4.10': + dependencies: + '@types/node': 25.7.0 + '@types/stack-utils@2.0.3': {} '@types/statuses@2.0.6': {} + '@types/testing-library__jest-dom@5.14.9': + dependencies: + '@types/jest': 30.0.0 + '@types/trusted-types@2.0.7': {} '@types/uuid@8.3.4': {} - '@types/w3c-web-usb@1.0.12': {} + '@types/w3c-web-usb@1.0.14': {} '@types/web@0.0.197': {} '@types/ws@7.4.7': dependencies: - '@types/node': 12.20.55 + '@types/node': 25.7.0 '@types/ws@8.18.1': dependencies: - '@types/node': 25.0.2 + '@types/node': 25.7.0 '@types/yargs-parser@21.0.3': {} @@ -17200,46 +15813,25 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/types@7.13.1': {} - - '@typescript-eslint/typescript-estree@7.13.1(typescript@5.4.5)': - dependencies: - '@typescript-eslint/types': 7.13.1 - '@typescript-eslint/visitor-keys': 7.13.1 - debug: 4.4.3 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.3 - ts-api-utils: 1.4.3(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@7.13.1': - dependencies: - '@typescript-eslint/types': 7.13.1 - eslint-visitor-keys: 3.4.3 - '@vanilla-extract/babel-plugin-debug-ids@1.2.2': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.0 transitivePeerDependencies: - supports-color - '@vanilla-extract/compiler@0.3.3(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)': + '@vanilla-extract/compiler@0.7.0(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)': dependencies: - '@vanilla-extract/css': 1.17.5 - '@vanilla-extract/integration': 8.0.6 - vite: 7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - vite-node: 3.2.4(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + '@vanilla-extract/css': 1.20.1 + '@vanilla-extract/integration': 8.0.10 + vite: 8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) + vite-node: 6.0.0(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' + - '@vitejs/devtools' - babel-plugin-macros + - esbuild - jiti - less - - lightningcss - sass - sass-embedded - stylus @@ -17256,7 +15848,7 @@ snapshots: css-what: 6.2.2 cssesc: 3.0.0 csstype: 3.2.3 - dedent: 1.7.0 + dedent: 1.7.2 deep-object-diff: 1.1.9 deepmerge: 4.3.1 lru-cache: 10.4.3 @@ -17266,14 +15858,13 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - '@vanilla-extract/css@1.17.5': + '@vanilla-extract/css@1.20.1': dependencies: '@emotion/hash': 0.9.2 '@vanilla-extract/private': 1.0.9 css-what: 6.2.2 - cssesc: 3.0.0 csstype: 3.2.3 - dedent: 1.7.0 + dedent: 1.7.2 deep-object-diff: 1.1.9 deepmerge: 4.3.1 lru-cache: 10.4.3 @@ -17291,47 +15882,48 @@ snapshots: dependencies: '@vanilla-extract/private': 1.0.9 - '@vanilla-extract/integration@8.0.6': + '@vanilla-extract/integration@8.0.10': dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) + '@babel/core': 7.29.0 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) '@vanilla-extract/babel-plugin-debug-ids': 1.2.2 - '@vanilla-extract/css': 1.17.5 - dedent: 1.7.0 - esbuild: 0.27.0 + '@vanilla-extract/css': 1.20.1 + dedent: 1.7.2 + esbuild: 0.28.0 eval: 0.1.8 find-up: 5.0.0 javascript-stringify: 2.1.0 - mlly: 1.8.0 + mlly: 1.8.2 transitivePeerDependencies: - babel-plugin-macros - supports-color '@vanilla-extract/private@1.0.9': {} - '@vanilla-extract/recipes@0.5.7(@vanilla-extract/css@1.17.5)': + '@vanilla-extract/recipes@0.5.7(@vanilla-extract/css@1.20.1)': dependencies: - '@vanilla-extract/css': 1.17.5 + '@vanilla-extract/css': 1.20.1 '@vanilla-extract/sprinkles@1.6.4(@vanilla-extract/css@1.17.3)': dependencies: '@vanilla-extract/css': 1.17.3 - '@vanilla-extract/sprinkles@1.6.5(@vanilla-extract/css@1.17.5)': + '@vanilla-extract/sprinkles@1.6.5(@vanilla-extract/css@1.20.1)': dependencies: - '@vanilla-extract/css': 1.17.5 + '@vanilla-extract/css': 1.20.1 - '@vanilla-extract/vite-plugin@5.1.3(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(vite@7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2)': + '@vanilla-extract/vite-plugin@5.2.2(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))(yaml@2.9.0)': dependencies: - '@vanilla-extract/compiler': 0.3.3(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vanilla-extract/integration': 8.0.6 - vite: 7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + '@vanilla-extract/compiler': 0.7.0(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) + '@vanilla-extract/integration': 8.0.10 + vite: 8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' + - '@vitejs/devtools' - babel-plugin-macros + - esbuild - jiti - less - - lightningcss - sass - sass-embedded - stylus @@ -17341,324 +15933,155 @@ snapshots: - tsx - yaml - '@vitejs/plugin-react-swc@4.2.2(vite@7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-react@6.0.1(@rolldown/plugin-babel@0.2.3(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0)(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)))(babel-plugin-react-compiler@1.0.0)(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))': dependencies: - '@rolldown/pluginutils': 1.0.0-beta.47 - '@swc/core': 1.15.1 - vite: 7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - transitivePeerDependencies: - - '@swc/helpers' - - '@vitejs/plugin-react@5.1.2(vite@7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': - dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5) - '@rolldown/pluginutils': 1.0.0-beta.53 - '@types/babel__core': 7.20.5 - react-refresh: 0.18.0 - vite: 7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - transitivePeerDependencies: - - supports-color + '@rolldown/pluginutils': 1.0.0-rc.7 + vite: 8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) + optionalDependencies: + '@rolldown/plugin-babel': 0.2.3(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0)(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) + babel-plugin-react-compiler: 1.0.0 - '@vitest/browser-playwright@4.0.15(bufferutil@4.0.9)(msw@2.12.4(@types/node@25.0.2)(typescript@5.9.3))(playwright@1.57.0)(utf-8-validate@5.0.10)(vite@7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15)': + '@vitest/browser-playwright@4.1.6(bufferutil@4.0.9)(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(playwright@1.60.0)(utf-8-validate@5.0.10)(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.6)': dependencies: - '@vitest/browser': 4.0.15(bufferutil@4.0.9)(msw@2.12.4(@types/node@25.0.2)(typescript@5.9.3))(utf-8-validate@5.0.10)(vite@7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15) - '@vitest/mocker': 4.0.15(msw@2.12.4(@types/node@25.0.2)(typescript@5.9.3))(vite@7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) - playwright: 1.57.0 - tinyrainbow: 3.0.3 - vitest: 4.0.15(@types/node@25.0.2)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@5.0.10))(less@4.2.2)(msw@2.12.4(@types/node@25.0.2)(typescript@5.9.3))(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + '@vitest/browser': 4.1.6(bufferutil@4.0.9)(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(utf-8-validate@5.0.10)(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.6) + '@vitest/mocker': 4.1.6(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) + playwright: 1.60.0 + tinyrainbow: 3.1.0 + vitest: 4.1.6(@types/node@25.7.0)(@vitest/browser-playwright@4.1.6)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser@4.0.15(bufferutil@4.0.9)(msw@2.12.4(@types/node@25.0.2)(typescript@5.9.3))(utf-8-validate@5.0.10)(vite@7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15)': + '@vitest/browser@4.1.6(bufferutil@4.0.9)(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(utf-8-validate@5.0.10)(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.6)': dependencies: - '@vitest/mocker': 4.0.15(msw@2.12.4(@types/node@25.0.2)(typescript@5.9.3))(vite@7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/utils': 4.0.15 + '@blazediff/core': 1.9.1 + '@vitest/mocker': 4.1.6(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) + '@vitest/utils': 4.1.6 magic-string: 0.30.21 - pixelmatch: 7.1.0 pngjs: 7.0.0 sirv: 3.0.2 - tinyrainbow: 3.0.3 - vitest: 4.0.15(@types/node@25.0.2)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@5.0.10))(less@4.2.2)(msw@2.12.4(@types/node@25.0.2)(typescript@5.9.3))(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + tinyrainbow: 3.1.0 + vitest: 4.1.6(@types/node@25.7.0)(@vitest/browser-playwright@4.1.6)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) + ws: 8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/expect@4.0.15': + '@vitest/expect@4.1.6': dependencies: - '@standard-schema/spec': 1.0.0 + '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.15 - '@vitest/utils': 4.0.15 - chai: 6.2.1 - tinyrainbow: 3.0.3 + '@vitest/spy': 4.1.6 + '@vitest/utils': 4.1.6 + chai: 6.2.2 + tinyrainbow: 3.1.0 - '@vitest/mocker@4.0.15(msw@2.12.4(@types/node@25.0.2)(typescript@5.9.3))(vite@7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.1.6(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))': dependencies: - '@vitest/spy': 4.0.15 + '@vitest/spy': 4.1.6 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - msw: 2.12.4(@types/node@25.0.2)(typescript@5.9.3) - vite: 7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + msw: 2.14.6(@types/node@25.7.0)(typescript@6.0.3) + vite: 8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) - '@vitest/pretty-format@4.0.15': + '@vitest/pretty-format@4.1.6': dependencies: - tinyrainbow: 3.0.3 + tinyrainbow: 3.1.0 - '@vitest/runner@4.0.15': + '@vitest/runner@4.1.6': dependencies: - '@vitest/utils': 4.0.15 + '@vitest/utils': 4.1.6 pathe: 2.0.3 - '@vitest/snapshot@4.0.15': + '@vitest/snapshot@4.1.6': dependencies: - '@vitest/pretty-format': 4.0.15 + '@vitest/pretty-format': 4.1.6 + '@vitest/utils': 4.1.6 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.15': {} - - '@vitest/utils@4.0.15': - dependencies: - '@vitest/pretty-format': 4.0.15 - tinyrainbow: 3.0.3 - - '@vue/compiler-core@3.5.24': - dependencies: - '@babel/parser': 7.28.5 - '@vue/shared': 3.5.24 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - - '@vue/compiler-dom@3.5.24': - dependencies: - '@vue/compiler-core': 3.5.24 - '@vue/shared': 3.5.24 - - '@vue/compiler-sfc@3.5.24': - dependencies: - '@babel/parser': 7.28.5 - '@vue/compiler-core': 3.5.24 - '@vue/compiler-dom': 3.5.24 - '@vue/compiler-ssr': 3.5.24 - '@vue/shared': 3.5.24 - estree-walker: 2.0.2 - magic-string: 0.30.21 - postcss: 8.5.6 - source-map-js: 1.2.1 + '@vitest/spy@4.1.6': {} - '@vue/compiler-ssr@3.5.24': + '@vitest/utils@4.1.6': dependencies: - '@vue/compiler-dom': 3.5.24 - '@vue/shared': 3.5.24 - - '@vue/shared@3.5.24': {} - - '@wagmi/chains@1.0.0(typescript@5.9.3)': - optionalDependencies: - typescript: 5.9.3 - - '@wagmi/connectors@3.1.11(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@0.3.50(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)': - dependencies: - '@coinbase/wallet-sdk': 3.9.3 - '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/ethereum-provider': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(utf-8-validate@5.0.10) - '@walletconnect/legacy-provider': 2.0.0(encoding@0.1.13) - '@walletconnect/modal': 2.6.2(@types/react@19.0.10)(react@19.2.3) - '@walletconnect/utils': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - abitype: 0.8.7(typescript@5.9.3)(zod@3.25.76) - eventemitter3: 4.0.7 - viem: 0.3.50(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@types/react' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - ioredis - - react - - supports-color - - uploadthing - - utf-8-validate - - zod + '@vitest/pretty-format': 4.1.6 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 - '@wagmi/connectors@7.0.2(37a2a4aaef016ce2a7480dad0bcdd1e6)': + '@wagmi/connectors@8.0.13(0c7b20ee390d6d12dd543c879c14f292)': dependencies: - '@wagmi/core': 3.0.0(@tanstack/query-core@5.90.12)(@types/react@19.0.10)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - optionalDependencies: - '@base-org/account': 2.4.0(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76) - '@coinbase/wallet-sdk': 4.3.6(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(utf-8-validate@5.0.10)(zod@3.25.76) - '@gemini-wallet/core': 0.3.2(viem@2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) - '@metamask/sdk': 0.33.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/ethereum-provider': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - porto: 0.2.35(@tanstack/react-query@5.90.12(react@19.2.3))(@types/react@19.0.10)(@wagmi/core@3.0.0(@tanstack/query-core@5.90.12)(@types/react@19.0.10)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@3.1.0) - typescript: 5.9.3 - - '@wagmi/core@1.4.13(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@0.3.50(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)': - dependencies: - '@wagmi/connectors': 3.1.11(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@0.3.50(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) - abitype: 0.8.7(typescript@5.9.3)(zod@3.25.76) - eventemitter3: 4.0.7 - viem: 0.3.50(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - zustand: 4.5.7(@types/react@19.0.10)(react@19.2.3) + '@wagmi/core': 3.4.11(@tanstack/query-core@5.100.10)(@types/react@19.2.14)(react@19.2.6)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.2.6))(viem@2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@types/react' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - immer - - ioredis - - react - - supports-color - - uploadthing - - utf-8-validate - - zod + '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.2.6))(utf-8-validate@5.0.10)(zod@3.25.76) + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/ethereum-provider': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + porto: 0.2.35(@tanstack/react-query@5.100.10(react@19.2.6))(@types/react@19.2.14)(@wagmi/core@3.4.11(@tanstack/query-core@5.100.10)(@types/react@19.2.14)(react@19.2.6)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.2.6))(viem@2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.2.6))(viem@2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@3.6.14) + typescript: 6.0.3 - '@wagmi/core@3.0.0(@tanstack/query-core@5.90.12)(@types/react@19.0.10)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': + '@wagmi/core@3.4.11(@tanstack/query-core@5.100.10)(@types/react@19.2.14)(react@19.2.6)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.2.6))(viem@2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))': dependencies: eventemitter3: 5.0.1 - mipd: 0.0.7(typescript@5.9.3) - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - zustand: 5.0.0(@types/react@19.0.10)(react@19.2.3)(use-sync-external-store@1.4.0(react@19.2.3)) + mipd: 0.0.7(typescript@6.0.3) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + zustand: 5.0.0(@types/react@19.2.14)(react@19.2.6)(use-sync-external-store@1.4.0(react@19.2.6)) optionalDependencies: - '@tanstack/query-core': 5.90.12 - typescript: 5.9.3 + '@tanstack/query-core': 5.100.10 + typescript: 6.0.3 transitivePeerDependencies: - '@types/react' - immer - react - use-sync-external-store - '@wallet-standard/app@1.1.0': - dependencies: - '@wallet-standard/base': 1.1.0 - - '@wallet-standard/base@1.1.0': {} - - '@wallet-standard/core@1.1.1': - dependencies: - '@wallet-standard/app': 1.1.0 - '@wallet-standard/base': 1.1.0 - '@wallet-standard/errors': 0.1.1 - '@wallet-standard/features': 1.1.0 - '@wallet-standard/wallet': 1.1.0 - - '@wallet-standard/errors@0.1.1': - dependencies: - chalk: 5.6.2 - commander: 13.1.0 - - '@wallet-standard/features@1.1.0': - dependencies: - '@wallet-standard/base': 1.1.0 - - '@wallet-standard/wallet@1.1.0': - dependencies: - '@wallet-standard/base': 1.1.0 - - '@walletconnect/core@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/jsonrpc-types': 1.0.3 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/logger': 2.1.3 - '@walletconnect/relay-api': 1.0.11 - '@walletconnect/relay-auth': 1.1.0 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - events: 3.3.0 - isomorphic-unfetch: 3.1.0(encoding@0.1.13) - lodash.isequal: 4.5.0 - uint8arrays: 3.1.1 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - ioredis - - uploadthing - - utf-8-validate + '@wallet-standard/app@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@wallet-standard/base@1.1.0': {} + + '@wallet-standard/core@1.1.1': + dependencies: + '@wallet-standard/app': 1.1.0 + '@wallet-standard/base': 1.1.0 + '@wallet-standard/errors': 0.1.1 + '@wallet-standard/features': 1.1.0 + '@wallet-standard/wallet': 1.1.0 + + '@wallet-standard/errors@0.1.1': + dependencies: + chalk: 5.6.2 + commander: 13.1.0 + + '@wallet-standard/features@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@wallet-standard/wallet@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 - '@walletconnect/core@2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/core@2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/logger': 2.1.2 '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/window-getters': 1.0.1 events: 3.3.0 lodash.isequal: 4.5.0 @@ -17677,6 +16100,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -17687,21 +16111,21 @@ snapshots: - utf-8-validate - zod - '@walletconnect/core@2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/core@2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/logger': 2.1.2 '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -17720,6 +16144,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -17730,21 +16155,21 @@ snapshots: - utf-8-validate - zod - '@walletconnect/core@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/core@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/logger': 2.1.2 '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -17763,6 +16188,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -17774,21 +16200,21 @@ snapshots: - zod optional: true - '@walletconnect/core@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/core@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/logger': 2.1.2 '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -17807,6 +16233,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -17818,21 +16245,21 @@ snapshots: - zod optional: true - '@walletconnect/core@2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/core@2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/logger': 2.1.2 '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.39.3 events: 3.3.0 @@ -17851,6 +16278,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -17861,21 +16289,21 @@ snapshots: - utf-8-validate - zod - '@walletconnect/core@2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/core@2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/logger': 2.1.2 '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.39.3 events: 3.3.0 @@ -17894,6 +16322,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -17904,23 +16333,23 @@ snapshots: - utf-8-validate - zod - '@walletconnect/core@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/core@2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/logger': 3.0.1 + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/logger': 3.0.2 '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(typescript@5.9.3)(zod@3.25.76) + '@walletconnect/types': 2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1)(typescript@6.0.3)(zod@3.25.76) '@walletconnect/window-getters': 1.0.1 - es-toolkit: 1.39.3 + es-toolkit: 1.44.0 events: 3.3.0 uint8arrays: 3.1.1 transitivePeerDependencies: @@ -17937,6 +16366,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -17947,74 +16377,22 @@ snapshots: - utf-8-validate - zod - '@walletconnect/crypto@1.1.0': - dependencies: - '@noble/ciphers': 1.2.0 - '@noble/hashes': 1.7.0 - '@walletconnect/encoding': 1.0.2 - '@walletconnect/environment': 1.0.1 - '@walletconnect/randombytes': 1.1.0 - tslib: 1.14.1 - - '@walletconnect/encoding@1.0.2': - dependencies: - is-typedarray: 1.0.0 - tslib: 1.14.1 - typedarray-to-buffer: 3.1.5 - '@walletconnect/environment@1.0.1': dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(utf-8-validate@5.0.10)': - dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) - '@walletconnect/jsonrpc-provider': 1.0.14 - '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/modal': 2.6.2(@types/react@19.0.10)(react@19.2.3) - '@walletconnect/sign-client': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@walletconnect/types': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/universal-provider': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@walletconnect/utils': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@types/react' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - ioredis - - react - - uploadthing - - utf-8-validate - - '@walletconnect/ethereum-provider@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/ethereum-provider@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/sign-client': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/universal-provider': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/utils': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/sign-client': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/universal-provider': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18031,6 +16409,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -18070,12 +16449,6 @@ snapshots: transitivePeerDependencies: - encoding - '@walletconnect/jsonrpc-provider@1.0.13': - dependencies: - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/safe-json': 1.0.2 - tslib: 1.14.1 - '@walletconnect/jsonrpc-provider@1.0.14': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 @@ -18098,16 +16471,6 @@ snapshots: '@walletconnect/jsonrpc-types': 1.0.4 tslib: 1.14.1 - '@walletconnect/jsonrpc-ws-connection@1.0.14(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/safe-json': 1.0.2 - events: 3.3.0 - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - '@walletconnect/jsonrpc-ws-connection@1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 @@ -18118,13 +16481,13 @@ snapshots: - bufferutil - utf-8-validate - '@walletconnect/keyvaluestorage@1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))': + '@walletconnect/keyvaluestorage@1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1)': dependencies: '@walletconnect/safe-json': 1.0.2 - idb-keyval: 6.2.1 - unstorage: 1.15.0(idb-keyval@6.2.1) + idb-keyval: 6.2.2 + unstorage: 1.17.5(idb-keyval@6.2.2)(ioredis@5.10.1) optionalDependencies: - '@react-native-async-storage/async-storage': 1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)) + '@react-native-async-storage/async-storage': 1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -18138,59 +16501,13 @@ snapshots: - '@planetscale/database' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - db0 - ioredis - uploadthing - '@walletconnect/legacy-client@2.0.0': - dependencies: - '@walletconnect/crypto': 1.1.0 - '@walletconnect/encoding': 1.0.2 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/legacy-types': 2.0.0 - '@walletconnect/legacy-utils': 2.0.0 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/window-getters': 1.0.1 - '@walletconnect/window-metadata': 1.0.1 - detect-browser: 5.3.0 - query-string: 6.14.1 - - '@walletconnect/legacy-modal@2.0.0': - dependencies: - '@walletconnect/legacy-types': 2.0.0 - '@walletconnect/legacy-utils': 2.0.0 - copy-to-clipboard: 3.3.3 - preact: 10.28.0 - qrcode: 1.5.4 - - '@walletconnect/legacy-provider@2.0.0(encoding@0.1.13)': - dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) - '@walletconnect/jsonrpc-provider': 1.0.14 - '@walletconnect/legacy-client': 2.0.0 - '@walletconnect/legacy-modal': 2.0.0 - '@walletconnect/legacy-types': 2.0.0 - '@walletconnect/legacy-utils': 2.0.0 - transitivePeerDependencies: - - encoding - - '@walletconnect/legacy-types@2.0.0': - dependencies: - '@walletconnect/jsonrpc-types': 1.0.4 - - '@walletconnect/legacy-utils@2.0.0': - dependencies: - '@walletconnect/encoding': 1.0.2 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/legacy-types': 2.0.0 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/window-getters': 1.0.1 - '@walletconnect/window-metadata': 1.0.1 - detect-browser: 5.3.0 - query-string: 6.14.1 - '@walletconnect/logger@2.1.2': dependencies: '@walletconnect/safe-json': 1.0.2 @@ -18201,21 +16518,21 @@ snapshots: '@walletconnect/safe-json': 1.0.2 pino: 7.11.0 - '@walletconnect/logger@3.0.1': + '@walletconnect/logger@3.0.2': dependencies: '@walletconnect/safe-json': 1.0.2 pino: 10.0.0 - '@walletconnect/modal-core@2.6.2(@types/react@19.0.10)(react@19.2.3)': + '@walletconnect/modal-core@2.6.2(@types/react@19.2.14)(react@19.2.6)': dependencies: - valtio: 1.11.2(@types/react@19.0.10)(react@19.2.3) + valtio: 1.11.2(@types/react@19.2.14)(react@19.2.6) transitivePeerDependencies: - '@types/react' - react - '@walletconnect/modal-ui@2.6.2(@types/react@19.0.10)(react@19.2.3)': + '@walletconnect/modal-ui@2.6.2(@types/react@19.2.14)(react@19.2.6)': dependencies: - '@walletconnect/modal-core': 2.6.2(@types/react@19.0.10)(react@19.2.3) + '@walletconnect/modal-core': 2.6.2(@types/react@19.2.14)(react@19.2.6) lit: 2.8.0 motion: 10.16.2 qrcode: 1.5.3 @@ -18223,21 +16540,14 @@ snapshots: - '@types/react' - react - '@walletconnect/modal@2.6.2(@types/react@19.0.10)(react@19.2.3)': + '@walletconnect/modal@2.6.2(@types/react@19.2.14)(react@19.2.6)': dependencies: - '@walletconnect/modal-core': 2.6.2(@types/react@19.0.10)(react@19.2.3) - '@walletconnect/modal-ui': 2.6.2(@types/react@19.0.10)(react@19.2.3) + '@walletconnect/modal-core': 2.6.2(@types/react@19.2.14)(react@19.2.6) + '@walletconnect/modal-ui': 2.6.2(@types/react@19.2.14)(react@19.2.6) transitivePeerDependencies: - '@types/react' - react - '@walletconnect/randombytes@1.1.0': - dependencies: - '@noble/hashes': 1.7.0 - '@walletconnect/encoding': 1.0.2 - '@walletconnect/environment': 1.0.1 - tslib: 1.14.1 - '@walletconnect/relay-api@1.0.11': dependencies: '@walletconnect/jsonrpc-types': 1.0.4 @@ -18254,50 +16564,16 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/sign-client@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@walletconnect/core': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/logger': 2.1.3 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - ioredis - - uploadthing - - utf-8-validate - - '@walletconnect/sign-client@2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/sign-client@2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@walletconnect/core': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/core': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18313,6 +16589,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -18323,16 +16600,16 @@ snapshots: - utf-8-validate - zod - '@walletconnect/sign-client@2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/sign-client@2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@walletconnect/core': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/core': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18348,6 +16625,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -18358,16 +16636,16 @@ snapshots: - utf-8-validate - zod - '@walletconnect/sign-client@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/sign-client@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@walletconnect/core': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/core': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18383,6 +16661,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -18394,16 +16673,16 @@ snapshots: - zod optional: true - '@walletconnect/sign-client@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/sign-client@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@walletconnect/core': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/core': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18419,6 +16698,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -18430,16 +16710,16 @@ snapshots: - zod optional: true - '@walletconnect/sign-client@2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/sign-client@2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@walletconnect/core': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/core': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18455,6 +16735,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -18465,16 +16746,16 @@ snapshots: - utf-8-validate - zod - '@walletconnect/sign-client@2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/sign-client@2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@walletconnect/core': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/core': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18490,6 +16771,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -18500,16 +16782,16 @@ snapshots: - utf-8-validate - zod - '@walletconnect/sign-client@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/sign-client@2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@walletconnect/core': 2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/core': 2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/logger': 3.0.1 + '@walletconnect/logger': 3.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(typescript@5.9.3)(zod@3.25.76) + '@walletconnect/types': 2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1)(typescript@6.0.3)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18525,6 +16807,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -18535,13 +16818,13 @@ snapshots: - utf-8-validate - zod - '@walletconnect/solana-adapter@0.0.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/solana-adapter@0.0.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@walletconnect/universal-provider': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/utils': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit': 1.7.2(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) + '@walletconnect/universal-provider': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) bs58: 6.0.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18558,6 +16841,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -18574,13 +16858,13 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/types@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))': + '@walletconnect/types@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-types': 1.0.3 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/logger': 2.1.2 + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/logger': 2.1.3 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18596,18 +16880,19 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - db0 - ioredis - uploadthing - '@walletconnect/types@2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))': + '@walletconnect/types@2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/logger': 2.1.2 events: 3.3.0 transitivePeerDependencies: @@ -18624,18 +16909,19 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - db0 - ioredis - uploadthing - '@walletconnect/types@2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))': + '@walletconnect/types@2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/logger': 2.1.2 events: 3.3.0 transitivePeerDependencies: @@ -18652,18 +16938,19 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - db0 - ioredis - uploadthing - '@walletconnect/types@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))': + '@walletconnect/types@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/logger': 2.1.2 events: 3.3.0 transitivePeerDependencies: @@ -18680,6 +16967,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - db0 @@ -18687,12 +16975,12 @@ snapshots: - uploadthing optional: true - '@walletconnect/types@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))': + '@walletconnect/types@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/logger': 2.1.2 events: 3.3.0 transitivePeerDependencies: @@ -18709,6 +16997,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - db0 @@ -18716,12 +17005,12 @@ snapshots: - uploadthing optional: true - '@walletconnect/types@2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))': + '@walletconnect/types@2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/logger': 2.1.2 events: 3.3.0 transitivePeerDependencies: @@ -18738,18 +17027,19 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - db0 - ioredis - uploadthing - '@walletconnect/types@2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))': + '@walletconnect/types@2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/logger': 2.1.2 events: 3.3.0 transitivePeerDependencies: @@ -18766,50 +17056,20 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - db0 - ioredis - uploadthing - '@walletconnect/types@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))': + '@walletconnect/types@2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/logger': 3.0.1 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - db0 - - ioredis - - uploadthing - - '@walletconnect/universal-provider@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) - '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/logger': 2.1.3 - '@walletconnect/sign-client': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@walletconnect/types': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/logger': 3.0.2 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -18825,27 +17085,25 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - - bufferutil - db0 - - encoding - ioredis - uploadthing - - utf-8-validate - '@walletconnect/universal-provider@2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/universal-provider@2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/types': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/sign-client': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 lodash: 4.17.21 transitivePeerDependencies: @@ -18862,6 +17120,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -18873,18 +17132,18 @@ snapshots: - utf-8-validate - zod - '@walletconnect/universal-provider@2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/universal-provider@2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/types': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/sign-client': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -18901,6 +17160,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -18912,18 +17172,18 @@ snapshots: - utf-8-validate - zod - '@walletconnect/universal-provider@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/universal-provider@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/sign-client': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -18940,6 +17200,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -18952,18 +17213,18 @@ snapshots: - zod optional: true - '@walletconnect/universal-provider@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/universal-provider@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/sign-client': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -18980,6 +17241,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -18992,18 +17254,18 @@ snapshots: - zod optional: true - '@walletconnect/universal-provider@2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/universal-provider@2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/types': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/sign-client': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) es-toolkit: 1.39.3 events: 3.3.0 transitivePeerDependencies: @@ -19020,6 +17282,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -19031,18 +17294,18 @@ snapshots: - utf-8-validate - zod - '@walletconnect/universal-provider@2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/universal-provider@2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/types': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/utils': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/sign-client': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/utils': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) es-toolkit: 1.39.3 events: 3.3.0 transitivePeerDependencies: @@ -19059,6 +17322,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -19070,61 +17334,25 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))': - dependencies: - '@stablelib/chacha20poly1305': 1.0.1 - '@stablelib/hkdf': 1.0.1 - '@stablelib/random': 1.0.2 - '@stablelib/sha256': 1.0.1 - '@stablelib/x25519': 1.0.3 - '@walletconnect/relay-api': 1.0.11 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.11.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/window-getters': 1.0.1 - '@walletconnect/window-metadata': 1.0.1 - detect-browser: 5.3.0 - query-string: 7.1.3 - uint8arrays: 3.1.1 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - db0 - - ioredis - - uploadthing - - '@walletconnect/utils@2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/utils@2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@noble/ciphers': 1.2.1 '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/types': 2.19.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 detect-browser: 5.3.0 elliptic: 6.6.1 query-string: 7.1.3 uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.23.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -19139,6 +17367,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -19149,18 +17378,18 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/utils@2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@noble/ciphers': 1.2.1 '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/types': 2.19.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 bs58: 6.0.0 @@ -19168,7 +17397,7 @@ snapshots: elliptic: 6.6.1 query-string: 7.1.3 uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.23.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -19183,6 +17412,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -19193,25 +17423,25 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/utils@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@noble/ciphers': 1.2.1 '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 bs58: 6.0.0 detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.23.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -19226,6 +17456,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -19237,25 +17468,25 @@ snapshots: - zod optional: true - '@walletconnect/utils@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/utils@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@noble/ciphers': 1.2.1 '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 bs58: 6.0.0 detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.23.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -19270,6 +17501,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -19281,7 +17513,7 @@ snapshots: - zod optional: true - '@walletconnect/utils@2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/utils@2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@msgpack/msgpack': 3.1.2 '@noble/ciphers': 1.3.0 @@ -19289,12 +17521,12 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/types': 2.21.4(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 blakejs: 1.2.1 @@ -19302,7 +17534,7 @@ snapshots: detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: 3.1.1 - viem: 2.31.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -19317,6 +17549,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -19327,7 +17560,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/utils@2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(ioredis@5.10.1)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@msgpack/msgpack': 3.1.2 '@noble/ciphers': 1.3.0 @@ -19335,12 +17568,12 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/types': 2.21.7(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 blakejs: 1.2.1 @@ -19348,7 +17581,7 @@ snapshots: detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: 3.1.1 - viem: 2.31.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -19363,6 +17596,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -19373,27 +17607,26 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10)))(typescript@5.9.3)(zod@3.25.76)': + '@walletconnect/utils@2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1)(typescript@6.0.3)(zod@3.25.76)': dependencies: - '@msgpack/msgpack': 3.1.2 + '@msgpack/msgpack': 3.1.3 '@noble/ciphers': 1.3.0 '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) - '@walletconnect/logger': 3.0.1 + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) + '@walletconnect/logger': 3.0.2 '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.23.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))) + '@walletconnect/types': 2.23.9(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(ioredis@5.10.1) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 blakejs: 1.2.1 - bs58: 6.0.0 detect-browser: 5.3.0 - ox: 0.9.3(typescript@5.9.3)(zod@3.25.76) + ox: 0.9.3(typescript@6.0.3)(zod@3.25.76) uint8arrays: 3.1.1 transitivePeerDependencies: - '@azure/app-configuration' @@ -19409,6 +17642,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - db0 @@ -19430,7 +17664,7 @@ snapshots: dependencies: '@noble/hashes': 1.8.0 eventemitter3: 5.0.1 - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -19445,29 +17679,36 @@ snapshots: '@xstate/fsm@1.6.5': {} - '@xstate/react@6.0.0(@types/react@19.0.10)(react@19.2.3)(xstate@5.25.0)': + '@xstate/react@6.1.0(@types/react@19.2.14)(react@19.2.6)(xstate@5.31.1)': dependencies: - react: 19.2.3 - use-isomorphic-layout-effect: 1.2.1(@types/react@19.0.10)(react@19.2.3) - use-sync-external-store: 1.5.0(react@19.2.3) + react: 19.2.6 + use-isomorphic-layout-effect: 1.2.1(@types/react@19.2.14)(react@19.2.6) + use-sync-external-store: 1.6.0(react@19.2.6) optionalDependencies: - xstate: 5.25.0 + xstate: 5.31.1 transitivePeerDependencies: - '@types/react' - '@xstate/store@3.13.0(react@19.2.3)': + '@xstate/store@3.17.5(react@19.2.6)': optionalDependencies: - react: 19.2.3 + react: 19.2.6 '@zeit/schemas@2.36.0': {} - '@zxing/text-encoding@0.9.0': - optional: true + '@zondax/ledger-js@1.3.1': + dependencies: + '@ledgerhq/hw-transport': 6.31.9 - JSONStream@1.3.5: + '@zondax/ledger-substrate@2.0.0': dependencies: - jsonparse: 1.3.1 - through: 2.3.8 + '@ledgerhq/hw-transport': 6.31.13 + '@zondax/ledger-js': 1.3.1 + axios: 1.16.0 + transitivePeerDependencies: + - debug + + '@zxing/text-encoding@0.9.0': + optional: true abi-wan-kanabi@2.2.4: dependencies: @@ -19476,47 +17717,35 @@ snapshots: fs-extra: 10.1.0 yargs: 17.7.2 - abitype@0.8.7(typescript@5.9.3)(zod@3.25.76): - dependencies: - typescript: 5.9.3 - optionalDependencies: - zod: 3.25.76 - - abitype@0.9.8(typescript@5.9.3)(zod@3.25.76): + abitype@1.0.8(typescript@6.0.3)(zod@3.25.76): optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 zod: 3.25.76 - abitype@1.0.6(typescript@5.9.3)(zod@3.25.76): + abitype@1.2.3(typescript@6.0.3)(zod@3.22.4): optionalDependencies: - typescript: 5.9.3 - zod: 3.25.76 - optional: true + typescript: 6.0.3 + zod: 3.22.4 - abitype@1.0.8(typescript@5.9.3)(zod@3.25.76): + abitype@1.2.3(typescript@6.0.3)(zod@3.25.76): optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 zod: 3.25.76 - abitype@1.1.0(typescript@5.9.3)(zod@3.22.4): + abitype@1.2.4(typescript@6.0.3)(zod@3.22.4): optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 zod: 3.22.4 - abitype@1.1.0(typescript@5.9.3)(zod@3.25.76): - optionalDependencies: - typescript: 5.9.3 - zod: 3.25.76 - - abitype@1.2.2(typescript@5.9.3)(zod@3.25.76): + abitype@1.2.4(typescript@6.0.3)(zod@3.25.76): optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 zod: 3.25.76 - abitype@1.2.2(typescript@5.9.3)(zod@4.1.13): + abitype@1.2.4(typescript@6.0.3)(zod@4.4.3): optionalDependencies: - typescript: 5.9.3 - zod: 4.1.13 + typescript: 6.0.3 + zod: 4.4.3 optional: true abort-controller@3.0.0: @@ -19525,12 +17754,12 @@ snapshots: abort-error@1.0.1: {} - accepts@1.3.8: + accepts@2.0.0: dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 + mime-types: 3.0.2 + negotiator: 1.0.0 - acorn@8.15.0: {} + acorn@8.16.0: {} aes-js@4.0.0-beta.5: {} @@ -19540,17 +17769,17 @@ snapshots: dependencies: humanize-ms: 1.2.1 - ajv@8.12.0: + ajv@8.18.0: dependencies: fast-deep-equal: 3.1.3 + fast-uri: 3.1.2 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - uri-js: 4.4.1 - ajv@8.17.1: + ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.0 + fast-uri: 3.1.2 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -19560,8 +17789,6 @@ snapshots: dependencies: string-width: 4.2.3 - ansi-colors@4.1.3: {} - ansi-regex@5.0.1: {} ansi-regex@6.2.2: {} @@ -19572,14 +17799,14 @@ snapshots: ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} + ansi-styles@6.2.3: {} ansicolors@0.3.2: {} anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 2.3.1 + picomatch: 2.3.2 arch@2.2.0: {} @@ -19595,25 +17822,21 @@ snapshots: dependencies: tslib: 2.8.1 - array-differ@3.0.0: {} + aria-query@5.3.2: {} array-ify@1.0.0: {} - array-union@2.1.0: {} - - arrify@2.0.1: {} - asap@2.0.6: {} asn1.js@4.10.1: dependencies: - bn.js: 4.12.2 + bn.js: 4.12.3 inherits: 2.0.4 minimalistic-assert: 1.0.1 assert@2.1.0: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 is-nan: 1.3.2 object-is: 1.1.6 object.assign: 4.1.7 @@ -19623,15 +17846,11 @@ snapshots: ast-kit@2.2.0: dependencies: - '@babel/parser': 7.28.5 + '@babel/parser': 7.29.3 pathe: 2.0.3 async-limiter@1.0.1: {} - async-mutex@0.2.6: - dependencies: - tslib: 2.8.1 - async-mutex@0.5.0: dependencies: tslib: 2.8.1 @@ -19640,51 +17859,44 @@ snapshots: atomic-sleep@1.0.0: {} - autoprefixer@10.4.22(postcss@8.5.6): + autoprefixer@10.5.0(postcss@8.5.14): dependencies: - browserslist: 4.28.0 - caniuse-lite: 1.0.30001754 + browserslist: 4.28.2 + caniuse-lite: 1.0.30001792 fraction.js: 5.3.4 - normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.5.6 + postcss: 8.5.14 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 - axios-retry@4.5.0(axios@1.13.2): + axios@1.13.5: dependencies: - axios: 1.13.2 - is-retry-allowed: 2.2.0 - optional: true - - axios@1.12.2: - dependencies: - follow-redirects: 1.15.11 - form-data: 4.0.4 + follow-redirects: 1.16.0 + form-data: 4.0.5 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - axios@1.13.2: + axios@1.16.0: dependencies: - follow-redirects: 1.15.11 - form-data: 4.0.4 - proxy-from-env: 1.1.0 + follow-redirects: 1.16.0 + form-data: 4.0.5 + proxy-from-env: 2.1.0 transitivePeerDependencies: - debug b4a@1.7.3: {} - babel-jest@29.7.0(@babel/core@7.28.5): + babel-jest@29.7.0(@babel/core@7.29.0): dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.0 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.28.5) + babel-preset-jest: 29.6.3(@babel/core@7.29.0) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -19693,86 +17905,55 @@ snapshots: babel-plugin-istanbul@6.1.1: dependencies: - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 + '@istanbuljs/schema': 0.1.6 istanbul-lib-instrument: 5.2.1 test-exclude: 6.0.0 transitivePeerDependencies: - supports-color - babel-plugin-jest-hoist@29.6.3: - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.28.0 - - babel-plugin-react-compiler@1.0.0: - dependencies: - '@babel/types': 7.28.5 - - babel-plugin-syntax-hermes-parser@0.29.1: - dependencies: - hermes-parser: 0.29.1 - - babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.5): - dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.5) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.5) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.5) - - babel-preset-jest@29.6.3(@babel/core@7.28.5): - dependencies: - '@babel/core': 7.28.5 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) - - balanced-match@1.0.2: {} - - bare-addon-resolve@1.9.4(bare-url@2.2.2): - dependencies: - bare-module-resolve: 1.11.1(bare-url@2.2.2) - bare-semver: 1.0.1 - optionalDependencies: - bare-url: 2.2.2 - optional: true - - bare-module-resolve@1.11.1(bare-url@2.2.2): + babel-plugin-jest-hoist@29.6.3: dependencies: - bare-semver: 1.0.1 - optionalDependencies: - bare-url: 2.2.2 - optional: true + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.28.0 - bare-os@3.6.2: - optional: true + babel-plugin-react-compiler@1.0.0: + dependencies: + '@babel/types': 7.29.0 - bare-path@3.0.0: + babel-plugin-syntax-hermes-parser@0.29.1: dependencies: - bare-os: 3.6.2 - optional: true + hermes-parser: 0.29.1 - bare-semver@1.0.1: - optional: true + babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.0) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.0) + + babel-preset-jest@29.6.3(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) - bare-url@2.2.2: - dependencies: - bare-path: 3.0.0 - optional: true + balanced-match@1.0.2: {} base-x@3.0.11: dependencies: @@ -19792,23 +17973,12 @@ snapshots: base64url@3.0.1: {} - baseline-browser-mapping@2.8.25: {} - - bchaddrjs@0.5.2: - dependencies: - bs58check: 2.1.2 - buffer: 6.0.3 - cashaddrjs: 0.4.4 - stream-browserify: 3.0.0 + baseline-browser-mapping@2.10.29: {} bech32@1.1.4: {} bech32@2.0.0: {} - better-path-resolve@1.0.0: - dependencies: - is-windows: 1.0.2 - bfs-path@1.0.2: {} bidi-js@1.0.3: @@ -19822,6 +17992,8 @@ snapshots: big.js@6.2.2: {} + bignumber.js@11.1.1: {} + bignumber.js@9.1.2: {} bignumber.js@9.3.1: {} @@ -19870,41 +18042,36 @@ snapshots: blakejs@1.2.1: {} - bn.js@4.12.2: {} + bn.js@4.12.3: {} - bn.js@5.2.2: {} + bn.js@5.2.3: {} borsh@0.7.0: dependencies: - bn.js: 5.2.2 + bn.js: 5.2.3 bs58: 4.0.1 text-encoding-utf-8: 1.0.2 bowser@2.11.0: {} - bowser@2.13.1: - optional: true + bowser@2.14.1: {} boxen@7.0.0: dependencies: ansi-align: 3.0.1 camelcase: 7.0.1 - chalk: 5.4.1 + chalk: 5.6.2 cli-boxes: 3.0.0 string-width: 5.1.2 type-fest: 2.19.0 widest-line: 4.0.1 wrap-ansi: 8.1.0 - brace-expansion@1.1.11: + brace-expansion@1.1.14: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.2: - dependencies: - balanced-match: 1.0.2 - braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -19913,12 +18080,12 @@ snapshots: browser-resolve@2.0.0: dependencies: - resolve: 1.22.10 + resolve: 1.22.12 browserify-aes@1.2.0: dependencies: buffer-xor: 1.0.3 - cipher-base: 1.0.6 + cipher-base: 1.0.7 create-hash: 1.2.0 evp_bytestokey: 1.0.3 inherits: 2.0.4 @@ -19932,27 +18099,26 @@ snapshots: browserify-des@1.0.2: dependencies: - cipher-base: 1.0.6 + cipher-base: 1.0.7 des.js: 1.1.0 inherits: 2.0.4 safe-buffer: 5.2.1 browserify-rsa@4.1.1: dependencies: - bn.js: 5.2.2 + bn.js: 5.2.3 randombytes: 2.1.0 safe-buffer: 5.2.1 - browserify-sign@4.2.3: + browserify-sign@4.2.5: dependencies: - bn.js: 5.2.2 + bn.js: 5.2.3 browserify-rsa: 4.1.1 create-hash: 1.2.0 create-hmac: 1.1.7 elliptic: 6.6.1 - hash-base: 3.0.5 inherits: 2.0.4 - parse-asn1: 5.1.7 + parse-asn1: 5.1.9 readable-stream: 2.3.8 safe-buffer: 5.2.1 @@ -19960,13 +18126,13 @@ snapshots: dependencies: pako: 1.0.11 - browserslist@4.28.0: + browserslist@4.28.2: dependencies: - baseline-browser-mapping: 2.8.25 - caniuse-lite: 1.0.30001757 - electron-to-chromium: 1.5.250 - node-releases: 2.0.27 - update-browserslist-db: 1.1.4(browserslist@4.28.0) + baseline-browser-mapping: 2.10.29 + caniuse-lite: 1.0.30001792 + electron-to-chromium: 1.5.353 + node-releases: 2.0.44 + update-browserslist-db: 1.2.3(browserslist@4.28.2) bs58@4.0.1: dependencies: @@ -20024,17 +18190,17 @@ snapshots: c32check@2.0.0: dependencies: - '@noble/hashes': 1.1.5 + '@noble/hashes': 1.8.0 base-x: 4.0.1 - cac@6.7.14: {} + cac@7.0.0: {} call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 - call-bind@1.0.8: + call-bind@1.0.9: dependencies: call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 @@ -20046,7 +18212,7 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 - callsite@1.0.0: {} + call-me-maybe@1.0.2: {} callsites@3.1.0: {} @@ -20056,11 +18222,7 @@ snapshots: camelcase@7.0.1: {} - caniuse-lite@1.0.30001754: {} - - caniuse-lite@1.0.30001757: {} - - caniuse-lite@1.0.30001760: {} + caniuse-lite@1.0.30001792: {} cardinal@2.1.1: dependencies: @@ -20073,6 +18235,10 @@ snapshots: cbor-sync@1.0.4: {} + cbor@10.0.12: + dependencies: + nofilter: 3.1.0 + chacha-native@2.0.3: dependencies: bindings: 1.5.0 @@ -20087,16 +18253,21 @@ snapshots: optionalDependencies: chacha-native: 2.0.3 - chai@6.2.1: {} + chai@6.2.2: {} chain-registry@1.69.221: dependencies: - '@chain-registry/types': 0.50.136 + '@chain-registry/types': 0.50.355 chalk-template@0.4.0: dependencies: chalk: 4.1.2 + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -20104,30 +18275,20 @@ snapshots: chalk@5.0.1: {} - chalk@5.4.1: {} - chalk@5.6.2: {} - chardet@2.1.1: {} - - charenc@0.0.2: - optional: true - - chart.js@4.5.1: - dependencies: - '@kurkle/color': 0.3.4 - - chartjs-plugin-annotation@3.1.0(chart.js@4.5.1): - dependencies: - chart.js: 4.5.1 - chokidar@4.0.3: dependencies: readdirp: 4.1.2 + optional: true + + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 chrome-launcher@0.15.2: dependencies: - '@types/node': 25.0.2 + '@types/node': 25.7.0 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -20136,7 +18297,7 @@ snapshots: chromium-edge-launcher@0.2.0: dependencies: - '@types/node': 25.0.2 + '@types/node': 25.7.0 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -20149,10 +18310,13 @@ snapshots: ci-info@3.9.0: {} - cipher-base@1.0.6: + ci-info@4.4.0: {} + + cipher-base@1.0.7: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 + to-buffer: 1.2.2 classnames@2.5.1: {} @@ -20180,22 +18344,25 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - cliui@7.0.4: + cliui@8.0.1: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - cliui@8.0.1: + cliui@9.0.1: dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 + string-width: 7.2.0 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 - clsx@1.2.1: {} + clsx@1.2.1: + optional: true clsx@2.1.1: {} + cluster-key-slot@1.1.2: {} + color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -20205,7 +18372,7 @@ snapshots: color-string@1.9.1: dependencies: color-name: 1.1.4 - simple-swizzle: 0.2.2 + simple-swizzle: 0.2.4 color@4.2.3: dependencies: @@ -20216,8 +18383,6 @@ snapshots: dependencies: delayed-stream: 1.0.0 - commander@11.1.0: {} - commander@12.1.0: {} commander@13.1.0: {} @@ -20233,7 +18398,7 @@ snapshots: compressible@2.0.18: dependencies: - mime-db: 1.52.0 + mime-db: 1.54.0 compression@1.8.1: dependencies: @@ -20266,24 +18431,22 @@ snapshots: content-disposition@0.5.2: {} - conventional-changelog-angular@7.0.0: + conventional-changelog-angular@8.3.1: dependencies: compare-func: 2.0.0 - conventional-changelog-conventionalcommits@7.0.2: + conventional-changelog-conventionalcommits@9.3.1: dependencies: compare-func: 2.0.0 - conventional-commits-parser@5.0.0: + conventional-commits-parser@6.4.0: dependencies: - JSONStream: 1.3.5 - is-text-path: 2.0.0 - meow: 12.1.1 - split2: 4.2.0 + '@simple-libs/stream-utils': 1.2.0 + meow: 13.2.0 convert-source-map@2.0.0: {} - cookie-es@1.2.2: {} + cookie-es@1.2.3: {} cookie@1.1.1: {} @@ -20292,39 +18455,27 @@ snapshots: is-what: 3.14.1 optional: true - copy-to-clipboard@3.3.3: - dependencies: - toggle-selection: 1.0.6 - core-util-is@1.0.3: {} - cosmiconfig-typescript-loader@6.2.0(@types/node@25.0.2)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3): + cosmiconfig-typescript-loader@6.3.0(@types/node@25.7.0)(cosmiconfig@9.0.1(typescript@6.0.3))(typescript@6.0.3): dependencies: - '@types/node': 25.0.2 - cosmiconfig: 9.0.0(typescript@5.9.3) + '@types/node': 25.7.0 + cosmiconfig: 9.0.1(typescript@6.0.3) jiti: 2.6.1 - typescript: 5.9.3 - - cosmiconfig@7.1.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.1 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 + typescript: 6.0.3 - cosmiconfig@9.0.0(typescript@5.9.3): + cosmiconfig@9.0.1(typescript@6.0.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 js-yaml: 4.1.1 parse-json: 5.2.0 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 - cosmjs-types@0.9.0: {} + cosmjs-types@0.10.1: {} - crc-32@1.2.2: {} + cosmjs-types@0.9.0: {} crc@3.8.0: dependencies: @@ -20332,30 +18483,23 @@ snapshots: create-ecdh@4.0.4: dependencies: - bn.js: 4.12.2 + bn.js: 4.12.3 elliptic: 6.6.1 - create-hash@1.1.3: - dependencies: - cipher-base: 1.0.6 - inherits: 2.0.4 - ripemd160: 2.0.2 - sha.js: 2.4.12 - create-hash@1.2.0: dependencies: - cipher-base: 1.0.6 + cipher-base: 1.0.7 inherits: 2.0.4 md5.js: 1.3.5 - ripemd160: 2.0.2 + ripemd160: 2.0.3 sha.js: 2.4.12 create-hmac@1.1.7: dependencies: - cipher-base: 1.0.6 + cipher-base: 1.0.7 create-hash: 1.2.0 inherits: 2.0.4 - ripemd160: 2.0.2 + ripemd160: 2.0.3 safe-buffer: 5.2.1 sha.js: 2.4.12 @@ -20379,74 +18523,77 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - crossws@0.3.4: + crossws@0.3.5: dependencies: uncrypto: 0.1.3 - crypt@0.0.2: - optional: true + crypto-browserify@3.12.0: + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.5 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + inherits: 2.0.4 + pbkdf2: 3.1.5 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 crypto-browserify@3.12.1: dependencies: browserify-cipher: 1.0.1 - browserify-sign: 4.2.3 + browserify-sign: 4.2.5 create-ecdh: 4.0.4 create-hash: 1.2.0 create-hmac: 1.1.7 diffie-hellman: 5.0.3 hash-base: 3.0.5 inherits: 2.0.4 - pbkdf2: 3.1.3 + pbkdf2: 3.1.5 public-encrypt: 4.0.3 randombytes: 2.1.0 randomfill: 1.0.4 crypto-js@4.2.0: {} - css-tree@3.1.0: + css-tree@3.2.1: dependencies: - mdn-data: 2.12.2 + mdn-data: 2.27.1 source-map-js: 1.2.1 optional: true css-what@6.2.2: {} + css.escape@1.5.1: {} + cssesc@3.0.0: {} - cssstyle@5.3.4(postcss@8.5.6): + cssstyle@5.3.7: dependencies: - '@asamuzakjp/css-color': 4.1.0 - '@csstools/css-syntax-patches-for-csstree': 1.0.14(postcss@8.5.6) - css-tree: 3.1.0 - transitivePeerDependencies: - - postcss + '@asamuzakjp/css-color': 4.1.2 + '@csstools/css-syntax-patches-for-csstree': 1.1.3(css-tree@3.2.1) + css-tree: 3.2.1 + lru-cache: 11.3.6 optional: true - csstype@3.2.1: {} - csstype@3.2.3: {} - cuer@0.0.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3): + cuer@0.0.3(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(typescript@6.0.3): dependencies: qr: 0.5.0 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 - dargs@8.1.0: {} - - data-urls@6.0.0: + data-urls@6.0.1: dependencies: - whatwg-mimetype: 4.0.0 + whatwg-mimetype: 5.0.0 whatwg-url: 15.1.0 optional: true - date-fns@2.30.0: - dependencies: - '@babel/runtime': 7.28.4 - optional: true - date-fns@4.1.0: {} dayjs@1.11.13: {} @@ -20455,14 +18602,6 @@ snapshots: dependencies: ms: 2.0.0 - debug@4.3.4: - dependencies: - ms: 2.1.2 - - debug@4.4.0: - dependencies: - ms: 2.1.3 - debug@4.4.3: dependencies: ms: 2.1.3 @@ -20474,7 +18613,7 @@ snapshots: decode-uri-component@0.2.2: {} - dedent@1.7.0: {} + dedent@1.7.2: {} dedot@0.13.2(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: @@ -20512,7 +18651,7 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - defu@6.1.4: {} + defu@6.1.7: {} delay@4.4.1: {} @@ -20520,41 +18659,13 @@ snapshots: delayed-stream@1.0.0: {} - depcheck@1.4.7: - dependencies: - '@babel/parser': 7.28.5 - '@babel/traverse': 7.28.5 - '@vue/compiler-sfc': 3.5.24 - callsite: 1.0.0 - camelcase: 6.3.0 - cosmiconfig: 7.1.0 - debug: 4.4.3 - deps-regex: 0.2.0 - findup-sync: 5.0.0 - ignore: 5.3.2 - is-core-module: 2.16.1 - js-yaml: 3.14.1 - json5: 2.2.3 - lodash: 4.17.21 - minimatch: 7.4.6 - multimatch: 5.0.0 - please-upgrade-node: 3.2.0 - readdirp: 3.6.0 - require-package-name: 2.0.1 - resolve: 1.22.11 - resolve-from: 5.0.0 - semver: 7.7.3 - yargs: 16.2.0 - transitivePeerDependencies: - - supports-color + denque@2.1.0: {} depd@2.0.0: {} - deps-regex@0.2.0: {} - - derive-valtio@0.1.0(valtio@1.13.2(@types/react@19.0.10)(react@19.2.3)): + derive-valtio@0.1.0(valtio@1.13.2(@types/react@19.2.14)(react@19.2.6)): dependencies: - valtio: 1.13.2(@types/react@19.0.10)(react@19.2.3) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.6) des.js@1.1.0: dependencies: @@ -20563,7 +18674,7 @@ snapshots: deshape@0.1.0: {} - destr@2.0.3: {} + destr@2.0.5: {} destroy@1.2.0: {} @@ -20571,37 +18682,24 @@ snapshots: detect-europe-js@0.1.2: {} - detect-file@1.0.0: {} - - detect-indent@6.1.0: {} - - detect-libc@1.0.3: {} - - detect-libc@2.1.2: - optional: true + detect-libc@2.1.2: {} detect-node-es@1.1.0: {} diffie-hellman@5.0.3: dependencies: - bn.js: 4.12.2 + bn.js: 4.12.3 miller-rabin: 4.0.1 randombytes: 2.1.0 - digraph-js@2.2.4: - dependencies: - lodash.uniqwith: 4.5.0 - dijkstrajs@1.0.3: {} - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - dns-packet@5.6.1: dependencies: '@leichtgewicht/ip-codec': 2.0.5 + dom-accessibility-api@0.5.16: {} + dom-walk@0.1.2: {} domain-browser@4.22.0: {} @@ -20634,23 +18732,26 @@ snapshots: dependencies: safe-buffer: 5.2.1 - eciesjs@0.4.16: - dependencies: - '@ecies/ciphers': 0.2.5(@noble/ciphers@1.3.0) - '@noble/ciphers': 1.3.0 - '@noble/curves': 1.9.7 - '@noble/hashes': 1.8.0 - optional: true - ee-first@1.1.1: {} - effect@3.3.2: {} + effect@4.0.0-beta.68: + dependencies: + '@standard-schema/spec': 1.1.0 + fast-check: 4.8.0 + find-my-way-ts: 0.1.6 + ini: 7.0.0 + kubernetes-types: 1.30.0 + msgpackr: 2.0.1 + multipasta: 0.2.7 + toml: 4.1.1 + uuid: 14.0.0 + yaml: 2.9.0 - electron-to-chromium@1.5.250: {} + electron-to-chromium@1.5.353: {} elliptic@6.6.1: dependencies: - bn.js: 4.12.2 + bn.js: 4.12.3 brorand: 1.1.0 hash.js: 1.1.7 hmac-drbg: 1.0.1 @@ -20675,20 +18776,16 @@ snapshots: iconv-lite: 0.6.3 optional: true - end-of-stream@1.4.4: - dependencies: - once: 1.4.0 - end-of-stream@1.4.5: dependencies: once: 1.4.0 - engine.io-client@6.6.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): + engine.io-client@6.6.4(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.4 + debug: 4.4.3 engine.io-parser: 5.2.3 - ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) xmlhttprequest-ssl: 2.1.2 transitivePeerDependencies: - bufferutil @@ -20697,14 +18794,7 @@ snapshots: engine.io-parser@5.2.3: {} - enquirer@2.4.1: - dependencies: - ansi-colors: 4.1.3 - strip-ansi: 6.0.1 - - entities@4.5.0: {} - - entities@6.0.1: + entities@8.0.0: optional: true env-paths@2.2.1: {} @@ -20726,7 +18816,7 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@1.7.0: {} + es-module-lexer@2.1.0: {} es-object-atoms@1.1.1: dependencies: @@ -20737,47 +18827,24 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 - hasown: 2.0.2 + hasown: 2.0.3 es-toolkit@1.33.0: {} es-toolkit@1.39.3: {} + es-toolkit@1.44.0: {} + + es-toolkit@1.46.1: {} + + es6-promise@3.3.1: {} + es6-promise@4.2.8: {} es6-promisify@5.0.0: dependencies: es6-promise: 4.2.8 - esbuild@0.25.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.12 - '@esbuild/android-arm': 0.25.12 - '@esbuild/android-arm64': 0.25.12 - '@esbuild/android-x64': 0.25.12 - '@esbuild/darwin-arm64': 0.25.12 - '@esbuild/darwin-x64': 0.25.12 - '@esbuild/freebsd-arm64': 0.25.12 - '@esbuild/freebsd-x64': 0.25.12 - '@esbuild/linux-arm': 0.25.12 - '@esbuild/linux-arm64': 0.25.12 - '@esbuild/linux-ia32': 0.25.12 - '@esbuild/linux-loong64': 0.25.12 - '@esbuild/linux-mips64el': 0.25.12 - '@esbuild/linux-ppc64': 0.25.12 - '@esbuild/linux-riscv64': 0.25.12 - '@esbuild/linux-s390x': 0.25.12 - '@esbuild/linux-x64': 0.25.12 - '@esbuild/netbsd-arm64': 0.25.12 - '@esbuild/netbsd-x64': 0.25.12 - '@esbuild/openbsd-arm64': 0.25.12 - '@esbuild/openbsd-x64': 0.25.12 - '@esbuild/openharmony-arm64': 0.25.12 - '@esbuild/sunos-x64': 0.25.12 - '@esbuild/win32-arm64': 0.25.12 - '@esbuild/win32-ia32': 0.25.12 - '@esbuild/win32-x64': 0.25.12 - esbuild@0.27.0: optionalDependencies: '@esbuild/aix-ppc64': 0.27.0 @@ -20807,6 +18874,35 @@ snapshots: '@esbuild/win32-ia32': 0.27.0 '@esbuild/win32-x64': 0.27.0 + esbuild@0.28.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.0 + '@esbuild/android-arm': 0.28.0 + '@esbuild/android-arm64': 0.28.0 + '@esbuild/android-x64': 0.28.0 + '@esbuild/darwin-arm64': 0.28.0 + '@esbuild/darwin-x64': 0.28.0 + '@esbuild/freebsd-arm64': 0.28.0 + '@esbuild/freebsd-x64': 0.28.0 + '@esbuild/linux-arm': 0.28.0 + '@esbuild/linux-arm64': 0.28.0 + '@esbuild/linux-ia32': 0.28.0 + '@esbuild/linux-loong64': 0.28.0 + '@esbuild/linux-mips64el': 0.28.0 + '@esbuild/linux-ppc64': 0.28.0 + '@esbuild/linux-riscv64': 0.28.0 + '@esbuild/linux-s390x': 0.28.0 + '@esbuild/linux-x64': 0.28.0 + '@esbuild/netbsd-arm64': 0.28.0 + '@esbuild/netbsd-x64': 0.28.0 + '@esbuild/openbsd-arm64': 0.28.0 + '@esbuild/openbsd-x64': 0.28.0 + '@esbuild/openharmony-arm64': 0.28.0 + '@esbuild/sunos-x64': 0.28.0 + '@esbuild/win32-arm64': 0.28.0 + '@esbuild/win32-ia32': 0.28.0 + '@esbuild/win32-x64': 0.28.0 + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -20815,41 +18911,16 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-visitor-keys@3.4.3: {} - esprima@4.0.1: {} estree-walker@2.0.2: {} estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 etag@1.8.1: {} - eth-block-tracker@7.1.0: - dependencies: - '@metamask/eth-json-rpc-provider': 1.0.1 - '@metamask/safe-event-emitter': 3.1.2 - '@metamask/utils': 5.0.2 - json-rpc-random-id: 1.0.1 - pify: 3.0.0 - transitivePeerDependencies: - - supports-color - - eth-json-rpc-filters@6.0.1: - dependencies: - '@metamask/safe-event-emitter': 3.1.2 - async-mutex: 0.2.6 - eth-query: 2.1.2 - json-rpc-engine: 6.1.0 - pify: 5.0.0 - - eth-query@2.1.2: - dependencies: - json-rpc-random-id: 1.0.1 - xtend: 4.0.2 - eth-rpc-errors@4.0.3: dependencies: fast-safe-stringify: 2.1.1 @@ -20861,14 +18932,6 @@ snapshots: '@scure/bip32': 1.4.0 '@scure/bip39': 1.3.0 - ethereum-cryptography@3.2.0: - dependencies: - '@noble/ciphers': 1.3.0 - '@noble/curves': 1.9.0 - '@noble/hashes': 1.8.0 - '@scure/bip32': 1.7.0 - '@scure/bip39': 1.6.0 - ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@adraffy/ens-normalize': 1.10.1 @@ -20886,18 +18949,17 @@ snapshots: eval@0.1.8: dependencies: - '@types/node': 25.0.2 + '@types/node': 25.7.0 require-like: 0.1.2 event-target-shim@5.0.1: {} - eventemitter2@6.4.9: - optional: true - eventemitter3@4.0.7: {} eventemitter3@5.0.1: {} + eventemitter3@5.0.4: {} + events@3.3.0: {} eventsource@2.0.2: {} @@ -20921,37 +18983,30 @@ snapshots: exenv@1.2.2: {} - expand-tilde@2.0.2: - dependencies: - homedir-polyfill: 1.0.3 - expect-type@1.3.0: {} - exponential-backoff@3.1.3: {} + expect@30.4.1: + dependencies: + '@jest/expect-utils': 30.4.1 + '@jest/get-type': 30.1.0 + jest-matcher-utils: 30.4.1 + jest-message-util: 30.4.1 + jest-mock: 30.4.1 + jest-util: 30.4.1 - extendable-error@0.1.7: {} + exponential-backoff@3.1.3: {} extension-port-stream@2.1.1: dependencies: webextension-polyfill: 0.10.0 - extension-port-stream@3.0.0: - dependencies: - readable-stream: 4.7.0 - webextension-polyfill: 0.10.0 - optional: true - eyes@0.1.8: {} - fast-deep-equal@3.1.3: {} - - fast-glob@3.3.3: + fast-check@4.8.0: dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 + pure-rand: 8.4.0 + + fast-deep-equal@3.1.3: {} fast-json-stable-stringify@2.1.0: {} @@ -20961,11 +19016,21 @@ snapshots: fast-stable-stringify@1.0.0: {} - fast-uri@3.1.0: {} + fast-string-truncated-width@3.0.3: {} + + fast-string-width@3.0.2: + dependencies: + fast-string-truncated-width: 3.0.3 + + fast-uri@3.1.2: {} + + fast-wrap-ansi@0.2.0: + dependencies: + fast-string-width: 3.0.2 fastestsmallesttextencoderdecoder@1.0.22: {} - fastq@1.19.1: + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -20973,13 +19038,9 @@ snapshots: dependencies: bser: 2.1.1 - fd-package-json@2.0.0: - dependencies: - walk-up-path: 4.0.0 - - fdir@6.5.0(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 feaxios@0.0.23: dependencies: @@ -21010,6 +19071,8 @@ snapshots: transitivePeerDependencies: - supports-color + find-my-way-ts@0.1.6: {} + find-up@4.1.0: dependencies: locate-path: 5.0.0 @@ -21020,78 +19083,43 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - find-up@7.0.0: - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - unicorn-magic: 0.1.0 - - findup-sync@5.0.0: - dependencies: - detect-file: 1.0.0 - is-glob: 4.0.3 - micromatch: 4.0.8 - resolve-dir: 1.0.1 - flow-enums-runtime@0.0.6: {} - follow-redirects@1.15.11: {} + follow-redirects@1.16.0: {} for-each@0.3.5: dependencies: is-callable: 1.2.7 - form-data@4.0.4: + form-data@4.0.5: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 es-set-tostringtag: 2.1.0 - hasown: 2.0.2 + hasown: 2.0.3 mime-types: 2.1.35 - formatly@0.3.0: - dependencies: - fd-package-json: 2.0.0 - - fp-ts@2.5.0: {} - fraction.js@4.0.1: {} fraction.js@5.3.4: {} - framer-motion@12.23.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + framer-motion@12.38.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6): dependencies: - motion-dom: 12.23.23 - motion-utils: 12.23.6 + motion-dom: 12.38.0 + motion-utils: 12.36.0 tslib: 2.8.1 optionalDependencies: - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) fresh@0.5.2: {} fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.2.0 + jsonfile: 6.2.1 universalify: 2.0.1 - fs-extra@7.0.1: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs-extra@8.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs-tree-structure@0.0.5: - dependencies: - lodash-es: 4.17.21 - fs.realpath@1.0.0: {} fsevents@2.3.2: @@ -21106,7 +19134,7 @@ snapshots: get-caller-file@2.0.5: {} - get-east-asian-width@1.4.0: {} + get-east-asian-width@1.6.0: {} get-intrinsic@1.3.0: dependencies: @@ -21118,7 +19146,7 @@ snapshots: get-proto: 1.0.1 gopd: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 + hasown: 2.0.3 math-intrinsics: 1.1.0 get-nonce@1.0.1: {} @@ -21138,46 +19166,30 @@ snapshots: get-stream@6.0.1: {} - get-tsconfig@4.13.0: + get-tsconfig@4.14.0: dependencies: resolve-pkg-maps: 1.0.0 - git-raw-commits@4.0.0: - dependencies: - dargs: 8.1.0 - meow: 12.1.1 - split2: 4.2.0 - - glob-parent@5.1.2: + git-raw-commits@5.0.1(conventional-commits-parser@6.4.0): dependencies: - is-glob: 4.0.3 + '@conventional-changelog/git-client': 2.7.0(conventional-commits-parser@6.4.0) + meow: 13.2.0 + transitivePeerDependencies: + - conventional-commits-filter + - conventional-commits-parser glob@7.2.3: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.1.5 once: 1.4.0 path-is-absolute: 1.0.1 - global-directory@4.0.1: - dependencies: - ini: 4.1.1 - - global-modules@1.0.0: + global-directory@5.0.0: dependencies: - global-prefix: 1.0.2 - is-windows: 1.0.2 - resolve-dir: 1.0.1 - - global-prefix@1.0.2: - dependencies: - expand-tilde: 2.0.2 - homedir-polyfill: 1.0.3 - ini: 1.3.8 - is-windows: 1.0.2 - which: 1.3.1 + ini: 6.0.0 global@4.4.0: dependencies: @@ -21189,36 +19201,27 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - google-protobuf@3.21.4: {} gopd@1.2.0: {} graceful-fs@4.2.11: {} - graphql@16.12.0: {} + graphql@16.14.0: {} - h3@1.15.1: + h3@1.15.11: dependencies: - cookie-es: 1.2.2 - crossws: 0.3.4 - defu: 6.1.4 - destr: 2.0.3 + cookie-es: 1.2.3 + crossws: 0.3.5 + defu: 6.1.7 + destr: 2.0.5 iron-webcrypto: 1.2.1 - node-mock-http: 1.0.0 + node-mock-http: 1.0.4 radix3: 1.1.2 - ufo: 1.5.4 + ufo: 1.6.4 uncrypto: 0.1.3 - handlebars@4.7.8: + handlebars@4.7.9: dependencies: minimist: 1.2.8 neo-async: 2.6.2 @@ -21239,10 +19242,6 @@ snapshots: dependencies: has-symbols: 1.1.0 - hash-base@2.0.2: - dependencies: - inherits: 2.0.4 - hash-base@3.0.5: dependencies: inherits: 2.0.4 @@ -21255,6 +19254,8 @@ snapshots: safe-buffer: 5.2.1 to-buffer: 1.2.2 + hash-wasm@4.12.0: {} + hash.js@1.1.7: dependencies: inherits: 2.0.4 @@ -21262,23 +19263,26 @@ snapshots: hashlru@2.3.0: {} - hasown@2.0.2: + hasown@2.0.3: dependencies: function-bind: 1.1.2 - headers-polyfill@4.0.3: {} + headers-polyfill@5.0.1: + dependencies: + '@types/set-cookie-parser': 2.4.10 + set-cookie-parser: 3.1.0 hermes-estree@0.29.1: {} - hermes-estree@0.32.0: {} + hermes-estree@0.35.0: {} hermes-parser@0.29.1: dependencies: hermes-estree: 0.29.1 - hermes-parser@0.32.0: + hermes-parser@0.35.0: dependencies: - hermes-estree: 0.32.0 + hermes-estree: 0.35.0 hey-listen@1.0.8: {} @@ -21288,11 +19292,7 @@ snapshots: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - homedir-polyfill@1.0.3: - dependencies: - parse-passwd: 1.0.0 - - hono@4.11.0: + hono@4.12.18: optional: true html-encoding-sniffer@4.0.0: @@ -21304,12 +19304,12 @@ snapshots: dependencies: void-elements: 3.1.0 - http-errors@2.0.0: + http-errors@2.0.1: dependencies: depd: 2.0.0 inherits: 2.0.4 setprototypeof: 1.2.0 - statuses: 2.0.1 + statuses: 2.0.2 toidentifier: 1.0.1 http-proxy-agent@7.0.2: @@ -21320,6 +19320,8 @@ snapshots: - supports-color optional: true + http2-client@1.3.5: {} + https-browserify@1.0.0: {} https-proxy-agent@7.0.6: @@ -21329,8 +19331,6 @@ snapshots: transitivePeerDependencies: - supports-color - human-id@4.1.3: {} - human-signals@2.1.0: {} humanize-ms@1.2.1: @@ -21339,15 +19339,13 @@ snapshots: husky@9.1.7: {} - i18next-browser-languagedetector@8.2.0: + i18next-browser-languagedetector@8.2.1: dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.29.2 - i18next@25.7.2(typescript@5.9.3): - dependencies: - '@babel/runtime': 7.28.4 + i18next@26.1.0(typescript@6.0.3): optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 i@0.3.7: {} @@ -21356,22 +19354,12 @@ snapshots: safer-buffer: 2.1.2 optional: true - iconv-lite@0.7.0: - dependencies: - safer-buffer: 2.1.2 - - idb-keyval@6.2.1: {} - - idb-keyval@6.2.2: + idb-keyval@6.2.1: optional: true - ieee754@1.2.1: {} - - ignore-walk@6.0.5: - dependencies: - minimatch: 9.0.5 + idb-keyval@6.2.2: {} - ignore@5.3.2: {} + ieee754@1.2.1: {} image-size@0.5.5: optional: true @@ -21380,7 +19368,7 @@ snapshots: dependencies: queue: 6.0.2 - immutable@5.1.4: + immutable@5.1.5: optional: true import-fresh@3.3.1: @@ -21388,10 +19376,10 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-meta-resolve@4.2.0: {} - imurmurhash@0.1.4: {} + indent-string@4.0.0: {} + inflight@1.0.6: dependencies: once: 1.4.0 @@ -21401,7 +19389,9 @@ snapshots: ini@1.3.8: {} - ini@4.1.1: {} + ini@6.0.0: {} + + ini@7.0.0: {} int64-buffer@1.1.0: {} @@ -21409,11 +19399,21 @@ snapshots: dependencies: loose-envify: 1.4.0 - io-ts@2.2.22(fp-ts@2.5.0): + ioredis@5.10.1: dependencies: - fp-ts: 2.5.0 + '@ioredis/commands': 1.5.1 + cluster-key-slot: 1.1.2 + debug: 4.4.3 + denque: 2.1.0 + lodash.defaults: 4.2.0 + lodash.isarguments: 3.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color - ip-address@10.0.1: {} + ip-address@10.2.0: {} ip-address@9.0.5: dependencies: @@ -21429,22 +19429,18 @@ snapshots: is-arrayish@0.2.1: {} - is-arrayish@0.3.2: {} - - is-buffer@1.1.6: - optional: true + is-arrayish@0.3.4: {} is-callable@1.2.7: {} - is-core-module@2.16.1: + is-core-module@2.16.2: dependencies: - hasown: 2.0.2 + hasown: 2.0.3 is-docker@2.2.1: {} - is-docker@3.0.0: {} - - is-extglob@2.1.1: {} + is-extglob@2.1.1: + optional: true is-fullwidth-code-point@3.0.0: {} @@ -21458,16 +19454,13 @@ snapshots: is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - - is-inside-container@1.0.0: - dependencies: - is-docker: 3.0.0 + optional: true is-interactive@2.0.0: {} is-nan@1.3.2: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 is-node-process@1.2.0: {} @@ -21479,6 +19472,8 @@ snapshots: is-plain-obj@2.1.0: optional: true + is-plain-obj@4.1.0: {} + is-port-reachable@4.0.0: {} is-potential-custom-element-name@1.0.1: @@ -21489,10 +19484,7 @@ snapshots: call-bound: 1.0.4 gopd: 1.2.0 has-tostringtag: 1.0.2 - hasown: 2.0.2 - - is-retry-allowed@2.2.0: - optional: true + hasown: 2.0.3 is-retry-allowed@3.0.0: {} @@ -21500,20 +19492,10 @@ snapshots: is-stream@2.0.1: {} - is-subdir@1.2.0: - dependencies: - better-path-resolve: 1.0.0 - - is-text-path@2.0.0: - dependencies: - text-extensions: 2.4.0 - is-typed-array@1.1.15: dependencies: which-typed-array: 1.1.19 - is-typedarray@1.0.0: {} - is-unicode-supported@1.3.0: {} is-unicode-supported@2.1.0: {} @@ -21521,16 +19503,10 @@ snapshots: is-what@3.14.1: optional: true - is-windows@1.0.2: {} - is-wsl@2.2.0: dependencies: is-docker: 2.2.1 - is-wsl@3.1.0: - dependencies: - is-inside-container: 1.0.0 - isarray@0.0.1: {} isarray@1.0.0: {} @@ -21550,25 +19526,10 @@ snapshots: isomorphic-timers-promises@1.0.1: {} - isomorphic-unfetch@3.1.0(encoding@0.1.13): - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - unfetch: 4.2.0 - transitivePeerDependencies: - - encoding - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)): dependencies: ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - isomorphic-ws@5.0.0(ws@8.12.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): - dependencies: - ws: 8.12.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - - isows@1.0.3(ws@8.13.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): - dependencies: - ws: 8.13.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - isows@1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): dependencies: ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -21585,9 +19546,9 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.28.5 - '@babel/parser': 7.28.5 - '@istanbuljs/schema': 0.1.3 + '@babel/core': 7.29.0 + '@babel/parser': 7.29.3 + '@istanbuljs/schema': 0.1.6 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 transitivePeerDependencies: @@ -21613,12 +19574,19 @@ snapshots: - bufferutil - utf-8-validate + jest-diff@30.4.1: + dependencies: + '@jest/diff-sequences': 30.4.0 + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + pretty-format: 30.4.1 + jest-environment-node@29.7.0: dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 25.0.2 + '@types/node': 25.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -21628,7 +19596,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 25.0.2 + '@types/node': 25.7.0 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -21640,9 +19608,16 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + jest-matcher-utils@30.4.1: + dependencies: + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + jest-diff: 30.4.1 + pretty-format: 30.4.1 + jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.29.0 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -21652,22 +19627,52 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 + jest-message-util@30.4.1: + dependencies: + '@babel/code-frame': 7.29.0 + '@jest/types': 30.4.1 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-util: 30.4.1 + picomatch: 4.0.4 + pretty-format: 30.4.1 + slash: 3.0.0 + stack-utils: 2.0.6 + jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 25.0.2 + '@types/node': 25.7.0 jest-util: 29.7.0 + jest-mock@30.4.1: + dependencies: + '@jest/types': 30.4.1 + '@types/node': 25.7.0 + jest-util: 30.4.1 + jest-regex-util@29.6.3: {} + jest-regex-util@30.4.0: {} + jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 25.0.2 + '@types/node': 25.7.0 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 - picomatch: 2.3.1 + picomatch: 2.3.2 + + jest-util@30.4.1: + dependencies: + '@jest/types': 30.4.1 + '@types/node': 25.7.0 + chalk: 4.1.2 + ci-info: 4.4.0 + graceful-fs: 4.2.11 + picomatch: 4.0.4 jest-validate@29.7.0: dependencies: @@ -21680,14 +19685,14 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 25.0.2 + '@types/node': 25.7.0 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 jiti@2.6.1: {} - jose@6.1.3: + jiti@2.7.0: optional: true js-base64@3.7.8: {} @@ -21696,11 +19701,6 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - js-yaml@3.14.2: dependencies: argparse: 1.0.10 @@ -21716,31 +19716,30 @@ snapshots: jsc-safe-url@0.2.4: {} - jsdom@27.2.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@5.0.10): + jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: - '@acemir/cssom': 0.9.29 - '@asamuzakjp/dom-selector': 6.7.6 - cssstyle: 5.3.4(postcss@8.5.6) - data-urls: 6.0.0 + '@acemir/cssom': 0.9.31 + '@asamuzakjp/dom-selector': 6.8.1 + cssstyle: 5.3.7 + data-urls: 6.0.1 decimal.js: 10.6.0 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - parse5: 8.0.0 + parse5: 8.0.1 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 6.0.0 + tough-cookie: 6.0.1 w3c-xmlserializer: 5.0.0 - webidl-conversions: 8.0.0 + webidl-conversions: 8.0.1 whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 15.1.0 - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil - - postcss - supports-color - utf-8-validate optional: true @@ -21751,6 +19750,8 @@ snapshots: dependencies: bignumber.js: 9.3.1 + json-logic-js@2.0.5: {} + json-parse-even-better-errors@2.3.1: {} json-rpc-engine@6.1.0: @@ -21764,13 +19765,11 @@ snapshots: json-rpc-engine: 6.1.0 readable-stream: 2.3.8 - json-rpc-random-id@1.0.1: {} - json-schema-traverse@1.0.0: {} json-stable-stringify@1.3.0: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 call-bound: 1.0.4 isarray: 2.0.5 jsonify: 0.0.1 @@ -21780,11 +19779,7 @@ snapshots: json5@2.2.3: {} - jsonfile@4.0.0: - optionalDependencies: - graceful-fs: 4.2.11 - - jsonfile@6.2.0: + jsonfile@6.2.1: dependencies: universalify: 2.0.1 optionalDependencies: @@ -21792,8 +19787,6 @@ snapshots: jsonify@0.0.1: {} - jsonparse@1.3.1: {} - jsqr@1.4.0: {} jssha@3.2.0: {} @@ -21804,39 +19797,16 @@ snapshots: ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 - jws@4.0.0: + jws@4.0.1: dependencies: jwa: 2.0.1 safe-buffer: 5.2.1 jwt-decode@4.0.0: {} - keccak@3.0.4: - dependencies: - node-addon-api: 2.0.2 - node-gyp-build: 4.8.4 - readable-stream: 3.6.2 - keyvaluestorage-interface@1.0.0: {} - kleur@4.1.5: {} - - knip@5.73.4(@types/node@25.0.2)(typescript@5.9.3): - dependencies: - '@nodelib/fs.walk': 1.2.8 - '@types/node': 25.0.2 - fast-glob: 3.3.3 - formatly: 0.3.0 - jiti: 2.6.1 - js-yaml: 4.1.1 - minimist: 1.2.8 - oxc-resolver: 11.15.0 - picocolors: 1.1.1 - picomatch: 4.0.3 - smol-toml: 1.5.2 - strip-json-comments: 5.0.3 - typescript: 5.9.3 - zod: 4.1.13 + kubernetes-types@1.30.0: {} less@4.2.2: dependencies: @@ -21849,7 +19819,7 @@ snapshots: image-size: 0.5.5 make-dir: 2.1.0 mime: 1.6.0 - needle: 3.3.1 + needle: 3.5.0 source-map: 0.6.1 optional: true @@ -21857,10 +19827,16 @@ snapshots: libsodium-sumo@0.7.15: {} + libsodium-sumo@0.7.16: {} + libsodium-wrappers-sumo@0.7.15: dependencies: libsodium-sumo: 0.7.15 + libsodium-wrappers-sumo@0.7.16: + dependencies: + libsodium-sumo: 0.7.16 + lighthouse-logger@1.4.2: dependencies: debug: 2.6.9 @@ -21868,25 +19844,74 @@ snapshots: transitivePeerDependencies: - supports-color + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + lines-and-columns@1.2.4: {} lit-element@3.3.3: dependencies: - '@lit-labs/ssr-dom-shim': 1.4.0 + '@lit-labs/ssr-dom-shim': 1.5.1 '@lit/reactive-element': 1.6.3 lit-html: 2.8.0 - lit-element@4.2.1: + lit-element@4.2.2: dependencies: - '@lit-labs/ssr-dom-shim': 1.4.0 - '@lit/reactive-element': 2.1.1 - lit-html: 3.3.1 + '@lit-labs/ssr-dom-shim': 1.5.1 + '@lit/reactive-element': 2.1.2 + lit-html: 3.3.2 lit-html@2.8.0: dependencies: '@types/trusted-types': 2.0.7 - lit-html@3.3.1: + lit-html@3.3.2: dependencies: '@types/trusted-types': 2.0.7 @@ -21898,15 +19923,15 @@ snapshots: lit@3.1.0: dependencies: - '@lit/reactive-element': 2.1.1 - lit-element: 4.2.1 - lit-html: 3.3.1 + '@lit/reactive-element': 2.1.2 + lit-element: 4.2.2 + lit-html: 3.3.2 lit@3.3.0: dependencies: - '@lit/reactive-element': 2.1.1 - lit-element: 4.2.1 - lit-html: 3.3.1 + '@lit/reactive-element': 2.1.2 + lit-element: 4.2.2 + lit-html: 3.3.2 locate-path@5.0.0: dependencies: @@ -21916,40 +19941,26 @@ snapshots: dependencies: p-locate: 5.0.0 - locate-path@7.2.0: - dependencies: - p-locate: 6.0.0 - - lodash-es@4.17.21: {} - - lodash.camelcase@4.3.0: {} + lodash-es@4.18.1: {} lodash.clonedeep@4.5.0: {} - lodash.isequal@4.5.0: {} + lodash.defaults@4.2.0: {} - lodash.isplainobject@4.0.6: {} + lodash.isarguments@3.1.0: {} - lodash.kebabcase@4.1.1: {} + lodash.isequal@4.5.0: {} lodash.merge@4.6.2: {} - lodash.mergewith@4.6.2: {} - - lodash.snakecase@4.1.1: {} - - lodash.startcase@4.4.0: {} - lodash.throttle@4.1.1: {} - lodash.uniq@4.5.0: {} - lodash.uniqwith@4.5.0: {} - lodash.upperfirst@4.3.1: {} - lodash@4.17.21: {} + lodash@4.18.1: {} + log-symbols@6.0.0: dependencies: chalk: 5.6.2 @@ -21961,7 +19972,7 @@ snapshots: long@5.2.5: {} - long@5.3.1: {} + long@5.3.2: {} loose-envify@1.4.0: dependencies: @@ -21971,8 +19982,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.2.4: - optional: true + lru-cache@11.3.6: {} lru-cache@5.1.1: dependencies: @@ -21998,35 +20008,24 @@ snapshots: marky@1.3.0: {} - matchit@1.1.0: - dependencies: - '@arr/every': 1.0.1 - math-intrinsics@1.1.0: {} md5.js@1.3.5: dependencies: - hash-base: 3.0.5 + hash-base: 3.1.2 inherits: 2.0.4 safe-buffer: 5.2.1 - md5@2.3.0: - dependencies: - charenc: 0.0.2 - crypt: 0.0.2 - is-buffer: 1.1.6 - optional: true - - mdn-data@2.12.2: + mdn-data@2.27.1: optional: true media-query-parser@2.0.2: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.29.2 memoize-one@5.2.1: {} - meow@12.1.1: {} + meow@13.2.0: {} merge-options@3.0.4: dependencies: @@ -22035,54 +20034,51 @@ snapshots: merge-stream@2.0.0: {} - merge2@1.4.1: {} - - meriyah@4.5.0: {} - - metro-babel-transformer@0.83.3: + metro-babel-transformer@0.83.7: dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.0 flow-enums-runtime: 0.0.6 - hermes-parser: 0.32.0 + hermes-parser: 0.35.0 + metro-cache-key: 0.83.7 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - metro-cache-key@0.83.3: + metro-cache-key@0.83.7: dependencies: flow-enums-runtime: 0.0.6 - metro-cache@0.83.3: + metro-cache@0.83.7: dependencies: exponential-backoff: 3.1.3 flow-enums-runtime: 0.0.6 https-proxy-agent: 7.0.6 - metro-core: 0.83.3 + metro-core: 0.83.7 transitivePeerDependencies: - supports-color - metro-config@0.83.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): + metro-config@0.83.7(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: connect: 3.7.0 flow-enums-runtime: 0.0.6 jest-validate: 29.7.0 - metro: 0.83.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - metro-cache: 0.83.3 - metro-core: 0.83.3 - metro-runtime: 0.83.3 - yaml: 2.8.2 + metro: 0.83.7(bufferutil@4.0.9)(utf-8-validate@5.0.10) + metro-cache: 0.83.7 + metro-core: 0.83.7 + metro-runtime: 0.83.7 + yaml: 2.9.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - metro-core@0.83.3: + metro-core@0.83.7: dependencies: flow-enums-runtime: 0.0.6 lodash.throttle: 4.1.1 - metro-resolver: 0.83.3 + metro-resolver: 0.83.7 - metro-file-map@0.83.3: + metro-file-map@0.83.7: dependencies: debug: 4.4.3 fb-watchman: 2.0.2 @@ -22096,113 +20092,111 @@ snapshots: transitivePeerDependencies: - supports-color - metro-minify-terser@0.83.3: + metro-minify-terser@0.83.7: dependencies: flow-enums-runtime: 0.0.6 - terser: 5.44.1 + terser: 5.47.1 - metro-resolver@0.83.3: + metro-resolver@0.83.7: dependencies: flow-enums-runtime: 0.0.6 - metro-runtime@0.83.3: + metro-runtime@0.83.7: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.29.2 flow-enums-runtime: 0.0.6 - metro-source-map@0.83.3: + metro-source-map@0.83.7: dependencies: - '@babel/traverse': 7.28.5 - '@babel/traverse--for-generate-function-map': '@babel/traverse@7.28.5' - '@babel/types': 7.28.5 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 flow-enums-runtime: 0.0.6 invariant: 2.2.4 - metro-symbolicate: 0.83.3 + metro-symbolicate: 0.83.7 nullthrows: 1.1.1 - ob1: 0.83.3 + ob1: 0.83.7 source-map: 0.5.7 vlq: 1.0.1 transitivePeerDependencies: - supports-color - metro-symbolicate@0.83.3: + metro-symbolicate@0.83.7: dependencies: flow-enums-runtime: 0.0.6 invariant: 2.2.4 - metro-source-map: 0.83.3 + metro-source-map: 0.83.7 nullthrows: 1.1.1 source-map: 0.5.7 vlq: 1.0.1 transitivePeerDependencies: - supports-color - metro-transform-plugins@0.83.3: + metro-transform-plugins@0.83.7: dependencies: - '@babel/core': 7.28.5 - '@babel/generator': 7.28.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - metro-transform-worker@0.83.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): + metro-transform-worker@0.83.7(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: - '@babel/core': 7.28.5 - '@babel/generator': 7.28.5 - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 flow-enums-runtime: 0.0.6 - metro: 0.83.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - metro-babel-transformer: 0.83.3 - metro-cache: 0.83.3 - metro-cache-key: 0.83.3 - metro-minify-terser: 0.83.3 - metro-source-map: 0.83.3 - metro-transform-plugins: 0.83.3 + metro: 0.83.7(bufferutil@4.0.9)(utf-8-validate@5.0.10) + metro-babel-transformer: 0.83.7 + metro-cache: 0.83.7 + metro-cache-key: 0.83.7 + metro-minify-terser: 0.83.7 + metro-source-map: 0.83.7 + metro-transform-plugins: 0.83.7 nullthrows: 1.1.1 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - metro@0.83.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): + metro@0.83.7(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: - '@babel/code-frame': 7.27.1 - '@babel/core': 7.28.5 - '@babel/generator': 7.28.5 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 - accepts: 1.3.8 - chalk: 4.1.2 + '@babel/code-frame': 7.29.0 + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/parser': 7.29.3 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + accepts: 2.0.0 ci-info: 2.0.0 connect: 3.7.0 debug: 4.4.3 error-stack-parser: 2.1.4 flow-enums-runtime: 0.0.6 graceful-fs: 4.2.11 - hermes-parser: 0.32.0 + hermes-parser: 0.35.0 image-size: 1.2.1 invariant: 2.2.4 jest-worker: 29.7.0 jsc-safe-url: 0.2.4 lodash.throttle: 4.1.1 - metro-babel-transformer: 0.83.3 - metro-cache: 0.83.3 - metro-cache-key: 0.83.3 - metro-config: 0.83.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - metro-core: 0.83.3 - metro-file-map: 0.83.3 - metro-resolver: 0.83.3 - metro-runtime: 0.83.3 - metro-source-map: 0.83.3 - metro-symbolicate: 0.83.3 - metro-transform-plugins: 0.83.3 - metro-transform-worker: 0.83.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - mime-types: 2.1.35 + metro-babel-transformer: 0.83.7 + metro-cache: 0.83.7 + metro-cache-key: 0.83.7 + metro-config: 0.83.7(bufferutil@4.0.9)(utf-8-validate@5.0.10) + metro-core: 0.83.7 + metro-file-map: 0.83.7 + metro-resolver: 0.83.7 + metro-runtime: 0.83.7 + metro-source-map: 0.83.7 + metro-symbolicate: 0.83.7 + metro-transform-plugins: 0.83.7 + metro-transform-worker: 0.83.7(bufferutil@4.0.9)(utf-8-validate@5.0.10) + mime-types: 3.0.2 nullthrows: 1.1.1 serialize-error: 2.1.0 source-map: 0.5.7 @@ -22214,22 +20208,22 @@ snapshots: - supports-color - utf-8-validate - micro-ftch@0.3.1: {} - micromatch@4.0.8: dependencies: braces: 3.0.3 - picomatch: 2.3.1 + picomatch: 2.3.2 miller-rabin@4.0.1: dependencies: - bn.js: 4.12.2 + bn.js: 4.12.3 brorand: 1.1.0 mime-db@1.33.0: {} mime-db@1.52.0: {} + mime-db@1.54.0: {} + mime-types@2.1.18: dependencies: mime-db: 1.33.0 @@ -22238,8 +20232,14 @@ snapshots: dependencies: mime-db: 1.52.0 + mime-types@3.0.2: + dependencies: + mime-db: 1.54.0 + mime@1.6.0: {} + mime@4.1.0: {} + mimic-fn@2.1.0: {} mimic-function@5.0.1: {} @@ -22248,55 +20248,50 @@ snapshots: dependencies: dom-walk: 0.1.2 + min-indent@1.0.1: {} + minimalistic-assert@1.0.1: {} minimalistic-crypto-utils@1.0.1: {} - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@7.4.6: - dependencies: - brace-expansion: 2.0.2 - - minimatch@9.0.5: + minimatch@3.1.5: dependencies: - brace-expansion: 2.0.2 + brace-expansion: 1.1.14 minimist@1.2.8: {} - mipd@0.0.7(typescript@5.9.3): + mipd@0.0.7(typescript@6.0.3): optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 mitt@3.0.1: {} - mixpanel-browser@2.72.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2): + mixpanel-browser@2.78.0: dependencies: - '@mixpanel/rrweb': 2.0.0-alpha.18.2 - '@mixpanel/rrweb-plugin-console-record': 2.0.0-alpha.18.2(@mixpanel/rrweb-utils@2.0.0-alpha.18.2)(@mixpanel/rrweb@2.0.0-alpha.18.2) - transitivePeerDependencies: - - '@mixpanel/rrweb-utils' + '@mixpanel/rrweb': 2.0.0-alpha.18.4 + '@mixpanel/rrweb-plugin-console-record': 2.0.0-alpha.18.4(@mixpanel/rrweb-utils@2.0.0-alpha.18.4)(@mixpanel/rrweb@2.0.0-alpha.18.4) + '@mixpanel/rrweb-utils': 2.0.0-alpha.18.4 + '@types/json-logic-js': 2.0.5 + json-logic-js: 2.0.5 mkdirp@1.0.4: {} - mlly@1.8.0: + mlly@1.8.2: dependencies: - acorn: 8.15.0 + acorn: 8.16.0 pathe: 2.0.3 pkg-types: 1.3.1 - ufo: 1.6.1 + ufo: 1.6.4 - mobx@6.13.7: {} + mobx@6.15.3: {} modern-ahocorasick@1.1.0: {} - motion-dom@12.23.23: + motion-dom@12.38.0: dependencies: - motion-utils: 12.23.6 + motion-utils: 12.36.0 - motion-utils@12.23.6: {} + motion-utils@12.36.0: {} motion@10.16.2: dependencies: @@ -22307,46 +20302,58 @@ snapshots: '@motionone/utils': 10.18.0 '@motionone/vue': 10.16.4 - motion@12.23.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + motion@12.38.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6): dependencies: - framer-motion: 12.23.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + framer-motion: 12.38.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6) tslib: 2.8.1 optionalDependencies: - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - - mri@1.2.0: {} + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) mrmime@2.0.1: {} ms@2.0.0: {} - ms@2.1.2: {} - ms@2.1.3: {} - msw@2.12.4(@types/node@25.0.2)(typescript@5.9.3): + msgpackr-extract@3.0.3: dependencies: - '@inquirer/confirm': 5.1.21(@types/node@25.0.2) - '@mswjs/interceptors': 0.40.0 - '@open-draft/deferred-promise': 2.2.0 + node-gyp-build-optional-packages: 5.2.2 + optionalDependencies: + '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 + optional: true + + msgpackr@2.0.1: + optionalDependencies: + msgpackr-extract: 3.0.3 + + msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3): + dependencies: + '@inquirer/confirm': 6.0.13(@types/node@25.7.0) + '@mswjs/interceptors': 0.41.9 + '@open-draft/deferred-promise': 3.0.0 '@types/statuses': 2.0.6 cookie: 1.1.1 - graphql: 16.12.0 - headers-polyfill: 4.0.3 + graphql: 16.14.0 + headers-polyfill: 5.0.1 is-node-process: 1.2.0 outvariant: 1.4.3 path-to-regexp: 6.3.0 picocolors: 1.1.1 - rettime: 0.7.0 + rettime: 0.11.11 statuses: 2.0.2 strict-event-emitter: 0.5.1 - tough-cookie: 6.0.0 - type-fest: 5.3.1 + tough-cookie: 6.0.1 + type-fest: 5.6.0 until-async: 3.0.2 yargs: 17.7.2 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 transitivePeerDependencies: - '@types/node' @@ -22354,59 +20361,47 @@ snapshots: multiformats@9.9.0: {} - multimatch@5.0.0: - dependencies: - '@types/minimatch': 3.0.5 - array-differ: 3.0.0 - array-union: 2.1.0 - arrify: 2.0.1 - minimatch: 3.1.2 - - mute-stream@2.0.0: {} + multipasta@0.2.7: {} - nan@2.22.2: {} + mute-stream@3.0.0: {} - nan@2.23.1: - optional: true + nan@2.23.1: {} nanoassert@2.0.0: {} - nanoid@3.3.11: {} - - nanospinner@1.2.2: - dependencies: - picocolors: 1.1.1 + nanoid@3.3.12: {} - needle@3.3.1: + needle@3.5.0: dependencies: iconv-lite: 0.6.3 - sax: 1.4.3 + sax: 1.6.0 optional: true - negotiator@0.6.3: {} - negotiator@0.6.4: {} + negotiator@1.0.0: {} + neo-async@2.6.2: {} - next@16.0.10(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.85.0): + next@16.2.6(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(sass@1.85.0): dependencies: - '@next/env': 16.0.10 + '@next/env': 16.2.6 '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001760 + baseline-browser-mapping: 2.10.29 + caniuse-lite: 1.0.30001792 postcss: 8.4.31 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - styled-jsx: 5.1.6(react@19.2.3) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + styled-jsx: 5.1.6(react@19.2.6) optionalDependencies: - '@next/swc-darwin-arm64': 16.0.10 - '@next/swc-darwin-x64': 16.0.10 - '@next/swc-linux-arm64-gnu': 16.0.10 - '@next/swc-linux-arm64-musl': 16.0.10 - '@next/swc-linux-x64-gnu': 16.0.10 - '@next/swc-linux-x64-musl': 16.0.10 - '@next/swc-win32-arm64-msvc': 16.0.10 - '@next/swc-win32-x64-msvc': 16.0.10 + '@next/swc-darwin-arm64': 16.2.6 + '@next/swc-darwin-x64': 16.2.6 + '@next/swc-linux-arm64-gnu': 16.2.6 + '@next/swc-linux-arm64-musl': 16.2.6 + '@next/swc-linux-x64-gnu': 16.2.6 + '@next/swc-linux-x64-musl': 16.2.6 + '@next/swc-win32-arm64-msvc': 16.2.6 + '@next/swc-win32-x64-msvc': 16.2.6 babel-plugin-react-compiler: 1.0.0 sass: 1.85.0 sharp: 0.34.5 @@ -22416,21 +20411,24 @@ snapshots: nock@13.5.4: dependencies: - debug: 4.4.0 + debug: 4.4.3 json-stringify-safe: 5.0.1 propagate: 2.0.1 transitivePeerDependencies: - supports-color - node-addon-api@2.0.2: {} - node-addon-api@3.2.1: {} - node-addon-api@7.1.1: {} + node-addon-api@7.1.1: + optional: true + + node-addon-api@8.7.0: {} - node-addon-api@8.5.0: {} + node-fetch-h2@2.3.0: + dependencies: + http2-client: 1.3.5 - node-fetch-native@1.6.6: {} + node-fetch-native@1.6.7: {} node-fetch@2.7.0(encoding@0.1.13): dependencies: @@ -22438,13 +20436,22 @@ snapshots: optionalDependencies: encoding: 0.1.13 + node-gyp-build-optional-packages@5.2.2: + dependencies: + detect-libc: 2.1.2 + optional: true + node-gyp-build@4.8.4: {} node-int64@0.4.0: {} - node-mock-http@1.0.0: {} + node-mock-http@1.0.4: {} + + node-readfiles@0.2.0: + dependencies: + es6-promise: 3.3.1 - node-releases@2.0.27: {} + node-releases@2.0.44: {} node-stdlib-browser@1.3.1: dependencies: @@ -22476,9 +20483,9 @@ snapshots: util: 0.12.5 vm-browserify: 1.1.2 - normalize-path@3.0.0: {} + nofilter@3.1.0: {} - normalize-range@0.1.2: {} + normalize-path@3.0.0: {} npm-run-path@4.0.1: dependencies: @@ -22488,16 +20495,40 @@ snapshots: nullthrows@1.1.1: {} - ob1@0.83.3: + oas-kit-common@1.0.8: dependencies: - flow-enums-runtime: 0.0.6 + fast-safe-stringify: 2.1.1 - obj-multiplex@1.0.0: + oas-linter@3.2.2: dependencies: - end-of-stream: 1.4.5 - once: 1.4.0 - readable-stream: 2.3.8 - optional: true + '@exodus/schemasafe': 1.3.0 + should: 13.2.3 + yaml: 1.10.3 + + oas-resolver@2.5.6: + dependencies: + node-fetch-h2: 2.3.0 + oas-kit-common: 1.0.8 + reftools: 1.1.9 + yaml: 1.10.3 + yargs: 17.7.2 + + oas-schema-walker@1.1.5: {} + + oas-validator@5.0.8: + dependencies: + call-me-maybe: 1.0.2 + oas-kit-common: 1.0.8 + oas-linter: 3.2.2 + oas-resolver: 2.5.6 + oas-schema-walker: 1.1.5 + reftools: 1.1.9 + should: 13.2.3 + yaml: 1.10.3 + + ob1@0.83.7: + dependencies: + flow-enums-runtime: 0.0.6 object-assign@4.1.1: {} @@ -22505,14 +20536,14 @@ snapshots: object-is@1.1.6: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 object-keys@1.1.1: {} object.assign@4.1.7: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.1 @@ -22523,11 +20554,11 @@ snapshots: obug@2.1.1: {} - ofetch@1.4.1: + ofetch@1.5.1: dependencies: - destr: 2.0.3 - node-fetch-native: 1.6.6 - ufo: 1.5.4 + destr: 2.0.5 + node-fetch-native: 1.6.7 + ufo: 1.6.4 on-exit-leak-free@0.2.0: {} @@ -22560,14 +20591,6 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 - openapi-fetch@0.13.8: - dependencies: - openapi-typescript-helpers: 0.0.15 - optional: true - - openapi-typescript-helpers@0.0.15: - optional: true - ora@8.2.0: dependencies: chalk: 5.6.2 @@ -22578,90 +20601,87 @@ snapshots: log-symbols: 6.0.0 stdin-discarder: 0.2.2 string-width: 7.2.0 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 os-browserify@0.3.0: {} - outdent@0.5.0: {} - outvariant@1.4.3: {} - ox@0.6.7(typescript@5.9.3)(zod@3.25.76): + ox@0.14.20(typescript@6.0.3)(zod@3.22.4): dependencies: '@adraffy/ens-normalize': 1.11.1 - '@noble/curves': 1.8.1 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 - '@scure/bip32': 1.6.2 - '@scure/bip39': 1.5.4 - abitype: 1.0.8(typescript@5.9.3)(zod@3.25.76) + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.4(typescript@6.0.3)(zod@3.22.4) eventemitter3: 5.0.1 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 transitivePeerDependencies: - zod - ox@0.6.9(typescript@5.9.3)(zod@3.25.76): + ox@0.14.20(typescript@6.0.3)(zod@3.25.76): dependencies: '@adraffy/ens-normalize': 1.11.1 - '@noble/curves': 1.9.7 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.2(typescript@5.9.3)(zod@3.25.76) + abitype: 1.2.4(typescript@6.0.3)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 transitivePeerDependencies: - zod - optional: true - ox@0.7.1(typescript@5.9.3)(zod@3.25.76): + ox@0.6.7(typescript@6.0.3)(zod@3.25.76): dependencies: '@adraffy/ens-normalize': 1.11.1 - '@noble/ciphers': 1.3.0 - '@noble/curves': 1.9.2 + '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 - '@scure/bip39': 1.6.0 - abitype: 1.0.8(typescript@5.9.3)(zod@3.25.76) + '@scure/bip39': 1.5.4 + abitype: 1.2.4(typescript@6.0.3)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 transitivePeerDependencies: - zod - ox@0.9.17(typescript@5.9.3)(zod@4.1.13): + ox@0.6.9(typescript@6.0.3)(zod@3.25.76): dependencies: '@adraffy/ens-normalize': 1.11.1 - '@noble/ciphers': 1.3.0 - '@noble/curves': 1.9.1 + '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.2(typescript@5.9.3)(zod@4.1.13) + abitype: 1.2.4(typescript@6.0.3)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 transitivePeerDependencies: - zod optional: true - ox@0.9.3(typescript@5.9.3)(zod@3.25.76): + ox@0.7.1(typescript@6.0.3)(zod@3.25.76): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 - '@noble/curves': 1.9.1 + '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.2(typescript@5.9.3)(zod@3.25.76) + abitype: 1.2.4(typescript@6.0.3)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 transitivePeerDependencies: - zod - ox@0.9.6(typescript@5.9.3)(zod@3.22.4): + ox@0.9.17(typescript@6.0.3)(zod@4.4.3): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 @@ -22669,14 +20689,15 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.0(typescript@5.9.3)(zod@3.22.4) + abitype: 1.2.4(typescript@6.0.3)(zod@4.4.3) eventemitter3: 5.0.1 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 transitivePeerDependencies: - zod + optional: true - ox@0.9.6(typescript@5.9.3)(zod@3.25.76): + ox@0.9.3(typescript@6.0.3)(zod@3.25.76): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 @@ -22684,40 +20705,13 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.0(typescript@5.9.3)(zod@3.25.76) + abitype: 1.2.4(typescript@6.0.3)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 transitivePeerDependencies: - zod - oxc-resolver@11.15.0: - optionalDependencies: - '@oxc-resolver/binding-android-arm-eabi': 11.15.0 - '@oxc-resolver/binding-android-arm64': 11.15.0 - '@oxc-resolver/binding-darwin-arm64': 11.15.0 - '@oxc-resolver/binding-darwin-x64': 11.15.0 - '@oxc-resolver/binding-freebsd-x64': 11.15.0 - '@oxc-resolver/binding-linux-arm-gnueabihf': 11.15.0 - '@oxc-resolver/binding-linux-arm-musleabihf': 11.15.0 - '@oxc-resolver/binding-linux-arm64-gnu': 11.15.0 - '@oxc-resolver/binding-linux-arm64-musl': 11.15.0 - '@oxc-resolver/binding-linux-ppc64-gnu': 11.15.0 - '@oxc-resolver/binding-linux-riscv64-gnu': 11.15.0 - '@oxc-resolver/binding-linux-riscv64-musl': 11.15.0 - '@oxc-resolver/binding-linux-s390x-gnu': 11.15.0 - '@oxc-resolver/binding-linux-x64-gnu': 11.15.0 - '@oxc-resolver/binding-linux-x64-musl': 11.15.0 - '@oxc-resolver/binding-openharmony-arm64': 11.15.0 - '@oxc-resolver/binding-wasm32-wasi': 11.15.0 - '@oxc-resolver/binding-win32-arm64-msvc': 11.15.0 - '@oxc-resolver/binding-win32-ia32-msvc': 11.15.0 - '@oxc-resolver/binding-win32-x64-msvc': 11.15.0 - - p-filter@2.1.0: - dependencies: - p-map: 2.1.0 - p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -22726,10 +20720,6 @@ snapshots: dependencies: yocto-queue: 0.1.0 - p-limit@4.0.0: - dependencies: - yocto-queue: 1.2.2 - p-locate@4.1.0: dependencies: p-limit: 2.3.0 @@ -22738,25 +20728,15 @@ snapshots: dependencies: p-limit: 3.1.0 - p-locate@6.0.0: - dependencies: - p-limit: 4.0.0 - - p-map@2.1.0: {} - p-queue@9.0.0: dependencies: - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 p-timeout: 7.0.1 p-timeout@7.0.1: {} p-try@2.2.0: {} - package-manager-detector@0.2.11: - dependencies: - quansync: 0.2.11 - pako@1.0.11: {} pako@2.1.0: {} @@ -22765,20 +20745,17 @@ snapshots: dependencies: callsites: 3.1.0 - parse-asn1@5.1.7: + parse-asn1@5.1.9: dependencies: asn1.js: 4.10.1 browserify-aes: 1.2.0 evp_bytestokey: 1.0.3 - hash-base: 3.0.5 - pbkdf2: 3.1.3 + pbkdf2: 3.1.5 safe-buffer: 5.2.1 - parse-gitignore@2.0.0: {} - parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.29.0 error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -22786,11 +20763,9 @@ snapshots: parse-node-version@1.0.1: optional: true - parse-passwd@1.0.0: {} - - parse5@8.0.0: + parse5@8.0.1: dependencies: - entities: 6.0.1 + entities: 8.0.0 optional: true parseurl@1.3.3: {} @@ -22799,8 +20774,6 @@ snapshots: path-exists@4.0.0: {} - path-exists@5.0.0: {} - path-is-absolute@1.0.1: {} path-is-inside@1.0.2: {} @@ -22813,19 +20786,8 @@ snapshots: path-to-regexp@6.3.0: {} - path-type@4.0.0: {} - pathe@2.0.3: {} - pbkdf2@3.1.3: - dependencies: - create-hash: 1.1.3 - create-hmac: 1.1.7 - ripemd160: 2.0.1 - safe-buffer: 5.2.1 - sha.js: 2.4.12 - to-buffer: 1.2.2 - pbkdf2@3.1.5: dependencies: create-hash: 1.2.0 @@ -22837,15 +20799,12 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: {} - - picomatch@4.0.3: {} - - pify@3.0.0: {} + picomatch@2.3.2: {} - pify@4.0.1: {} + picomatch@4.0.4: {} - pify@5.0.0: {} + pify@4.0.1: + optional: true pino-abstract-transport@0.5.0: dependencies: @@ -22858,20 +20817,20 @@ snapshots: pino-std-serializers@4.0.0: {} - pino-std-serializers@7.0.0: {} + pino-std-serializers@7.1.0: {} pino@10.0.0: dependencies: atomic-sleep: 1.0.0 on-exit-leak-free: 2.1.2 pino-abstract-transport: 2.0.0 - pino-std-serializers: 7.0.0 + pino-std-serializers: 7.1.0 process-warning: 5.0.0 quick-format-unescaped: 4.0.4 real-require: 0.2.0 safe-stable-stringify: 2.5.0 slow-redact: 0.3.2 - sonic-boom: 4.2.0 + sonic-boom: 4.2.1 thread-stream: 3.1.0 pino@7.11.0: @@ -22890,10 +20849,6 @@ snapshots: pirates@4.0.7: {} - pixelmatch@7.1.0: - dependencies: - pngjs: 7.0.0 - pkg-dir@5.0.0: dependencies: find-up: 5.0.0 @@ -22901,48 +20856,37 @@ snapshots: pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.8.0 + mlly: 1.8.2 pathe: 2.0.3 - playwright-core@1.57.0: {} + playwright-core@1.60.0: {} - playwright@1.57.0: + playwright@1.60.0: dependencies: - playwright-core: 1.57.0 + playwright-core: 1.60.0 optionalDependencies: fsevents: 2.3.2 - please-upgrade-node@3.2.0: - dependencies: - semver-compare: 1.0.0 - pngjs@5.0.0: {} pngjs@7.0.0: {} - polka@0.5.2: - dependencies: - '@polka/url': 0.5.0 - trouter: 2.0.1 - - pony-cause@2.1.11: {} - - porto@0.2.35(@tanstack/react-query@5.90.12(react@19.2.3))(@types/react@19.0.10)(@wagmi/core@3.0.0(@tanstack/query-core@5.90.12)(@types/react@19.0.10)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@3.1.0): + porto@0.2.35(@tanstack/react-query@5.100.10(react@19.2.6))(@types/react@19.2.14)(@wagmi/core@3.4.11(@tanstack/query-core@5.100.10)(@types/react@19.2.14)(react@19.2.6)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.2.6))(viem@2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.2.6))(viem@2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@3.6.14): dependencies: - '@wagmi/core': 3.0.0(@tanstack/query-core@5.90.12)(@types/react@19.0.10)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) - hono: 4.11.0 + '@wagmi/core': 3.4.11(@tanstack/query-core@5.100.10)(@types/react@19.2.14)(react@19.2.6)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.2.6))(viem@2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + hono: 4.12.18 idb-keyval: 6.2.2 - mipd: 0.0.7(typescript@5.9.3) - ox: 0.9.17(typescript@5.9.3)(zod@4.1.13) - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - zod: 4.1.13 - zustand: 5.0.9(@types/react@19.0.10)(react@19.2.3)(use-sync-external-store@1.4.0(react@19.2.3)) + mipd: 0.0.7(typescript@6.0.3) + ox: 0.9.17(typescript@6.0.3)(zod@4.4.3) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) + zod: 4.4.3 + zustand: 5.0.13(@types/react@19.2.14)(react@19.2.6)(use-sync-external-store@1.4.0(react@19.2.6)) optionalDependencies: - '@tanstack/react-query': 5.90.12(react@19.2.3) - react: 19.2.3 - react-native: 0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10) - typescript: 5.9.3 - wagmi: 3.1.0(81f493ce3f77f1eeec2bc71ce4932d5f) + '@tanstack/react-query': 5.100.10(react@19.2.6) + react: 19.2.6 + react-native: 0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10) + typescript: 6.0.3 + wagmi: 3.6.14(@coinbase/wallet-sdk@4.3.6(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.2.6))(utf-8-validate@5.0.10)(zod@3.25.76))(@safe-global/safe-apps-provider@0.18.6(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@tanstack/query-core@5.100.10)(@tanstack/react-query@5.100.10(react@19.2.6))(@types/react@19.2.14)(@walletconnect/ethereum-provider@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(porto@0.2.35)(react@19.2.6)(typescript@6.0.3)(viem@2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)) transitivePeerDependencies: - '@types/react' - immer @@ -22955,26 +20899,22 @@ snapshots: postcss@8.4.31: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.12 picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.5.6: + postcss@8.5.14: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.12 picocolors: 1.1.1 source-map-js: 1.2.1 + preact@10.23.0: {} + preact@10.24.2: optional: true - preact@10.26.4: {} - - preact@10.28.0: {} - - prettier@2.8.8: {} - - prettier@3.7.4: {} + prettier@3.8.3: {} pretty-format@29.7.0: dependencies: @@ -22982,6 +20922,13 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 + pretty-format@30.4.1: + dependencies: + '@jest/schemas': 30.4.1 + ansi-styles: 5.2.0 + react-is-18: react-is@18.3.1 + react-is-19: react-is@19.2.6 + process-nextick-args@2.0.1: {} process-warning@1.0.0: {} @@ -23004,36 +20951,51 @@ snapshots: propagate@2.0.1: {} - protobufjs@6.11.4: + protobufjs@6.11.6: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.5 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.1 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.1 + '@types/long': 4.0.2 + '@types/node': 25.7.0 + long: 4.0.0 + + protobufjs@7.4.0: dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 + '@protobufjs/codegen': 2.0.5 '@protobufjs/eventemitter': 1.1.0 '@protobufjs/fetch': 1.1.0 '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 + '@protobufjs/inquire': 1.1.1 '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/long': 4.0.2 - '@types/node': 25.0.2 - long: 4.0.0 + '@protobufjs/utf8': 1.1.1 + '@types/node': 25.7.0 + long: 5.2.5 - protobufjs@7.4.0: + protobufjs@7.5.5: dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 + '@protobufjs/codegen': 2.0.5 '@protobufjs/eventemitter': 1.1.0 '@protobufjs/fetch': 1.1.0 '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 + '@protobufjs/inquire': 1.1.1 '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/node': 25.0.2 - long: 5.3.1 + '@protobufjs/utf8': 1.1.1 + '@types/node': 25.7.0 + long: 5.2.5 proxy-compare@2.5.1: {} @@ -23043,6 +21005,8 @@ snapshots: proxy-from-env@1.1.0: {} + proxy-from-env@2.1.0: {} + prr@1.0.1: optional: true @@ -23052,19 +21016,14 @@ snapshots: public-encrypt@4.0.3: dependencies: - bn.js: 4.12.2 + bn.js: 4.12.3 browserify-rsa: 4.1.1 create-hash: 1.2.0 - parse-asn1: 5.1.7 + parse-asn1: 5.1.9 randombytes: 2.1.0 safe-buffer: 5.2.1 - pump@3.0.2: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - - pump@3.0.3: + pump@3.0.4: dependencies: end-of-stream: 1.4.5 once: 1.4.0 @@ -23073,7 +21032,9 @@ snapshots: punycode@2.3.1: {} - purify-ts@2.1.0(patch_hash=5a25e93220157c14f071521854d75c4da38ec0e15fad1989f51e87be19c2fd63): + pure-rand@8.4.0: {} + + purify-ts@2.1.4(patch_hash=5a25e93220157c14f071521854d75c4da38ec0e15fad1989f51e87be19c2fd63): dependencies: '@types/json-schema': 7.0.15 @@ -23085,12 +21046,12 @@ snapshots: qr@0.5.0: {} - qrcode.react@1.0.1(react@19.2.3): + qrcode.react@1.0.1(react@19.2.6): dependencies: loose-envify: 1.4.0 prop-types: 15.8.1 qr.js: 0.0.0 - react: 19.2.3 + react: 19.2.6 qrcode@1.5.3: dependencies: @@ -23105,19 +21066,10 @@ snapshots: pngjs: 5.0.0 yargs: 15.4.1 - qs@6.14.0: + qs@6.15.1: dependencies: side-channel: 1.1.0 - quansync@0.2.11: {} - - query-string@6.14.1: - dependencies: - decode-uri-component: 0.2.2 - filter-obj: 1.1.0 - split-on-first: 1.1.0 - strict-uri-encode: 2.0.0 - query-string@7.1.3: dependencies: decode-uri-component: 0.2.2 @@ -23129,8 +21081,6 @@ snapshots: querystringify@2.2.0: {} - queue-microtask@1.2.3: {} - queue@6.0.2: dependencies: inherits: 2.0.4 @@ -23159,11 +21109,6 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-chartjs-2@5.3.1(chart.js@4.5.1)(react@19.2.3): - dependencies: - chart.js: 4.5.1 - react: 19.2.3 - react-devtools-core@6.1.5(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: shell-quote: 1.8.3 @@ -23172,56 +21117,58 @@ snapshots: - bufferutil - utf-8-validate - react-dom@19.2.3(react@19.2.3): + react-dom@19.2.6(react@19.2.6): dependencies: - react: 19.2.3 + react: 19.2.6 scheduler: 0.27.0 - react-i18next@16.5.0(i18next@25.7.2(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3)(typescript@5.9.3): + react-i18next@17.0.7(i18next@26.1.0(typescript@6.0.3))(react-dom@19.2.6(react@19.2.6))(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6)(typescript@6.0.3): dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.29.2 html-parse-stringify: 3.0.1 - i18next: 25.7.2(typescript@5.9.3) - react: 19.2.3 - use-sync-external-store: 1.6.0(react@19.2.3) + i18next: 26.1.0(typescript@6.0.3) + react: 19.2.6 + use-sync-external-store: 1.6.0(react@19.2.6) optionalDependencies: - react-dom: 19.2.3(react@19.2.3) - react-native: 0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10) - typescript: 5.9.3 + react-dom: 19.2.6(react@19.2.6) + react-native: 0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10) + typescript: 6.0.3 react-is@16.13.1: {} react-is@18.3.1: {} + react-is@19.2.6: {} + react-lifecycles-compat@3.0.4: {} - react-loading-skeleton@3.5.0(react@19.2.3): + react-loading-skeleton@3.5.0(react@19.2.6): dependencies: - react: 19.2.3 + react: 19.2.6 - react-modal@3.16.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-modal@3.16.3(react-dom@19.2.6(react@19.2.6))(react@19.2.6): dependencies: exenv: 1.2.2 prop-types: 15.8.1 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) react-lifecycles-compat: 3.0.4 warning: 4.0.3 - react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10): + react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10): dependencies: '@jest/create-cache-key-function': 29.7.0 '@react-native/assets-registry': 0.81.1 - '@react-native/codegen': 0.81.1(@babel/core@7.28.5) + '@react-native/codegen': 0.81.1(@babel/core@7.29.0) '@react-native/community-cli-plugin': 0.81.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@react-native/gradle-plugin': 0.81.1 '@react-native/js-polyfills': 0.81.1 '@react-native/normalize-colors': 0.81.1 - '@react-native/virtualized-lists': 0.81.1(@types/react@19.0.10)(react-native@0.81.1(@babel/core@7.28.5)(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.2.3)(utf-8-validate@5.0.10))(react@19.2.3) + '@react-native/virtualized-lists': 0.81.1(@types/react@19.2.14)(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10))(react@19.2.6) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 - babel-jest: 29.7.0(@babel/core@7.28.5) + babel-jest: 29.7.0(@babel/core@7.29.0) babel-plugin-syntax-hermes-parser: 0.29.1 base64-js: 1.5.1 commander: 12.1.0 @@ -23230,23 +21177,23 @@ snapshots: invariant: 2.2.4 jest-environment-node: 29.7.0 memoize-one: 5.2.1 - metro-runtime: 0.83.3 - metro-source-map: 0.83.3 + metro-runtime: 0.83.7 + metro-source-map: 0.83.7 nullthrows: 1.1.1 pretty-format: 29.7.0 promise: 8.3.0 - react: 19.2.3 + react: 19.2.6 react-devtools-core: 6.1.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) react-refresh: 0.14.2 regenerator-runtime: 0.13.11 scheduler: 0.26.0 - semver: 7.7.3 + semver: 7.8.0 stacktrace-parser: 0.1.11 whatwg-fetch: 3.6.20 ws: 6.2.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) yargs: 17.7.2 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 transitivePeerDependencies: - '@babel/core' - '@react-native-community/cli' @@ -23255,72 +21202,63 @@ snapshots: - supports-color - utf-8-validate - react-qr-reader@2.2.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-qr-reader@2.2.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6): dependencies: jsqr: 1.4.0 prop-types: 15.8.1 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) webrtc-adapter: 7.7.1 react-refresh@0.14.2: {} - react-refresh@0.18.0: {} - - react-remove-scroll-bar@2.3.8(@types/react@19.0.10)(react@19.2.3): + react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.6): dependencies: - react: 19.2.3 - react-style-singleton: 2.2.3(@types/react@19.0.10)(react@19.2.3) + react: 19.2.6 + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.6) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - react-remove-scroll@2.6.2(@types/react@19.0.10)(react@19.2.3): + react-remove-scroll@2.6.2(@types/react@19.2.14)(react@19.2.6): dependencies: - react: 19.2.3 - react-remove-scroll-bar: 2.3.8(@types/react@19.0.10)(react@19.2.3) - react-style-singleton: 2.2.3(@types/react@19.0.10)(react@19.2.3) + react: 19.2.6 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.6) + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.6) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.0.10)(react@19.2.3) - use-sidecar: 1.1.3(@types/react@19.0.10)(react@19.2.3) + use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.6) + use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - react-remove-scroll@2.7.1(@types/react@19.0.10)(react@19.2.3): + react-remove-scroll@2.7.1(@types/react@19.2.14)(react@19.2.6): dependencies: - react: 19.2.3 - react-remove-scroll-bar: 2.3.8(@types/react@19.0.10)(react@19.2.3) - react-style-singleton: 2.2.3(@types/react@19.0.10)(react@19.2.3) + react: 19.2.6 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.6) + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.6) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.0.10)(react@19.2.3) - use-sidecar: 1.1.3(@types/react@19.0.10)(react@19.2.3) + use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.6) + use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - react-router@7.10.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-router@7.15.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6): dependencies: cookie: 1.1.1 - react: 19.2.3 + react: 19.2.6 set-cookie-parser: 2.7.2 optionalDependencies: - react-dom: 19.2.3(react@19.2.3) + react-dom: 19.2.6(react@19.2.6) - react-style-singleton@2.2.3(@types/react@19.0.10)(react@19.2.3): + react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.6): dependencies: get-nonce: 1.0.1 - react: 19.2.3 + react: 19.2.6 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - react@19.2.3: {} - - read-yaml-file@1.1.0: - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.2 - pify: 4.0.1 - strip-bom: 3.0.0 + react@19.2.6: {} readable-stream@1.1.14: dependencies: @@ -23353,11 +21291,10 @@ snapshots: process: 0.11.10 string_decoder: 1.3.0 - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 + readdirp@4.1.2: + optional: true - readdirp@4.1.2: {} + readdirp@5.0.0: {} readonly-date@1.0.0: {} @@ -23365,10 +21302,23 @@ snapshots: real-require@0.2.0: {} + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + redeyed@2.1.1: dependencies: esprima: 4.0.1 + redis-errors@1.2.0: {} + + redis-parser@3.0.0: + dependencies: + redis-errors: 1.2.0 + + reftools@1.1.9: {} + regenerator-runtime@0.13.11: {} regenerator-runtime@0.14.1: {} @@ -23382,12 +21332,6 @@ snapshots: dependencies: rc: 1.2.8 - require-addon@1.1.0: - dependencies: - bare-addon-resolve: 1.9.4(bare-url@2.2.2) - bare-url: 2.2.2 - optional: true - require-directory@2.1.1: {} require-from-string@2.0.2: {} @@ -23396,32 +21340,20 @@ snapshots: require-main-filename@2.0.0: {} - require-package-name@2.0.1: {} - requires-port@1.0.0: {} reselect@5.1.1: {} - resolve-dir@1.0.1: - dependencies: - expand-tilde: 2.0.2 - global-modules: 1.0.0 - resolve-from@4.0.0: {} resolve-from@5.0.0: {} resolve-pkg-maps@1.0.0: {} - resolve@1.22.10: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - resolve@1.22.11: + resolve@1.22.12: dependencies: - is-core-module: 2.16.1 + es-errors: 1.3.0 + is-core-module: 2.16.2 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -23430,24 +21362,20 @@ snapshots: onetime: 7.0.0 signal-exit: 4.1.0 - rettime@0.7.0: {} + rettime@0.11.11: {} reusify@1.1.0: {} + rev-dep@2.13.2: + optionalDependencies: + '@rev-dep/darwin-arm64': 2.13.2 + '@rev-dep/linux-x64': 2.13.2 + '@rev-dep/win32-x64': 2.13.2 + rimraf@3.0.2: dependencies: glob: 7.2.3 - ripemd160@2.0.1: - dependencies: - hash-base: 2.0.2 - inherits: 2.0.4 - - ripemd160@2.0.2: - dependencies: - hash-base: 3.0.5 - inherits: 2.0.4 - ripemd160@2.0.3: dependencies: hash-base: 3.1.2 @@ -23461,7 +21389,7 @@ snapshots: - bufferutil - utf-8-validate - ripple-binary-codec@2.5.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): + ripple-binary-codec@2.7.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@xrplf/isomorphic': 1.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) bignumber.js: 9.3.1 @@ -23479,6 +21407,33 @@ snapshots: - bufferutil - utf-8-validate + rolldown-string@0.3.0(rolldown@1.0.0): + dependencies: + magic-string: 0.30.21 + optionalDependencies: + rolldown: 1.0.0 + + rolldown@1.0.0: + dependencies: + '@oxc-project/types': 0.129.0 + '@rolldown/pluginutils': 1.0.0 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0 + '@rolldown/binding-darwin-arm64': 1.0.0 + '@rolldown/binding-darwin-x64': 1.0.0 + '@rolldown/binding-freebsd-x64': 1.0.0 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0 + '@rolldown/binding-linux-arm64-gnu': 1.0.0 + '@rolldown/binding-linux-arm64-musl': 1.0.0 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0 + '@rolldown/binding-linux-s390x-gnu': 1.0.0 + '@rolldown/binding-linux-x64-gnu': 1.0.0 + '@rolldown/binding-linux-x64-musl': 1.0.0 + '@rolldown/binding-openharmony-arm64': 1.0.0 + '@rolldown/binding-wasm32-wasi': 1.0.0 + '@rolldown/binding-win32-arm64-msvc': 1.0.0 + '@rolldown/binding-win32-x64-msvc': 1.0.0 + rollup@4.53.3: dependencies: '@types/estree': 1.0.8 @@ -23506,6 +21461,7 @@ snapshots: '@rollup/rollup-win32-x64-gnu': 4.53.3 '@rollup/rollup-win32-x64-msvc': 4.53.3 fsevents: 2.3.3 + optional: true rpc-websockets@9.1.3: dependencies: @@ -23513,9 +21469,9 @@ snapshots: '@types/uuid': 8.3.4 '@types/ws': 8.18.1 buffer: 6.0.3 - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 uuid: 8.3.2 - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: bufferutil: 4.0.9 utf-8-validate: 5.0.10 @@ -23524,10 +21480,6 @@ snapshots: dependencies: sdp: 2.12.0 - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - rxjs@6.6.7: dependencies: tslib: 1.14.1 @@ -23548,24 +21500,25 @@ snapshots: safe-stable-stringify@2.5.0: {} - safer-buffer@2.1.2: {} + safer-buffer@2.1.2: + optional: true - salmon-adapter-sdk@1.1.1(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)): + salmon-adapter-sdk@1.1.1(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)): dependencies: - '@project-serum/sol-wallet-adapter': 0.2.6(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@project-serum/sol-wallet-adapter': 0.2.6(@solana/web3.js@1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@6.0.3)(utf-8-validate@5.0.10) eventemitter3: 4.0.7 sass@1.85.0: dependencies: chokidar: 4.0.3 - immutable: 5.1.4 + immutable: 5.1.5 source-map-js: 1.2.1 optionalDependencies: - '@parcel/watcher': 2.5.1 + '@parcel/watcher': 2.5.6 optional: true - sax@1.4.3: + sax@1.6.0: optional: true saxes@6.0.0: @@ -23581,8 +21534,6 @@ snapshots: sdp@2.12.0: {} - semver-compare@1.0.0: {} - semver@5.7.2: optional: true @@ -23594,21 +21545,23 @@ snapshots: semver@7.7.3: {} - send@0.19.0: + semver@7.8.0: {} + + send@0.19.2: dependencies: debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 fresh: 0.5.2 - http-errors: 2.0.0 + http-errors: 2.0.1 mime: 1.6.0 ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 - statuses: 2.0.1 + statuses: 2.0.2 transitivePeerDependencies: - supports-color @@ -23618,29 +21571,29 @@ snapshots: dependencies: type-fest: 0.20.2 - serve-handler@6.1.6: + serve-handler@6.1.7: dependencies: bytes: 3.0.0 content-disposition: 0.5.2 mime-types: 2.1.18 - minimatch: 3.1.2 + minimatch: 3.1.5 path-is-inside: 1.0.2 path-to-regexp: 3.3.0 range-parser: 1.2.0 - serve-static@1.16.2: + serve-static@1.16.3: dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.19.0 + send: 0.19.2 transitivePeerDependencies: - supports-color - serve@14.2.5: + serve@14.2.6: dependencies: '@zeit/schemas': 2.36.0 - ajv: 8.12.0 + ajv: 8.18.0 arg: 5.0.2 boxen: 7.0.0 chalk: 5.0.1 @@ -23648,7 +21601,7 @@ snapshots: clipboardy: 3.0.0 compression: 1.8.1 is-port-reachable: 4.0.0 - serve-handler: 6.1.6 + serve-handler: 6.1.7 update-check: 1.5.4 transitivePeerDependencies: - supports-color @@ -23657,6 +21610,8 @@ snapshots: set-cookie-parser@2.7.2: {} + set-cookie-parser@3.1.0: {} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -23678,9 +21633,9 @@ snapshots: sharp@0.34.5: dependencies: - '@img/colour': 1.0.0 + '@img/colour': 1.1.0 detect-libc: 2.1.2 - semver: 7.7.3 + semver: 7.8.0 optionalDependencies: '@img/sharp-darwin-arm64': 0.34.5 '@img/sharp-darwin-x64': 0.34.5 @@ -23716,7 +21671,33 @@ snapshots: shell-quote@1.8.3: {} - side-channel-list@1.0.0: + should-equal@2.0.0: + dependencies: + should-type: 1.4.0 + + should-format@3.0.3: + dependencies: + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + + should-type-adaptors@1.1.0: + dependencies: + should-type: 1.4.0 + should-util: 1.0.1 + + should-type@1.4.0: {} + + should-util@1.0.1: {} + + should@13.2.3: + dependencies: + should-equal: 2.0.0 + should-format: 3.0.3 + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + should-util: 1.0.1 + + side-channel-list@1.0.1: dependencies: es-errors: 1.3.0 object-inspect: 1.13.4 @@ -23740,7 +21721,7 @@ snapshots: dependencies: es-errors: 1.3.0 object-inspect: 1.13.4 - side-channel-list: 1.0.0 + side-channel-list: 1.0.1 side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 @@ -23750,15 +21731,9 @@ snapshots: signal-exit@4.1.0: {} - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - - sirv@2.0.4: + simple-swizzle@0.2.4: dependencies: - '@polka/url': 1.0.0-next.29 - mrmime: 2.0.1 - totalist: 3.0.1 + is-arrayish: 0.3.4 sirv@3.0.2: dependencies: @@ -23766,69 +21741,34 @@ snapshots: mrmime: 2.0.1 totalist: 3.0.1 - skott-webapp@2.3.0: - dependencies: - digraph-js: 2.2.4 - - skott@0.35.6: - dependencies: - '@parcel/watcher': 2.5.1 - '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.4.5) - commander: 11.1.0 - compression: 1.8.1 - depcheck: 1.4.7 - digraph-js: 2.2.4 - effect: 3.3.2 - estree-walker: 3.0.3 - fp-ts: 2.5.0 - fs-tree-structure: 0.0.5 - ignore-walk: 6.0.5 - io-ts: 2.2.22(fp-ts@2.5.0) - is-wsl: 3.1.0 - json5: 2.2.3 - kleur: 4.1.5 - lodash-es: 4.17.21 - meriyah: 4.5.0 - minimatch: 9.0.5 - nanospinner: 1.2.2 - parse-gitignore: 2.0.0 - polka: 0.5.2 - sirv: 2.0.4 - skott-webapp: 2.3.0 - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - slash@3.0.0: {} slow-redact@0.3.2: {} smart-buffer@4.2.0: {} - smol-toml@1.5.2: {} - smoldot@2.0.40(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate - socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): + socket.io-client@4.8.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.4 - engine.io-client: 6.6.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - socket.io-parser: 4.2.4 + debug: 4.4.3 + engine.io-client: 6.6.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) + socket.io-parser: 4.2.6 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - socket.io-parser@4.2.4: + socket.io-parser@4.2.6: dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.4 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -23836,25 +21776,20 @@ snapshots: dependencies: agent-base: 7.1.4 debug: 4.4.3 - socks: 2.8.7 + socks: 2.8.9 transitivePeerDependencies: - supports-color - socks@2.8.7: + socks@2.8.9: dependencies: - ip-address: 10.0.1 + ip-address: 10.2.0 smart-buffer: 4.2.0 - sodium-native@4.3.3: - dependencies: - require-addon: 1.1.0 - optional: true - sonic-boom@2.8.0: dependencies: atomic-sleep: 1.0.0 - sonic-boom@4.2.0: + sonic-boom@4.2.1: dependencies: atomic-sleep: 1.0.0 @@ -23869,11 +21804,6 @@ snapshots: source-map@0.6.1: {} - spawndamnit@3.0.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - split-on-first@1.1.0: {} split2@4.2.0: {} @@ -23894,6 +21824,8 @@ snapshots: dependencies: type-fest: 0.7.1 + standard-as-callback@2.1.0: {} + starknet@6.23.1(encoding@0.1.13): dependencies: '@noble/curves': 1.7.0 @@ -23912,11 +21844,9 @@ snapshots: statuses@1.5.0: {} - statuses@2.0.1: {} - statuses@2.0.2: {} - std-env@3.10.0: {} + std-env@4.1.0: {} stdin-discarder@0.2.2: {} @@ -23954,13 +21884,13 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + strip-ansi: 7.2.0 string-width@7.2.0: dependencies: emoji-regex: 10.6.0 - get-east-asian-width: 1.4.0 - strip-ansi: 7.1.2 + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 string_decoder@0.10.31: {} @@ -23976,28 +21906,22 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + strip-ansi@7.2.0: dependencies: ansi-regex: 6.2.2 - strip-ansi@7.1.2: - dependencies: - ansi-regex: 6.2.2 - - strip-bom@3.0.0: {} - strip-final-newline@2.0.0: {} - strip-json-comments@2.0.1: {} + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 - strip-json-comments@5.0.3: {} + strip-json-comments@2.0.1: {} - styled-jsx@5.1.6(react@19.2.3): + styled-jsx@5.1.6(react@19.2.6): dependencies: client-only: 0.0.1 - react: 19.2.3 - - superstruct@1.0.4: {} + react: 19.2.6 superstruct@2.0.2: {} @@ -24011,34 +21935,44 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + swagger2openapi@7.0.8(encoding@0.1.13): + dependencies: + call-me-maybe: 1.0.2 + node-fetch: 2.7.0(encoding@0.1.13) + node-fetch-h2: 2.3.0 + node-readfiles: 0.2.0 + oas-kit-common: 1.0.8 + oas-resolver: 2.5.6 + oas-schema-walker: 1.1.5 + oas-validator: 5.0.8 + reftools: 1.1.9 + yaml: 1.10.3 + yargs: 17.7.2 + transitivePeerDependencies: + - encoding + symbol-observable@2.0.3: {} symbol-tree@3.2.4: optional: true - symbol.inspect@1.0.1: {} - tagged-tag@1.0.0: {} - term-size@2.2.1: {} - - terser@5.44.1: + terser@5.47.1: dependencies: '@jridgewell/source-map': 0.3.11 - acorn: 8.15.0 + acorn: 8.16.0 commander: 2.20.3 source-map-support: 0.5.21 test-exclude@6.0.0: dependencies: - '@istanbuljs/schema': 0.1.3 + '@istanbuljs/schema': 0.1.6 glob: 7.2.3 - minimatch: 3.1.2 + minimatch: 3.1.5 text-encoding-utf-8@1.0.2: {} - text-extensions@2.4.0: {} - thread-stream@0.15.2: dependencies: real-require: 0.1.0 @@ -24049,8 +21983,6 @@ snapshots: throat@5.0.0: {} - through@2.3.8: {} - timers-browserify@2.0.12: dependencies: setimmediate: 1.0.5 @@ -24058,27 +21990,27 @@ snapshots: tiny-secp256k1@1.1.7: dependencies: bindings: 1.5.0 - bn.js: 4.12.2 + bn.js: 4.12.3 create-hmac: 1.1.7 elliptic: 6.6.1 - nan: 2.22.2 + nan: 2.23.1 tinybench@2.9.0: {} - tinyexec@1.0.2: {} + tinyexec@1.1.2: {} - tinyglobby@0.2.15: + tinyglobby@0.2.16: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 - tinyrainbow@3.0.3: {} + tinyrainbow@3.1.0: {} - tldts-core@7.0.19: {} + tldts-core@7.0.30: {} - tldts@7.0.19: + tldts@7.0.30: dependencies: - tldts-core: 7.0.19 + tldts-core: 7.0.30 tmpl@1.0.5: {} @@ -24092,12 +22024,12 @@ snapshots: dependencies: is-number: 7.0.0 - toggle-selection@1.0.6: {} - toidentifier@1.0.1: {} toml@3.0.0: {} + toml@4.1.1: {} + totalist@3.0.1: {} tough-cookie@4.1.4: @@ -24107,9 +22039,9 @@ snapshots: universalify: 0.2.0 url-parse: 1.5.10 - tough-cookie@6.0.0: + tough-cookie@6.0.1: dependencies: - tldts: 7.0.19 + tldts: 7.0.30 tr46@0.0.3: {} @@ -24118,30 +22050,22 @@ snapshots: punycode: 2.3.1 optional: true - tronweb@6.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): + tronweb@6.2.2(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@babel/runtime': 7.26.10 - axios: 1.12.2 + axios: 1.13.5 bignumber.js: 9.1.2 ethereum-cryptography: 2.2.1 ethers: 6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) eventemitter3: 5.0.1 google-protobuf: 3.21.4 semver: 7.7.1 - validator: 13.15.20 + validator: 13.15.23 transitivePeerDependencies: - bufferutil - debug - utf-8-validate - trouter@2.0.1: - dependencies: - matchit: 1.1.0 - - ts-api-utils@1.4.3(typescript@5.4.5): - dependencies: - typescript: 5.4.5 - ts-custom-error@3.3.1: {} ts-log@2.2.7: {} @@ -24157,38 +22081,20 @@ snapshots: tsx@4.21.0: dependencies: esbuild: 0.27.0 - get-tsconfig: 4.13.0 + get-tsconfig: 4.14.0 optionalDependencies: fsevents: 2.3.3 tty-browserify@0.0.1: {} - turbo-darwin-64@2.6.3: - optional: true - - turbo-darwin-arm64@2.6.3: - optional: true - - turbo-linux-64@2.6.3: - optional: true - - turbo-linux-arm64@2.6.3: - optional: true - - turbo-windows-64@2.6.3: - optional: true - - turbo-windows-arm64@2.6.3: - optional: true - - turbo@2.6.3: + turbo@2.9.12: optionalDependencies: - turbo-darwin-64: 2.6.3 - turbo-darwin-arm64: 2.6.3 - turbo-linux-64: 2.6.3 - turbo-linux-arm64: 2.6.3 - turbo-windows-64: 2.6.3 - turbo-windows-arm64: 2.6.3 + '@turbo/darwin-64': 2.9.12 + '@turbo/darwin-arm64': 2.9.12 + '@turbo/linux-64': 2.9.12 + '@turbo/linux-arm64': 2.9.12 + '@turbo/windows-64': 2.9.12 + '@turbo/windows-arm64': 2.9.12 tweetnacl-util@0.15.1: {} @@ -24202,7 +22108,7 @@ snapshots: type-fest@2.19.0: {} - type-fest@5.3.1: + type-fest@5.6.0: dependencies: tagged-tag: 1.0.0 @@ -24212,33 +22118,21 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.15 - typedarray-to-buffer@3.1.5: - dependencies: - is-typedarray: 1.0.0 - typeforce@1.18.0: {} - typescript@5.4.5: {} - - typescript@5.9.3: {} + typescript@6.0.3: {} ua-is-frozen@0.1.2: {} - ua-parser-js@1.0.40: {} + ua-parser-js@1.0.41: {} - ua-parser-js@2.0.4(encoding@0.1.13): + ua-parser-js@2.0.9: dependencies: - '@types/node-fetch': 2.6.13 detect-europe-js: 0.1.2 is-standalone-pwa: 0.1.1 - node-fetch: 2.7.0(encoding@0.1.13) ua-is-frozen: 0.1.2 - transitivePeerDependencies: - - encoding - - ufo@1.5.4: {} - ufo@1.6.1: {} + ufo@1.6.4: {} uglify-js@3.19.3: optional: true @@ -24272,18 +22166,16 @@ snapshots: undici-types@6.19.8: {} - undici-types@7.16.0: {} + undici-types@7.21.0: {} - unfetch@4.2.0: {} + undici-types@7.25.0: {} - unicorn-magic@0.1.0: {} + undici@8.3.0: {} unidragger@3.0.1: dependencies: ev-emitter: 2.1.2 - universalify@0.1.2: {} - universalify@0.2.0: {} universalify@2.0.1: {} @@ -24292,18 +22184,22 @@ snapshots: unpipe@1.0.0: {} - unplugin-macros@0.18.5(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + unplugin-macros@0.20.0(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(rolldown@1.0.0)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0): dependencies: + '@babel/types': 7.29.0 ast-kit: 2.2.0 magic-string-ast: 1.0.3 - unplugin: 2.3.11 - vite: 7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - vite-node: 5.2.0(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + rolldown-string: 0.3.0(rolldown@1.0.0) + unplugin: 3.0.0 + vite: 8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) + vite-node: 6.0.0(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' + - '@vitejs/devtools' + - esbuild - jiti - less - - lightningcss + - rolldown - sass - sass-embedded - stylus @@ -24312,31 +22208,31 @@ snapshots: - tsx - yaml - unplugin@2.3.11: + unplugin@3.0.0: dependencies: '@jridgewell/remapping': 2.3.5 - acorn: 8.15.0 - picomatch: 4.0.3 + picomatch: 4.0.4 webpack-virtual-modules: 0.6.2 - unstorage@1.15.0(idb-keyval@6.2.1): + unstorage@1.17.5(idb-keyval@6.2.2)(ioredis@5.10.1): dependencies: anymatch: 3.1.3 - chokidar: 4.0.3 - destr: 2.0.3 - h3: 1.15.1 - lru-cache: 10.4.3 - node-fetch-native: 1.6.6 - ofetch: 1.4.1 - ufo: 1.5.4 + chokidar: 5.0.0 + destr: 2.0.5 + h3: 1.15.11 + lru-cache: 11.3.6 + node-fetch-native: 1.6.7 + ofetch: 1.5.1 + ufo: 1.6.4 optionalDependencies: - idb-keyval: 6.2.1 + idb-keyval: 6.2.2 + ioredis: 5.10.1 until-async@3.0.2: {} - update-browserslist-db@1.1.4(browserslist@4.28.0): + update-browserslist-db@1.2.3(browserslist@4.28.2): dependencies: - browserslist: 4.28.0 + browserslist: 4.28.2 escalade: 3.2.0 picocolors: 1.1.1 @@ -24345,10 +22241,6 @@ snapshots: registry-auth-token: 3.3.2 registry-url: 3.1.0 - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - urijs@1.19.11: {} url-parse@1.5.10: @@ -24359,50 +22251,46 @@ snapshots: url@0.11.4: dependencies: punycode: 1.4.1 - qs: 6.14.0 + qs: 6.15.1 - usb@2.16.0: + usb@2.17.0: dependencies: - '@types/w3c-web-usb': 1.0.12 - node-addon-api: 8.5.0 + '@types/w3c-web-usb': 1.0.14 + node-addon-api: 8.7.0 node-gyp-build: 4.8.4 - use-callback-ref@1.3.3(@types/react@19.0.10)(react@19.2.3): + use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.6): dependencies: - react: 19.2.3 + react: 19.2.6 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - use-isomorphic-layout-effect@1.2.1(@types/react@19.0.10)(react@19.2.3): + use-isomorphic-layout-effect@1.2.1(@types/react@19.2.14)(react@19.2.6): dependencies: - react: 19.2.3 + react: 19.2.6 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - use-sidecar@1.1.3(@types/react@19.0.10)(react@19.2.3): + use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.6): dependencies: detect-node-es: 1.1.0 - react: 19.2.3 + react: 19.2.6 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.2.14 - use-sync-external-store@1.2.0(react@19.2.3): + use-sync-external-store@1.2.0(react@19.2.6): dependencies: - react: 19.2.3 + react: 19.2.6 - use-sync-external-store@1.4.0(react@19.2.3): + use-sync-external-store@1.4.0(react@19.2.6): dependencies: - react: 19.2.3 + react: 19.2.6 - use-sync-external-store@1.5.0(react@19.2.3): + use-sync-external-store@1.6.0(react@19.2.6): dependencies: - react: 19.2.3 - - use-sync-external-store@1.6.0(react@19.2.3): - dependencies: - react: 19.2.3 + react: 19.2.6 utf-8-validate@5.0.10: dependencies: @@ -24423,6 +22311,10 @@ snapshots: utils-merge@1.0.1: {} + uuid@11.1.1: {} + + uuid@14.0.0: {} + uuid@8.3.2: {} uuid@9.0.1: {} @@ -24432,31 +22324,31 @@ snapshots: '@types/uuid': 8.3.4 uuid: 8.3.2 - validator@13.15.20: {} + validator@13.15.23: {} - valtio@1.11.2(@types/react@19.0.10)(react@19.2.3): + valtio@1.11.2(@types/react@19.2.14)(react@19.2.6): dependencies: proxy-compare: 2.5.1 - use-sync-external-store: 1.2.0(react@19.2.3) + use-sync-external-store: 1.2.0(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 - react: 19.2.3 + '@types/react': 19.2.14 + react: 19.2.6 - valtio@1.13.2(@types/react@19.0.10)(react@19.2.3): + valtio@1.13.2(@types/react@19.2.14)(react@19.2.6): dependencies: - derive-valtio: 0.1.0(valtio@1.13.2(@types/react@19.0.10)(react@19.2.3)) + derive-valtio: 0.1.0(valtio@1.13.2(@types/react@19.2.14)(react@19.2.6)) proxy-compare: 2.6.0 - use-sync-external-store: 1.2.0(react@19.2.3) + use-sync-external-store: 1.2.0(react@19.2.6) optionalDependencies: - '@types/react': 19.0.10 - react: 19.2.3 + '@types/react': 19.2.14 + react: 19.2.6 - valtio@2.1.5(@types/react@19.0.10)(react@19.2.3): + valtio@2.1.5(@types/react@19.2.14)(react@19.2.6): dependencies: proxy-compare: 3.0.1 optionalDependencies: - '@types/react': 19.0.10 - react: 19.2.3 + '@types/react': 19.2.14 + react: 19.2.6 varuint-bitcoin@2.0.0: dependencies: @@ -24464,141 +22356,87 @@ snapshots: vary@1.1.2: {} - viem@0.3.50(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76): - dependencies: - '@adraffy/ens-normalize': 1.9.0 - '@noble/curves': 1.0.0 - '@noble/hashes': 1.3.0 - '@scure/bip32': 1.3.0 - '@scure/bip39': 1.2.0 - '@wagmi/chains': 1.0.0(typescript@5.9.3) - abitype: 0.8.7(typescript@5.9.3)(zod@3.25.76) - isomorphic-ws: 5.0.0(ws@8.12.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ws: 8.12.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - typescript - - utf-8-validate - - zod - - viem@1.21.4(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76): - dependencies: - '@adraffy/ens-normalize': 1.10.0 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/bip32': 1.3.2 - '@scure/bip39': 1.2.1 - abitype: 0.9.8(typescript@5.9.3)(zod@3.25.76) - isows: 1.0.3(ws@8.13.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ws: 8.13.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - - viem@2.23.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76): + viem@2.23.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76): dependencies: '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@scure/bip32': 1.6.2 '@scure/bip39': 1.5.4 - abitype: 1.0.8(typescript@5.9.3)(zod@3.25.76) + abitype: 1.0.8(typescript@6.0.3)(zod@3.25.76) isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.6.7(typescript@5.9.3)(zod@3.25.76) + ox: 0.6.7(typescript@6.0.3)(zod@3.25.76) ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - viem@2.31.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76): + viem@2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.0.8(typescript@5.9.3)(zod@3.25.76) + abitype: 1.0.8(typescript@6.0.3)(zod@3.25.76) isows: 1.0.7(ws@8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.7.1(typescript@5.9.3)(zod@3.25.76) + ox: 0.7.1(typescript@6.0.3)(zod@3.25.76) ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - viem@2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4): + viem@2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.0(typescript@5.9.3)(zod@3.22.4) + abitype: 1.2.3(typescript@6.0.3)(zod@3.22.4) isows: 1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.9.6(typescript@5.9.3)(zod@3.22.4) + ox: 0.14.20(typescript@6.0.3)(zod@3.22.4) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - viem@2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76): + viem@2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.0(typescript@5.9.3)(zod@3.25.76) + abitype: 1.2.3(typescript@6.0.3)(zod@3.25.76) isows: 1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.9.6(typescript@5.9.3)(zod@3.25.76) + ox: 0.14.20(typescript@6.0.3)(zod@3.25.76) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - vite-node@3.2.4(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): - dependencies: - cac: 6.7.14 - debug: 4.4.3 - es-module-lexer: 1.7.0 - pathe: 2.0.3 - vite: 7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - - vite-node@5.2.0(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite-node@6.0.0(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0): dependencies: - cac: 6.7.14 - es-module-lexer: 1.7.0 + cac: 7.0.0 + es-module-lexer: 2.1.0 obug: 2.1.1 pathe: 2.0.3 - vite: 7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' + - '@vitejs/devtools' + - esbuild - jiti - less - - lightningcss - sass - sass-embedded - stylus @@ -24607,79 +22445,69 @@ snapshots: - tsx - yaml - vite-plugin-node-polyfills@0.24.0(rollup@4.53.3)(vite@7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-node-polyfills@0.26.0(patch_hash=2f652eeb27eb59e7cd6a47bd85f51fe0133a1fdcd7fac68c42e21c232383a67a)(rollup@4.53.3)(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)): dependencies: '@rollup/plugin-inject': 5.0.5(rollup@4.53.3) node-stdlib-browser: 1.3.1 - vite: 7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) transitivePeerDependencies: - rollup - vite@7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0): dependencies: - esbuild: 0.25.12 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.53.3 - tinyglobby: 0.2.15 + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.14 + rolldown: 1.0.0 + tinyglobby: 0.2.16 optionalDependencies: - '@types/node': 25.0.2 + '@types/node': 25.7.0 + esbuild: 0.28.0 fsevents: 2.3.3 - jiti: 2.6.1 + jiti: 2.7.0 less: 4.2.2 sass: 1.85.0 - terser: 5.44.1 + terser: 5.47.1 tsx: 4.21.0 - yaml: 2.8.2 + yaml: 2.9.0 - vitest-browser-react@2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vitest@4.0.15): + vitest-browser-react@2.2.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(vitest@4.1.6): dependencies: - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - vitest: 4.0.15(@types/node@25.0.2)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@5.0.10))(less@4.2.2)(msw@2.12.4(@types/node@25.0.2)(typescript@5.9.3))(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + vitest: 4.1.6(@types/node@25.7.0)(@vitest/browser-playwright@4.1.6)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) - - vitest@4.0.15(@types/node@25.0.2)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@5.0.10))(less@4.2.2)(msw@2.12.4(@types/node@25.0.2)(typescript@5.9.3))(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): - dependencies: - '@vitest/expect': 4.0.15 - '@vitest/mocker': 4.0.15(msw@2.12.4(@types/node@25.0.2)(typescript@5.9.3))(vite@7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/pretty-format': 4.0.15 - '@vitest/runner': 4.0.15 - '@vitest/snapshot': 4.0.15 - '@vitest/spy': 4.0.15 - '@vitest/utils': 4.0.15 - es-module-lexer: 1.7.0 + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + vitest@4.1.6(@types/node@25.7.0)(@vitest/browser-playwright@4.1.6)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)): + dependencies: + '@vitest/expect': 4.1.6 + '@vitest/mocker': 4.1.6(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.6 + '@vitest/runner': 4.1.6 + '@vitest/snapshot': 4.1.6 + '@vitest/spy': 4.1.6 + '@vitest/utils': 4.1.6 + es-module-lexer: 2.1.0 expect-type: 1.3.0 magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.3 - std-env: 3.10.0 + picomatch: 4.0.4 + std-env: 4.1.0 tinybench: 2.9.0 - tinyexec: 1.0.2 - tinyglobby: 0.2.15 - tinyrainbow: 3.0.3 - vite: 7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + tinyexec: 1.1.2 + tinyglobby: 0.2.16 + tinyrainbow: 3.1.0 + vite: 8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 25.0.2 - '@vitest/browser-playwright': 4.0.15(bufferutil@4.0.9)(msw@2.12.4(@types/node@25.0.2)(typescript@5.9.3))(playwright@1.57.0)(utf-8-validate@5.0.10)(vite@7.2.7(@types/node@25.0.2)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15) - jsdom: 27.2.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@5.0.10) + '@types/node': 25.7.0 + '@vitest/browser-playwright': 4.1.6(bufferutil@4.0.9)(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(playwright@1.60.0)(utf-8-validate@5.0.10)(vite@8.0.12(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(less@4.2.2)(sass@1.85.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.6) + jsdom: 27.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - - jiti - - less - - lightningcss - msw - - sass - - sass-embedded - - stylus - - sugarss - - terser - - tsx - - yaml vlq@1.0.1: {} @@ -24692,31 +22520,29 @@ snapshots: xml-name-validator: 5.0.0 optional: true - wagmi@3.1.0(81f493ce3f77f1eeec2bc71ce4932d5f): + wagmi@3.6.14(@coinbase/wallet-sdk@4.3.6(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.2.6))(utf-8-validate@5.0.10)(zod@3.25.76))(@safe-global/safe-apps-provider@0.18.6(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@tanstack/query-core@5.100.10)(@tanstack/react-query@5.100.10(react@19.2.6))(@types/react@19.2.14)(@walletconnect/ethereum-provider@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.81.1(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.6)(utf-8-validate@5.0.10)))(@types/react@19.2.14)(bufferutil@4.0.9)(encoding@0.1.13)(ioredis@5.10.1)(react@19.2.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76))(porto@0.2.35)(react@19.2.6)(typescript@6.0.3)(viem@2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)): dependencies: - '@tanstack/react-query': 5.90.12(react@19.2.3) - '@wagmi/connectors': 7.0.2(37a2a4aaef016ce2a7480dad0bcdd1e6) - '@wagmi/core': 3.0.0(@tanstack/query-core@5.90.12)(@types/react@19.0.10)(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) - react: 19.2.3 - use-sync-external-store: 1.4.0(react@19.2.3) - viem: 2.42.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@tanstack/react-query': 5.100.10(react@19.2.6) + '@wagmi/connectors': 8.0.13(0c7b20ee390d6d12dd543c879c14f292) + '@wagmi/core': 3.4.11(@tanstack/query-core@5.100.10)(@types/react@19.2.14)(react@19.2.6)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.2.6))(viem@2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + react: 19.2.6 + use-sync-external-store: 1.4.0(react@19.2.6) + viem: 2.48.11(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.25.76) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 transitivePeerDependencies: - '@base-org/account' - '@coinbase/wallet-sdk' - - '@gemini-wallet/core' - - '@metamask/sdk' + - '@metamask/connect-evm' - '@safe-global/safe-apps-provider' - '@safe-global/safe-apps-sdk' - '@tanstack/query-core' - '@types/react' - '@walletconnect/ethereum-provider' + - accounts - immer - porto - walk-up-path@4.0.0: {} - walker@1.0.8: dependencies: makeerror: 1.0.12 @@ -24737,7 +22563,7 @@ snapshots: webidl-conversions@3.0.1: {} - webidl-conversions@8.0.0: + webidl-conversions@8.0.1: optional: true webpack-virtual-modules@0.6.2: {} @@ -24757,10 +22583,13 @@ snapshots: whatwg-mimetype@4.0.0: optional: true + whatwg-mimetype@5.0.0: + optional: true + whatwg-url@15.1.0: dependencies: tr46: 6.0.0 - webidl-conversions: 8.0.0 + webidl-conversions: 8.0.1 optional: true whatwg-url@5.0.0: @@ -24773,17 +22602,13 @@ snapshots: which-typed-array@1.1.19: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.8 + call-bind: 1.0.9 call-bound: 1.0.4 for-each: 0.3.5 get-proto: 1.0.1 gopd: 1.2.0 has-tostringtag: 1.0.2 - which@1.3.1: - dependencies: - isexe: 2.0.0 - which@2.0.2: dependencies: isexe: 2.0.0 @@ -24821,9 +22646,15 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.0 + strip-ansi: 7.2.0 + + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.2.0 wrappy@1.0.2: {} @@ -24844,16 +22675,6 @@ snapshots: bufferutil: 4.0.9 utf-8-validate: 5.0.10 - ws@8.12.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 5.0.10 - - ws@8.13.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 5.0.10 - ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): optionalDependencies: bufferutil: 4.0.9 @@ -24874,6 +22695,11 @@ snapshots: bufferutil: 4.0.9 utf-8-validate: 5.0.10 + ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.9 + utf-8-validate: 5.0.10 + xml-name-validator@5.0.0: optional: true @@ -24882,22 +22708,23 @@ snapshots: xmlhttprequest-ssl@2.1.2: {} - xrpl@4.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): + xrpl@4.4.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 '@xrplf/isomorphic': 1.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@xrplf/secret-numbers': 2.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bignumber.js: 9.3.1 - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 + fast-json-stable-stringify: 2.1.0 ripple-address-codec: 5.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - ripple-binary-codec: 2.5.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ripple-binary-codec: 2.7.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) ripple-keypairs: 2.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate - xstate@5.25.0: {} + xstate@5.31.1: {} xstream@11.14.0: dependencies: @@ -24912,19 +22739,19 @@ snapshots: yallist@3.1.1: {} - yaml@1.10.2: {} + yaml@1.10.3: {} - yaml@2.8.2: {} + yaml@2.9.0: {} yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 decamelize: 1.2.0 - yargs-parser@20.2.9: {} - yargs-parser@21.1.1: {} + yargs-parser@22.0.0: {} + yargs@15.4.1: dependencies: cliui: 6.0.0 @@ -24939,63 +22766,50 @@ snapshots: y18n: 4.0.3 yargs-parser: 18.1.3 - yargs@16.2.0: + yargs@17.7.2: dependencies: - cliui: 7.0.4 + cliui: 8.0.1 escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 - yargs-parser: 20.2.9 + yargs-parser: 21.1.1 - yargs@17.7.2: + yargs@18.0.0: dependencies: - cliui: 8.0.1 + cliui: 9.0.1 escalade: 3.2.0 get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 + string-width: 7.2.0 y18n: 5.0.8 - yargs-parser: 21.1.1 + yargs-parser: 22.0.0 yocto-queue@0.1.0: {} - yocto-queue@1.2.2: {} - - yoctocolors-cjs@2.1.3: {} - zod@3.22.4: {} zod@3.25.76: {} - zod@4.1.13: {} - - zustand@4.5.7(@types/react@19.0.10)(react@19.2.3): - dependencies: - use-sync-external-store: 1.6.0(react@19.2.3) - optionalDependencies: - '@types/react': 19.0.10 - react: 19.2.3 + zod@4.4.3: + optional: true - zustand@5.0.0(@types/react@19.0.10)(react@19.2.3)(use-sync-external-store@1.4.0(react@19.2.3)): + zustand@5.0.0(@types/react@19.2.14)(react@19.2.6)(use-sync-external-store@1.4.0(react@19.2.6)): optionalDependencies: - '@types/react': 19.0.10 - react: 19.2.3 - use-sync-external-store: 1.4.0(react@19.2.3) + '@types/react': 19.2.14 + react: 19.2.6 + use-sync-external-store: 1.4.0(react@19.2.6) - zustand@5.0.3(@types/react@19.0.10)(react@19.2.3)(use-sync-external-store@1.4.0(react@19.2.3)): + zustand@5.0.13(@types/react@19.2.14)(react@19.2.6)(use-sync-external-store@1.4.0(react@19.2.6)): optionalDependencies: - '@types/react': 19.0.10 - react: 19.2.3 - use-sync-external-store: 1.4.0(react@19.2.3) + '@types/react': 19.2.14 + react: 19.2.6 + use-sync-external-store: 1.4.0(react@19.2.6) optional: true - zustand@5.0.9(@types/react@19.0.10)(react@19.2.3)(use-sync-external-store@1.4.0(react@19.2.3)): + zustand@5.0.3(@types/react@19.2.14)(react@19.2.6)(use-sync-external-store@1.4.0(react@19.2.6)): optionalDependencies: - '@types/react': 19.0.10 - react: 19.2.3 - use-sync-external-store: 1.4.0(react@19.2.3) + '@types/react': 19.2.14 + react: 19.2.6 + use-sync-external-store: 1.4.0(react@19.2.6) optional: true - - zx@8.8.5: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 2ffe7bdc..e0d398dd 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,25 +1,107 @@ packages: - packages/* - packages/examples/* -onlyBuiltDependencies: - - '@biomejs/biome' - - '@parcel/watcher' - - '@swc/core' - - bigint-buffer - - bufferutil - - esbuild - - keccak - - lmdb - - msgpackr-extract - - msw - - protobufjs - - sharp - - tiny-secp256k1 - - utf-8-validate + +catalog: + "@biomejs/biome": ^2.4.15 + "@commitlint/cli": ^21.0.0 + "@commitlint/config-conventional": ^21.0.0 + "@cosmjs/amino": ^0.36.2 + "@cosmjs/encoding": 0.36.2 + "@cosmos-kit/core": 2.18.1 + "@cosmos-kit/keplr": ^2.17.1 + "@cosmos-kit/leap": ^2.17.1 + "@cosmos-kit/walletconnect": 2.15.1 + "@effect/openapi-generator": 4.0.0-beta.68 + "@effect/platform-node": 4.0.0-beta.68 + "@faker-js/faker": ^10.4.0 + "@ledgerhq/wallet-api-client": ^1.14.0 + "@ledgerhq/wallet-api-core": ^1.30.0 + "@luno-kit/core": ^0.0.13 + "@meshsdk/wallet": 1.9.0-beta-40 + "@polkadot/types": ^16.5.6 + "@polkadot/util": ^14.0.3 + "@radix-ui/react-dialog": ^1.1.15 + "@radix-ui/react-dropdown-menu": ^2.1.16 + "@radix-ui/react-tooltip": ^1.2.8 + "@radix-ui/react-visually-hidden": ^1.2.4 + "@rolldown/plugin-babel": ^0.2.3 + "@safe-global/safe-apps-provider": ^0.18.6 + "@safe-global/safe-apps-sdk": ^9.1.0 + "@solana/wallet-adapter-base": ^0.9.27 + "@solana/wallet-adapter-react": ^0.15.39 + "@solana/wallet-adapter-wallets": ^0.19.38 + "@solana/web3.js": ^1.98.4 + "@stakekit/rainbowkit": ^2.2.11 + "@tanstack/react-query": ^5.100.10 + "@tanstack/react-virtual": ^3.13.24 + "@ton/core": ^0.63.1 + "@tonconnect/ui": ^2.4.4 + "@tronweb3/tronwallet-abstract-adapter": ^1.1.13 + "@tronweb3/tronwallet-adapter-bitkeep": ^1.1.8 + "@tronweb3/tronwallet-adapter-ledger": ^1.1.13 + "@tronweb3/tronwallet-adapter-tronlink": ^1.1.16 + "@tronweb3/tronwallet-adapter-walletconnect": ^3.0.3 + "@types/lodash.merge": ^4.6.9 + "@types/lodash.uniqwith": ^4.5.9 + "@types/node": ^25.7.0 + "@types/react": 19.2.14 + "@types/react-dom": 19.2.3 + "@vanilla-extract/css": ^1.20.1 + "@vanilla-extract/dynamic": ^2.1.5 + "@vanilla-extract/recipes": ^0.5.7 + "@vanilla-extract/sprinkles": ^1.6.5 + "@vanilla-extract/vite-plugin": ^5.2.2 + "@vitejs/plugin-react": ^6.0.1 + "@vitest/browser-playwright": ^4.1.6 + "@xstate/react": ^6.1.0 + "@xstate/store": ^3.17.5 + autoprefixer: ^10.5.0 + babel-plugin-react-compiler: 1.0.0 + bignumber.js: ^11.1.1 + chain-registry: 1.69.221 + clsx: ^2.1.1 + cosmjs-types: ^0.10.1 + date-fns: ^4.1.0 + effect: 4.0.0-beta.68 + eventemitter3: ^5.0.4 + husky: ^9.1.7 + i18next: ^26.1.0 + i18next-browser-languagedetector: ^8.2.1 + lodash.merge: ^4.6.2 + lodash.uniqwith: ^4.5.0 + mipd: ^0.0.7 + mixpanel-browser: ^2.78.0 + motion: 12.38.0 + msw: ^2.14.6 + next: ^16.2.6 + playwright: ^1.60.0 + postcss: ^8.5.14 + purify-ts: 2.1.4 + react: ^19.2.6 + react-dom: ^19.2.6 + react-i18next: ^17.0.7 + react-loading-skeleton: ^3.5.0 + react-router: ^7.15.0 + reselect: ^5.1.1 + rev-dep: ^2.13.2 + rxjs: ^7.8.2 + serve: ^14.2.6 + swagger2openapi: ^7.0.8 + tsx: ^4.21.0 + turbo: ^2.9.12 + typescript: ^6.0.3 + unplugin-macros: ^0.20.0 + viem: ^2.48.11 + vite: ^8.0.12 + vite-plugin-node-polyfills: ^0.26.0 + vitest: ^4.1.6 + vitest-browser-react: ^2.2.0 + wagmi: 3.6.14 + xstate: ^5.31.1 + yaml: ^2.9.0 minimumReleaseAge: 4320 minimumReleaseAgeExclude: - "@stakekit/rainbowkit" - - "@stakekit/api-hooks" - - "@stakekit/common" \ No newline at end of file diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 00000000..06929a29 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "bootstrap-sha": "0b60e3ec2038b661ae3f62da97716763312cfd96", + "bump-patch-for-minor-pre-major": true, + "include-component-in-tag": true, + "include-v-in-tag": false, + "tag-separator": "@", + "pull-request-title-pattern": "ci(release): release${component} ${version}", + "packages": { + "packages/widget": { + "release-type": "node", + "package-name": "@stakekit/widget", + "component": "@stakekit/widget" + } + } +} diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 00000000..74330d53 --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "noEmit": true, + "incremental": true, + + /* Linting */ + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + } +} diff --git a/tsconfig.json b/tsconfig.json index 5953cff5..9dbbd6d8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,25 +1,7 @@ { + "extends": "./tsconfig.base.json", "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "allowJs": false, - "skipLibCheck": true, - "esModuleInterop": false, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "ESNext", - "moduleResolution": "Bundler", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "react-jsx", - "noEmit": true, - "incremental": true, - - /* Linting */ - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true + "tsBuildInfoFile": "dist/.tsbuildinfo/tsconfig.tsbuildinfo" }, - "exclude": ["node_modules"] + "exclude": ["node_modules", "repos"] } diff --git a/turbo.json b/turbo.json index f2bbd7eb..0cb77500 100644 --- a/turbo.json +++ b/turbo.json @@ -1,18 +1,48 @@ { "$schema": "https://turbo.build/schema.json", + "dangerouslyDisablePackageManagerCheck": true, + "globalDependencies": [ + "biome.json", + "pnpm-lock.yaml", + "pnpm-workspace.yaml", + "tsconfig.base.json", + "tsconfig.json", + "turbo.json" + ], "tasks": { "build": { "outputs": ["dist/**", ".next"], "dependsOn": ["^build"] }, "lint": { - "inputs": ["src/**", "tests/**"] + "inputs": [ + "src/**", + "tests/**", + "tsconfig*.json", + "vite/**/*.ts", + "vite.config.*", + "package.json" + ] }, "format": { - "inputs": ["src/**", "tests/**"] + "inputs": [ + "src/**", + "tests/**", + "tsconfig*.json", + "vite/**/*.ts", + "vite.config.*", + "package.json" + ] }, "test": { - "inputs": ["src/**", "tests/**"] + "inputs": [ + "src/**", + "tests/**", + "tsconfig*.json", + "vite/**/*.ts", + "vite.config.*", + "package.json" + ] } } } diff --git a/vercel.json b/vercel.json deleted file mode 100644 index 0f32683a..00000000 --- a/vercel.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }] -}