import { OnDestroy, QueryList } from '@angular/core';
import { BehaviorSubject, Subject } from 'rxjs';
import { ResizableTableColumnComponent } from './resizable-table-column.component';
import * as i0 from "@angular/core";
export declare abstract class BaseResizableTableService implements OnDestroy {
    abstract type: ResizableTableType;
    /** Emit an event whenever a column is resized */
    onResize$: Subject<void>;
    /** Store the current width of the table */
    tableWidth: number;
    /** Determine if we are currently resizing */
    isResizing$: BehaviorSubject<boolean>;
    /** Indicate when the columns are ready */
    isInitialised$: BehaviorSubject<boolean>;
    /** Store the percentage widths of each column */
    columns: ReadonlyArray<number>;
    abstract resizeColumn(index: number, delta: number, isDragging?: boolean): void;
    abstract setColumns(columns: QueryList<ResizableTableColumnComponent>): void;
    abstract setUniformWidths(): void;
    abstract getColumnDisabled(index: number): boolean;
    /** Cleanup when service is disposed */
    ngOnDestroy(): void;
    /** Update the resizing state */
    setResizing(isResizing: boolean): void;
    /** Get the width of a column in a specific unit */
    getColumnWidth(index: number, unit: ColumnUnit, columns?: ReadonlyArray<number>): number;
    static ɵfac: i0.ɵɵFactoryDeclaration<BaseResizableTableService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<BaseResizableTableService>;
}
export declare enum ColumnUnit {
    Pixel = 0,
    Percentage = 1
}
export declare enum ResizableTableType {
    Standard = 0,
    Expand = 1
}
