mirror of
https://github.com/mempool/mempool.git
synced 2025-02-26 15:42:17 +01:00
303 lines
6.4 KiB
TypeScript
303 lines
6.4 KiB
TypeScript
import { Block, Transaction } from "./electrs.interface";
|
|
|
|
export interface OptimizedMempoolStats {
|
|
added: 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?: 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;
|
|
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 ITranslators { [language: string]: string; }
|
|
|
|
/**
|
|
* PoolRanking component
|
|
*/
|
|
export interface SinglePoolStats {
|
|
poolId: number;
|
|
name: string;
|
|
link: string;
|
|
blockCount: number;
|
|
emptyBlocks: number;
|
|
rank: number;
|
|
share: number;
|
|
lastEstimatedHashrate: string;
|
|
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;
|
|
}
|
|
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;
|
|
}
|
|
}
|
|
|
|
export interface BlockExtended extends Block {
|
|
extras?: BlockExtension;
|
|
}
|
|
|
|
export interface BlockAudit extends BlockExtended {
|
|
missingTxs: string[],
|
|
addedTxs: 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;
|
|
status?: 'found' | 'missing' | 'sigop' | 'fresh' | 'freshcpfp' | 'added' | '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
|
|
}
|
|
|
|
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 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;
|
|
}
|