|
1 | 1 | /** |
2 | | - * Transaction parsing — standalone function that decodes extrinsic bytes |
| 2 | + * Transaction parsing — standalone function that decodes a DotTransaction |
3 | 3 | * into structured data (pallet, method, args, nonce, etc.). |
4 | 4 | * |
5 | 5 | * This is separate from the DotTransaction class, which handles signing. |
|
8 | 8 | */ |
9 | 9 |
|
10 | 10 | import { ParserNamespace, MaterialJs, ParseContextJs } from "./wasm/wasm_dot"; |
11 | | -import { DotTransaction } from "./transaction"; |
| 11 | +import type { DotTransaction } from "./transaction"; |
12 | 12 | import type { ParseContext, ParsedTransaction } from "./types"; |
13 | 13 |
|
14 | | -/** |
15 | | - * Input type for parsing — accepts raw bytes, hex string, or DotTransaction. |
16 | | - */ |
17 | | -export type TransactionInput = Uint8Array | string | DotTransaction; |
18 | | - |
19 | 14 | /** |
20 | 15 | * Parse a DOT transaction into structured data. |
21 | 16 | * |
| 17 | + * Accepts a `DotTransaction` object (from `DotTransaction.fromBytes()`), |
| 18 | + * avoiding double deserialization. |
| 19 | + * |
22 | 20 | * Returns a plain `ParsedTransaction` object with decoded pallet, method, |
23 | 21 | * args, nonce, tip, era, etc. |
24 | 22 | * |
25 | | - * For a signable `DotTransaction` object, use `DotTransaction.fromBytes()` instead. |
26 | | - * |
27 | | - * @param input - Raw bytes, hex string (with or without 0x), or DotTransaction |
| 23 | + * @param tx - A DotTransaction instance (from DotTransaction.fromBytes()) |
28 | 24 | * @param context - Parsing context with chain material (required for decoding) |
29 | 25 | * @returns Parsed transaction data |
30 | 26 | * |
31 | 27 | * @example |
32 | 28 | * ```typescript |
33 | | - * import { parseTransaction } from '@bitgo/wasm-dot'; |
| 29 | + * import { DotTransaction, parseTransaction } from '@bitgo/wasm-dot'; |
34 | 30 | * |
35 | | - * const parsed = parseTransaction(txBytes, { material }); |
| 31 | + * const tx = DotTransaction.fromBytes(txBytes, context); |
| 32 | + * const parsed = parseTransaction(tx, { material }); |
36 | 33 | * console.log(parsed.method.pallet); // "balances" |
37 | 34 | * console.log(parsed.method.name); // "transferKeepAlive" |
38 | 35 | * ``` |
39 | 36 | */ |
40 | | -export function parseTransaction( |
41 | | - input: TransactionInput, |
42 | | - context?: ParseContext, |
43 | | -): ParsedTransaction { |
| 37 | +export function parseTransaction(tx: DotTransaction, context?: ParseContext): ParsedTransaction { |
44 | 38 | const ctx = context ? createParseContext(context) : undefined; |
45 | | - |
46 | | - if (input instanceof DotTransaction) { |
47 | | - return ParserNamespace.parseTransaction(input.toBytes(), ctx) as ParsedTransaction; |
48 | | - } |
49 | | - |
50 | | - if (input instanceof Uint8Array) { |
51 | | - return ParserNamespace.parseTransaction(input, ctx) as ParsedTransaction; |
52 | | - } |
53 | | - |
54 | | - // String input — let WASM handle hex parsing |
55 | | - return ParserNamespace.parseTransactionHex(input, ctx) as ParsedTransaction; |
| 39 | + return ParserNamespace.parseFromTransaction(tx.wasm, ctx) as ParsedTransaction; |
56 | 40 | } |
57 | 41 |
|
58 | 42 | /** |
|
0 commit comments