/**
 * Headers that can be used for fingerprint computation
 */
export interface RequestHeaders {
    /** User-Agent header */
    userAgent?: string;
    /** Accept-Language header */
    acceptLanguage?: string;
    /** Accept-Encoding header */
    acceptEncoding?: string;
    /** DNT (Do Not Track) header */
    dnt?: string;
    /** Accept header */
    accept?: string;
    /** Sec-CH-UA header (Client Hints) */
    secChUa?: string;
    /** Sec-CH-UA-Mobile header */
    secChUaMobile?: string;
    /** Sec-CH-UA-Platform header */
    secChUaPlatform?: string;
}
/**
 * Fingerprint service configuration
 */
export interface FingerprintConfig {
    /** Whether fingerprint validation is enabled */
    enabled: boolean;
    /** Strictness level: 'warn' logs mismatches, 'block' rejects the request */
    strictness: 'warn' | 'block';
    /** Components to include in fingerprint computation */
    components: string[];
}
/**
 * Result of fingerprint computation
 */
export interface FingerprintResult {
    /** The computed fingerprint hash */
    fingerprint: string;
    /** Components that were used in computation */
    componentsUsed: string[];
    /** Whether any components were missing */
    missingComponents: string[];
}
/**
 * Result of fingerprint validation
 */
export interface FingerprintValidationResult {
    /** Whether the fingerprint is valid (matches) */
    valid: boolean;
    /** Reason for validation failure */
    reason?: string;
    /** Whether the request should be blocked (based on strictness) */
    shouldBlock: boolean;
    /** Current fingerprint from request */
    currentFingerprint?: string;
    /** Stored fingerprint from session */
    storedFingerprint?: string;
    /** Components that changed */
    changedComponents?: string[];
}
/**
 * Server-side fingerprint service for session binding
 */
export declare class FingerprintService {
    private config;
    constructor(config?: Partial<FingerprintConfig>);
    /**
     * Compute a fingerprint from request headers
     *
     * @param headers - Request headers to fingerprint
     * @returns Fingerprint result with hash and metadata
     */
    computeFingerprint(headers: RequestHeaders): FingerprintResult;
    /**
     * Validate a fingerprint against a stored fingerprint
     *
     * @param headers - Current request headers
     * @param storedFingerprint - Previously stored fingerprint from session
     * @param sessionId - Session ID for logging
     * @returns Validation result
     */
    validateFingerprint(headers: RequestHeaders, storedFingerprint: string, sessionId?: string): FingerprintValidationResult;
    /**
     * Check if fingerprint validation is enabled
     */
    isEnabled(): boolean;
    /**
     * Get the current strictness setting
     */
    getStrictness(): 'warn' | 'block';
    /**
     * Get the configured components
     */
    getComponents(): string[];
    /**
     * Extract a header value by component name
     */
    private getHeaderValue;
    /**
     * Attempt to detect which components changed
     * This is approximate as we can't reverse the hash
     */
    private detectChangedComponents;
}
/**
 * Get the fingerprint service singleton
 *
 * Initializes with configuration from getConfig() on first call.
 */
export declare function getFingerprintService(): FingerprintService;
/**
 * Reset the singleton instance (useful for testing)
 *
 * @internal
 */
export declare function resetFingerprintService(): void;
/**
 * Extract fingerprint-relevant headers from a Fastify request
 *
 * @param requestHeaders - Raw request headers object
 * @returns Normalized headers for fingerprint computation
 */
export declare function extractFingerprintHeaders(requestHeaders: Record<string, string | string[] | undefined>): RequestHeaders;
export default FingerprintService;
//# sourceMappingURL=fingerprint-service.d.ts.map