@atomiqlabs/base
Version:
Base classes and interfaces for atomiq protocol
69 lines (68 loc) • 1.82 kB
TypeScript
/// <reference types="node" />
import { BtcBlock } from "../../btcrelay/types/BtcBlock";
import { Buffer } from "buffer";
export type BtcVout = {
value: number;
n: number;
scriptPubKey: {
asm?: string;
hex: string;
};
};
export type BtcVin = {
txid: string;
vout: number;
scriptSig: {
asm?: string;
hex: string;
};
sequence: number;
txinwitness: string[];
};
export type BtcTx = {
blockhash: string;
confirmations: number;
vsize: number;
txid: string;
hex: string;
raw: string;
locktime: number;
version: number;
outs: BtcVout[];
ins: BtcVin[];
};
export type BtcBlockWithTxs = {
height: number;
hash: string;
tx: BtcTx[];
};
export type BtcSyncInfo = {
ibd: boolean;
headers: number;
blocks: number;
verificationProgress: number;
};
export interface BitcoinRpc<T extends BtcBlock> {
isInMainChain(blockhash: string): Promise<boolean>;
getBlockHeader(blockhash: string): Promise<T>;
getMerkleProof(txId: string, blockhash: string): Promise<{
reversedTxId: Buffer;
pos: number;
merkle: Buffer[];
blockheight: number;
}>;
getTransaction(txId: string): Promise<BtcTx>;
getBlockhash(height: number): Promise<string>;
getBlockWithTransactions(blockhash: string): Promise<BtcBlockWithTxs>;
sendRawTransaction(rawTx: string): Promise<string>;
sendRawPackage(rawTx: string[]): Promise<string[]>;
getTipHeight(): Promise<number>;
getSyncInfo(): Promise<BtcSyncInfo>;
parseTransaction(rawTx: string): Promise<BtcTx>;
isSpent(utxo: string, confirmed?: boolean): Promise<boolean>;
getEffectiveFeeRate(btcTx: BtcTx): Promise<{
vsize: number;
fee: number;
feeRate: number;
}>;
}