import { EventEmitter, TemplateRef } from '@angular/core';
/** Column definition associated with a `ElSortHeaderDirective`. */
interface ElSortHeaderColumnDef {
    name: string;
}
export interface ElSortRequest {
    column: string;
    direction: ElSortDirection;
}
export interface ElSortable {
    sort(sortRequest: ElSortRequest): any;
}
export declare enum ElSortDirection {
    ASCENDING = "asc",
    DESCENDING = "desc",
    NONE = ""
}
/**
 * Directive triggers sort method of passed object when sort header changes direction
 */
export declare class ElSortDirective {
    sortable: ElSortable;
    sort: EventEmitter<ElSortRequest>;
    emitSort(sortRequest: ElSortRequest): void;
}
export interface ElSortHeaderIconDirectiveContext {
    $implicit: ElSortDirection;
    isAscending: boolean;
    isDescending: boolean;
    isNone: boolean;
}
/**
 * Directive for headers sort icons. Mark you icon implementation with this structural directive and
 * it'll set template's implicit context with current direction. Context also has `isAscending`,
 * `isDescending` and `isNone` properties.
 */
export declare class ElSortHeaderIconDirective {
}
export declare class ElSortIconComponent {
    direction: ElSortDirection;
    isAscending(): boolean;
    isDescending(): boolean;
    isDirectionSet(): boolean;
}
/**
 * Marks header as sort header so it emitting sort event when clicked.
 */
export declare class ElSortHeaderComponent {
    private sort;
    private columnDef;
    sortIcon: TemplateRef<ElSortHeaderIconDirectiveContext>;
    /**
     * Current sort direction. Possible values: `asc`, `desc`, ``(none)
     * @type {ElSortDirection}
     */
    direction: ElSortDirection;
    private disabledValue;
    /**
     * Disable sort header
     */
    disabled: boolean;
    sortIfEnabled(): void;
    constructor(sort: ElSortDirective, columnDef: ElSortHeaderColumnDef);
    isAscending(): boolean;
    isDescending(): boolean;
    sortData(): void;
    getIconContext(): ElSortHeaderIconDirectiveContext;
    getDisabledAttributeValue(): '' | null;
    private createSortRequest;
    private getNextDirection;
}
export {};
