/**
 * Type definitions for the structured logging system
 */
export type LogLevel = 'silent' | 'fatal' | 'error' | 'warn' | 'info' | 'http' | 'debug' | 'trace';
export interface LoggerConfig {
    level: LogLevel;
    destination?: string;
    pretty: boolean;
    redact: string[];
    correlation: boolean;
    serialize: boolean;
    transport?: unknown;
}
export interface LogEntry {
    level: LogLevel;
    time: string;
    pid: number;
    hostname: string;
    correlationId?: string;
    nodeVersion?: string;
    platform?: string;
    arch?: string;
    service?: string;
    version?: string;
    environment?: string;
    msg: string;
    [key: string]: unknown;
}
export interface EnhancedLoggerConfig extends LoggerConfig {
    options?: EnhancedTransportOptions;
    [key: string]: unknown;
}
export interface EnhancedTransportOptions {
    destination?: string | number;
    level?: LogLevel;
    translateTime?: string;
    ignore?: string;
    messageFormat?: string;
    customPrettifiers?: Record<string, (data: unknown) => string>;
    levelFirst?: boolean;
    singleLine?: boolean;
    colorize?: boolean;
    [key: string]: unknown;
}
export interface Logger {
    fatal: ((msg: string, ...args: unknown[]) => void) & ((obj: object, msg?: string) => void);
    error: ((msg: string, ...args: unknown[]) => void) & ((obj: object, msg?: string) => void);
    warn: ((msg: string, ...args: unknown[]) => void) & ((obj: object, msg?: string) => void);
    info: ((msg: string, ...args: unknown[]) => void) & ((obj: object, msg?: string) => void);
    http: ((msg: string, ...args: unknown[]) => void) & ((obj: object, msg?: string) => void);
    debug: ((msg: string, ...args: unknown[]) => void) & ((obj: object, msg?: string) => void);
    trace: ((msg: string, ...args: unknown[]) => void) & ((obj: object, msg?: string) => void);
    child(bindings: Record<string, unknown>): Logger;
    isLevelEnabled(level: LogLevel): boolean;
    flush(): Promise<void>;
    flushSync(): void;
    end(): Promise<void>;
    _destination?: unknown;
}
export interface PiiRedactionRules {
    patterns: RegExp[];
    customPaths: string[];
    emailRedaction: boolean;
    userIdRedaction: boolean;
}
export interface CorrelationContext {
    id: string;
    parentId?: string;
    metadata?: Record<string, unknown>;
}
export interface CorrelationMetadata {
    source?: string;
    version?: string;
    environment?: string;
    requestId?: string;
    [key: string]: unknown;
}
export interface PerformanceMetrics {
    startTime: number;
    duration?: number;
    memoryUsage?: NodeJS.MemoryUsage;
    cpuUsage?: NodeJS.CpuUsage;
}
export interface TransportConfig {
    target: string;
    options: {
        destination?: string;
        level?: LogLevel;
        formatters?: Record<string, (data: unknown) => unknown>;
        redact?: string[];
        frequency?: string | number;
        size?: string | number;
        limit?: {
            count: number;
            removeOtherLogFiles?: boolean;
        };
        dateFormat?: string;
        extension?: string;
        symlink?: boolean;
        mkdir?: boolean;
        compress?: boolean;
        sync?: boolean;
        minLength?: number;
        maxLength?: number;
        periodicFlush?: number;
    };
}
/**
 * Environment-specific transport configuration
 */
export interface EnvironmentTransportConfig {
    enableFile: boolean;
    enableConsole: boolean;
}
/**
 * Pino transport options type
 */
export interface PinoTransportOptions {
    target: string;
    options?: {
        destination?: string;
        mkdir?: boolean;
        append?: boolean;
        [key: string]: unknown;
    };
}
/**
 * Type for console method arguments
 */
export type ConsoleArgument = string | number | boolean | null | undefined | Error | Record<string, unknown> | Array<unknown>;
/**
 * Type for console method arguments array
 */
export type ConsoleArguments = ConsoleArgument[];
/**
 * Typed object for console log data
 */
export interface ConsoleLogData extends Record<string, unknown> {
    correlationId: string;
    source: string;
    argumentCount?: number;
    stringArgs?: number;
    objectArgs?: number;
    primitiveArgs?: number;
    objects?: unknown[];
    errorLikeObjects?: unknown[];
    moduleName?: string;
    allArgs?: ConsoleArguments;
}
/**
 * Type for HTTP request object in correlation tracking
 */
export interface CorrelationHttpRequest {
    method?: string;
    url?: string;
    headers?: Record<string, string>;
}
/**
 * Type for HTTP response object in correlation tracking
 */
export interface CorrelationHttpResponse {
    statusCode?: number;
    headers?: Record<string, string>;
    setHeader?: (name: string, value: string) => void;
}
//# sourceMappingURL=types.d.ts.map