import { EventEmitter } from 'events';
import { BaseComponent } from './base.component';
import { ComponentConfig } from '../types/monitoring';
import { ChannelDetailModel } from '../types/channel';
export type WatchStatus = 'live' | 'playback' | 'end' | 'waiting' | 'unStart' | 'banpush';
export interface ChannelStatusInfo {
    channelId: string;
    name: string;
    status: WatchStatus;
    statusText: string;
    viewerCount: number;
    maxViewer: number;
    publisher: string;
    startTime: number;
    endTime: number;
    createdTime: number;
    selected?: boolean;
}
export interface ChannelStatusPanelConfig extends ComponentConfig {
    refreshInterval: number;
    maxChannels: number;
    showColors: boolean;
    columnWidths: number[];
    sortField: keyof ChannelStatusInfo;
    sortOrder: 'asc' | 'desc';
    filters: {
        status?: WatchStatus[];
        searchTerm?: string;
    };
}
export interface SortConfig {
    field: keyof ChannelStatusInfo;
    order: 'asc' | 'desc';
    secondaryField?: keyof ChannelStatusInfo;
    secondaryOrder?: 'asc' | 'desc';
}
export interface FilterConfig {
    status?: WatchStatus[];
    searchTerm?: string;
    viewerCountMin?: number;
    viewerCountMax?: number;
    publisherFilter?: string;
    dateRange?: {
        startDate?: Date;
        endDate?: Date;
    };
}
export declare class ChannelStatusPanel extends BaseComponent {
    private table;
    private container;
    private headerBox;
    private footerBox;
    private noDataBox;
    private detailsPopup;
    private batchDialog;
    private channels;
    private filteredChannels;
    private selectedChannels;
    private currentIndex;
    private sortConfig;
    private filterConfig;
    private lastUpdateTime;
    private selectionStartIndex;
    private isRangeSelecting;
    private lastJumpPosition;
    private navigationHistory;
    constructor(config: ChannelStatusPanelConfig, eventBus: EventEmitter);
    protected createWidget(): void;
    private initializeDetailsPopup;
    private initializeBatchDialog;
    private setupKeyBindings;
    render(): void;
    update(data: ChannelDetailModel[] | ChannelDetailModel | {
        channels: ChannelDetailModel[];
    }): void;
    private convertToStatusInfo;
    private compareValues;
    private applyFiltersAndSort;
    private updateTableDisplay;
    private formatCellValue;
    private formatStatusCell;
    private updateStatusColors;
    private getChannelHealthSummary;
    private getStatusColors;
    private getTerminalSafeColor;
    private getStatusHealthLevel;
    private formatDate;
    private updateHeader;
    private updateFooter;
    private getHeaderContent;
    private getFooterContent;
    private getNoDataMessage;
    private moveSelection;
    private moveToTop;
    private moveToBottom;
    private showQuickJumpDialog;
    private showGoToLineDialog;
    private extendSelectionUp;
    private extendSelectionDown;
    private updateRangeSelection;
    private clearRangeSelection;
    private copySelectionInfo;
    private copyChannelInfo;
    private copyMultipleChannelsInfo;
    private saveNavigationHistory;
    private emitNavigationEvent;
    jumpToLine(lineNumber: number): boolean;
    jumpToChannel(searchTerm: string): boolean;
    private toggleSelection;
    private selectAll;
    private deselectAll;
    private cycleSortField;
    private toggleSortOrder;
    setMultiFieldSort(primary: keyof ChannelStatusInfo, primaryOrder: 'asc' | 'desc', secondary?: keyof ChannelStatusInfo, secondaryOrder?: 'asc' | 'desc'): void;
    private showFilterDialog;
    private showAdvancedFilterDialog;
    private quickFilterByStatus;
    private clearFilters;
    setAdvancedFilter(filter: Partial<FilterConfig>): void;
    private showChannelDetails;
    private showBatchOperations;
    private getConfig;
    getSelectedChannels(): string[];
    getCurrentChannel(): ChannelStatusInfo | null;
    setFilter(filter: FilterConfig): void;
    setSort(sort: SortConfig): void;
    destroy(): void;
}
//# sourceMappingURL=channel-status.panel.d.ts.map