diff --git a/.gitignore b/.gitignore
index 3214ad8..60c65b8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,11 +8,14 @@ dist/
.playwright*
!.env.example
!web/.env.example
+!web/.env.product-devnet
!contracts/evm/.env.example
web/node_modules/
web/dist/
web/dist-bulletin*
+web/dist-product/
+web/*.car
web/.playwright*
web/playwright-report/
web/test-results/
diff --git a/README.md b/README.md
index eed1f79..7d05f32 100644
--- a/README.md
+++ b/README.md
@@ -34,20 +34,28 @@ aura lights the whole field (`web/src/styles/aura.css`).
creates one personal `SmartRuntime` per artist, and `ArtistDirectory` indexes
artist addresses to their runtimes.
-**Frontend**: Static React + Vite web app deployed to dot.li.
+**Frontend**: Static React + Vite web app deployed to Netlify and, through the
+Product profile, Bulletin/DotNS at `dotify-test01.dot`.
**WebRTC**: real-time music streaming.
**Socket.IO**: signaling for room discovery and SDP/ICE exchange. A future
iteration can move signaling to statement-store style infrastructure.
-**Product SDK direction**: Dotify remains a standalone web app first. Product
-SDK / Playground / Humanity work is a progressive-enhancement track documented
-in
-[`docs/backlog/polkadot-product-readiness-and-killer-dapp-roadmap.md`](docs/backlog/polkadot-product-readiness-and-killer-dapp-roadmap.md).
-The current SDK snapshot is prototype/reference/unaudited and must be proven
-against Dotify's Host, key-delivery, room, and contract constraints before it
-becomes a production dependency.
+**Product SDK direction**: Dotify now has an adaptive Product DevNet build for
+`dotify-test01.dot`. It keeps standalone link-first rooms and Free listening intact,
+adds explicit app-scoped Product identity, and publishes through
+Bulletin/DotNS. The runtime hooks now sit behind typed ports with the current
+viem implementation and an experimental Product CDM/PAPI adapter boundary.
+The backend key-delivery protocol now has an explicit Product sr25519
+signature scheme that binds the Product account public key to the derived H160
+requester before access checks. The shipped Product frontend still uses the
+passkey/EVM path for protected playback until host-signed key/session requests
+are wired; contract writes also remain passkey/EVM until CDM-installed runtime
+packages and host-signed transaction evidence are proven. See
+[`docs/explanation/product-devnet-architecture.md`](docs/explanation/product-devnet-architecture.md)
+and the
+[`Product roadmap`](docs/backlog/polkadot-product-readiness-and-killer-dapp-roadmap.md).
## Deployed
@@ -69,7 +77,7 @@ becomes a production dependency.
**Gateway URL** — Operate the spine and validate first sound
Sequenced later
-Adaptive Product path
+
- Product SDK mode, Humanity/Individuality proofs, consented provenance, and ambassador
- mechanics remain future work until the current APIs and privacy boundaries are proven.
+ Dotify now has a publishable dotify-test01.dot build, explicit app-scoped Product
+ identity, public room links that preserve wallet-free entry, typed runtime ports around the
+ current viem implementation, an experimental CDM/PAPI adapter boundary, and API-side Product
+ sr25519 verification for protected key/session requests. Product contract writes, frontend
+ host-signed protected playback, Humanity/Individuality proofs, consented provenance, and
+ ambassador mechanics remain sequenced behind verified security and privacy boundaries.
` link.
+6. A wallet-free browser joins that link from outside the Product host.
+7. A Netlify-origin host and Product-origin guest also connect.
+8. Closing the host ends the room as before.
+
+Inspect the browser console and Fly logs for CORS, catalog, Socket.IO, and
+WebRTC failures.
+
+## Rollback
+
+The Product deployment is static. To roll back:
+
+1. switch to the last known-good commit;
+2. run `npm ci`;
+3. run the full build and smoke checks;
+4. republish with `npm run deploy:product-devnet`;
+5. confirm DotNS resolves to the restored content;
+6. record the replacement CID and incident reason.
+
+Do not roll back Fly origin allowlists while either public frontend remains
+active.
+
+## Known Limits
+
+- Product account signing is accepted by the API only through the explicit
+ `product-sr25519-v1` session/key-request scheme. The shipped Product UI has
+ not yet been wired to submit that proof shape, so protected playback still
+ uses passkey/EVM signing in the current frontend.
+- Contract writes still require passkey/EVM signing in the shipped UI. The
+ experimental Product CDM/PAPI runtime adapter is present in code, but it is
+ not selected until Dotify has CDM-installed runtime packages, generated
+ contract types, and real host-signed transaction evidence.
+- Rooms still depend on one in-memory Fly signaling machine.
+- Product-host cloud storage does not hold Dotify audio or content keys.
+- Product personhood is not yet an access decision source.
+- A durable `CATALOG_SNAPSHOT_PATH` remains recommended for production-grade
+ catalog recovery but is not required for API startup.
diff --git a/docs/product/ux-signature-flows.md b/docs/product/ux-signature-flows.md
index 8f6e892..95b0549 100644
--- a/docs/product/ux-signature-flows.md
+++ b/docs/product/ux-signature-flows.md
@@ -25,6 +25,21 @@ Dotify must avoid wallet pop-up fatigue. Wallet prompts should appear only when
| Human Free unlock | Yes | Maybe session signature | No, unless proving/linking personhood requires one |
| Artist publishing | Yes | Yes/transaction depending on step | Yes for runtime/register actions |
+## Backend signature schemes
+
+Signed session and protected key requests carry an explicit `signatureScheme`.
+If the field is omitted, the backend treats the request as `eip191` for
+backward compatibility.
+
+| Scheme | Signer | Extra fields | Verification |
+| --- | --- | --- | --- |
+| `eip191` | Standalone EVM/passkey wallet | `signature` | Verify the canonical Dotify message with the requester H160 address. |
+| `product-sr25519-v1` | App-scoped Product account | `signature`, `productPublicKey` | Verify sr25519 over the same canonical message bytes, derive H160 from the Product public key, and require it to match the requester. |
+
+Unknown schemes and Product public-key mismatches fail closed before nonce
+consumption. Every successful signature path still runs the runtime access
+check before the backend releases a content key.
+
## Individual playback flow
```mermaid
diff --git a/docs/reference/environment-variables.md b/docs/reference/environment-variables.md
index e255b55..beef044 100644
--- a/docs/reference/environment-variables.md
+++ b/docs/reference/environment-variables.md
@@ -36,6 +36,54 @@ production build contract without printing real secret values.
---
+### `VITE_DOTIFY_HOST_MODE`
+
+| Property | Value |
+| ------------ | ------------------------------ |
+| **Type** | `off`, `auto`, or `required` |
+| **Required** | Product builds |
+| **Default** | `off` |
+| **Example** | `required` |
+
+Controls Product host discovery. `off` keeps the standalone app independent
+from the Product SDK. `auto` enables progressive host detection. `required`
+marks a Product-targeted build but does not block catalog, Free playback, or
+wallet-free room entry when opened outside the host.
+
+Host detection does not request an account. The account is requested only when
+the listener selects **Use Polkadot app**.
+
+---
+
+### `VITE_DOTIFY_PRODUCT_ID`
+
+| Property | Value |
+| ------------ | ---------------------- |
+| **Type** | Lowercase `.dot` name |
+| **Required** | Host mode is not `off` |
+| **Default** | `dotify-test01.dot` |
+| **Example** | `dotify-test01.dot` |
+
+DotNS identifier used by the Product host to derive Dotify's app-scoped
+account. Changing it changes the Product account boundary and requires an
+identity/access migration review.
+
+---
+
+### `VITE_PUBLIC_APP_URL`
+
+| Property | Value |
+| ------------ | -------------------------------- |
+| **Type** | HTTPS URL |
+| **Required** | Product production builds |
+| **Default** | Current browser URL |
+| **Example** | `https://dotify-test01.dev-dot.li` |
+
+Canonical public origin used when copying room links. Product builds must set
+this so invitations never expose an internal host/container or raw gateway URL.
+
+---
+
### `VITE_DOTIFY_DEBUG_PANEL`
| Property | Value |
@@ -78,8 +126,10 @@ Production deployments must use a publicly reachable HTTPS endpoint.
Backend API base URL. When set, audio, cover, and metadata uploads go through
the backend. Full-track playback can request content keys with wallet-signed
-requests. When unset, the web app falls back to local/demo browser-side Pinata
-upload and `VITE_CONTENT_SECRET` encryption.
+requests. The backend accepts the default `eip191` signature scheme and the
+Product-host `product-sr25519-v1` scheme without an additional env flag. When
+unset, the web app falls back to local/demo browser-side Pinata upload and
+`VITE_CONTENT_SECRET` encryption.
---
@@ -246,7 +296,7 @@ Network interface to bind.
| **Type** | Comma-separated URL list or `*` |
| **Required** | No |
| **Default** | `*` |
-| **Example** | `https://muzinga.netlify.app,https://dotify.dot.li` |
+| **Example** | `https://muzinga.netlify.app,https://dotify-test01.dev-dot.li` |
CORS allowed origins for Socket.IO and status endpoints. Set explicit frontend
origins in production. `SIGNAL_ORIGIN` is still accepted as a backwards-compatible
@@ -327,7 +377,23 @@ Port the backend API listens on.
| **Required** | Production |
| **Default** | `http://localhost:5273` |
-Frontend origin allowed by backend CORS.
+Singular frontend origin allowed by backend CORS. This remains as a
+backwards-compatible fallback when `API_ORIGINS` is not set.
+
+---
+
+### `API_ORIGINS`
+
+| Property | Value |
+| ------------ | -------------------------------------------------------- |
+| **Type** | Comma-separated HTTPS origin list |
+| **Required** | Multiple hosted frontends |
+| **Default** | The single `API_ORIGIN` value |
+| **Example** | `https://muzinga.netlify.app,https://dotify-test01.dev-dot.li` |
+
+Exact frontend origins accepted by backend CORS. When set, it takes precedence
+over `API_ORIGIN`. Do not use `*`: the API carries authenticated upload and
+content-key routes.
---
diff --git a/services/api/.env.example b/services/api/.env.example
index b86aba5..bcdf622 100644
--- a/services/api/.env.example
+++ b/services/api/.env.example
@@ -6,6 +6,8 @@ API_PORT=8790
# Frontend origin allowed by CORS.
API_ORIGIN=http://localhost:5273
+# Comma-separated origins take precedence over API_ORIGIN when set.
+# API_ORIGINS=https://muzinga.netlify.app,https://dotify-test01.dev-dot.li
# Paseo Asset Hub EVM RPC. Required for wallet-signed content-key requests:
# the key route resolves the owning artist runtime via the directory and calls
@@ -30,9 +32,10 @@ CATALOG_CONFIRMATIONS=2
# Master secret for per-track content-key derivation. Used by BOTH
# /api/uploads/audio (server-side AES-256-GCM encryption before pinning) and
-# /api/tracks/:contentHash/key-request (key delivery after a wallet-signed,
-# on-chain-verified access check). Must be at least 32 random bytes encoded as
-# hex. Never expose this value; rotating it re-keys every track at once.
+# /api/tracks/:contentHash/key-request (key delivery after an eip191 or
+# product-sr25519-v1 signed, on-chain-verified access check). Must be at least
+# 32 random bytes encoded as hex. Never expose this value; rotating it re-keys
+# every track at once.
# Generate with: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
CONTENT_KEY_MASTER_SECRET=
diff --git a/services/api/fly.toml b/services/api/fly.toml
index 6b061eb..7e78384 100644
--- a/services/api/fly.toml
+++ b/services/api/fly.toml
@@ -10,6 +10,7 @@ primary_region = "ams"
# checks target the owner-guarded factory/directory pair.
API_PORT = "8790"
NODE_ENV = "production"
+ API_ORIGINS = "https://muzinga.netlify.app,https://dotify-test01.dev-dot.li"
PASEO_ASSET_HUB_RPC = "https://eth-rpc-testnet.polkadot.io/"
DOTIFY_FACTORY_ADDRESS = "0xbd1a11cfce8b5ef7a37e507bc5109895f8f42a72"
DOTIFY_DIRECTORY_ADDRESS = "0xcf1534c6e2b0e43b9436c1e86a076466dc0f2108"
diff --git a/services/api/package-lock.json b/services/api/package-lock.json
index 9a9f4ca..7fa0eb8 100644
--- a/services/api/package-lock.json
+++ b/services/api/package-lock.json
@@ -12,6 +12,7 @@
"@fastify/multipart": "^10.0.0",
"@fastify/rate-limit": "^10.3.0",
"@noble/hashes": "1.8.0",
+ "@scure/sr25519": "^1.0.0",
"fastify": "^5.8.5",
"viem": "^2.52.2",
"zod": "^3.23.8"
@@ -757,6 +758,49 @@
"url": "https://paulmillr.com/funding/"
}
},
+ "node_modules/@scure/sr25519": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@scure/sr25519/-/sr25519-1.0.0.tgz",
+ "integrity": "sha512-b+uhK5akMINXZP95F3gJGcb5CMKYxf+q55fwMl0GoBwZDbWolmGNi1FrBSwuaZX5AhqS2byHiAueZgtDNpot2A==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/curves": "~2.0.0",
+ "@noble/hashes": "~2.0.0"
+ },
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@scure/sr25519/node_modules/@noble/curves": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz",
+ "integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@scure/sr25519/node_modules/@noble/hashes": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz",
+ "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
"node_modules/@types/node": {
"version": "22.19.19",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.19.tgz",
diff --git a/services/api/package.json b/services/api/package.json
index 65f0f21..01515c5 100644
--- a/services/api/package.json
+++ b/services/api/package.json
@@ -12,13 +12,14 @@
"start": "node dist/index.js",
"catalog:reindex": "tsx src/scripts/reindexCatalog.ts",
"typecheck": "tsc --noEmit",
- "test": "node --import tsx --test src/services/audioV2.test.ts src/services/replayProtection.test.ts src/services/signatures.test.ts src/services/sessionTokens.test.ts src/services/catalog/readModel.test.ts src/routes/keys.test.ts src/routes/uploads.test.ts src/routes/auth.test.ts src/routes/health.test.ts src/routes/catalog.test.ts src/app.test.ts"
+ "test": "node --import tsx --test src/services/audioV2.test.ts src/services/replayProtection.test.ts src/services/signatures.test.ts src/services/sessionTokens.test.ts src/services/catalog/readModel.test.ts src/routes/keys.test.ts src/routes/uploads.test.ts src/routes/auth.test.ts src/routes/health.test.ts src/routes/catalog.test.ts src/app.test.ts src/cors.test.ts"
},
"dependencies": {
"@fastify/cors": "^11.2.0",
"@fastify/multipart": "^10.0.0",
"@fastify/rate-limit": "^10.3.0",
"@noble/hashes": "1.8.0",
+ "@scure/sr25519": "^1.0.0",
"fastify": "^5.8.5",
"viem": "^2.52.2",
"zod": "^3.23.8"
diff --git a/services/api/src/app.ts b/services/api/src/app.ts
index 89044c4..09a1111 100644
--- a/services/api/src/app.ts
+++ b/services/api/src/app.ts
@@ -39,6 +39,7 @@ export type BuildAppOptions = {
// Tests disable logging; production always logs.
logging?: boolean;
catalog?: CatalogReadModel;
+ apiOrigins?: string[];
};
export async function buildApp(options: BuildAppOptions = {}): Promise {
@@ -48,9 +49,9 @@ export async function buildApp(options: BuildAppOptions = {}): Promise
+ typeof value === 'string'
+ ? value
+ .split(',')
+ .map(origin => origin.trim())
+ .filter(Boolean)
+ : value,
+ z.array(z.string().url()).min(1).optional(),
+);
+
const envSchema = z.object({
API_PORT: z.coerce.number().int().min(1).max(65535).default(8790),
API_ORIGIN: z.string().url().default('http://localhost:5273'),
+ API_ORIGINS: optionalOriginList,
PASEO_ASSET_HUB_RPC: z.string().url().optional(),
DOTIFY_FACTORY_ADDRESS: optionalNonEmptyString,
DOTIFY_DIRECTORY_ADDRESS: optionalNonEmptyString,
@@ -65,7 +77,10 @@ function parseEnv() {
console.error(`[dotify-api] Invalid environment configuration:\n${issues}`);
process.exit(1);
}
- return result.data;
+ return {
+ ...result.data,
+ API_ORIGINS: result.data.API_ORIGINS ?? [result.data.API_ORIGIN],
+ };
}
export const config = parseEnv();
diff --git a/services/api/src/cors.test.ts b/services/api/src/cors.test.ts
new file mode 100644
index 0000000..22e3894
--- /dev/null
+++ b/services/api/src/cors.test.ts
@@ -0,0 +1,37 @@
+import assert from 'node:assert/strict';
+import { afterEach, describe, it } from 'node:test';
+import type { FastifyInstance } from 'fastify';
+import { buildApp } from './app.js';
+
+let app: FastifyInstance | null = null;
+
+afterEach(async () => {
+ if (app) await app.close();
+ app = null;
+});
+
+describe('frontend origin boundary', () => {
+ it('allows each configured Dotify frontend and rejects unrelated origins', async () => {
+ app = await buildApp({
+ logging: false,
+ apiOrigins: ['https://muzinga.netlify.app', 'https://dotify-test01.dev-dot.li'],
+ });
+ const server = app;
+
+ for (const origin of ['https://muzinga.netlify.app', 'https://dotify-test01.dev-dot.li']) {
+ const response = await server.inject({
+ method: 'GET',
+ url: '/health',
+ headers: { origin },
+ });
+ assert.equal(response.headers['access-control-allow-origin'], origin);
+ }
+
+ const unrelated = await server.inject({
+ method: 'GET',
+ url: '/health',
+ headers: { origin: 'https://unrelated.example' },
+ });
+ assert.equal(unrelated.headers['access-control-allow-origin'], undefined);
+ });
+});
diff --git a/services/api/src/routes/auth.test.ts b/services/api/src/routes/auth.test.ts
index e3490d8..8bf4c13 100644
--- a/services/api/src/routes/auth.test.ts
+++ b/services/api/src/routes/auth.test.ts
@@ -2,6 +2,7 @@ import assert from 'node:assert/strict';
import { afterEach, describe, it } from 'node:test';
import Fastify, { type FastifyInstance } from 'fastify';
import { createAuthRoutes, type AuthRouteDeps } from './auth.js';
+import { PRODUCT_SR25519_SIGNATURE_SCHEME, type SignInRequest } from '../services/signatures.js';
const ADDRESS = '0x1111111111111111111111111111111111111111';
@@ -80,6 +81,34 @@ describe('POST /api/auth/session', () => {
assert.equal(body.address, ADDRESS);
});
+ it('passes Product sr25519 proof fields to sign-in verification', async () => {
+ let verifiedRequest: SignInRequest | null = null;
+ const server = await buildApp({
+ verifySignInRequest: async request => {
+ verifiedRequest = request;
+ return { valid: true };
+ }
+ });
+ const productPublicKey = `0x${'22'.repeat(32)}`;
+ const signature = `0x${'33'.repeat(64)}`;
+ const response = await server.inject({
+ method: 'POST',
+ url: '/api/auth/session',
+ payload: sessionBody({
+ signatureScheme: PRODUCT_SR25519_SIGNATURE_SCHEME,
+ productPublicKey,
+ signature
+ })
+ });
+
+ assert.equal(response.statusCode, 200);
+ const productRequest = verifiedRequest as Extract | null;
+ assert.ok(productRequest);
+ assert.equal(productRequest.signatureScheme, PRODUCT_SR25519_SIGNATURE_SCHEME);
+ assert.equal(productRequest.productPublicKey, productPublicKey);
+ assert.equal(productRequest.signature, signature);
+ });
+
it('rejects an invalid signature with 401 and the verification code', async () => {
const server = await buildApp({
verifySignInRequest: async () => ({ valid: false, code: 'SIGNATURE_INVALID', reason: 'bad signature' })
@@ -106,6 +135,30 @@ describe('POST /api/auth/session', () => {
assert.equal(response.statusCode, 400);
});
+ it('rejects unknown sign-in signature schemes before verification or token issuance', async () => {
+ let verificationCalled = false;
+ let issuanceCalled = false;
+ const server = await buildApp({
+ verifySignInRequest: async () => {
+ verificationCalled = true;
+ return { valid: true };
+ },
+ issueSessionToken: () => {
+ issuanceCalled = true;
+ return { ok: true, token: 'payload.signature', expiresAt: new Date(Date.now() + 1000).toISOString() };
+ }
+ });
+ const response = await server.inject({
+ method: 'POST',
+ url: '/api/auth/session',
+ payload: sessionBody({ signatureScheme: 'product-unknown-v1' })
+ });
+
+ assert.equal(response.statusCode, 400);
+ assert.equal(verificationCalled, false);
+ assert.equal(issuanceCalled, false);
+ });
+
it('rejects a different-chain sign-in before verification or token issuance', async () => {
let verificationCalled = false;
let issuanceCalled = false;
diff --git a/services/api/src/routes/auth.ts b/services/api/src/routes/auth.ts
index 90d0845..07839bb 100644
--- a/services/api/src/routes/auth.ts
+++ b/services/api/src/routes/auth.ts
@@ -8,6 +8,8 @@ import { z } from 'zod';
import { config } from '../config.js';
import { checkDotifyChainId } from '../services/chainDomain.js';
import {
+ EIP191_SIGNATURE_SCHEME,
+ PRODUCT_SR25519_SIGNATURE_SCHEME,
createWalletNonceChallenge,
verifySignInRequest as defaultVerifySignInRequest,
type SignInRequest,
@@ -25,14 +27,26 @@ const nonceRequestSchema = z.object({
chainId: z.number().int().positive().optional()
});
-const sessionRequestSchema = z.object({
+const sessionBaseRequestSchema = z.object({
address: z.string().regex(/^0x[0-9a-fA-F]{40}$/, 'Invalid EVM address'),
- signature: z.string().regex(/^0x[0-9a-fA-F]+$/, 'Invalid signature'),
nonce: z.string().min(16, 'Nonce is required'),
chainId: z.number().int().positive(),
expiresAt: z.string().datetime()
});
+const eip191SessionRequestSchema = sessionBaseRequestSchema.extend({
+ signatureScheme: z.literal(EIP191_SIGNATURE_SCHEME).optional(),
+ signature: z.string().regex(/^0x[0-9a-fA-F]+$/, 'Invalid signature')
+});
+
+const productSr25519SessionRequestSchema = sessionBaseRequestSchema.extend({
+ signatureScheme: z.literal(PRODUCT_SR25519_SIGNATURE_SCHEME),
+ signature: z.string().regex(/^0x[0-9a-fA-F]{128}$/, 'Invalid Product sr25519 signature'),
+ productPublicKey: z.string().regex(/^0x[0-9a-fA-F]{64}$/, 'Invalid Product account public key')
+});
+
+const sessionRequestSchema = z.union([productSr25519SessionRequestSchema, eip191SessionRequestSchema]);
+
const logoutRequestSchema = z.object({
sessionToken: z.string().min(16, 'Session token is required')
});
@@ -103,13 +117,27 @@ export function createAuthRoutes(deps: AuthRouteDeps = defaultDeps) {
return reply.status(400).send({ error: domain.reason, code: domain.code });
}
- const verification = await deps.verifySignInRequest({
- requester: parsed.data.address,
- chainId: parsed.data.chainId,
- nonce: parsed.data.nonce,
- expiresAt: parsed.data.expiresAt,
- signature: parsed.data.signature
- });
+ const signInRequest: SignInRequest =
+ parsed.data.signatureScheme === PRODUCT_SR25519_SIGNATURE_SCHEME
+ ? {
+ requester: parsed.data.address,
+ chainId: parsed.data.chainId,
+ nonce: parsed.data.nonce,
+ expiresAt: parsed.data.expiresAt,
+ signature: parsed.data.signature,
+ signatureScheme: PRODUCT_SR25519_SIGNATURE_SCHEME,
+ productPublicKey: parsed.data.productPublicKey
+ }
+ : {
+ requester: parsed.data.address,
+ chainId: parsed.data.chainId,
+ nonce: parsed.data.nonce,
+ expiresAt: parsed.data.expiresAt,
+ signature: parsed.data.signature,
+ signatureScheme: EIP191_SIGNATURE_SCHEME
+ };
+
+ const verification = await deps.verifySignInRequest(signInRequest);
if (!verification.valid) {
return reply.status(401).send({ error: verification.reason, code: verification.code });
}
diff --git a/services/api/src/routes/keys.test.ts b/services/api/src/routes/keys.test.ts
index 210abf8..23abf04 100644
--- a/services/api/src/routes/keys.test.ts
+++ b/services/api/src/routes/keys.test.ts
@@ -2,6 +2,7 @@ import assert from 'node:assert/strict';
import { afterEach, describe, it } from 'node:test';
import Fastify, { type FastifyInstance } from 'fastify';
import { createKeyRoutes, type KeyRouteDeps } from './keys.js';
+import { PRODUCT_SR25519_SIGNATURE_SCHEME, type KeySignatureRequest } from '../services/signatures.js';
const CONTENT_HASH = `0x${'ab'.repeat(32)}`;
const REQUESTER = '0x1111111111111111111111111111111111111111';
@@ -85,6 +86,79 @@ describe('POST /api/tracks/:contentHash/key-request', () => {
assert.equal(response.json().code, 'SIGNATURE_INVALID');
});
+ it('passes Product sr25519 proof fields to signature verification', async () => {
+ let verifiedRequest: KeySignatureRequest | null = null;
+ const server = await buildApp({
+ verifySignedRequest: async request => {
+ verifiedRequest = request;
+ return { valid: true };
+ }
+ });
+ const productPublicKey = `0x${'22'.repeat(32)}`;
+ const signature = `0x${'33'.repeat(64)}`;
+ const response = await server.inject({
+ method: 'POST',
+ url: `/api/tracks/${CONTENT_HASH}/key-request`,
+ payload: baseBody({
+ signatureScheme: PRODUCT_SR25519_SIGNATURE_SCHEME,
+ productPublicKey,
+ signature
+ })
+ });
+
+ assert.equal(response.statusCode, 200);
+ const productRequest = verifiedRequest as Extract | null;
+ assert.ok(productRequest);
+ assert.equal(productRequest.signatureScheme, PRODUCT_SR25519_SIGNATURE_SCHEME);
+ assert.equal(productRequest.productPublicKey, productPublicKey);
+ assert.equal(productRequest.signature, signature);
+ });
+
+ it('rejects unknown signature schemes before verification or access checks', async () => {
+ let verificationCalled = false;
+ let accessChecked = false;
+ const server = await buildApp({
+ verifySignedRequest: async () => {
+ verificationCalled = true;
+ return { valid: true };
+ },
+ checkTrackAccess: async () => {
+ accessChecked = true;
+ return { allowed: true, runtime: RUNTIME };
+ }
+ });
+ const response = await server.inject({
+ method: 'POST',
+ url: `/api/tracks/${CONTENT_HASH}/key-request`,
+ payload: baseBody({ signatureScheme: 'product-unknown-v1' })
+ });
+
+ assert.equal(response.statusCode, 400);
+ assert.equal(verificationCalled, false);
+ assert.equal(accessChecked, false);
+ });
+
+ it('requires Product public key for Product sr25519 requests', async () => {
+ let verificationCalled = false;
+ const server = await buildApp({
+ verifySignedRequest: async () => {
+ verificationCalled = true;
+ return { valid: true };
+ }
+ });
+ const response = await server.inject({
+ method: 'POST',
+ url: `/api/tracks/${CONTENT_HASH}/key-request`,
+ payload: baseBody({
+ signatureScheme: PRODUCT_SR25519_SIGNATURE_SCHEME,
+ signature: `0x${'33'.repeat(64)}`
+ })
+ });
+
+ assert.equal(response.statusCode, 400);
+ assert.equal(verificationCalled, false);
+ });
+
it('answers a denied individual listener with an unlock CTA, never a key or a preview mode', async () => {
const server = await buildApp({
checkTrackAccess: async () => ({ allowed: false, code: 'LISTENER_ACCESS_REQUIRED', reason: 'no access' })
diff --git a/services/api/src/routes/keys.ts b/services/api/src/routes/keys.ts
index a4e56e4..fde1bdc 100644
--- a/services/api/src/routes/keys.ts
+++ b/services/api/src/routes/keys.ts
@@ -21,26 +21,44 @@ import {
type TrackAccessResult
} from '../services/chainAccess.js';
import { deriveContentKey as defaultDeriveContentKey, type ContentKeyResult } from '../services/keyVault.js';
-import { verifySignedRequest as defaultVerifySignedRequest, type KeySignatureRequest, type SignatureVerification } from '../services/signatures.js';
+import {
+ EIP191_SIGNATURE_SCHEME,
+ PRODUCT_SR25519_SIGNATURE_SCHEME,
+ verifySignedRequest as defaultVerifySignedRequest,
+ type KeySignatureRequest,
+ type SignatureVerification
+} from '../services/signatures.js';
import { verifySessionToken as defaultVerifySessionToken, type SessionVerification } from '../services/sessionTokens.js';
const paramsSchema = z.object({
contentHash: z.string().regex(/^0x[0-9a-fA-F]{64}$/, 'Invalid content hash')
});
-const signedBodySchema = z.object({
+const signedBaseBodySchema = z.object({
requester: z.string().regex(/^0x[0-9a-fA-F]{40}$/, 'Invalid EVM address'),
- signature: z.string().regex(/^0x[0-9a-fA-F]+$/, 'Invalid signature'),
nonce: z.string().min(16, 'Nonce is required'),
chainId: z.number().int().positive(),
expiresAt: z.string().datetime()
});
// 'room_listener' is intentionally not accepted; room listeners never get keys.
-const keyRequestBodySchema = signedBodySchema.extend({
+const keyRequestPurposeSchema = z.object({
purpose: z.enum(['individual', 'room_host'])
});
+const eip191KeyRequestBodySchema = signedBaseBodySchema.merge(keyRequestPurposeSchema).extend({
+ signatureScheme: z.literal(EIP191_SIGNATURE_SCHEME).optional(),
+ signature: z.string().regex(/^0x[0-9a-fA-F]+$/, 'Invalid signature')
+});
+
+const productSr25519KeyRequestBodySchema = signedBaseBodySchema.merge(keyRequestPurposeSchema).extend({
+ signatureScheme: z.literal(PRODUCT_SR25519_SIGNATURE_SCHEME),
+ signature: z.string().regex(/^0x[0-9a-fA-F]{128}$/, 'Invalid Product sr25519 signature'),
+ productPublicKey: z.string().regex(/^0x[0-9a-fA-F]{64}$/, 'Invalid Product account public key')
+});
+
+const keyRequestBodySchema = z.union([productSr25519KeyRequestBodySchema, eip191KeyRequestBodySchema]);
+
// Session path (ticket 24 P2): after the one-per-session sign-in, a key
// request carries the bearer token instead of a fresh wallet signature. The
// on-chain access check still runs on every request.
@@ -145,16 +163,33 @@ export function createKeyRoutes(deps: KeyRouteDeps = defaultDeps) {
return reply.status(401).send({ error: domain.reason, code: domain.code });
}
- const signature = await deps.verifySignedRequest({
- action: 'REQUEST_CONTENT_KEY',
- purpose: body.data.purpose,
- contentHash: params.data.contentHash,
- requester: body.data.requester,
- chainId: body.data.chainId,
- nonce: body.data.nonce,
- expiresAt: body.data.expiresAt,
- signature: body.data.signature
- });
+ const signatureRequest: KeySignatureRequest =
+ body.data.signatureScheme === PRODUCT_SR25519_SIGNATURE_SCHEME
+ ? {
+ action: 'REQUEST_CONTENT_KEY',
+ purpose: body.data.purpose,
+ contentHash: params.data.contentHash,
+ requester: body.data.requester,
+ chainId: body.data.chainId,
+ nonce: body.data.nonce,
+ expiresAt: body.data.expiresAt,
+ signature: body.data.signature,
+ signatureScheme: PRODUCT_SR25519_SIGNATURE_SCHEME,
+ productPublicKey: body.data.productPublicKey
+ }
+ : {
+ action: 'REQUEST_CONTENT_KEY',
+ purpose: body.data.purpose,
+ contentHash: params.data.contentHash,
+ requester: body.data.requester,
+ chainId: body.data.chainId,
+ nonce: body.data.nonce,
+ expiresAt: body.data.expiresAt,
+ signature: body.data.signature,
+ signatureScheme: EIP191_SIGNATURE_SCHEME
+ };
+
+ const signature = await deps.verifySignedRequest(signatureRequest);
if (!signature.valid) {
return reply.status(401).send({ error: signature.reason, code: signature.code });
diff --git a/services/api/src/services/signatures.test.ts b/services/api/src/services/signatures.test.ts
index 373066b..197b7e2 100644
--- a/services/api/src/services/signatures.test.ts
+++ b/services/api/src/services/signatures.test.ts
@@ -1,11 +1,14 @@
import assert from 'node:assert/strict';
import { beforeEach, describe, it } from 'node:test';
+import { getPublicKey, secretFromSeed, sign as signSr25519 } from '@scure/sr25519';
import { privateKeyToAccount } from 'viem/accounts';
import { resetNonceStore } from './replayProtection.js';
import {
+ PRODUCT_SR25519_SIGNATURE_SCHEME,
buildSignedRequestMessage,
buildSignInMessage,
createWalletNonceChallenge,
+ deriveProductAccountH160,
verifySignInRequest,
verifySignedRequest,
type SignInPayload,
@@ -17,6 +20,15 @@ const signer = privateKeyToAccount('0xac0974bec39a37e36980911eda47a06fcd4ee8d3a8
const CONTENT_HASH = `0x${'ab'.repeat(32)}` as const;
const CHAIN_ID = 420420417;
+const productSecretKey = secretFromSeed(new Uint8Array(32).fill(7));
+const productPublicKey = getPublicKey(productSecretKey);
+const productPublicKeyHex = `0x${bytesToHex(productPublicKey)}` as const;
+
+function bytesToHex(bytes: Uint8Array): string {
+ return Array.from(bytes)
+ .map(byte => byte.toString(16).padStart(2, '0'))
+ .join('');
+}
async function signedPayload(overrides: Partial = {}) {
const challenge = createWalletNonceChallenge({ address: signer.address, chainId: CHAIN_ID });
@@ -34,6 +46,23 @@ async function signedPayload(overrides: Partial = {}) {
return { payload, signature };
}
+async function productSignedPayload(overrides: Partial = {}) {
+ const requester = overrides.requester ?? deriveProductAccountH160(productPublicKey);
+ const challenge = createWalletNonceChallenge({ address: requester, chainId: CHAIN_ID });
+ const payload: SignedRequestPayload = {
+ action: 'REQUEST_CONTENT_KEY',
+ purpose: 'individual',
+ contentHash: CONTENT_HASH,
+ requester,
+ chainId: CHAIN_ID,
+ nonce: challenge.nonce,
+ expiresAt: challenge.expiresAt,
+ ...overrides
+ };
+ const signature = `0x${bytesToHex(signSr25519(productSecretKey, new TextEncoder().encode(buildSignedRequestMessage(payload))))}`;
+ return { payload, signature, productPublicKey: productPublicKeyHex };
+}
+
describe('verifySignedRequest', () => {
beforeEach(() => {
resetNonceStore();
@@ -45,6 +74,17 @@ describe('verifySignedRequest', () => {
assert.equal(result.valid, true);
});
+ it('accepts a Product sr25519 request bound to the derived H160 requester', async () => {
+ const { payload, signature, productPublicKey } = await productSignedPayload();
+ const result = await verifySignedRequest({
+ ...payload,
+ signatureScheme: PRODUCT_SR25519_SIGNATURE_SCHEME,
+ signature,
+ productPublicKey
+ });
+ assert.equal(result.valid, true);
+ });
+
it('rejects a replayed nonce', async () => {
const { payload, signature } = await signedPayload();
const first = await verifySignedRequest({ ...payload, signature });
@@ -63,6 +103,45 @@ describe('verifySignedRequest', () => {
assert.equal(!result.valid && result.code, 'SIGNATURE_INVALID');
});
+ it('rejects a Product signature when the payload changes', async () => {
+ const { payload, signature, productPublicKey } = await productSignedPayload();
+ const result = await verifySignedRequest({
+ ...payload,
+ contentHash: `0x${'cd'.repeat(32)}`,
+ signatureScheme: PRODUCT_SR25519_SIGNATURE_SCHEME,
+ signature,
+ productPublicKey
+ });
+ assert.equal(result.valid, false);
+ assert.equal(!result.valid && result.code, 'SIGNATURE_INVALID');
+ });
+
+ it('rejects a Product public key that does not derive to the requester H160', async () => {
+ const { payload, signature, productPublicKey } = await productSignedPayload({
+ requester: '0x1111111111111111111111111111111111111111'
+ });
+ const result = await verifySignedRequest({
+ ...payload,
+ signatureScheme: PRODUCT_SR25519_SIGNATURE_SCHEME,
+ signature,
+ productPublicKey
+ });
+ assert.equal(result.valid, false);
+ assert.equal(!result.valid && result.code, 'PRODUCT_ADDRESS_MISMATCH');
+ });
+
+ it('rejects malformed Product proof bytes before nonce consumption', async () => {
+ const { payload, signature } = await productSignedPayload();
+ const result = await verifySignedRequest({
+ ...payload,
+ signatureScheme: PRODUCT_SR25519_SIGNATURE_SCHEME,
+ signature,
+ productPublicKey: '0x1234'
+ });
+ assert.equal(result.valid, false);
+ assert.equal(!result.valid && result.code, 'PRODUCT_SIGNATURE_INVALID');
+ });
+
it('rejects a signature over a different purpose', async () => {
const { payload, signature } = await signedPayload({ purpose: 'individual' });
const result = await verifySignedRequest({ ...payload, purpose: 'room_host', signature });
@@ -124,4 +203,34 @@ describe('verifySignedRequest', () => {
assert.equal(result.valid, false);
assert.equal(!result.valid && result.code, 'CHAIN_ID_MISMATCH');
});
+
+ it('accepts a Product sr25519 sign-in bound to the derived H160 requester', async () => {
+ const requester = deriveProductAccountH160(productPublicKey);
+ const challenge = createWalletNonceChallenge({ address: requester, chainId: CHAIN_ID });
+ const payload: SignInPayload = {
+ requester,
+ chainId: CHAIN_ID,
+ nonce: challenge.nonce,
+ expiresAt: challenge.expiresAt
+ };
+ const signature = `0x${bytesToHex(signSr25519(productSecretKey, new TextEncoder().encode(buildSignInMessage(payload))))}`;
+ const result = await verifySignInRequest({
+ ...payload,
+ signatureScheme: PRODUCT_SR25519_SIGNATURE_SCHEME,
+ signature,
+ productPublicKey: productPublicKeyHex
+ });
+
+ assert.equal(result.valid, true);
+ });
+
+ it('matches the Product SDK H160 derivation vector for a native Substrate public key', () => {
+ const alicePublicKey = new Uint8Array([
+ 0xd4, 0x35, 0x93, 0xc7, 0x15, 0xfd, 0xd3, 0x1c, 0x61, 0x14, 0x1a, 0xbd, 0x04, 0xa9, 0x9f,
+ 0xd6, 0x82, 0x2c, 0x85, 0x58, 0x85, 0x4c, 0xcd, 0xe3, 0x9a, 0x56, 0x84, 0xe7, 0xa5, 0x6d,
+ 0xa2, 0x7d
+ ]);
+
+ assert.equal(deriveProductAccountH160(alicePublicKey), '0x9621dde636de098b43efb0fa9b61facfe328f99d');
+ });
});
diff --git a/services/api/src/services/signatures.ts b/services/api/src/services/signatures.ts
index 34c9105..fac3749 100644
--- a/services/api/src/services/signatures.ts
+++ b/services/api/src/services/signatures.ts
@@ -1,4 +1,4 @@
-// Wallet-signed request verification (EIP-191 personal_sign).
+// Wallet-signed request verification.
//
// The signed payload is a structured, domain-bound text message that binds:
// app, action, purpose, content hash, requester address, chain ID, nonce,
@@ -6,11 +6,16 @@
// (web/src/services/keyService.ts); any drift between the two breaks
// verification, which fails closed.
//
-// Security boundary: EIP-191 is used instead of EIP-712 for the first
-// production spine because it is supported uniformly across the wallets we
-// target. The message is structured and domain-bound, so it cannot be
-// replayed against another app, chain, purpose, or track.
+// Security boundary: standalone wallets use EIP-191 instead of EIP-712 for
+// the first production spine because it is supported uniformly across the
+// wallets we target. Product-host requests sign the same canonical message
+// bytes with the app-scoped Product account and must prove that account's
+// public key derives to the requester H160 used by runtime access checks.
+// The message is structured and domain-bound, so it cannot be replayed
+// against another app, chain, purpose, or track.
+import { keccak_256 } from '@noble/hashes/sha3';
+import { verify as verifySr25519Signature } from '@scure/sr25519';
import { verifyMessage } from 'viem';
import { config } from '../config.js';
import { checkDotifyChainId } from './chainDomain.js';
@@ -20,6 +25,14 @@ import { consumeNonce, issueNonce } from './replayProtection.js';
// content keys, they only receive the host's ephemeral WebRTC stream.
export type KeyRequestPurpose = 'individual' | 'room_host';
export type SignedAction = 'REQUEST_CONTENT_KEY' | 'SIGN_IN';
+export const EIP191_SIGNATURE_SCHEME = 'eip191';
+export const PRODUCT_SR25519_SIGNATURE_SCHEME = 'product-sr25519-v1';
+export type SignatureScheme = typeof EIP191_SIGNATURE_SCHEME | typeof PRODUCT_SR25519_SIGNATURE_SCHEME;
+
+const PRODUCT_PUBLIC_KEY_BYTES = 32;
+const PRODUCT_SR25519_SIGNATURE_BYTES = 64;
+const H160_BYTES = 20;
+const EVM_DERIVED_MARKER = 0xee;
export type NonceChallengeRequest = {
address: string;
@@ -42,10 +55,19 @@ export type SignedRequestPayload = {
expiresAt: string;
};
-export type KeySignatureRequest = SignedRequestPayload & {
+export type Eip191SignatureFields = {
+ signatureScheme?: typeof EIP191_SIGNATURE_SCHEME;
signature: string;
};
+export type ProductSr25519SignatureFields = {
+ signatureScheme: typeof PRODUCT_SR25519_SIGNATURE_SCHEME;
+ signature: string;
+ productPublicKey: string;
+};
+
+export type SignatureFields = Eip191SignatureFields | ProductSr25519SignatureFields;
+export type KeySignatureRequest = SignedRequestPayload & SignatureFields;
export type SignatureVerification = { valid: true } | { valid: false; code: string; reason: string };
/**
@@ -73,9 +95,7 @@ export type SignInPayload = {
expiresAt: string;
};
-export type SignInRequest = SignInPayload & {
- signature: string;
-};
+export type SignInRequest = SignInPayload & SignatureFields;
/**
* Canonical EIP-191 message for the one-per-session Dotify sign-in
@@ -96,6 +116,131 @@ export function buildSignInMessage(payload: SignInPayload): string {
].join('\n');
}
+function bytesToHex(bytes: Uint8Array): string {
+ return Array.from(bytes)
+ .map(byte => byte.toString(16).padStart(2, '0'))
+ .join('');
+}
+
+function fixedHexToBytes(hex: string, expectedBytes: number): Uint8Array {
+ const clean = hex.startsWith('0x') ? hex.slice(2) : hex;
+ if (clean.length !== expectedBytes * 2 || !/^[0-9a-fA-F]+$/.test(clean)) {
+ throw new Error(`Expected ${expectedBytes} bytes of hex`);
+ }
+ return new Uint8Array(Buffer.from(clean, 'hex'));
+}
+
+/**
+ * Match Product SDK / pallet-revive AccountId32 -> H160 derivation:
+ * native Substrate accounts use keccak256(publicKey), last 20 bytes; accounts
+ * already derived from H160 strip the trailing 0xee padding.
+ */
+export function deriveProductAccountH160(publicKey: Uint8Array): `0x${string}` {
+ if (publicKey.length !== PRODUCT_PUBLIC_KEY_BYTES) {
+ throw new Error(`Expected ${PRODUCT_PUBLIC_KEY_BYTES}-byte Product public key`);
+ }
+
+ const evmDerived = publicKey.slice(H160_BYTES).every(byte => byte === EVM_DERIVED_MARKER);
+ const addressBytes = evmDerived
+ ? publicKey.slice(0, H160_BYTES)
+ : keccak_256(publicKey).slice(PRODUCT_PUBLIC_KEY_BYTES - H160_BYTES);
+ return `0x${bytesToHex(addressBytes)}`;
+}
+
+function verifyProductSr25519Payload(args: {
+ requester: string;
+ message: string;
+ signature: string;
+ productPublicKey: string | undefined;
+ invalidSignatureReason: string;
+}): SignatureVerification {
+ if (!args.productPublicKey) {
+ return {
+ valid: false,
+ code: 'PRODUCT_PUBLIC_KEY_REQUIRED',
+ reason: 'Product signed requests must include the Product account public key.'
+ };
+ }
+
+ let publicKey: Uint8Array;
+ let signature: Uint8Array;
+ try {
+ publicKey = fixedHexToBytes(args.productPublicKey, PRODUCT_PUBLIC_KEY_BYTES);
+ signature = fixedHexToBytes(args.signature, PRODUCT_SR25519_SIGNATURE_BYTES);
+ } catch {
+ return {
+ valid: false,
+ code: 'PRODUCT_SIGNATURE_INVALID',
+ reason: 'Product signature payload is malformed.'
+ };
+ }
+
+ const derivedRequester = deriveProductAccountH160(publicKey);
+ if (derivedRequester.toLowerCase() !== args.requester.toLowerCase()) {
+ return {
+ valid: false,
+ code: 'PRODUCT_ADDRESS_MISMATCH',
+ reason: 'Product account public key does not derive to the requester H160 address.'
+ };
+ }
+
+ let signatureValid = false;
+ try {
+ signatureValid = verifySr25519Signature(new TextEncoder().encode(args.message), signature, publicKey);
+ } catch {
+ signatureValid = false;
+ }
+
+ if (!signatureValid) {
+ return { valid: false, code: 'SIGNATURE_INVALID', reason: args.invalidSignatureReason };
+ }
+
+ return { valid: true };
+}
+
+async function verifySignatureEnvelope(
+ request: SignatureFields & { requester: string },
+ message: string,
+ invalidSignatureReason: string
+): Promise {
+ const signatureScheme = request.signatureScheme ?? EIP191_SIGNATURE_SCHEME;
+
+ if (signatureScheme === EIP191_SIGNATURE_SCHEME) {
+ let signatureValid = false;
+ try {
+ signatureValid = await verifyMessage({
+ address: request.requester as `0x${string}`,
+ message,
+ signature: request.signature as `0x${string}`
+ });
+ } catch {
+ signatureValid = false;
+ }
+
+ if (!signatureValid) {
+ return { valid: false, code: 'SIGNATURE_INVALID', reason: invalidSignatureReason };
+ }
+
+ return { valid: true };
+ }
+
+ if (signatureScheme === PRODUCT_SR25519_SIGNATURE_SCHEME) {
+ return verifyProductSr25519Payload({
+ requester: request.requester,
+ message,
+ signature: request.signature,
+ productPublicKey: 'productPublicKey' in request ? request.productPublicKey : undefined,
+ invalidSignatureReason
+ });
+ }
+
+ return {
+ valid: false,
+ code: 'SIGNATURE_SCHEME_UNSUPPORTED',
+ reason: 'Signature scheme is not supported for Dotify key delivery.'
+ };
+}
+
/**
* Verify a sign-in request: expiry, signature, then nonce consumption -
* the same fail-closed order as verifySignedRequest.
@@ -111,19 +256,13 @@ export async function verifySignInRequest(request: SignInRequest): Promise=16.0.0",
+ "npm": ">=7.0.0"
+ }
+ },
+ "node_modules/@ipld/dag-pb/node_modules/multiformats": {
+ "version": "14.0.5",
+ "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-14.0.5.tgz",
+ "integrity": "sha512-vbIm83F2yZ1pWJGS0yl0ysracIvv56LtbrIyiIQHoLdYDJOMoLfVFsXhh9DUH4SFdkdkFhucyWniihsNzVEjkQ==",
+ "license": "Apache-2.0 OR MIT"
+ },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.13",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
"integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
"license": "MIT",
"dependencies": {
- "@jridgewell/sourcemap-codec": "^1.5.0",
- "@jridgewell/trace-mapping": "^0.3.24"
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/remapping": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
+ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@noble/ciphers": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz",
+ "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@noble/curves": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.2.0.tgz",
+ "integrity": "sha512-T/BoHgFXirb0ENSPBquzX0rcjXeM6Lo892a2jlYJkqk83LqZx0l1Of7DzlKJ6jkpvMrkHSnAcgb5JegL8SeIkQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "2.2.0"
+ },
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@noble/hashes": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.2.0.tgz",
+ "integrity": "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@novasamatech/host-api": {
+ "version": "0.6.18",
+ "resolved": "https://registry.npmjs.org/@novasamatech/host-api/-/host-api-0.6.18.tgz",
+ "integrity": "sha512-5U5tYRbY/v49BqHH+iHPIP6OH7KJjXUMypaXSXtZK/J3IsQAqDLBlu/LqpDrNxHqEK1sKY5EyYla840mqmkwPg==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "@novasamatech/scale": "0.6.18",
+ "@polkadot-api/utils": "^0.2.0",
+ "nanoevents": "9.1.0",
+ "nanoid": "5.1.7",
+ "neverthrow": "^8.2.0",
+ "scale-ts": "1.6.1"
+ }
+ },
+ "node_modules/@novasamatech/host-api/node_modules/@novasamatech/scale": {
+ "version": "0.6.18",
+ "resolved": "https://registry.npmjs.org/@novasamatech/scale/-/scale-0.6.18.tgz",
+ "integrity": "sha512-xRvBrzJSvCseQ62zLReS3EtiQjuiTY+c+yOyx6If9dBRzX5FL52OazFLsdSaq3wOe8441TPXL1vediotYFZlRg==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "@polkadot-api/utils": "^0.2.0",
+ "scale-ts": "1.6.1"
+ }
+ },
+ "node_modules/@novasamatech/host-api/node_modules/nanoid": {
+ "version": "5.1.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.7.tgz",
+ "integrity": "sha512-ua3NDgISf6jdwezAheMOk4mbE1LXjm1DfMUDMuJf4AqxLFK3ccGpgWizwa5YV7Yz9EpXwEaWoRXSb/BnV0t5dQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
+ "bin": {
+ "nanoid": "bin/nanoid.js"
+ },
+ "engines": {
+ "node": "^18 || >=20"
+ }
+ },
+ "node_modules/@parity/product-sdk": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/@parity/product-sdk/-/product-sdk-0.19.1.tgz",
+ "integrity": "sha512-vZnXh5FUc/KSXBeMYd5v5ZTit9f4PLlXkXD7rvvESdV7L2djTlDij4uOKkr1oWg9NrRmcH4cvkHD1wAbs2Zqzg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@parity/product-sdk-address": "0.1.1",
+ "@parity/product-sdk-chain-client": "0.9.1",
+ "@parity/product-sdk-cloud-storage": "0.8.1",
+ "@parity/product-sdk-contracts": "0.9.2",
+ "@parity/product-sdk-crypto": "0.1.1",
+ "@parity/product-sdk-errors": "0.2.0",
+ "@parity/product-sdk-host": "0.14.1",
+ "@parity/product-sdk-keys": "0.3.16",
+ "@parity/product-sdk-local-storage": "0.3.2",
+ "@parity/product-sdk-logger": "0.1.1",
+ "@parity/product-sdk-signer": "0.11.1",
+ "@parity/product-sdk-tx": "0.3.2",
+ "@parity/result": "0.2.0",
+ "polkadot-api": "^2.1.6"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@parity/product-sdk-address": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@parity/product-sdk-address/-/product-sdk-address-0.1.1.tgz",
+ "integrity": "sha512-sSymun3alNGdvawhdc0Ha0KEkuqMwBZui1bsUVeZIZRJAfWvQzrV1AVaf8aah5JFlcaRdg8FYyp7xL2eP+ZplA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@noble/hashes": "^1.7.1",
+ "@polkadot-api/substrate-bindings": "^0.12.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-address/node_modules/@noble/hashes": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@parity/product-sdk-address/node_modules/@polkadot-api/substrate-bindings": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-bindings/-/substrate-bindings-0.12.0.tgz",
+ "integrity": "sha512-cIjDeJRHW6g3z+/55UzpoG4LG1N0HbT4x3NvZsQkYg4eoio9Sw7Pw2aZZX86pWemxc7vQbNw7WSz2Gz+ckdX6Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^1.8.0",
+ "@polkadot-api/utils": "0.1.2",
+ "@scure/base": "^1.2.5",
+ "scale-ts": "^1.6.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-address/node_modules/@polkadot-api/utils": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/utils/-/utils-0.1.2.tgz",
+ "integrity": "sha512-yhs5k2a8N1SBJcz7EthZoazzLQUkZxbf+0271Xzu42C5AEM9K9uFLbsB+ojzHEM72O5X8lPtSwGKNmS7WQyDyg==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-address/node_modules/@scure/base": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz",
+ "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@parity/product-sdk-chain-client/-/product-sdk-chain-client-0.9.1.tgz",
+ "integrity": "sha512-NXMJAYqLGdFp0VAbNfn2HeGhcP6n78jxtVEpcv9084ZlldhuwFKJLGwXOj81xbw2QHATbufCNLDY9IsTM+9Pew==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@parity/product-sdk-descriptors": "0.8.0",
+ "@parity/product-sdk-host": "0.14.1",
+ "@parity/product-sdk-logger": "0.1.1",
+ "polkadot-api": "^2.1.6"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@commander-js/extra-typings": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-15.0.0.tgz",
+ "integrity": "sha512-yeJlba62xqmkgELUsn7356MEnzLLu/fw2x4lofFqGnXh6YysRdEs2BaLeLtg1+KU0AXvMeqQvTTp+3hBEBK+EA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "commander": "~15.0.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/cli": {
+ "version": "0.21.9",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/cli/-/cli-0.21.9.tgz",
+ "integrity": "sha512-9aVdF/ocF3DBb8b/gdkcicBIaQkak2kkU4EGW+TunXLIvbIj2X9hH5geOlx8uWNwt0O4O1DIHD/nkXvycG/AcA==",
+ "license": "MIT",
+ "dependencies": {
+ "@commander-js/extra-typings": "^15.0.0",
+ "@polkadot-api/codegen": "0.22.5",
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/known-chains": "0.12.1",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/observable-client": "0.18.7",
+ "@polkadot-api/sm-provider": "0.3.8",
+ "@polkadot-api/smoldot": "0.4.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@polkadot-api/wasm-executor": "^0.2.3",
+ "@polkadot-api/ws-middleware": "0.3.6",
+ "@polkadot-api/ws-provider": "0.9.1",
+ "@types/node": "^25.9.4",
+ "commander": "^15.0.0",
+ "execa": "^9.6.1",
+ "fs.promises.exists": "^1.1.4",
+ "ora": "^9.4.1",
+ "read-pkg": "^10.1.0",
+ "rollup": "^4.62.2",
+ "rollup-plugin-esbuild": "^6.2.1",
+ "rxjs": "^7.8.2",
+ "tsc-prog": "^2.3.0",
+ "typescript": "^6.0.3",
+ "write-package": "^7.2.0"
+ },
+ "bin": {
+ "papi": "dist/main/src/main.js",
+ "polkadot-api": "dist/main/src/main.js"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/codegen": {
+ "version": "0.22.5",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/codegen/-/codegen-0.22.5.tgz",
+ "integrity": "sha512-zwZJAlviI211zhj5i6oXkrr0crrbO3GZjBd2vC9AshY1pRmyiNLV9DZsXw4E6l4JQwdAAyNWtPdnvvB9T3TpKg==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/ink-contracts": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ink-contracts/-/ink-contracts-0.6.3.tgz",
+ "integrity": "sha512-XqnM1VDzI5L62xgg+f8le2yEoz8QZbUKEfAfPnHMOgBj9tJiyF15FcOJmnLMO/vq3cGixqh18tzJekLG5YTxtA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/json-rpc-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider/-/json-rpc-provider-0.2.0.tgz",
+ "integrity": "sha512-lhkuBS/x06i3djQIN7p8jVkMnYuGsUAEMS6RhdWeEpz7X/8/APER4Wdih7MEBovCuwVSCTjOxl8f+alH7AZHZg==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/json-rpc-provider-proxy": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider-proxy/-/json-rpc-provider-proxy-0.4.1.tgz",
+ "integrity": "sha512-F1Hw01C60jn98KQ0vBbgcwAvEcMcKLsJ5kFzq600sgjc6Rnbn1VF/XjTdrjcIqvfpR9sXyGIrpImrov2Usbrsw==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/known-chains": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/known-chains/-/known-chains-0.12.1.tgz",
+ "integrity": "sha512-ZW9TYD2y5IhgNy28zi9sByMr0CaP2I9x8HcAI0pwZR2qDC0kysCG6brDlg1UoZKCjRO99SsKO/iU1o434JgMnQ==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/logs-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/logs-provider/-/logs-provider-0.2.0.tgz",
+ "integrity": "sha512-BH9YdxZu+ZBPPAUwGrvqHPn1hQStL2Im3MmTwYkwXOWW2HlGHULcF65QKvyK+T6/mj2vDvl3MgivnGkUw4pVxg==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/merkleize-metadata": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/merkleize-metadata/-/merkleize-metadata-1.2.3.tgz",
+ "integrity": "sha512-WkPbz0p2XQ9c8yXagdnwCHEB70Gnm91okcsd6IXU393//3aPgkxKgb+/Efnz7C5/KQmg02P0zXo7q/n/W/yVCA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/metadata-builders": {
+ "version": "0.14.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-builders/-/metadata-builders-0.14.3.tgz",
+ "integrity": "sha512-m7CACsiqHzgVEh5WBZGkTV8AQ3CBQKR1YpPQMnlsJfCr/IkgKU0UyWM6WxCmBiReLFVkOfXMtGlpN8+GxpHmww==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/metadata-compatibility": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-compatibility/-/metadata-compatibility-0.6.3.tgz",
+ "integrity": "sha512-/Y0uF8nDk60ijydp8Bd37YexPFdB8hBXJWwEgOJHsVlhiny8sVKXiMg+UkJ9BiEk2z+yMbZRCKmhNpTpizo7aw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/observable-client": {
+ "version": "0.18.7",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/observable-client/-/observable-client-0.18.7.tgz",
+ "integrity": "sha512-/eQi3D8jbXLg/L1hZX4eX0/+nO3kTxkOfYeWEtFhtOvFdfqiiy2DdXG3Zg5QzgHmfG+11p4vSlLiPCC2UvS5Qw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/pjs-signer": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/pjs-signer/-/pjs-signer-0.7.3.tgz",
+ "integrity": "sha512-U7BLFZfnpFMxCh/scJoLXT6oSbfZtZgMTkiu+TbuWQljAb/1ttrQOfshub5VihNyD5rHajp/2Fq0ONZoL5N5PA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signers-common": "0.2.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/raw-client": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/raw-client/-/raw-client-0.3.0.tgz",
+ "integrity": "sha512-u/wM9W7ugIXxBSOEV8+zvQI43b5vgSI0pvE0Rg8PV0G65BTLK0SMc2o2SQL0HtS5+bi5sw/gg4reBJ/0a4U0cw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/signer": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/signer/-/signer-0.3.3.tgz",
+ "integrity": "sha512-bmEV65TwgwbMfiecl7ZQ3k5lfkCOx9FPwPYkVvALcPiqb/d3zYwT9LL/E00hj+EB6IKMlMelEQVuchcW5i/92w==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/merkleize-metadata": "1.2.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signers-common": "0.2.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/signers-common": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/signers-common/-/signers-common-0.2.3.tgz",
+ "integrity": "sha512-SzGLJMxug31Y1P8+0I809ICpDrayztUXFFh2TV02GuwjEnY6mDGnmX56wowZF5yCn+WteeRdcTJTK7Whk3AGYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/sm-provider": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/sm-provider/-/sm-provider-0.3.8.tgz",
+ "integrity": "sha512-jIvzBNsBsh6LIpCrUOa7miZdQPwLPns5IUQyz/8v84R3ON7URSIVbtywGSR8O83BZGyW/DmVkqa5lClLE2fkqw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1"
+ },
+ "peerDependencies": {
+ "@polkadot-api/smoldot": ">=0.3"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/smoldot": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/smoldot/-/smoldot-0.4.6.tgz",
+ "integrity": "sha512-gOXMJ10fXOub0zPP1cGAYeyf29BA2fB+qukrjXGcGN9b0Ya+lDgV7A7Q7y9JOrlGLeKbd1YdrYLAe/F43V7b9Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "^25.9.4",
+ "smoldot": "~3.3.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/substrate-bindings": {
+ "version": "0.20.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-bindings/-/substrate-bindings-0.20.3.tgz",
+ "integrity": "sha512-9iqC71fx1ee9ld1NZV8PFime5vryi0kt1bKCSlvNgO6dqMc06sMZuZ8WPjOzWLCHiKHLuphdMs3rVBBaeCP3yg==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@scure/base": "^2.2.0",
+ "scale-ts": "^1.6.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/substrate-client": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-client/-/substrate-client-0.7.0.tgz",
+ "integrity": "sha512-TWCc4MAMa5SLVQXmomLHknbj+bztQ/Yclgwm8ENBhz8hR7c9rw9FBAkCa02jMBMCAygPhp3ayGRq+UFcF8KIxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/raw-client": "0.3.0",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/utils": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/utils/-/utils-0.4.0.tgz",
+ "integrity": "sha512-9b/hwRM0UloLWV7SfpNaSD/4k8UQAHoaACAk7Xe+1MlfAm2JtnmPiB1GfGrfTyBlsrJVUIBCZpEmbmxVMaIqBA==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/@polkadot-api/ws-provider": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ws-provider/-/ws-provider-0.9.1.tgz",
+ "integrity": "sha512-Ft2QJEjLZgTyKiCEbz3urSOxNfMdqNkg+QKqJhRbOFB7JtR1qMTvLE3TjM+5d2mNlEpOc3j2KDK3APNSj7uQ2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/commander": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz",
+ "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=22.12.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/polkadot-api": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/polkadot-api/-/polkadot-api-2.2.1.tgz",
+ "integrity": "sha512-eiZVUhI1gY4ycBtsCo/yaDXyohUeuqnyKun+bwj90ADSn+jlfjZ4sajAqIhJFwPxbCT75+Zzbln4ZjuZ5PWNWA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/cli": "0.21.9",
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/known-chains": "0.12.1",
+ "@polkadot-api/logs-provider": "0.2.0",
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/observable-client": "0.18.7",
+ "@polkadot-api/pjs-signer": "0.7.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signer": "0.3.3",
+ "@polkadot-api/sm-provider": "0.3.8",
+ "@polkadot-api/smoldot": "0.4.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@polkadot-api/ws-middleware": "0.3.6",
+ "@polkadot-api/ws-provider": "0.9.1",
+ "@rx-state/core": "^0.1.4"
+ },
+ "bin": {
+ "papi": "bin/cli.js",
+ "polkadot-api": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/smoldot": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-3.3.2.tgz",
+ "integrity": "sha512-Zl4h/0gsw8cfTZzuJ7LV7mtR6QjxltwYjMY7MsVw0oXBXrLK8zyOS6DS9Vjsy57pX1vBMg6UVhHxjbH3W905zA==",
+ "license": "GPL-3.0-or-later WITH Classpath-exception-2.0",
+ "dependencies": {
+ "ws": "^8.8.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-chain-client/node_modules/typescript": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
+ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@parity/product-sdk-cloud-storage/-/product-sdk-cloud-storage-0.8.1.tgz",
+ "integrity": "sha512-yRMY8stewHA/ImbJD+PX/ao7JGniLomj3PPyPE22+aGZXpCcYwXdxMcDFOJgNtDK69Fyr483ejaew9tAFRzXNQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@parity/bulletin-sdk": "^0.3.0",
+ "@parity/product-sdk-chain-client": "0.9.1",
+ "@parity/product-sdk-descriptors": "0.8.0",
+ "@parity/product-sdk-errors": "0.2.0",
+ "@parity/product-sdk-host": "0.14.1",
+ "@parity/product-sdk-logger": "0.1.1",
+ "@parity/product-sdk-tx": "0.3.2",
+ "@parity/result": "0.2.0",
+ "multiformats": "^13.3.0",
+ "polkadot-api": "^2.1.6"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@commander-js/extra-typings": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-15.0.0.tgz",
+ "integrity": "sha512-yeJlba62xqmkgELUsn7356MEnzLLu/fw2x4lofFqGnXh6YysRdEs2BaLeLtg1+KU0AXvMeqQvTTp+3hBEBK+EA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "commander": "~15.0.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@parity/bulletin-sdk": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@parity/bulletin-sdk/-/bulletin-sdk-0.3.0.tgz",
+ "integrity": "sha512-sxVwBzyH/egXze1muPXbaGwQuOkP8efVB4Lxunshixf18gJ6WT2tedgUy08QOfQ1848BDQS4wVpRRQfPfb09/g==",
+ "license": "GPL-3.0-or-later WITH Classpath-exception-2.0",
+ "dependencies": {
+ "@ipld/dag-pb": "^4.1.3",
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-labs/hdkd-helpers": "^0.0.29",
+ "ipfs-unixfs": "^12.0.0"
+ },
+ "engines": {
+ "node": ">=22.0.0"
+ },
+ "peerDependencies": {
+ "multiformats": "^13.4.1",
+ "polkadot-api": "^2.1.2"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/cli": {
+ "version": "0.21.9",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/cli/-/cli-0.21.9.tgz",
+ "integrity": "sha512-9aVdF/ocF3DBb8b/gdkcicBIaQkak2kkU4EGW+TunXLIvbIj2X9hH5geOlx8uWNwt0O4O1DIHD/nkXvycG/AcA==",
+ "license": "MIT",
+ "dependencies": {
+ "@commander-js/extra-typings": "^15.0.0",
+ "@polkadot-api/codegen": "0.22.5",
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/known-chains": "0.12.1",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/observable-client": "0.18.7",
+ "@polkadot-api/sm-provider": "0.3.8",
+ "@polkadot-api/smoldot": "0.4.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@polkadot-api/wasm-executor": "^0.2.3",
+ "@polkadot-api/ws-middleware": "0.3.6",
+ "@polkadot-api/ws-provider": "0.9.1",
+ "@types/node": "^25.9.4",
+ "commander": "^15.0.0",
+ "execa": "^9.6.1",
+ "fs.promises.exists": "^1.1.4",
+ "ora": "^9.4.1",
+ "read-pkg": "^10.1.0",
+ "rollup": "^4.62.2",
+ "rollup-plugin-esbuild": "^6.2.1",
+ "rxjs": "^7.8.2",
+ "tsc-prog": "^2.3.0",
+ "typescript": "^6.0.3",
+ "write-package": "^7.2.0"
+ },
+ "bin": {
+ "papi": "dist/main/src/main.js",
+ "polkadot-api": "dist/main/src/main.js"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/codegen": {
+ "version": "0.22.5",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/codegen/-/codegen-0.22.5.tgz",
+ "integrity": "sha512-zwZJAlviI211zhj5i6oXkrr0crrbO3GZjBd2vC9AshY1pRmyiNLV9DZsXw4E6l4JQwdAAyNWtPdnvvB9T3TpKg==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/ink-contracts": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ink-contracts/-/ink-contracts-0.6.3.tgz",
+ "integrity": "sha512-XqnM1VDzI5L62xgg+f8le2yEoz8QZbUKEfAfPnHMOgBj9tJiyF15FcOJmnLMO/vq3cGixqh18tzJekLG5YTxtA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/json-rpc-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider/-/json-rpc-provider-0.2.0.tgz",
+ "integrity": "sha512-lhkuBS/x06i3djQIN7p8jVkMnYuGsUAEMS6RhdWeEpz7X/8/APER4Wdih7MEBovCuwVSCTjOxl8f+alH7AZHZg==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/json-rpc-provider-proxy": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider-proxy/-/json-rpc-provider-proxy-0.4.1.tgz",
+ "integrity": "sha512-F1Hw01C60jn98KQ0vBbgcwAvEcMcKLsJ5kFzq600sgjc6Rnbn1VF/XjTdrjcIqvfpR9sXyGIrpImrov2Usbrsw==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/known-chains": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/known-chains/-/known-chains-0.12.1.tgz",
+ "integrity": "sha512-ZW9TYD2y5IhgNy28zi9sByMr0CaP2I9x8HcAI0pwZR2qDC0kysCG6brDlg1UoZKCjRO99SsKO/iU1o434JgMnQ==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/logs-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/logs-provider/-/logs-provider-0.2.0.tgz",
+ "integrity": "sha512-BH9YdxZu+ZBPPAUwGrvqHPn1hQStL2Im3MmTwYkwXOWW2HlGHULcF65QKvyK+T6/mj2vDvl3MgivnGkUw4pVxg==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/merkleize-metadata": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/merkleize-metadata/-/merkleize-metadata-1.2.3.tgz",
+ "integrity": "sha512-WkPbz0p2XQ9c8yXagdnwCHEB70Gnm91okcsd6IXU393//3aPgkxKgb+/Efnz7C5/KQmg02P0zXo7q/n/W/yVCA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/metadata-builders": {
+ "version": "0.14.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-builders/-/metadata-builders-0.14.3.tgz",
+ "integrity": "sha512-m7CACsiqHzgVEh5WBZGkTV8AQ3CBQKR1YpPQMnlsJfCr/IkgKU0UyWM6WxCmBiReLFVkOfXMtGlpN8+GxpHmww==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/metadata-compatibility": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-compatibility/-/metadata-compatibility-0.6.3.tgz",
+ "integrity": "sha512-/Y0uF8nDk60ijydp8Bd37YexPFdB8hBXJWwEgOJHsVlhiny8sVKXiMg+UkJ9BiEk2z+yMbZRCKmhNpTpizo7aw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/observable-client": {
+ "version": "0.18.7",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/observable-client/-/observable-client-0.18.7.tgz",
+ "integrity": "sha512-/eQi3D8jbXLg/L1hZX4eX0/+nO3kTxkOfYeWEtFhtOvFdfqiiy2DdXG3Zg5QzgHmfG+11p4vSlLiPCC2UvS5Qw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/pjs-signer": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/pjs-signer/-/pjs-signer-0.7.3.tgz",
+ "integrity": "sha512-U7BLFZfnpFMxCh/scJoLXT6oSbfZtZgMTkiu+TbuWQljAb/1ttrQOfshub5VihNyD5rHajp/2Fq0ONZoL5N5PA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signers-common": "0.2.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/raw-client": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/raw-client/-/raw-client-0.3.0.tgz",
+ "integrity": "sha512-u/wM9W7ugIXxBSOEV8+zvQI43b5vgSI0pvE0Rg8PV0G65BTLK0SMc2o2SQL0HtS5+bi5sw/gg4reBJ/0a4U0cw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/signer": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/signer/-/signer-0.3.3.tgz",
+ "integrity": "sha512-bmEV65TwgwbMfiecl7ZQ3k5lfkCOx9FPwPYkVvALcPiqb/d3zYwT9LL/E00hj+EB6IKMlMelEQVuchcW5i/92w==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/merkleize-metadata": "1.2.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signers-common": "0.2.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/signers-common": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/signers-common/-/signers-common-0.2.3.tgz",
+ "integrity": "sha512-SzGLJMxug31Y1P8+0I809ICpDrayztUXFFh2TV02GuwjEnY6mDGnmX56wowZF5yCn+WteeRdcTJTK7Whk3AGYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/sm-provider": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/sm-provider/-/sm-provider-0.3.8.tgz",
+ "integrity": "sha512-jIvzBNsBsh6LIpCrUOa7miZdQPwLPns5IUQyz/8v84R3ON7URSIVbtywGSR8O83BZGyW/DmVkqa5lClLE2fkqw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1"
+ },
+ "peerDependencies": {
+ "@polkadot-api/smoldot": ">=0.3"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/smoldot": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/smoldot/-/smoldot-0.4.6.tgz",
+ "integrity": "sha512-gOXMJ10fXOub0zPP1cGAYeyf29BA2fB+qukrjXGcGN9b0Ya+lDgV7A7Q7y9JOrlGLeKbd1YdrYLAe/F43V7b9Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "^25.9.4",
+ "smoldot": "~3.3.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/substrate-bindings": {
+ "version": "0.20.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-bindings/-/substrate-bindings-0.20.3.tgz",
+ "integrity": "sha512-9iqC71fx1ee9ld1NZV8PFime5vryi0kt1bKCSlvNgO6dqMc06sMZuZ8WPjOzWLCHiKHLuphdMs3rVBBaeCP3yg==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@scure/base": "^2.2.0",
+ "scale-ts": "^1.6.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/substrate-client": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-client/-/substrate-client-0.7.0.tgz",
+ "integrity": "sha512-TWCc4MAMa5SLVQXmomLHknbj+bztQ/Yclgwm8ENBhz8hR7c9rw9FBAkCa02jMBMCAygPhp3ayGRq+UFcF8KIxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/raw-client": "0.3.0",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/utils": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/utils/-/utils-0.4.0.tgz",
+ "integrity": "sha512-9b/hwRM0UloLWV7SfpNaSD/4k8UQAHoaACAk7Xe+1MlfAm2JtnmPiB1GfGrfTyBlsrJVUIBCZpEmbmxVMaIqBA==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-api/ws-provider": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ws-provider/-/ws-provider-0.9.1.tgz",
+ "integrity": "sha512-Ft2QJEjLZgTyKiCEbz3urSOxNfMdqNkg+QKqJhRbOFB7JtR1qMTvLE3TjM+5d2mNlEpOc3j2KDK3APNSj7uQ2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/@polkadot-labs/hdkd-helpers": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@polkadot-labs/hdkd-helpers/-/hdkd-helpers-0.0.29.tgz",
+ "integrity": "sha512-yiLm1Gj3j5NrQV+VFMlFzkBgcRBNfq2Sd/U3S8iau2bzhDwgsn4gy6FDt94TRPD5xLxOzi1I3wSLOrgOs2eLVw==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/curves": "^2.2.0",
+ "@noble/hashes": "^2.2.0",
+ "@scure/base": "^2.0.0",
+ "@scure/sr25519": "^1.0.0",
+ "scale-ts": "^1.6.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/commander": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz",
+ "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=22.12.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/polkadot-api": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/polkadot-api/-/polkadot-api-2.2.1.tgz",
+ "integrity": "sha512-eiZVUhI1gY4ycBtsCo/yaDXyohUeuqnyKun+bwj90ADSn+jlfjZ4sajAqIhJFwPxbCT75+Zzbln4ZjuZ5PWNWA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/cli": "0.21.9",
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/known-chains": "0.12.1",
+ "@polkadot-api/logs-provider": "0.2.0",
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/observable-client": "0.18.7",
+ "@polkadot-api/pjs-signer": "0.7.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signer": "0.3.3",
+ "@polkadot-api/sm-provider": "0.3.8",
+ "@polkadot-api/smoldot": "0.4.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@polkadot-api/ws-middleware": "0.3.6",
+ "@polkadot-api/ws-provider": "0.9.1",
+ "@rx-state/core": "^0.1.4"
+ },
+ "bin": {
+ "papi": "bin/cli.js",
+ "polkadot-api": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/smoldot": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-3.3.2.tgz",
+ "integrity": "sha512-Zl4h/0gsw8cfTZzuJ7LV7mtR6QjxltwYjMY7MsVw0oXBXrLK8zyOS6DS9Vjsy57pX1vBMg6UVhHxjbH3W905zA==",
+ "license": "GPL-3.0-or-later WITH Classpath-exception-2.0",
+ "dependencies": {
+ "ws": "^8.8.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-cloud-storage/node_modules/typescript": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
+ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/@parity/product-sdk-contracts/-/product-sdk-contracts-0.9.2.tgz",
+ "integrity": "sha512-4svBhyBOoNfV4K5f9feizZSPl1Hn5frYpJvf5hjR9z7zp+t+1ruM/DjUM5QCgwrAmwkpfw7oxHDFTN3SlBo0tw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@parity/product-sdk-address": "0.1.1",
+ "@parity/product-sdk-errors": "0.2.0",
+ "@parity/product-sdk-keys": "0.3.16",
+ "@parity/product-sdk-logger": "0.1.1",
+ "@parity/product-sdk-signer": "0.11.1",
+ "@parity/product-sdk-tx": "0.3.2",
+ "@parity/result": "0.2.0",
+ "@polkadot-labs/hdkd-helpers": "^0.0.30",
+ "polkadot-api": "^2.1.6",
+ "viem": "^2.52.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@commander-js/extra-typings": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-15.0.0.tgz",
+ "integrity": "sha512-yeJlba62xqmkgELUsn7356MEnzLLu/fw2x4lofFqGnXh6YysRdEs2BaLeLtg1+KU0AXvMeqQvTTp+3hBEBK+EA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "commander": "~15.0.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/cli": {
+ "version": "0.21.9",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/cli/-/cli-0.21.9.tgz",
+ "integrity": "sha512-9aVdF/ocF3DBb8b/gdkcicBIaQkak2kkU4EGW+TunXLIvbIj2X9hH5geOlx8uWNwt0O4O1DIHD/nkXvycG/AcA==",
+ "license": "MIT",
+ "dependencies": {
+ "@commander-js/extra-typings": "^15.0.0",
+ "@polkadot-api/codegen": "0.22.5",
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/known-chains": "0.12.1",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/observable-client": "0.18.7",
+ "@polkadot-api/sm-provider": "0.3.8",
+ "@polkadot-api/smoldot": "0.4.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@polkadot-api/wasm-executor": "^0.2.3",
+ "@polkadot-api/ws-middleware": "0.3.6",
+ "@polkadot-api/ws-provider": "0.9.1",
+ "@types/node": "^25.9.4",
+ "commander": "^15.0.0",
+ "execa": "^9.6.1",
+ "fs.promises.exists": "^1.1.4",
+ "ora": "^9.4.1",
+ "read-pkg": "^10.1.0",
+ "rollup": "^4.62.2",
+ "rollup-plugin-esbuild": "^6.2.1",
+ "rxjs": "^7.8.2",
+ "tsc-prog": "^2.3.0",
+ "typescript": "^6.0.3",
+ "write-package": "^7.2.0"
+ },
+ "bin": {
+ "papi": "dist/main/src/main.js",
+ "polkadot-api": "dist/main/src/main.js"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/codegen": {
+ "version": "0.22.5",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/codegen/-/codegen-0.22.5.tgz",
+ "integrity": "sha512-zwZJAlviI211zhj5i6oXkrr0crrbO3GZjBd2vC9AshY1pRmyiNLV9DZsXw4E6l4JQwdAAyNWtPdnvvB9T3TpKg==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/ink-contracts": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ink-contracts/-/ink-contracts-0.6.3.tgz",
+ "integrity": "sha512-XqnM1VDzI5L62xgg+f8le2yEoz8QZbUKEfAfPnHMOgBj9tJiyF15FcOJmnLMO/vq3cGixqh18tzJekLG5YTxtA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/json-rpc-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider/-/json-rpc-provider-0.2.0.tgz",
+ "integrity": "sha512-lhkuBS/x06i3djQIN7p8jVkMnYuGsUAEMS6RhdWeEpz7X/8/APER4Wdih7MEBovCuwVSCTjOxl8f+alH7AZHZg==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/json-rpc-provider-proxy": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider-proxy/-/json-rpc-provider-proxy-0.4.1.tgz",
+ "integrity": "sha512-F1Hw01C60jn98KQ0vBbgcwAvEcMcKLsJ5kFzq600sgjc6Rnbn1VF/XjTdrjcIqvfpR9sXyGIrpImrov2Usbrsw==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/known-chains": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/known-chains/-/known-chains-0.12.1.tgz",
+ "integrity": "sha512-ZW9TYD2y5IhgNy28zi9sByMr0CaP2I9x8HcAI0pwZR2qDC0kysCG6brDlg1UoZKCjRO99SsKO/iU1o434JgMnQ==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/logs-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/logs-provider/-/logs-provider-0.2.0.tgz",
+ "integrity": "sha512-BH9YdxZu+ZBPPAUwGrvqHPn1hQStL2Im3MmTwYkwXOWW2HlGHULcF65QKvyK+T6/mj2vDvl3MgivnGkUw4pVxg==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/merkleize-metadata": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/merkleize-metadata/-/merkleize-metadata-1.2.3.tgz",
+ "integrity": "sha512-WkPbz0p2XQ9c8yXagdnwCHEB70Gnm91okcsd6IXU393//3aPgkxKgb+/Efnz7C5/KQmg02P0zXo7q/n/W/yVCA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/metadata-builders": {
+ "version": "0.14.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-builders/-/metadata-builders-0.14.3.tgz",
+ "integrity": "sha512-m7CACsiqHzgVEh5WBZGkTV8AQ3CBQKR1YpPQMnlsJfCr/IkgKU0UyWM6WxCmBiReLFVkOfXMtGlpN8+GxpHmww==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/metadata-compatibility": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-compatibility/-/metadata-compatibility-0.6.3.tgz",
+ "integrity": "sha512-/Y0uF8nDk60ijydp8Bd37YexPFdB8hBXJWwEgOJHsVlhiny8sVKXiMg+UkJ9BiEk2z+yMbZRCKmhNpTpizo7aw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/observable-client": {
+ "version": "0.18.7",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/observable-client/-/observable-client-0.18.7.tgz",
+ "integrity": "sha512-/eQi3D8jbXLg/L1hZX4eX0/+nO3kTxkOfYeWEtFhtOvFdfqiiy2DdXG3Zg5QzgHmfG+11p4vSlLiPCC2UvS5Qw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/pjs-signer": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/pjs-signer/-/pjs-signer-0.7.3.tgz",
+ "integrity": "sha512-U7BLFZfnpFMxCh/scJoLXT6oSbfZtZgMTkiu+TbuWQljAb/1ttrQOfshub5VihNyD5rHajp/2Fq0ONZoL5N5PA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signers-common": "0.2.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/raw-client": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/raw-client/-/raw-client-0.3.0.tgz",
+ "integrity": "sha512-u/wM9W7ugIXxBSOEV8+zvQI43b5vgSI0pvE0Rg8PV0G65BTLK0SMc2o2SQL0HtS5+bi5sw/gg4reBJ/0a4U0cw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/signer": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/signer/-/signer-0.3.3.tgz",
+ "integrity": "sha512-bmEV65TwgwbMfiecl7ZQ3k5lfkCOx9FPwPYkVvALcPiqb/d3zYwT9LL/E00hj+EB6IKMlMelEQVuchcW5i/92w==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/merkleize-metadata": "1.2.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signers-common": "0.2.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/signers-common": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/signers-common/-/signers-common-0.2.3.tgz",
+ "integrity": "sha512-SzGLJMxug31Y1P8+0I809ICpDrayztUXFFh2TV02GuwjEnY6mDGnmX56wowZF5yCn+WteeRdcTJTK7Whk3AGYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/sm-provider": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/sm-provider/-/sm-provider-0.3.8.tgz",
+ "integrity": "sha512-jIvzBNsBsh6LIpCrUOa7miZdQPwLPns5IUQyz/8v84R3ON7URSIVbtywGSR8O83BZGyW/DmVkqa5lClLE2fkqw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1"
+ },
+ "peerDependencies": {
+ "@polkadot-api/smoldot": ">=0.3"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/smoldot": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/smoldot/-/smoldot-0.4.6.tgz",
+ "integrity": "sha512-gOXMJ10fXOub0zPP1cGAYeyf29BA2fB+qukrjXGcGN9b0Ya+lDgV7A7Q7y9JOrlGLeKbd1YdrYLAe/F43V7b9Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "^25.9.4",
+ "smoldot": "~3.3.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/substrate-bindings": {
+ "version": "0.20.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-bindings/-/substrate-bindings-0.20.3.tgz",
+ "integrity": "sha512-9iqC71fx1ee9ld1NZV8PFime5vryi0kt1bKCSlvNgO6dqMc06sMZuZ8WPjOzWLCHiKHLuphdMs3rVBBaeCP3yg==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@scure/base": "^2.2.0",
+ "scale-ts": "^1.6.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/substrate-client": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-client/-/substrate-client-0.7.0.tgz",
+ "integrity": "sha512-TWCc4MAMa5SLVQXmomLHknbj+bztQ/Yclgwm8ENBhz8hR7c9rw9FBAkCa02jMBMCAygPhp3ayGRq+UFcF8KIxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/raw-client": "0.3.0",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/utils": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/utils/-/utils-0.4.0.tgz",
+ "integrity": "sha512-9b/hwRM0UloLWV7SfpNaSD/4k8UQAHoaACAk7Xe+1MlfAm2JtnmPiB1GfGrfTyBlsrJVUIBCZpEmbmxVMaIqBA==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-api/ws-provider": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ws-provider/-/ws-provider-0.9.1.tgz",
+ "integrity": "sha512-Ft2QJEjLZgTyKiCEbz3urSOxNfMdqNkg+QKqJhRbOFB7JtR1qMTvLE3TjM+5d2mNlEpOc3j2KDK3APNSj7uQ2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/@polkadot-labs/hdkd-helpers": {
+ "version": "0.0.30",
+ "resolved": "https://registry.npmjs.org/@polkadot-labs/hdkd-helpers/-/hdkd-helpers-0.0.30.tgz",
+ "integrity": "sha512-qWmmD6ayj14RenDuDFfjF3sHS7ObqPzwIIMPcSVoDeKFSeQV7RY0HwyhC5CG4i6FoguMzak2dbtjYpNN5XQiwQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/curves": "^2.2.0",
+ "@noble/hashes": "^2.2.0",
+ "@scure/base": "^2.2.0",
+ "@scure/sr25519": "^1.0.0",
+ "scale-ts": "^1.6.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/commander": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz",
+ "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=22.12.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/polkadot-api": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/polkadot-api/-/polkadot-api-2.2.1.tgz",
+ "integrity": "sha512-eiZVUhI1gY4ycBtsCo/yaDXyohUeuqnyKun+bwj90ADSn+jlfjZ4sajAqIhJFwPxbCT75+Zzbln4ZjuZ5PWNWA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/cli": "0.21.9",
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/known-chains": "0.12.1",
+ "@polkadot-api/logs-provider": "0.2.0",
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/observable-client": "0.18.7",
+ "@polkadot-api/pjs-signer": "0.7.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signer": "0.3.3",
+ "@polkadot-api/sm-provider": "0.3.8",
+ "@polkadot-api/smoldot": "0.4.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@polkadot-api/ws-middleware": "0.3.6",
+ "@polkadot-api/ws-provider": "0.9.1",
+ "@rx-state/core": "^0.1.4"
+ },
+ "bin": {
+ "papi": "bin/cli.js",
+ "polkadot-api": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/smoldot": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-3.3.2.tgz",
+ "integrity": "sha512-Zl4h/0gsw8cfTZzuJ7LV7mtR6QjxltwYjMY7MsVw0oXBXrLK8zyOS6DS9Vjsy57pX1vBMg6UVhHxjbH3W905zA==",
+ "license": "GPL-3.0-or-later WITH Classpath-exception-2.0",
+ "dependencies": {
+ "ws": "^8.8.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-contracts/node_modules/typescript": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
+ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/@parity/product-sdk-crypto": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@parity/product-sdk-crypto/-/product-sdk-crypto-0.1.1.tgz",
+ "integrity": "sha512-No6AyTLw1Nv3ym8SDdXh/tnezdClNOL9pJgaciVr9Ny6hIL5rs6MQiXsP0+1bc1Nwymz5Q4FqsYg/htE4lejNg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@noble/ciphers": "^1.2.1",
+ "@noble/curves": "^1.8.0",
+ "@noble/hashes": "^1.7.1",
+ "tweetnacl": "^1.0.3"
+ }
+ },
+ "node_modules/@parity/product-sdk-crypto/node_modules/@noble/curves": {
+ "version": "1.9.7",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz",
+ "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "1.8.0"
+ },
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@parity/product-sdk-crypto/node_modules/@noble/hashes": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@parity/product-sdk-descriptors/-/product-sdk-descriptors-0.8.0.tgz",
+ "integrity": "sha512-DfdrtzjBqiS4A/fnqoDOyW+KiBVKkOtfDDl1/BLHtvYxp3TanPkS952Sd28F7v1Rk/0xnqm8d7shD06/XoLqhg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "polkadot-api": "^2.1.6"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@commander-js/extra-typings": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-15.0.0.tgz",
+ "integrity": "sha512-yeJlba62xqmkgELUsn7356MEnzLLu/fw2x4lofFqGnXh6YysRdEs2BaLeLtg1+KU0AXvMeqQvTTp+3hBEBK+EA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "commander": "~15.0.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/cli": {
+ "version": "0.21.9",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/cli/-/cli-0.21.9.tgz",
+ "integrity": "sha512-9aVdF/ocF3DBb8b/gdkcicBIaQkak2kkU4EGW+TunXLIvbIj2X9hH5geOlx8uWNwt0O4O1DIHD/nkXvycG/AcA==",
+ "license": "MIT",
+ "dependencies": {
+ "@commander-js/extra-typings": "^15.0.0",
+ "@polkadot-api/codegen": "0.22.5",
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/known-chains": "0.12.1",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/observable-client": "0.18.7",
+ "@polkadot-api/sm-provider": "0.3.8",
+ "@polkadot-api/smoldot": "0.4.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@polkadot-api/wasm-executor": "^0.2.3",
+ "@polkadot-api/ws-middleware": "0.3.6",
+ "@polkadot-api/ws-provider": "0.9.1",
+ "@types/node": "^25.9.4",
+ "commander": "^15.0.0",
+ "execa": "^9.6.1",
+ "fs.promises.exists": "^1.1.4",
+ "ora": "^9.4.1",
+ "read-pkg": "^10.1.0",
+ "rollup": "^4.62.2",
+ "rollup-plugin-esbuild": "^6.2.1",
+ "rxjs": "^7.8.2",
+ "tsc-prog": "^2.3.0",
+ "typescript": "^6.0.3",
+ "write-package": "^7.2.0"
+ },
+ "bin": {
+ "papi": "dist/main/src/main.js",
+ "polkadot-api": "dist/main/src/main.js"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/codegen": {
+ "version": "0.22.5",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/codegen/-/codegen-0.22.5.tgz",
+ "integrity": "sha512-zwZJAlviI211zhj5i6oXkrr0crrbO3GZjBd2vC9AshY1pRmyiNLV9DZsXw4E6l4JQwdAAyNWtPdnvvB9T3TpKg==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/ink-contracts": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ink-contracts/-/ink-contracts-0.6.3.tgz",
+ "integrity": "sha512-XqnM1VDzI5L62xgg+f8le2yEoz8QZbUKEfAfPnHMOgBj9tJiyF15FcOJmnLMO/vq3cGixqh18tzJekLG5YTxtA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/json-rpc-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider/-/json-rpc-provider-0.2.0.tgz",
+ "integrity": "sha512-lhkuBS/x06i3djQIN7p8jVkMnYuGsUAEMS6RhdWeEpz7X/8/APER4Wdih7MEBovCuwVSCTjOxl8f+alH7AZHZg==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/json-rpc-provider-proxy": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider-proxy/-/json-rpc-provider-proxy-0.4.1.tgz",
+ "integrity": "sha512-F1Hw01C60jn98KQ0vBbgcwAvEcMcKLsJ5kFzq600sgjc6Rnbn1VF/XjTdrjcIqvfpR9sXyGIrpImrov2Usbrsw==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/known-chains": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/known-chains/-/known-chains-0.12.1.tgz",
+ "integrity": "sha512-ZW9TYD2y5IhgNy28zi9sByMr0CaP2I9x8HcAI0pwZR2qDC0kysCG6brDlg1UoZKCjRO99SsKO/iU1o434JgMnQ==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/logs-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/logs-provider/-/logs-provider-0.2.0.tgz",
+ "integrity": "sha512-BH9YdxZu+ZBPPAUwGrvqHPn1hQStL2Im3MmTwYkwXOWW2HlGHULcF65QKvyK+T6/mj2vDvl3MgivnGkUw4pVxg==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/merkleize-metadata": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/merkleize-metadata/-/merkleize-metadata-1.2.3.tgz",
+ "integrity": "sha512-WkPbz0p2XQ9c8yXagdnwCHEB70Gnm91okcsd6IXU393//3aPgkxKgb+/Efnz7C5/KQmg02P0zXo7q/n/W/yVCA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/metadata-builders": {
+ "version": "0.14.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-builders/-/metadata-builders-0.14.3.tgz",
+ "integrity": "sha512-m7CACsiqHzgVEh5WBZGkTV8AQ3CBQKR1YpPQMnlsJfCr/IkgKU0UyWM6WxCmBiReLFVkOfXMtGlpN8+GxpHmww==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/metadata-compatibility": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-compatibility/-/metadata-compatibility-0.6.3.tgz",
+ "integrity": "sha512-/Y0uF8nDk60ijydp8Bd37YexPFdB8hBXJWwEgOJHsVlhiny8sVKXiMg+UkJ9BiEk2z+yMbZRCKmhNpTpizo7aw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/observable-client": {
+ "version": "0.18.7",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/observable-client/-/observable-client-0.18.7.tgz",
+ "integrity": "sha512-/eQi3D8jbXLg/L1hZX4eX0/+nO3kTxkOfYeWEtFhtOvFdfqiiy2DdXG3Zg5QzgHmfG+11p4vSlLiPCC2UvS5Qw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/pjs-signer": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/pjs-signer/-/pjs-signer-0.7.3.tgz",
+ "integrity": "sha512-U7BLFZfnpFMxCh/scJoLXT6oSbfZtZgMTkiu+TbuWQljAb/1ttrQOfshub5VihNyD5rHajp/2Fq0ONZoL5N5PA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signers-common": "0.2.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/raw-client": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/raw-client/-/raw-client-0.3.0.tgz",
+ "integrity": "sha512-u/wM9W7ugIXxBSOEV8+zvQI43b5vgSI0pvE0Rg8PV0G65BTLK0SMc2o2SQL0HtS5+bi5sw/gg4reBJ/0a4U0cw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/signer": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/signer/-/signer-0.3.3.tgz",
+ "integrity": "sha512-bmEV65TwgwbMfiecl7ZQ3k5lfkCOx9FPwPYkVvALcPiqb/d3zYwT9LL/E00hj+EB6IKMlMelEQVuchcW5i/92w==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/merkleize-metadata": "1.2.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signers-common": "0.2.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/signers-common": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/signers-common/-/signers-common-0.2.3.tgz",
+ "integrity": "sha512-SzGLJMxug31Y1P8+0I809ICpDrayztUXFFh2TV02GuwjEnY6mDGnmX56wowZF5yCn+WteeRdcTJTK7Whk3AGYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/sm-provider": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/sm-provider/-/sm-provider-0.3.8.tgz",
+ "integrity": "sha512-jIvzBNsBsh6LIpCrUOa7miZdQPwLPns5IUQyz/8v84R3ON7URSIVbtywGSR8O83BZGyW/DmVkqa5lClLE2fkqw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1"
+ },
+ "peerDependencies": {
+ "@polkadot-api/smoldot": ">=0.3"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/smoldot": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/smoldot/-/smoldot-0.4.6.tgz",
+ "integrity": "sha512-gOXMJ10fXOub0zPP1cGAYeyf29BA2fB+qukrjXGcGN9b0Ya+lDgV7A7Q7y9JOrlGLeKbd1YdrYLAe/F43V7b9Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "^25.9.4",
+ "smoldot": "~3.3.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/substrate-bindings": {
+ "version": "0.20.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-bindings/-/substrate-bindings-0.20.3.tgz",
+ "integrity": "sha512-9iqC71fx1ee9ld1NZV8PFime5vryi0kt1bKCSlvNgO6dqMc06sMZuZ8WPjOzWLCHiKHLuphdMs3rVBBaeCP3yg==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@scure/base": "^2.2.0",
+ "scale-ts": "^1.6.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/substrate-client": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-client/-/substrate-client-0.7.0.tgz",
+ "integrity": "sha512-TWCc4MAMa5SLVQXmomLHknbj+bztQ/Yclgwm8ENBhz8hR7c9rw9FBAkCa02jMBMCAygPhp3ayGRq+UFcF8KIxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/raw-client": "0.3.0",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/utils": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/utils/-/utils-0.4.0.tgz",
+ "integrity": "sha512-9b/hwRM0UloLWV7SfpNaSD/4k8UQAHoaACAk7Xe+1MlfAm2JtnmPiB1GfGrfTyBlsrJVUIBCZpEmbmxVMaIqBA==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/@polkadot-api/ws-provider": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ws-provider/-/ws-provider-0.9.1.tgz",
+ "integrity": "sha512-Ft2QJEjLZgTyKiCEbz3urSOxNfMdqNkg+QKqJhRbOFB7JtR1qMTvLE3TjM+5d2mNlEpOc3j2KDK3APNSj7uQ2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/commander": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz",
+ "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=22.12.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/polkadot-api": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/polkadot-api/-/polkadot-api-2.2.1.tgz",
+ "integrity": "sha512-eiZVUhI1gY4ycBtsCo/yaDXyohUeuqnyKun+bwj90ADSn+jlfjZ4sajAqIhJFwPxbCT75+Zzbln4ZjuZ5PWNWA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/cli": "0.21.9",
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/known-chains": "0.12.1",
+ "@polkadot-api/logs-provider": "0.2.0",
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/observable-client": "0.18.7",
+ "@polkadot-api/pjs-signer": "0.7.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signer": "0.3.3",
+ "@polkadot-api/sm-provider": "0.3.8",
+ "@polkadot-api/smoldot": "0.4.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@polkadot-api/ws-middleware": "0.3.6",
+ "@polkadot-api/ws-provider": "0.9.1",
+ "@rx-state/core": "^0.1.4"
+ },
+ "bin": {
+ "papi": "bin/cli.js",
+ "polkadot-api": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/smoldot": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-3.3.2.tgz",
+ "integrity": "sha512-Zl4h/0gsw8cfTZzuJ7LV7mtR6QjxltwYjMY7MsVw0oXBXrLK8zyOS6DS9Vjsy57pX1vBMg6UVhHxjbH3W905zA==",
+ "license": "GPL-3.0-or-later WITH Classpath-exception-2.0",
+ "dependencies": {
+ "ws": "^8.8.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-descriptors/node_modules/typescript": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
+ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/@parity/product-sdk-errors": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@parity/product-sdk-errors/-/product-sdk-errors-0.2.0.tgz",
+ "integrity": "sha512-2rvJV0iJyNAxSjm+RHcoch3GRGYgfMDd2wCha+LmykIDZ06oUfFo+wY6Jf8z56ZMMqHvBvDO1ZNrstVgUZxlEQ==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@parity/product-sdk-host": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/@parity/product-sdk-host/-/product-sdk-host-0.14.1.tgz",
+ "integrity": "sha512-PF87O0Kb35TyZo+sDlcYo9ZvaUedR8NNbcZvfBf8PBL65Yck10jIDuXE386hl9pgpgOn6o0Y1z6iJfEolhNXsg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@parity/product-sdk-errors": "0.2.0",
+ "@parity/product-sdk-logger": "0.1.1",
+ "@parity/result": "0.2.0",
+ "@parity/truapi": "^0.5.0",
+ "@polkadot-api/json-rpc-provider": "^0.2.0",
+ "@polkadot-api/substrate-bindings": "^0.20.3",
+ "neverthrow": "^8.2.0",
+ "polkadot-api": "^2.1.6"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@commander-js/extra-typings": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-15.0.0.tgz",
+ "integrity": "sha512-yeJlba62xqmkgELUsn7356MEnzLLu/fw2x4lofFqGnXh6YysRdEs2BaLeLtg1+KU0AXvMeqQvTTp+3hBEBK+EA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "commander": "~15.0.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/cli": {
+ "version": "0.21.9",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/cli/-/cli-0.21.9.tgz",
+ "integrity": "sha512-9aVdF/ocF3DBb8b/gdkcicBIaQkak2kkU4EGW+TunXLIvbIj2X9hH5geOlx8uWNwt0O4O1DIHD/nkXvycG/AcA==",
+ "license": "MIT",
+ "dependencies": {
+ "@commander-js/extra-typings": "^15.0.0",
+ "@polkadot-api/codegen": "0.22.5",
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/known-chains": "0.12.1",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/observable-client": "0.18.7",
+ "@polkadot-api/sm-provider": "0.3.8",
+ "@polkadot-api/smoldot": "0.4.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@polkadot-api/wasm-executor": "^0.2.3",
+ "@polkadot-api/ws-middleware": "0.3.6",
+ "@polkadot-api/ws-provider": "0.9.1",
+ "@types/node": "^25.9.4",
+ "commander": "^15.0.0",
+ "execa": "^9.6.1",
+ "fs.promises.exists": "^1.1.4",
+ "ora": "^9.4.1",
+ "read-pkg": "^10.1.0",
+ "rollup": "^4.62.2",
+ "rollup-plugin-esbuild": "^6.2.1",
+ "rxjs": "^7.8.2",
+ "tsc-prog": "^2.3.0",
+ "typescript": "^6.0.3",
+ "write-package": "^7.2.0"
+ },
+ "bin": {
+ "papi": "dist/main/src/main.js",
+ "polkadot-api": "dist/main/src/main.js"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/codegen": {
+ "version": "0.22.5",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/codegen/-/codegen-0.22.5.tgz",
+ "integrity": "sha512-zwZJAlviI211zhj5i6oXkrr0crrbO3GZjBd2vC9AshY1pRmyiNLV9DZsXw4E6l4JQwdAAyNWtPdnvvB9T3TpKg==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/ink-contracts": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ink-contracts/-/ink-contracts-0.6.3.tgz",
+ "integrity": "sha512-XqnM1VDzI5L62xgg+f8le2yEoz8QZbUKEfAfPnHMOgBj9tJiyF15FcOJmnLMO/vq3cGixqh18tzJekLG5YTxtA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/json-rpc-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider/-/json-rpc-provider-0.2.0.tgz",
+ "integrity": "sha512-lhkuBS/x06i3djQIN7p8jVkMnYuGsUAEMS6RhdWeEpz7X/8/APER4Wdih7MEBovCuwVSCTjOxl8f+alH7AZHZg==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/json-rpc-provider-proxy": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider-proxy/-/json-rpc-provider-proxy-0.4.1.tgz",
+ "integrity": "sha512-F1Hw01C60jn98KQ0vBbgcwAvEcMcKLsJ5kFzq600sgjc6Rnbn1VF/XjTdrjcIqvfpR9sXyGIrpImrov2Usbrsw==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/known-chains": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/known-chains/-/known-chains-0.12.1.tgz",
+ "integrity": "sha512-ZW9TYD2y5IhgNy28zi9sByMr0CaP2I9x8HcAI0pwZR2qDC0kysCG6brDlg1UoZKCjRO99SsKO/iU1o434JgMnQ==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/logs-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/logs-provider/-/logs-provider-0.2.0.tgz",
+ "integrity": "sha512-BH9YdxZu+ZBPPAUwGrvqHPn1hQStL2Im3MmTwYkwXOWW2HlGHULcF65QKvyK+T6/mj2vDvl3MgivnGkUw4pVxg==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/merkleize-metadata": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/merkleize-metadata/-/merkleize-metadata-1.2.3.tgz",
+ "integrity": "sha512-WkPbz0p2XQ9c8yXagdnwCHEB70Gnm91okcsd6IXU393//3aPgkxKgb+/Efnz7C5/KQmg02P0zXo7q/n/W/yVCA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/metadata-builders": {
+ "version": "0.14.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-builders/-/metadata-builders-0.14.3.tgz",
+ "integrity": "sha512-m7CACsiqHzgVEh5WBZGkTV8AQ3CBQKR1YpPQMnlsJfCr/IkgKU0UyWM6WxCmBiReLFVkOfXMtGlpN8+GxpHmww==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/metadata-compatibility": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-compatibility/-/metadata-compatibility-0.6.3.tgz",
+ "integrity": "sha512-/Y0uF8nDk60ijydp8Bd37YexPFdB8hBXJWwEgOJHsVlhiny8sVKXiMg+UkJ9BiEk2z+yMbZRCKmhNpTpizo7aw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/observable-client": {
+ "version": "0.18.7",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/observable-client/-/observable-client-0.18.7.tgz",
+ "integrity": "sha512-/eQi3D8jbXLg/L1hZX4eX0/+nO3kTxkOfYeWEtFhtOvFdfqiiy2DdXG3Zg5QzgHmfG+11p4vSlLiPCC2UvS5Qw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/pjs-signer": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/pjs-signer/-/pjs-signer-0.7.3.tgz",
+ "integrity": "sha512-U7BLFZfnpFMxCh/scJoLXT6oSbfZtZgMTkiu+TbuWQljAb/1ttrQOfshub5VihNyD5rHajp/2Fq0ONZoL5N5PA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signers-common": "0.2.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/raw-client": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/raw-client/-/raw-client-0.3.0.tgz",
+ "integrity": "sha512-u/wM9W7ugIXxBSOEV8+zvQI43b5vgSI0pvE0Rg8PV0G65BTLK0SMc2o2SQL0HtS5+bi5sw/gg4reBJ/0a4U0cw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/signer": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/signer/-/signer-0.3.3.tgz",
+ "integrity": "sha512-bmEV65TwgwbMfiecl7ZQ3k5lfkCOx9FPwPYkVvALcPiqb/d3zYwT9LL/E00hj+EB6IKMlMelEQVuchcW5i/92w==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/merkleize-metadata": "1.2.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signers-common": "0.2.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/signers-common": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/signers-common/-/signers-common-0.2.3.tgz",
+ "integrity": "sha512-SzGLJMxug31Y1P8+0I809ICpDrayztUXFFh2TV02GuwjEnY6mDGnmX56wowZF5yCn+WteeRdcTJTK7Whk3AGYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/sm-provider": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/sm-provider/-/sm-provider-0.3.8.tgz",
+ "integrity": "sha512-jIvzBNsBsh6LIpCrUOa7miZdQPwLPns5IUQyz/8v84R3ON7URSIVbtywGSR8O83BZGyW/DmVkqa5lClLE2fkqw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1"
+ },
+ "peerDependencies": {
+ "@polkadot-api/smoldot": ">=0.3"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/smoldot": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/smoldot/-/smoldot-0.4.6.tgz",
+ "integrity": "sha512-gOXMJ10fXOub0zPP1cGAYeyf29BA2fB+qukrjXGcGN9b0Ya+lDgV7A7Q7y9JOrlGLeKbd1YdrYLAe/F43V7b9Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "^25.9.4",
+ "smoldot": "~3.3.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/substrate-bindings": {
+ "version": "0.20.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-bindings/-/substrate-bindings-0.20.3.tgz",
+ "integrity": "sha512-9iqC71fx1ee9ld1NZV8PFime5vryi0kt1bKCSlvNgO6dqMc06sMZuZ8WPjOzWLCHiKHLuphdMs3rVBBaeCP3yg==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@scure/base": "^2.2.0",
+ "scale-ts": "^1.6.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/substrate-client": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-client/-/substrate-client-0.7.0.tgz",
+ "integrity": "sha512-TWCc4MAMa5SLVQXmomLHknbj+bztQ/Yclgwm8ENBhz8hR7c9rw9FBAkCa02jMBMCAygPhp3ayGRq+UFcF8KIxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/raw-client": "0.3.0",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/utils": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/utils/-/utils-0.4.0.tgz",
+ "integrity": "sha512-9b/hwRM0UloLWV7SfpNaSD/4k8UQAHoaACAk7Xe+1MlfAm2JtnmPiB1GfGrfTyBlsrJVUIBCZpEmbmxVMaIqBA==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/@polkadot-api/ws-provider": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ws-provider/-/ws-provider-0.9.1.tgz",
+ "integrity": "sha512-Ft2QJEjLZgTyKiCEbz3urSOxNfMdqNkg+QKqJhRbOFB7JtR1qMTvLE3TjM+5d2mNlEpOc3j2KDK3APNSj7uQ2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/commander": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz",
+ "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=22.12.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/polkadot-api": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/polkadot-api/-/polkadot-api-2.2.1.tgz",
+ "integrity": "sha512-eiZVUhI1gY4ycBtsCo/yaDXyohUeuqnyKun+bwj90ADSn+jlfjZ4sajAqIhJFwPxbCT75+Zzbln4ZjuZ5PWNWA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/cli": "0.21.9",
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/known-chains": "0.12.1",
+ "@polkadot-api/logs-provider": "0.2.0",
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/observable-client": "0.18.7",
+ "@polkadot-api/pjs-signer": "0.7.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signer": "0.3.3",
+ "@polkadot-api/sm-provider": "0.3.8",
+ "@polkadot-api/smoldot": "0.4.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@polkadot-api/ws-middleware": "0.3.6",
+ "@polkadot-api/ws-provider": "0.9.1",
+ "@rx-state/core": "^0.1.4"
+ },
+ "bin": {
+ "papi": "bin/cli.js",
+ "polkadot-api": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/smoldot": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-3.3.2.tgz",
+ "integrity": "sha512-Zl4h/0gsw8cfTZzuJ7LV7mtR6QjxltwYjMY7MsVw0oXBXrLK8zyOS6DS9Vjsy57pX1vBMg6UVhHxjbH3W905zA==",
+ "license": "GPL-3.0-or-later WITH Classpath-exception-2.0",
+ "dependencies": {
+ "ws": "^8.8.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-host/node_modules/typescript": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
+ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys": {
+ "version": "0.3.16",
+ "resolved": "https://registry.npmjs.org/@parity/product-sdk-keys/-/product-sdk-keys-0.3.16.tgz",
+ "integrity": "sha512-dnaHPQVOyxE7yEET/NsHi/0l8rI+vkH0m1OaZQ+qMkv4zwrFqXbhcXO7z6Kj+RHp5hswkmrcpEmjl4DeV5Z2xQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@parity/product-sdk-address": "0.1.1",
+ "@parity/product-sdk-crypto": "0.1.1",
+ "@parity/product-sdk-local-storage": "0.3.2",
+ "@polkadot-labs/hdkd": "^0.0.28",
+ "@polkadot-labs/hdkd-helpers": "^0.0.30",
+ "@scure/sr25519": "^2.2.0",
+ "polkadot-api": "^2.1.6",
+ "scale-ts": "^1.6.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@commander-js/extra-typings": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-15.0.0.tgz",
+ "integrity": "sha512-yeJlba62xqmkgELUsn7356MEnzLLu/fw2x4lofFqGnXh6YysRdEs2BaLeLtg1+KU0AXvMeqQvTTp+3hBEBK+EA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "commander": "~15.0.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/cli": {
+ "version": "0.21.9",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/cli/-/cli-0.21.9.tgz",
+ "integrity": "sha512-9aVdF/ocF3DBb8b/gdkcicBIaQkak2kkU4EGW+TunXLIvbIj2X9hH5geOlx8uWNwt0O4O1DIHD/nkXvycG/AcA==",
+ "license": "MIT",
+ "dependencies": {
+ "@commander-js/extra-typings": "^15.0.0",
+ "@polkadot-api/codegen": "0.22.5",
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/known-chains": "0.12.1",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/observable-client": "0.18.7",
+ "@polkadot-api/sm-provider": "0.3.8",
+ "@polkadot-api/smoldot": "0.4.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@polkadot-api/wasm-executor": "^0.2.3",
+ "@polkadot-api/ws-middleware": "0.3.6",
+ "@polkadot-api/ws-provider": "0.9.1",
+ "@types/node": "^25.9.4",
+ "commander": "^15.0.0",
+ "execa": "^9.6.1",
+ "fs.promises.exists": "^1.1.4",
+ "ora": "^9.4.1",
+ "read-pkg": "^10.1.0",
+ "rollup": "^4.62.2",
+ "rollup-plugin-esbuild": "^6.2.1",
+ "rxjs": "^7.8.2",
+ "tsc-prog": "^2.3.0",
+ "typescript": "^6.0.3",
+ "write-package": "^7.2.0"
+ },
+ "bin": {
+ "papi": "dist/main/src/main.js",
+ "polkadot-api": "dist/main/src/main.js"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/codegen": {
+ "version": "0.22.5",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/codegen/-/codegen-0.22.5.tgz",
+ "integrity": "sha512-zwZJAlviI211zhj5i6oXkrr0crrbO3GZjBd2vC9AshY1pRmyiNLV9DZsXw4E6l4JQwdAAyNWtPdnvvB9T3TpKg==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/ink-contracts": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ink-contracts/-/ink-contracts-0.6.3.tgz",
+ "integrity": "sha512-XqnM1VDzI5L62xgg+f8le2yEoz8QZbUKEfAfPnHMOgBj9tJiyF15FcOJmnLMO/vq3cGixqh18tzJekLG5YTxtA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/json-rpc-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider/-/json-rpc-provider-0.2.0.tgz",
+ "integrity": "sha512-lhkuBS/x06i3djQIN7p8jVkMnYuGsUAEMS6RhdWeEpz7X/8/APER4Wdih7MEBovCuwVSCTjOxl8f+alH7AZHZg==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/json-rpc-provider-proxy": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider-proxy/-/json-rpc-provider-proxy-0.4.1.tgz",
+ "integrity": "sha512-F1Hw01C60jn98KQ0vBbgcwAvEcMcKLsJ5kFzq600sgjc6Rnbn1VF/XjTdrjcIqvfpR9sXyGIrpImrov2Usbrsw==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/known-chains": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/known-chains/-/known-chains-0.12.1.tgz",
+ "integrity": "sha512-ZW9TYD2y5IhgNy28zi9sByMr0CaP2I9x8HcAI0pwZR2qDC0kysCG6brDlg1UoZKCjRO99SsKO/iU1o434JgMnQ==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/logs-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/logs-provider/-/logs-provider-0.2.0.tgz",
+ "integrity": "sha512-BH9YdxZu+ZBPPAUwGrvqHPn1hQStL2Im3MmTwYkwXOWW2HlGHULcF65QKvyK+T6/mj2vDvl3MgivnGkUw4pVxg==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/merkleize-metadata": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/merkleize-metadata/-/merkleize-metadata-1.2.3.tgz",
+ "integrity": "sha512-WkPbz0p2XQ9c8yXagdnwCHEB70Gnm91okcsd6IXU393//3aPgkxKgb+/Efnz7C5/KQmg02P0zXo7q/n/W/yVCA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/metadata-builders": {
+ "version": "0.14.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-builders/-/metadata-builders-0.14.3.tgz",
+ "integrity": "sha512-m7CACsiqHzgVEh5WBZGkTV8AQ3CBQKR1YpPQMnlsJfCr/IkgKU0UyWM6WxCmBiReLFVkOfXMtGlpN8+GxpHmww==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/metadata-compatibility": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-compatibility/-/metadata-compatibility-0.6.3.tgz",
+ "integrity": "sha512-/Y0uF8nDk60ijydp8Bd37YexPFdB8hBXJWwEgOJHsVlhiny8sVKXiMg+UkJ9BiEk2z+yMbZRCKmhNpTpizo7aw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/observable-client": {
+ "version": "0.18.7",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/observable-client/-/observable-client-0.18.7.tgz",
+ "integrity": "sha512-/eQi3D8jbXLg/L1hZX4eX0/+nO3kTxkOfYeWEtFhtOvFdfqiiy2DdXG3Zg5QzgHmfG+11p4vSlLiPCC2UvS5Qw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/pjs-signer": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/pjs-signer/-/pjs-signer-0.7.3.tgz",
+ "integrity": "sha512-U7BLFZfnpFMxCh/scJoLXT6oSbfZtZgMTkiu+TbuWQljAb/1ttrQOfshub5VihNyD5rHajp/2Fq0ONZoL5N5PA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signers-common": "0.2.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/raw-client": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/raw-client/-/raw-client-0.3.0.tgz",
+ "integrity": "sha512-u/wM9W7ugIXxBSOEV8+zvQI43b5vgSI0pvE0Rg8PV0G65BTLK0SMc2o2SQL0HtS5+bi5sw/gg4reBJ/0a4U0cw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/signer": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/signer/-/signer-0.3.3.tgz",
+ "integrity": "sha512-bmEV65TwgwbMfiecl7ZQ3k5lfkCOx9FPwPYkVvALcPiqb/d3zYwT9LL/E00hj+EB6IKMlMelEQVuchcW5i/92w==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/merkleize-metadata": "1.2.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signers-common": "0.2.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/signers-common": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/signers-common/-/signers-common-0.2.3.tgz",
+ "integrity": "sha512-SzGLJMxug31Y1P8+0I809ICpDrayztUXFFh2TV02GuwjEnY6mDGnmX56wowZF5yCn+WteeRdcTJTK7Whk3AGYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/sm-provider": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/sm-provider/-/sm-provider-0.3.8.tgz",
+ "integrity": "sha512-jIvzBNsBsh6LIpCrUOa7miZdQPwLPns5IUQyz/8v84R3ON7URSIVbtywGSR8O83BZGyW/DmVkqa5lClLE2fkqw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1"
+ },
+ "peerDependencies": {
+ "@polkadot-api/smoldot": ">=0.3"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/smoldot": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/smoldot/-/smoldot-0.4.6.tgz",
+ "integrity": "sha512-gOXMJ10fXOub0zPP1cGAYeyf29BA2fB+qukrjXGcGN9b0Ya+lDgV7A7Q7y9JOrlGLeKbd1YdrYLAe/F43V7b9Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "^25.9.4",
+ "smoldot": "~3.3.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/substrate-bindings": {
+ "version": "0.20.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-bindings/-/substrate-bindings-0.20.3.tgz",
+ "integrity": "sha512-9iqC71fx1ee9ld1NZV8PFime5vryi0kt1bKCSlvNgO6dqMc06sMZuZ8WPjOzWLCHiKHLuphdMs3rVBBaeCP3yg==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@scure/base": "^2.2.0",
+ "scale-ts": "^1.6.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/substrate-client": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-client/-/substrate-client-0.7.0.tgz",
+ "integrity": "sha512-TWCc4MAMa5SLVQXmomLHknbj+bztQ/Yclgwm8ENBhz8hR7c9rw9FBAkCa02jMBMCAygPhp3ayGRq+UFcF8KIxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/raw-client": "0.3.0",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/utils": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/utils/-/utils-0.4.0.tgz",
+ "integrity": "sha512-9b/hwRM0UloLWV7SfpNaSD/4k8UQAHoaACAk7Xe+1MlfAm2JtnmPiB1GfGrfTyBlsrJVUIBCZpEmbmxVMaIqBA==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-api/ws-provider": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ws-provider/-/ws-provider-0.9.1.tgz",
+ "integrity": "sha512-Ft2QJEjLZgTyKiCEbz3urSOxNfMdqNkg+QKqJhRbOFB7JtR1qMTvLE3TjM+5d2mNlEpOc3j2KDK3APNSj7uQ2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-labs/hdkd": {
+ "version": "0.0.28",
+ "resolved": "https://registry.npmjs.org/@polkadot-labs/hdkd/-/hdkd-0.0.28.tgz",
+ "integrity": "sha512-LpdqtQRpcgZQ5Mr8J0ddMA5ZufsbI4W3KuJkVdoYMnSmWs4179LigDb1rTYAOtyCg2jWUjf7rWP0mGxQQvNrHw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-labs/hdkd-helpers": "~0.0.29"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-labs/hdkd-helpers": {
+ "version": "0.0.30",
+ "resolved": "https://registry.npmjs.org/@polkadot-labs/hdkd-helpers/-/hdkd-helpers-0.0.30.tgz",
+ "integrity": "sha512-qWmmD6ayj14RenDuDFfjF3sHS7ObqPzwIIMPcSVoDeKFSeQV7RY0HwyhC5CG4i6FoguMzak2dbtjYpNN5XQiwQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/curves": "^2.2.0",
+ "@noble/hashes": "^2.2.0",
+ "@scure/base": "^2.2.0",
+ "@scure/sr25519": "^1.0.0",
+ "scale-ts": "^1.6.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-labs/hdkd-helpers/node_modules/@scure/sr25519": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@scure/sr25519/-/sr25519-1.0.0.tgz",
+ "integrity": "sha512-b+uhK5akMINXZP95F3gJGcb5CMKYxf+q55fwMl0GoBwZDbWolmGNi1FrBSwuaZX5AhqS2byHiAueZgtDNpot2A==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/curves": "~2.0.0",
+ "@noble/hashes": "~2.0.0"
+ },
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-labs/hdkd-helpers/node_modules/@scure/sr25519/node_modules/@noble/curves": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz",
+ "integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@polkadot-labs/hdkd-helpers/node_modules/@scure/sr25519/node_modules/@noble/hashes": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz",
+ "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/@scure/sr25519": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@scure/sr25519/-/sr25519-2.2.0.tgz",
+ "integrity": "sha512-UTOZb6Hzw44REQdl2SWNBhBFIoqOIhMLNIz3zYyVQLbqdshhuyuuxYoibKHlDg9oqdwdCHQe5LkTsevugPpUbw==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/curves": "~2.2.0",
+ "@noble/hashes": "~2.2.0"
+ },
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/commander": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz",
+ "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=22.12.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/polkadot-api": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/polkadot-api/-/polkadot-api-2.2.1.tgz",
+ "integrity": "sha512-eiZVUhI1gY4ycBtsCo/yaDXyohUeuqnyKun+bwj90ADSn+jlfjZ4sajAqIhJFwPxbCT75+Zzbln4ZjuZ5PWNWA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/cli": "0.21.9",
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/known-chains": "0.12.1",
+ "@polkadot-api/logs-provider": "0.2.0",
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/observable-client": "0.18.7",
+ "@polkadot-api/pjs-signer": "0.7.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signer": "0.3.3",
+ "@polkadot-api/sm-provider": "0.3.8",
+ "@polkadot-api/smoldot": "0.4.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@polkadot-api/ws-middleware": "0.3.6",
+ "@polkadot-api/ws-provider": "0.9.1",
+ "@rx-state/core": "^0.1.4"
+ },
+ "bin": {
+ "papi": "bin/cli.js",
+ "polkadot-api": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/smoldot": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-3.3.2.tgz",
+ "integrity": "sha512-Zl4h/0gsw8cfTZzuJ7LV7mtR6QjxltwYjMY7MsVw0oXBXrLK8zyOS6DS9Vjsy57pX1vBMg6UVhHxjbH3W905zA==",
+ "license": "GPL-3.0-or-later WITH Classpath-exception-2.0",
+ "dependencies": {
+ "ws": "^8.8.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-keys/node_modules/typescript": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
+ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/@parity/product-sdk-local-storage": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@parity/product-sdk-local-storage/-/product-sdk-local-storage-0.3.2.tgz",
+ "integrity": "sha512-1KJGOZrf6pj1P19j8AVbVC5NTmQe5KGE2VJ0gzJDYCHGWPYECtm7Fc0zfq6AAZbyPJkgsuZz/K4+MRijf4lf2A==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@parity/product-sdk-host": "0.14.1",
+ "@parity/product-sdk-logger": "0.1.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-logger": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@parity/product-sdk-logger/-/product-sdk-logger-0.1.1.tgz",
+ "integrity": "sha512-AiSV3TTNlMZJftLQsO78BZsEymGFuJtGMSpGrJ+vUtqaZavWaW/Hc6MICBLnEYgeCrdNpv7QBso3dRsTfnAZXQ==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@parity/product-sdk-signer": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/@parity/product-sdk-signer/-/product-sdk-signer-0.11.1.tgz",
+ "integrity": "sha512-9wGaazcmqVaSkJckcZhHFkhpPQJSNVgvFRbH2qIXkvAmxKMfW9xzdplsEoMnxRcvUree6I1YK2m3kn61/dBpjw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@parity/product-sdk-address": "0.1.1",
+ "@parity/product-sdk-errors": "0.2.0",
+ "@parity/product-sdk-host": "0.14.1",
+ "@parity/product-sdk-keys": "0.3.16",
+ "@parity/product-sdk-logger": "0.1.1",
+ "@parity/result": "0.2.0",
+ "polkadot-api": "^2.1.6"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@commander-js/extra-typings": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-15.0.0.tgz",
+ "integrity": "sha512-yeJlba62xqmkgELUsn7356MEnzLLu/fw2x4lofFqGnXh6YysRdEs2BaLeLtg1+KU0AXvMeqQvTTp+3hBEBK+EA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "commander": "~15.0.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/cli": {
+ "version": "0.21.9",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/cli/-/cli-0.21.9.tgz",
+ "integrity": "sha512-9aVdF/ocF3DBb8b/gdkcicBIaQkak2kkU4EGW+TunXLIvbIj2X9hH5geOlx8uWNwt0O4O1DIHD/nkXvycG/AcA==",
+ "license": "MIT",
+ "dependencies": {
+ "@commander-js/extra-typings": "^15.0.0",
+ "@polkadot-api/codegen": "0.22.5",
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/known-chains": "0.12.1",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/observable-client": "0.18.7",
+ "@polkadot-api/sm-provider": "0.3.8",
+ "@polkadot-api/smoldot": "0.4.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@polkadot-api/wasm-executor": "^0.2.3",
+ "@polkadot-api/ws-middleware": "0.3.6",
+ "@polkadot-api/ws-provider": "0.9.1",
+ "@types/node": "^25.9.4",
+ "commander": "^15.0.0",
+ "execa": "^9.6.1",
+ "fs.promises.exists": "^1.1.4",
+ "ora": "^9.4.1",
+ "read-pkg": "^10.1.0",
+ "rollup": "^4.62.2",
+ "rollup-plugin-esbuild": "^6.2.1",
+ "rxjs": "^7.8.2",
+ "tsc-prog": "^2.3.0",
+ "typescript": "^6.0.3",
+ "write-package": "^7.2.0"
+ },
+ "bin": {
+ "papi": "dist/main/src/main.js",
+ "polkadot-api": "dist/main/src/main.js"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/codegen": {
+ "version": "0.22.5",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/codegen/-/codegen-0.22.5.tgz",
+ "integrity": "sha512-zwZJAlviI211zhj5i6oXkrr0crrbO3GZjBd2vC9AshY1pRmyiNLV9DZsXw4E6l4JQwdAAyNWtPdnvvB9T3TpKg==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/ink-contracts": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ink-contracts/-/ink-contracts-0.6.3.tgz",
+ "integrity": "sha512-XqnM1VDzI5L62xgg+f8le2yEoz8QZbUKEfAfPnHMOgBj9tJiyF15FcOJmnLMO/vq3cGixqh18tzJekLG5YTxtA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/json-rpc-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider/-/json-rpc-provider-0.2.0.tgz",
+ "integrity": "sha512-lhkuBS/x06i3djQIN7p8jVkMnYuGsUAEMS6RhdWeEpz7X/8/APER4Wdih7MEBovCuwVSCTjOxl8f+alH7AZHZg==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/json-rpc-provider-proxy": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider-proxy/-/json-rpc-provider-proxy-0.4.1.tgz",
+ "integrity": "sha512-F1Hw01C60jn98KQ0vBbgcwAvEcMcKLsJ5kFzq600sgjc6Rnbn1VF/XjTdrjcIqvfpR9sXyGIrpImrov2Usbrsw==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/known-chains": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/known-chains/-/known-chains-0.12.1.tgz",
+ "integrity": "sha512-ZW9TYD2y5IhgNy28zi9sByMr0CaP2I9x8HcAI0pwZR2qDC0kysCG6brDlg1UoZKCjRO99SsKO/iU1o434JgMnQ==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/logs-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/logs-provider/-/logs-provider-0.2.0.tgz",
+ "integrity": "sha512-BH9YdxZu+ZBPPAUwGrvqHPn1hQStL2Im3MmTwYkwXOWW2HlGHULcF65QKvyK+T6/mj2vDvl3MgivnGkUw4pVxg==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/merkleize-metadata": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/merkleize-metadata/-/merkleize-metadata-1.2.3.tgz",
+ "integrity": "sha512-WkPbz0p2XQ9c8yXagdnwCHEB70Gnm91okcsd6IXU393//3aPgkxKgb+/Efnz7C5/KQmg02P0zXo7q/n/W/yVCA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/metadata-builders": {
+ "version": "0.14.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-builders/-/metadata-builders-0.14.3.tgz",
+ "integrity": "sha512-m7CACsiqHzgVEh5WBZGkTV8AQ3CBQKR1YpPQMnlsJfCr/IkgKU0UyWM6WxCmBiReLFVkOfXMtGlpN8+GxpHmww==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/metadata-compatibility": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-compatibility/-/metadata-compatibility-0.6.3.tgz",
+ "integrity": "sha512-/Y0uF8nDk60ijydp8Bd37YexPFdB8hBXJWwEgOJHsVlhiny8sVKXiMg+UkJ9BiEk2z+yMbZRCKmhNpTpizo7aw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/observable-client": {
+ "version": "0.18.7",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/observable-client/-/observable-client-0.18.7.tgz",
+ "integrity": "sha512-/eQi3D8jbXLg/L1hZX4eX0/+nO3kTxkOfYeWEtFhtOvFdfqiiy2DdXG3Zg5QzgHmfG+11p4vSlLiPCC2UvS5Qw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/pjs-signer": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/pjs-signer/-/pjs-signer-0.7.3.tgz",
+ "integrity": "sha512-U7BLFZfnpFMxCh/scJoLXT6oSbfZtZgMTkiu+TbuWQljAb/1ttrQOfshub5VihNyD5rHajp/2Fq0ONZoL5N5PA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signers-common": "0.2.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/raw-client": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/raw-client/-/raw-client-0.3.0.tgz",
+ "integrity": "sha512-u/wM9W7ugIXxBSOEV8+zvQI43b5vgSI0pvE0Rg8PV0G65BTLK0SMc2o2SQL0HtS5+bi5sw/gg4reBJ/0a4U0cw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/signer": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/signer/-/signer-0.3.3.tgz",
+ "integrity": "sha512-bmEV65TwgwbMfiecl7ZQ3k5lfkCOx9FPwPYkVvALcPiqb/d3zYwT9LL/E00hj+EB6IKMlMelEQVuchcW5i/92w==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/merkleize-metadata": "1.2.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signers-common": "0.2.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/signers-common": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/signers-common/-/signers-common-0.2.3.tgz",
+ "integrity": "sha512-SzGLJMxug31Y1P8+0I809ICpDrayztUXFFh2TV02GuwjEnY6mDGnmX56wowZF5yCn+WteeRdcTJTK7Whk3AGYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/sm-provider": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/sm-provider/-/sm-provider-0.3.8.tgz",
+ "integrity": "sha512-jIvzBNsBsh6LIpCrUOa7miZdQPwLPns5IUQyz/8v84R3ON7URSIVbtywGSR8O83BZGyW/DmVkqa5lClLE2fkqw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1"
+ },
+ "peerDependencies": {
+ "@polkadot-api/smoldot": ">=0.3"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/smoldot": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/smoldot/-/smoldot-0.4.6.tgz",
+ "integrity": "sha512-gOXMJ10fXOub0zPP1cGAYeyf29BA2fB+qukrjXGcGN9b0Ya+lDgV7A7Q7y9JOrlGLeKbd1YdrYLAe/F43V7b9Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "^25.9.4",
+ "smoldot": "~3.3.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/substrate-bindings": {
+ "version": "0.20.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-bindings/-/substrate-bindings-0.20.3.tgz",
+ "integrity": "sha512-9iqC71fx1ee9ld1NZV8PFime5vryi0kt1bKCSlvNgO6dqMc06sMZuZ8WPjOzWLCHiKHLuphdMs3rVBBaeCP3yg==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@scure/base": "^2.2.0",
+ "scale-ts": "^1.6.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/substrate-client": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-client/-/substrate-client-0.7.0.tgz",
+ "integrity": "sha512-TWCc4MAMa5SLVQXmomLHknbj+bztQ/Yclgwm8ENBhz8hR7c9rw9FBAkCa02jMBMCAygPhp3ayGRq+UFcF8KIxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/raw-client": "0.3.0",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/utils": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/utils/-/utils-0.4.0.tgz",
+ "integrity": "sha512-9b/hwRM0UloLWV7SfpNaSD/4k8UQAHoaACAk7Xe+1MlfAm2JtnmPiB1GfGrfTyBlsrJVUIBCZpEmbmxVMaIqBA==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/@polkadot-api/ws-provider": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ws-provider/-/ws-provider-0.9.1.tgz",
+ "integrity": "sha512-Ft2QJEjLZgTyKiCEbz3urSOxNfMdqNkg+QKqJhRbOFB7JtR1qMTvLE3TjM+5d2mNlEpOc3j2KDK3APNSj7uQ2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/commander": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz",
+ "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=22.12.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/polkadot-api": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/polkadot-api/-/polkadot-api-2.2.1.tgz",
+ "integrity": "sha512-eiZVUhI1gY4ycBtsCo/yaDXyohUeuqnyKun+bwj90ADSn+jlfjZ4sajAqIhJFwPxbCT75+Zzbln4ZjuZ5PWNWA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/cli": "0.21.9",
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/known-chains": "0.12.1",
+ "@polkadot-api/logs-provider": "0.2.0",
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/observable-client": "0.18.7",
+ "@polkadot-api/pjs-signer": "0.7.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signer": "0.3.3",
+ "@polkadot-api/sm-provider": "0.3.8",
+ "@polkadot-api/smoldot": "0.4.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@polkadot-api/ws-middleware": "0.3.6",
+ "@polkadot-api/ws-provider": "0.9.1",
+ "@rx-state/core": "^0.1.4"
+ },
+ "bin": {
+ "papi": "bin/cli.js",
+ "polkadot-api": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/smoldot": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-3.3.2.tgz",
+ "integrity": "sha512-Zl4h/0gsw8cfTZzuJ7LV7mtR6QjxltwYjMY7MsVw0oXBXrLK8zyOS6DS9Vjsy57pX1vBMg6UVhHxjbH3W905zA==",
+ "license": "GPL-3.0-or-later WITH Classpath-exception-2.0",
+ "dependencies": {
+ "ws": "^8.8.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-signer/node_modules/typescript": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
+ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@parity/product-sdk-tx/-/product-sdk-tx-0.3.2.tgz",
+ "integrity": "sha512-Y10Sw/ZluIAA6+zB9Ty+y0bSwbrEVIeBKN3umrQXHyseDfBmxWEXkwlhjCxnusJ44wtUgrIN9BsNRGI/51ffKQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@parity/product-sdk-errors": "0.2.0",
+ "@parity/product-sdk-keys": "0.3.16",
+ "@parity/product-sdk-logger": "0.1.1",
+ "@parity/result": "0.2.0",
+ "@polkadot-labs/hdkd-helpers": "^0.0.30",
+ "polkadot-api": "^2.1.6"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@commander-js/extra-typings": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-15.0.0.tgz",
+ "integrity": "sha512-yeJlba62xqmkgELUsn7356MEnzLLu/fw2x4lofFqGnXh6YysRdEs2BaLeLtg1+KU0AXvMeqQvTTp+3hBEBK+EA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "commander": "~15.0.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/cli": {
+ "version": "0.21.9",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/cli/-/cli-0.21.9.tgz",
+ "integrity": "sha512-9aVdF/ocF3DBb8b/gdkcicBIaQkak2kkU4EGW+TunXLIvbIj2X9hH5geOlx8uWNwt0O4O1DIHD/nkXvycG/AcA==",
+ "license": "MIT",
+ "dependencies": {
+ "@commander-js/extra-typings": "^15.0.0",
+ "@polkadot-api/codegen": "0.22.5",
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/known-chains": "0.12.1",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/observable-client": "0.18.7",
+ "@polkadot-api/sm-provider": "0.3.8",
+ "@polkadot-api/smoldot": "0.4.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@polkadot-api/wasm-executor": "^0.2.3",
+ "@polkadot-api/ws-middleware": "0.3.6",
+ "@polkadot-api/ws-provider": "0.9.1",
+ "@types/node": "^25.9.4",
+ "commander": "^15.0.0",
+ "execa": "^9.6.1",
+ "fs.promises.exists": "^1.1.4",
+ "ora": "^9.4.1",
+ "read-pkg": "^10.1.0",
+ "rollup": "^4.62.2",
+ "rollup-plugin-esbuild": "^6.2.1",
+ "rxjs": "^7.8.2",
+ "tsc-prog": "^2.3.0",
+ "typescript": "^6.0.3",
+ "write-package": "^7.2.0"
+ },
+ "bin": {
+ "papi": "dist/main/src/main.js",
+ "polkadot-api": "dist/main/src/main.js"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/codegen": {
+ "version": "0.22.5",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/codegen/-/codegen-0.22.5.tgz",
+ "integrity": "sha512-zwZJAlviI211zhj5i6oXkrr0crrbO3GZjBd2vC9AshY1pRmyiNLV9DZsXw4E6l4JQwdAAyNWtPdnvvB9T3TpKg==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/ink-contracts": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ink-contracts/-/ink-contracts-0.6.3.tgz",
+ "integrity": "sha512-XqnM1VDzI5L62xgg+f8le2yEoz8QZbUKEfAfPnHMOgBj9tJiyF15FcOJmnLMO/vq3cGixqh18tzJekLG5YTxtA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/json-rpc-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider/-/json-rpc-provider-0.2.0.tgz",
+ "integrity": "sha512-lhkuBS/x06i3djQIN7p8jVkMnYuGsUAEMS6RhdWeEpz7X/8/APER4Wdih7MEBovCuwVSCTjOxl8f+alH7AZHZg==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/json-rpc-provider-proxy": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider-proxy/-/json-rpc-provider-proxy-0.4.1.tgz",
+ "integrity": "sha512-F1Hw01C60jn98KQ0vBbgcwAvEcMcKLsJ5kFzq600sgjc6Rnbn1VF/XjTdrjcIqvfpR9sXyGIrpImrov2Usbrsw==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/known-chains": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/known-chains/-/known-chains-0.12.1.tgz",
+ "integrity": "sha512-ZW9TYD2y5IhgNy28zi9sByMr0CaP2I9x8HcAI0pwZR2qDC0kysCG6brDlg1UoZKCjRO99SsKO/iU1o434JgMnQ==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/logs-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/logs-provider/-/logs-provider-0.2.0.tgz",
+ "integrity": "sha512-BH9YdxZu+ZBPPAUwGrvqHPn1hQStL2Im3MmTwYkwXOWW2HlGHULcF65QKvyK+T6/mj2vDvl3MgivnGkUw4pVxg==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/merkleize-metadata": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/merkleize-metadata/-/merkleize-metadata-1.2.3.tgz",
+ "integrity": "sha512-WkPbz0p2XQ9c8yXagdnwCHEB70Gnm91okcsd6IXU393//3aPgkxKgb+/Efnz7C5/KQmg02P0zXo7q/n/W/yVCA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/metadata-builders": {
+ "version": "0.14.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-builders/-/metadata-builders-0.14.3.tgz",
+ "integrity": "sha512-m7CACsiqHzgVEh5WBZGkTV8AQ3CBQKR1YpPQMnlsJfCr/IkgKU0UyWM6WxCmBiReLFVkOfXMtGlpN8+GxpHmww==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/metadata-compatibility": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-compatibility/-/metadata-compatibility-0.6.3.tgz",
+ "integrity": "sha512-/Y0uF8nDk60ijydp8Bd37YexPFdB8hBXJWwEgOJHsVlhiny8sVKXiMg+UkJ9BiEk2z+yMbZRCKmhNpTpizo7aw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/observable-client": {
+ "version": "0.18.7",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/observable-client/-/observable-client-0.18.7.tgz",
+ "integrity": "sha512-/eQi3D8jbXLg/L1hZX4eX0/+nO3kTxkOfYeWEtFhtOvFdfqiiy2DdXG3Zg5QzgHmfG+11p4vSlLiPCC2UvS5Qw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/pjs-signer": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/pjs-signer/-/pjs-signer-0.7.3.tgz",
+ "integrity": "sha512-U7BLFZfnpFMxCh/scJoLXT6oSbfZtZgMTkiu+TbuWQljAb/1ttrQOfshub5VihNyD5rHajp/2Fq0ONZoL5N5PA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signers-common": "0.2.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/raw-client": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/raw-client/-/raw-client-0.3.0.tgz",
+ "integrity": "sha512-u/wM9W7ugIXxBSOEV8+zvQI43b5vgSI0pvE0Rg8PV0G65BTLK0SMc2o2SQL0HtS5+bi5sw/gg4reBJ/0a4U0cw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/signer": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/signer/-/signer-0.3.3.tgz",
+ "integrity": "sha512-bmEV65TwgwbMfiecl7ZQ3k5lfkCOx9FPwPYkVvALcPiqb/d3zYwT9LL/E00hj+EB6IKMlMelEQVuchcW5i/92w==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/merkleize-metadata": "1.2.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signers-common": "0.2.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/signers-common": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/signers-common/-/signers-common-0.2.3.tgz",
+ "integrity": "sha512-SzGLJMxug31Y1P8+0I809ICpDrayztUXFFh2TV02GuwjEnY6mDGnmX56wowZF5yCn+WteeRdcTJTK7Whk3AGYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/sm-provider": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/sm-provider/-/sm-provider-0.3.8.tgz",
+ "integrity": "sha512-jIvzBNsBsh6LIpCrUOa7miZdQPwLPns5IUQyz/8v84R3ON7URSIVbtywGSR8O83BZGyW/DmVkqa5lClLE2fkqw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1"
+ },
+ "peerDependencies": {
+ "@polkadot-api/smoldot": ">=0.3"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/smoldot": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/smoldot/-/smoldot-0.4.6.tgz",
+ "integrity": "sha512-gOXMJ10fXOub0zPP1cGAYeyf29BA2fB+qukrjXGcGN9b0Ya+lDgV7A7Q7y9JOrlGLeKbd1YdrYLAe/F43V7b9Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "^25.9.4",
+ "smoldot": "~3.3.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/substrate-bindings": {
+ "version": "0.20.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-bindings/-/substrate-bindings-0.20.3.tgz",
+ "integrity": "sha512-9iqC71fx1ee9ld1NZV8PFime5vryi0kt1bKCSlvNgO6dqMc06sMZuZ8WPjOzWLCHiKHLuphdMs3rVBBaeCP3yg==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@scure/base": "^2.2.0",
+ "scale-ts": "^1.6.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/substrate-client": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-client/-/substrate-client-0.7.0.tgz",
+ "integrity": "sha512-TWCc4MAMa5SLVQXmomLHknbj+bztQ/Yclgwm8ENBhz8hR7c9rw9FBAkCa02jMBMCAygPhp3ayGRq+UFcF8KIxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/raw-client": "0.3.0",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/utils": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/utils/-/utils-0.4.0.tgz",
+ "integrity": "sha512-9b/hwRM0UloLWV7SfpNaSD/4k8UQAHoaACAk7Xe+1MlfAm2JtnmPiB1GfGrfTyBlsrJVUIBCZpEmbmxVMaIqBA==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-api/ws-provider": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ws-provider/-/ws-provider-0.9.1.tgz",
+ "integrity": "sha512-Ft2QJEjLZgTyKiCEbz3urSOxNfMdqNkg+QKqJhRbOFB7JtR1qMTvLE3TjM+5d2mNlEpOc3j2KDK3APNSj7uQ2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/@polkadot-labs/hdkd-helpers": {
+ "version": "0.0.30",
+ "resolved": "https://registry.npmjs.org/@polkadot-labs/hdkd-helpers/-/hdkd-helpers-0.0.30.tgz",
+ "integrity": "sha512-qWmmD6ayj14RenDuDFfjF3sHS7ObqPzwIIMPcSVoDeKFSeQV7RY0HwyhC5CG4i6FoguMzak2dbtjYpNN5XQiwQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/curves": "^2.2.0",
+ "@noble/hashes": "^2.2.0",
+ "@scure/base": "^2.2.0",
+ "@scure/sr25519": "^1.0.0",
+ "scale-ts": "^1.6.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/commander": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz",
+ "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=22.12.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/polkadot-api": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/polkadot-api/-/polkadot-api-2.2.1.tgz",
+ "integrity": "sha512-eiZVUhI1gY4ycBtsCo/yaDXyohUeuqnyKun+bwj90ADSn+jlfjZ4sajAqIhJFwPxbCT75+Zzbln4ZjuZ5PWNWA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/cli": "0.21.9",
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/known-chains": "0.12.1",
+ "@polkadot-api/logs-provider": "0.2.0",
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/observable-client": "0.18.7",
+ "@polkadot-api/pjs-signer": "0.7.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signer": "0.3.3",
+ "@polkadot-api/sm-provider": "0.3.8",
+ "@polkadot-api/smoldot": "0.4.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@polkadot-api/ws-middleware": "0.3.6",
+ "@polkadot-api/ws-provider": "0.9.1",
+ "@rx-state/core": "^0.1.4"
+ },
+ "bin": {
+ "papi": "bin/cli.js",
+ "polkadot-api": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/smoldot": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-3.3.2.tgz",
+ "integrity": "sha512-Zl4h/0gsw8cfTZzuJ7LV7mtR6QjxltwYjMY7MsVw0oXBXrLK8zyOS6DS9Vjsy57pX1vBMg6UVhHxjbH3W905zA==",
+ "license": "GPL-3.0-or-later WITH Classpath-exception-2.0",
+ "dependencies": {
+ "ws": "^8.8.1"
+ }
+ },
+ "node_modules/@parity/product-sdk-tx/node_modules/typescript": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
+ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/@parity/product-sdk/node_modules/@commander-js/extra-typings": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-15.0.0.tgz",
+ "integrity": "sha512-yeJlba62xqmkgELUsn7356MEnzLLu/fw2x4lofFqGnXh6YysRdEs2BaLeLtg1+KU0AXvMeqQvTTp+3hBEBK+EA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "commander": "~15.0.0"
+ }
+ },
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/cli": {
+ "version": "0.21.9",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/cli/-/cli-0.21.9.tgz",
+ "integrity": "sha512-9aVdF/ocF3DBb8b/gdkcicBIaQkak2kkU4EGW+TunXLIvbIj2X9hH5geOlx8uWNwt0O4O1DIHD/nkXvycG/AcA==",
+ "license": "MIT",
+ "dependencies": {
+ "@commander-js/extra-typings": "^15.0.0",
+ "@polkadot-api/codegen": "0.22.5",
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/known-chains": "0.12.1",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/observable-client": "0.18.7",
+ "@polkadot-api/sm-provider": "0.3.8",
+ "@polkadot-api/smoldot": "0.4.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@polkadot-api/wasm-executor": "^0.2.3",
+ "@polkadot-api/ws-middleware": "0.3.6",
+ "@polkadot-api/ws-provider": "0.9.1",
+ "@types/node": "^25.9.4",
+ "commander": "^15.0.0",
+ "execa": "^9.6.1",
+ "fs.promises.exists": "^1.1.4",
+ "ora": "^9.4.1",
+ "read-pkg": "^10.1.0",
+ "rollup": "^4.62.2",
+ "rollup-plugin-esbuild": "^6.2.1",
+ "rxjs": "^7.8.2",
+ "tsc-prog": "^2.3.0",
+ "typescript": "^6.0.3",
+ "write-package": "^7.2.0"
+ },
+ "bin": {
+ "papi": "dist/main/src/main.js",
+ "polkadot-api": "dist/main/src/main.js"
+ }
+ },
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/codegen": {
+ "version": "0.22.5",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/codegen/-/codegen-0.22.5.tgz",
+ "integrity": "sha512-zwZJAlviI211zhj5i6oXkrr0crrbO3GZjBd2vC9AshY1pRmyiNLV9DZsXw4E6l4JQwdAAyNWtPdnvvB9T3TpKg==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/ink-contracts": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ink-contracts/-/ink-contracts-0.6.3.tgz",
+ "integrity": "sha512-XqnM1VDzI5L62xgg+f8le2yEoz8QZbUKEfAfPnHMOgBj9tJiyF15FcOJmnLMO/vq3cGixqh18tzJekLG5YTxtA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/json-rpc-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider/-/json-rpc-provider-0.2.0.tgz",
+ "integrity": "sha512-lhkuBS/x06i3djQIN7p8jVkMnYuGsUAEMS6RhdWeEpz7X/8/APER4Wdih7MEBovCuwVSCTjOxl8f+alH7AZHZg==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/json-rpc-provider-proxy": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider-proxy/-/json-rpc-provider-proxy-0.4.1.tgz",
+ "integrity": "sha512-F1Hw01C60jn98KQ0vBbgcwAvEcMcKLsJ5kFzq600sgjc6Rnbn1VF/XjTdrjcIqvfpR9sXyGIrpImrov2Usbrsw==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/known-chains": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/known-chains/-/known-chains-0.12.1.tgz",
+ "integrity": "sha512-ZW9TYD2y5IhgNy28zi9sByMr0CaP2I9x8HcAI0pwZR2qDC0kysCG6brDlg1UoZKCjRO99SsKO/iU1o434JgMnQ==",
+ "license": "MIT"
+ },
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/logs-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/logs-provider/-/logs-provider-0.2.0.tgz",
+ "integrity": "sha512-BH9YdxZu+ZBPPAUwGrvqHPn1hQStL2Im3MmTwYkwXOWW2HlGHULcF65QKvyK+T6/mj2vDvl3MgivnGkUw4pVxg==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/merkleize-metadata": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/merkleize-metadata/-/merkleize-metadata-1.2.3.tgz",
+ "integrity": "sha512-WkPbz0p2XQ9c8yXagdnwCHEB70Gnm91okcsd6IXU393//3aPgkxKgb+/Efnz7C5/KQmg02P0zXo7q/n/W/yVCA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/metadata-builders": {
+ "version": "0.14.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-builders/-/metadata-builders-0.14.3.tgz",
+ "integrity": "sha512-m7CACsiqHzgVEh5WBZGkTV8AQ3CBQKR1YpPQMnlsJfCr/IkgKU0UyWM6WxCmBiReLFVkOfXMtGlpN8+GxpHmww==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/metadata-compatibility": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-compatibility/-/metadata-compatibility-0.6.3.tgz",
+ "integrity": "sha512-/Y0uF8nDk60ijydp8Bd37YexPFdB8hBXJWwEgOJHsVlhiny8sVKXiMg+UkJ9BiEk2z+yMbZRCKmhNpTpizo7aw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3"
+ }
+ },
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/observable-client": {
+ "version": "0.18.7",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/observable-client/-/observable-client-0.18.7.tgz",
+ "integrity": "sha512-/eQi3D8jbXLg/L1hZX4eX0/+nO3kTxkOfYeWEtFhtOvFdfqiiy2DdXG3Zg5QzgHmfG+11p4vSlLiPCC2UvS5Qw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/pjs-signer": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/pjs-signer/-/pjs-signer-0.7.3.tgz",
+ "integrity": "sha512-U7BLFZfnpFMxCh/scJoLXT6oSbfZtZgMTkiu+TbuWQljAb/1ttrQOfshub5VihNyD5rHajp/2Fq0ONZoL5N5PA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signers-common": "0.2.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/raw-client": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/raw-client/-/raw-client-0.3.0.tgz",
+ "integrity": "sha512-u/wM9W7ugIXxBSOEV8+zvQI43b5vgSI0pvE0Rg8PV0G65BTLK0SMc2o2SQL0HtS5+bi5sw/gg4reBJ/0a4U0cw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/signer": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/signer/-/signer-0.3.3.tgz",
+ "integrity": "sha512-bmEV65TwgwbMfiecl7ZQ3k5lfkCOx9FPwPYkVvALcPiqb/d3zYwT9LL/E00hj+EB6IKMlMelEQVuchcW5i/92w==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/merkleize-metadata": "1.2.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signers-common": "0.2.3",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/signers-common": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/signers-common/-/signers-common-0.2.3.tgz",
+ "integrity": "sha512-SzGLJMxug31Y1P8+0I809ICpDrayztUXFFh2TV02GuwjEnY6mDGnmX56wowZF5yCn+WteeRdcTJTK7Whk3AGYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ }
+ },
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/sm-provider": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/sm-provider/-/sm-provider-0.3.8.tgz",
+ "integrity": "sha512-jIvzBNsBsh6LIpCrUOa7miZdQPwLPns5IUQyz/8v84R3ON7URSIVbtywGSR8O83BZGyW/DmVkqa5lClLE2fkqw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1"
+ },
+ "peerDependencies": {
+ "@polkadot-api/smoldot": ">=0.3"
+ }
+ },
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/smoldot": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/smoldot/-/smoldot-0.4.6.tgz",
+ "integrity": "sha512-gOXMJ10fXOub0zPP1cGAYeyf29BA2fB+qukrjXGcGN9b0Ya+lDgV7A7Q7y9JOrlGLeKbd1YdrYLAe/F43V7b9Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "^25.9.4",
+ "smoldot": "~3.3.1"
}
},
- "node_modules/@jridgewell/remapping": {
- "version": "2.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
- "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/substrate-bindings": {
+ "version": "0.20.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-bindings/-/substrate-bindings-0.20.3.tgz",
+ "integrity": "sha512-9iqC71fx1ee9ld1NZV8PFime5vryi0kt1bKCSlvNgO6dqMc06sMZuZ8WPjOzWLCHiKHLuphdMs3rVBBaeCP3yg==",
"license": "MIT",
"dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.24"
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@scure/base": "^2.2.0",
+ "scale-ts": "^1.6.1"
}
},
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
- "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/substrate-client": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-client/-/substrate-client-0.7.0.tgz",
+ "integrity": "sha512-TWCc4MAMa5SLVQXmomLHknbj+bztQ/Yclgwm8ENBhz8hR7c9rw9FBAkCa02jMBMCAygPhp3ayGRq+UFcF8KIxQ==",
"license": "MIT",
- "engines": {
- "node": ">=6.0.0"
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/raw-client": "0.3.0",
+ "@polkadot-api/utils": "0.4.0"
}
},
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.5.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
- "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/utils": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/utils/-/utils-0.4.0.tgz",
+ "integrity": "sha512-9b/hwRM0UloLWV7SfpNaSD/4k8UQAHoaACAk7Xe+1MlfAm2JtnmPiB1GfGrfTyBlsrJVUIBCZpEmbmxVMaIqBA==",
"license": "MIT"
},
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.31",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
- "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "node_modules/@parity/product-sdk/node_modules/@polkadot-api/ws-provider": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ws-provider/-/ws-provider-0.9.1.tgz",
+ "integrity": "sha512-Ft2QJEjLZgTyKiCEbz3urSOxNfMdqNkg+QKqJhRbOFB7JtR1qMTvLE3TjM+5d2mNlEpOc3j2KDK3APNSj7uQ2Q==",
"license": "MIT",
"dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
}
},
- "node_modules/@noble/ciphers": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz",
- "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==",
+ "node_modules/@parity/product-sdk/node_modules/commander": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz",
+ "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==",
"license": "MIT",
"engines": {
- "node": "^14.21.3 || >=16"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
+ "node": ">=22.12.0"
}
},
- "node_modules/@noble/curves": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.2.0.tgz",
- "integrity": "sha512-T/BoHgFXirb0ENSPBquzX0rcjXeM6Lo892a2jlYJkqk83LqZx0l1Of7DzlKJ6jkpvMrkHSnAcgb5JegL8SeIkQ==",
+ "node_modules/@parity/product-sdk/node_modules/polkadot-api": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/polkadot-api/-/polkadot-api-2.2.1.tgz",
+ "integrity": "sha512-eiZVUhI1gY4ycBtsCo/yaDXyohUeuqnyKun+bwj90ADSn+jlfjZ4sajAqIhJFwPxbCT75+Zzbln4ZjuZ5PWNWA==",
"license": "MIT",
"dependencies": {
- "@noble/hashes": "2.2.0"
+ "@polkadot-api/cli": "0.21.9",
+ "@polkadot-api/ink-contracts": "0.6.3",
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/known-chains": "0.12.1",
+ "@polkadot-api/logs-provider": "0.2.0",
+ "@polkadot-api/metadata-builders": "0.14.3",
+ "@polkadot-api/metadata-compatibility": "0.6.3",
+ "@polkadot-api/observable-client": "0.18.7",
+ "@polkadot-api/pjs-signer": "0.7.3",
+ "@polkadot-api/polkadot-signer": "0.1.6",
+ "@polkadot-api/signer": "0.3.3",
+ "@polkadot-api/sm-provider": "0.3.8",
+ "@polkadot-api/smoldot": "0.4.6",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/substrate-client": "0.7.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@polkadot-api/ws-middleware": "0.3.6",
+ "@polkadot-api/ws-provider": "0.9.1",
+ "@rx-state/core": "^0.1.4"
},
- "engines": {
- "node": ">= 20.19.0"
+ "bin": {
+ "papi": "bin/cli.js",
+ "polkadot-api": "bin/cli.js"
},
- "funding": {
- "url": "https://paulmillr.com/funding/"
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
}
},
- "node_modules/@noble/hashes": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.2.0.tgz",
- "integrity": "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==",
- "license": "MIT",
- "engines": {
- "node": ">= 20.19.0"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
+ "node_modules/@parity/product-sdk/node_modules/smoldot": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-3.3.2.tgz",
+ "integrity": "sha512-Zl4h/0gsw8cfTZzuJ7LV7mtR6QjxltwYjMY7MsVw0oXBXrLK8zyOS6DS9Vjsy57pX1vBMg6UVhHxjbH3W905zA==",
+ "license": "GPL-3.0-or-later WITH Classpath-exception-2.0",
+ "dependencies": {
+ "ws": "^8.8.1"
}
},
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
+ "node_modules/@parity/product-sdk/node_modules/typescript": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
+ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
},
"engines": {
- "node": ">= 8"
+ "node": ">=14.17"
}
},
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
+ "node_modules/@parity/result": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@parity/result/-/result-0.2.0.tgz",
+ "integrity": "sha512-QCrhYPeVVaPIjnlsfBIk5GHPRqfuCjy6MjqKkoCP4kwS1LIo5YtJCSFeB5mGtvMG7hiaRNl4lHQcd5YqDfJ1tQ==",
+ "license": "Apache-2.0"
},
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
+ "node_modules/@parity/truapi": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@parity/truapi/-/truapi-0.5.1.tgz",
+ "integrity": "sha512-5AV6YoqnUKXj2wJ/qt/J2i3jpFawhEVkY165V5fSDccGkgK2oVHxlSfLwscXpZp4DxwFTL1FmvkhwhuqPDIdtA==",
"license": "MIT",
"dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
+ "@noble/hashes": "^2.2.0",
+ "neverthrow": "^8.2.0",
+ "scale-ts": "^1.6.1"
}
},
"node_modules/@playwright/test": {
@@ -1416,6 +4814,61 @@
"integrity": "sha512-B2h1o+Qlo9idpASaHvMSoViB2I5ko5OAfwfhYF8LQDkTADK0B+SeStzNj1Qn+FG34wqTuv7HzBCdjaUgzYINJQ==",
"license": "MIT"
},
+ "node_modules/@polkadot-api/ws-middleware": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/ws-middleware/-/ws-middleware-0.3.6.tgz",
+ "integrity": "sha512-IMoJB572DdSYPshCQa2JmmehUEzX2Uwg5vKQafubbTMEFacXbifc6LTTVvi9Ue67rBuDy2VOWXBAm3BBpfKpDA==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0",
+ "@polkadot-api/json-rpc-provider-proxy": "0.4.1",
+ "@polkadot-api/raw-client": "0.3.0",
+ "@polkadot-api/substrate-bindings": "0.20.3",
+ "@polkadot-api/utils": "0.4.0"
+ },
+ "peerDependencies": {
+ "rxjs": ">=7.8.0"
+ }
+ },
+ "node_modules/@polkadot-api/ws-middleware/node_modules/@polkadot-api/json-rpc-provider": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider/-/json-rpc-provider-0.2.0.tgz",
+ "integrity": "sha512-lhkuBS/x06i3djQIN7p8jVkMnYuGsUAEMS6RhdWeEpz7X/8/APER4Wdih7MEBovCuwVSCTjOxl8f+alH7AZHZg==",
+ "license": "MIT"
+ },
+ "node_modules/@polkadot-api/ws-middleware/node_modules/@polkadot-api/json-rpc-provider-proxy": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider-proxy/-/json-rpc-provider-proxy-0.4.1.tgz",
+ "integrity": "sha512-F1Hw01C60jn98KQ0vBbgcwAvEcMcKLsJ5kFzq600sgjc6Rnbn1VF/XjTdrjcIqvfpR9sXyGIrpImrov2Usbrsw==",
+ "license": "MIT"
+ },
+ "node_modules/@polkadot-api/ws-middleware/node_modules/@polkadot-api/raw-client": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/raw-client/-/raw-client-0.3.0.tgz",
+ "integrity": "sha512-u/wM9W7ugIXxBSOEV8+zvQI43b5vgSI0pvE0Rg8PV0G65BTLK0SMc2o2SQL0HtS5+bi5sw/gg4reBJ/0a4U0cw==",
+ "license": "MIT",
+ "dependencies": {
+ "@polkadot-api/json-rpc-provider": "0.2.0"
+ }
+ },
+ "node_modules/@polkadot-api/ws-middleware/node_modules/@polkadot-api/substrate-bindings": {
+ "version": "0.20.3",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-bindings/-/substrate-bindings-0.20.3.tgz",
+ "integrity": "sha512-9iqC71fx1ee9ld1NZV8PFime5vryi0kt1bKCSlvNgO6dqMc06sMZuZ8WPjOzWLCHiKHLuphdMs3rVBBaeCP3yg==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "^2.2.0",
+ "@polkadot-api/utils": "0.4.0",
+ "@scure/base": "^2.2.0",
+ "scale-ts": "^1.6.1"
+ }
+ },
+ "node_modules/@polkadot-api/ws-middleware/node_modules/@polkadot-api/utils": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@polkadot-api/utils/-/utils-0.4.0.tgz",
+ "integrity": "sha512-9b/hwRM0UloLWV7SfpNaSD/4k8UQAHoaACAk7Xe+1MlfAm2JtnmPiB1GfGrfTyBlsrJVUIBCZpEmbmxVMaIqBA==",
+ "license": "MIT"
+ },
"node_modules/@polkadot-api/ws-provider": {
"version": "0.7.5",
"resolved": "https://registry.npmjs.org/@polkadot-api/ws-provider/-/ws-provider-0.7.5.tgz",
@@ -1583,9 +5036,9 @@
"license": "MIT"
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.2.tgz",
- "integrity": "sha512-dnlp69efPPg6Uaw2dVqzWRfAWRnYVb1XJ8CyyhIbZeaq4CA5/mLeZ1IEt9QqQxmbdvagjLIm2ZL8BxXv5lH4Yw==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.3.tgz",
+ "integrity": "sha512-c0wdcekXtQvvn5Tsrk/+op/gUArrbWaFduBnTLP2l1cKLSQs4diMWjJw3m6A0DdzT8dAAX95KpkJ3qynCePbmw==",
"cpu": [
"arm"
],
@@ -1596,9 +5049,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.2.tgz",
- "integrity": "sha512-OqZTwDRDchGRHHm/hwLOL7uVPB9aUvI0am/eQuWMNyFHf5PSEQmyEeYYheA0EPPKUO/l0uigCp+iaTjoLjVoHg==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.3.tgz",
+ "integrity": "sha512-3YjElDdWN+qXAFbJ/CzPV+0wspLqh54k/I6GfdYtEJRqg7buSgc1yPM3B+93j1M4neobtkATHZTmxK2AMVGfnA==",
"cpu": [
"arm64"
],
@@ -1609,9 +5062,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.2.tgz",
- "integrity": "sha512-UwRE7CGpvSVEQS8gUMBe1uADWjNnVgP3Iusyda1nSRwNDCsRjnGc7w6El6WLQsXmZTbLZx9cecegumcitNfpmA==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.3.tgz",
+ "integrity": "sha512-Pch2pFNOxxz1hTjypIdPyRTR6riiwRl84+VcN9djS680fw+Co1nAJINrdpqp7KV0NvyuU8ilZXZCjd7ykJl1GQ==",
"cpu": [
"arm64"
],
@@ -1622,9 +5075,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.2.tgz",
- "integrity": "sha512-gjEtURKLCC5VXm1I+2i1u9OhxFsKAQJKTVB8WvDAHF+oZlq0GTVFOlTlO1q3AlCTE/DF32c16ESvfgqR7343/g==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.3.tgz",
+ "integrity": "sha512-LEuncFUHFiF8t4yZVZvvZA1wk0pjAscRnsrn1EfTEmN4HXotBi2YtcnLRyaK6UbuczW7xZS5ES+81Rdz8Z0T6g==",
"cpu": [
"x64"
],
@@ -1635,9 +5088,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.2.tgz",
- "integrity": "sha512-Bcl6CYDeAgE70cqZaMojOi/eK63h5Me97ZqAQoh77VPjMysA/4ORQBRGo3rRy45x4MzVlU9uZxs8Uwy7ZaKnBw==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.3.tgz",
+ "integrity": "sha512-zvBUvsQUpOWALdDsk6qbS8bXf2VxmPisuudNDrY7x0p0jBdsoZl8HsHczIOgkQiZldmcacMKtBzpoGVNeIe2bQ==",
"cpu": [
"arm64"
],
@@ -1648,9 +5101,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.2.tgz",
- "integrity": "sha512-LU+TPda3mAE2QB0/Hp5VyeKJivpC6+tlOXd1VMoXV/YFMvk/MNk5iXeBfB4MQGRWyOYVJ01625vjkr0Az98OJQ==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.3.tgz",
+ "integrity": "sha512-C2KmNrcSem/AMg984H/dev+si0lieQGdXdR/lYGJnuumXnFb9Y7QdiI62obFdLlxRYLBv4P0eUVIDbD4c1vVvw==",
"cpu": [
"x64"
],
@@ -1661,9 +5114,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.2.tgz",
- "integrity": "sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qOwTuTc7Ek83mOFaKnodPjg==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.3.tgz",
+ "integrity": "sha512-ggXnsTAEzNQx74XpunRsiZ9aBZDsI7XIa0hm2nzR9f4WzH5/f/d73ZSDaC5ejJ8YLY4NW+V3wr0tjOaeCq8hqA==",
"cpu": [
"arm"
],
@@ -1674,9 +5127,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.2.tgz",
- "integrity": "sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcAO2BLBsD7mZkXGFqEdMRRwfw==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.3.tgz",
+ "integrity": "sha512-2vng+FlzNUhKZxtej3IUqJgbZoQk2M/dwQM20+ULV0R/E/8tr9/P6uEf2iiGIk4HL0zMKh5Jry7mUHdUOvyGgA==",
"cpu": [
"arm"
],
@@ -1687,9 +5140,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.2.tgz",
- "integrity": "sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZkxtGqXcXwO8Rg==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.3.tgz",
+ "integrity": "sha512-LLLFZKt4/Nraf9rxDkhiU8QVgLF4WmCkfr0L4fj0fPfIZFBib0DeiFk1hhaYKd03LFAFJcxHslhDFlNJLylf5Q==",
"cpu": [
"arm64"
],
@@ -1700,9 +5153,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.2.tgz",
- "integrity": "sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9KiiQT/TXT1yAWxTA==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.3.tgz",
+ "integrity": "sha512-WJkdQCvS9sWNOUBJZfQRKpZGFBztRzcowI+nndmflKgU4XY+3a420FgTOSKTsVqJbnzSxeT4vaJalpOaPo2YCQ==",
"cpu": [
"arm64"
],
@@ -1713,9 +5166,9 @@
]
},
"node_modules/@rollup/rollup-linux-loong64-gnu": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.2.tgz",
- "integrity": "sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3/n+2HYIQVbF70P9/A==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.3.tgz",
+ "integrity": "sha512-PwHXCCS2n64/1Ot6rP1YEYA02MGYBcQlr8CSZZyrUG2O7NH6NklYmvr9v3Jy+5e/eDeNchc/ukmKJi9LuflMIQ==",
"cpu": [
"loong64"
],
@@ -1726,9 +5179,9 @@
]
},
"node_modules/@rollup/rollup-linux-loong64-musl": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.2.tgz",
- "integrity": "sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZBhzi3HmH+J5pZNXnd+Q==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.3.tgz",
+ "integrity": "sha512-vUjxINQu3RC8NZS3ykk1gN65gIz8pAopOq2HXuZhiIxHdx7TFvDG+jgrdSgInu1Eza4/Rfi2VzZgyIgEH4WOaw==",
"cpu": [
"loong64"
],
@@ -1739,9 +5192,9 @@
]
},
"node_modules/@rollup/rollup-linux-ppc64-gnu": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.2.tgz",
- "integrity": "sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/9TZZihZ609wKw==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.3.tgz",
+ "integrity": "sha512-wzko4aJ13+0G3kGnviCg5gnXFKd40izKsrf2uOw12US4XqprkDrmwOpeW14aSNa37V8bfPcz5Fkob6LZ3BAPmA==",
"cpu": [
"ppc64"
],
@@ -1752,9 +5205,9 @@
]
},
"node_modules/@rollup/rollup-linux-ppc64-musl": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.2.tgz",
- "integrity": "sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6Dclh2oTdnRMpTzFQ==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.3.tgz",
+ "integrity": "sha512-8120ue0JUMSwy11stlwnfdX3pPd+WZYGCDBwEHWtIHi6pOpZmsEF5QKB7a/UN+XFdqvobxz98kv8RTqikyCEBw==",
"cpu": [
"ppc64"
],
@@ -1765,9 +5218,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.2.tgz",
- "integrity": "sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5W2PkhC82aVwmUcJ7A==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.3.tgz",
+ "integrity": "sha512-XLFHnR3tXMjbOCh2vtVJHmxt+995uJsTERQyseFDRA0xxMxyTZPLa3OIUlyFaO4mF/Lu0FjmWHCuPXJT1n/IOg==",
"cpu": [
"riscv64"
],
@@ -1778,9 +5231,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-musl": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.2.tgz",
- "integrity": "sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdHHzgrYyge5akFUW0D3mQ==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.3.tgz",
+ "integrity": "sha512-se6yXvNGMIl0f+RQzyh7XAmia8/9kplQx424wnG2w0C1oi6XgO6Y8otKhdXFHbHs88Ihavzmvh1NWjuovE76BQ==",
"cpu": [
"riscv64"
],
@@ -1791,9 +5244,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.2.tgz",
- "integrity": "sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevXz5u+gf0yA0YoA==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.3.tgz",
+ "integrity": "sha512-gNoxRefktVIiGflpONuxWWXZAzIQG++z9qHO3xKwk4WdDMuQja3JHGfE1u0i3PfPDyvhypdk+WrgIJqLhGG7sg==",
"cpu": [
"s390x"
],
@@ -1804,9 +5257,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.2.tgz",
- "integrity": "sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE90VweJgIYQ==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.3.tgz",
+ "integrity": "sha512-V4KtWtQfAFMU7+9/A/VDps/VI8CHd3cYz0L8sgJzz8qK7eY7wI4ruFD82UYIYvW9Z4DtlTfhQcsl4XyPHW5uSg==",
"cpu": [
"x64"
],
@@ -1817,9 +5270,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.2.tgz",
- "integrity": "sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7AnVlWQSKLTnw==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.3.tgz",
+ "integrity": "sha512-LBx9LYXvj2CBkMkjLdNAWLwH0MLMin7do2VcVo9kVPibGLkY0BQQut2fv7NVqkXqZ/CrAu9LqDHVV1xHCMpCPw==",
"cpu": [
"x64"
],
@@ -1830,9 +5283,9 @@
]
},
"node_modules/@rollup/rollup-openbsd-x64": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.2.tgz",
- "integrity": "sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2hPuFLg==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.3.tgz",
+ "integrity": "sha512-ABVf3Q0RCu7NcyCCOZQI0pJ3GuSdfSl8EXcy88QtdceIMIoCUdfhsJChZ64L9zVM2aJHjde1Bhn5uqSRcX9ySA==",
"cpu": [
"x64"
],
@@ -1843,9 +5296,9 @@
]
},
"node_modules/@rollup/rollup-openharmony-arm64": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.2.tgz",
- "integrity": "sha512-NetAg5iO2uN7eB8zE5qrZ3CSil+7IJt4WDFLcC75Ymywq1VZVD6qJ6EvNLjZ3rEm6gB7XW5JdT60c6MN35Z85Q==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.3.tgz",
+ "integrity": "sha512-+2Cy/ldweGBLlPIKsQLF8U5N44a0KDdbrk1rAjHOM9M2K+kGdIVjHLmmrZIcx+9Ny3ke/1JomCsDI1ocb11+sg==",
"cpu": [
"arm64"
],
@@ -1856,9 +5309,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.2.tgz",
- "integrity": "sha512-NCYhOotpgWZ5kdxCZsv6Iudx0wX8980Q/oW4pNFNihpBKsDbEA1zpkfxJGC0yugsUuyDZ7gL37dbzwhR0VI7pQ==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.3.tgz",
+ "integrity": "sha512-dtZvzc8BedpSaFNy75x6uiWwAGTH+aZHDtdrqP6qk+WcLJrfti6sGje1ZJ9UxyzDLF23d/mV+PaMwuC0hL7UVA==",
"cpu": [
"arm64"
],
@@ -1869,9 +5322,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.2.tgz",
- "integrity": "sha512-RXsaOqXxfoUBQoOgvmmijVxJnW2IGB0eoMO7F8FAjaj0UTywUO/luSqimWBJn04WNgUkeNhh7fs7pESXajWmkg==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.3.tgz",
+ "integrity": "sha512-Rj8Ra4noo+aYy7sKBggCx0407mws34kAb1ySyWuq5DAtFBQdkSwnsjCgPrhPe9cvgBKZIukpE+CVHvORCS93kQ==",
"cpu": [
"ia32"
],
@@ -1882,9 +5335,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-gnu": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.2.tgz",
- "integrity": "sha512-qdAzEULD+/hzObedtmV6iBpdL5TIbKVztGiK7O3/KYSf+HIzU257+MX1EXJcyIiDbMAqmbwaufcYPvyRryeZtA==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.3.tgz",
+ "integrity": "sha512-vp7N084ew/odXn2gi/mzm9mUkQu9l6AiN6dt4IeUM2Uvm9o+cVmP+YkqbMOteLbiGgqBBlJZjIMYVCfOOIVbVQ==",
"cpu": [
"x64"
],
@@ -1895,9 +5348,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.2.tgz",
- "integrity": "sha512-Nd/SgG27WoA9e+/TdK74KnHz852TLa94ovOYySo/yMPuTmpckK/jIF2jSwS3g7ELSKXK13/cVdmg1Z/DaCWKxA==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.3.tgz",
+ "integrity": "sha512-MOG/3gTOn4Fwf574RVOaY61I5o6P90legkFADiTyn1hyjNydT+cerU2rLUwPdZkKKyJ+iT+K9p7WXK4LM1Ka6g==",
"cpu": [
"x64"
],
@@ -2145,9 +5598,9 @@
"license": "MIT"
},
"node_modules/@types/estree": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
- "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
+ "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
"license": "MIT"
},
"node_modules/@types/json-schema": {
@@ -2158,12 +5611,12 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "25.6.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz",
- "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==",
+ "version": "25.9.5",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.5.tgz",
+ "integrity": "sha512-OScDchr2fwuUmWdf4kZ9h7PcJiYDVInhJizG/biAq3cAvqwYktuy/TYGGdZNMtNTFUP7rnb0NU4TUdm82kt4Rg==",
"license": "MIT",
"dependencies": {
- "undici-types": "~7.19.0"
+ "undici-types": ">=7.24.0 <7.24.7"
}
},
"node_modules/@types/normalize-package-data": {
@@ -2407,29 +5860,6 @@
"typescript": ">=4.8.4 <6.1.0"
}
},
- "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
- "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "18 || 20 || >=22"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
- "version": "5.0.6",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
- "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^4.0.2"
- },
- "engines": {
- "node": "18 || 20 || >=22"
- }
- },
"node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
"version": "10.2.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
@@ -2831,11 +6261,14 @@
}
},
"node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
},
"node_modules/base64id": {
"version": "2.0.0",
@@ -2872,14 +6305,16 @@
}
},
"node_modules/brace-expansion": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
- "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.8.tgz",
+ "integrity": "sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "20 || >=22"
}
},
"node_modules/braces": {
@@ -3203,23 +6638,16 @@
"node": ">=20"
}
},
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/concurrently": {
- "version": "9.2.3",
- "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.3.tgz",
- "integrity": "sha512-ihjs0E2SxvDgq/MK418hX6YycQgKhsqxpbZuZbHo0yKfqDWdymWMjWYIpCIzqDDLLKClHlXev8whW/8WXmJ0BA==",
+ "version": "9.2.4",
+ "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.4.tgz",
+ "integrity": "sha512-TZ0CEhyzvFjgtAvHTusDMgj7wNdihCh7LLLrzdUOXIhdlnL2JBBGA9eJxR24rtqgmdjh3OA3hrN1rCHj6HM8qA==",
"dev": true,
"license": "MIT",
"dependencies": {
"chalk": "4.1.2",
"rxjs": "7.8.2",
- "shell-quote": "1.8.4",
+ "shell-quote": "1.9.0",
"supports-color": "8.1.1",
"tree-kill": "1.2.2",
"yargs": "17.7.2"
@@ -3474,7 +6902,6 @@
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
"integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
- "dev": true,
"license": "MIT"
},
"node_modules/esbuild": {
@@ -4026,6 +7453,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/get-tsconfig": {
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz",
+ "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==",
+ "license": "MIT",
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+ }
+ },
"node_modules/glob-parent": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@@ -4170,6 +7609,16 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/ipfs-unixfs": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-12.0.2.tgz",
+ "integrity": "sha512-uZ3rutVVZZ+tw52P+sgDSgOSK6ztExJVlfCjKvSD+NIEVlWQPDeKgdSFm+Kxchmgp7t6g1h+dzir+NgY+VsQXg==",
+ "license": "Apache-2.0 OR MIT",
+ "dependencies": {
+ "protons-runtime": "^6.0.1",
+ "uint8arraylist": "^2.4.8"
+ }
+ },
"node_modules/is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -4336,9 +7785,9 @@
"license": "MIT"
},
"node_modules/js-yaml": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz",
- "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz",
+ "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==",
"dev": true,
"funding": [
{
@@ -4633,6 +8082,12 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"license": "MIT"
},
+ "node_modules/multiformats": {
+ "version": "13.4.2",
+ "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz",
+ "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==",
+ "license": "Apache-2.0 OR MIT"
+ },
"node_modules/mz": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
@@ -4644,10 +8099,21 @@
"thenify-all": "^1.0.0"
}
},
+ "node_modules/nanoevents": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/nanoevents/-/nanoevents-9.1.0.tgz",
+ "integrity": "sha512-Jd0fILWG44a9luj8v5kED4WI+zfkkgwKyRQKItTtlPfEsh7Lznfi1kr8/iZ+XAIss4Qq5GqRB0qtWbaz9ceO/A==",
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
+ }
+ },
"node_modules/nanoid": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
- "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "version": "3.3.16",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz",
+ "integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==",
"funding": [
{
"type": "github",
@@ -4678,6 +8144,18 @@
"node": ">= 0.6"
}
},
+ "node_modules/neverthrow": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/neverthrow/-/neverthrow-8.2.0.tgz",
+ "integrity": "sha512-kOCT/1MCPAxY5iUV3wytNFUMUolzuwd/VF/1KCx7kf6CutrOsTie+84zTGTpgQycjvfLdBBdvBvFLqFD2c0wkQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-linux-x64-gnu": "^4.24.0"
+ }
+ },
"node_modules/node-releases": {
"version": "2.0.37",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz",
@@ -4801,9 +8279,9 @@
}
},
"node_modules/ora": {
- "version": "9.3.0",
- "resolved": "https://registry.npmjs.org/ora/-/ora-9.3.0.tgz",
- "integrity": "sha512-lBX72MWFduWEf7v7uWf5DHp9Jn5BI8bNPGuFgtXMmr2uDz2Gz2749y3am3agSDdkhHPHYmmxEGSKH85ZLGzgXw==",
+ "version": "9.4.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-9.4.1.tgz",
+ "integrity": "sha512-6VlU9MLXbjVQD04AZCMX28hVtA5bUoadvUqO76MUCVA0ilwJbMiHsITRPfyVm6p/BC0Av/BXMujx39WCe1LEqw==",
"license": "MIT",
"dependencies": {
"chalk": "^5.6.2",
@@ -4812,7 +8290,7 @@
"is-interactive": "^2.0.0",
"is-unicode-supported": "^2.1.0",
"log-symbols": "^7.0.1",
- "stdin-discarder": "^0.3.1",
+ "stdin-discarder": "^0.3.2",
"string-width": "^8.1.0"
},
"engines": {
@@ -5188,9 +8666,9 @@
}
},
"node_modules/postcss": {
- "version": "8.5.10",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.10.tgz",
- "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==",
+ "version": "8.5.23",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.23.tgz",
+ "integrity": "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==",
"funding": [
{
"type": "opencollective",
@@ -5207,7 +8685,7 @@
],
"license": "MIT",
"dependencies": {
- "nanoid": "^3.3.11",
+ "nanoid": "^3.3.16",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
@@ -5389,6 +8867,17 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/protons-runtime": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-6.0.2.tgz",
+ "integrity": "sha512-hiyjyANwGcgmzc+tXc1/ZcSZhKnl5MDjaVNWkISHBgadaU0sjTgKIKZMZ62d9J9zlSTyKHCs/osPkQ/3Z+7yeA==",
+ "license": "Apache-2.0 OR MIT",
+ "dependencies": {
+ "uint8-varint": "^2.0.4",
+ "uint8arraylist": "^2.4.8",
+ "uint8arrays": "^5.1.0"
+ }
+ },
"node_modules/punycode": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -5724,6 +9213,15 @@
"node": ">=4"
}
},
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+ }
+ },
"node_modules/restore-cursor": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz",
@@ -5752,12 +9250,12 @@
}
},
"node_modules/rollup": {
- "version": "4.60.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.2.tgz",
- "integrity": "sha512-J9qZyW++QK/09NyN/zeO0dG/1GdGfyp9lV8ajHnRVLfo/uFsbji5mHnDgn/qYdUHyCkM2N+8VyspgZclfAh0eQ==",
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.3.tgz",
+ "integrity": "sha512-Gu0c0iH9FzgX1L1t7ByIbbS3Vmdz+6KHm/EsqmmC71gUQ82yvZRkTK6XzrFObSka91WUVdynqp6nsfilzr5k6Q==",
"license": "MIT",
"dependencies": {
- "@types/estree": "1.0.8"
+ "@types/estree": "1.0.9"
},
"bin": {
"rollup": "dist/bin/rollup"
@@ -5767,34 +9265,53 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.60.2",
- "@rollup/rollup-android-arm64": "4.60.2",
- "@rollup/rollup-darwin-arm64": "4.60.2",
- "@rollup/rollup-darwin-x64": "4.60.2",
- "@rollup/rollup-freebsd-arm64": "4.60.2",
- "@rollup/rollup-freebsd-x64": "4.60.2",
- "@rollup/rollup-linux-arm-gnueabihf": "4.60.2",
- "@rollup/rollup-linux-arm-musleabihf": "4.60.2",
- "@rollup/rollup-linux-arm64-gnu": "4.60.2",
- "@rollup/rollup-linux-arm64-musl": "4.60.2",
- "@rollup/rollup-linux-loong64-gnu": "4.60.2",
- "@rollup/rollup-linux-loong64-musl": "4.60.2",
- "@rollup/rollup-linux-ppc64-gnu": "4.60.2",
- "@rollup/rollup-linux-ppc64-musl": "4.60.2",
- "@rollup/rollup-linux-riscv64-gnu": "4.60.2",
- "@rollup/rollup-linux-riscv64-musl": "4.60.2",
- "@rollup/rollup-linux-s390x-gnu": "4.60.2",
- "@rollup/rollup-linux-x64-gnu": "4.60.2",
- "@rollup/rollup-linux-x64-musl": "4.60.2",
- "@rollup/rollup-openbsd-x64": "4.60.2",
- "@rollup/rollup-openharmony-arm64": "4.60.2",
- "@rollup/rollup-win32-arm64-msvc": "4.60.2",
- "@rollup/rollup-win32-ia32-msvc": "4.60.2",
- "@rollup/rollup-win32-x64-gnu": "4.60.2",
- "@rollup/rollup-win32-x64-msvc": "4.60.2",
+ "@rollup/rollup-android-arm-eabi": "4.62.3",
+ "@rollup/rollup-android-arm64": "4.62.3",
+ "@rollup/rollup-darwin-arm64": "4.62.3",
+ "@rollup/rollup-darwin-x64": "4.62.3",
+ "@rollup/rollup-freebsd-arm64": "4.62.3",
+ "@rollup/rollup-freebsd-x64": "4.62.3",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.62.3",
+ "@rollup/rollup-linux-arm-musleabihf": "4.62.3",
+ "@rollup/rollup-linux-arm64-gnu": "4.62.3",
+ "@rollup/rollup-linux-arm64-musl": "4.62.3",
+ "@rollup/rollup-linux-loong64-gnu": "4.62.3",
+ "@rollup/rollup-linux-loong64-musl": "4.62.3",
+ "@rollup/rollup-linux-ppc64-gnu": "4.62.3",
+ "@rollup/rollup-linux-ppc64-musl": "4.62.3",
+ "@rollup/rollup-linux-riscv64-gnu": "4.62.3",
+ "@rollup/rollup-linux-riscv64-musl": "4.62.3",
+ "@rollup/rollup-linux-s390x-gnu": "4.62.3",
+ "@rollup/rollup-linux-x64-gnu": "4.62.3",
+ "@rollup/rollup-linux-x64-musl": "4.62.3",
+ "@rollup/rollup-openbsd-x64": "4.62.3",
+ "@rollup/rollup-openharmony-arm64": "4.62.3",
+ "@rollup/rollup-win32-arm64-msvc": "4.62.3",
+ "@rollup/rollup-win32-ia32-msvc": "4.62.3",
+ "@rollup/rollup-win32-x64-gnu": "4.62.3",
+ "@rollup/rollup-win32-x64-msvc": "4.62.3",
"fsevents": "~2.3.2"
}
},
+ "node_modules/rollup-plugin-esbuild": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-6.2.1.tgz",
+ "integrity": "sha512-jTNOMGoMRhs0JuueJrJqbW8tOwxumaWYq+V5i+PD+8ecSCVkuX27tGW7BXqDgoULQ55rO7IdNxPcnsWtshz3AA==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.4.0",
+ "es-module-lexer": "^1.6.0",
+ "get-tsconfig": "^4.10.0",
+ "unplugin-utils": "^0.2.4"
+ },
+ "engines": {
+ "node": ">=14.18.0"
+ },
+ "peerDependencies": {
+ "esbuild": ">=0.18.0",
+ "rollup": "^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0"
+ }
+ },
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -5880,9 +9397,9 @@
}
},
"node_modules/shell-quote": {
- "version": "1.8.4",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.4.tgz",
- "integrity": "sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.9.0.tgz",
+ "integrity": "sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6599,10 +10116,38 @@
"integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==",
"license": "MIT"
},
+ "node_modules/uint8-varint": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/uint8-varint/-/uint8-varint-2.0.5.tgz",
+ "integrity": "sha512-jeFLbL/x30wBRnWjKE1qVBXeumG46r7XmYkpis955lTQ+blccGKFrOsSMHlxePwYB1pI7L8YPHz1t4jLxEs3nA==",
+ "license": "Apache-2.0 OR MIT",
+ "dependencies": {
+ "uint8arraylist": "^2.0.0",
+ "uint8arrays": "^5.0.0"
+ }
+ },
+ "node_modules/uint8arraylist": {
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/uint8arraylist/-/uint8arraylist-2.4.9.tgz",
+ "integrity": "sha512-KxWjyEFzchzik3aoQlK66oaoxIReoMo5bQRm1fcjBUZvE8xv/tyR3CTKhjh6K/faV8VaF6hd5pjr45CzbwuwkA==",
+ "license": "Apache-2.0 OR MIT",
+ "dependencies": {
+ "uint8arrays": "^5.0.1"
+ }
+ },
+ "node_modules/uint8arrays": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.1.tgz",
+ "integrity": "sha512-9muQwa4wZG4dKi9gMAIBtnk2Pw87SRpvWTH6lOGm19V2Uqxr4uomUf2PGqPnWc+qs06sN8owUU4jfcoWOcfwVQ==",
+ "license": "Apache-2.0 OR MIT",
+ "dependencies": {
+ "multiformats": "^13.0.0"
+ }
+ },
"node_modules/undici-types": {
- "version": "7.19.2",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz",
- "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==",
+ "version": "7.24.6",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz",
+ "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==",
"license": "MIT"
},
"node_modules/unicorn-magic": {
@@ -6617,6 +10162,34 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/unplugin-utils": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.2.5.tgz",
+ "integrity": "sha512-gwXJnPRewT4rT7sBi/IvxKTjsms7jX7QIDLOClApuZwR49SXbrB1z2NLUZ+vDHyqCj/n58OzRRqaW+B8OZi8vg==",
+ "license": "MIT",
+ "dependencies": {
+ "pathe": "^2.0.3",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sxzz"
+ }
+ },
+ "node_modules/unplugin-utils/node_modules/picomatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
+ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/update-browserslist-db": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
@@ -7277,6 +10850,23 @@
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"license": "ISC"
},
+ "node_modules/yaml": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz",
+ "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==",
+ "license": "ISC",
+ "optional": true,
+ "peer": true,
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/eemeli"
+ }
+ },
"node_modules/yargs": {
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
diff --git a/web/package.json b/web/package.json
index e221bc7..4c5137e 100644
--- a/web/package.json
+++ b/web/package.json
@@ -16,7 +16,9 @@
"dev:listen": "concurrently -n signal,web -c magenta,cyan \"npm:signal\" \"npm:dev\"",
"build": "tsc -b && vite build",
"build:bulletin": "tsc -b && vite build --config vite.bulletin.config.ts",
+ "build:product-devnet": "tsc -b && vite build --config vite.product.config.ts --mode product-devnet",
"deploy:bulletin": "node scripts/deploy-bulletin.cjs",
+ "deploy:product-devnet": "npm run build:product-devnet && npx --yes --package @polkadot-community-foundation/polkadot-app-deploy@0.13.1 pad ./dist-product dotify-test01.dot --env devnet --js-merkle --config ./polkadot-app-deploy.config.ts",
"smoke:production-env": "node scripts/production-env-smoke.mjs",
"smoke:signal": "node scripts/signaling-smoke.mjs",
"lint": "eslint .",
@@ -27,6 +29,7 @@
"preview": "vite preview --host 0.0.0.0 --port 4273"
},
"dependencies": {
+ "@parity/product-sdk": "0.19.1",
"@polkadot-api/descriptors": "file:.papi/descriptors",
"@polkadot-apps/chain-client": "^2.0.5",
"@polkadot-apps/descriptors": "^1.0.1",
@@ -45,6 +48,7 @@
"viem": "^2.53.1"
},
"overrides": {
+ "brace-expansion": "5.0.8",
"ws": "8.21.0"
},
"devDependencies": {
diff --git a/web/polkadot-app-deploy.config.ts b/web/polkadot-app-deploy.config.ts
new file mode 100644
index 0000000..4f90ead
--- /dev/null
+++ b/web/polkadot-app-deploy.config.ts
@@ -0,0 +1,16 @@
+export default {
+ domain: 'dotify-test01.dot',
+ displayName: 'Dotify',
+ description: 'Shared musical presence with artist-owned access and value flows.',
+ icon: {
+ path: './product-icon.png',
+ format: 'png'
+ },
+ executables: [
+ {
+ kind: 'app',
+ path: './dist-product',
+ appVersion: [0, 1, 0]
+ }
+ ]
+};
diff --git a/web/product-icon.png b/web/product-icon.png
new file mode 100644
index 0000000..24c57db
Binary files /dev/null and b/web/product-icon.png differ
diff --git a/web/product-icon.svg b/web/product-icon.svg
new file mode 100644
index 0000000..5827921
--- /dev/null
+++ b/web/product-icon.svg
@@ -0,0 +1,13 @@
+
diff --git a/web/src/app/providers/SessionProvider.tsx b/web/src/app/providers/SessionProvider.tsx
index 49c01fa..968b4ca 100644
--- a/web/src/app/providers/SessionProvider.tsx
+++ b/web/src/app/providers/SessionProvider.tsx
@@ -13,19 +13,21 @@ import { useNavigation } from './NavigationProvider';
import { useCatalogContext } from './CatalogProvider';
const signalUrl = import.meta.env.VITE_SIGNAL_URL ?? `${window.location.protocol}//${window.location.hostname}:8788`;
+const publicAppUrl = import.meta.env.VITE_PUBLIC_APP_URL?.trim() || null;
type SessionValue = ReturnType;
const SessionContext = createContext(null);
export function SessionProvider({ children }: { children: ReactNode }) {
- const { listenerEvmAddress } = useWalletContext();
+ const { activeIdentityAddress } = useWalletContext();
const { navigateToView } = useNavigation();
const catalog = useCatalogContext();
const session = useSession({
signalUrl,
- identityAddress: listenerEvmAddress,
+ publicAppUrl,
+ identityAddress: activeIdentityAddress,
audioSource: catalog.audioSource,
trackInfo: catalog.trackInfo,
setTrackInfo: catalog.setTrackInfo,
@@ -50,7 +52,7 @@ export function SessionProvider({ children }: { children: ReactNode }) {
useEffect(() => {
const initialRoomCode = getInitialRoomCode();
if (!initialRoomCode || session.roomId) return;
- const remembered = getStoredDisplayName(listenerEvmAddress);
+ const remembered = getStoredDisplayName(activeIdentityAddress);
if (!remembered) return;
session.setDisplayName(remembered);
session.joinRoom(initialRoomCode, { displayName: remembered });
@@ -68,11 +70,11 @@ export function SessionProvider({ children }: { children: ReactNode }) {
// write a partial name to storage on every keystroke.
const setDisplayName = session.setDisplayName;
useEffect(() => {
- const stored = getStoredDisplayName(listenerEvmAddress);
+ const stored = getStoredDisplayName(activeIdentityAddress);
if (stored) setDisplayName(stored);
// Re-run only when the connected address changes.
// eslint-disable-next-line react-hooks/exhaustive-deps
- }, [listenerEvmAddress]);
+ }, [activeIdentityAddress]);
return {children} ;
}
diff --git a/web/src/app/providers/WalletProvider.tsx b/web/src/app/providers/WalletProvider.tsx
index aef0e7d..9be0100 100644
--- a/web/src/app/providers/WalletProvider.tsx
+++ b/web/src/app/providers/WalletProvider.tsx
@@ -18,6 +18,7 @@ import { devAccounts, type DevAccount } from '../../hooks/useDevAccounts';
import { getDefaultEthRpcUrl } from '../../shared/config/network';
import { resolveEvmChain, getWalletClient } from '../../shared/config/contracts';
import { chainMismatchMessage } from '../../features/wallet/network';
+import type { ProductHostMode, ProductHostStatus } from '../../features/productHost/productHost';
import { useUiFeedback } from './UiFeedbackProvider';
type WalletContextValue = {
@@ -25,6 +26,7 @@ type WalletContextValue = {
connectedWallet: ConnectedWallet | null;
activeEvmAddress: `0x${string}`;
listenerEvmAddress: `0x${string}` | null;
+ activeIdentityAddress: string | null;
activeSubstrateAddress: string | null;
activeSubstrateSigner: PolkadotSigner | null;
currentBulletinAccount: DevAccount;
@@ -37,10 +39,13 @@ type WalletContextValue = {
switchNetwork: () => Promise;
connectPasskey: () => Promise;
connectExtension: () => Promise;
+ connectProductHost: () => Promise;
disconnect: () => void;
forgetPasskey: () => void;
hasPrfSupport: boolean;
hasStoredPasskey: boolean;
+ productHostMode: ProductHostMode;
+ productHostStatus: ProductHostStatus;
};
const WalletContext = createContext(null);
@@ -51,11 +56,14 @@ export function WalletProvider({ children }: { children: ReactNode }) {
state: walletState,
connectPasskey,
connectExtension,
+ connectProductHost,
switchExtensionNetwork,
disconnect: disconnectWalletOnly,
hasPrfSupport,
hasStoredPasskey,
- forgetPasskey
+ forgetPasskey,
+ productHostMode,
+ productHostStatus
} = useWallet();
const [ethRpcUrl] = useState(getDefaultEthRpcUrl);
@@ -68,7 +76,7 @@ export function WalletProvider({ children }: { children: ReactNode }) {
// Disconnecting the wallet also signs out of the Dotify session (ticket 24
// P2): revoke the server-side token and forget the stored one, so a shared
// machine does not keep listening rights after the wallet leaves.
- const connectedAddress = connectedWallet?.evmAddress;
+ const connectedAddress = connectedWallet?.createEvmClient ? connectedWallet.evmAddress : undefined;
const lastConnectedAddressRef = useRef<`0x${string}` | null>(null);
const disconnect = useCallback(() => {
if (connectedAddress) void signOutOfDotifySession(connectedAddress);
@@ -88,7 +96,10 @@ export function WalletProvider({ children }: { children: ReactNode }) {
const currentBulletinAccount = devAccounts[bulletinAccountIndex];
const activeEvmAddress = connectedWallet?.evmAddress ?? zeroAddress;
- const listenerEvmAddress = connectedWallet?.evmAddress ?? null;
+ const listenerEvmAddress = connectedWallet?.createEvmClient ? connectedWallet.evmAddress : null;
+ // Local room-name persistence lowercases its key, so use the H160 identity
+ // for both EVM wallets and Product accounts rather than case-sensitive SS58.
+ const activeIdentityAddress = connectedWallet?.evmAddress ?? null;
const devBulletinFallback = import.meta.env.DEV ? currentBulletinAccount : null;
const activeSubstrateAddress = connectedWallet ? (connectedWallet.substrateAddress ?? null) : (devBulletinFallback?.address ?? null);
const activeSubstrateSigner = connectedWallet ? (connectedWallet.substrateSigner ?? null) : (devBulletinFallback?.signer ?? null);
@@ -97,6 +108,9 @@ export function WalletProvider({ children }: { children: ReactNode }) {
if (!connectedWallet) {
throw new Error('Connect a wallet before signing this transaction.');
}
+ if (!connectedWallet.createEvmClient) {
+ throw new Error('This action still requires a passkey or EVM wallet while Dotify contracts are being ported to the Product DevNet host signer.');
+ }
const chain = await resolveEvmChain(ethRpcUrl);
if (connectedWallet.chainId !== undefined && connectedWallet.chainId !== chain.id) {
throw new Error(chainMismatchMessage(chain.id, connectedWallet.chainId));
@@ -166,6 +180,7 @@ export function WalletProvider({ children }: { children: ReactNode }) {
connectedWallet,
activeEvmAddress,
listenerEvmAddress,
+ activeIdentityAddress,
activeSubstrateAddress,
activeSubstrateSigner,
currentBulletinAccount,
@@ -178,16 +193,20 @@ export function WalletProvider({ children }: { children: ReactNode }) {
switchNetwork,
connectPasskey,
connectExtension,
+ connectProductHost,
disconnect,
forgetPasskey,
hasPrfSupport,
- hasStoredPasskey
+ hasStoredPasskey,
+ productHostMode,
+ productHostStatus
}),
[
walletState,
connectedWallet,
activeEvmAddress,
listenerEvmAddress,
+ activeIdentityAddress,
activeSubstrateAddress,
activeSubstrateSigner,
currentBulletinAccount,
@@ -199,10 +218,13 @@ export function WalletProvider({ children }: { children: ReactNode }) {
switchNetwork,
connectPasskey,
connectExtension,
+ connectProductHost,
disconnect,
forgetPasskey,
hasPrfSupport,
- hasStoredPasskey
+ hasStoredPasskey,
+ productHostMode,
+ productHostStatus
]
);
diff --git a/web/src/components/WalletModal.tsx b/web/src/components/WalletModal.tsx
index 989d2e1..cae1226 100644
--- a/web/src/components/WalletModal.tsx
+++ b/web/src/components/WalletModal.tsx
@@ -1,4 +1,4 @@
-import { ExternalLink, KeyRound, LockKeyhole, Music2, Power, RefreshCw, Users, Wallet, X } from 'lucide-react';
+import { Box, ExternalLink, KeyRound, LockKeyhole, Music2, Power, RefreshCw, Users, Wallet, X } from 'lucide-react';
import { Dialog } from './Dialog';
import type { WalletState } from '../hooks/useWallet';
import type { CatalogTrack } from '../shared/types';
@@ -58,6 +58,9 @@ export function WalletModal({
isSwitchingNetwork,
connectPasskey,
connectExtension,
+ connectProductHost,
+ productHostMode,
+ productHostStatus,
switchNetwork,
forgetPasskey: onForgetPasskey,
disconnect: onDisconnect
@@ -69,6 +72,7 @@ export function WalletModal({
const onClose = () => setShowWalletModal(false);
const onPasskey = () => void connectPasskey();
const onExtension = () => void connectExtension();
+ const onProductHost = () => void connectProductHost();
const onSwitchNetwork = () => void switchNetwork();
if (state.status === 'connected') {
@@ -95,7 +99,7 @@ export function WalletModal({
{wallet.label}
- {wallet.evmAddress ? (
+ {wallet.method !== 'product-host' ? (
{shortenAddress(identityAddress)}
@@ -108,7 +112,15 @@ export function WalletModal({
Connection
- {walletChainMismatch ? 'Needs attention' : wallet.method === 'passkey' ? 'This device' : 'Wallet app'}
+
+ {walletChainMismatch
+ ? 'Needs attention'
+ : wallet.method === 'passkey'
+ ? 'This device'
+ : wallet.method === 'product-host'
+ ? 'Product host'
+ : 'Wallet app'}
+
{walletChainMismatch && Choose the right network to continue}
{walletChainMismatch && wallet.method === 'extension' && onSwitchNetwork && (
+ {wallet.method === 'product-host' && (
+ <>
+
+ Your app-scoped Polkadot identity is active for presence and rooms. Paid access, protected playback, and artist publishing still require an EVM
+ signer during the contract port.
+
+
+ {hasPrfSupport && (
+
+ )}
+
+
+ >
+ )}
+
{unlockedCount}
@@ -254,15 +297,39 @@ export function WalletModal({
{state.status === 'error' && {state.message}
}
{state.status === 'connecting' && (
- {state.via === 'passkey' ? 'Check your browser prompt to continue.' : 'Check your wallet to approve the connection.'}
+
+ {state.via === 'passkey'
+ ? 'Check your browser prompt to continue.'
+ : state.via === 'product-host'
+ ? 'Check the Polkadot Product host to continue.'
+ : 'Check your wallet to approve the connection.'}
+
)}
{state.status === 'needs-reconnect' && state.via === 'passkey' && (
Your saved passkey is ready. Use passkey to reconnect when you are ready.
)}
+ {productHostMode !== 'off' && (
+
+ )}
+
{hasPrfSupport && (
-