import { IKosModelContainer } from '../../../core/core/kos-container-model';
import { IKosDataModel, KosCreationContext } from '../../../core/core/kosModel';
import { IKosIdentifiable } from '../../../core/core/types';
import { IKosModelHolder, PublicModelInterface } from '../../../core/types';
import { LogBlockType, LogLinesType } from '../log-block';
import { LogStreamModel } from './log-stream-model';
import { LogStreamContainerOptions } from './types';
export declare const MODEL_TYPE = "log-stream-container-model";
/**
 * Log Stream Container Model - Manages multiple log streams with real-time topic-based synchronization.
 *
 * This container model manages multiple LogStreamModel instances and handles real-time log events
 * from the KOS system. It provides centralized management of log streams, automatic stream discovery,
 * and coordinated event handling for efficient log processing across multiple sources.
 *
 * ## Topic-Based Reactivity
 * The container listens to these KOS topics for real-time log management:
 * - **`/kos/logs/subscription/addBlock/*`** - Fired when new log blocks are created
 * - **`/kos/logs/subscription/updateBlock/*`** - Fired when existing log blocks are updated
 * - **`/kos/logs/subscription/removeBlock/*`** - Fired when log blocks are removed
 * - **`/kos/logs/subscription/lines/*`** - Fired when new log lines are added to blocks
 * - **`/kos/logs/streams/add/*`** - Fired when new log streams are discovered
 *
 * ## Key Features
 * - **Multi-stream Management** - Handle multiple log streams simultaneously
 * - **Automatic Stream Discovery** - Automatically add new streams as they become available
 * - **Topic-based Synchronization** - Real-time updates via KOS event system
 * - **Stream Selection** - Track currently selected stream for UI purposes
 * - **Block Management** - Coordinate block updates across all managed streams
 *
 * ## Common Use Cases
 * - **Log Dashboard** - Central management of multiple log sources
 * - **System Monitoring** - Monitor logs from all system components
 * - **Debugging Interface** - Switch between different log streams during troubleshooting
 * - **Log Aggregation** - Collect and manage logs from distributed sources
 *
 * @example Basic Usage
 * ```typescript
 * const logContainer = LogStreamContainer.instance('main-logger')
 *   .options({})
 *   .build();
 *
 * // Subscribe to and manage multiple streams
 * await logContainer.subscribeToLogStream('application-logs');
 * const appStream = logContainer.getModel('application-logs');
 * logContainer.updateSelectedStream(appStream);
 * ```
 *
 * @group KOS Model
 * @category Device Logging
 * @interface
 * @useDeclaredType
 *
 * @see {@link LogStreamModel} - Individual log stream management
 * @see {@link LogStreamContainerOptions} - Configuration options for the container
 */
export type LogStreamContainerModel = PublicModelInterface<LogStreamContainerModelImpl>;
/**
 * @ignore
 * @internal
 */
export declare class LogStreamContainerModelImpl implements IKosIdentifiable, IKosModelHolder<LogStreamModel>, IKosDataModel {
    /** Unique identifier for the container model instance */
    id: string;
    /** Context logger for debugging log stream operations */
    private logger;
    /** Currently selected log stream for UI display purposes */
    selectedStream?: LogStreamModel;
    /** Container for managing LogStream model instances */
    private _models;
    constructor(modelId: string, options: LogStreamContainerOptions, context: KosCreationContext);
    getModel(id: string): LogStreamModel | undefined;
    get models(): IKosModelContainer<LogStreamModel>;
    get data(): LogStreamModel[];
    updateModel(_options: LogStreamContainerOptions): void;
    addModel(model: LogStreamModel): void;
    removeModel(id: string): void;
    updateSelectedStream(stream?: LogStreamModel): void;
    handleStreamAdded(data: {
        stream: string;
    }): void;
    handleAddBlock(data: LogBlockType, payload: any): void;
    handleRemoveBlock(data: LogBlockType, payload: any): void;
    handleUpdateBlock(data: LogBlockType, payload: any): void;
    handleLogLine(data: LogLinesType, payload: any): void;
    /**
     * @internal
     */
    init(): Promise<void>;
    subscribeToLogStream(stream: string): Promise<void>;
    /**
     * @internal
     */
    load(): Promise<void>;
}
//# sourceMappingURL=log-stream-container-model.d.ts.map