import { AfterViewInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
import { BaseDashboard } from '@memberjunction/ng-shared';
import { ResourceData } from '@memberjunction/core-entities';
import { TabConfig, FilterFieldConfig } from '@memberjunction/ng-ui-components';
import { SchedulingInstrumentationService } from './services/scheduling-instrumentation.service';
import { SchedulingOverviewComponent } from './components/scheduling-overview.component';
import { SchedulingJobsComponent } from './components/scheduling-jobs.component';
import { SchedulingActivityComponent } from './components/scheduling-activity.component';
import * as i0 from "@angular/core";
export declare class SchedulingDashboardComponent extends BaseDashboard implements AfterViewInit, OnDestroy {
    private cdr;
    private schedulingService;
    IsLoading: boolean;
    ActiveTab: string;
    DashboardState: Record<string, unknown>;
    JobsState: Record<string, unknown>;
    ActivityState: Record<string, unknown>;
    private visitedTabs;
    private stateChangeSubject;
    ActiveJobCount: number;
    AlertCount: number;
    /** Live snapshot of every scheduled job — used both for the agent context and the read-only GetJobDetails tool. */
    private currentJobs;
    /** Live snapshot of the loaded executions (activity rows) — feeds the activity-tab context + select tool. */
    private currentExecutions;
    /** Live snapshot of the job-type statistics — feeds the KPI slice job-type breakdown. */
    private currentJobTypes;
    /** Count of jobs holding a lock (stale or live) — derived from lock info. */
    private lockedJobCount;
    /** Count of executions currently running — derived from live executions. */
    private runningCount;
    /**
     * The tab the agent tool-set was last registered for. Mode-scoping guard: the
     * tool surface differs per tab, so we only re-register on a tab transition
     * (mirrors the Data Explorer's / Testing dashboard's `lastRegisteredToolMode`).
     */
    private lastRegisteredToolMode;
    /** ViewChild references to the active inner tab component — drive the toolbar UI rendered in <mj-page-header>. */
    overviewCmp?: SchedulingOverviewComponent;
    jobsCmp?: SchedulingJobsComponent;
    activityCmp?: SchedulingActivityComponent;
    private kpiSub;
    private alertSub;
    private jobsSub;
    private executionsSub;
    private jobTypesSub;
    private locksSub;
    get Tabs(): TabConfig[];
    constructor(cdr: ChangeDetectorRef, schedulingService: SchedulingInstrumentationService);
    GetResourceDisplayName(data: ResourceData): Promise<string>;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    private loadSidebarCounts;
    OnTabChange(tabId: string): void;
    HasVisited(tabId: string): boolean;
    /**
     * Publish the current Scheduling state to the AI agent via NavigationService.
     * Always reports the KPI slice (per-status job counts, alerts, locked/running
     * counts, success rate, job-type breakdown); the ACTIVE tab adds its detailed
     * slice (Jobs: search/filters, visible names, selection; Activity: search/
     * filters, time range, visible executions, distinct job names). The shaping
     * lives in the pure {@link buildSchedulingAgentContext} helper so it stays
     * unit-testable. Called on init and on every meaningful state change.
     */
    private publishAgentContext;
    /** Project a full job statistics row into the read-only snapshot shape. */
    private toJobSnapshot;
    /** Project an execution row into the read-only activity snapshot shape. */
    private toExecutionSnapshot;
    /** Job candidates (id+name) for the name/id resolver in select/details tools. */
    private get jobCandidates();
    /**
     * Register the agent tool-set appropriate for the active tab. The tool surface
     * differs per tab; `SetAgentClientTools` replaces the registered set wholesale,
     * so we only re-register on a tab transition (guarded by
     * {@link lastRegisteredToolMode}). See the SAFETY BOUNDARY comment above.
     */
    private syncAgentToolsForMode;
    /** Compose the tool list for a given tab: common tools + per-tab tools. */
    private buildToolsForMode;
    /** Tools available on EVERY tab: tab switch, refresh, read-only job details. */
    private buildCommonTools;
    /** Jobs-tab tools: status/type filter, search, select (open) a job, open its record. */
    private buildJobsTools;
    /** Activity-tab tools: execution-status filter, job-name filter, search, time range. */
    private buildActivityTools;
    /** Switch the active tab after validating the requested tab id. */
    private toolSwitchTab;
    /** Return the read-only details of a single job, resolved by id or name. */
    private toolGetJobDetails;
    /** Ensure the jobs tab is active and its component is mounted; null on not-ready. */
    private ensureJobsReady;
    /** Apply a status filter on the jobs tab (switching to it first if needed). */
    private toolFilterJobsByStatus;
    /** Apply a job-type filter on the jobs tab (switching to it first if needed). */
    private toolFilterJobsByType;
    /** Apply a search query on the jobs tab (switching to it first if needed). */
    private toolSearchJobs;
    /** Open a job (read-only) in the editor slideout, resolved by id or name. */
    private toolSelectJob;
    /** Open the full entity record for a job (for viewing), resolved by id or name. */
    private toolOpenJobRecord;
    /** Ensure the activity tab is active and its component is mounted; null on not-ready. */
    private ensureActivityReady;
    /** Apply an execution-status filter on the activity tab. */
    private toolFilterActivityByStatus;
    /** Filter the activity list to a single job by exact job name. */
    private toolFilterActivityByJob;
    /** Apply a search query on the activity tab. */
    private toolSearchActivity;
    /** Set the activity time range (24h / 7d / 30d / 90d). */
    private toolSetActivityTimeRange;
    get JobsFilterFields(): FilterFieldConfig[];
    get JobsFilterValues(): Record<string, unknown>;
    get JobsActiveFilterCount(): number;
    onJobsFilterValuesChange(v: Record<string, unknown>): void;
    resetJobsFilters(): void;
    get ActivityFilterFields(): FilterFieldConfig[];
    get ActivityFilterValues(): Record<string, unknown>;
    get ActivityActiveFilterCount(): number;
    onActivityFilterValuesChange(v: Record<string, unknown>): void;
    resetActivityFilters(): void;
    private setupStateManagement;
    private emitStateChange;
    OnDashboardStateChange(state: Record<string, unknown>): void;
    OnJobsStateChange(state: Record<string, unknown>): void;
    OnActivityStateChange(state: Record<string, unknown>): void;
    initDashboard(): void;
    loadData(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<SchedulingDashboardComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SchedulingDashboardComponent, "mj-scheduling-dashboard", never, {}, {}, never, never, false, never>;
}
//# sourceMappingURL=scheduling-dashboard.component.d.ts.map