import { z } from 'zod';
export declare const LogLevelSchema: z.ZodEnum<["debug", "info", "warn", "error", "critical"]>;
export type LogLevel = z.infer<typeof LogLevelSchema>;
export declare const LogCategorySchema: z.ZodEnum<["system", "security", "performance", "audit", "accessibility", "compliance", "ai", "workflow", "api", "ui", "user", "other"]>;
export type LogCategory = z.infer<typeof LogCategorySchema>;
export interface LogContext {
    component?: string;
    operation?: string;
    userId?: string;
    sessionId?: string;
    requestId?: string;
    correlationId?: string;
    timestamp: string;
    metadata?: Record<string, unknown>;
}
export interface LogEntry {
    level: LogLevel;
    category: LogCategory;
    message: string;
    timestamp: string;
    context?: LogContext;
    error?: unknown;
    metadata?: Record<string, unknown>;
}
export interface Logger {
    debug(message: string, context?: LogContext, metadata?: Record<string, unknown>): void;
    info(message: string, context?: LogContext, metadata?: Record<string, unknown>): void;
    warn(message: string, context?: LogContext, metadata?: Record<string, unknown>): void;
    error(message: string, error?: unknown, context?: LogContext, metadata?: Record<string, unknown>): void;
    critical(message: string, error?: unknown, context?: LogContext, metadata?: Record<string, unknown>): void;
    log(level: LogLevel, message: string, context?: LogContext, metadata?: Record<string, unknown>): void;
    isEnabled(level: LogLevel): boolean;
    setLevel(level: LogLevel): void;
    getLevel(): LogLevel;
}
export interface LogHandler {
    handle(entry: LogEntry): void;
    format(entry: LogEntry): string;
    shouldHandle(entry: LogEntry): boolean;
}
export interface LogTransport {
    log(entry: LogEntry): Promise<void>;
    isEnabled(level: LogLevel): boolean;
    setLevel(level: LogLevel): void;
    getLevel(): LogLevel;
}
export declare const LogContextSchema: z.ZodObject<{
    component: z.ZodOptional<z.ZodString>;
    operation: z.ZodOptional<z.ZodString>;
    userId: z.ZodOptional<z.ZodString>;
    sessionId: z.ZodOptional<z.ZodString>;
    requestId: z.ZodOptional<z.ZodString>;
    correlationId: z.ZodOptional<z.ZodString>;
    timestamp: z.ZodString;
    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
    timestamp: string;
    component?: string | undefined;
    metadata?: Record<string, unknown> | undefined;
    userId?: string | undefined;
    operation?: string | undefined;
    requestId?: string | undefined;
    sessionId?: string | undefined;
    correlationId?: string | undefined;
}, {
    timestamp: string;
    component?: string | undefined;
    metadata?: Record<string, unknown> | undefined;
    userId?: string | undefined;
    operation?: string | undefined;
    requestId?: string | undefined;
    sessionId?: string | undefined;
    correlationId?: string | undefined;
}>;
export declare const LogEntrySchema: z.ZodObject<{
    level: z.ZodEnum<["debug", "info", "warn", "error", "critical"]>;
    category: z.ZodEnum<["system", "security", "performance", "audit", "accessibility", "compliance", "ai", "workflow", "api", "ui", "user", "other"]>;
    message: z.ZodString;
    timestamp: z.ZodString;
    context: z.ZodOptional<z.ZodObject<{
        component: z.ZodOptional<z.ZodString>;
        operation: z.ZodOptional<z.ZodString>;
        userId: z.ZodOptional<z.ZodString>;
        sessionId: z.ZodOptional<z.ZodString>;
        requestId: z.ZodOptional<z.ZodString>;
        correlationId: z.ZodOptional<z.ZodString>;
        timestamp: z.ZodString;
        metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, "strip", z.ZodTypeAny, {
        timestamp: string;
        component?: string | undefined;
        metadata?: Record<string, unknown> | undefined;
        userId?: string | undefined;
        operation?: string | undefined;
        requestId?: string | undefined;
        sessionId?: string | undefined;
        correlationId?: string | undefined;
    }, {
        timestamp: string;
        component?: string | undefined;
        metadata?: Record<string, unknown> | undefined;
        userId?: string | undefined;
        operation?: string | undefined;
        requestId?: string | undefined;
        sessionId?: string | undefined;
        correlationId?: string | undefined;
    }>>;
    error: z.ZodOptional<z.ZodUnknown>;
    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
    category: "ai" | "security" | "other" | "user" | "performance" | "system" | "api" | "workflow" | "accessibility" | "compliance" | "audit" | "ui";
    timestamp: string;
    level: "error" | "info" | "debug" | "critical" | "warn";
    message: string;
    error?: unknown;
    metadata?: Record<string, unknown> | undefined;
    context?: {
        timestamp: string;
        component?: string | undefined;
        metadata?: Record<string, unknown> | undefined;
        userId?: string | undefined;
        operation?: string | undefined;
        requestId?: string | undefined;
        sessionId?: string | undefined;
        correlationId?: string | undefined;
    } | undefined;
}, {
    category: "ai" | "security" | "other" | "user" | "performance" | "system" | "api" | "workflow" | "accessibility" | "compliance" | "audit" | "ui";
    timestamp: string;
    level: "error" | "info" | "debug" | "critical" | "warn";
    message: string;
    error?: unknown;
    metadata?: Record<string, unknown> | undefined;
    context?: {
        timestamp: string;
        component?: string | undefined;
        metadata?: Record<string, unknown> | undefined;
        userId?: string | undefined;
        operation?: string | undefined;
        requestId?: string | undefined;
        sessionId?: string | undefined;
        correlationId?: string | undefined;
    } | undefined;
}>;
export interface LoggerConfig {
    level: LogLevel;
    category: LogCategory;
    component?: string;
    transports?: LogTransport[];
    handlers?: LogHandler[];
    format?: (entry: LogEntry) => string;
    filter?: (entry: LogEntry) => boolean;
}
export interface LoggerFactory {
    createLogger(config: LoggerConfig): Logger;
    getLogger(component: string): Logger;
    setDefaultLevel(level: LogLevel): void;
    getDefaultLevel(): LogLevel;
}
export interface ComponentLogger extends Logger {
    component: string;
    setComponent(component: string): void;
    getComponent(): string;
}
export interface BlueflyLogger extends Logger {
    setCategory(category: LogCategory): void;
    getCategory(): LogCategory;
    setComponent(component: string): void;
    getComponent(): string;
    setCorrelationId(correlationId: string): void;
    getCorrelationId(): string;
    setUserId(userId: string): void;
    getUserId(): string;
    setSessionId(sessionId: string): void;
    getSessionId(): string;
    setRequestId(requestId: string): void;
    getRequestId(): string;
    setMetadata(metadata: Record<string, unknown>): void;
    getMetadata(): Record<string, unknown>;
    clearMetadata(): void;
    addMetadata(key: string, value: unknown): void;
    removeMetadata(key: string): void;
}
//# sourceMappingURL=logger.d.ts.map