import { LogStreamOptions } from './types';
import { LogBlockType } from '../log-block';
import { PublicModelInterface } from '../../../core/types';
import { IKosIdentifiable } from '../../../core/core/types';
import { IKosDataModel, IKosVisitor, KosCreationContext } from '../../../core/core/kosModel';

export declare const MODEL_TYPE = "log-stream-model";
/**
 * Log Stream Model - Real-time streaming log viewer with efficient block-based management and async iteration.
 *
 * This model provides high-performance log streaming capabilities for monitoring KOS device logs in real-time.
 * It organizes log data into efficient blocks for memory management and provides async iterator support
 * for continuous log consumption. Essential for debugging, monitoring, and troubleshooting KOS applications.
 *
 * ## Key Features
 * - **Real-time Log Streaming** - Live log updates as they are generated on the device
 * - **Block-based Management** - Efficient memory usage through log block organization
 * - **Async Iterator Support** - Stream logs using modern async/await patterns
 * - **Subscription Control** - Subscribe/unsubscribe to specific log streams
 * - **Line Number Tracking** - Maintains accurate line numbering across blocks
 * - **Multi-stream Support** - Handle multiple log streams simultaneously through container model
 *
 * ## Common Use Cases
 * - **Development Debugging** - Monitor application logs during development
 * - **Production Monitoring** - Track system health and errors in deployed applications
 * - **Troubleshooting** - Analyze log patterns to diagnose issues
 * - **Log Analysis** - Process log streams for metrics and insights
 * - **Real-time Dashboards** - Display live log feeds in monitoring interfaces
 * - **Automated Log Processing** - Stream logs to external analysis tools
 *
 * @interface
 * @example Basic Usage
 * ```typescript
 * const logStream = LogStream.instance('application-logs')
 *   .options({ name: 'application-logs', nodeId: 'primary' })
 *   .build();
 *
 * await logStream.subscribe();
 * const iterator = logStream.start();
 * for await (const logLine of iterator) {
 *   console.log(`[LOG] ${logLine}`);
 * }
 * ```
 *
 * @group KOS Model
 * @category Device Logging
 * @useDeclaredType
 *
 * @see {@link LogStreamOptions} - Configuration options for log stream instances
 * @see {@link LogStreamContainerModel} - Container model for managing multiple streams
 * @see {@link LogBlockModel} - Individual log block management within streams
 */
export type LogStreamModel = PublicModelInterface<LogStreamModelImpl>;
/**
 * @ignore
 * @internal
 */
export declare class LogStreamModelImpl implements IKosDataModel, IKosIdentifiable {
    id: string;
    private logger;
    nodeId: string;
    private _blocks;
    name: string;
    currentBlockId: string;
    isResetting: boolean;
    constructor(modelId: string, options: LogStreamOptions, context: KosCreationContext);
    get firstLineNum(): number;
    get currentBlock(): import('../log-block').LogBlockModel | undefined;
    get populated(): import('../log-block').LogBlockModel[];
    get blocks(): import('../log-block').LogBlockModel[];
    get totalLineCount(): number;
    accept(visitor: IKosVisitor<IKosDataModel>): void;
    updateBlock(blockData: LogBlockType): void;
    addBlock(blockData: LogBlockType): void;
    removeBlock(blockNum: number): void;
    subscribe(): Promise<void>;
    unsubscribe(): Promise<void>;
    reset(): Promise<void>;
    /**
     * @internal
     */
    init(): Promise<void>;
    /**
     * @internal
     */
    load(): Promise<void>;
    private generatorInstance?;
    private shouldStop;
    start(): AsyncGenerator<string, void, void>;
    stop(): void;
    streamLogs(): AsyncGenerator<string, void, void>;
}
//# sourceMappingURL=log-stream-model.d.ts.map