opnet
Version:
The perfect library for building Bitcoin-based applications.
95 lines (72 loc) • 3.57 kB
text/typescript
import { OPNetTransactionTypes } from '../../../interfaces/opnet/OPNetTransactionTypes.js';
/** A single transaction input as exposed by the mempool API. */
export interface MempoolTransactionInput {
/** The txid of the referenced output. */
readonly transactionId: string;
/** The vout index of the referenced output. */
readonly outputIndex: number;
}
/** A single transaction output as exposed by the mempool API. */
export interface MempoolTransactionOutput {
/** The destination address, or `null` for unspendable outputs. */
readonly address: string | null;
/** The vout index within the transaction. */
readonly outputIndex: number;
/** The output value in satoshis (decimal string). */
readonly value: string;
/** The hex-encoded scriptPubKey. */
readonly scriptPubKey: string;
}
/** Shape of the server response for the `GET_LATEST_PENDING_TRANSACTIONS` RPC method. */
export interface PendingTransactionsResult {
readonly transactions?: IMempoolTransactionData[];
}
/**
* Raw wire-format representation of a pending mempool transaction returned by the API.
*
* OPNet-specific fields (`theoreticalGasLimit`, `priorityFee`, `from`,
* `contractAddress`, `calldata`, `bytecode`) are only present when
* `transactionType` is **not** `Generic`.
*/
export interface IMempoolTransactionData {
/** Internal transaction identifier (txid). */
readonly id: string;
/** ISO-8601 timestamp of when the transaction was first seen (e.g. `"2025-02-19T15:30:45.123Z"`). */
readonly firstSeen: string;
/** Block height at which the transaction was observed, as a `0x`-prefixed hex string. */
readonly blockHeight: string;
/** The OPNet transaction type (`Generic`, `Interaction`, or `Deployment`). */
readonly transactionType: OPNetTransactionTypes | string;
/** Whether the transaction was submitted as a PSBT. */
readonly psbt: boolean;
/** The transaction inputs. */
readonly inputs: MempoolTransactionInput[];
/** The transaction outputs. */
readonly outputs: MempoolTransactionOutput[];
/** The full raw transaction as a hex string. */
readonly raw: string;
}
/** OPNet wire-format transaction data with required OPNet-specific fields. */
export interface IMempoolOPNetTransactionData extends IMempoolTransactionData {
/** Theoretical gas limit for OPNet execution (`0x`-prefixed hex). Only present for OPNet transactions. */
readonly theoreticalGasLimit: string;
/** Priority fee attached to the transaction (`0x`-prefixed hex). Only present for OPNet transactions. */
readonly priorityFee: string;
/** The sender address (any bitcoin address). Only present for OPNet transactions. */
readonly from: string;
/** The target contract address (hex or p2op). Only present for OPNet transactions. */
readonly contractAddress: string;
/** Hex-encoded calldata. Only present for OPNet transactions. */
readonly calldata: string;
}
/** Interaction wire-format transaction data. */
export interface IMempoolInteractionTransactionData extends IMempoolOPNetTransactionData {}
/** Deployment wire-format transaction data with the required `bytecode` field. */
export interface IMempoolDeploymentTransactionData extends IMempoolOPNetTransactionData {
readonly bytecode: string;
}
/** Union of all possible raw mempool transaction data shapes. */
export type AnyIMempoolTransactionData =
| IMempoolTransactionData
| IMempoolInteractionTransactionData
| IMempoolDeploymentTransactionData;