@ckb-lumos/toolkit
Version:
JavaScript toolkits used to build dapps for Nervos CKB
328 lines (287 loc) • 6.38 kB
TypeScript
export type HexString = string;
export type Hexadecimal = string;
export type Hash = HexString;
export type HexNumber = Hexadecimal;
export type PackedSince = string;
export type PackedDao = string;
export type Address = string;
export type HexadecimalRange = [Hexadecimal, Hexadecimal];
export interface Header {
timestamp: HexNumber;
number: HexNumber;
epoch: HexNumber;
compactTarget: HexNumber;
dao: Hash;
hash: Hash;
nonce: HexNumber;
parentHash: Hash;
proposalsHash: Hash;
transactionsRoot: Hash;
extraHash: Hash;
version: HexNumber;
}
export type HashType = "type" | "data" | "data1" | "data2";
export interface Script {
codeHash: Hash;
hashType: HashType;
args: HexString;
}
export interface OutPoint {
txHash: Hash;
index: HexNumber;
}
export type DepType = "depGroup" | "code";
export interface CellDep {
outPoint: OutPoint;
depType: DepType;
}
export interface Input {
previousOutput: OutPoint;
since: PackedSince;
}
export interface Output {
capacity: HexString;
lock: Script;
type?: Script;
}
export interface WitnessArgs {
lock?: HexString;
inputType?: HexString;
outputType?: HexString;
}
export interface RawTransaction {
cellDeps: CellDep[];
hash?: Hash;
headerDeps: Hash[];
inputs: Input[];
outputs: Output[];
outputsData: HexString[];
version: HexString;
}
export interface Transaction {
cellDeps: CellDep[];
hash?: Hash;
headerDeps: Hash[];
inputs: Input[];
outputs: Output[];
outputsData: HexString[];
version: HexNumber;
witnesses: HexString[];
}
export interface TxStatus {
blockHash?: Hash;
status: string;
}
export interface TransactionWithStatus {
transaction: Transaction;
txStatus: TxStatus;
}
export interface Cell {
cellOutput: {
capacity: HexNumber;
lock: Script;
type?: Script;
};
data: HexString;
outPoint?: OutPoint;
blockHash?: Hash;
blockNumber?: HexNumber;
}
export interface UncleBlock {
header: Header;
proposals: HexString[];
}
export interface Block {
header: Header;
transactions: Transaction[];
uncles: UncleBlock[];
proposals: HexString[];
}
export interface CellWithStatus {
cell: {
data: {
content: HexString;
hash: Hash;
};
output: Output;
} | null;
status: "live" | "unknown";
}
export interface Epoch {
compactTarget: HexNumber;
length: HexNumber;
startNumber: HexNumber;
number: HexNumber;
}
export interface BlockEconomicState {
issuance: {
primary: HexNumber;
secondary: HexNumber;
};
minerReward: {
primary: HexNumber;
secondary: HexNumber;
committed: HexNumber;
proposal: HexNumber;
};
txsFee: HexNumber;
finalizedAt: Hash;
}
export interface MerkleProof {
indices: HexNumber[];
lemmas: Hash[];
}
export interface TransactionProof {
blockHash: Hash;
witnessesRoot: Hash;
proof: MerkleProof;
}
export interface Rational {
denom: HexNumber;
numer: HexNumber;
}
export interface ProposalWindow {
closest: HexNumber;
farthest: HexNumber;
}
export interface Consensus {
id: string;
genesisHash: Hash;
daoTypeHash?: Hash;
secp256k1Blake160SighashAllTypeHash?: Hash;
secp256k1Blake160MultisigAllTypeHash?: Hash;
initialPrimaryEpochReward: HexNumber;
secondaryEpochReward: HexNumber;
maxUnclesNum: HexNumber;
orphanRateTarget: Rational;
epochDurationTarget: HexNumber;
txProposalWindow: ProposalWindow;
proposerRewardRatio: Rational;
cellbaseMaturity: HexNumber;
medianTimeBlockCount: HexNumber;
maxBlockCycles: HexNumber;
maxBlockBytes: HexNumber;
blockVersion: HexNumber;
txVersion: HexNumber;
typeIdCodeHash: Hash;
maxBlockProposalsLimit: HexNumber;
primaryEpochRewardHalvingInterval: HexNumber;
permanentDifficultyInDummy: boolean;
}
export interface DryRunResult {
cycles: HexNumber;
}
export interface NodeAddress {
address: string;
score: HexNumber;
}
export interface LocalNodeProtocol {
id: HexNumber;
name: string;
supportVersions: string[];
}
export interface LocalNode {
version: string;
nodeId: string;
active: boolean;
addresses: NodeAddress[];
protocols: LocalNodeProtocol[];
connections: HexNumber;
}
export interface PeerSyncState {
bestKnownHeaderHash?: HexString;
bestKnownHeaderNumber?: HexNumber;
lastCommonHeaderHash?: HexString;
lastCommonHeaderNumber?: HexNumber;
unknownHeaderListSize?: HexNumber;
}
export interface RemoteNodeProtocol {
id: HexNumber;
version: string;
}
export interface RemoteNode {
version: string;
nodeId: string;
addresses: NodeAddress[];
isOutbount: boolean;
connectedDuration: HexNumber;
lastPingDuration?: HexNumber;
syncState?: PeerSyncState;
protocols: RemoteNodeProtocol[];
}
export interface BannedAddr {
address: string;
banUntil: HexNumber;
banReason: string;
createdAt: HexNumber;
}
export interface SyncState {
ibd: boolean;
bestKnownBlockNumber: HexNumber;
bestKnownBlockTimestamp: HexNumber;
orphanBlocksCount: HexNumber;
inflightBlocksCount: HexNumber;
fastTime: HexNumber;
normalTime: HexNumber;
lowTime: HexNumber;
}
export interface TxPoolInfo {
tipHash: Hash;
tipNumber: HexNumber;
pending: HexNumber;
proposed: HexNumber;
orphan: HexNumber;
totalTxSize: HexNumber;
totalTxCycles: HexNumber;
minFeeRate: HexNumber;
lastTxsUpdatedAt: HexNumber;
}
export interface TxPoolIds {
pending: Hash[];
proposed: Hash[];
}
export interface TxVerbosity {
cycles: HexNumber;
size: HexNumber;
fee: HexNumber;
ancestorsSize: HexNumber;
ancestorsCycles: HexNumber;
ancestorsCount: HexNumber;
}
export interface TxPoolVerbosity {
pending: {
[key: string]: TxVerbosity;
};
proposed: {
[key: string]: TxVerbosity;
};
}
export type RawTxPool = TxPoolIds | TxPoolVerbosity;
export interface AlertMessage {
id: HexNumber;
priority: HexNumber;
noticeUntil: HexNumber;
message: string;
}
export interface ChainInfo {
chain: string;
medianTime: HexNumber;
epoch: HexNumber;
difficulty: HexNumber;
isInitialBlockDownload: boolean;
alerts: AlertMessage[];
}
export interface Alert {
id: HexNumber;
cancel: HexNumber;
minVersion?: string;
maxVersion?: string;
priority: HexNumber;
noticeUntil: HexNumber;
message: string;
signatures: HexString[];
}
export interface CellbaseWitness {
lock: Script;
message: HexString;
}