import { ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { ClrDatagridSortOrder, ClrDatagridStateInterface } from '@clr/angular';
import { Comparator, Criteria } from '@versatiledatakit/shared';
import { FiltersSortManager } from '../../../../../commons';
import { DataJobDeployment } from '../../../../../model';
import { ExecutionsFilterCriteria, ExecutionsSortCriteria, GridDataJobExecution } from '../model';
import * as i0 from "@angular/core";
export interface GridCriteriaAndComparator {
    filter: Criteria<GridDataJobExecution>;
    sort: Comparator<GridDataJobExecution>;
}
export declare class DataJobExecutionsGridComponent implements OnChanges, OnInit, OnDestroy {
    private readonly changeDetectorRef;
    jobExecutions: GridDataJobExecution[];
    loading: boolean;
    /**
     * ** Executions filters sort manager injected from parent.
     */
    filtersSortManager: Readonly<FiltersSortManager<ExecutionsFilterCriteria, string, ExecutionsSortCriteria, ClrDatagridSortOrder>>;
    /**
     * ** If provided will try to highlight row where execution id will match.
     */
    highlightedExecutionId: string;
    /**
     * ** Event Emitter that emits events on every user action on grid filters or sort.
     */
    gridCriteriaAndComparatorChanged: EventEmitter<GridCriteriaAndComparator>;
    readonly attributeDataCy = "data-pipelines-data-job-executions";
    openDeploymentDetailsModal: boolean;
    jobDeploymentModalData: DataJobDeployment;
    paginatedJobExecutions: GridDataJobExecution[];
    gridState: ClrDatagridStateInterface;
    paginationPageNumber: number;
    paginationPageSize: number;
    paginationTotalItems: number;
    isInitialCriteriasEmit: boolean;
    private _appliedGridState;
    private _previousAppliedGridState;
    private _filterMutationObserver;
    /**
     * ** Reference to scheduled timeout for emitting Grid Criteria and Comparator.
     * @private
     */
    private _gridCriteriaAndComparatorEmitterTimeoutRef;
    /**
     * ** Constructor.
     */
    constructor(changeDetectorRef: ChangeDetectorRef);
    /**
     * ** NgFor elements tracking function.
     */
    trackByFn(index: number, execution: GridDataJobExecution): string;
    showDeploymentDetails(jobExecution: GridDataJobExecution): void;
    /**
     * ** Main callback (listener) for ClrGrid state mutation, like filters, sort.
     */
    gridRefresh(state: ClrDatagridStateInterface): void;
    /**
     * @inheritDoc
     */
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * @inheritDoc
     */
    ngOnInit(): void;
    /**
     * @inheritDoc
     */
    ngOnDestroy(): void;
    /**
     * ** Extract filters from grid state.
     *      - use bulk operation to update manager
     * @private
     */
    private _populateManagerFilters;
    /**
     * ** Extract sort criteria and direction from grid state and update the manager
     * @private
     */
    private _populateManagerSort;
    private _paginateExecutions;
    private _evaluateGridStateMutation;
    private _emitGridCriteriaAndComparator;
    private _createFilterCriteria;
    private _createSortComparator;
    static ɵfac: i0.ɵɵFactoryDeclaration<DataJobExecutionsGridComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DataJobExecutionsGridComponent, "lib-data-job-executions-grid", never, { "jobExecutions": "jobExecutions"; "loading": "loading"; "filtersSortManager": "filtersSortManager"; "highlightedExecutionId": "highlightedExecutionId"; }, { "gridCriteriaAndComparatorChanged": "gridCriteriaAndComparatorChanged"; }, never, never>;
}
