export interface DebugMethodConfig {
    methods?: string[];
}
export interface DebugServiceConfig {
    enabled: boolean;
    methods?: string[];
}
export interface DebugModuleConfig {
    enabled: boolean;
    services?: Record<string, DebugServiceConfig>;
}
export interface DebugConfiguration {
    modules?: Record<string, DebugModuleConfig>;
    globalEnabled?: boolean;
}
export interface DebugLogEntry {
    timestamp: string;
    level: "call" | "return" | "error";
    module: string;
    service: string;
    method: string;
    args?: any[];
    result?: any;
    error?: any;
}
export interface DebugServiceOptions {
    enableConsoleLogging?: boolean;
    enableLogCollection?: boolean;
    logRetentionLimit?: number;
    customLogger?: (entry: DebugLogEntry) => void;
    safeMode?: boolean;
}
export declare class DebugService {
    private config;
    private options;
    private logs;
    private wrappedInstances;
    constructor(options?: DebugServiceOptions);
    static createConfig(): DebugConfigBuilder;
    configure(config: DebugConfiguration): void;
    enableModule(moduleName: string): this;
    enableService(moduleName: string, serviceName: string, methods?: string[]): this;
    disableModule(moduleName: string): this;
    disableService(moduleName: string, serviceName: string): this;
    shouldDebugModule(moduleName: string): boolean;
    shouldDebugService(moduleName: string, serviceName: string): boolean;
    getMethodsToDebug(moduleName: string, serviceName: string): string[] | undefined;
    wrapService<T extends object>(instance: T, moduleName: string, serviceName: string, serviceType?: string): T;
    getLogs(): DebugLogEntry[];
    getFilteredLogs(filter: {
        module?: string;
        service?: string;
        method?: string;
        level?: DebugLogEntry["level"];
        since?: Date;
    }): DebugLogEntry[];
    clearLogs(): void;
    getStats(): {
        totalLogs: number;
        callCount: number;
        errorCount: number;
        moduleStats: Record<string, number>;
        serviceStats: Record<string, number>;
    };
    exportLogs(): string;
    importLogs(jsonLogs: string): void;
    private handleCall;
    private handleReturn;
    private handleError;
    private logEntry;
}
export declare class DebugConfigBuilder {
    private config;
    globalEnable(): this;
    globalDisable(): this;
    module(moduleName: string): ModuleConfigBuilder;
    build(): DebugConfiguration;
}
export declare class ModuleConfigBuilder {
    private parent;
    private moduleName;
    constructor(parent: DebugConfigBuilder, moduleName: string);
    service(serviceName: string, methods?: string[]): this;
    module(moduleName: string): ModuleConfigBuilder;
    build(): DebugConfiguration;
}
