/**
 * Minimal Logger Utility
 * Provides structured logging with levels and context to keep production output clean
 */
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
export interface LogContext {
    operation?: string;
    id?: string;
    userId?: string;
    positionId?: string;
    pkpId?: string;
    address?: string;
    network?: string;
    provider?: string;
    attempt?: number;
    maxAttempts?: number;
    duration?: number;
    [key: string]: any;
}
export interface LoggerConfig {
    enabled: boolean;
    level: LogLevel;
    includeTimestamp: boolean;
    includeContext: boolean;
    maxContextKeys: number;
    verboseInProduction: boolean;
    isProduction: boolean;
}
export declare class Logger {
    private config;
    private static instance;
    constructor(config?: Partial<LoggerConfig>);
    /**
     * Get or create singleton logger instance
     */
    static getInstance(config?: Partial<LoggerConfig>): Logger;
    /**
     * Update logger configuration
     */
    updateConfig(config: Partial<LoggerConfig>): void;
    /**
     * Check if a log level should be output
     */
    private shouldLog;
    /**
     * Format context object for output
     */
    private formatContext;
    /**
     * Format timestamp for output
     */
    private formatTimestamp;
    /**
     * Core logging method
     */
    private log;
    /**
     * Get prefix for log level
     */
    private getLevelPrefix;
    /**
     * Debug level logging
     */
    debug(message: string, context?: LogContext): void;
    /**
     * Info level logging
     */
    info(message: string, context?: LogContext): void;
    /**
     * Warning level logging
     */
    warn(message: string, context?: LogContext): void;
    /**
     * Error level logging
     */
    error(message: string, context?: LogContext): void;
    /**
     * Log operation start
     */
    startOperation(operation: string, context?: LogContext): void;
    /**
     * Log operation completion
     */
    completeOperation(operation: string, context?: LogContext): void;
    /**
     * Log operation failure
     */
    failOperation(operation: string, error: Error | string, context?: LogContext): void;
    /**
     * Log retry attempt
     */
    retry(operation: string, attempt: number, maxAttempts: number, error?: Error, context?: LogContext): void;
    /**
     * Log cache operations
     */
    cacheHit(key: string, context?: LogContext): void;
    cacheMiss(key: string, context?: LogContext): void;
    /**
     * Log network operations
     */
    networkRequest(url: string, method: string, context?: LogContext): void;
    networkResponse(url: string, status: number, duration?: number, context?: LogContext): void;
    /**
     * Log Bitcoin operations
     */
    bitcoinOperation(operation: string, address?: string, context?: LogContext): void;
    /**
     * Log contract operations
     */
    contractOperation(operation: string, contract?: string, context?: LogContext): void;
}
/**
 * Get the global logger instance
 */
export declare function getLogger(): Logger;
/**
 * Create a logger with specific configuration
 */
export declare function createLogger(config: Partial<LoggerConfig>): Logger;
/**
 * Quick logging functions for common use cases
 */
export declare const log: {
    debug: (message: string, context?: LogContext) => void;
    info: (message: string, context?: LogContext) => void;
    warn: (message: string, context?: LogContext) => void;
    error: (message: string, context?: LogContext) => void;
    start: (operation: string, context?: LogContext) => void;
    complete: (operation: string, context?: LogContext) => void;
    fail: (operation: string, error: Error | string, context?: LogContext) => void;
    retry: (operation: string, attempt: number, maxAttempts: number, error?: Error, context?: LogContext) => void;
    cache: {
        hit: (key: string, context?: LogContext) => void;
        miss: (key: string, context?: LogContext) => void;
    };
    network: {
        request: (url: string, method: string, context?: LogContext) => void;
        response: (url: string, status: number, duration?: number, context?: LogContext) => void;
    };
    bitcoin: (operation: string, address?: string, context?: LogContext) => void;
    contract: (operation: string, contract?: string, context?: LogContext) => void;
};
