/**
 * Risk metrics collection & baseline management
 */
import { SuspiciousFlags } from "../domain/suspicious-flags";
interface EnvironmentBaseline {
    language: string | null;
    timezone: string | null;
    os: string | null;
    browser: string | null;
    firstSeen: number;
}
interface EnvironmentChangeFlags {
    languageChanged: boolean;
    timezoneChanged: boolean;
    osChanged: boolean;
    browserChanged: boolean;
}
export interface RemoteAccessAggregates {
    headlessIndicatorCount: number;
    noMouseMoveDurationMs: number;
    clickOnlyPattern: boolean;
    fastPageTransition: boolean;
    navigationVelocity: number;
    formFillAnomaly: boolean;
    formFillDurationMs: number;
    inputPasteRatio: number;
}
declare class RiskMetricsService {
    private lastMouseMoveTs;
    private lastClickTs;
    private mouseMoveCounterWindow;
    private clickCounterWindow;
    private pageViewTimestamps;
    private pasteCharCount;
    private typedCharCount;
    private lastPageViewTs;
    private lastFormInteractionStart;
    private lastFormFieldCount;
    private lastFormDurationMs;
    private formFillAnomaly;
    private fastPageTransition;
    /** register global listeners (idempotent) */
    initListeners(): void;
    /** Called on each page view */
    registerPageView(): void;
    getAggregates(): RemoteAccessAggregates;
    computePasteRatio(): number;
    resetRollingWindow(): void;
    private detectFormAnomaly;
    loadBaseline(tenant: string, deviceId: string): EnvironmentBaseline | null;
    ensureBaseline(tenant: string, deviceId: string, data: Omit<EnvironmentBaseline, "firstSeen">): EnvironmentBaseline;
    diffEnvironment(baseline: EnvironmentBaseline, current: Omit<EnvironmentBaseline, "firstSeen">): EnvironmentChangeFlags;
    calcEnvironmentChangeScore(flags: EnvironmentChangeFlags): number;
    calcRemoteAccessScore(flags: SuspiciousFlags, envMismatch: boolean, agg: RemoteAccessAggregates): number;
    private getBaselineKey;
}
export declare const riskMetricsService: RiskMetricsService;
export type { EnvironmentBaseline, EnvironmentChangeFlags };
