/**
 * @fileoverview Classify · Pipeline Monitor tab.
 *
 * Presentational sub-page: owns its header-interior (with a Refresh action) and
 * the pipeline monitor body — KPI strip, pipeline-stage visualization, live
 * progress + controls, per-source live-run detail table, the recent-processing
 * feed (with its own search/sort/pagination), the trending-tags cloud, the
 * sources mini-list, and the collapsible pipeline-config panel.
 *
 * It is a VIEW only: all pipeline RUN orchestration (start/pause/resume/cancel,
 * the GraphQL progress subscription, shared data loading, and every `build*`
 * view-model method) stays in the host because it is shared by the global
 * "Run Pipeline" header button and the Sources tab. This tab receives the
 * already-built view models + run state via `@Input()` and emits user intents
 * (refresh, pause/resume/cancel, feed-item click, config toggle) via `@Output()`.
 */
import { EventEmitter } from '@angular/core';
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
import { KPIMetric, PipelineStageInfo, FeedItem, SourceMini, TagCloudItem, RunDetailRow } from '../shared/classify.types';
import { formatTokenCount } from '../shared/classify.format';
import * as i0 from "@angular/core";
/** Shape of the pipeline-config object the host owns and the config panel binds to (two-way via object reference). */
export interface PipelineConfigModel {
    Pipeline?: {
        BatchSize?: number;
        MaxConcurrentBatches?: number;
        DelayBetweenBatchesMs?: number;
        ResumeFromLastBatch?: boolean;
        ErrorThresholdPercent?: number;
    };
    RateLimits?: {
        LLM?: {
            RequestsPerMinute?: number;
            TokensPerMinute?: number;
        };
        Embedding?: {
            RequestsPerMinute?: number;
            TokensPerMinute?: number;
        };
        VectorDB?: {
            RequestsPerMinute?: number;
        };
    };
}
export declare class ClassifyPipelineTabComponent extends BaseAngularComponent {
    /** KPI strip cards. */
    KPIMetrics: KPIMetric[];
    /** Pipeline-stage visualization (shown only during an active/paused run). */
    PipelineStages: PipelineStageInfo[];
    /** Recent-processing feed source list (host keeps it index-aligned with its raw content items). */
    FeedItems: FeedItem[];
    /** Sources mini-list (right sidebar). */
    SourceMinis: SourceMini[];
    /** Trending-tags cloud. */
    TrendingTags: TagCloudItem[];
    /** Per-source live-run detail rows (shown during an active run). */
    LiveRunDetailRows: RunDetailRow[];
    /** Total content-item count in the DB (from TotalRowCount) — drives the "Showing X of Y" line. */
    TotalItemCount: number;
    /** True while the host is loading the next page of content items. */
    IsLoadingMoreItems: boolean;
    IsRunning: boolean;
    IsPaused: boolean;
    RunProgress: number;
    RunStage: string;
    RunCurrentItem: string;
    /** Server-side process run ID — gates the Pause button. */
    CurrentProcessRunID: string | null;
    /**
     * The pipeline-config object the host owns. Two-way bound in-place via the
     * config panel's `[(ngModel)]` bindings — since this is a shared object
     * reference, mutations flow straight back to the host without an output.
     */
    PipelineConfig: PipelineConfigModel;
    /** Config-panel expanded state — host persists this to user prefs + reports it to the agent. */
    ShowPipelineConfig: boolean;
    /** Feed search text. */
    FeedSearchQuery: string;
    /** Current feed page (0-based). */
    FeedPage: number;
    readonly FeedPageSize = 20;
    /** Sort order for the feed: 'newest' (default) or 'oldest'. */
    FeedSortOrder: 'newest' | 'oldest';
    /** Template-facing formatter for token-count config values. */
    readonly formatTokenCount: typeof formatTokenCount;
    /** Refresh the pipeline data → host `LoadPipelineData()`. */
    RefreshRequested: EventEmitter<void>;
    /** Pause the running pipeline → host `PausePipeline()`. */
    PauseRequested: EventEmitter<void>;
    /** Resume the paused pipeline → host `ResumePipeline()`. */
    ResumeRequested: EventEmitter<void>;
    /** Cancel the running/paused pipeline → host `CancelPipeline()`. */
    CancelRequested: EventEmitter<void>;
    /** Reload live per-source progress → host `LoadLiveRunDetails()`. */
    LoadLiveRunDetailsRequested: EventEmitter<void>;
    /** Open a feed item's detail slide-in (emits the item's original index into the host's FeedItems). */
    FeedItemClicked: EventEmitter<number>;
    /** Toggle the config panel → host `TogglePipelineConfig()` (persists + reports to agent). */
    ConfigToggled: EventEmitter<void>;
    /** Request the host load the next page of content items (no silent truncation). */
    LoadMoreItemsRequested: EventEmitter<void>;
    /** Whether more content items exist in the DB than are currently loaded into the feed. */
    get HasMoreItems(): boolean;
    onLoadMoreItems(): void;
    /** Feed items filtered by search query and sorted. */
    get FilteredFeedItems(): FeedItem[];
    /** Paginated feed items for the current page. */
    get PaginatedFeedItems(): FeedItem[];
    /** Total pages for the feed. */
    get FeedTotalPages(): number;
    /** Toggle feed sort order. */
    ToggleFeedSort(): void;
    /** Handle feed search input change. */
    OnFeedSearchChange(): void;
    /** Navigate to the previous feed page. */
    FeedPrevPage(): void;
    /** Navigate to the next feed page. */
    FeedNextPage(): void;
    /** Get the index in the host's original FeedItems array for a paginated item. */
    GetFeedItemOriginalIndex(item: FeedItem): number;
    onRefresh(): void;
    onPause(): void;
    onResume(): void;
    onCancel(): void;
    onLoadLiveRunDetails(): void;
    onFeedItemClick(originalIndex: number): void;
    onToggleConfig(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ClassifyPipelineTabComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ClassifyPipelineTabComponent, "classify-pipeline-tab", never, { "KPIMetrics": { "alias": "KPIMetrics"; "required": false; }; "PipelineStages": { "alias": "PipelineStages"; "required": false; }; "FeedItems": { "alias": "FeedItems"; "required": false; }; "SourceMinis": { "alias": "SourceMinis"; "required": false; }; "TrendingTags": { "alias": "TrendingTags"; "required": false; }; "LiveRunDetailRows": { "alias": "LiveRunDetailRows"; "required": false; }; "TotalItemCount": { "alias": "TotalItemCount"; "required": false; }; "IsLoadingMoreItems": { "alias": "IsLoadingMoreItems"; "required": false; }; "IsRunning": { "alias": "IsRunning"; "required": false; }; "IsPaused": { "alias": "IsPaused"; "required": false; }; "RunProgress": { "alias": "RunProgress"; "required": false; }; "RunStage": { "alias": "RunStage"; "required": false; }; "RunCurrentItem": { "alias": "RunCurrentItem"; "required": false; }; "CurrentProcessRunID": { "alias": "CurrentProcessRunID"; "required": false; }; "PipelineConfig": { "alias": "PipelineConfig"; "required": false; }; "ShowPipelineConfig": { "alias": "ShowPipelineConfig"; "required": false; }; }, { "RefreshRequested": "RefreshRequested"; "PauseRequested": "PauseRequested"; "ResumeRequested": "ResumeRequested"; "CancelRequested": "CancelRequested"; "LoadLiveRunDetailsRequested": "LoadLiveRunDetailsRequested"; "FeedItemClicked": "FeedItemClicked"; "ConfigToggled": "ConfigToggled"; "LoadMoreItemsRequested": "LoadMoreItemsRequested"; }, never, never, false, never>;
}
//# sourceMappingURL=pipeline-tab.component.d.ts.map