import { QueryList, ElementRef, EventEmitter, ChangeDetectorRef, SimpleChanges } from '@angular/core';
import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
import { IpiSelectOptions } from '@ipi-soft/ng-components/select';
import { OSService } from '@ipi-soft/ng-components/services';
import { TooltipPosition } from '@ipi-soft/ng-components/tooltip';
import * as i0 from "@angular/core";
export interface IpiTableColumn {
    label?: string;
    value?: string;
    type?: IpiTableColumnType;
    width?: string;
    editable?: boolean;
    prefix?: string;
    suffix?: string;
    singleActions?: Action[];
    multipleActions?: Action[];
    dateFormat?: IpiDateFormatOptions;
    chipLabel?: {
        [key: string]: string;
    };
    class?: string | {
        [key: string]: string;
    };
}
export declare enum IpiTableColumnType {
    Text = 0,
    Date = 1,
    Currency = 2,
    Chip = 3,
    Number = 4,
    NumberMath = 5,
    Actions = 6,
    Checkbox = 7
}
export type ActionShowType = Array<{
    property: string;
    values: any[];
    exists?: boolean;
}>;
export interface Action {
    icon: string;
    label: string;
    class?: string;
    showOn?: ActionShowType;
    disabled?: boolean;
    execute?: (row: any) => void;
}
export interface IpiTableChange {
    from: number;
    to: number;
    filter?: string;
    sort?: any;
}
export interface IpiDateFormatOptions {
    format: string;
    locale: string;
    timezone?: string;
}
interface PageFormControls {
    pageSize: FormControl<{
        label: string;
        value: number;
    }>;
}
export declare class IpiTableComponent {
    private osService;
    private formBuilder;
    private changeDetectorRef;
    constructor(osService: OSService, formBuilder: FormBuilder, changeDetectorRef: ChangeDetectorRef);
    DropdownElement: ElementRef<any> | null;
    moreActionsList: QueryList<ElementRef>;
    data: any[];
    dataLength: number;
    serverSide: boolean;
    isLoading: boolean;
    columns: IpiTableColumn[];
    filter: string;
    sortIndex: number;
    sortable: boolean;
    sortDirection: 'asc' | 'desc';
    pageSize: number;
    currentPage: number;
    pageable: boolean;
    pageSizeOptions: number[];
    tableChange: EventEmitter<IpiTableChange>;
    tooltipPosition: typeof TooltipPosition;
    TableColumnType: typeof IpiTableColumnType;
    totalPages: number;
    visibleRange: string;
    filteredData: any[];
    pageSizeSelectOptions: IpiSelectOptions;
    currentActiveRow: any;
    isDropdown: boolean;
    formGroup: FormGroup<PageFormControls>;
    private _dataLength;
    onClick(event: any): void;
    onScroll(): void;
    onResize(): void;
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    getPageData(): any[];
    updateVisibleRange(start: number, end: number): void;
    calculateTotalPages(): void;
    goToPage(page: number): void;
    goToPreviousPage(): void;
    goToNextPage(): void;
    goToFirstPage(): void;
    goToLastPage(): void;
    cellEdit(event: KeyboardEvent, column: string, currentPageRowIndex: number): void;
    formatDate(dateAsString: string, formatDateOptions?: IpiDateFormatOptions): string;
    getClass(row: any, column: IpiTableColumn): {
        [key: string]: boolean;
    } | string;
    getDescendantProp(row: any, column: IpiTableColumn): any;
    getChipLabel(row: any, column: IpiTableColumn): string;
    getCheckboxState(row: any, column: IpiTableColumn): boolean;
    handleActionShow(action: Action, row: any, column?: IpiTableColumn): boolean;
    sortColumn(column: any, changeSortDirection?: boolean): void;
    toggleActionDropdown(row: any, event: any): Promise<void>;
    private preprocessData;
    private calculateNumberMathCell;
    private filterData;
    private sortData;
    private sortByProperty;
    private sortReverse;
    private getAccessIfColumnValueIsObject;
    private buildPaginationSelectDependecies;
    private subscribeToFormValueChanges;
    private calculatePages;
    static ɵfac: i0.ɵɵFactoryDeclaration<IpiTableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<IpiTableComponent, "ipi-table", never, { "data": { "alias": "data"; "required": false; }; "dataLength": { "alias": "dataLength"; "required": false; }; "serverSide": { "alias": "serverSide"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "sortIndex": { "alias": "sortIndex"; "required": false; }; "sortable": { "alias": "sortable"; "required": false; }; "sortDirection": { "alias": "sortDirection"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "currentPage": { "alias": "currentPage"; "required": false; }; "pageable": { "alias": "pageable"; "required": false; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; }; }, { "tableChange": "tableChange"; }, never, never, true, never>;
}
export {};
