import { EventEmitter, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
import { FilterFieldConfig } from '@memberjunction/ng-ui-components';
import { SchedulingInstrumentationService, JobStatistics, JobTypeStatistics } from '../services/scheduling-instrumentation.service';
import * as i0 from "@angular/core";
export declare class SchedulingJobsComponent implements OnInit, OnDestroy {
    private schedulingService;
    private cdr;
    initialState: Record<string, unknown>;
    /** When true, the inner toolbar is hidden — the parent shell is rendering it in `<mj-page-header>` instead. */
    HideToolbar: boolean;
    stateChange: EventEmitter<Record<string, unknown>>;
    Jobs: JobStatistics[];
    FilteredJobs: JobStatistics[];
    JobTypes: JobTypeStatistics[];
    IsLoading: boolean;
    SlideoutOpen: boolean;
    SelectedJob: JobStatistics | null;
    DeleteConfirmJobId: string | null;
    IsDeleting: boolean;
    SearchTerm: string;
    StatusFilter: string;
    TypeFilter: string;
    StatusOptions: string[];
    TypeOptions: string[];
    private static readonly SEARCH_STATE_KEY;
    private searchSubject;
    private statusSubject;
    private typeSubject;
    private settingsPersistSubject;
    private destroy$;
    private subscriptions;
    private settingsLoaded;
    constructor(schedulingService: SchedulingInstrumentationService, cdr: ChangeDetectorRef);
    ngOnInit(): void;
    ngOnDestroy(): void;
    private loadUserSettings;
    private setupSettingsPersistence;
    private persistSearchState;
    private restoreState;
    private setupFilters;
    OnSearchChange(term: string): void;
    OnStatusFilterChange(status: string): void;
    OnTypeFilterChange(type: string): void;
    get JobsFilterFields(): FilterFieldConfig[];
    get JobsFilterValues(): Record<string, unknown>;
    get ActiveFilterCount(): number;
    OnFilterValuesChange(values: Record<string, unknown>): void;
    ResetFilters(): void;
    /** True when search and/or filters narrow the job list. */
    get IsListNarrowed(): boolean;
    /** Reset search + all filters (used by the no-results empty-state CTA). */
    ResetAllFiltersAndSearch(): void;
    /** Empty-state primary CTA: reset when narrowed, otherwise create a job. */
    OnEmptyStateAction(): void;
    Refresh(): void;
    OpenCreateSlideout(): void;
    OpenEditSlideout(job: JobStatistics): void;
    CloseSlideout(): void;
    OnSlideoutSaved(): void;
    ToggleJobStatus(job: JobStatistics, event: MouseEvent): Promise<void>;
    ShowDeleteConfirm(job: JobStatistics, event: MouseEvent): void;
    CancelDelete(event: MouseEvent): void;
    ConfirmDelete(jobId: string, event: MouseEvent): Promise<void>;
    IsDeleteConfirming(jobId: string): boolean;
    OpenEntityRecord(job: JobStatistics): void;
    GetStatusClass(status: string): string;
    GetSuccessRateColor(rate: number): string;
    GetTypeIcon(typeName: string): string;
    FormatDate(date: Date | undefined): string;
    FormatPercentage(value: number): string;
    private applyFilters;
    private updateTypeOptions;
    private emitState;
    static ɵfac: i0.ɵɵFactoryDeclaration<SchedulingJobsComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SchedulingJobsComponent, "app-scheduling-jobs", never, { "initialState": { "alias": "initialState"; "required": false; }; "HideToolbar": { "alias": "HideToolbar"; "required": false; }; }, { "stateChange": "stateChange"; }, never, never, false, never>;
}
//# sourceMappingURL=scheduling-jobs.component.d.ts.map