import { EventEmitter, NgZone } from '@angular/core';
import { PlainObjectOf, SortOrderType } from '@angular-ru/cdk/typings';
import { WebWorkerThreadService } from '@angular-ru/cdk/webworker';
import { OrderedField } from '../../interfaces/table-builder.external';
import * as i0 from "@angular/core";
export declare class SortableService<T> {
    private readonly thread;
    private readonly zone;
    private skipInternalSort;
    private sortChanges;
    definition: PlainObjectOf<SortOrderType>;
    positionMap: PlainObjectOf<number>;
    sortableCount: number;
    constructor(thread: WebWorkerThreadService, zone: NgZone);
    get empty(): boolean;
    get notEmpty(): boolean;
    sort(data: T[]): Promise<T[]>;
    setDefinition(definition: PlainObjectOf<SortOrderType>): void;
    setSkipSort(skipInternalSort: boolean): void;
    setSortChanges(emitter: EventEmitter<OrderedField[]>): void;
    updateSortKey(key: string): void;
    private triggerOnChanges;
    private idleResolve;
    private updateDefinitionByKeyImmutably;
    static ɵfac: i0.ɵɵFactoryDeclaration<SortableService<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<SortableService<any>>;
}
//# sourceMappingURL=sortable.service.d.ts.map