Files
consensus/pkg/typescript/index.d.ts
T
zeekay 7a1591ee63 feat: update consensus v1.22.1 - context improvements and TypeScript SDK
- Add context extension methods for uptime and node info
- Add NoOpCalculator for uptime in test contexts
- Update locked calculator with proper interface compliance
- Remove experimental quasar event horizon duplicates
- Add TypeScript/NAPI SDK bindings for consensus
- Update Rust bindings and tests
2025-12-03 23:56:12 -08:00

163 lines
5.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* tslint:disable */
/* eslint-disable */
/* auto-generated by NAPI-RS */
/** Block status */
export const enum BlockStatus {
Unknown = 0,
Processing = 1,
Rejected = 2,
Accepted = 3
}
/** Vote type */
export const enum VoteType {
/** Preference vote during sampling */
Preference = 0,
/** Commit vote for finalization */
Commit = 1,
/** Cancel/reject vote */
Cancel = 2
}
/** Complete Quasar consensus configuration */
export interface QuasarConfig {
/** Sample/committee size (default: 20) */
k: number
/** Fixed threshold ratio 0.5-0.8 (default: 0.69 = 69%) */
alpha: number
/** Consecutive rounds for finality (default: 20) */
beta: number
/** Round timeout in milliseconds (default: 100) */
roundTimeoutMs: number
/** Enable FPC adaptive thresholds (default: true) */
enableFpc: boolean
/** Minimum FPC threshold (default: 0.5) */
thetaMin: number
/** Maximum FPC threshold (default: 0.8) */
thetaMax: number
/** PRF seed for FPC (32-byte hex, optional) */
fpcSeed?: string
/** Base luminance in lux (default: 100.0) */
baseLuminance: number
/** Maximum luminance (default: 1000.0) */
maxLuminance: number
/** Minimum luminance (default: 10.0) */
minLuminance: number
/** Success multiplier (default: 1.1) */
successMultiplier: number
/** Failure multiplier (default: 0.9) */
failureMultiplier: number
/** Network timeout in milliseconds (default: 5000) */
networkTimeoutMs: number
/** Max message size in bytes (default: 2MB) */
maxMessageSize: number
/** Max outstanding polls (default: 10) */
maxOutstanding: number
/** Security level: 2=Low, 3=Medium, 5=High (default: 3) */
securityLevel: number
/** Enable quantum-resistant signatures (default: true) */
quantumResistant: boolean
/** Enable GPU acceleration (default: true) */
gpuAcceleration: boolean
}
/** Block data for consensus */
export interface Block {
/** Block ID (32-byte hex string) */
id: string
/** Parent block ID (32-byte hex string) */
parentId: string
/** Block height */
height: number
/** Block payload (hex-encoded) */
payload: string
/** Block timestamp (Unix milliseconds) */
timestamp: number
}
/** Vote on a block */
export interface Vote {
/** Block ID being voted on (hex string) */
blockId: string
/** Vote type (0=Preference, 1=Commit, 2=Cancel) */
voteType: number
/** Voter node ID (hex string) */
voter: string
/** Optional signature (hex string) */
signature?: string
}
/** Generate a random 32-byte block ID */
export declare function generateBlockId(): string
/** Create default Quasar configuration (production) */
export declare function defaultConfig(): QuasarConfig
/** Create testnet configuration (lower thresholds for testing) */
export declare function testnetConfig(): QuasarConfig
/** Create mainnet configuration (production settings) */
export declare function mainnetConfig(): QuasarConfig
/** Get SDK version */
export declare function version(): string
/** Compute FPC threshold for given parameters */
export declare function fpcThreshold(phase: number, k: number, thetaMin: number, thetaMax: number): number
/** Block identifier (32-byte hex string) */
export declare class BlockId {
constructor(hexString: string)
/** Create zero ID (genesis parent) */
static zero(): BlockId
toHex(): string
toBytes(): Array<number>
isZero(): boolean
}
/** Node identifier (32-byte hex string) */
export declare class NodeId {
constructor(hexString: string)
toHex(): string
toBytes(): Array<number>
}
/**
* FPC (Fast Probabilistic Consensus) threshold selector
*
* Computes phase-dependent thresholds using PRF-based selection.
* Formula: α(phase, k) = ⌈θ(phase) · k⌉
*/
export declare class FpcSelector {
/** Create a new FPC selector with given theta range */
constructor(thetaMin: number, thetaMax: number, seedHex?: string | undefined | null)
/** Get the threshold for a given phase and k */
threshold(phase: number, k: number): number
/** Get theta value for a phase (between theta_min and theta_max) */
theta(phase: number): number
}
/**
* Lux Quasar Consensus Engine for TypeScript/Node.js
*
* Thread-safe consensus engine with native performance.
* Implements complete Quasar consensus with:
* - Wave: Threshold voting with FPC support
* - FPC: Fast Probabilistic Consensus
* - Photon: Light-based validator sampling
* - Focus: Confidence accumulation
* - Quasar: Post-quantum finality
*/
export declare class ConsensusEngine {
/** Create a new consensus engine with configuration */
constructor(config: QuasarConfig)
/** Start the consensus engine */
start(): void
/** Stop the consensus engine */
stop(): void
/** Add a block to the consensus */
addBlock(block: Block): void
/** Record a vote on a block */
recordVote(vote: Vote): void
/** Check if a block has been accepted */
isAccepted(blockId: string): boolean
/** Get the status of a block */
getStatus(blockId: string): BlockStatus
/** Process multiple votes in batch (optimized) */
recordVotesBatch(votes: Array<Vote>): number
/** Add a validator to the engine */
addValidator(nodeId: string, weight: number): void
/** Get the current configuration */
getConfig(): QuasarConfig
/** Get current block height */
getHeight(): number
}