@btc-vision/transaction
Version:
OPNet transaction library allows you to create and sign transactions for the OPNet network.
133 lines • 4.62 kB
TypeScript
import { TransactionType } from '../../enums/TransactionType.js';
import { ChainId } from '../../../network/ChainId.js';
import { TypeSpecificData } from './ITypeSpecificData.js';
/**
* Format version for serialization compatibility
*/
export declare const SERIALIZATION_FORMAT_VERSION = 1;
/**
* Magic byte for identifying serialized transaction state
*/
export declare const SERIALIZATION_MAGIC_BYTE = 66;
/**
* Version header for forward compatibility
*/
export interface SerializationHeader {
/** Format version for migration support */
readonly formatVersion: number;
/** Consensus version at serialization time */
readonly consensusVersion: number;
/** Transaction type discriminant */
readonly transactionType: TransactionType;
/** Chain identifier */
readonly chainId: ChainId;
/** Timestamp of serialization (Unix epoch ms) */
readonly timestamp: number;
}
/**
* Serialized UTXO representation
*/
export interface SerializedUTXO {
/** Transaction ID (32 bytes hex) */
readonly transactionId: string;
/** Output index (vout) */
readonly outputIndex: number;
/** Value in satoshis */
readonly value: string;
/** Script pubkey hex */
readonly scriptPubKeyHex: string;
/** Address derived from script (for signer lookup in rotation mode) */
readonly scriptPubKeyAddress?: string;
/** P2SH redeem script (hex) */
readonly redeemScript?: string;
/** P2WSH witness script (hex) */
readonly witnessScript?: string;
/** Full previous transaction for legacy scripts (hex) */
readonly nonWitnessUtxo?: string;
}
/**
* Serialized output representation
*/
export interface SerializedOutput {
/** Value in satoshis */
readonly value: number;
/** Destination address */
readonly address?: string;
/** Output script (hex) */
readonly script?: string;
/** Taproot internal key (hex) */
readonly tapInternalKey?: string;
}
/**
* Serialized address-to-input-index mapping for address rotation
*/
export interface SerializedSignerMapping {
/** Address that should sign these inputs */
readonly address: string;
/** Input indices this address should sign */
readonly inputIndices: number[];
}
/**
* Base transaction parameters (common to all types)
*/
export interface SerializedBaseParams {
/** Sender address */
readonly from: string;
/** Recipient address (optional for some tx types) */
readonly to?: string;
/** Fee rate in sat/vB */
readonly feeRate: number;
/** OPNet priority fee */
readonly priorityFee: string;
/** OPNet gas sat fee */
readonly gasSatFee: string;
/** Network identifier */
readonly networkName: 'mainnet' | 'testnet' | 'opnetTestnet' | 'regtest';
/** Transaction version (1, 2, or 3) */
readonly txVersion: number;
/** Optional note data (hex) */
readonly note?: string;
/** Whether to include anchor output */
readonly anchor: boolean;
/** Debug fee logging */
readonly debugFees?: boolean;
}
/**
* Pre-computed data that must be preserved for deterministic rebuild
*/
export interface PrecomputedData {
/** Compiled target script (hex) - saves recomputation */
readonly compiledTargetScript?: string;
/** Random bytes used (hex) - MUST be preserved for determinism */
readonly randomBytes?: string;
/** Estimated fees from initial build */
readonly estimatedFees?: string;
/** Contract seed for deployment (hex) */
readonly contractSeed?: string;
/** Contract address for deployment */
readonly contractAddress?: string;
}
/**
* Complete serializable transaction state
*/
export interface ISerializableTransactionState {
/** Version and type header */
readonly header: SerializationHeader;
/** Base transaction parameters */
readonly baseParams: SerializedBaseParams;
/** Primary UTXOs */
readonly utxos: SerializedUTXO[];
/** Optional additional inputs */
readonly optionalInputs: SerializedUTXO[];
/** Optional additional outputs */
readonly optionalOutputs: SerializedOutput[];
/** Whether address rotation mode is enabled */
readonly addressRotationEnabled: boolean;
/** Address to input indices mapping for rotation mode */
readonly signerMappings: SerializedSignerMapping[];
/** Type-specific data (discriminated by header.transactionType) */
readonly typeSpecificData: TypeSpecificData;
/** Pre-computed data for deterministic rebuild */
readonly precomputedData: PrecomputedData;
}
//# sourceMappingURL=ISerializableState.d.ts.map