455 lines
9.6 KiB
TypeScript
455 lines
9.6 KiB
TypeScript
import { Block, Transaction } from "./electrs.interface";
|
|
|
|
export interface OptimizedMempoolStats {
|
|
added: number;
|
|
count: number;
|
|
vbytes_per_second: number;
|
|
total_fee: number;
|
|
mempool_byte_weight: number;
|
|
vsizes: number[];
|
|
}
|
|
|
|
interface Ancestor {
|
|
txid: string;
|
|
weight: number;
|
|
fee: number;
|
|
}
|
|
|
|
interface BestDescendant {
|
|
txid: string;
|
|
weight: number;
|
|
fee: number;
|
|
}
|
|
|
|
export interface CpfpInfo {
|
|
ancestors: Ancestor[];
|
|
descendants?: Ancestor[];
|
|
bestDescendant?: BestDescendant | null;
|
|
effectiveFeePerVsize?: number;
|
|
sigops?: number;
|
|
adjustedVsize?: number;
|
|
acceleration?: boolean;
|
|
acceleratedBy?: number[];
|
|
acceleratedAt?: number;
|
|
feeDelta?: number;
|
|
}
|
|
|
|
export interface RbfInfo {
|
|
tx: RbfTransaction;
|
|
time: number;
|
|
interval?: number;
|
|
}
|
|
|
|
export interface RbfTree extends RbfInfo {
|
|
mined?: boolean;
|
|
fullRbf: boolean;
|
|
replaces: RbfTree[];
|
|
replacedBy?: RbfTransaction;
|
|
}
|
|
|
|
export interface DifficultyAdjustment {
|
|
progressPercent: number;
|
|
difficultyChange: number;
|
|
estimatedRetargetDate: number;
|
|
remainingBlocks: number;
|
|
remainingTime: number;
|
|
previousRetarget: number;
|
|
previousTime: number;
|
|
nextRetargetHeight: number;
|
|
timeAvg: number;
|
|
adjustedTimeAvg: number;
|
|
timeOffset: number;
|
|
expectedBlocks: number;
|
|
}
|
|
|
|
export interface AddressInformation {
|
|
isvalid: boolean; // (boolean) If the address is valid or not. If not, this is the only property returned.
|
|
isvalid_parent?: boolean; // (boolean) Elements only
|
|
address: string; // (string) The bitcoin address validated
|
|
scriptPubKey: string; // (string) The hex-encoded scriptPubKey generated by the address
|
|
isscript: boolean; // (boolean) If the key is a script
|
|
iswitness: boolean; // (boolean) If the address is a witness
|
|
witness_version?: number; // (numeric, optional) The version number of the witness program
|
|
witness_program: string; // (string, optional) The hex value of the witness program
|
|
confidential_key?: string; // (string) Elements only
|
|
unconfidential?: string; // (string) Elements only
|
|
}
|
|
|
|
export interface LiquidPegs {
|
|
amount: string;
|
|
date: string;
|
|
}
|
|
|
|
export interface CurrentPegs {
|
|
amount: string;
|
|
lastBlockUpdate: number;
|
|
hash: string;
|
|
}
|
|
|
|
export interface PegsVolume {
|
|
volume: string;
|
|
number: number;
|
|
}
|
|
|
|
export interface FederationAddress {
|
|
bitcoinaddress: string;
|
|
balance: string;
|
|
}
|
|
|
|
export interface FederationUtxo {
|
|
txid: string;
|
|
txindex: number;
|
|
bitcoinaddress: string;
|
|
amount: number;
|
|
blocknumber: number;
|
|
blocktime: number;
|
|
pegtxid: string;
|
|
pegindex: number;
|
|
pegblocktime: number;
|
|
timelock: number;
|
|
expiredAt: number;
|
|
isDust?: boolean;
|
|
}
|
|
|
|
export interface RecentPeg {
|
|
txid: string;
|
|
txindex: number;
|
|
amount: number;
|
|
bitcoinaddress: string;
|
|
bitcointxid: string;
|
|
bitcoinindex: number;
|
|
blocktime: number;
|
|
}
|
|
|
|
export interface AuditStatus {
|
|
bitcoinBlocks: number;
|
|
bitcoinHeaders: number;
|
|
lastBlockAudit: number;
|
|
isAuditSynced: boolean;
|
|
}
|
|
|
|
export interface ITranslators { [language: string]: string; }
|
|
|
|
/**
|
|
* PoolRanking component
|
|
*/
|
|
export interface SinglePoolStats {
|
|
poolId: number;
|
|
poolUniqueId: number; // unique global pool id
|
|
name: string;
|
|
link: string;
|
|
blockCount: number;
|
|
emptyBlocks: number;
|
|
rank: number;
|
|
share: number;
|
|
lastEstimatedHashrate: number;
|
|
emptyBlockRatio: string;
|
|
logo: string;
|
|
slug: string;
|
|
avgMatchRate: number;
|
|
avgFeeDelta: number;
|
|
}
|
|
export interface PoolsStats {
|
|
blockCount: number;
|
|
lastEstimatedHashrate: number;
|
|
pools: SinglePoolStats[];
|
|
}
|
|
|
|
/**
|
|
* Pool component
|
|
*/
|
|
export interface PoolInfo {
|
|
id: number | null; // mysql row id
|
|
name: string;
|
|
link: string;
|
|
regexes: string; // JSON array
|
|
addresses: string; // JSON array
|
|
emptyBlocks: number;
|
|
slug: string;
|
|
poolUniqueId: number;
|
|
unique_id: number;
|
|
}
|
|
export interface PoolStat {
|
|
pool: PoolInfo;
|
|
blockCount: {
|
|
all: number,
|
|
'24h': number,
|
|
'1w': number,
|
|
};
|
|
blockShare: {
|
|
all: number,
|
|
'24h': number,
|
|
'1w': number,
|
|
};
|
|
estimatedHashrate: number;
|
|
avgBlockHealth: number;
|
|
totalReward: number;
|
|
}
|
|
|
|
export interface BlockExtension {
|
|
totalFees?: number;
|
|
medianFee?: number;
|
|
minFee?: number;
|
|
maxFee?: number;
|
|
feeRange?: number[];
|
|
reward?: number;
|
|
coinbaseRaw?: string;
|
|
matchRate?: number;
|
|
expectedFees?: number;
|
|
expectedWeight?: number;
|
|
feeDelta?: number;
|
|
similarity?: number;
|
|
pool?: {
|
|
id: number;
|
|
name: string;
|
|
slug: string;
|
|
minerNames: string[] | null;
|
|
}
|
|
}
|
|
|
|
export interface BlockExtended extends Block {
|
|
extras?: BlockExtension;
|
|
}
|
|
|
|
export interface BlockAudit extends BlockExtended {
|
|
version: number,
|
|
unseenTxs?: string[],
|
|
missingTxs: string[],
|
|
addedTxs: string[],
|
|
prioritizedTxs: string[],
|
|
freshTxs: string[],
|
|
sigopTxs: string[],
|
|
fullrbfTxs: string[],
|
|
acceleratedTxs: string[],
|
|
matchRate: number,
|
|
expectedFees: number,
|
|
expectedWeight: number,
|
|
feeDelta?: number,
|
|
weightDelta?: number,
|
|
txDelta?: number,
|
|
template: TransactionStripped[],
|
|
transactions: TransactionStripped[],
|
|
}
|
|
|
|
export interface TransactionStripped {
|
|
txid: string;
|
|
fee: number;
|
|
vsize: number;
|
|
value: number;
|
|
rate?: number; // effective fee rate
|
|
acc?: boolean;
|
|
flags?: number | null;
|
|
time?: number;
|
|
status?: 'found' | 'missing' | 'sigop' | 'fresh' | 'freshcpfp' | 'added' | 'added_prioritized' | 'prioritized' | 'added_deprioritized' | 'deprioritized' | 'censored' | 'selected' | 'rbf' | 'accelerated';
|
|
context?: 'projected' | 'actual';
|
|
}
|
|
|
|
export interface RbfTransaction extends TransactionStripped {
|
|
rbf?: boolean;
|
|
mined?: boolean,
|
|
fullRbf?: boolean,
|
|
}
|
|
export interface MempoolPosition {
|
|
block: number,
|
|
vsize: number,
|
|
accelerated?: boolean,
|
|
acceleratedBy?: number[],
|
|
acceleratedAt?: number,
|
|
feeDelta?: number,
|
|
}
|
|
|
|
export interface AccelerationPosition extends MempoolPosition {
|
|
poolId: number;
|
|
offset?: number;
|
|
}
|
|
|
|
export interface RewardStats {
|
|
startBlock: number;
|
|
endBlock: number;
|
|
totalReward: number;
|
|
totalFee: number;
|
|
totalTx: number;
|
|
}
|
|
|
|
export interface BlockSizesAndWeights {
|
|
sizes: {
|
|
timestamp: number;
|
|
avgHeight: number;
|
|
avgSize: number;
|
|
}[];
|
|
weights: {
|
|
timestamp: number;
|
|
avgHeight: number;
|
|
avgWeight: number;
|
|
}[];
|
|
}
|
|
|
|
export interface AuditScore {
|
|
hash: string;
|
|
matchRate?: number;
|
|
}
|
|
|
|
export interface ITopNodesPerChannels {
|
|
publicKey: string,
|
|
alias: string,
|
|
channels?: number,
|
|
capacity: number,
|
|
firstSeen?: number,
|
|
updatedAt?: number,
|
|
city?: any,
|
|
country?: any,
|
|
subdivision?: any,
|
|
iso_code?: string,
|
|
geolocation?: any;
|
|
}
|
|
|
|
export interface ITopNodesPerCapacity {
|
|
publicKey: string,
|
|
alias: string,
|
|
capacity: number,
|
|
channels?: number,
|
|
firstSeen?: number,
|
|
updatedAt?: number,
|
|
city?: any,
|
|
country?: any,
|
|
subdivision?: any,
|
|
iso_code?: string,
|
|
geolocation?: any;
|
|
}
|
|
|
|
export interface INodesRanking {
|
|
topByCapacity: ITopNodesPerCapacity[];
|
|
topByChannels: ITopNodesPerChannels[];
|
|
}
|
|
|
|
export interface INodesStatisticsEntry {
|
|
added: string;
|
|
avg_base_fee_mtokens: number;
|
|
avg_capacity: number;
|
|
avg_fee_rate: number;
|
|
channel_count: number;
|
|
clearnet_nodes: number;
|
|
clearnet_tor_nodes: number;
|
|
id: number;
|
|
med_base_fee_mtokens: number;
|
|
med_capacity: number;
|
|
med_fee_rate: number;
|
|
node_count: number;
|
|
tor_nodes: number;
|
|
total_capacity: number;
|
|
unannounced_nodes: number;
|
|
}
|
|
|
|
export interface INodesStatistics {
|
|
latest: INodesStatisticsEntry;
|
|
previous: INodesStatisticsEntry;
|
|
}
|
|
|
|
export interface IOldestNodes {
|
|
publicKey: string,
|
|
alias: string,
|
|
firstSeen: number,
|
|
channels?: number,
|
|
capacity: number,
|
|
updatedAt?: number,
|
|
city?: any,
|
|
country?: any,
|
|
subdivision?: any,
|
|
iso_code?: string,
|
|
geolocation?: any;
|
|
}
|
|
|
|
export interface IChannel {
|
|
id: number;
|
|
short_id: string;
|
|
capacity: number;
|
|
transaction_id: string;
|
|
transaction_vout: number;
|
|
closing_transaction_id: string;
|
|
closing_reason: string;
|
|
updated_at: string;
|
|
closing_date?: string;
|
|
created: string;
|
|
status: number;
|
|
node_left: INode,
|
|
node_right: INode,
|
|
}
|
|
|
|
|
|
export interface INode {
|
|
alias: string;
|
|
public_key: string;
|
|
channels: number;
|
|
capacity: number;
|
|
base_fee_mtokens: number;
|
|
cltv_delta: number;
|
|
fee_rate: number;
|
|
is_disabled: boolean;
|
|
max_htlc_mtokens: number;
|
|
min_htlc_mtokens: number;
|
|
updated_at: string;
|
|
longitude: number;
|
|
latitude: number;
|
|
funding_balance?: number;
|
|
closing_balance?: number;
|
|
}
|
|
|
|
export interface Acceleration {
|
|
txid: string;
|
|
status: 'requested' | 'accelerating' | 'completed_provisional' | 'completed' | 'failed' | 'failed_provisional';
|
|
pools: number[];
|
|
feePaid: number;
|
|
added: number; // timestamp
|
|
lastUpdated: number; // timestamp
|
|
baseFee: number;
|
|
vsizeFee: number;
|
|
effectiveFee: number;
|
|
effectiveVsize: number;
|
|
feeDelta: number;
|
|
blockHash: string;
|
|
blockHeight: number;
|
|
|
|
acceleratedFeeRate?: number;
|
|
boost?: number;
|
|
bidBoost?: number;
|
|
boostCost?: number;
|
|
boostRate?: number;
|
|
minedByPoolUniqueId?: number;
|
|
}
|
|
|
|
export interface AccelerationHistoryParams {
|
|
status?: string; // Single status or comma separated list of status
|
|
timeframe?: string;
|
|
poolUniqueId?: number;
|
|
blockHash?: string;
|
|
blockHeight?: number;
|
|
page?: number;
|
|
pageLength?: number;
|
|
}
|
|
|
|
export interface AccelerationInfo {
|
|
txid: string,
|
|
height: number,
|
|
pool: {
|
|
id: number,
|
|
slug: string,
|
|
name: string,
|
|
},
|
|
effective_vsize: number,
|
|
effective_fee: number,
|
|
boost_rate: number,
|
|
boost_cost: number,
|
|
}
|
|
|
|
export interface TestMempoolAcceptResult {
|
|
txid: string,
|
|
wtxid: string,
|
|
allowed?: boolean,
|
|
vsize?: number,
|
|
fees?: {
|
|
base: number,
|
|
"effective-feerate": number,
|
|
"effective-includes": string[],
|
|
},
|
|
['reject-reason']?: string,
|
|
} |