UNPKG

@btc-vision/transaction

Version:

OPNet transaction library allows you to create and sign transactions for the OPNet network.

178 lines 6.43 kB
import { AddressMap } from '../deterministic/AddressMap.js'; import { ExtendedAddressMap } from '../deterministic/ExtendedAddressMap.js'; import { Address } from '../keypair/Address.js'; import { BufferLike, i16, i32, i64, i8, Selector, u16, u32, u8 } from '../utils/types.js'; /** * Represents a Schnorr signature paired with the signer's Address. * This class bundles a 64-byte Schnorr signature with its associated * full Address (both MLDSA and tweaked keys), providing a complete signed data structure * for Bitcoin Taproot-compatible signatures. */ export interface SchnorrSignature { /** The signer's Address containing both MLDSA and tweaked public keys */ readonly address: Address; /** The 64-byte Schnorr signature */ readonly signature: Uint8Array; } export declare class BinaryReader { private buffer; private currentOffset; constructor(bytes: BufferLike); get byteLength(): number; static stringCompare(a: string, b: string): number; static bigintCompare(a: bigint, b: bigint): number; static numberCompare(a: number, b: number): number; setBuffer(bytes: BufferLike): void; length(): number; bytesLeft(): number; /** * Reads a single signed byte (i8). */ readI8(): i8; /** * Reads a signed 16-bit integer. By default, big-endian. * @param be - Endianness; true means big-endian (the default). */ readI16(be?: boolean): i16; /** * Reads a signed 32-bit integer. By default, big-endian. * @param be - Endianness; true means big-endian (the default). */ readI32(be?: boolean): i32; /** * Reads a signed 64-bit integer. By default, big-endian. * @param be - Endianness; true means big-endian (the default). */ readI64(be?: boolean): i64; /** * Reads a single unsigned byte (u8). */ readU8(): u8; /** * Reads an unsigned 16-bit integer. By default, big-endian. * @param be - Endianness; true means big-endian (the default). */ readU16(be?: boolean): u16; /** * Reads an unsigned 32-bit integer. By default, big-endian. * @param be - Endianness; true means big-endian (the default). */ readU32(be?: boolean): u32; /** * Reads an unsigned 64-bit integer. By default, big-endian. * @param be - Endianness; true means big-endian (the default). */ readU64(be?: boolean): bigint; /** * Reads a 128-bit unsigned integer. By default, read big-endian. * @param be - Endianness; true => big-endian (default). */ readU128(be?: boolean): bigint; /** * Reads a 256-bit unsigned integer. Same approach as readU128. * @param be - Endianness; true => big-endian (default). */ readU256(be?: boolean): bigint; /** * Reads a 128-bit signed integer. Interpret the sign bit if big-endian. * @param be - Endianness; true => big-endian (default). */ readI128(be?: boolean): bigint; /** * Read a boolean (u8 != 0). */ readBoolean(): boolean; /** * Reads 32 bits */ readSelector(): Selector; /** * Reads a raw sequence of bytes (length must be known). * If zeroStop = true, stops if we encounter 0x00 early. */ readBytes(length: u32, zeroStop?: boolean): Uint8Array; /** * Reads a string of the given length in raw bytes. By default, do NOT zero-stop * (matching how we wrote the raw bytes). */ readString(length: u32): string; /** * Reads a string that was written as [u16 length][raw bytes]. */ readStringWithLength(be?: boolean): string; /** * Reads an address (32 bytes MLDSA key hash only). */ readAddress(): Address; /** * Reads the tweaked public key portion (32 bytes) and returns it as a raw Uint8Array. * Use this when you only need the tweaked key without the full Address object. */ readTweakedPublicKey(): Uint8Array; /** * Reads a full address with both MLDSA key hash and tweaked public key (64 bytes total). * Format: [32 bytes tweakedPublicKey][32 bytes MLDSA key hash] * * This is the equivalent of btc-runtime's readExtendedAddress(). * * @returns An Address instance with both keys set */ readExtendedAddress(): Address; /** * Reads a Schnorr signature with its associated full Address. * Format: [64 bytes full Address][64 bytes signature] * * Used for deserializing signed data where both the signer's address * and their Schnorr signature are stored together. * * @returns A SchnorrSignature containing the address and signature */ readSchnorrSignature(): SchnorrSignature; /** * Reads bytes written as [u32 length][bytes]. * @param maxLength if > 0, enforces an upper bound * @param be */ readBytesWithLength(maxLength?: number, be?: boolean): Uint8Array; readArrayOfBuffer(be?: boolean): Uint8Array[]; readAddressArray(be?: boolean): Address[]; readU256Array(be?: boolean): bigint[]; readU128Array(be?: boolean): bigint[]; readU64Array(be?: boolean): bigint[]; readU32Array(be?: boolean): u32[]; readU16Array(be?: boolean): u16[]; readU8Array(): u8[]; readStringArray(be?: boolean): string[]; readBytesArray(be?: boolean): Uint8Array[]; /** * Reads [u16 length][ (address, u256) pairs ]. */ readAddressValueTuple(be?: boolean): AddressMap<bigint>; /** * Reads an array of full addresses (64 bytes each). * Format: [u16 length][FullAddress 0][FullAddress 1]... */ readExtendedAddressArray(be?: boolean): Address[]; /** * Reads a map of full Address -> u256 using the tweaked key for map lookup. * Format: [u16 length][FullAddress key][u256 value]... * * This is the equivalent of btc-runtime's readExtendedAddressMapU256(). */ readExtendedAddressMapU256(be?: boolean): ExtendedAddressMap<bigint>; getOffset(): u16; setOffset(offset: u16): void; /** * Verifies we have enough bytes in the buffer to read up to `size`. */ verifyEnd(size: number): void; /** * Utility: reverses a byte array in-place or returns a reversed copy. */ private reverseBytes; /** * Utility: turn bytes into a hex string without `0x` prefix. */ private toHexString; } //# sourceMappingURL=BinaryReader.d.ts.map