@btc-vision/bitcoin-rpc
Version:
The one and only fully typed Bitcoin RPC client for Node.js
63 lines (48 loc) • 1.81 kB
text/typescript
import { BitcoinVerbosity } from './BitcoinVerbosity.js';
import { VIn, VOut } from './BlockData.js';
export interface BitcoinRawTransactionParams {
txId: string;
blockHash?: string;
verbose?: BitcoinVerbosity;
}
export interface ScriptSig {
asm: string;
hex: string;
}
export interface ScriptPubKey {
asm?: string;
hex: string;
reqSigs?: number;
type?: string; // Consider enum if there are known, limited values for type
addresses?: string[];
address?: string; // Optional as it might not be present for unconfirmed transactions
}
export interface IRawTransaction {
/** The transaction id (little-endian tx hash) */
readonly txid: string;
/** The same hash in (possibly) witness-stripped form */
readonly hash: string;
/** Raw byte length of the serialized transaction */
readonly size: number;
/** Virtual size (vbytes) accounting for witness discount */
readonly vsize: number;
/** Weight units: vsize × 4 minus up to 3 bytes */
readonly weight: number;
/** nVersion field */
readonly version: number;
/** nLockTime field */
readonly locktime: number;
readonly vin: VIn[];
readonly vout: VOut[];
}
export interface TransactionDetail extends IRawTransaction {
in_active_chain?: boolean; // Optional as it only appears with "blockhash" argument
hex: string;
blockhash?: string; // Optional as it might not be present for unconfirmed transactions
confirmations?: number; // Optional for similar reason as blockhash
blocktime?: number; // Optional for similar reason as blockhash
time?: number; // Optional for similar reason as blockhash
}
export type RawTransaction<V extends BitcoinVerbosity> = V extends BitcoinVerbosity.RAW
? string
: TransactionDetail;