import { OnDestroy, TemplateRef } from '@angular/core';
import { Subject } from 'rxjs';
import * as i0 from "@angular/core";
export declare class ColumnSortingDirective implements OnDestroy {
    /** If set to true the column will sort by only this column, removing sorting from all others. */
    singleSort: boolean;
    /** Provide a custom template for the sort indicator */
    sortIndicator: TemplateRef<ColumnSortingIndicatorContext>;
    /** Emit the current sort state for all columns within the table */
    events: Subject<readonly ColumnSortingOrder[]>;
    /** Store the current sort state for all columns within the table */
    order: ReadonlyArray<ColumnSortingOrder>;
    ngOnDestroy(): void;
    /** Toggle the sorting state of a column */
    toggleColumn(sorting: ColumnSortingOrder): ReadonlyArray<ColumnSortingOrder>;
    /** Explicitly set the column state */
    setColumnState(key: string, state: ColumnSortingState): void;
    /** Toggle the sorting state of a column when using single select */
    private toggleSingleColumn;
    /** Toggle the sorting state of a column when using multiple select */
    private toggleMultipleColumn;
    static ɵfac: i0.ɵɵFactoryDeclaration<ColumnSortingDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ColumnSortingDirective, "[uxColumnSorting]", never, { "singleSort": { "alias": "singleSort"; "required": false; }; "sortIndicator": { "alias": "sortIndicator"; "required": false; }; }, {}, never, never, false, never>;
}
export interface ColumnSortingOrder {
    key: string;
    state: ColumnSortingState;
}
export declare enum ColumnSortingState {
    Ascending = "ascending",
    Descending = "descending",
    NoSort = "none"
}
export interface ColumnSortingIndicatorContext {
    state: ColumnSortingState;
    order: number;
}
