Skip to Content
API ReferenceterminalOverview

@parity/product-sdk-terminal

npm install @parity/product-sdk-terminal

Exports

Functions

NameSummary
createSessionSigner()A transaction creator for the adapter’s product, default account (derivationIndex 0).
createSessionSignerForAccount()A transaction creator for any product account of the paired session.
createTerminalAdapter()@parity/product-sdk-terminal: QR pairing and signing for CLIs, through the
defaultStorageDir()@parity/product-sdk-terminal: QR pairing and signing for CLIs, through the
deriveEntropy()32 bytes of entropy scoped to productId and key (1 to 32 bytes).
deriveProductPublicKey()The product account’s public key, derived from the product’s subtree key the wallet shares.
getStatementStoreProver()A prover for productId. Request StatementStoreAllowance for it first.
renderQrCode()Encode a string as a QR code rendered in Unicode half-block characters.
requestResourceAllocation()One outcome per requested resource, in order. A refused or unavailable
sessionRootPublicKey()The wallet’s root key for this session. Product accounts derive from per-product subtrees, not from it.
submitPreimage()Store data on Bulletin with the product’s Bulletin allowance and return
submitStatement()Submit a proved statement to the People chain’s statement store.

Interfaces

NameSummary
LoginOptions—
ProductAccountRefWhich product account signs.
QrRenderOptionsOptions for QR code rendering.
SessionSignerOptions—
SignedStatementA statement with a required (not optional) proof.
StatementA statement with optional proof and metadata.
StatementStoreProverProves statements for one product with its statement-store allowance.
TerminalAdapter—
TerminalAdapterOptions—
TerminalChain—
TerminalNetwork—
TerminalStackA Trinity stack: its pointer and the signed descriptor it names.

Type Aliases

NameSummary
AllocatableResourceA resource the host can pre-allocate on behalf of the product (RFC 0010).
AllocatableResourceA resource the host can pre-allocate on behalf of the product (RFC 0010).
AllocationOutcomeOutcome of allocating a single resource (RFC 0010).
AllocationOutcomeOutcome of allocating a single resource (RFC 0010).
AuthStateAuth/session lifecycle state the core projects for host UI. The core owns
AuthStateAuth/session lifecycle state the core projects for host UI. The core owns
SignedStatement—
Statement—
StatementProofCryptographic proof for a statement.
StatementProofCryptographic proof for a statement.
TerminalApprovalRequestWhat the core is asking the user to approve.
TerminalApprovalsAnswers true to approve once, false to refuse.
TerminalNetworkName—
TerminalSessionThe paired wallet session: its root key, identity and usernames.

Variables

NameSummary
approveAll—
TerminalNetworks—

Re-exports

Convenience re-exports from leaf packages. Click through for the canonical documentation.

NameKindSource package
AllowanceExpiredErrorclass@parity/product-sdk-signer
SignerErrorclass@parity/product-sdk-signer

Functions

createSessionSigner()

A transaction creator for the adapter’s product, default account (derivationIndex 0).

createSessionSigner(adapter: TerminalAdapter, publicKey?: Uint8Array<ArrayBufferLike>, options?: SessionSignerOptions): Promise<CommonSignerTxCreator>

createSessionSignerForAccount()

A transaction creator for any product account of the paired session.

createSessionSignerForAccount(adapter: TerminalAdapter, ref: ProductAccountRef, options?: SessionSignerOptions): Promise<CommonSignerTxCreator>

createTerminalAdapter()

createTerminalAdapter(options: TerminalAdapterOptions): Promise<TerminalAdapter>

defaultStorageDir()

defaultStorageDir(appId: string): string

deriveEntropy()

32 bytes of entropy scoped to productId and key (1 to 32 bytes).

productId is the identifier the product is served under in a container, e.g. "my-app.dot". The core trims, NFC-normalises and lowercases it first, so "My-App.dot" and "my-app.dot" give the same bytes.

deriveEntropy(adapter: TerminalAdapter, productId: string, key: Uint8Array): Promise<Uint8Array<ArrayBufferLike>>

deriveProductPublicKey()

The product account’s public key, derived from the product’s subtree key the wallet shares.

deriveProductPublicKey(adapter: TerminalAdapter, ref: ProductAccountRef): Promise<Uint8Array<ArrayBufferLike>>

getStatementStoreProver()

A prover for productId. Request StatementStoreAllowance for it first.

getStatementStoreProver(adapter: TerminalAdapter, productId?: string): Promise<StatementStoreProver>

renderQrCode()

Encode a string as a QR code rendered in Unicode half-block characters.

Returns a multi-line string suitable for console.log.

renderQrCode(data: string, options?: QrRenderOptions): Promise<string>

requestResourceAllocation()

One outcome per requested resource, in order. A refused or unavailable resource is an outcome, not an error; transport failures throw.

requestResourceAllocation(adapter: TerminalAdapter, resources: AllocatableResource[], options: { productId?: string } = {}): Promise<AllocationOutcome[]>

sessionRootPublicKey()

The wallet’s root key for this session. Product accounts derive from per-product subtrees, not from it.

sessionRootPublicKey(session: SessionUiInfo): Uint8Array

submitPreimage()

Store data on Bulletin with the product’s Bulletin allowance and return its preimage key. Request BulletinAllowance for the product first.

submitPreimage(adapter: TerminalAdapter, data: Uint8Array, productId?: string): Promise<`0x${string}`>

submitStatement()

Submit a proved statement to the People chain’s statement store.

submitStatement(adapter: TerminalAdapter, statement: SignedStatement, productId?: string): Promise<void>

Interfaces

interface LoginOptions

Properties

reason
propertyoptionalstring

Shown by the wallet.

Methods

onPairing

Called with the polkadotapp://pair?… link to show as a QR code.

onPairing(deeplink: string): void

interface ProductAccountRef

Which product account signs.

Properties

derivationIndex
propertynumber

Child index within the product; 0 is the default account.

productId
propertystring

The product, as a dotNS name. Usually the adapter’s appId.

publicKey
propertyoptionalUint8Array<ArrayBufferLike>

The account’s public key when already known, which saves a round trip to the wallet.

interface QrRenderOptions

Options for QR code rendering.

Properties

errorCorrectionLevel
propertyoptional"L" | "M" | "Q" | "H"

Error correction level. Default: “M”.

margin
propertyoptionalnumber

Quiet zone size in modules. Default: 2.

interface SessionSignerOptions

Properties

txExtVersion
propertyoptionalnumber

Transaction extension version to sign on when the payload names none. Defaults to 0. A pipeline that cannot carry every supplied extension is skipped for the lowest one that can.

interface SignedStatement

A statement with a required (not optional) proof.

Properties

channel
propertyoptional`0x${string}`

Optional channel.

data
propertyoptional`0x${string}`

Optional data payload.

decryptionKey
propertyoptional`0x${string}`

Optional decryption key.

expiry
propertyoptionalbigint

Optional Unix timestamp expiry.

proof
propertyStatementProof

Required cryptographic proof.

topics
property`0x${string}`[]

[u8; 32] tags.

interface Statement

A statement with optional proof and metadata.

Properties

channel
propertyoptional`0x${string}`

Optional channel.

data
propertyoptional`0x${string}`

Optional data payload.

decryptionKey
propertyoptional`0x${string}`

Optional decryption key.

expiry
propertyoptionalbigint

Optional Unix timestamp expiry.

proof
propertyoptionalStatementProof

Optional cryptographic proof.

topics
property`0x${string}`[]

[u8; 32] tags.

interface StatementStoreProver

Proves statements for one product with its statement-store allowance.

Methods

createProof
createProof(statement: Statement): Promise<StatementProof>

interface TerminalAdapter

Properties

appId
propertyreadonlystring
authState
propertyreadonlyAuthState
runtime
propertyreadonlyWorkerPairingHostRuntime

The pairing host runtime, for anything this adapter does not wrap.

session
propertyreadonlySessionUiInfo | undefined

The paired session, or undefined while there is none.

storageDir
propertyreadonlystring

Methods

client

A truapi client acting as productId, by default the adapter’s appId.

client(productId?: string): Promise<TrUApiClient>
destroy

Stop the core’s thread. Idempotent.

destroy(): Promise<void>
login

Resolve with the session, pairing first when there is none.

login(options?: LoginOptions): Promise<SessionUiInfo>
logout

End the session and tell the paired wallet. Resolves once the wallet’s notice has been submitted; rejects when it could not be within 30 s. The local session is cleared either way.

logout(): Promise<void>
onAuthStateChange

Called on every auth state change. Returns an unsubscribe function.

onAuthStateChange(listener: (state: AuthState) => void): () => void

interface TerminalAdapterOptions

Properties

appId
propertystring

The product this CLI acts as: a dotNS id ending in .dot, .paseo or .testnet, e.g. "my-cli.dot", or localhost. Scopes accounts and storage.

approvals
propertyoptionalTerminalApprovals

Answers the core’s reviews and permission requests. Defaults to approving them.

hostMetadata
propertyoptional{ icon?: string; name?: string; version?: string }

Shown on the phone while pairing.

logLevel
propertyoptionalstring

The core’s log level: off (default), error, warn, info, debug or trace.

network
propertyoptionalTerminalNetwork | "paseo-next-v2"

Chains to pair and sign over. Defaults to "paseo-next-v2".

requestTimeoutMs
propertyoptionalnumber

Per-request timeout for product calls. Defaults to 300 s.

storageDir
propertyoptionalstring

This app’s own directory, holding the session (core/) and the product’s storage (product/). Defaults to ~/.polkadot-apps/<appId>.

interface TerminalChain

Properties

endpoint
propertystring
genesisHash
property`0x${string}`

interface TerminalNetwork

Properties

assetHub
propertyTerminalChain
bulletin
propertyTerminalChain
people
propertyTerminalChain
stack
propertyTerminalStack

The stack the core takes its chains and network from. Its chains must be the ones below.

interface TerminalStack

A Trinity stack: its pointer and the signed descriptor it names.

Properties

descriptor
propertystring

The signed descriptor as served, which the core checks against the pointer’s key.

pointer
propertystring

The stack’s link, polkadotapp://stack?key=0x…&url=….

Type Aliases

type AllocatableResource

A resource the host can pre-allocate on behalf of the product (RFC 0010).

For the slot-table allowances (StatementStoreAllowance, BulletinAllowance, SmartContractAllowance), pre-allocation is opportunistic and the host may also fulfil the allowance implicitly on the first submission. AutoSigning must be requested explicitly through this call.

type AllocatableResource = Codec<AllocatableResource>

type AllocatableResource

A resource the host can pre-allocate on behalf of the product (RFC 0010).

For the slot-table allowances (StatementStoreAllowance, BulletinAllowance, SmartContractAllowance), pre-allocation is opportunistic and the host may also fulfil the allowance implicitly on the first submission. AutoSigning must be requested explicitly through this call.

type AllocatableResource = { tag: "StatementStoreAllowance"; value?: undefined } | { tag: "BulletinAllowance"; value?: undefined } | { tag: "SmartContractAllowance"; value: DerivationIndex } | { tag: "AutoSigning"; value?: undefined }

type AllocationOutcome

Outcome of allocating a single resource (RFC 0010).

type AllocationOutcome = Codec<AllocationOutcome>

type AllocationOutcome

Outcome of allocating a single resource (RFC 0010).

type AllocationOutcome = "Allocated" | "Rejected" | "NotAvailable"

type AuthState

Auth/session lifecycle state the core projects for host UI. The core owns every transition and emits states in order; hosts render the current state and never derive auth UI from any other signal.

type AuthState = Codec<AuthState>

type AuthState

Auth/session lifecycle state the core projects for host UI. The core owns every transition and emits states in order; hosts render the current state and never derive auth UI from any other signal.

type AuthState = { tag: "Disconnected"; value?: undefined } | { tag: "Pairing"; value: { deeplink: string } } | { tag: "Connected"; value: SessionUiInfo } | { tag: "LoginFailed"; value: { kind: LoginFailureKind; reason: string } } | { tag: "Authenticating"; value?: undefined }

type SignedStatement

type SignedStatement = Codec<SignedStatement>

type Statement

type Statement = Codec<Statement>

type StatementProof

Cryptographic proof for a statement.

type StatementProof = Codec<StatementProof>

type StatementProof

Cryptographic proof for a statement.

type StatementProof = { tag: "Sr25519"; value: { signature: HexString; signer: HexString } } | { tag: "Ed25519"; value: { signature: HexString; signer: HexString } } | { tag: "Ecdsa"; value: { signature: HexString; signer: HexString } } | { tag: "OnChain"; value: { blockHash: HexString; event: bigint; who: HexString } }

type TerminalApprovalRequest

What the core is asking the user to approve.

type TerminalApprovalRequest = { kind: "review"; review: UserConfirmationReview } | { kind: "permission"; permission: string }

type TerminalApprovals

Answers true to approve once, false to refuse.

type TerminalApprovals = (request: TerminalApprovalRequest) => Promise<boolean>

type TerminalNetworkName

type TerminalNetworkName = keyof typeof TerminalNetworks

type TerminalSession

The paired wallet session: its root key, identity and usernames.

type TerminalSession = SessionUiInfo

Variables

approveAll

let approveAll: TerminalApprovals = ...

TerminalNetworks

let TerminalNetworks: { readonly paseo-next-v2: { readonly assetHub: { readonly endpoint: "wss://paseo-asset-hub-next-rpc.polkadot.io"; readonly genesisHash: "0x4349b00e54897e21196fd331015fc5be0f14e118beb0375ed2bb1793737bb57a" }; readonly bulletin: { readonly endpoint: "wss://paseo-bulletin-next-rpc.polkadot.io"; readonly genesisHash: "0x8cfe6717dc4becfda2e13c488a1e2061ff2dfee96e7d031157f72d36716c0a22" }; readonly people: { readonly endpoint: "wss://paseo-people-next-system-rpc.polkadot.io"; readonly genesisHash: "0x4a2b5b737de1da59e209b0000a876ec2fa20035dc34fd292a848da32d255ad48" }; readonly stack: { readonly descriptor: "{\"$v\":1,\"payload\":\"ewogICIkdiI6IDEsCiAgImFzc2V0cyI6IFsKICAgIHsKICAgICAgImNoYWluIjogIkFzc2V0SHViIiwKICAgICAgImlkIjogNTAwMDA0MTMsCiAgICAgICJwYWxsZXQiOiAiQXNzZXRzIiwKICAgICAgInJvbGUiOiAicGF5bWVudCIKICAgIH0KICBdLAogICJjaGFpbnMiOiBbCiAgICB7CiAgICAgICJmdWxsU3BlYyI6IHsKICAgICAgICAic2hhMjU2IjogIjB4MDVjMjk0OWFiNGIwNDAxNDA0MTY5NzlmOTM2MjBkZWU0ZWJjNjdiMzBhODMwZTkyZDYyZTFjZDc2YTZhOGMyZCIsCiAgICAgICAgInVybCI6ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcGFzZW8tbmV0d29yay9wYXNlby1jaGFpbi1zcGVjcy8zMWE1ZTJjMmRkYTU2OWRhZGRkZWY4MmFjODJjODRmMTRhZjVhYmY1L3Bhc2VvLnJhdy5qc29uIgogICAgICB9LAogICAgICAiZ2VuZXNpc0hhc2giOiAiMHgzNzQwNTdiZTY3YjM1NTE1MWYyNzFmZjcwYzNkYjk4MzA4YzYyYzhhZGM0OGRjNjcyNGI2YTAwOWExYTAxNGZkIiwKICAgICAgImxpZ2h0U3BlYyI6IHsKICAgICAgICAic2hhMjU2IjogIjB4ZjNkZjM4MDY5MTI5NzY3ZDUzMTBmNGIxOWY0NDM0OWNhMTI3YTM1OTQwNjU2OWJiYTRlYTVjMzVhNDg5YTgxZCIsCiAgICAgICAgInVybCI6ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcGFzZW8tbmV0d29yay9wYXNlby1jaGFpbi1zcGVjcy83YjdhZWFkNTc4MWJlMWYxNWM5YmIzZDlkNjVjZDRhNmNmZDUzYjc2L3Bhc2VvLnJhdy5zbW9sLmpzb24iCiAgICAgIH0sCiAgICAgICJyb2xlIjogIlJlbGF5IiwKICAgICAgInJwYyI6IFsKICAgICAgICAid3NzOi8vcGFzZW8tcnBjLm4uZHdlbGxpci5jb20iLAogICAgICAgICJ3c3M6Ly9wYXNlby12Mi5ycGMudHVyYm9mbGFrZXMuaW8iLAogICAgICAgICJ3c3M6Ly9ycGMtcGFzZW8uc3Rha2V3b3JsZC5pbyIsCiAgICAgICAgIndzczovL3JwYy5pbnRlcndlYi1pdC5jb20vcGFzZW8iCiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgICJmdWxsU3BlYyI6IHsKICAgICAgICAic2hhMjU2IjogIjB4YzJkYmJlM2RhZGRmMzAyZTJjMTI2YThmZmJlMjY4OTdmNGM4ZDcwOTgyNjk3MDU1ZjlkM2M1NzYyNzQ0NjVmYiIsCiAgICAgICAgInVybCI6ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcGFyaXR5dGVjaC9jaGFpbnNwZWNzL2VkMGMwNjhhY2M4NWQ3MzE0MGQxYWE5MzcxNjlhNDg0MDQ3ZmMyNWYvcGFzZW8vcGFyYWNoYWluL2Fzc2V0LWh1Yi1uZXh0L3Jhdy5qc29uIgogICAgICB9LAogICAgICAiZ2VuZXNpc0hhc2giOiAiMHg0MzQ5YjAwZTU0ODk3ZTIxMTk2ZmQzMzEwMTVmYzViZTBmMTRlMTE4YmViMDM3NWVkMmJiMTc5MzczN2JiNTdhIiwKICAgICAgImxpZ2h0U3BlYyI6IHsKICAgICAgICAic2hhMjU2IjogIjB4MzY3NTFjZmU1NWU3MmUxZjlmNWM5Mzc2ZmFhMTY3YTgxODdiMjczN2E4MWE3Y2ExMDhhMjc5MTgyZGJjMzFjZCIsCiAgICAgICAgInVybCI6ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcGFyaXR5dGVjaC9jaGFpbnNwZWNzLzBkNjgzN2FiYTg2OTRmMjQ0N2M0ZDM1YzEyNDg0YWFjNzZmM2Q0N2IvcGFzZW8vcGFyYWNoYWluL2Fzc2V0LWh1Yi1uZXh0L2xpZ2h0Lmpzb24iCiAgICAgIH0sCiAgICAgICJwYXJhSWQiOiAxNTAwLAogICAgICAicm9sZSI6ICJBc3NldEh1YiIsCiAgICAgICJycGMiOiBbCiAgICAgICAgIndzczovL3Bhc2VvLWFzc2V0LWh1Yi1uZXh0LXJwYy5wb2xrYWRvdC5pbyIKICAgICAgXQogICAgfSwKICAgIHsKICAgICAgImZ1bGxTcGVjIjogewogICAgICAgICJzaGEyNTYiOiAiMHgxMTgxNDZkYWQ2Y2UzODNkMTUyMjJmYjcxZWI0MWE2YmZiYTk4YjZmN2M2OWIyM2ExYzJjZTM2YzRkNmJkMzc1IiwKICAgICAgICAidXJsIjogImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9wYXJpdHl0ZWNoL2NoYWluc3BlY3MvZWQwYzA2OGFjYzg1ZDczMTQwZDFhYTkzNzE2OWE0ODQwNDdmYzI1Zi9wYXNlby9wYXJhY2hhaW4vcGVvcGxlLW5leHQtc3lzdGVtL3Jhdy5qc29uIgogICAgICB9LAogICAgICAiZ2VuZXNpc0hhc2giOiAiMHg0YTJiNWI3MzdkZTFkYTU5ZTIwOWIwMDAwYTg3NmVjMmZhMjAwMzVkYzM0ZmQyOTJhODQ4ZGEzMmQyNTVhZDQ4IiwKICAgICAgImxpZ2h0U3BlYyI6IHsKICAgICAgICAic2hhMjU2IjogIjB4MTQ2ZDg2YzVjNGZkZjY3OWE4YTQ4Y2FlNmNmYTAyNTY1NGMzMmU4ZWQyMGFjMzkxOGY2YzdiOGExOGE5MTEzYiIsCiAgICAgICAgInVybCI6ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcGFyaXR5dGVjaC9jaGFpbnNwZWNzLzBkNjgzN2FiYTg2OTRmMjQ0N2M0ZDM1YzEyNDg0YWFjNzZmM2Q0N2IvcGFzZW8vcGFyYWNoYWluL3Blb3BsZS1uZXh0LXN5c3RlbS9saWdodC5qc29uIgogICAgICB9LAogICAgICAicGFyYUlkIjogMTUwMiwKICAgICAgInJvbGUiOiAiUGVvcGxlIiwKICAgICAgInJwYyI6IFsKICAgICAgICAid3NzOi8vcGFzZW8tcGVvcGxlLW5leHQtc3lzdGVtLXJwYy5wb2xrYWRvdC5pbyIKICAgICAgXSwKICAgICAgInN0YXRlbWVudFN0b3JlIjogdHJ1ZQogICAgfSwKICAgIHsKICAgICAgImZ1bGxTcGVjIjogewogICAgICAgICJzaGEyNTYiOiAiMHhjZDBiNDI1ZTY1Y2Y0M2MwM2E3ZTZlZTlhMjllNDBjZDFiYThhMTA2YWE5ZTUyYWRmMTBhNTIxNGYwYzU5YWY3IiwKICAgICAgICAidXJsIjogImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9wYXJpdHl0ZWNoL2NoYWluc3BlY3MvODlkODk4MmIzNzNiODY5MjBlMDI3OGYwMDYwZmEwNWZkNmU4ZjM0NC9wYXNlby9wYXJhY2hhaW4vYnVsbGV0aW4tbmV4dC9yYXcuanNvbiIKICAgICAgfSwKICAgICAgImdlbmVzaXNIYXNoIjogIjB4OGNmZTY3MTdkYzRiZWNmZGEyZTEzYzQ4OGExZTIwNjFmZjJkZmVlOTZlN2QwMzExNTdmNzJkMzY3MTZjMGEyMiIsCiAgICAgICJsaWdodFNwZWMiOiB7CiAgICAgICAgInNoYTI1NiI6ICIweDAwYWMwMzY2N2M0NGZiMjY2NThjN2M4ZTYxZTlhNWI5ZWYxNDVkNTEzZTY0ZjkyOTA0Mjc5YzBjZDQwNjJjOWQiLAogICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Bhcml0eXRlY2gvY2hhaW5zcGVjcy8wZDY4MzdhYmE4Njk0ZjI0NDdjNGQzNWMxMjQ4NGFhYzc2ZjNkNDdiL3Bhc2VvL3BhcmFjaGFpbi9idWxsZXRpbi1uZXh0L2xpZ2h0Lmpzb24iCiAgICAgIH0sCiAgICAgICJwYXJhSWQiOiAxNTAxLAogICAgICAicm9sZSI6ICJCdWxsZXRpbiIsCiAgICAgICJycGMiOiBbCiAgICAgICAgIndzczovL3Bhc2VvLWJ1bGxldGluLW5leHQtcnBjLnBvbGthZG90LmlvIgogICAgICBdCiAgICB9CiAgXSwKICAiY29pbmFnZSI6IHsKICAgICJjaGFpbiI6ICJQZW9wbGUiLAogICAgImluc3RhbmNlIjogMAogIH0sCiAgImRvdG5zIjogewogICAgImNvbnRlbnRSZXNvbHZlciI6ICIweDdmNzRkN2NkNTBmNWE4MzQyNzBlMmFkMzk1YTAxYjAxODkxYWIzN2QiLAogICAgImNvbnRyb2xsZXIiOiAiMHhiZGFhMDFiZDFiYTY3ZDcwOWYyYjFmZjI4NmRhMGQ4NTQ5NzdlYTMwIiwKICAgICJjb3N0TW9kZWwiOiAiMHg4YmZkMWYwOTU3ZTczNzE2NzMyZTcyNTgwMmYxMzgzMGI1NjgyZGE0IiwKICAgICJjcmVhdGUzRmFjdG9yeSI6ICIweDg1MzNjNzllMDU4YzVhNjQ4OWNhZmVjYTg2ZGM2MDBlMDI5ZDc1ZjUiLAogICAgIm11bHRpY2FsbDMiOiAiMHhiNDQ2ODAwMGFiZDg3ZDNjNTZjYmZiZDE1MzE2MTIyM2Q3YjEwOWU1IiwKICAgICJuYW1lRXNjcm93IjogIjB4NDg4MWFmYjc4ZTdjOTA4Y2FlODE4MTY4YjkyNjIyOWQ5MzM3NjUyMCIsCiAgICAibmFtZVdoaXRlbGlzdCI6ICIweDQyMDE2NmNkNjdjYTAyMzMwOTRlNDkyYTRiYmE2NzA0NWVkN2MzOGMiLAogICAgInBvcENvbnRyb2xsZXIiOiAiMHhjYzkzMjM0ODYwNmNjMWYzMzE4Y2FkZWM1YTVjZDJjYTQ0N2Y4YTRiIiwKICAgICJwb3BHYXRld2F5IjogIjB4YTg4OWNjYTNmYjRiMDdiOThhMTFjYzU0YzEwZjEzZGRhMjBiYzNkYiIsCiAgICAicG9wTGVucyI6ICIweDMwOWM1ZmYyMWY5MDgyYTUzMjExNTAwYzZmMzNjYTJhMjEwMjRhZTQiLAogICAgInBvcFJlc29sdmVyIjogIjB4ZGFjOTg0ODg0ZWNhOGZjNDQwMTFmMWQ2YzQ5YjI3ODI4MzkwYTcyYiIsCiAgICAicG9wUnVsZXMiOiAiMHg3NDdiNDU2YmUwM2FlYzBiNDJiZDg1YzUxNTEzNzMwZmJkNDVkYTMxIiwKICAgICJwcm90b2NvbFJlZ2lzdHJ5IjogIjB4ZDE5ZTNkMGM5N2NmNTAxMTI1YTA0YTk3NDA1ZTNlNjU5MmZhODQ2ZSIsCiAgICAicmVnaXN0cmFyIjogIjB4NGYwNmU4MThiYTNkOTg3NzA0ZmQ5MWNmM2Q4NjhlNGIwMTkxMDZhYiIsCiAgICAicmVnaXN0cnkiOiAiMHhmMzQwNTRmZDc2YmJmODVmMjE2Y2Y5OTA4MjI2ZDVmMGE3MmU1MGNhIiwKICAgICJyZXNvbHZlciI6ICIweGJkMTE2NWU1NDlkZjk2ZjA4M2MwYTE2ZjYxNTkwOTI3YmMxODcwMDkiLAogICAgInJldmVyc2VSZXNvbHZlciI6ICIweGVlMzg4M2Q3ZWI2MGVlOWJjZDdmM2JjZDhmMmYwNTMwMmE5Y2MwMzUiLAogICAgInN0b3JlRmFjdG9yeSI6ICIweDk5NjA1YTkyNmZjYjQwYWI1MjBmNjU5YzY1MDVlNWZmODYyNzcxZjYiCiAgfSwKICAiZ2VuZXJhdGlvbiI6ICIweDZlYmJjYzgxMTYwZDdkZjI3NTMyYThiNmFkYWE0MmMwZGFjNDMyZWFjNjExYjIwZGZhM2YwMmQ5ZTA4NjhlMWMiLAogICJpZCI6ICJwYXNlby1uZXh0LXYyIiwKICAibmFtZSI6ICJQYXNlbyBOZXh0IHYyIiwKICAibmV0d29yayI6ICJwYXNlbyIsCiAgInNlcXVlbmNlIjogMTc5MzYxNTI4NywKICAic2VydmljZXMiOiBbCiAgICB7CiAgICAgICJraW5kIjogImR1YiIsCiAgICAgICJ1cmxzIjogWwogICAgICAgICJodHRwczovL2lkZW50aXR5LmRvdHNwYXJrLmFwcC8iCiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgICJraW5kIjogInR1cm4iLAogICAgICAidXJscyI6IFsKICAgICAgICAiaHR0cHM6Ly9pZGVudGl0eS5kb3RzcGFyay5hcHAvIgogICAgICBdCiAgICB9LAogICAgewogICAgICAia2luZCI6ICJzdHVuIiwKICAgICAgInVybHMiOiBbCiAgICAgICAgInN0dW46c3R1bi5jbG91ZGZsYXJlLmNvbTozNDc4IiwKICAgICAgICAic3R1bjpzdHVuLmNsb3VkZmxhcmUuY29tOjQ0MyIKICAgICAgXQogICAgfSwKICAgIHsKICAgICAgImtpbmQiOiAiaXBmcy1nYXRld2F5IiwKICAgICAgInVybHMiOiBbCiAgICAgICAgImh0dHBzOi8vcGFzZW8tYnVsbGV0aW4tbmV4dC1pcGZzLnBvbGthZG90LmlvL2lwZnMvIgogICAgICBdCiAgICB9LAogICAgewogICAgICAia2luZCI6ICJob3AiLAogICAgICAidXJscyI6IFsKICAgICAgICAid3NzOi8vcGFzZW8taG9wLW5leHQtMC5wb2xrYWRvdC5pbyIsCiAgICAgICAgIndzczovL3Bhc2VvLWhvcC1uZXh0LTEucG9sa2Fkb3QuaW8iCiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgICJjaGFpbklkIjogNDIwNDIwNDE3LAogICAgICAia2luZCI6ICJldGgtcnBjIiwKICAgICAgInVybHMiOiBbCiAgICAgICAgImh0dHBzOi8vZXRoLXJwYy1wYXNlby1uZXh0LnBvbGthZG90LmlvIgogICAgICBdCiAgICB9LAogICAgewogICAgICAia2luZCI6ICJ3ZWItZ2F0ZXdheSIsCiAgICAgICJ1cmxzIjogWwogICAgICAgICJodHRwczovL3Bhc2VvLmxpLyIKICAgICAgXQogICAgfSwKICAgIHsKICAgICAgImtpbmQiOiAiZXZtLWV4cGxvcmVyIiwKICAgICAgInVybHMiOiBbCiAgICAgICAgImh0dHBzOi8vYmxvY2tzY291dC1wYXNlby1uZXh0LnBvbGthZG90LmlvLyIKICAgICAgXQogICAgfQogIF0sCiAgInRsZCI6ICJwYXNlbyIKfQo=\",\"signature\":\"0x85d877075908dc4059c48561a604e67e8883566ba929b40e1cf93e20a6d99cd5435fb674dd65c1fb30ede47ea156050fe3cce9ba9bc8a3edb775995903600401\"}"; readonly pointer: "polkadotapp://stack?key=0x2b89d8ca74aa2e11ab55f5af1168cd6929b88d1998aecd979b42cfc1078d5377&url=https%3A%2F%2Fstack-paseo-next.parity-testnet.parity.io%2F.well-known%2Ftrinity-stack.json" } } } = ...
Last updated on