/**
 * Common Protocol Types
 *
 * Shared types used across different protocol implementations
 */
/**
 * Supported protocol types
 */
export type TProtocolType = 'tls' | 'http' | 'https' | 'websocket' | 'unknown';
/**
 * Protocol detection result
 */
export interface IProtocolDetectionResult {
    protocol: TProtocolType;
    confidence: number;
    requiresMoreData?: boolean;
    metadata?: {
        version?: string;
        method?: string;
        [key: string]: any;
    };
}
/**
 * Routing information extracted from protocols
 */
export interface IRoutingInfo {
    domain?: string;
    port?: number;
    path?: string;
    protocol: TProtocolType;
}
/**
 * Connection context for protocol operations
 */
export interface IConnectionContext {
    id: string;
    sourceIp?: string;
    sourcePort?: number;
    destIp?: string;
    destPort?: number;
    timestamp?: number;
}
/**
 * Protocol detection options
 */
export interface IProtocolDetectionOptions {
    quickMode?: boolean;
    extractRouting?: boolean;
    maxWaitTime?: number;
    maxBufferSize?: number;
}
/**
 * Base interface for protocol detectors
 */
export interface IProtocolDetector {
    /**
     * Check if this detector can handle the data
     */
    canHandle(data: Buffer): boolean;
    /**
     * Perform quick detection (first few bytes only)
     */
    quickDetect(data: Buffer): IProtocolDetectionResult;
    /**
     * Extract routing information if possible
     */
    extractRouting?(data: Buffer, context?: IConnectionContext): IRoutingInfo | null;
}
