@qorechain/sdk 0.7.0 → 0.8.1

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.cts 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,187 @@ 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 a v2 upgrade plan is applied on that
2546
+ * 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/<name> -> {"height":"<n>"}
2551
+ * for each name in SIGN_BYTES_V2_UPGRADES ("v3.2.0", then "v3.1.98")
2552
+ * v2 iff any n > 0, or the chain is not one of the legacy networks.
2553
+ *
2554
+ * Both names must be asked: the testnet switched under "v3.1.98" and keeps that
2555
+ * record, mainnet switches under "v3.2.0". Asking only one answers v1 on the
2556
+ * other network, and the chain then refuses every hybrid tx with `pqc` code 21.
2557
+ *
2558
+ * The height is an int64 and crosses the REST gateway as a STRING; a network
2559
+ * that has not upgraded answers `{"height":"0"}` (or `{}` on older nodes), so
2560
+ * the decision is numeric, never a presence check.
2561
+ *
2562
+ * {@link resolveSignBytesVersion} does this with a short cache;
2563
+ * {@link signBytesVersionFor} is the pure rule for callers that already know
2564
+ * the applied height.
2565
+ */
2566
+
2567
+ /** A concrete sign-bytes form. */
2568
+ type SignBytesVersion = "v1" | "v2";
2569
+ /** A form, or `"auto"` to ask the target network. */
2570
+ type SignBytesVersionOption = SignBytesVersion | "auto";
2571
+ /**
2572
+ * The upgrade plan whose application switches a legacy network to v2 — the
2573
+ * name used from the v3.2.0 release onward. See {@link SIGN_BYTES_V2_UPGRADES}:
2574
+ * a client must accept either name, because the testnet took the switch under
2575
+ * the earlier one and keeps that record.
2576
+ */
2577
+ declare const SIGN_BYTES_V2_UPGRADE = "v3.2.0";
2578
+ /**
2579
+ * Every upgrade name that has switched a network to the v2 sign-bytes, most
2580
+ * recent first. The testnet applied `"v3.1.98"` and its record stays in state
2581
+ * forever; mainnet applies `"v3.2.0"`. A network is on v2 if ANY of these is
2582
+ * applied, so a client asks for each in turn and stops at the first positive
2583
+ * height — querying only one name answers v1 on the other network and every
2584
+ * hybrid transaction is then refused with `pqc` code 21.
2585
+ */
2586
+ declare const SIGN_BYTES_V2_UPGRADES: readonly string[];
2587
+ /** Networks that ran before v2 existed and switch only at {@link SIGN_BYTES_V2_UPGRADE}. */
2588
+ declare const LEGACY_SIGN_BYTES_CHAINS: readonly string[];
2589
+ /** Domain tag of the v2 hybrid PQC sign-bytes. */
2590
+ declare const HYBRID_SIGN_BYTES_V2_DOMAIN = "qorechain-pqc-hybrid-v2";
2591
+ /** Domain tag of the v2 PQC key-migration sign-bytes. */
2592
+ declare const MIGRATION_SIGN_BYTES_V2_DOMAIN = "qorechain-key-migration-v2";
2593
+ /** Domain tag of the v2 bridge attestation sign-bytes. */
2594
+ declare const BRIDGE_ATTESTATION_V2_DOMAIN = "qorechain-bridge-attestation-v2";
2595
+ /** v1 hybrid form: `BE32(len B0) ‖ B0 ‖ BE32(len A) ‖ A`. */
2596
+ declare function hybridSignBytesV1(b0: Uint8Array, authInfo: Uint8Array): Uint8Array;
2597
+ /**
2598
+ * v2 hybrid form:
2599
+ * `"qorechain-pqc-hybrid-v2" ‖ BE64(len chainId) ‖ chainId ‖ BE32(len B0) ‖ B0 ‖ BE32(len A) ‖ A`.
2600
+ */
2601
+ declare function hybridSignBytesV2(chainId: string, b0: Uint8Array, authInfo: Uint8Array): Uint8Array;
2602
+ /**
2603
+ * The message the ML-DSA key signs for a hybrid transaction, in the given form.
2604
+ * `B0` is the `TxBody` WITHOUT the PQC extension; `authInfo` is the AuthInfo
2605
+ * bytes verbatim.
2606
+ */
2607
+ declare function hybridSignBytes(version: SignBytesVersion, chainId: string, b0: Uint8Array, authInfo: Uint8Array): Uint8Array;
2608
+ /** Inputs of the key-migration sign-bytes (both keys sign the same bytes). */
2609
+ interface MigrationSignBytesInput {
2610
+ chainId: string;
2611
+ /** The migrating account's `qor1…` address. */
2612
+ account: string;
2613
+ fromAlgorithmId: number;
2614
+ toAlgorithmId: number;
2615
+ /** The height the migration executes at. */
2616
+ height: number | bigint;
2617
+ /** The current public key (v2 only). */
2618
+ oldPublicKey: Uint8Array;
2619
+ /** The destination public key (v2 only). */
2620
+ newPublicKey: Uint8Array;
2621
+ }
2622
+ /**
2623
+ * v1 key-migration form (ASCII):
2624
+ * `qorechain-key-migration:chain=<chainId>:from=<from>:to=<to>:account=<account>:height=<height>`.
2625
+ */
2626
+ declare function migrationSignBytesV1(input: Omit<MigrationSignBytesInput, "oldPublicKey" | "newPublicKey">): Uint8Array;
2627
+ /**
2628
+ * v2 key-migration form:
2629
+ * `"qorechain-key-migration-v2" ‖ BE64(len chainId) ‖ chainId ‖ BE64(len account) ‖ account ‖
2630
+ * BE32(from) ‖ BE32(to) ‖ BE64(height) ‖ BE32(len oldPub) ‖ oldPub ‖ BE32(len newPub) ‖ newPub`.
2631
+ */
2632
+ declare function migrationSignBytesV2(input: MigrationSignBytesInput): Uint8Array;
2633
+ /** The key-migration sign-bytes in the given form. */
2634
+ declare function migrationSignBytes(version: SignBytesVersion, input: MigrationSignBytesInput): Uint8Array;
2635
+ /** Inputs of a bridge attestation payload (validator signers only). */
2636
+ interface BridgeAttestationSignBytesInput {
2637
+ chainId: string;
2638
+ chain: string;
2639
+ eventType: string;
2640
+ operationId: string;
2641
+ txHash: string;
2642
+ /** The amount as the chain prints it (`math.Int.String()`). */
2643
+ amount: string;
2644
+ asset: string;
2645
+ }
2646
+ /** v1 attestation form (ASCII, no chain id): `chain|eventType|operationId|txHash|amount|asset`. */
2647
+ declare function bridgeAttestationSignBytesV1(input: Omit<BridgeAttestationSignBytesInput, "chainId">): Uint8Array;
2648
+ /**
2649
+ * v2 attestation form: `"qorechain-bridge-attestation-v2"` then, for each of
2650
+ * `[chainId, chain, eventType, operationId, txHash, amount, asset]`, `BE64(len f) ‖ f`.
2651
+ */
2652
+ declare function bridgeAttestationSignBytesV2(input: BridgeAttestationSignBytesInput): Uint8Array;
2653
+ /** The bridge attestation sign-bytes in the given form. */
2654
+ declare function bridgeAttestationSignBytes(version: SignBytesVersion, input: BridgeAttestationSignBytesInput): Uint8Array;
2655
+ /** True when `chainId` is a network that verifies v1 until its v3.1.98 upgrade. */
2656
+ declare function isLegacySignBytesChain(chainId: string): boolean;
2657
+ /**
2658
+ * The form a network verifies, given the height at which the v3.1.98 plan was
2659
+ * applied on it (0 when it has not been). Client-side mirror of the chain's
2660
+ * own switch.
2661
+ */
2662
+ declare function signBytesVersionFor(chainId: string, v2AppliedHeight: number | bigint): SignBytesVersion;
2663
+ /**
2664
+ * Ask a node at which height an upgrade plan was applied (0 when it has not
2665
+ * been). Defaults to {@link SIGN_BYTES_V2_UPGRADE}; pass a name from
2666
+ * {@link SIGN_BYTES_V2_UPGRADES} to ask for an earlier one.
2667
+ * @throws on a transport or parse failure — the caller must not guess.
2668
+ */
2669
+ declare function fetchSignBytesV2AppliedHeight(rest: string, fetchImpl?: FetchLike, upgradeName?: string): Promise<bigint>;
2670
+ /**
2671
+ * The greatest applied height across {@link SIGN_BYTES_V2_UPGRADES}, stopping
2672
+ * at the first positive one. 0 means no v2 upgrade has been applied.
2673
+ */
2674
+ declare function fetchSignBytesV2AppliedHeightAny(rest: string, fetchImpl?: FetchLike): Promise<bigint>;
2675
+ /** Options for {@link resolveSignBytesVersion}. */
2676
+ interface ResolveSignBytesVersionOptions {
2677
+ chainId: string;
2678
+ /** The network's REST (LCD) base URL. Required for `"auto"` on a legacy network. */
2679
+ rest?: string;
2680
+ /** `"auto"` (default) asks the network; `"v1"`/`"v2"` are returned as-is. */
2681
+ signBytesVersion?: SignBytesVersionOption;
2682
+ /** Injectable `fetch`. Defaults to `globalThis.fetch`. */
2683
+ fetch?: FetchLike;
2684
+ /** How long an answer is reused, in ms. Defaults to 60000. */
2685
+ ttlMs?: number;
2686
+ /** Bypass the cache (e.g. after a `pqc` code 21 refusal). */
2687
+ forceRefresh?: boolean;
2688
+ }
2689
+ /** Forget every cached answer. */
2690
+ declare function clearSignBytesCache(): void;
2691
+ /**
2692
+ * The form to sign for a network right now.
2693
+ *
2694
+ * - `"v1"` / `"v2"`: returned unchanged, no network call.
2695
+ * - `"auto"` on a chain that is not a legacy network: `"v2"`, no network call.
2696
+ * - `"auto"` on `qorechain-vladi` / `qorechain-diana`: asks `rest` whether the
2697
+ * v3.1.98 plan is applied; the answer is cached per (rest, chainId) for
2698
+ * `ttlMs` because a network can upgrade while a wallet stays open.
2699
+ *
2700
+ * @throws when a legacy network has no `rest`, or the query fails. Pass an
2701
+ * explicit `"v1"`/`"v2"` in that case — a wrong guess is refused on-chain.
2702
+ */
2703
+ declare function resolveSignBytesVersion(opts: ResolveSignBytesVersionOptions): Promise<SignBytesVersion>;
2704
+ /** The chain's message for a hybrid signature that does not verify (`pqc` code 21). */
2705
+ declare const HYBRID_SIGN_BYTES_REJECTION_LOG = "hybrid PQC signature verification failed";
2706
+ /**
2707
+ * True when a broadcast failure is the chain refusing the hybrid PQC signature
2708
+ * (`pqc` code 21) — the symptom of signing the wrong sign-bytes form. Accepts a
2709
+ * thrown cosmjs `BroadcastTxError` (`code`, `codespace`, `log`), a
2710
+ * `DeliverTxResponse`-like result (`code`, `rawLog`), or a plain `Error`.
2711
+ * Code 21 from any other codespace does NOT match.
2712
+ */
2713
+ declare function isHybridSignBytesRejection(x: unknown): boolean;
2714
+
2496
2715
  /**
2497
2716
  * End-to-end hybrid (classical + post-quantum) transaction signing for
2498
2717
  * QoreChain.
@@ -2513,8 +2732,14 @@ declare function attachHybridExtension(body: TxBody, ext: PQCHybridSignature$1,
2513
2732
  * messages/memo/timeoutHeight but NOT the `PQCHybridSignature` extension.
2514
2733
  * - `A` = the tx `authInfoBytes`, verbatim — the same bytes that are
2515
2734
  * 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).
2735
+ * - PQC signed message = the hybrid sign-bytes in the form the TARGET network
2736
+ * verifies (see ./signbytes):
2737
+ * v1: `BE32(len(B0)) || B0 || BE32(len(A)) || A`
2738
+ * v2: `"qorechain-pqc-hybrid-v2" || BE64(len chainId) || chainId || v1-body`
2739
+ * A network verifies exactly one form at any height. `qorechain-vladi` and
2740
+ * `qorechain-diana` switch from v1 to v2 when their v3.1.98 upgrade is
2741
+ * applied (at different heights); other chains are v2 from genesis. The
2742
+ * default `signBytesVersion: "auto"` asks the network (needs `rest`).
2518
2743
  * - PQC signature = `ml_dsa87.sign(pqcSecretKey, message)` (pure
2519
2744
  * ML-DSA-87, empty context) — 4627 bytes for Dilithium-5.
2520
2745
  * - The `PQCHybridSignature` extension is then added to
@@ -2577,6 +2802,19 @@ interface BuildHybridTxOptions {
2577
2802
  * is expected to already be registered via `MsgRegisterPQCKey`).
2578
2803
  */
2579
2804
  includePqcPublicKey?: boolean;
2805
+ /**
2806
+ * Which hybrid sign-bytes form to sign. `"auto"` (default) asks the network
2807
+ * via `rest` (see {@link resolveSignBytesVersion}); `"v1"` / `"v2"` force a
2808
+ * form. On `qorechain-vladi` / `qorechain-diana`, `"auto"` without `rest`
2809
+ * throws rather than guess.
2810
+ */
2811
+ signBytesVersion?: SignBytesVersionOption;
2812
+ /** The network's REST (LCD) base URL, used by `signBytesVersion: "auto"`. */
2813
+ rest?: string;
2814
+ /** Injectable `fetch` for the `"auto"` lookup. Defaults to `globalThis.fetch`. */
2815
+ fetch?: FetchLike;
2816
+ /** Bypass the cached `"auto"` answer. */
2817
+ forceRefreshSignBytesVersion?: boolean;
2580
2818
  }
2581
2819
  /** The fully assembled hybrid transaction and the intermediate artifacts. */
2582
2820
  interface BuiltHybridTx {
@@ -2590,6 +2828,8 @@ interface BuiltHybridTx {
2590
2828
  pqcSignedMessage: Uint8Array;
2591
2829
  /** The raw ML-DSA-87 signature (Dilithium-5: 4627 bytes). */
2592
2830
  pqcSignature: Uint8Array;
2831
+ /** The sign-bytes form the PQC signature was computed over. */
2832
+ signBytesVersion: SignBytesVersion;
2593
2833
  }
2594
2834
  /**
2595
2835
  * Build a fully signed hybrid transaction following the chain contract.
@@ -2666,8 +2906,8 @@ declare function signAndBroadcastHybrid(opts: SignAndBroadcastHybridOptions): Pr
2666
2906
  * only for the one-time, bootstrap-exempt `MsgRegisterPQCKeyV2`).
2667
2907
  *
2668
2908
  * 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
2909
+ * helpers ({@link ../tx/hybrid.encodeHybridExtension}, the per-network hybrid
2910
+ * sign-bytes ({@link ./signbytes.hybridSignBytes}), and {@link ../accounts/pqc.buildHybridSignatureExtension}); only the
2671
2911
  * classical hash (keccak vs sha256) and the pubkey type URL change here.
2672
2912
  */
2673
2913
 
@@ -2710,6 +2950,13 @@ interface EthSignParams {
2710
2950
  * `value` is already a `Uint8Array`) are accepted.
2711
2951
  */
2712
2952
  encodeMessage?: (m: EncodeObject) => Any;
2953
+ /**
2954
+ * The hybrid sign-bytes form (hybrid signing only). Resolve it with
2955
+ * {@link resolveSignBytesVersion} for the target network. When omitted, a
2956
+ * chain born on v2 gets `"v2"`; on `qorechain-vladi` / `qorechain-diana`
2957
+ * (which switch at their own upgrade heights) omitting it throws.
2958
+ */
2959
+ signBytesVersion?: SignBytesVersion;
2713
2960
  }
2714
2961
  /** The result of an eth-native sign: the broadcastable `TxRaw` and artifacts. */
2715
2962
  interface SignedEthTx {
@@ -2736,7 +2983,8 @@ declare function signClassicalEth(params: EthSignParams): SignedEthTx;
2736
2983
  * Sign a native tx with the eth_secp256k1 + ML-DSA-87 HYBRID scheme.
2737
2984
  *
2738
2985
  * 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`.
2986
+ * (`B0`) and `authInfoBytes`, in the hybrid sign-bytes form the network verifies
2987
+ * (`params.signBytesVersion`, see ./signbytes).
2740
2988
  * The classical signature then covers the FINAL body (with the extension) via
2741
2989
  * SIGN_MODE_DIRECT (keccak256 hash). This mirrors the SDK's existing hybrid path
2742
2990
  * ({@link ../tx/hybrid-tx.buildHybridTx}); only the classical hash and the pubkey
@@ -2795,6 +3043,15 @@ interface EthNativeSignerOptions {
2795
3043
  * `MsgRegisterPQCKeyV2`).
2796
3044
  */
2797
3045
  signMode?: "hybrid" | "classical";
3046
+ /**
3047
+ * Hybrid sign-bytes form. `"auto"` (default) asks the network via `rest` in
3048
+ * {@link EthNativeSigner.signAndBroadcast}; `"v1"` / `"v2"` force a form.
3049
+ */
3050
+ signBytesVersion?: SignBytesVersionOption;
3051
+ /** The network's REST (LCD) base URL, used by `signBytesVersion: "auto"`. */
3052
+ rest?: string;
3053
+ /** Injectable `fetch` for the `"auto"` lookup. */
3054
+ fetch?: FetchLike;
2798
3055
  }
2799
3056
  /** Params for building/broadcasting a tx with {@link EthNativeSigner}. */
2800
3057
  interface EthTxParams extends AccountSequence {
@@ -2803,6 +3060,11 @@ interface EthTxParams extends AccountSequence {
2803
3060
  fee: StdFee;
2804
3061
  memo?: string;
2805
3062
  timeoutHeight?: bigint;
3063
+ /**
3064
+ * The resolved hybrid sign-bytes form for {@link EthNativeSigner.sign}.
3065
+ * {@link EthNativeSigner.signAndBroadcast} resolves it when omitted.
3066
+ */
3067
+ signBytesVersion?: SignBytesVersion;
2806
3068
  }
2807
3069
  /**
2808
3070
  * Sign QoreChain native txs from a unified eth-native account.
@@ -2817,7 +3079,15 @@ declare class EthNativeSigner {
2817
3079
  private readonly key;
2818
3080
  private readonly registry;
2819
3081
  private readonly signMode;
3082
+ private readonly signBytesVersion;
3083
+ private readonly rest?;
3084
+ private readonly fetchImpl?;
2820
3085
  constructor(account: UnifiedAccount, opts?: EthNativeSignerOptions);
3086
+ /**
3087
+ * The hybrid sign-bytes form for `chainId` under this signer's settings.
3088
+ * Pass `forceRefresh` to bypass the cached answer.
3089
+ */
3090
+ resolveSignBytesVersion(chainId: string, forceRefresh?: boolean): Promise<SignBytesVersion>;
2821
3091
  /** Encode a message to `Any` via the bound registry. */
2822
3092
  private encode;
2823
3093
  /** Build and sign a `TxRaw` for the given messages. Does not broadcast. */
@@ -2930,6 +3200,41 @@ declare const MsgRegisterSVMPQCKey: MessageFns$p<MsgRegisterSVMPQCKey>;
2930
3200
  interface MsgRegisterSVMPQCKeyResponse {
2931
3201
  }
2932
3202
  declare const MsgRegisterSVMPQCKeyResponse: MessageFns$p<MsgRegisterSVMPQCKeyResponse>;
3203
+ /**
3204
+ * SVMParams mirrors the module's runtime parameters so governance can replace
3205
+ * them wholesale. The store keeps them as JSON, so the handler converts.
3206
+ */
3207
+ interface SVMParams {
3208
+ maxProgramSize: string;
3209
+ maxAccountDataSize: string;
3210
+ computeBudgetMax: string;
3211
+ lamportsPerByte: string;
3212
+ rentExemptionMulti: string;
3213
+ enabled: boolean;
3214
+ svmSlotOffset: string;
3215
+ defaultSigScheme: number;
3216
+ maxCpi: number;
3217
+ }
3218
+ declare const SVMParams: MessageFns$p<SVMParams>;
3219
+ /**
3220
+ * MsgUpdateParams replaces the SVM runtime parameters wholesale.
3221
+ *
3222
+ * WHY THIS EXISTS. Until now x/svm had no governance message at all, so there was
3223
+ * no transaction that could turn the lane off. When the August 2026 incident
3224
+ * required closing it, the only available guarantee was a compile-time constant
3225
+ * (SVMLaneHardDisabled), which means every later change of mind costs a binary
3226
+ * release and a coordinated upgrade. With this message, disabling the lane is a
3227
+ * governance proposal like any other.
3228
+ */
3229
+ interface MsgUpdateParams {
3230
+ /** authority must be the governance module account. */
3231
+ authority: string;
3232
+ params?: SVMParams | undefined;
3233
+ }
3234
+ declare const MsgUpdateParams: MessageFns$p<MsgUpdateParams>;
3235
+ interface MsgUpdateParamsResponse {
3236
+ }
3237
+ declare const MsgUpdateParamsResponse: MessageFns$p<MsgUpdateParamsResponse>;
2933
3238
  type MsgDefinition$a = typeof MsgDefinition$a;
2934
3239
  declare const MsgDefinition$a: {
2935
3240
  readonly name: "Msg";
@@ -2967,6 +3272,14 @@ declare const MsgDefinition$a: {
2967
3272
  readonly responseStream: false;
2968
3273
  readonly options: {};
2969
3274
  };
3275
+ readonly updateParams: {
3276
+ readonly name: "UpdateParams";
3277
+ readonly requestType: typeof MsgUpdateParams;
3278
+ readonly requestStream: false;
3279
+ readonly responseType: typeof MsgUpdateParamsResponse;
3280
+ readonly responseStream: false;
3281
+ readonly options: {};
3282
+ };
2970
3283
  };
2971
3284
  };
2972
3285
  type Builtin$p = Date | Function | Uint8Array | string | number | boolean | undefined;
@@ -2990,10 +3303,13 @@ declare const tx$a_MsgExecuteProgram: typeof MsgExecuteProgram;
2990
3303
  declare const tx$a_MsgExecuteProgramResponse: typeof MsgExecuteProgramResponse;
2991
3304
  declare const tx$a_MsgRegisterSVMPQCKey: typeof MsgRegisterSVMPQCKey;
2992
3305
  declare const tx$a_MsgRegisterSVMPQCKeyResponse: typeof MsgRegisterSVMPQCKeyResponse;
3306
+ declare const tx$a_MsgUpdateParams: typeof MsgUpdateParams;
3307
+ declare const tx$a_MsgUpdateParamsResponse: typeof MsgUpdateParamsResponse;
2993
3308
  declare const tx$a_SVMAuth: typeof SVMAuth;
3309
+ declare const tx$a_SVMParams: typeof SVMParams;
2994
3310
  declare const tx$a_SvmAccountMeta: typeof SvmAccountMeta;
2995
3311
  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 };
3312
+ 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
3313
  }
2998
3314
 
2999
3315
  declare const protobufPackage$n = "qorechain.bridge.v1";
@@ -4460,15 +4776,35 @@ declare namespace tx$2 {
4460
4776
  declare const protobufPackage$f = "qorechain.crossvm.v1";
4461
4777
  interface MsgCrossVMCall {
4462
4778
  sender: string;
4779
+ /**
4780
+ * source_vm is IGNORED on input. The chain derives the origin lane from the
4781
+ * execution context, because a caller describing itself cannot be evidence of
4782
+ * what it is. Retained so the field number stays taken and older clients that
4783
+ * still set it are accepted rather than rejected.
4784
+ */
4463
4785
  sourceVm: string;
4464
4786
  targetVm: string;
4465
4787
  targetContract: string;
4466
4788
  payload: Uint8Array;
4467
4789
  funds: Coin[];
4790
+ /**
4791
+ * async queues the call instead of executing it, to be dispatched later by
4792
+ * ProcessQueue. The default is to execute now and return the answer, which is
4793
+ * what a caller that needs the result requires.
4794
+ */
4795
+ async: boolean;
4468
4796
  }
4469
4797
  declare const MsgCrossVMCall: MessageFns$f<MsgCrossVMCall>;
4470
4798
  interface MsgCrossVMCallResponse {
4471
4799
  messageId: string;
4800
+ /** executed is false for a queued call, whose result is not known yet. */
4801
+ executed: boolean;
4802
+ /**
4803
+ * data is the callee's return value, carried back to the caller. A CosmWasm
4804
+ * contract reads it from the submessage reply.
4805
+ */
4806
+ data: Uint8Array;
4807
+ gasUsed: string;
4472
4808
  }
4473
4809
  declare const MsgCrossVMCallResponse: MessageFns$f<MsgCrossVMCallResponse>;
4474
4810
  interface MsgProcessQueue {
@@ -4484,7 +4820,11 @@ declare const MsgDefinition$1: {
4484
4820
  readonly name: "Msg";
4485
4821
  readonly fullName: "qorechain.crossvm.v1.Msg";
4486
4822
  readonly methods: {
4487
- /** CrossVMCall submits a cross-VM message to the queue. */
4823
+ /**
4824
+ * CrossVMCall invokes a contract on another VM. It executes within the
4825
+ * transaction and returns the callee's answer, unless async is set, in which
4826
+ * case it is queued for ProcessQueue to dispatch later.
4827
+ */
4488
4828
  readonly crossVMCall: {
4489
4829
  readonly name: "CrossVMCall";
4490
4830
  readonly requestType: typeof MsgCrossVMCall;
@@ -4738,6 +5078,17 @@ declare const svm: {
4738
5078
  createAccount: (value: PartialMsg<MsgCreateAccount>) => EncodeObject;
4739
5079
  executeProgram: (value: PartialMsg<MsgExecuteProgram>) => EncodeObject;
4740
5080
  registerSvmPqcKey: (value: PartialMsg<MsgRegisterSVMPQCKey>) => EncodeObject;
5081
+ /**
5082
+ * Replace the x/svm runtime parameters wholesale (chain v3.1.97).
5083
+ *
5084
+ * GOVERNANCE ONLY: `authority` must be the governance module account, so this
5085
+ * message is submitted inside a gov proposal, not signed by a user. It is what
5086
+ * makes enabling/disabling the SVM lane a proposal rather than a binary
5087
+ * release. `params` is replaced in full — send every field, not just the ones
5088
+ * you mean to change. `rentExemptionMulti` is a `LegacyDec` string (e.g.
5089
+ * `"2.000000000000000000"`).
5090
+ */
5091
+ updateParams: (value: PartialMsg<MsgUpdateParams>) => EncodeObject;
4741
5092
  };
4742
5093
  /** Light-node lifecycle message composers. */
4743
5094
  declare const lightnode: {
@@ -6920,6 +7271,10 @@ declare const msg: {
6920
7271
  readonly [Symbol.toStringTag]?: "Uint8Array" | undefined;
6921
7272
  } | undefined;
6922
7273
  }) => _cosmjs_proto_signing.EncodeObject;
7274
+ updateParams: (value: {
7275
+ authority?: string | undefined;
7276
+ params?: SVMParams | undefined;
7277
+ }) => _cosmjs_proto_signing.EncodeObject;
6923
7278
  };
6924
7279
  readonly lightnode: {
6925
7280
  registerLightNode: (value: {
@@ -7382,6 +7737,7 @@ declare const msg: {
7382
7737
  denom?: string | undefined;
7383
7738
  amount?: string | undefined;
7384
7739
  } | undefined)[] | undefined;
7740
+ async?: boolean | undefined;
7385
7741
  }) => _cosmjs_proto_signing.EncodeObject;
7386
7742
  processQueue: (value: {
7387
7743
  authority?: string | undefined;
@@ -10162,6 +10518,12 @@ declare function createRollupClient(tx: TxClient, opts?: CreateRollupClientOptio
10162
10518
  * under a single signature — e.g. an EVM call, an SVM call, and a CosmWasm call
10163
10519
  * that all land together or not at all.
10164
10520
  *
10521
+ * A call executes inside the transaction and returns the callee's answer: the
10522
+ * result carries `executed`, `data` (the return value) and `gasUsed`, decoded
10523
+ * from `MsgCrossVMCallResponse`. Pass `async: true` to queue the call for a
10524
+ * later `ProcessQueue` dispatch instead, in which case nothing has run yet and
10525
+ * only the message id is meaningful.
10526
+ *
10165
10527
  * Per-VM payload encoding (pick exactly one shape per call):
10166
10528
  * - `{ payload }` — raw bytes / hex, passed through unchanged.
10167
10529
  * - `{ evm: { abi, functionName, args } }` — ABI-encoded with viem's
@@ -10222,7 +10584,15 @@ interface CrossVMWriteOptions {
10222
10584
  }
10223
10585
  /** Common cross-VM call fields (without the payload or write options). */
10224
10586
  interface CrossVMCallBase {
10225
- /** The VM the call originates from. Defaults to `"evm"`. */
10587
+ /**
10588
+ * The VM the call claims to originate from.
10589
+ *
10590
+ * IGNORED BY THE CHAIN (v3.1.97). The chain derives the origin lane from the
10591
+ * execution context rather than trusting the caller's self-description, so
10592
+ * setting this changes nothing about how the call is handled. The field is
10593
+ * retained — and still sent, defaulting to `"evm"` — purely for wire
10594
+ * compatibility, so older nodes and clients keep accepting the message.
10595
+ */
10226
10596
  sourceVm?: VMType;
10227
10597
  /** The VM the call targets. */
10228
10598
  targetVm: VMType;
@@ -10230,13 +10600,42 @@ interface CrossVMCallBase {
10230
10600
  targetContract: string;
10231
10601
  /** Optional funds (coins) to forward with the call. */
10232
10602
  funds?: Coin$1[];
10603
+ /**
10604
+ * Queue the call for a later `ProcessQueue` dispatch instead of executing it
10605
+ * inside this transaction.
10606
+ *
10607
+ * Defaults to `false`, matching the chain's default: execute now and return
10608
+ * the callee's answer (see {@link CrossVMCallResult.data}). With `async: true`
10609
+ * the call is only enqueued, so the response carries `executed: false` and no
10610
+ * `data` — use it when you do not need the result in this transaction.
10611
+ */
10612
+ async?: boolean;
10233
10613
  }
10234
10614
  /** Options for a single cross-VM call (base + payload). */
10235
10615
  type CrossVMCallOptions = CrossVMCallBase & PayloadInput;
10236
10616
  /** Options for {@link CrossVMClient.call} (adds write-path options). */
10237
10617
  type CallOptions = CrossVMCallOptions & CrossVMWriteOptions;
10618
+ /**
10619
+ * The decoded `MsgCrossVMCallResponse` fields for one cross-VM call.
10620
+ *
10621
+ * Populated from the tx's per-message responses when the node returns them
10622
+ * (`commit` broadcasts). When they are absent — a `sync`/`async` broadcast, or
10623
+ * an older node — `executed` is `false`, `data` is empty and `gasUsed` is `0n`;
10624
+ * read the result with {@link CrossVMClient.getMessage} instead.
10625
+ */
10626
+ interface CrossVMCallOutcome {
10627
+ /**
10628
+ * Whether the callee actually ran inside this transaction. `false` for a
10629
+ * queued (`async: true`) call, whose result is not known yet.
10630
+ */
10631
+ executed: boolean;
10632
+ /** The callee's return value. Empty when the call was queued. */
10633
+ data: Uint8Array;
10634
+ /** Gas consumed by the callee. `0n` when the call was queued. */
10635
+ gasUsed: bigint;
10636
+ }
10238
10637
  /** Result of a single {@link CrossVMClient.call}. */
10239
- interface CrossVMCallResult {
10638
+ interface CrossVMCallResult extends CrossVMCallOutcome {
10240
10639
  /** The cross-VM message id assigned by the chain (parsed from tx events). */
10241
10640
  messageId: string;
10242
10641
  /** The raw broadcast result. */
@@ -10246,6 +10645,13 @@ interface CrossVMCallResult {
10246
10645
  interface CrossVMAtomicResult {
10247
10646
  /** The cross-VM message ids assigned by the chain (best-effort, from events). */
10248
10647
  messageIds: string[];
10648
+ /**
10649
+ * The decoded per-call outcomes, in the order the calls were passed.
10650
+ *
10651
+ * Empty when the node returned no per-message responses (see
10652
+ * {@link CrossVMCallOutcome}).
10653
+ */
10654
+ outcomes: CrossVMCallOutcome[];
10249
10655
  /** The raw broadcast result for the single packing transaction. */
10250
10656
  result: BroadcastResult;
10251
10657
  }
@@ -10289,7 +10695,9 @@ interface CreateCrossVMClientOptions {
10289
10695
  * Create a {@link CrossVMClient} bound to a connected {@link TxClient}.
10290
10696
  *
10291
10697
  * The `TxClient`'s sender address is used as the message `sender`, so the caller
10292
- * never repeats their address. `sourceVm` defaults to `"evm"`.
10698
+ * never repeats their address. `sourceVm` still defaults to `"evm"` on the wire
10699
+ * but is ignored by the chain (see {@link CrossVMCallBase.sourceVm}); `async`
10700
+ * defaults to `false`, i.e. execute now and return the callee's answer.
10293
10701
  *
10294
10702
  * @param tx - A connected signing client (from `client.connectTx(signer)`).
10295
10703
  * @param opts - Optional typed query client and/or `qor_` client for reads.
@@ -10514,6 +10922,6 @@ declare function migrateToHybrid(tx: TxClient, opts: MigrateToHybridOptions): Pr
10514
10922
  * callers who want to compose them directly. Internal helpers are not exported.
10515
10923
  */
10516
10924
  /** SDK version. */
10517
- declare const VERSION = "0.7.0";
10925
+ declare const VERSION = "0.8.0";
10518
10926
 
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 };
10927
+ 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, SIGN_BYTES_V2_UPGRADES, 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, fetchSignBytesV2AppliedHeightAny, 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 };