@stalkchain/grpc-pool
Version:
High-availability gRPC connection pooling module with active-active configuration, deduplication, and stale connection detection
137 lines • 3.28 kB
TypeScript
/**
* 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