@qorechain/sdk 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -549,6 +549,31 @@ interface BroadcastResult {
549
549
  gasWanted?: bigint;
550
550
  /** Raw ABCI log, when present. */
551
551
  rawLog?: string;
552
+ /**
553
+ * The ABCI events emitted by the tx (only for `commit`).
554
+ *
555
+ * Helpers that read typed attributes out of a delivery — e.g. the cross-VM
556
+ * client's message-id extraction — read them from here.
557
+ */
558
+ events?: ReadonlyArray<{
559
+ type: string;
560
+ attributes: ReadonlyArray<{
561
+ key: string;
562
+ value: string;
563
+ }>;
564
+ }>;
565
+ /**
566
+ * The protobuf-encoded `Msg*Response` for each message in the tx, in order
567
+ * (only for `commit`).
568
+ *
569
+ * Each entry is the response's `typeUrl` plus its encoded bytes, so a caller
570
+ * can decode the typed response — e.g. `MsgCrossVMCallResponse` to read a
571
+ * cross-VM callee's return value — without a second round-trip.
572
+ */
573
+ msgResponses?: ReadonlyArray<{
574
+ typeUrl: string;
575
+ value: Uint8Array;
576
+ }>;
552
577
  }
553
578
 
554
579
  /**
@@ -1555,11 +1580,29 @@ declare function generatePqcKeypair(seed?: Uint8Array): PqcKeypair;
1555
1580
  * `(secretKey, message)` always yields the same signature. The chain's PQC
1556
1581
  * verifier accepts ONLY deterministic signatures, so do not pass
1557
1582
  * `{ hedged: true }` for anything that goes on-chain.
1583
+ *
1584
+ * The secret key length is checked explicitly before the library is called (see
1585
+ * {@link pqcVerify} for why the bindings validate sizes themselves).
1586
+ *
1587
+ * @throws if `secretKey` is not exactly {@link ML_DSA_87_SECRET_KEY_LENGTH} bytes.
1558
1588
  */
1559
1589
  declare function pqcSign(secretKey: Uint8Array, message: Uint8Array, opts?: {
1560
1590
  hedged?: boolean;
1561
1591
  }): Uint8Array;
1562
- /** Verify an ML-DSA-87 (Dilithium-5) signature over a message. */
1592
+ /**
1593
+ * Verify an ML-DSA-87 (Dilithium-5) signature over a message.
1594
+ *
1595
+ * STRICT SIZES. The public key and signature must be EXACTLY
1596
+ * {@link ML_DSA_87_PUBLIC_KEY_LENGTH} and {@link ML_DSA_87_SIGNATURE_LENGTH}
1597
+ * bytes; anything else returns `false` without reaching the library. This is
1598
+ * enforced here, not left to the underlying implementation, because ML-DSA
1599
+ * libraries disagree about trailing garbage: some accept a signature with extra
1600
+ * bytes appended as valid while others reject it. A signature that one official
1601
+ * binding accepts and another rejects is a consensus hazard, so every QoreChain
1602
+ * binding applies the same exact-length rule before verifying.
1603
+ *
1604
+ * @returns `false` for a malformed input, exactly as for a bad signature.
1605
+ */
1563
1606
  declare function pqcVerify(publicKey: Uint8Array, message: Uint8Array, signature: Uint8Array): boolean;
1564
1607
  /**
1565
1608
  * The on-chain `PQCHybridSignature` TX extension, as a plain object whose keys
@@ -1751,49 +1794,52 @@ declare function deriveUnifiedAccount(mnemonic: string, index?: number): Promise
1751
1794
  * Same address derivation as {@link deriveUnifiedAccount}; the PQC key is derived
1752
1795
  * from `shake256("qorechain:pqc:v1|" + cosmos + "|seed:" + hex(seed32), 32)` (note
1753
1796
  * the literal `"seed:"` prefix, so a seed-derived PQC key never collides with a
1754
- * mnemonic-derived one). Use this for accounts anchored to a signature or an
1755
- * externally supplied secret (see the Phantom P1a helper).
1756
- *
1757
- * @param seed32 - Exactly 32 bytes, used directly as the secp256k1 private key.
1797
+ * mnemonic-derived one).
1798
+ *
1799
+ * SAFETY: `seed32` becomes the account's spend key, so it MUST be real secret
1800
+ * entropy a CSPRNG seed (`crypto.getRandomValues`) or a key derived from a
1801
+ * BIP-39 mnemonic. NEVER derive it from a wallet signature, or from any other
1802
+ * value a third party can ask the wallet (or the user) to produce: such a value
1803
+ * is a bearer secret, and whoever obtains it controls the account. To let an
1804
+ * external wallet key act for an account, use the authenticator lanes
1805
+ * (`MsgRegisterAuthenticator` + `MsgExecuteCosmos` / `MsgExecuteEVM`) instead.
1806
+ *
1807
+ * @param seed32 - Exactly 32 bytes of secret entropy, used directly as the
1808
+ * secp256k1 private key.
1758
1809
  * @throws if `seed32` is not 32 bytes or is not a valid secp256k1 scalar.
1759
1810
  */
1760
1811
  declare function unifiedAccountFromSeed(seed32: Uint8Array): UnifiedAccount;
1761
1812
 
1762
1813
  /**
1763
- * Phantom P1aderive a unified QoreChain account from a Phantom signature.
1814
+ * REMOVED in v0.8.0 the Phantom signature-derived account API.
1764
1815
  *
1765
- * A user can bootstrap ONE canonical QoreChain identity (native / EVM / SVM, one
1766
- * balance) from their Phantom wallet WITHOUT exporting any key: they sign a fixed,
1767
- * domain-separated message with Phantom's ed25519 key, and the 32-byte SHAKE-256
1768
- * of that signature seeds a unified eth-native secp256k1 account
1769
- * ({@link ../accounts/unified.unifiedAccountFromSeed}).
1770
- *
1771
- * This is NON-CUSTODIAL and produces a SEPARATE canonical key from the Phantom
1772
- * ed25519 key Phantom never sees the derived secp256k1/PQC secrets, and the
1773
- * derived account is a distinct on-chain identity, not the Phantom address. As
1774
- * long as the same Phantom key signs the same fixed message, the same QoreChain
1775
- * account is reproduced deterministically.
1816
+ * This module used to turn a wallet signature into a spend key. That is unsafe:
1817
+ * a wallet signature is a bearer secret that any page can ask the wallet to
1818
+ * produce, so it cannot stand in for secret entropy, and anyone who obtains it
1819
+ * controls the resulting account. The exported functions remain so existing
1820
+ * imports fail loudly with an explanation instead of silently changing meaning;
1821
+ * both throw as soon as they are called. Link an external wallet key through the
1822
+ * authenticator lanes instead register it with `MsgRegisterAuthenticator` and
1823
+ * spend via `MsgExecuteCosmos` / `MsgExecuteEVM`, which keeps the canonical
1824
+ * account's own key the only thing that can move funds. See the Authenticators
1825
+ * guide (`docs/docs/guides/authenticators.md`). Any account previously derived
1826
+ * through this API must be treated as exposed — move its funds.
1776
1827
  */
1777
1828
 
1778
1829
  /**
1779
- * The fixed domain-separation prefix signed by Phantom. The full signed message
1780
- * is this line, a newline, and the signer's base58 public key — binding the
1781
- * derivation to the specific Phantom key.
1782
- */
1783
- declare const PHANTOM_DERIVATION_DOMAIN = "QoreChain unified account derivation v1";
1784
- /**
1785
- * Derive a unified QoreChain account from a raw Phantom (ed25519) signature.
1830
+ * REMOVED in v0.8.0. Always throws.
1786
1831
  *
1787
- * The account seed is `shake256(signatureBytes, 32)`, used directly as the
1788
- * eth-native secp256k1 private key. Deterministic: the same signature always
1789
- * yields the same account.
1832
+ * Use the authenticator lanes instead see the module doc-comment and the
1833
+ * Authenticators guide.
1790
1834
  *
1791
- * @param signatureBytes - The raw ed25519 signature bytes returned by the wallet.
1835
+ * @throws always.
1792
1836
  */
1793
1837
  declare function unifiedAccountFromPhantomSignature(signatureBytes: Uint8Array): UnifiedAccount;
1794
1838
  /**
1795
- * The minimal shape of an injected Phantom-style provider used here: `connect`
1796
- * to obtain the public key and `signMessage` to sign the derivation message.
1839
+ * The minimal shape of an injected Phantom-style provider this module once used.
1840
+ *
1841
+ * Retained only so the removed {@link connectPhantomUnified} signature still
1842
+ * type-checks for existing callers; nothing here is called any more.
1797
1843
  */
1798
1844
  interface PhantomProvider {
1799
1845
  connect(): Promise<{
@@ -1808,26 +1854,18 @@ interface PhantomProvider {
1808
1854
  signature: Uint8Array;
1809
1855
  } | Uint8Array>;
1810
1856
  }
1811
- /** Options for {@link connectPhantomUnified}. */
1857
+ /** Options for the removed {@link connectPhantomUnified}. */
1812
1858
  interface ConnectPhantomUnifiedOptions {
1813
- /**
1814
- * The Phantom-style provider. Defaults to `window.solana` in a browser. Pass an
1815
- * explicit provider in tests or non-`window.solana` environments.
1816
- */
1859
+ /** The Phantom-style provider. Unused: the function always throws. */
1817
1860
  provider?: PhantomProvider;
1818
1861
  }
1819
1862
  /**
1820
- * Connect Phantom in the browser and derive the user's unified QoreChain account.
1863
+ * REMOVED in v0.8.0. Always throws.
1821
1864
  *
1822
- * Flow: `connect()` sign the fixed domain-separated message
1823
- * `"QoreChain unified account derivation v1\n<phantom-pubkey-base58>"` → derive the
1824
- * unified account from the signature via
1825
- * {@link unifiedAccountFromPhantomSignature}.
1865
+ * Use the authenticator lanes instead — see the module doc-comment and the
1866
+ * Authenticators guide.
1826
1867
  *
1827
- * NON-CUSTODIAL: the returned account is a separate canonical key from the Phantom
1828
- * ed25519 key; Phantom never handles the derived secp256k1/PQC secrets.
1829
- *
1830
- * @throws if no provider is available or the wallet returns no public key.
1868
+ * @throws always.
1831
1869
  */
1832
1870
  declare function connectPhantomUnified(opts?: ConnectPhantomUnifiedOptions): Promise<UnifiedAccount>;
1833
1871
 
@@ -2493,6 +2531,161 @@ declare function encodeHybridExtension(ext: PQCHybridSignature$1): Any;
2493
2531
  */
2494
2532
  declare function attachHybridExtension(body: TxBody, ext: PQCHybridSignature$1, opts?: AttachHybridOptions): TxBody;
2495
2533
 
2534
+ /**
2535
+ * Sign-bytes for the payloads a QoreChain key signs outside SIGN_MODE_DIRECT:
2536
+ * the post-quantum half of a hybrid transaction, a PQC key migration, and a
2537
+ * bridge attestation. Each exists in two forms, and a network verifies exactly
2538
+ * ONE of them at any height — there is no overlap window.
2539
+ *
2540
+ * ──────────────────────────────────────────────────────────────────────────
2541
+ * Which form to sign
2542
+ * ──────────────────────────────────────────────────────────────────────────
2543
+ * Chain release v3.1.98 introduced the v2 forms, which bind a domain tag and
2544
+ * the chain id. Networks that existed before it (`qorechain-vladi`,
2545
+ * `qorechain-diana`) verify v1 until the `v3.1.98` upgrade plan is applied on
2546
+ * that network, and v2 from then on. Any other chain verifies v2 from its first
2547
+ * block. The testnet and mainnet switch at different heights, so a client must
2548
+ * ask the target network rather than hardcode either form:
2549
+ *
2550
+ * GET {rest}/cosmos/upgrade/v1beta1/applied_plan/v3.1.98 -> {"height":"<n>"}
2551
+ * v2 iff n > 0, or the chain is not one of the legacy networks.
2552
+ *
2553
+ * The height is an int64 and crosses the REST gateway as a STRING; a network
2554
+ * that has not upgraded answers `{"height":"0"}` (or `{}` on older nodes), so
2555
+ * the decision is numeric, never a presence check.
2556
+ *
2557
+ * {@link resolveSignBytesVersion} does this with a short cache;
2558
+ * {@link signBytesVersionFor} is the pure rule for callers that already know
2559
+ * the applied height.
2560
+ */
2561
+
2562
+ /** A concrete sign-bytes form. */
2563
+ type SignBytesVersion = "v1" | "v2";
2564
+ /** A form, or `"auto"` to ask the target network. */
2565
+ type SignBytesVersionOption = SignBytesVersion | "auto";
2566
+ /** The upgrade plan whose application switches a legacy network to v2. */
2567
+ declare const SIGN_BYTES_V2_UPGRADE = "v3.1.98";
2568
+ /** Networks that ran before v2 existed and switch only at {@link SIGN_BYTES_V2_UPGRADE}. */
2569
+ declare const LEGACY_SIGN_BYTES_CHAINS: readonly string[];
2570
+ /** Domain tag of the v2 hybrid PQC sign-bytes. */
2571
+ declare const HYBRID_SIGN_BYTES_V2_DOMAIN = "qorechain-pqc-hybrid-v2";
2572
+ /** Domain tag of the v2 PQC key-migration sign-bytes. */
2573
+ declare const MIGRATION_SIGN_BYTES_V2_DOMAIN = "qorechain-key-migration-v2";
2574
+ /** Domain tag of the v2 bridge attestation sign-bytes. */
2575
+ declare const BRIDGE_ATTESTATION_V2_DOMAIN = "qorechain-bridge-attestation-v2";
2576
+ /** v1 hybrid form: `BE32(len B0) ‖ B0 ‖ BE32(len A) ‖ A`. */
2577
+ declare function hybridSignBytesV1(b0: Uint8Array, authInfo: Uint8Array): Uint8Array;
2578
+ /**
2579
+ * v2 hybrid form:
2580
+ * `"qorechain-pqc-hybrid-v2" ‖ BE64(len chainId) ‖ chainId ‖ BE32(len B0) ‖ B0 ‖ BE32(len A) ‖ A`.
2581
+ */
2582
+ declare function hybridSignBytesV2(chainId: string, b0: Uint8Array, authInfo: Uint8Array): Uint8Array;
2583
+ /**
2584
+ * The message the ML-DSA key signs for a hybrid transaction, in the given form.
2585
+ * `B0` is the `TxBody` WITHOUT the PQC extension; `authInfo` is the AuthInfo
2586
+ * bytes verbatim.
2587
+ */
2588
+ declare function hybridSignBytes(version: SignBytesVersion, chainId: string, b0: Uint8Array, authInfo: Uint8Array): Uint8Array;
2589
+ /** Inputs of the key-migration sign-bytes (both keys sign the same bytes). */
2590
+ interface MigrationSignBytesInput {
2591
+ chainId: string;
2592
+ /** The migrating account's `qor1…` address. */
2593
+ account: string;
2594
+ fromAlgorithmId: number;
2595
+ toAlgorithmId: number;
2596
+ /** The height the migration executes at. */
2597
+ height: number | bigint;
2598
+ /** The current public key (v2 only). */
2599
+ oldPublicKey: Uint8Array;
2600
+ /** The destination public key (v2 only). */
2601
+ newPublicKey: Uint8Array;
2602
+ }
2603
+ /**
2604
+ * v1 key-migration form (ASCII):
2605
+ * `qorechain-key-migration:chain=<chainId>:from=<from>:to=<to>:account=<account>:height=<height>`.
2606
+ */
2607
+ declare function migrationSignBytesV1(input: Omit<MigrationSignBytesInput, "oldPublicKey" | "newPublicKey">): Uint8Array;
2608
+ /**
2609
+ * v2 key-migration form:
2610
+ * `"qorechain-key-migration-v2" ‖ BE64(len chainId) ‖ chainId ‖ BE64(len account) ‖ account ‖
2611
+ * BE32(from) ‖ BE32(to) ‖ BE64(height) ‖ BE32(len oldPub) ‖ oldPub ‖ BE32(len newPub) ‖ newPub`.
2612
+ */
2613
+ declare function migrationSignBytesV2(input: MigrationSignBytesInput): Uint8Array;
2614
+ /** The key-migration sign-bytes in the given form. */
2615
+ declare function migrationSignBytes(version: SignBytesVersion, input: MigrationSignBytesInput): Uint8Array;
2616
+ /** Inputs of a bridge attestation payload (validator signers only). */
2617
+ interface BridgeAttestationSignBytesInput {
2618
+ chainId: string;
2619
+ chain: string;
2620
+ eventType: string;
2621
+ operationId: string;
2622
+ txHash: string;
2623
+ /** The amount as the chain prints it (`math.Int.String()`). */
2624
+ amount: string;
2625
+ asset: string;
2626
+ }
2627
+ /** v1 attestation form (ASCII, no chain id): `chain|eventType|operationId|txHash|amount|asset`. */
2628
+ declare function bridgeAttestationSignBytesV1(input: Omit<BridgeAttestationSignBytesInput, "chainId">): Uint8Array;
2629
+ /**
2630
+ * v2 attestation form: `"qorechain-bridge-attestation-v2"` then, for each of
2631
+ * `[chainId, chain, eventType, operationId, txHash, amount, asset]`, `BE64(len f) ‖ f`.
2632
+ */
2633
+ declare function bridgeAttestationSignBytesV2(input: BridgeAttestationSignBytesInput): Uint8Array;
2634
+ /** The bridge attestation sign-bytes in the given form. */
2635
+ declare function bridgeAttestationSignBytes(version: SignBytesVersion, input: BridgeAttestationSignBytesInput): Uint8Array;
2636
+ /** True when `chainId` is a network that verifies v1 until its v3.1.98 upgrade. */
2637
+ declare function isLegacySignBytesChain(chainId: string): boolean;
2638
+ /**
2639
+ * The form a network verifies, given the height at which the v3.1.98 plan was
2640
+ * applied on it (0 when it has not been). Client-side mirror of the chain's
2641
+ * own switch.
2642
+ */
2643
+ declare function signBytesVersionFor(chainId: string, v2AppliedHeight: number | bigint): SignBytesVersion;
2644
+ /**
2645
+ * Ask a node at which height the v3.1.98 plan was applied (0 when not).
2646
+ * @throws on a transport or parse failure — the caller must not guess.
2647
+ */
2648
+ declare function fetchSignBytesV2AppliedHeight(rest: string, fetchImpl?: FetchLike): Promise<bigint>;
2649
+ /** Options for {@link resolveSignBytesVersion}. */
2650
+ interface ResolveSignBytesVersionOptions {
2651
+ chainId: string;
2652
+ /** The network's REST (LCD) base URL. Required for `"auto"` on a legacy network. */
2653
+ rest?: string;
2654
+ /** `"auto"` (default) asks the network; `"v1"`/`"v2"` are returned as-is. */
2655
+ signBytesVersion?: SignBytesVersionOption;
2656
+ /** Injectable `fetch`. Defaults to `globalThis.fetch`. */
2657
+ fetch?: FetchLike;
2658
+ /** How long an answer is reused, in ms. Defaults to 60000. */
2659
+ ttlMs?: number;
2660
+ /** Bypass the cache (e.g. after a `pqc` code 21 refusal). */
2661
+ forceRefresh?: boolean;
2662
+ }
2663
+ /** Forget every cached answer. */
2664
+ declare function clearSignBytesCache(): void;
2665
+ /**
2666
+ * The form to sign for a network right now.
2667
+ *
2668
+ * - `"v1"` / `"v2"`: returned unchanged, no network call.
2669
+ * - `"auto"` on a chain that is not a legacy network: `"v2"`, no network call.
2670
+ * - `"auto"` on `qorechain-vladi` / `qorechain-diana`: asks `rest` whether the
2671
+ * v3.1.98 plan is applied; the answer is cached per (rest, chainId) for
2672
+ * `ttlMs` because a network can upgrade while a wallet stays open.
2673
+ *
2674
+ * @throws when a legacy network has no `rest`, or the query fails. Pass an
2675
+ * explicit `"v1"`/`"v2"` in that case — a wrong guess is refused on-chain.
2676
+ */
2677
+ declare function resolveSignBytesVersion(opts: ResolveSignBytesVersionOptions): Promise<SignBytesVersion>;
2678
+ /** The chain's message for a hybrid signature that does not verify (`pqc` code 21). */
2679
+ declare const HYBRID_SIGN_BYTES_REJECTION_LOG = "hybrid PQC signature verification failed";
2680
+ /**
2681
+ * True when a broadcast failure is the chain refusing the hybrid PQC signature
2682
+ * (`pqc` code 21) — the symptom of signing the wrong sign-bytes form. Accepts a
2683
+ * thrown cosmjs `BroadcastTxError` (`code`, `codespace`, `log`), a
2684
+ * `DeliverTxResponse`-like result (`code`, `rawLog`), or a plain `Error`.
2685
+ * Code 21 from any other codespace does NOT match.
2686
+ */
2687
+ declare function isHybridSignBytesRejection(x: unknown): boolean;
2688
+
2496
2689
  /**
2497
2690
  * End-to-end hybrid (classical + post-quantum) transaction signing for
2498
2691
  * QoreChain.
@@ -2513,8 +2706,14 @@ declare function attachHybridExtension(body: TxBody, ext: PQCHybridSignature$1,
2513
2706
  * messages/memo/timeoutHeight but NOT the `PQCHybridSignature` extension.
2514
2707
  * - `A` = the tx `authInfoBytes`, verbatim — the same bytes that are
2515
2708
  * broadcast.
2516
- * - PQC signed message = `BE32(len(B0)) || B0 || BE32(len(A)) || A`
2517
- * (4-byte big-endian length prefixes; NO hashing, NO domain prefix).
2709
+ * - PQC signed message = the hybrid sign-bytes in the form the TARGET network
2710
+ * verifies (see ./signbytes):
2711
+ * v1: `BE32(len(B0)) || B0 || BE32(len(A)) || A`
2712
+ * v2: `"qorechain-pqc-hybrid-v2" || BE64(len chainId) || chainId || v1-body`
2713
+ * A network verifies exactly one form at any height. `qorechain-vladi` and
2714
+ * `qorechain-diana` switch from v1 to v2 when their v3.1.98 upgrade is
2715
+ * applied (at different heights); other chains are v2 from genesis. The
2716
+ * default `signBytesVersion: "auto"` asks the network (needs `rest`).
2518
2717
  * - PQC signature = `ml_dsa87.sign(pqcSecretKey, message)` (pure
2519
2718
  * ML-DSA-87, empty context) — 4627 bytes for Dilithium-5.
2520
2719
  * - The `PQCHybridSignature` extension is then added to
@@ -2577,6 +2776,19 @@ interface BuildHybridTxOptions {
2577
2776
  * is expected to already be registered via `MsgRegisterPQCKey`).
2578
2777
  */
2579
2778
  includePqcPublicKey?: boolean;
2779
+ /**
2780
+ * Which hybrid sign-bytes form to sign. `"auto"` (default) asks the network
2781
+ * via `rest` (see {@link resolveSignBytesVersion}); `"v1"` / `"v2"` force a
2782
+ * form. On `qorechain-vladi` / `qorechain-diana`, `"auto"` without `rest`
2783
+ * throws rather than guess.
2784
+ */
2785
+ signBytesVersion?: SignBytesVersionOption;
2786
+ /** The network's REST (LCD) base URL, used by `signBytesVersion: "auto"`. */
2787
+ rest?: string;
2788
+ /** Injectable `fetch` for the `"auto"` lookup. Defaults to `globalThis.fetch`. */
2789
+ fetch?: FetchLike;
2790
+ /** Bypass the cached `"auto"` answer. */
2791
+ forceRefreshSignBytesVersion?: boolean;
2580
2792
  }
2581
2793
  /** The fully assembled hybrid transaction and the intermediate artifacts. */
2582
2794
  interface BuiltHybridTx {
@@ -2590,6 +2802,8 @@ interface BuiltHybridTx {
2590
2802
  pqcSignedMessage: Uint8Array;
2591
2803
  /** The raw ML-DSA-87 signature (Dilithium-5: 4627 bytes). */
2592
2804
  pqcSignature: Uint8Array;
2805
+ /** The sign-bytes form the PQC signature was computed over. */
2806
+ signBytesVersion: SignBytesVersion;
2593
2807
  }
2594
2808
  /**
2595
2809
  * Build a fully signed hybrid transaction following the chain contract.
@@ -2666,8 +2880,8 @@ declare function signAndBroadcastHybrid(opts: SignAndBroadcastHybridOptions): Pr
2666
2880
  * only for the one-time, bootstrap-exempt `MsgRegisterPQCKeyV2`).
2667
2881
  *
2668
2882
  * The hybrid PQC framing/extension reuse the SDK's existing, live-testnet-verified
2669
- * helpers ({@link ../tx/hybrid.encodeHybridExtension}, the `BE32(len)`-prefixed
2670
- * frame, and {@link ../accounts/pqc.buildHybridSignatureExtension}); only the
2883
+ * helpers ({@link ../tx/hybrid.encodeHybridExtension}, the per-network hybrid
2884
+ * sign-bytes ({@link ./signbytes.hybridSignBytes}), and {@link ../accounts/pqc.buildHybridSignatureExtension}); only the
2671
2885
  * classical hash (keccak vs sha256) and the pubkey type URL change here.
2672
2886
  */
2673
2887
 
@@ -2710,6 +2924,13 @@ interface EthSignParams {
2710
2924
  * `value` is already a `Uint8Array`) are accepted.
2711
2925
  */
2712
2926
  encodeMessage?: (m: EncodeObject) => Any;
2927
+ /**
2928
+ * The hybrid sign-bytes form (hybrid signing only). Resolve it with
2929
+ * {@link resolveSignBytesVersion} for the target network. When omitted, a
2930
+ * chain born on v2 gets `"v2"`; on `qorechain-vladi` / `qorechain-diana`
2931
+ * (which switch at their own upgrade heights) omitting it throws.
2932
+ */
2933
+ signBytesVersion?: SignBytesVersion;
2713
2934
  }
2714
2935
  /** The result of an eth-native sign: the broadcastable `TxRaw` and artifacts. */
2715
2936
  interface SignedEthTx {
@@ -2736,7 +2957,8 @@ declare function signClassicalEth(params: EthSignParams): SignedEthTx;
2736
2957
  * Sign a native tx with the eth_secp256k1 + ML-DSA-87 HYBRID scheme.
2737
2958
  *
2738
2959
  * The chain verifies the PQC signature over the tx body WITHOUT the PQC extension
2739
- * (`B0`), framed with `authInfoBytes`: `BE32(len B0) || B0 || BE32(len A) || A`.
2960
+ * (`B0`) and `authInfoBytes`, in the hybrid sign-bytes form the network verifies
2961
+ * (`params.signBytesVersion`, see ./signbytes).
2740
2962
  * The classical signature then covers the FINAL body (with the extension) via
2741
2963
  * SIGN_MODE_DIRECT (keccak256 hash). This mirrors the SDK's existing hybrid path
2742
2964
  * ({@link ../tx/hybrid-tx.buildHybridTx}); only the classical hash and the pubkey
@@ -2795,6 +3017,15 @@ interface EthNativeSignerOptions {
2795
3017
  * `MsgRegisterPQCKeyV2`).
2796
3018
  */
2797
3019
  signMode?: "hybrid" | "classical";
3020
+ /**
3021
+ * Hybrid sign-bytes form. `"auto"` (default) asks the network via `rest` in
3022
+ * {@link EthNativeSigner.signAndBroadcast}; `"v1"` / `"v2"` force a form.
3023
+ */
3024
+ signBytesVersion?: SignBytesVersionOption;
3025
+ /** The network's REST (LCD) base URL, used by `signBytesVersion: "auto"`. */
3026
+ rest?: string;
3027
+ /** Injectable `fetch` for the `"auto"` lookup. */
3028
+ fetch?: FetchLike;
2798
3029
  }
2799
3030
  /** Params for building/broadcasting a tx with {@link EthNativeSigner}. */
2800
3031
  interface EthTxParams extends AccountSequence {
@@ -2803,6 +3034,11 @@ interface EthTxParams extends AccountSequence {
2803
3034
  fee: StdFee;
2804
3035
  memo?: string;
2805
3036
  timeoutHeight?: bigint;
3037
+ /**
3038
+ * The resolved hybrid sign-bytes form for {@link EthNativeSigner.sign}.
3039
+ * {@link EthNativeSigner.signAndBroadcast} resolves it when omitted.
3040
+ */
3041
+ signBytesVersion?: SignBytesVersion;
2806
3042
  }
2807
3043
  /**
2808
3044
  * Sign QoreChain native txs from a unified eth-native account.
@@ -2817,7 +3053,15 @@ declare class EthNativeSigner {
2817
3053
  private readonly key;
2818
3054
  private readonly registry;
2819
3055
  private readonly signMode;
3056
+ private readonly signBytesVersion;
3057
+ private readonly rest?;
3058
+ private readonly fetchImpl?;
2820
3059
  constructor(account: UnifiedAccount, opts?: EthNativeSignerOptions);
3060
+ /**
3061
+ * The hybrid sign-bytes form for `chainId` under this signer's settings.
3062
+ * Pass `forceRefresh` to bypass the cached answer.
3063
+ */
3064
+ resolveSignBytesVersion(chainId: string, forceRefresh?: boolean): Promise<SignBytesVersion>;
2821
3065
  /** Encode a message to `Any` via the bound registry. */
2822
3066
  private encode;
2823
3067
  /** Build and sign a `TxRaw` for the given messages. Does not broadcast. */
@@ -2930,6 +3174,41 @@ declare const MsgRegisterSVMPQCKey: MessageFns$p<MsgRegisterSVMPQCKey>;
2930
3174
  interface MsgRegisterSVMPQCKeyResponse {
2931
3175
  }
2932
3176
  declare const MsgRegisterSVMPQCKeyResponse: MessageFns$p<MsgRegisterSVMPQCKeyResponse>;
3177
+ /**
3178
+ * SVMParams mirrors the module's runtime parameters so governance can replace
3179
+ * them wholesale. The store keeps them as JSON, so the handler converts.
3180
+ */
3181
+ interface SVMParams {
3182
+ maxProgramSize: string;
3183
+ maxAccountDataSize: string;
3184
+ computeBudgetMax: string;
3185
+ lamportsPerByte: string;
3186
+ rentExemptionMulti: string;
3187
+ enabled: boolean;
3188
+ svmSlotOffset: string;
3189
+ defaultSigScheme: number;
3190
+ maxCpi: number;
3191
+ }
3192
+ declare const SVMParams: MessageFns$p<SVMParams>;
3193
+ /**
3194
+ * MsgUpdateParams replaces the SVM runtime parameters wholesale.
3195
+ *
3196
+ * WHY THIS EXISTS. Until now x/svm had no governance message at all, so there was
3197
+ * no transaction that could turn the lane off. When the August 2026 incident
3198
+ * required closing it, the only available guarantee was a compile-time constant
3199
+ * (SVMLaneHardDisabled), which means every later change of mind costs a binary
3200
+ * release and a coordinated upgrade. With this message, disabling the lane is a
3201
+ * governance proposal like any other.
3202
+ */
3203
+ interface MsgUpdateParams {
3204
+ /** authority must be the governance module account. */
3205
+ authority: string;
3206
+ params?: SVMParams | undefined;
3207
+ }
3208
+ declare const MsgUpdateParams: MessageFns$p<MsgUpdateParams>;
3209
+ interface MsgUpdateParamsResponse {
3210
+ }
3211
+ declare const MsgUpdateParamsResponse: MessageFns$p<MsgUpdateParamsResponse>;
2933
3212
  type MsgDefinition$a = typeof MsgDefinition$a;
2934
3213
  declare const MsgDefinition$a: {
2935
3214
  readonly name: "Msg";
@@ -2967,6 +3246,14 @@ declare const MsgDefinition$a: {
2967
3246
  readonly responseStream: false;
2968
3247
  readonly options: {};
2969
3248
  };
3249
+ readonly updateParams: {
3250
+ readonly name: "UpdateParams";
3251
+ readonly requestType: typeof MsgUpdateParams;
3252
+ readonly requestStream: false;
3253
+ readonly responseType: typeof MsgUpdateParamsResponse;
3254
+ readonly responseStream: false;
3255
+ readonly options: {};
3256
+ };
2970
3257
  };
2971
3258
  };
2972
3259
  type Builtin$p = Date | Function | Uint8Array | string | number | boolean | undefined;
@@ -2990,10 +3277,13 @@ declare const tx$a_MsgExecuteProgram: typeof MsgExecuteProgram;
2990
3277
  declare const tx$a_MsgExecuteProgramResponse: typeof MsgExecuteProgramResponse;
2991
3278
  declare const tx$a_MsgRegisterSVMPQCKey: typeof MsgRegisterSVMPQCKey;
2992
3279
  declare const tx$a_MsgRegisterSVMPQCKeyResponse: typeof MsgRegisterSVMPQCKeyResponse;
3280
+ declare const tx$a_MsgUpdateParams: typeof MsgUpdateParams;
3281
+ declare const tx$a_MsgUpdateParamsResponse: typeof MsgUpdateParamsResponse;
2993
3282
  declare const tx$a_SVMAuth: typeof SVMAuth;
3283
+ declare const tx$a_SVMParams: typeof SVMParams;
2994
3284
  declare const tx$a_SvmAccountMeta: typeof SvmAccountMeta;
2995
3285
  declare namespace tx$a {
2996
- export { type DeepPartial$p as DeepPartial, type MessageFns$p as MessageFns, tx$a_MsgCreateAccount as MsgCreateAccount, tx$a_MsgCreateAccountResponse as MsgCreateAccountResponse, MsgDefinition$a as MsgDefinition, tx$a_MsgDeployProgram as MsgDeployProgram, tx$a_MsgDeployProgramResponse as MsgDeployProgramResponse, tx$a_MsgExecuteProgram as MsgExecuteProgram, tx$a_MsgExecuteProgramResponse as MsgExecuteProgramResponse, tx$a_MsgRegisterSVMPQCKey as MsgRegisterSVMPQCKey, tx$a_MsgRegisterSVMPQCKeyResponse as MsgRegisterSVMPQCKeyResponse, tx$a_SVMAuth as SVMAuth, tx$a_SvmAccountMeta as SvmAccountMeta, protobufPackage$o as protobufPackage };
3286
+ export { type DeepPartial$p as DeepPartial, type MessageFns$p as MessageFns, tx$a_MsgCreateAccount as MsgCreateAccount, tx$a_MsgCreateAccountResponse as MsgCreateAccountResponse, MsgDefinition$a as MsgDefinition, tx$a_MsgDeployProgram as MsgDeployProgram, tx$a_MsgDeployProgramResponse as MsgDeployProgramResponse, tx$a_MsgExecuteProgram as MsgExecuteProgram, tx$a_MsgExecuteProgramResponse as MsgExecuteProgramResponse, tx$a_MsgRegisterSVMPQCKey as MsgRegisterSVMPQCKey, tx$a_MsgRegisterSVMPQCKeyResponse as MsgRegisterSVMPQCKeyResponse, tx$a_MsgUpdateParams as MsgUpdateParams, tx$a_MsgUpdateParamsResponse as MsgUpdateParamsResponse, tx$a_SVMAuth as SVMAuth, tx$a_SVMParams as SVMParams, tx$a_SvmAccountMeta as SvmAccountMeta, protobufPackage$o as protobufPackage };
2997
3287
  }
2998
3288
 
2999
3289
  declare const protobufPackage$n = "qorechain.bridge.v1";
@@ -4460,15 +4750,35 @@ declare namespace tx$2 {
4460
4750
  declare const protobufPackage$f = "qorechain.crossvm.v1";
4461
4751
  interface MsgCrossVMCall {
4462
4752
  sender: string;
4753
+ /**
4754
+ * source_vm is IGNORED on input. The chain derives the origin lane from the
4755
+ * execution context, because a caller describing itself cannot be evidence of
4756
+ * what it is. Retained so the field number stays taken and older clients that
4757
+ * still set it are accepted rather than rejected.
4758
+ */
4463
4759
  sourceVm: string;
4464
4760
  targetVm: string;
4465
4761
  targetContract: string;
4466
4762
  payload: Uint8Array;
4467
4763
  funds: Coin[];
4764
+ /**
4765
+ * async queues the call instead of executing it, to be dispatched later by
4766
+ * ProcessQueue. The default is to execute now and return the answer, which is
4767
+ * what a caller that needs the result requires.
4768
+ */
4769
+ async: boolean;
4468
4770
  }
4469
4771
  declare const MsgCrossVMCall: MessageFns$f<MsgCrossVMCall>;
4470
4772
  interface MsgCrossVMCallResponse {
4471
4773
  messageId: string;
4774
+ /** executed is false for a queued call, whose result is not known yet. */
4775
+ executed: boolean;
4776
+ /**
4777
+ * data is the callee's return value, carried back to the caller. A CosmWasm
4778
+ * contract reads it from the submessage reply.
4779
+ */
4780
+ data: Uint8Array;
4781
+ gasUsed: string;
4472
4782
  }
4473
4783
  declare const MsgCrossVMCallResponse: MessageFns$f<MsgCrossVMCallResponse>;
4474
4784
  interface MsgProcessQueue {
@@ -4484,7 +4794,11 @@ declare const MsgDefinition$1: {
4484
4794
  readonly name: "Msg";
4485
4795
  readonly fullName: "qorechain.crossvm.v1.Msg";
4486
4796
  readonly methods: {
4487
- /** CrossVMCall submits a cross-VM message to the queue. */
4797
+ /**
4798
+ * CrossVMCall invokes a contract on another VM. It executes within the
4799
+ * transaction and returns the callee's answer, unless async is set, in which
4800
+ * case it is queued for ProcessQueue to dispatch later.
4801
+ */
4488
4802
  readonly crossVMCall: {
4489
4803
  readonly name: "CrossVMCall";
4490
4804
  readonly requestType: typeof MsgCrossVMCall;
@@ -4738,6 +5052,17 @@ declare const svm: {
4738
5052
  createAccount: (value: PartialMsg<MsgCreateAccount>) => EncodeObject;
4739
5053
  executeProgram: (value: PartialMsg<MsgExecuteProgram>) => EncodeObject;
4740
5054
  registerSvmPqcKey: (value: PartialMsg<MsgRegisterSVMPQCKey>) => EncodeObject;
5055
+ /**
5056
+ * Replace the x/svm runtime parameters wholesale (chain v3.1.97).
5057
+ *
5058
+ * GOVERNANCE ONLY: `authority` must be the governance module account, so this
5059
+ * message is submitted inside a gov proposal, not signed by a user. It is what
5060
+ * makes enabling/disabling the SVM lane a proposal rather than a binary
5061
+ * release. `params` is replaced in full — send every field, not just the ones
5062
+ * you mean to change. `rentExemptionMulti` is a `LegacyDec` string (e.g.
5063
+ * `"2.000000000000000000"`).
5064
+ */
5065
+ updateParams: (value: PartialMsg<MsgUpdateParams>) => EncodeObject;
4741
5066
  };
4742
5067
  /** Light-node lifecycle message composers. */
4743
5068
  declare const lightnode: {
@@ -6920,6 +7245,10 @@ declare const msg: {
6920
7245
  readonly [Symbol.toStringTag]?: "Uint8Array" | undefined;
6921
7246
  } | undefined;
6922
7247
  }) => _cosmjs_proto_signing.EncodeObject;
7248
+ updateParams: (value: {
7249
+ authority?: string | undefined;
7250
+ params?: SVMParams | undefined;
7251
+ }) => _cosmjs_proto_signing.EncodeObject;
6923
7252
  };
6924
7253
  readonly lightnode: {
6925
7254
  registerLightNode: (value: {
@@ -7382,6 +7711,7 @@ declare const msg: {
7382
7711
  denom?: string | undefined;
7383
7712
  amount?: string | undefined;
7384
7713
  } | undefined)[] | undefined;
7714
+ async?: boolean | undefined;
7385
7715
  }) => _cosmjs_proto_signing.EncodeObject;
7386
7716
  processQueue: (value: {
7387
7717
  authority?: string | undefined;
@@ -10162,6 +10492,12 @@ declare function createRollupClient(tx: TxClient, opts?: CreateRollupClientOptio
10162
10492
  * under a single signature — e.g. an EVM call, an SVM call, and a CosmWasm call
10163
10493
  * that all land together or not at all.
10164
10494
  *
10495
+ * A call executes inside the transaction and returns the callee's answer: the
10496
+ * result carries `executed`, `data` (the return value) and `gasUsed`, decoded
10497
+ * from `MsgCrossVMCallResponse`. Pass `async: true` to queue the call for a
10498
+ * later `ProcessQueue` dispatch instead, in which case nothing has run yet and
10499
+ * only the message id is meaningful.
10500
+ *
10165
10501
  * Per-VM payload encoding (pick exactly one shape per call):
10166
10502
  * - `{ payload }` — raw bytes / hex, passed through unchanged.
10167
10503
  * - `{ evm: { abi, functionName, args } }` — ABI-encoded with viem's
@@ -10222,7 +10558,15 @@ interface CrossVMWriteOptions {
10222
10558
  }
10223
10559
  /** Common cross-VM call fields (without the payload or write options). */
10224
10560
  interface CrossVMCallBase {
10225
- /** The VM the call originates from. Defaults to `"evm"`. */
10561
+ /**
10562
+ * The VM the call claims to originate from.
10563
+ *
10564
+ * IGNORED BY THE CHAIN (v3.1.97). The chain derives the origin lane from the
10565
+ * execution context rather than trusting the caller's self-description, so
10566
+ * setting this changes nothing about how the call is handled. The field is
10567
+ * retained — and still sent, defaulting to `"evm"` — purely for wire
10568
+ * compatibility, so older nodes and clients keep accepting the message.
10569
+ */
10226
10570
  sourceVm?: VMType;
10227
10571
  /** The VM the call targets. */
10228
10572
  targetVm: VMType;
@@ -10230,13 +10574,42 @@ interface CrossVMCallBase {
10230
10574
  targetContract: string;
10231
10575
  /** Optional funds (coins) to forward with the call. */
10232
10576
  funds?: Coin$1[];
10577
+ /**
10578
+ * Queue the call for a later `ProcessQueue` dispatch instead of executing it
10579
+ * inside this transaction.
10580
+ *
10581
+ * Defaults to `false`, matching the chain's default: execute now and return
10582
+ * the callee's answer (see {@link CrossVMCallResult.data}). With `async: true`
10583
+ * the call is only enqueued, so the response carries `executed: false` and no
10584
+ * `data` — use it when you do not need the result in this transaction.
10585
+ */
10586
+ async?: boolean;
10233
10587
  }
10234
10588
  /** Options for a single cross-VM call (base + payload). */
10235
10589
  type CrossVMCallOptions = CrossVMCallBase & PayloadInput;
10236
10590
  /** Options for {@link CrossVMClient.call} (adds write-path options). */
10237
10591
  type CallOptions = CrossVMCallOptions & CrossVMWriteOptions;
10592
+ /**
10593
+ * The decoded `MsgCrossVMCallResponse` fields for one cross-VM call.
10594
+ *
10595
+ * Populated from the tx's per-message responses when the node returns them
10596
+ * (`commit` broadcasts). When they are absent — a `sync`/`async` broadcast, or
10597
+ * an older node — `executed` is `false`, `data` is empty and `gasUsed` is `0n`;
10598
+ * read the result with {@link CrossVMClient.getMessage} instead.
10599
+ */
10600
+ interface CrossVMCallOutcome {
10601
+ /**
10602
+ * Whether the callee actually ran inside this transaction. `false` for a
10603
+ * queued (`async: true`) call, whose result is not known yet.
10604
+ */
10605
+ executed: boolean;
10606
+ /** The callee's return value. Empty when the call was queued. */
10607
+ data: Uint8Array;
10608
+ /** Gas consumed by the callee. `0n` when the call was queued. */
10609
+ gasUsed: bigint;
10610
+ }
10238
10611
  /** Result of a single {@link CrossVMClient.call}. */
10239
- interface CrossVMCallResult {
10612
+ interface CrossVMCallResult extends CrossVMCallOutcome {
10240
10613
  /** The cross-VM message id assigned by the chain (parsed from tx events). */
10241
10614
  messageId: string;
10242
10615
  /** The raw broadcast result. */
@@ -10246,6 +10619,13 @@ interface CrossVMCallResult {
10246
10619
  interface CrossVMAtomicResult {
10247
10620
  /** The cross-VM message ids assigned by the chain (best-effort, from events). */
10248
10621
  messageIds: string[];
10622
+ /**
10623
+ * The decoded per-call outcomes, in the order the calls were passed.
10624
+ *
10625
+ * Empty when the node returned no per-message responses (see
10626
+ * {@link CrossVMCallOutcome}).
10627
+ */
10628
+ outcomes: CrossVMCallOutcome[];
10249
10629
  /** The raw broadcast result for the single packing transaction. */
10250
10630
  result: BroadcastResult;
10251
10631
  }
@@ -10289,7 +10669,9 @@ interface CreateCrossVMClientOptions {
10289
10669
  * Create a {@link CrossVMClient} bound to a connected {@link TxClient}.
10290
10670
  *
10291
10671
  * The `TxClient`'s sender address is used as the message `sender`, so the caller
10292
- * never repeats their address. `sourceVm` defaults to `"evm"`.
10672
+ * never repeats their address. `sourceVm` still defaults to `"evm"` on the wire
10673
+ * but is ignored by the chain (see {@link CrossVMCallBase.sourceVm}); `async`
10674
+ * defaults to `false`, i.e. execute now and return the callee's answer.
10293
10675
  *
10294
10676
  * @param tx - A connected signing client (from `client.connectTx(signer)`).
10295
10677
  * @param opts - Optional typed query client and/or `qor_` client for reads.
@@ -10514,6 +10896,6 @@ declare function migrateToHybrid(tx: TxClient, opts: MigrateToHybridOptions): Pr
10514
10896
  * callers who want to compose them directly. Internal helpers are not exported.
10515
10897
  */
10516
10898
  /** SDK version. */
10517
- declare const VERSION = "0.7.0";
10899
+ declare const VERSION = "0.8.0";
10518
10900
 
10519
- export { type AbstractAccountConfigView, type AbstractAccountQueryClient, type AbstractAccountView, type Account, type AccountSequence, AlgorithmDilithium5, type AlgorithmID, AlgorithmMLKEM1024, AlgorithmUnspecified, type AllBalancesResponse, type AmmQueryClient, type AnchorStateOptions, type AttachHybridOptions, type AuthenticatorWallet, type AutoFeeOptions, type BalanceResponse, type BankSendOptions, type Bech32Config, type Bech32Prefixes, type BridgeQueryClient, type BroadcastMode, type BroadcastResult, type BuildHybridTxOptions, type BuildMetaMaskExecuteCosmosOptions, type BuildMetaMaskExecuteEvmOptions, type BuildPhantomExecuteCosmosOptions, type BuildPhantomExecuteEvmOptions, type BuiltHybridTx, CANONICAL_DERIVATION, type CallOptions, type ChallengeBatchOptions, type ClientFees, type CoinInfo, type ConnectPhantomUnifiedOptions, type ConnectTxOptions, type ContractMsg, type CosmWasmPayload, type CosmWasmReadClient, type CosmWasmSigningClient, type CosmosAuthSignBytesInput, type CosmosWalletConnection, type CosmosWalletName, type CreateClientOptions, type CreateCrossVMClientOptions, type CreateMultilayerClientOptions, type CreateRollupClientOptions, type CreateRollupOptions, type CrossVMAtomicResult, type CrossVMCallBase, type CrossVMCallOptions, type CrossVMCallResult, type CrossVMClient, type CrossVMWriteOptions, type CrossVmMessage, type CrossVmMessageResponse, type CrossVmParamsResponse, type CrossVmQueryClient, DEFAULT_GAS_MULTIPLIER, DEFAULT_GAS_PRICE, type DecodedTxError, type DenomOptions, type DerivationOptions, ETHSECP256K1_PUBKEY_TYPE, type Ed25519Account, type Eip1193Provider, type EnsurePqcRegisteredOptions, type EnsurePqcRegisteredResult, type EstimateFeeOptions, type EthBroadcaster, EthNativeSigner, type EthNativeSignerOptions, type EthSignParams, type EthSigningKey, type EthTxParams, type EventFilters, type EventStream, type EvmAuthSignBytesInput, type EvmPayload, type ExecuteCosmosMsgInput, type ExecuteEvmMsgInput, type ExecuteWithdrawalOptions, type ExplorerConfig, type FaucetConfig, type FeeInput, type FeeUrgency, type FetchLike, GasPrice, type GetBlockResponse, type GetCosmosWalletOptions, type GetJsonOptions, type GetTxFn, type GetTxResponse, HYBRID_SIG_TYPE_URL, type Handler, type HashInput, type HttpOptions, type HybridBroadcaster, type HybridPlacement, type HybridSendPath, HybridSigner, type IncludedTx, type InjectedCosmosWallet, type InstantiateOpts, JsonRpcClient, type JsonRpcClientOptions, JsonRpcError, type JsonRpcErrorObject, type JsonRpcResponse, type KeplrChainInfo, type KeplrCurrency, type KeplrFeeCurrency, type KeyType, LEGACY_DERIVATION, type LicenseQueryClient, type LightNodeQueryClient, ML_DSA_87_PUBLIC_KEY_LENGTH, ML_DSA_87_SECRET_KEY_LENGTH, ML_DSA_87_SEED_LENGTH, ML_DSA_87_SIGNATURE_LENGTH, MSG_SEND_TYPE_URL, type MigratePqcKeyOptions, type MigrateToHybridOptions, type MultilayerClient, type MultilayerQueryClient, type MultilayerWriteOptions, NETWORKS, type NetworkConfig, type NetworkEndpoints, type NetworkName, type NewBlockEventLike, PHANTOM_DERIVATION_DOMAIN, type PQCHybridSignature$1 as PQCHybridSignature, PQC_KEY_STATUS_PRECOMPILE_ADDRESS, type PageResponse, type PaginatedOptions, type Pagination, type ParsedAccountAuth, type PayloadInput, type PendingCrossVmMessagesResponse, type PermissionSchemaResponse, type PhantomProvider, type PqcKeypair, type PqcQueryClient, type PqcSignaturePart, PqcSigner, type PqcStatus, type PqcStatusSource, type QcaQueryClient, QorClient, type QoreChainClient, type QoreChainQueryClients, QoreHttpError, QoreTxError, type QueryValue, type RawPayload, type RdkQueryClient, type RegisterEthAuthenticatorMsgInput, type RegisterPaychainOptions, type RegisterSidechainOptions, type ReputationQueryClient, type RequestFaucetOptions, type ResolveChallengeOptions, RestClient, type RestClientOptions, type RetryOptions, type RevokeAuthenticatorMsgInput, type RlConsensusQueryClient, type RollupClient, type RollupLifecycleOptions, type RollupWriteOptions, type RotatePqcKeyMsgFromMnemonicOptions, type RotatePqcKeyMsgFromMnemonicResult, type RotatePqcKeyMsgInput, type RouteTransactionOptions, STATIC_FALLBACK, type SearchTxsOptions, type SearchTxsResponse, type Secp256k1Account, type SignAndBroadcastHybridOptions, type SignAndBroadcastOptions, type SignOutput, type SignatureMode, type SignedEthTx, type Signer, type SigningClientLike, type SimulateOptions, type SubmitBatchOptions, type SubscriptionClient, type SvmPayload, type SvmQueryClient, type SyncBroadcaster, TxClient, type TxClientOptions, type TxConnectOptions, type TxErrorInput, type TxEventLike, type FeeInput$1 as TxFeeInput, type TxOrderBy, type TxQueryFilters, type TxResultLike, type UnifiedAccount, type UnifiedAddresses, type Unsubscribe, VERSION, type VMType, VM_TYPES, type WaitForTxOptions, abstractaccount, accountAuthInfo, addressesFrom20, algorithmName, amm, attachHybridExtension, authz, bank, be64, bech32ToHex, bridge, broadcastAndWait, buildAminoTypes, buildEventsQuery, buildHybridSignatureExtension, buildHybridTx, buildMetaMaskExecuteCosmos, buildMetaMaskExecuteEvm, buildPhantomExecuteCosmos, buildPhantomExecuteEvm, buildRegisterPqcKeyMsg, buildTxQuery, buildUrl, bytesToBech32, calculateFee, clearAdmin, connectCosmWasmSigner, connectPhantomUnified, connectQueryClients, cosmosAuthSignBytes, createClient, createCosmWasmClient, createCrossVMClient, createMultilayerClient, createQueryClients, createRollupClient, createSubscriptionClient, crossvm, decodeTxError, deriveEvmAccount, deriveNativeAccount, derivePqcLegacy, deriveSvmAccount, deriveUnifiedAccount, directSignerFromPrivateKey, distribution, encodeHybridExtension, ensurePqcRegistered, estimateFee, evmAuthSignBytes, evmToQor, execute, executeCosmosMsg, executeEvmMsg, explorerAddressUrl, explorerBlockUrl, explorerTxUrl, feegrant, formatUnits, fromBase, generateMnemonic, generatePqcKeypair, getBlock, getCodeDetails, getCodes, getContractInfo, getContracts, getCosmosWallet, getCrossVmMessage, getCrossVmParams, getJson, getLatestBlock, getNetwork, getPendingCrossVmMessages, getPqcStatus, getTx, gov, hexToBech32, ibc, instantiate, instantiate2, isChecksumAddress, isPqcRegistered, isSignatureAlgorithm, isTxFailure, isValidBech32, isValidEvmAddress, isValidSvmAddress, joinUrl, keccak256, keccak256Hex, lengthPrefixed, license, lightnode, listNetworks, migrate, migratePqcKey, migrateToHybrid, msg, multilayer, parseEthPubkeyAny, parseUnits, postJsonRpc, pqc as pqcMsg, pqcSign, pqcVerify, qorToEvm, qoreAddresses, qorechainRegistry, qorechainRegistryTypes, index as qorechainTypes, queryContractSmart, rdk, registerEthAuthenticatorMsg, requestFaucet, revokeAuthenticatorMsg, ripemd160, ripemd160Hex, rlconsensus, rotatePqcKeyMsg, rotatePqcKeyMsgFromMnemonic, rotationSignBytes, searchTxs, sha256, sha256Hex, signAndBroadcastHybrid, signClassicalEth, signHybridEth, staking, subscribeNewBlocks, subscribeTx, suggestChainInfo, svm, toBase, toChecksumAddress, toHex, txErrorFrom, unifiedAccountFromPhantomSignature, unifiedAccountFromSeed, updateAdmin, uploadCode, validateMnemonic, waitForTx, withRetry };
10901
+ export { type AbstractAccountConfigView, type AbstractAccountQueryClient, type AbstractAccountView, type Account, type AccountSequence, AlgorithmDilithium5, type AlgorithmID, AlgorithmMLKEM1024, AlgorithmUnspecified, type AllBalancesResponse, type AmmQueryClient, type AnchorStateOptions, type AttachHybridOptions, type AuthenticatorWallet, type AutoFeeOptions, BRIDGE_ATTESTATION_V2_DOMAIN, type BalanceResponse, type BankSendOptions, type Bech32Config, type Bech32Prefixes, type BridgeAttestationSignBytesInput, type BridgeQueryClient, type BroadcastMode, type BroadcastResult, type BuildHybridTxOptions, type BuildMetaMaskExecuteCosmosOptions, type BuildMetaMaskExecuteEvmOptions, type BuildPhantomExecuteCosmosOptions, type BuildPhantomExecuteEvmOptions, type BuiltHybridTx, CANONICAL_DERIVATION, type CallOptions, type ChallengeBatchOptions, type ClientFees, type CoinInfo, type ConnectPhantomUnifiedOptions, type ConnectTxOptions, type ContractMsg, type CosmWasmPayload, type CosmWasmReadClient, type CosmWasmSigningClient, type CosmosAuthSignBytesInput, type CosmosWalletConnection, type CosmosWalletName, type CreateClientOptions, type CreateCrossVMClientOptions, type CreateMultilayerClientOptions, type CreateRollupClientOptions, type CreateRollupOptions, type CrossVMAtomicResult, type CrossVMCallBase, type CrossVMCallOptions, type CrossVMCallResult, type CrossVMClient, type CrossVMWriteOptions, type CrossVmMessage, type CrossVmMessageResponse, type CrossVmParamsResponse, type CrossVmQueryClient, DEFAULT_GAS_MULTIPLIER, DEFAULT_GAS_PRICE, type DecodedTxError, type DenomOptions, type DerivationOptions, ETHSECP256K1_PUBKEY_TYPE, type Ed25519Account, type Eip1193Provider, type EnsurePqcRegisteredOptions, type EnsurePqcRegisteredResult, type EstimateFeeOptions, type EthBroadcaster, EthNativeSigner, type EthNativeSignerOptions, type EthSignParams, type EthSigningKey, type EthTxParams, type EventFilters, type EventStream, type EvmAuthSignBytesInput, type EvmPayload, type ExecuteCosmosMsgInput, type ExecuteEvmMsgInput, type ExecuteWithdrawalOptions, type ExplorerConfig, type FaucetConfig, type FeeInput, type FeeUrgency, type FetchLike, GasPrice, type GetBlockResponse, type GetCosmosWalletOptions, type GetJsonOptions, type GetTxFn, type GetTxResponse, HYBRID_SIGN_BYTES_REJECTION_LOG, HYBRID_SIGN_BYTES_V2_DOMAIN, HYBRID_SIG_TYPE_URL, type Handler, type HashInput, type HttpOptions, type HybridBroadcaster, type HybridPlacement, type HybridSendPath, HybridSigner, type IncludedTx, type InjectedCosmosWallet, type InstantiateOpts, JsonRpcClient, type JsonRpcClientOptions, JsonRpcError, type JsonRpcErrorObject, type JsonRpcResponse, type KeplrChainInfo, type KeplrCurrency, type KeplrFeeCurrency, type KeyType, LEGACY_DERIVATION, LEGACY_SIGN_BYTES_CHAINS, type LicenseQueryClient, type LightNodeQueryClient, MIGRATION_SIGN_BYTES_V2_DOMAIN, ML_DSA_87_PUBLIC_KEY_LENGTH, ML_DSA_87_SECRET_KEY_LENGTH, ML_DSA_87_SEED_LENGTH, ML_DSA_87_SIGNATURE_LENGTH, MSG_SEND_TYPE_URL, type MigratePqcKeyOptions, type MigrateToHybridOptions, type MigrationSignBytesInput, type MultilayerClient, type MultilayerQueryClient, type MultilayerWriteOptions, NETWORKS, type NetworkConfig, type NetworkEndpoints, type NetworkName, type NewBlockEventLike, type PQCHybridSignature$1 as PQCHybridSignature, PQC_KEY_STATUS_PRECOMPILE_ADDRESS, type PageResponse, type PaginatedOptions, type Pagination, type ParsedAccountAuth, type PayloadInput, type PendingCrossVmMessagesResponse, type PermissionSchemaResponse, type PhantomProvider, type PqcKeypair, type PqcQueryClient, type PqcSignaturePart, PqcSigner, type PqcStatus, type PqcStatusSource, type QcaQueryClient, QorClient, type QoreChainClient, type QoreChainQueryClients, QoreHttpError, QoreTxError, type QueryValue, type RawPayload, type RdkQueryClient, type RegisterEthAuthenticatorMsgInput, type RegisterPaychainOptions, type RegisterSidechainOptions, type ReputationQueryClient, type RequestFaucetOptions, type ResolveChallengeOptions, type ResolveSignBytesVersionOptions, RestClient, type RestClientOptions, type RetryOptions, type RevokeAuthenticatorMsgInput, type RlConsensusQueryClient, type RollupClient, type RollupLifecycleOptions, type RollupWriteOptions, type RotatePqcKeyMsgFromMnemonicOptions, type RotatePqcKeyMsgFromMnemonicResult, type RotatePqcKeyMsgInput, type RouteTransactionOptions, SIGN_BYTES_V2_UPGRADE, STATIC_FALLBACK, type SearchTxsOptions, type SearchTxsResponse, type Secp256k1Account, type SignAndBroadcastHybridOptions, type SignAndBroadcastOptions, type SignBytesVersion, type SignBytesVersionOption, type SignOutput, type SignatureMode, type SignedEthTx, type Signer, type SigningClientLike, type SimulateOptions, type SubmitBatchOptions, type SubscriptionClient, type SvmPayload, type SvmQueryClient, type SyncBroadcaster, TxClient, type TxClientOptions, type TxConnectOptions, type TxErrorInput, type TxEventLike, type FeeInput$1 as TxFeeInput, type TxOrderBy, type TxQueryFilters, type TxResultLike, type UnifiedAccount, type UnifiedAddresses, type Unsubscribe, VERSION, type VMType, VM_TYPES, type WaitForTxOptions, abstractaccount, accountAuthInfo, addressesFrom20, algorithmName, amm, attachHybridExtension, authz, bank, be64, bech32ToHex, bridge, bridgeAttestationSignBytes, bridgeAttestationSignBytesV1, bridgeAttestationSignBytesV2, broadcastAndWait, buildAminoTypes, buildEventsQuery, buildHybridSignatureExtension, buildHybridTx, buildMetaMaskExecuteCosmos, buildMetaMaskExecuteEvm, buildPhantomExecuteCosmos, buildPhantomExecuteEvm, buildRegisterPqcKeyMsg, buildTxQuery, buildUrl, bytesToBech32, calculateFee, clearAdmin, clearSignBytesCache, connectCosmWasmSigner, connectPhantomUnified, connectQueryClients, cosmosAuthSignBytes, createClient, createCosmWasmClient, createCrossVMClient, createMultilayerClient, createQueryClients, createRollupClient, createSubscriptionClient, crossvm, decodeTxError, deriveEvmAccount, deriveNativeAccount, derivePqcLegacy, deriveSvmAccount, deriveUnifiedAccount, directSignerFromPrivateKey, distribution, encodeHybridExtension, ensurePqcRegistered, estimateFee, evmAuthSignBytes, evmToQor, execute, executeCosmosMsg, executeEvmMsg, explorerAddressUrl, explorerBlockUrl, explorerTxUrl, feegrant, fetchSignBytesV2AppliedHeight, formatUnits, fromBase, generateMnemonic, generatePqcKeypair, getBlock, getCodeDetails, getCodes, getContractInfo, getContracts, getCosmosWallet, getCrossVmMessage, getCrossVmParams, getJson, getLatestBlock, getNetwork, getPendingCrossVmMessages, getPqcStatus, getTx, gov, hexToBech32, hybridSignBytes, hybridSignBytesV1, hybridSignBytesV2, ibc, instantiate, instantiate2, isChecksumAddress, isHybridSignBytesRejection, isLegacySignBytesChain, isPqcRegistered, isSignatureAlgorithm, isTxFailure, isValidBech32, isValidEvmAddress, isValidSvmAddress, joinUrl, keccak256, keccak256Hex, lengthPrefixed, license, lightnode, listNetworks, migrate, migratePqcKey, migrateToHybrid, migrationSignBytes, migrationSignBytesV1, migrationSignBytesV2, msg, multilayer, parseEthPubkeyAny, parseUnits, postJsonRpc, pqc as pqcMsg, pqcSign, pqcVerify, qorToEvm, qoreAddresses, qorechainRegistry, qorechainRegistryTypes, index as qorechainTypes, queryContractSmart, rdk, registerEthAuthenticatorMsg, requestFaucet, resolveSignBytesVersion, revokeAuthenticatorMsg, ripemd160, ripemd160Hex, rlconsensus, rotatePqcKeyMsg, rotatePqcKeyMsgFromMnemonic, rotationSignBytes, searchTxs, sha256, sha256Hex, signAndBroadcastHybrid, signBytesVersionFor, signClassicalEth, signHybridEth, staking, subscribeNewBlocks, subscribeTx, suggestChainInfo, svm, toBase, toChecksumAddress, toHex, txErrorFrom, unifiedAccountFromPhantomSignature, unifiedAccountFromSeed, updateAdmin, uploadCode, validateMnemonic, waitForTx, withRetry };