2022-02-04 12:51:45 +09:00
|
|
|
import { Block, Transaction } from "./electrs.interface";
|
|
|
|
|
2020-02-17 00:26:57 +07:00
|
|
|
export interface OptimizedMempoolStats {
|
2021-12-11 00:04:20 +09:00
|
|
|
added: number;
|
2020-02-16 22:15:07 +07:00
|
|
|
vbytes_per_second: number;
|
2020-02-17 00:26:57 +07:00
|
|
|
total_fee: number;
|
2020-02-16 22:15:07 +07:00
|
|
|
mempool_byte_weight: number;
|
2021-09-07 17:48:43 -03:00
|
|
|
vsizes: number[];
|
2020-02-16 22:15:07 +07:00
|
|
|
}
|
2021-03-18 23:47:40 +07:00
|
|
|
|
|
|
|
interface Ancestor {
|
|
|
|
txid: string;
|
|
|
|
weight: number;
|
|
|
|
fee: number;
|
|
|
|
}
|
|
|
|
|
|
|
|
interface BestDescendant {
|
|
|
|
txid: string;
|
|
|
|
weight: number;
|
|
|
|
fee: number;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface CpfpInfo {
|
|
|
|
ancestors: Ancestor[];
|
2022-11-27 13:46:54 +09:00
|
|
|
descendants?: Ancestor[];
|
|
|
|
bestDescendant?: BestDescendant | null;
|
2023-05-18 13:35:02 -04:00
|
|
|
effectiveFeePerVsize?: number;
|
2023-05-29 17:19:22 -04:00
|
|
|
sigops?: number;
|
|
|
|
adjustedVsize?: number;
|
2023-05-26 21:10:32 -04:00
|
|
|
acceleration?: number;
|
2021-03-18 23:47:40 +07:00
|
|
|
}
|
2021-07-24 19:26:48 -03:00
|
|
|
|
2022-12-13 17:11:37 -06:00
|
|
|
export interface RbfInfo {
|
2022-12-17 09:39:06 -06:00
|
|
|
tx: RbfTransaction;
|
|
|
|
time: number;
|
|
|
|
interval?: number;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface RbfTree extends RbfInfo {
|
|
|
|
mined?: boolean;
|
|
|
|
fullRbf: boolean;
|
|
|
|
replaces: RbfTree[];
|
2023-07-13 10:42:33 +09:00
|
|
|
replacedBy?: RbfTransaction;
|
2022-12-13 17:11:37 -06:00
|
|
|
}
|
|
|
|
|
2021-07-24 19:26:48 -03:00
|
|
|
export interface DifficultyAdjustment {
|
2022-03-12 14:55:42 +01:00
|
|
|
progressPercent: number;
|
2021-07-24 19:26:48 -03:00
|
|
|
difficultyChange: number;
|
|
|
|
estimatedRetargetDate: number;
|
|
|
|
remainingBlocks: number;
|
|
|
|
remainingTime: number;
|
2022-03-12 14:55:42 +01:00
|
|
|
previousRetarget: number;
|
2023-03-07 19:19:28 -06:00
|
|
|
previousTime: number;
|
2022-03-12 14:55:42 +01:00
|
|
|
nextRetargetHeight: number;
|
|
|
|
timeAvg: number;
|
|
|
|
timeOffset: number;
|
2023-03-07 19:19:28 -06:00
|
|
|
expectedBlocks: number;
|
2021-07-24 19:26:48 -03:00
|
|
|
}
|
2021-09-06 10:20:31 +04:00
|
|
|
|
|
|
|
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
|
2021-12-16 04:53:27 +04:00
|
|
|
witness_version?: number; // (numeric, optional) The version number of the witness program
|
2021-09-06 10:20:31 +04:00
|
|
|
witness_program: string; // (string, optional) The hex value of the witness program
|
|
|
|
confidential_key?: string; // (string) Elements only
|
|
|
|
unconfidential?: string; // (string) Elements only
|
|
|
|
}
|
2021-09-25 03:13:07 +04:00
|
|
|
|
|
|
|
export interface LiquidPegs {
|
|
|
|
amount: string;
|
|
|
|
date: string;
|
|
|
|
}
|
2022-01-13 03:58:12 +04:00
|
|
|
|
|
|
|
export interface ITranslators { [language: string]: string; }
|
2022-01-06 19:59:33 +09:00
|
|
|
|
2022-02-09 19:41:05 +09:00
|
|
|
/**
|
|
|
|
* PoolRanking component
|
|
|
|
*/
|
2022-01-14 18:09:40 +09:00
|
|
|
export interface SinglePoolStats {
|
2022-02-08 19:04:53 +09:00
|
|
|
poolId: number;
|
2022-01-21 11:17:36 +09:00
|
|
|
name: string;
|
|
|
|
link: string;
|
|
|
|
blockCount: number;
|
|
|
|
emptyBlocks: number;
|
|
|
|
rank: number;
|
2022-03-05 18:47:21 +01:00
|
|
|
share: number;
|
2022-01-21 11:17:36 +09:00
|
|
|
lastEstimatedHashrate: string;
|
|
|
|
emptyBlockRatio: string;
|
|
|
|
logo: string;
|
2022-03-25 14:22:22 +09:00
|
|
|
slug: string;
|
2023-02-20 17:47:45 +09:00
|
|
|
avgMatchRate: number;
|
2023-07-03 16:00:32 +02:00
|
|
|
avgFeeDelta: number;
|
2022-01-14 18:09:40 +09:00
|
|
|
}
|
2022-01-06 19:59:33 +09:00
|
|
|
export interface PoolsStats {
|
2022-01-21 11:17:36 +09:00
|
|
|
blockCount: number;
|
|
|
|
lastEstimatedHashrate: number;
|
|
|
|
pools: SinglePoolStats[];
|
2022-01-06 19:59:33 +09:00
|
|
|
}
|
2022-02-09 19:41:05 +09:00
|
|
|
|
|
|
|
/**
|
|
|
|
* 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;
|
2023-07-28 13:45:04 +09:00
|
|
|
slug: string;
|
2023-07-31 11:06:52 +09:00
|
|
|
poolUniqueId: number;
|
2022-02-09 19:41:05 +09:00
|
|
|
}
|
|
|
|
export interface PoolStat {
|
|
|
|
pool: PoolInfo;
|
2022-04-05 00:36:00 +09:00
|
|
|
blockCount: {
|
|
|
|
all: number,
|
|
|
|
'24h': number,
|
|
|
|
'1w': number,
|
|
|
|
};
|
|
|
|
blockShare: {
|
|
|
|
all: number,
|
|
|
|
'24h': number,
|
|
|
|
'1w': number,
|
|
|
|
};
|
|
|
|
estimatedHashrate: number;
|
2023-03-16 16:13:11 +09:00
|
|
|
avgBlockHealth: number;
|
|
|
|
totalReward: number;
|
2022-01-14 18:09:40 +09:00
|
|
|
}
|
|
|
|
|
2022-02-04 12:51:45 +09:00
|
|
|
export interface BlockExtension {
|
2022-02-22 23:57:54 +09:00
|
|
|
totalFees?: number;
|
2022-02-04 12:51:45 +09:00
|
|
|
medianFee?: number;
|
2023-06-15 09:45:25 -04:00
|
|
|
minFee?: number;
|
|
|
|
maxFee?: number;
|
2022-02-04 12:51:45 +09:00
|
|
|
feeRange?: number[];
|
|
|
|
reward?: number;
|
2022-03-15 23:33:51 +01:00
|
|
|
coinbaseRaw?: string;
|
2022-02-04 12:51:45 +09:00
|
|
|
matchRate?: number;
|
2023-06-06 08:52:29 +02:00
|
|
|
expectedFees?: number;
|
2023-06-10 12:09:06 -04:00
|
|
|
expectedWeight?: number;
|
|
|
|
feeDelta?: number;
|
2023-03-14 10:19:32 +09:00
|
|
|
similarity?: number;
|
2022-02-14 13:21:35 +09:00
|
|
|
pool?: {
|
|
|
|
id: number;
|
|
|
|
name: string;
|
2022-03-25 14:22:22 +09:00
|
|
|
slug: string;
|
2022-02-14 13:21:35 +09:00
|
|
|
}
|
2022-02-04 12:51:45 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface BlockExtended extends Block {
|
2022-02-04 19:28:00 +09:00
|
|
|
extras?: BlockExtension;
|
2022-02-04 12:51:45 +09:00
|
|
|
}
|
2022-03-22 12:34:29 +09:00
|
|
|
|
2022-07-07 19:11:42 +02:00
|
|
|
export interface BlockAudit extends BlockExtended {
|
|
|
|
missingTxs: string[],
|
|
|
|
addedTxs: string[],
|
2023-06-20 14:54:25 -04:00
|
|
|
freshTxs: string[],
|
|
|
|
sigopTxs: string[],
|
2023-06-19 18:14:09 -04:00
|
|
|
fullrbfTxs: string[],
|
2023-05-22 18:16:58 -04:00
|
|
|
acceleratedTxs: string[],
|
2022-07-07 19:11:42 +02:00
|
|
|
matchRate: number,
|
2023-06-05 13:20:46 +02:00
|
|
|
expectedFees: number,
|
2023-06-09 13:46:14 -04:00
|
|
|
expectedWeight: number,
|
|
|
|
feeDelta?: number,
|
2023-06-09 14:19:26 -04:00
|
|
|
weightDelta?: number,
|
|
|
|
txDelta?: number,
|
2022-07-07 19:11:42 +02:00
|
|
|
template: TransactionStripped[],
|
|
|
|
transactions: TransactionStripped[],
|
|
|
|
}
|
|
|
|
|
2022-06-14 16:39:37 +00:00
|
|
|
export interface TransactionStripped {
|
|
|
|
txid: string;
|
|
|
|
fee: number;
|
|
|
|
vsize: number;
|
|
|
|
value: number;
|
2023-07-16 13:49:33 +09:00
|
|
|
rate?: number; // effective fee rate
|
2023-07-18 16:08:25 +09:00
|
|
|
acc?: boolean;
|
2023-05-22 18:16:58 -04:00
|
|
|
status?: 'found' | 'missing' | 'sigop' | 'fresh' | 'freshcpfp' | 'added' | 'censored' | 'selected' | 'rbf' | 'accelerated';
|
2023-06-20 14:54:25 -04:00
|
|
|
context?: 'projected' | 'actual';
|
2022-06-14 16:39:37 +00:00
|
|
|
}
|
|
|
|
|
2023-07-13 10:42:33 +09:00
|
|
|
export interface RbfTransaction extends TransactionStripped {
|
2022-12-13 17:11:37 -06:00
|
|
|
rbf?: boolean;
|
2022-12-17 09:39:06 -06:00
|
|
|
mined?: boolean,
|
2023-07-13 10:42:33 +09:00
|
|
|
fullRbf?: boolean,
|
2022-12-13 17:11:37 -06:00
|
|
|
}
|
2023-04-21 08:40:21 +09:00
|
|
|
export interface MempoolPosition {
|
|
|
|
block: number,
|
|
|
|
vsize: number,
|
2023-06-13 13:35:25 -04:00
|
|
|
accelerated?: boolean
|
2023-04-21 08:40:21 +09:00
|
|
|
}
|
2022-12-13 17:11:37 -06:00
|
|
|
|
2022-03-22 12:34:29 +09:00
|
|
|
export interface RewardStats {
|
2022-04-01 12:41:25 +09:00
|
|
|
startBlock: number;
|
|
|
|
endBlock: number;
|
2022-03-22 12:34:29 +09:00
|
|
|
totalReward: number;
|
|
|
|
totalFee: number;
|
|
|
|
totalTx: number;
|
|
|
|
}
|
2022-08-17 12:53:26 +02:00
|
|
|
|
2023-02-16 15:39:09 +01:00
|
|
|
export interface BlockSizesAndWeights {
|
|
|
|
sizes: {
|
|
|
|
timestamp: number;
|
|
|
|
avgHeight: number;
|
|
|
|
avgSize: number;
|
|
|
|
}[];
|
|
|
|
weights: {
|
|
|
|
timestamp: number;
|
|
|
|
avgHeight: number;
|
|
|
|
avgWeight: number;
|
|
|
|
}[];
|
|
|
|
}
|
|
|
|
|
2022-11-01 14:01:50 -06:00
|
|
|
export interface AuditScore {
|
|
|
|
hash: string;
|
|
|
|
matchRate?: number;
|
|
|
|
}
|
|
|
|
|
2022-08-17 12:53:26 +02:00
|
|
|
export interface ITopNodesPerChannels {
|
2022-08-17 16:19:01 +02:00
|
|
|
publicKey: string,
|
2022-08-17 12:53:26 +02:00
|
|
|
alias: string,
|
2022-08-17 16:19:01 +02:00
|
|
|
channels?: number,
|
|
|
|
capacity: number,
|
|
|
|
firstSeen?: number,
|
|
|
|
updatedAt?: number,
|
|
|
|
city?: any,
|
|
|
|
country?: any,
|
2022-09-02 10:08:25 +02:00
|
|
|
subdivision?: any,
|
|
|
|
iso_code?: string,
|
|
|
|
geolocation?: any;
|
2022-08-17 12:53:26 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface ITopNodesPerCapacity {
|
2022-08-17 16:00:30 +02:00
|
|
|
publicKey: string,
|
2022-08-17 12:53:26 +02:00
|
|
|
alias: string,
|
|
|
|
capacity: number,
|
2022-08-17 16:00:30 +02:00
|
|
|
channels?: number,
|
|
|
|
firstSeen?: number,
|
|
|
|
updatedAt?: number,
|
|
|
|
city?: any,
|
|
|
|
country?: any,
|
2022-09-02 10:08:25 +02:00
|
|
|
subdivision?: any,
|
|
|
|
iso_code?: string,
|
|
|
|
geolocation?: any;
|
2022-08-17 12:53:26 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface INodesRanking {
|
|
|
|
topByCapacity: ITopNodesPerCapacity[];
|
|
|
|
topByChannels: ITopNodesPerChannels[];
|
2022-08-17 21:20:11 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface IOldestNodes {
|
|
|
|
publicKey: string,
|
|
|
|
alias: string,
|
|
|
|
firstSeen: number,
|
|
|
|
channels?: number,
|
|
|
|
capacity: number,
|
|
|
|
updatedAt?: number,
|
|
|
|
city?: any,
|
|
|
|
country?: any,
|
2022-09-02 10:08:25 +02:00
|
|
|
subdivision?: any,
|
|
|
|
iso_code?: string,
|
|
|
|
geolocation?: any;
|
2022-08-23 11:26:00 +02:00
|
|
|
}
|
2022-08-27 16:00:58 +02:00
|
|
|
|
|
|
|
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;
|
2023-07-09 01:15:05 -04:00
|
|
|
closing_date?: string;
|
2022-08-27 16:00:58 +02:00
|
|
|
created: string;
|
|
|
|
status: number;
|
2022-11-10 18:32:18 -06:00
|
|
|
node_left: INode,
|
|
|
|
node_right: INode,
|
2022-08-27 16:00:58 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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;
|
2022-11-10 18:32:18 -06:00
|
|
|
funding_balance?: number;
|
|
|
|
closing_balance?: number;
|
2022-08-27 16:00:58 +02:00
|
|
|
}
|