/**
 * Logger Utility for OpenFin Workspace Monorepo
 *
 * Provides structured, contextual logging with consistent formatting
 * across all workspaces and modules.
 */
export interface LogData {
    [key: string]: any;
}
export interface Logger {
    debug: (method: string, message: string, data?: LogData | (() => LogData)) => void;
    info: (method: string, message: string, data?: LogData | (() => LogData)) => void;
    warn: (method: string, message: string, data?: LogData | (() => LogData)) => void;
    error: (method: string, message: string, data?: LogData | (() => LogData)) => void;
}
/**
 * Configuration for the logger
 */
export interface LoggerConfig {
    /** Include timestamp in logs (default: true) */
    includeTimestamp?: boolean;
    /** Custom prefix for logs */
    customPrefix?: string;
}
/**
 * Create a structured logger for a specific context
 *
 * @param context - The context identifier (workspace, module, or component name)
 * @param config - Optional configuration for the logger
 * @returns Enhanced logger instance
 *
 * @example
 * ```typescript
 * const logger = createLogger('browser.TabList');
 *
 * logger.info('addTab', 'Adding new tab', { pageId: '123' });
 * logger.error('addTab', 'Failed to add tab', { error: err.message });
 * ```
 */
export declare const createLogger: (context: string, config?: LoggerConfig) => Logger;
/**
 * Create a logger with performance monitoring capabilities
 * Useful for tracking execution times and performance metrics
 */
export declare const createPerformanceLogger: (context: string, config?: LoggerConfig) => {
    /**
     * Start a performance timer
     */
    startTimer: (timerId: string, method: string, message: string, data?: LogData) => void;
    /**
     * Clear a specific timer without logging
     */
    clearTimer: (timerId: string) => void;
    /**
     * End a performance timer and log the duration
     */
    endTimer: (timerId: string, method: string, message: string, data?: LogData) => void;
    debug: (method: string, message: string, data?: LogData | (() => LogData)) => void;
    info: (method: string, message: string, data?: LogData | (() => LogData)) => void;
    warn: (method: string, message: string, data?: LogData | (() => LogData)) => void;
    error: (method: string, message: string, data?: LogData | (() => LogData)) => void;
};
export type EnhancedLogger = ReturnType<typeof createPerformanceLogger>;
/**
 * Middleware function for wrapping async operations with logging
 */
export declare const withLogging: <T extends any[], R>(logger: Logger, method: string, operation: (...args: T) => Promise<R> | R) => (...args: T) => Promise<R>;
/**
 * Legacy logger instance for backwards compatibility.
 * Use `createLogger` for new code to get structured, contextual logging.
 *
 * @deprecated Use createLogger() instead for new code
 */
export declare const log: {
    /**
     * Calls console.debug with provided parameters and stringifies JS objects prior to logging.
     * Only logs when LOG_DEBUG is enabled.
     */
    debug: (...args: unknown[]) => void;
    /**
     * Calls console.info with provided parameters and stringifies JS objects prior to logging
     */
    info: (...args: unknown[]) => void;
    /**
     * Calls console.warn with provided parameters and stringifies JS objects prior to logging
     */
    warn: (...args: unknown[]) => void;
    /**
     * Calls console.error with provided parameters and stringifies JS objects prior to logging
     */
    error: (...args: unknown[]) => void;
    /**
     * Calls console.trace with provided parameters and stringifies JS objects prior to logging
     */
    trace: (...args: unknown[]) => void;
};
