import { Buffer } from 'buffer';
import { type LoggerFunction } from './client-hello-parser.js';
/**
 * Connection tracking information
 */
export interface ConnectionInfo {
    sourceIp: string;
    sourcePort: number;
    destIp: string;
    destPort: number;
    timestamp?: number;
}
/**
 * Utilities for extracting SNI information from TLS handshakes
 */
export declare class SniExtraction {
    /**
     * Extracts the SNI (Server Name Indication) from a TLS ClientHello message.
     *
     * @param buffer The buffer containing the TLS ClientHello message
     * @param logger Optional logging function
     * @returns The extracted server name or undefined if not found
     */
    static extractSNI(buffer: Buffer, logger?: LoggerFunction): string | undefined;
    /**
     * Attempts to extract SNI from the PSK extension in a TLS 1.3 ClientHello.
     *
     * In TLS 1.3, when a client attempts to resume a session, it may include
     * the server name in the PSK identity hint rather than in the SNI extension.
     *
     * @param buffer The buffer containing the TLS ClientHello message
     * @param logger Optional logging function
     * @returns The extracted server name or undefined if not found
     */
    static extractSNIFromPSKExtension(buffer: Buffer, logger?: LoggerFunction): string | undefined;
    /**
     * Main entry point for SNI extraction with support for fragmented messages
     * and session resumption edge cases.
     *
     * @param buffer The buffer containing TLS data
     * @param connectionInfo Connection tracking information
     * @param logger Optional logging function
     * @param cachedSni Optional previously cached SNI value
     * @returns The extracted server name or undefined
     */
    static extractSNIWithResumptionSupport(buffer: Buffer, connectionInfo?: ConnectionInfo, logger?: LoggerFunction, cachedSni?: string): string | undefined;
    /**
     * Unified method for processing a TLS packet and extracting SNI.
     * Main entry point for SNI extraction that handles all edge cases.
     *
     * @param buffer The buffer containing TLS data
     * @param connectionInfo Connection tracking information
     * @param logger Optional logging function
     * @param cachedSni Optional previously cached SNI value
     * @returns The extracted server name or undefined
     */
    static processTlsPacket(buffer: Buffer, connectionInfo: ConnectionInfo, logger?: LoggerFunction, cachedSni?: string): string | undefined;
}
