import { KosLogManagerOptions, LogLevelDescriptor, LogOverride } from './types';
import { PublicModelInterface } from '../../../core/types';
import { IKosIdentifiable } from '../../../core/core/types';
import { IKosDataModel, KosCreationContext } from '../../../core/core/kosModel';
import { ApiCallbackWithWildcard } from '../../../core/core/decorators';
import { KosRequest, KosResponse } from '../../../core';

/**
 * Model type identifier for the KOS Log Manager
 */
export declare const MODEL_TYPE = "kos-log-manager-model";
/**
 * Public interface for the KOS Log Manager Model.
 * Provides runtime log level management capabilities for the KOS UI SDK.
 */
export type KosLogManagerModel = PublicModelInterface<KosLogManagerModelImpl>;
/**
 * Implementation of the KOS Log Manager Model.
 *
 * This model manages log levels for different loggers in the KOS system,
 * allowing dynamic runtime configuration of logging verbosity.
 *
 * Key features:
 * - Maintains a collection of log level overrides
 * - Responds to WebSocket events for adding/removing log overrides
 * - Provides REST API endpoint for retrieving all logger configurations
 * - Automatically applies log level changes to matching loggers
 *
 * @kosModel Decorated as a KOS model with type 'kos-log-manager-model'
 */
export declare class KosLogManagerModelImpl implements IKosDataModel, IKosIdentifiable {
    id: string;
    private logger;
    private _overrides;
    constructor(modelId: string, options: KosLogManagerOptions, context: KosCreationContext);
    updateModel(_options: KosLogManagerOptions): void;
    /**
     * Resolves all registered loggers and their current log levels.
     * @returns A map of logger names to their log level descriptors
     * @private
     */
    private resolveLoggers;
    /**
     * REST API endpoint to retrieve all logger configurations.
     * @get /api/kos/ui/loggers
     * @param _req - The incoming request (unused)
     * @param res - The response object to send logger data
     * @returns Array of log level descriptors for all loggers
     */
    getAllLoggers(_req?: KosRequest, res?: KosResponse): Promise<LogLevelDescriptor[]>;
    /**
     * Applies a log level override to matching loggers.
     * Sets the specified log level for the logger and all child loggers
     * whose names start with the override name.
     * @param override - The log override configuration to apply
     * @private
     */
    private setLogLevels;
    /**
     * Resets log levels to their defaults for matching loggers.
     * Removes the override for the logger and all child loggers
     * whose names start with the override name.
     * @param override - The log override configuration to reset
     * @private
     */
    private resetLogLevels;
    /**
     * WebSocket handler for log override addition events.
     * Listens to: /kos/logs/override/add/*
     * @param override - The log override to add
     * @param payload - Contains wildcard capture data including nodeType
     */
    handleOverrideAdded(override: LogOverride, payload: ApiCallbackWithWildcard<any>): void;
    /**
     * WebSocket handler for log override removal events.
     * Listens to: /kos/logs/override/remove/*
     * @param override - The log override to remove
     */
    handleOverrideRemoved(override: LogOverride): void;
    /**
     * Initializes the log manager model.
     * Called during model creation lifecycle.
     */
    init(): Promise<void>;
    /**
     * Loads existing log overrides from the server.
     * Fetches UI-specific overrides and applies them to the current loggers.
     * Called after model initialization.
     */
    load(): Promise<void>;
}
//# sourceMappingURL=kos-log-manager-model.d.ts.map