declare global {
    interface Window {
        dataLayer?: any[];
    }
}
export interface StructuredLog {
    timestamp: string;
    level: string;
    message: string;
    tags?: string[];
    context: Record<string, any>;
    meta: {
        url: string;
        userAgent?: string;
        traceId?: string;
        sessionId?: string;
        [key: string]: any;
    };
    data?: any;
}
export declare class ConsoleInterceptor {
    private logQueue;
    private batchSize;
    private flushInterval;
    private enableGTM;
    private enableServer;
    private contextProvider;
    private serverLogger;
    private originalConsole;
    private customLevels;
    private logger;
    private defaultSessionId;
    private generateTraceId;
    private persistentContext;
    private persistentTags;
    constructor(options?: {
        batchSize?: number;
        flushInterval?: number;
        enableGTM?: boolean;
        enableServer?: boolean;
        contextProvider?: () => Record<string, any>;
        serverLogger?: (logs: StructuredLog[]) => Promise<void>;
        customLevels?: string[];
        generateTraceId?: () => string;
        filterLevels?: string[];
    });
    overrideConsole(): void;
    setupCustomLogger(): void;
    setContext(ctx: Record<string, any>): void;
    clearContext(): void;
    clearTags(): void;
    getLogger(): Record<string, any>;
    enqueueLog(level: string, args: any[], tags?: string[], extraContext?: Record<string, any>, extraMeta?: Record<string, any>): void;
    setupFlushInterval(): void;
    flushLogs(): Promise<void>;
}
