Files
blockbook/blockbook-api.ts
2025-09-30 09:38:15 -06:00

817 lines
30 KiB
TypeScript

/* Do not change, this code is generated from Golang structs */
export interface APIError {
/** Human-readable error message describing the issue. */
Text: string;
/** Whether the error message can safely be shown to the end user. */
Public: boolean;
}
export interface AddressAlias {
/** Type of alias, e.g., user-defined name or contract name. */
Type: string;
/** Alias string for the address. */
Alias: string;
}
export interface EthereumInternalTransfer {
/** Type of internal transfer (CALL, CREATE, etc.). */
type: number;
/** Address from which the transfer originated. */
from: string;
/** Address to which the transfer was sent. */
to: string;
/** Value transferred internally (in Wei or base units). */
value: string;
}
export interface EthereumParsedInputParam {
/** Parameter type (e.g. 'uint256'). */
type: string;
/** List of stringified parameter values. */
values?: string[];
}
export interface EthereumParsedInputData {
/** First 4 bytes of the input data (method signature ID). */
methodId: string;
/** Parsed function name if recognized. */
name: string;
/** Full function signature (including parameter types). */
function?: string;
/** List of parsed parameters for this function call. */
params?: EthereumParsedInputParam[];
}
export interface EthereumSpecific {
/** High-level type of the Ethereum tx (e.g., 'call', 'create'). */
type?: number;
/** Address of contract created by this transaction, if any. */
createdContract?: string;
/** Execution status of the transaction (1: success, 0: fail, -1: pending). */
status: number;
/** Error encountered during execution, if any. */
error?: string;
/** Transaction nonce (sequential number from the sender). */
nonce: number;
/** Maximum gas allowed by the sender for this transaction. */
gasLimit: number;
/** Actual gas consumed by the transaction execution. */
gasUsed?: number;
/** Price (in Wei or base units) per gas unit. */
gasPrice?: string;
maxPriorityFeePerGas?: string;
maxFeePerGas?: string;
baseFeePerGas?: string;
/** Fee used for L1 part in rollups (e.g. Optimism). */
l1Fee?: number;
/** Scaling factor for L1 fees in certain Layer 2 solutions. */
l1FeeScalar?: string;
/** Gas price for L1 component, if applicable. */
l1GasPrice?: string;
/** Amount of gas used in L1 for this tx, if applicable. */
l1GasUsed?: number;
/** Hex-encoded input data for the transaction. */
data?: string;
/** Decoded transaction data (function name, params, etc.). */
parsedData?: EthereumParsedInputData;
/** List of internal (sub-call) transfers. */
internalTransfers?: EthereumInternalTransfer[];
}
export interface MultiTokenValue {
/** Token ID (for ERC1155). */
id?: string;
/** Amount of that specific token ID. */
value?: string;
}
export interface TokenTransfer {
/** @deprecated: Use standard instead. */
type: '' | 'XPUBAddress' | 'ERC20' | 'ERC721' | 'ERC1155' | 'BEP20' | 'BEP721' | 'BEP1155';
standard: '' | 'XPUBAddress' | 'ERC20' | 'ERC721' | 'ERC1155' | 'BEP20' | 'BEP721' | 'BEP1155';
/** Source address of the token transfer. */
from: string;
/** Destination address of the token transfer. */
to: string;
/** Contract address of the token. */
contract: string;
/** Token name. */
name?: string;
/** Token symbol. */
symbol?: string;
/** Number of decimals for this token (if applicable). */
decimals: number;
/** Amount (in base units) of tokens transferred. */
value?: string;
/** List of multiple ID-value pairs for ERC1155 transfers. */
multiTokenValues?: MultiTokenValue[];
}
export interface Vout {
/** Amount (in satoshi or base units) of the output. */
value?: string;
/** Relative index of this output within the transaction. */
n: number;
/** Indicates whether this output has been spent. */
spent?: boolean;
/** Transaction ID in which this output was spent. */
spentTxId?: string;
/** Index of the input that spent this output. */
spentIndex?: number;
/** Block height at which this output was spent. */
spentHeight?: number;
/** Raw script hex data for this output - aka ScriptPubKey. */
hex?: string;
/** Disassembled script for this output. */
asm?: string;
/** List of addresses associated with this output. */
addresses: string[];
/** Indicates whether this output is owned by valid address. */
isAddress: boolean;
/** Indicates if this output belongs to the wallet in context. */
isOwn?: boolean;
/** Output script type (e.g., 'P2PKH', 'P2SH'). */
type?: string;
}
export interface Vin {
/** ID/hash of the originating transaction (where the UTXO comes from). */
txid?: string;
/** Index of the output in the referenced transaction. */
vout?: number;
/** Sequence number for this input (e.g. 4294967293). */
sequence?: number;
/** Relative index of this input within the transaction. */
n: number;
/** List of addresses associated with this input. */
addresses?: string[];
/** Indicates if this input is from a known address. */
isAddress: boolean;
/** Indicates if this input belongs to the wallet in context. */
isOwn?: boolean;
/** Amount (in satoshi or base units) of the input. */
value?: string;
/** Raw script hex data for this input. */
hex?: string;
/** Disassembled script for this input. */
asm?: string;
/** Data for coinbase inputs (when mining). */
coinbase?: string;
}
export interface Tx {
/** Transaction ID (hash). */
txid: string;
/** Version of the transaction (if applicable). */
version?: number;
/** Locktime indicating earliest time/height transaction can be mined. */
lockTime?: number;
/** Array of inputs for this transaction. */
vin: Vin[];
/** Array of outputs for this transaction. */
vout: Vout[];
/** Hash of the block containing this transaction. */
blockHash?: string;
/** Block height in which this transaction was included. */
blockHeight: number;
/** Number of confirmations (blocks mined after this tx's block). */
confirmations: number;
/** Estimated blocks remaining until confirmation (if unconfirmed). */
confirmationETABlocks?: number;
/** Estimated seconds remaining until confirmation (if unconfirmed). */
confirmationETASeconds?: number;
/** Unix timestamp of the block in which this transaction was included. 0 if unconfirmed. */
blockTime: number;
/** Transaction size in bytes. */
size?: number;
/** Virtual size in bytes, for SegWit-enabled chains. */
vsize?: number;
/** Total value of all outputs (in satoshi or base units). */
value: string;
/** Total value of all inputs (in satoshi or base units). */
valueIn?: string;
/** Transaction fee (inputs - outputs). */
fees?: string;
/** Raw hex-encoded transaction data. */
hex?: string;
/** Indicates if this transaction is replace-by-fee (RBF) enabled. */
rbf?: boolean;
/** Blockchain-specific extended data. */
coinSpecificData?: any;
/** List of token transfers that occurred in this transaction. */
tokenTransfers?: TokenTransfer[];
/** Ethereum-like blockchain specific data (if applicable). */
ethereumSpecific?: EthereumSpecific;
/** Aliases for addresses involved in this transaction. */
addressAliases?: { [key: string]: AddressAlias };
}
export interface FeeStats {
/** Number of transactions in the given block. */
txCount: number;
/** Sum of all fees in satoshi or base units. */
totalFeesSat: string;
/** Average fee per kilobyte in satoshi or base units. */
averageFeePerKb: number;
/** Fee distribution deciles (0%..100%) in satoshi or base units per kB. */
decilesFeePerKb: number[];
}
export interface StakingPool {
/** Staking pool contract address on-chain. */
contract: string;
/** Name of the staking pool contract. */
name: string;
/** Balance pending deposit or withdrawal, if any. */
pendingBalance: string;
/** Any pending deposit that is not yet finalized. */
pendingDepositedBalance: string;
/** Currently deposited/staked balance. */
depositedBalance: string;
/** Total amount withdrawn from this pool by the address. */
withdrawTotalAmount: string;
/** Rewards or principal currently claimable by the address. */
claimableAmount: string;
/** Total rewards that have been restaked automatically. */
restakedReward: string;
/** Any balance automatically reinvested into the pool. */
autocompoundBalance: string;
}
export interface ContractInfo {
/** @deprecated: Use standard instead. */
type: '' | 'XPUBAddress' | 'ERC20' | 'ERC721' | 'ERC1155' | 'BEP20' | 'BEP721' | 'BEP1155';
standard: '' | 'XPUBAddress' | 'ERC20' | 'ERC721' | 'ERC1155' | 'BEP20' | 'BEP721' | 'BEP1155';
/** Smart contract address. */
contract: string;
/** Readable name of the contract. */
name: string;
/** Symbol for tokens under this contract, if applicable. */
symbol: string;
/** Number of decimal places, if applicable. */
decimals: number;
/** Block height where contract was first created. */
createdInBlock?: number;
/** Block height where contract was destroyed (if any). */
destructedInBlock?: number;
}
export interface Token {
/** @deprecated: Use standard instead. */
type: '' | 'XPUBAddress' | 'ERC20' | 'ERC721' | 'ERC1155' | 'BEP20' | 'BEP721' | 'BEP1155';
standard: '' | 'XPUBAddress' | 'ERC20' | 'ERC721' | 'ERC1155' | 'BEP20' | 'BEP721' | 'BEP1155';
/** Readable name of the token. */
name: string;
/** Derivation path if this token is derived from an XPUB-based address. */
path?: string;
/** Contract address on-chain. */
contract?: string;
/** Total number of token transfers for this address. */
transfers: number;
/** Symbol for the token (e.g., 'ETH', 'USDT'). */
symbol?: string;
/** Number of decimals for this token. */
decimals: number;
/** Current token balance (in minimal base units). */
balance?: string;
/** Value in the base currency (e.g. ETH for ERC20 tokens). */
baseValue?: number;
/** Value in a secondary currency (e.g. fiat), if available. */
secondaryValue?: number;
/** List of token IDs (for ERC721, each ID is a unique collectible). */
ids?: string[];
/** Multiple ERC1155 token balances (id + value). */
multiTokenValues?: MultiTokenValue[];
/** Total amount of tokens received. */
totalReceived?: string;
/** Total amount of tokens sent. */
totalSent?: string;
}
export interface Address {
/** Current page index. */
page?: number;
/** Total number of pages available. */
totalPages?: number;
/** Number of items returned on this page. */
itemsOnPage?: number;
/** The address string in standard format. */
address: string;
/** Current confirmed balance (in satoshi or base units). */
balance: string;
/** Total amount ever received by this address. */
totalReceived?: string;
/** Total amount ever sent by this address. */
totalSent?: string;
/** Unconfirmed balance for this address. */
unconfirmedBalance: string;
/** Number of unconfirmed transactions for this address. */
unconfirmedTxs: number;
/** Unconfirmed outgoing balance for this address. */
unconfirmedSending?: string;
/** Unconfirmed incoming balance for this address. */
unconfirmedReceiving?: string;
/** Number of transactions for this address (including confirmed). */
txs: number;
/** Historical total count of transactions, if known. */
addrTxCount?: number;
/** Number of transactions not involving tokens (pure coin transfers). */
nonTokenTxs?: number;
/** Number of internal transactions (e.g., Ethereum calls). */
internalTxs?: number;
/** List of transaction details (if requested). */
transactions?: Tx[];
/** List of transaction IDs (if detailed data is not requested). */
txids?: string[];
/** Current transaction nonce for Ethereum-like addresses. */
nonce?: string;
/** Number of tokens with any historical usage at this address. */
usedTokens?: number;
/** List of tokens associated with this address. */
tokens?: Token[];
/** Total value of the address in secondary currency (e.g. fiat). */
secondaryValue?: number;
/** Sum of token values in base currency. */
tokensBaseValue?: number;
/** Sum of token values in secondary currency (fiat). */
tokensSecondaryValue?: number;
/** Address's entire value in base currency, including tokens. */
totalBaseValue?: number;
/** Address's entire value in secondary currency, including tokens. */
totalSecondaryValue?: number;
/** Extra info if the address is a contract (ABI, type). */
contractInfo?: ContractInfo;
/** @deprecated: replaced by contractInfo */
erc20Contract?: ContractInfo;
/** Aliases assigned to this address. */
addressAliases?: { [key: string]: AddressAlias };
/** List of staking pool data if address interacts with staking. */
stakingPools?: StakingPool[];
}
export interface Utxo {
/** Transaction ID in which this UTXO was created. */
txid: string;
/** Index of the output in that transaction. */
vout: number;
/** Value of this UTXO (in satoshi or base units). */
value: string;
/** Block height in which the UTXO was confirmed. */
height?: number;
/** Number of confirmations for this UTXO. */
confirmations: number;
/** Address to which this UTXO belongs. */
address?: string;
/** Derivation path for XPUB-based wallets, if applicable. */
path?: string;
/** If non-zero, locktime required before spending this UTXO. */
lockTime?: number;
/** Indicates if this UTXO originated from a coinbase transaction. */
coinbase?: boolean;
}
export interface BalanceHistory {
/** Unix timestamp for this point in the balance history. */
time: number;
/** Number of transactions in this interval. */
txs: number;
/** Amount received in this interval (in satoshi or base units). */
received: string;
/** Amount sent in this interval (in satoshi or base units). */
sent: string;
/** Amount sent to the same address (self-transfer). */
sentToSelf: string;
/** Exchange rates at this point in time, if available. */
rates?: { [key: string]: number };
/** Transaction ID if the time corresponds to a specific tx. */
txid?: string;
}
export interface BlockInfo {
Hash: string;
Time: number;
Txs: number;
Size: number;
Height: number;
}
export interface Blocks {
/** Current page index. */
page?: number;
/** Total number of pages available. */
totalPages?: number;
/** Number of items returned on this page. */
itemsOnPage?: number;
/** List of blocks. */
blocks: BlockInfo[];
}
export interface Block {
/** Current page index. */
page?: number;
/** Total number of pages available. */
totalPages?: number;
/** Number of items returned on this page. */
itemsOnPage?: number;
/** Block hash. */
hash: string;
/** Hash of the previous block in the chain. */
previousBlockHash?: string;
/** Hash of the next block, if known. */
nextBlockHash?: string;
/** Block height (0-based index in the chain). */
height: number;
/** Number of confirmations of this block (distance from best chain tip). */
confirmations: number;
/** Size of the block in bytes. */
size: number;
/** Timestamp of when this block was mined. */
time?: number;
/** Block version (chain-specific meaning). */
version: string;
/** Merkle root of the block's transactions. */
merkleRoot: string;
/** Nonce used in the mining process. */
nonce: string;
/** Compact representation of the target threshold. */
bits: string;
/** Difficulty target for mining this block. */
difficulty: string;
/** List of transaction IDs included in this block. */
tx?: string[];
/** Total count of transactions in this block. */
txCount: number;
/** List of full transaction details (if requested). */
txs?: Tx[];
/** Optional aliases for addresses found in this block. */
addressAliases?: { [key: string]: AddressAlias };
}
export interface BlockRaw {
/** Hex-encoded block data. */
hex: string;
}
export interface BackendInfo {
/** Error message if something went wrong in the backend. */
error?: string;
/** Name of the chain - e.g. 'main'. */
chain?: string;
/** Number of fully verified blocks in the chain. */
blocks?: number;
/** Number of block headers in the chain. */
headers?: number;
/** Hash of the best block in hex. */
bestBlockHash?: string;
/** Current difficulty of the network. */
difficulty?: string;
/** Size of the blockchain data on disk in bytes. */
sizeOnDisk?: number;
/** Version of the blockchain backend - e.g. '280000'. */
version?: string;
/** Subversion of the blockchain backend - e.g. '/Satoshi:28.0.0/'. */
subversion?: string;
/** Protocol version of the blockchain backend - e.g. '70016'. */
protocolVersion?: string;
/** Time offset (in seconds) reported by the backend. */
timeOffset?: number;
/** Any warnings given by the backend regarding the chain state. */
warnings?: string;
/** Version or details of the consensus protocol in use. */
consensus_version?: string;
/** Additional chain-specific consensus data. */
consensus?: any;
}
export interface InternalStateColumn {
/** Name of the database column. */
name: string;
/** Version or schema version of the column. */
version: number;
/** Number of rows stored in this column. */
rows: number;
/** Total size (in bytes) of keys stored in this column. */
keyBytes: number;
/** Total size (in bytes) of values stored in this column. */
valueBytes: number;
/** Timestamp of the last update to this column. */
updated: string;
}
export interface BlockbookInfo {
/** Coin name, e.g. 'Bitcoin'. */
coin: string;
/** Network shortcut, e.g. 'BTC'. */
network: string;
/** Hostname of the blockbook instance, e.g. 'backend5'. */
host: string;
/** Running blockbook version, e.g. '0.4.0'. */
version: string;
/** Git commit hash of the running blockbook, e.g. 'a0960c8e'. */
gitCommit: string;
/** Build time of running blockbook, e.g. '2024-08-08T12:32:50+00:00'. */
buildTime: string;
/** If true, blockbook is syncing from scratch or in a special sync mode. */
syncMode: boolean;
/** Indicates if blockbook is in its initial sync phase. */
initialSync: boolean;
/** Indicates if the backend is fully synced with the blockchain. */
inSync: boolean;
/** Best (latest) block height according to this instance. */
bestHeight: number;
/** Timestamp of the latest block in the chain. */
lastBlockTime: string;
/** Indicates if mempool info is synced as well. */
inSyncMempool: boolean;
/** Timestamp of the last mempool update. */
lastMempoolTime: string;
/** Number of unconfirmed transactions in the mempool. */
mempoolSize: number;
/** Number of decimals for this coin's base unit. */
decimals: number;
/** Size of the underlying database in bytes. */
dbSize: number;
/** Whether this instance provides fiat exchange rates. */
hasFiatRates?: boolean;
/** Whether this instance provides fiat exchange rates for tokens. */
hasTokenFiatRates?: boolean;
/** Timestamp of the latest fiat rates update. */
currentFiatRatesTime?: string;
/** Timestamp of the latest historical fiat rates update. */
historicalFiatRatesTime?: string;
/** Timestamp of the latest historical token fiat rates update. */
historicalTokenFiatRatesTime?: string;
/** List of contract addresses supported for staking. */
supportedStakingPools?: string[];
/** Optional calculated DB size from columns. */
dbSizeFromColumns?: number;
/** List of columns/tables in the DB for internal state. */
dbColumns?: InternalStateColumn[];
/** Additional human-readable info about this blockbook instance. */
about: string;
}
export interface SystemInfo {
/** Blockbook instance information. */
blockbook: BlockbookInfo;
/** Information about the connected backend node. */
backend: BackendInfo;
}
export interface FiatTicker {
/** Unix timestamp for these fiat rates. */
ts?: number;
/** Map of currency codes to their exchange rate. */
rates: { [key: string]: number };
/** Any error message encountered while fetching rates. */
error?: string;
}
export interface FiatTickers {
/** List of fiat tickers with timestamps and rates. */
tickers: FiatTicker[];
}
export interface AvailableVsCurrencies {
/** Timestamp for the available currency list. */
ts?: number;
/** List of currency codes (e.g., USD, EUR) supported by the rates. */
available_currencies: string[];
/** Error message, if any, when fetching the available currencies. */
error?: string;
}
export interface WsReq {
/** Unique request identifier. */
id: string;
/** Requested method name. */
method:
| 'getAccountInfo'
| 'getInfo'
| 'getBlockHash'
| 'getBlock'
| 'getAccountUtxo'
| 'getBalanceHistory'
| 'getTransaction'
| 'getTransactionSpecific'
| 'estimateFee'
| 'sendTransaction'
| 'subscribeNewBlock'
| 'unsubscribeNewBlock'
| 'subscribeNewTransaction'
| 'unsubscribeNewTransaction'
| 'subscribeAddresses'
| 'unsubscribeAddresses'
| 'subscribeFiatRates'
| 'unsubscribeFiatRates'
| 'ping'
| 'getCurrentFiatRates'
| 'getFiatRatesForTimestamps'
| 'getFiatRatesTickersList'
| 'getMempoolFilters';
/** Parameters for the requested method in raw JSON format. */
params: any;
}
export interface WsRes {
/** Corresponding request identifier. */
id: string;
/** Payload of the response, structure depends on the request. */
data: any;
}
export interface WsAccountInfoReq {
/** Address or XPUB descriptor to query. */
descriptor: string;
/** Level of detail to retrieve about the account. */
details?: 'basic' | 'tokens' | 'tokenBalances' | 'txids' | 'txslight' | 'txs';
/** Which tokens to include in the account info. */
tokens?: 'derived' | 'used' | 'nonzero';
/** Number of items per page, if paging is used. */
pageSize?: number;
/** Requested page index, if paging is used. */
page?: number;
/** Starting block height for transaction filtering. */
from?: number;
/** Ending block height for transaction filtering. */
to?: number;
/** Filter by specific contract address (for token data). */
contractFilter?: string;
/** Currency code to convert values into (e.g. 'USD'). */
secondaryCurrency?: string;
/** Gap limit for XPUB scanning, if relevant. */
gap?: number;
}
export interface WsBackendInfo {
/** Backend version string. */
version?: string;
/** Backend sub-version string. */
subversion?: string;
/** Consensus protocol version in use. */
consensus_version?: string;
/** Additional consensus details, structure depends on blockchain. */
consensus?: any;
}
export interface WsInfoRes {
/** Human-readable blockchain name. */
name: string;
/** Short code for the blockchain (e.g. BTC, ETH). */
shortcut: string;
/** Network identifier (e.g. mainnet, testnet). */
network: string;
/** Number of decimals in the base unit of the coin. */
decimals: number;
/** Version of the blockbook or backend service. */
version: string;
/** Current best chain height according to the backend. */
bestHeight: number;
/** Block hash of the best (latest) block. */
bestHash: string;
/** Genesis block hash or identifier. */
block0Hash: string;
/** Indicates if this is a test network. */
testnet: boolean;
/** Additional backend-related information. */
backend: WsBackendInfo;
}
export interface WsBlockHashReq {
/** Block height for which the hash is requested. */
height: number;
}
export interface WsBlockHashRes {
/** Block hash at the requested height. */
hash: string;
}
export interface WsBlockReq {
/** Block identifier (hash). */
id: string;
/** Number of transactions per page in the block. */
pageSize?: number;
/** Page index to retrieve if multiple pages of transactions are available. */
page?: number;
}
export interface WsBlockFilterReq {
/** Type of script filter (e.g., P2PKH, P2SH). */
scriptType: string;
/** Block hash for which we want the filter. */
blockHash: string;
/** Optional parameter for certain filter logic. */
M?: number;
}
export interface WsBlockFiltersBatchReq {
/** Type of script filter (e.g., P2PKH, P2SH). */
scriptType: string;
/** Hash of the latest known block. Filters will be retrieved backward from here. */
bestKnownBlockHash: string;
/** Number of block filters per request. */
pageSize?: number;
/** Optional parameter for certain filter logic. */
M?: number;
}
export interface WsAccountUtxoReq {
/** Address or XPUB descriptor to retrieve UTXOs for. */
descriptor: string;
}
export interface WsBalanceHistoryReq {
/** Address or XPUB descriptor to query history for. */
descriptor: string;
/** Unix timestamp from which to start the history. */
from?: number;
/** Unix timestamp at which to end the history. */
to?: number;
/** List of currency codes for which to fetch exchange rates at each interval. */
currencies?: string[];
/** Gap limit for XPUB scanning, if relevant. */
gap?: number;
/** Size of each aggregated time window in seconds. */
groupBy?: number;
}
export interface WsTransactionReq {
/** Transaction ID to retrieve details for. */
txid: string;
}
export interface WsTransactionSpecificReq {
/** Transaction ID for the detailed blockchain-specific data. */
txid: string;
}
export interface WsEstimateFeeReq {
/** Block confirmations targets for which fees should be estimated. */
blocks?: number[];
/** Additional chain-specific parameters (e.g. for Ethereum). */
specific?: {
conservative?: boolean;
txsize?: number;
from?: string;
to?: string;
data?: string;
value?: string;
};
}
export interface Eip1559Fee {
maxFeePerGas: string;
maxPriorityFeePerGas: string;
minWaitTimeEstimate?: number;
maxWaitTimeEstimate?: number;
}
export interface Eip1559Fees {
baseFeePerGas?: string;
low?: Eip1559Fee;
medium?: Eip1559Fee;
high?: Eip1559Fee;
instant?: Eip1559Fee;
networkCongestion?: number;
latestPriorityFeeRange?: string[];
historicalPriorityFeeRange?: string[];
historicalBaseFeeRange?: string[];
priorityFeeTrend?: 'up' | 'down';
baseFeeTrend?: 'up' | 'down';
}
export interface WsEstimateFeeRes {
/** Estimated total fee per transaction, if relevant. */
feePerTx?: string;
/** Estimated fee per unit (sat/byte, Wei/gas, etc.). */
feePerUnit?: string;
/** Max fee limit for blockchains like Ethereum. */
feeLimit?: string;
eip1559?: Eip1559Fees;
}
export interface WsLongTermFeeRateRes {
/** Long term fee rate (in sat/kByte). */
feePerUnit: string;
/** Amount of blocks used for the long term fee rate estimation. */
blocks: number;
}
export interface WsSendTransactionReq {
/** Hex-encoded transaction data to broadcast. */
hex: string;
/** Use alternative RPC method to broadcast transaction. */
disableAlternativeRPC?: boolean;
}
export interface WsSubscribeAddressesReq {
/** List of addresses to subscribe for updates (e.g., new transactions). */
addresses: string[];
newBlockTxs?: boolean;
}
export interface WsSubscribeFiatRatesReq {
/** Fiat currency code (e.g. 'USD'). */
currency?: string;
/** List of token symbols or IDs to get fiat rates for. */
tokens?: string[];
}
export interface WsCurrentFiatRatesReq {
/** List of fiat currencies, e.g. ['USD','EUR']. */
currencies?: string[];
/** Token symbol or ID if asking for token fiat rates (e.g. 'ETH'). */
token?: string;
}
export interface WsFiatRatesForTimestampsReq {
/** List of Unix timestamps for which to retrieve fiat rates. */
timestamps: number[];
/** List of fiat currencies, e.g. ['USD','EUR']. */
currencies?: string[];
/** Token symbol or ID if asking for token fiat rates. */
token?: string;
}
export interface WsFiatRatesTickersListReq {
/** Timestamp for which the list of available tickers is needed. */
timestamp?: number;
/** Token symbol or ID if asking for token-specific fiat rates. */
token?: string;
}
export interface WsMempoolFiltersReq {
/** Type of script we are filtering for (e.g., P2PKH, P2SH). */
scriptType: string;
/** Only retrieve filters for mempool txs after this timestamp. */
fromTimestamp: number;
/** Optional parameter for certain filter logic (e.g., n-bloom). */
M?: number;
}
export interface WsRpcCallReq {
/** Address from which the RPC call is originated (if relevant). */
from?: string;
/** Contract or address to which the RPC call is made. */
to: string;
/** Hex-encoded call data (function signature + parameters). */
data: string;
}
export interface WsRpcCallRes {
/** Hex-encoded return data from the call. */
data: string;
}
export interface MempoolTxidFilterEntries {
/** Map of txid to filter data (hex-encoded). */
entries?: { [key: string]: string };
/** Indicates if a zeroed key was used in filter calculation. */
usedZeroedKey?: boolean;
}