import { type AfterViewInit, EventEmitter, type OnChanges } from '@angular/core';
import { type TuiComparator } from '@taiga-ui/addon-table/types';
import { type TuiTextfieldOptions } from '@taiga-ui/core/components/textfield';
import { type TuiSizeL, type TuiSizeS } from '@taiga-ui/core/types';
import { type Observable, Subject } from 'rxjs';
import { TuiSortDirection, type TuiTableSortChange } from '../table.options';
import * as i0 from "@angular/core";
import * as i1 from "./stuck.directive";
export declare class TuiTableDirective<T extends Partial<Record<keyof T, unknown>>> implements AfterViewInit, TuiTextfieldOptions, OnChanges {
    private readonly options;
    private readonly cdr;
    protected readonly nothing: undefined;
    columns: ReadonlyArray<string | keyof T>;
    direction: TuiSortDirection;
    sorter: TuiComparator<T>;
    /**
     * @deprecated: use sortChange
     */
    readonly directionChange: EventEmitter<TuiSortDirection>;
    /**
     * @deprecated: use sortChange
     */
    readonly sorterChange: EventEmitter<TuiComparator<T> | null>;
    readonly sortChange: Observable<TuiTableSortChange<T>>;
    readonly appearance: import("@angular/core").WritableSignal<string>;
    readonly size: import("@angular/core").WritableSignal<"m" | "l" | "s">;
    readonly cleaner: import("@angular/core").WritableSignal<boolean>;
    readonly change$: Subject<void>;
    set sizeSetter(size: TuiSizeL | TuiSizeS);
    updateSorterAndDirection(sorter: TuiComparator<T> | null): void;
    ngOnChanges(): void;
    ngAfterViewInit(): void;
    updateSorter(sorter: TuiComparator<T> | null, direction?: TuiSortDirection): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TuiTableDirective<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TuiTableDirective<any>, "table[tuiTable]", never, { "columns": { "alias": "columns"; "required": false; }; "direction": { "alias": "direction"; "required": false; }; "sorter": { "alias": "sorter"; "required": false; }; "sizeSetter": { "alias": "size"; "required": false; }; }, { "directionChange": "directionChange"; "sorterChange": "sorterChange"; "sortChange": "sortChange"; }, never, never, true, [{ directive: typeof i1.TuiStuck; inputs: {}; outputs: {}; }]>;
}
