UNPKG

@stalkchain/grpc-pool

Version:

High-availability gRPC connection pooling module with active-active configuration, deduplication, and stale connection detection

137 lines 3.28 kB
/** * types/index.ts - Basic type definitions for gRPC pool MVP * * Simple types for connecting to 3 endpoints and streaming transaction signatures. * Based on Triton-One Yellowstone gRPC patterns. * * @module types * @author StalkChain Team * @version 0.1.0 */ /** * Configuration for a single gRPC endpoint */ export interface PoolEndpoint { endpoint: string; token: string; ping?: boolean; } /** * Pool configuration with multiple endpoints */ export interface PoolConfig { endpoints: PoolEndpoint[]; } /** * Optional configuration for pool behavior and timing */ export interface PoolOptions { /** Ping interval in milliseconds (default: 30000) */ pingIntervalMs?: number; /** Stale connection timeout in milliseconds (default: 120000) */ staleTimeoutMs?: number; /** Deduplication TTL in milliseconds (default: 30000) */ deduplicationTtlMs?: number; /** Maximum signatures in deduplication cache (default: 10000) */ maxCacheSize?: number; /** Initial retry delay in milliseconds (default: 500) */ initialRetryDelayMs?: number; /** Maximum retry delay in milliseconds (default: 30000) */ maxRetryDelayMs?: number; /** Retry backoff multiplier (default: 2) */ retryBackoffFactor?: number; } /** * Subscription request for Yellowstone gRPC */ export interface SubscribeRequest { accounts?: Record<string, AccountFilter>; transactions?: Record<string, TransactionFilter>; commitment?: string; } /** * Account filter for program accounts */ export interface AccountFilter { owner?: string[]; } /** * Transaction filter */ export interface TransactionFilter { accountInclude?: string[]; vote?: boolean; failed?: boolean; } /** * Transaction data from stream */ export interface TransactionUpdate { signature?: string; slot?: number; meta?: { err?: any; }; } /** * Full gRPC transaction data structure */ export interface FullTransactionData { transaction?: { signature?: Buffer; isVote?: boolean; transaction?: { signatures?: Buffer[]; message?: any; }; }; slot?: number; meta?: any; filters?: string[]; [key: string]: any; } /** * Stream data event */ export interface StreamData { transaction?: FullTransactionData; pong?: { id: number; }; receivedTimestamp?: number; } /** * Processed message from the pool with source information */ export interface ProcessedMessage { data: FullTransactionData; source: string; timestamp: number; } /** * Transaction event data emitted when a unique transaction is received */ export interface TransactionEvent { signature: string; data: FullTransactionData; source: string; timestamp: number; } /** * Duplicate event data emitted when a duplicate transaction is filtered */ export interface DuplicateEvent { signature: string; source: string; timestamp: number; } /** * Endpoint connection event data for monitoring individual endpoint status */ export interface EndpointEvent { endpoint: string; status: 'connected' | 'disconnected' | 'reconnected'; timestamp: number; details?: string; } //# sourceMappingURL=index.d.ts.map