/**
 * Core types for the user tracking system
 */
export interface TrackerOptions {
    idleThreshold?: number;
    trackingInterval?: number;
    enableConsoleLog?: boolean;
    secureModeEnabled?: boolean;
    trackingKey?: string;
    onActivityChange?: (isActive: boolean, activityType?: ActivityType) => void;
    onTimeUpdate?: (data: TimeTrackingData) => void;
    onElementVisible?: (elementKey: string, data: ElementTrackingData) => void;
    onElementHidden?: (elementKey: string, data: ElementTrackingData) => void;
    onTrackingEvent?: (event: TrackingEvent) => void;
}
export type ActivityType = 'mouse' | 'keyboard' | 'scroll' | 'touch' | 'focus' | 'visibility' | 'idle_timeout' | 'element_interaction';
export interface TimeTrackingData {
    sessionId: string;
    trackingKey: string;
    totalTimeSpent: number;
    activeTimeSpent: number;
    idleTimeSpent: number;
    pageVisits: number;
    lastActivity: Date;
    sessionStart: Date;
    url: string;
    title: string;
    referrer: string;
    userAgent: string;
    elementTrackingData: Record<string, ElementTrackingData>;
    activityHistory: TrackingEvent[];
}
export interface ElementTrackingData {
    elementKey: string;
    totalVisibleTime: number;
    visibilityCount: number;
    firstSeen: Date;
    lastSeen: Date;
    isCurrentlyVisible: boolean;
    viewportPercentage: number;
    interactions: ElementInteraction[];
}
export interface ElementInteraction {
    type: 'click' | 'hover' | 'focus' | 'scroll';
    timestamp: Date;
    position?: {
        x: number;
        y: number;
    };
    target?: string;
}
export interface TrackingEvent {
    type: string;
    timestamp: number;
    activityType?: ActivityType;
    data?: any;
}
export interface MouseActivityData {
    type: 'click' | 'move' | 'hover' | 'drag';
    position: {
        x: number;
        y: number;
    };
    target?: string;
    button?: number;
    clicks?: number;
    pressure?: number;
    movement?: {
        x: number;
        y: number;
    };
}
export interface ScrollActivityData {
    type: 'scroll';
    position: {
        x: number;
        y: number;
    };
    depth: number;
    velocity: number;
    direction: 'up' | 'down' | 'left' | 'right';
    target?: string;
}
export interface KeyboardActivityData {
    type: 'keydown' | 'keyup' | 'keypress';
    key: string;
    code: string;
    keyCode: number;
    ctrlKey: boolean;
    altKey: boolean;
    shiftKey: boolean;
    metaKey: boolean;
    target?: string;
}
export interface TouchActivityData {
    type: 'touchstart' | 'touchmove' | 'touchend';
    touches: TouchPoint[];
    target?: string;
    gesture?: 'pinch' | 'swipe' | 'tap' | 'longpress';
}
export interface TouchPoint {
    identifier: number;
    clientX: number;
    clientY: number;
    pageX: number;
    pageY: number;
    pressure?: number;
}
export interface ElementVisibilityOptions {
    trackVisibility?: boolean;
    trackInteractions?: boolean;
    threshold?: number;
    rootMargin?: string;
}
export interface ActivityDetectorOptions {
    enableConsoleLog?: boolean;
    onActivity: (activityType: ActivityType) => void;
}
export interface ElementVisibilityTrackerOptions {
    enableConsoleLog?: boolean;
    onVisible: (elementKey: string, element: Element, data: ElementTrackingData) => void;
    onHidden: (elementKey: string, element: Element, data: ElementTrackingData) => void;
}
export interface MouseTrackerOptions {
    enableConsoleLog?: boolean;
    trackClicks?: boolean;
    trackMovement?: boolean;
    trackHovers?: boolean;
    onMouseActivity: (data: MouseActivityData) => void;
}
export interface ScrollTrackerOptions {
    enableConsoleLog?: boolean;
    trackDepth?: boolean;
    trackVelocity?: boolean;
    onScrollActivity: (data: ScrollActivityData) => void;
}
export interface KeyboardTrackerOptions {
    enableConsoleLog?: boolean;
    trackKeystrokes?: boolean;
    trackCombinations?: boolean;
    onKeyboardActivity: (data: KeyboardActivityData) => void;
}
export interface TouchTrackerOptions {
    enableConsoleLog?: boolean;
    trackGestures?: boolean;
    trackPressure?: boolean;
    onTouchActivity: (data: TouchActivityData) => void;
}
export interface FocusTrackerOptions {
    enableConsoleLog?: boolean;
    onFocusChange: (hasFocus: boolean) => void;
}
export interface NetworkTrackerOptions {
    enableConsoleLog?: boolean;
    onNetworkChange: (isOnline: boolean) => void;
}
export interface SessionData {
    sessionId: string;
    trackingKey: string;
    startTime: Date;
    duration: number;
    isActive: boolean;
}
export interface ActivityStats {
    mouseEvents: number;
    keyboardEvents: number;
    scrollEvents: number;
    touchEvents: number;
    totalEvents: number;
}
export interface FormattedData {
    totalTime: string;
    activeTime: string;
    idleTime: string;
    engagementRate: string;
}
//# sourceMappingURL=types.d.ts.map