@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/README.md +68 -13
- package/dist/index.cjs +713 -91
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +464 -56
- package/dist/index.d.ts +464 -56
- package/dist/index.js +691 -91
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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
|
-
/**
|
|
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).
|
|
1755
|
-
*
|
|
1756
|
-
*
|
|
1757
|
-
*
|
|
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
|
-
*
|
|
1814
|
+
* REMOVED in v0.8.0 — the Phantom signature-derived account API.
|
|
1764
1815
|
*
|
|
1765
|
-
*
|
|
1766
|
-
*
|
|
1767
|
-
*
|
|
1768
|
-
*
|
|
1769
|
-
*
|
|
1770
|
-
*
|
|
1771
|
-
*
|
|
1772
|
-
*
|
|
1773
|
-
*
|
|
1774
|
-
*
|
|
1775
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
1788
|
-
*
|
|
1789
|
-
* yields the same account.
|
|
1832
|
+
* Use the authenticator lanes instead — see the module doc-comment and the
|
|
1833
|
+
* Authenticators guide.
|
|
1790
1834
|
*
|
|
1791
|
-
* @
|
|
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
|
|
1796
|
-
*
|
|
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
|
-
*
|
|
1863
|
+
* REMOVED in v0.8.0. Always throws.
|
|
1821
1864
|
*
|
|
1822
|
-
*
|
|
1823
|
-
*
|
|
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
|
-
*
|
|
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 =
|
|
2517
|
-
* (
|
|
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
|
|
2670
|
-
*
|
|
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`)
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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.
|
|
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,
|
|
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 };
|