import { AfterContentInit, AfterViewInit, ElementRef, EventEmitter, Injector, OnChanges, OnDestroy, OnInit, QueryList } from '@angular/core';
import { MatFormFieldAppearance } from '@angular/material/form-field';
import { Subscription } from 'rxjs';
import { IList } from '../../interfaces/o-list.interface';
import { OListComponentStateClass } from '../../services/state/o-list-component-state.class';
import { OListComponentStateService } from '../../services/state/o-list-component-state.service';
import { OListInitializationOptions } from '../../types/o-list-initialization-options.type';
import { OListPermissions } from '../../types/o-list-permissions.type';
import { OPermissions } from '../../types/o-permissions.type';
import { OQueryDataArgs } from '../../types/query-data-args.type';
import { SQLOrder } from '../../types/sql-order.type';
import { OFormComponent } from '../form/o-form.component';
import { AbstractOServiceComponent } from '../o-service-component.class';
import { OMatSort } from '../table/extensions/sort/o-mat-sort';
import { ListItem } from './list-item/o-list-item';
import { OListItemDirective } from './list-item/o-list-item.directive';
import { OQueryParams } from '../../types/query-params.type';
import * as i0 from "@angular/core";
export declare const DEFAULT_INPUTS_O_LIST: string[];
export declare const DEFAULT_OUTPUTS_O_LIST: string[];
export declare class OListComponent extends AbstractOServiceComponent<OListComponentStateService> implements IList, AfterContentInit, AfterViewInit, OnDestroy, OnInit, OnChanges {
    listItemDirectives: QueryList<OListItemDirective>;
    toolbarEl: ElementRef;
    refreshButton: boolean;
    selectable: boolean;
    deleteButton: boolean;
    insertButtonFloatable: boolean;
    showButtonsText: boolean;
    paginationControls: boolean;
    quickFilterColumns: string;
    route: string;
    sortColumns: string;
    protected permissions: OListPermissions;
    sortColArray: SQLOrder[];
    onInsertButtonClick: EventEmitter<any>;
    onItemDeleted: EventEmitter<any>;
    enabledDeleteButton: boolean;
    insertButtonPosition: 'top' | 'bottom';
    storePaginationState: boolean;
    protected subscription: Subscription;
    protected _quickFilterAppearance: MatFormFieldAppearance;
    protected keysSqlTypes: string;
    keysSqlTypesArray: Array<string>;
    protected oMatSort: OMatSort;
    protected actionsPermissions: OPermissions[];
    onItemSelected: EventEmitter<any[]>;
    onItemDeselected: EventEmitter<any[]>;
    constructor(injector: Injector, elRef: ElementRef, form: OFormComponent);
    get toolBarHeight(): number;
    get state(): OListComponentStateClass;
    ngOnInit(): void;
    private loadPermissions;
    private setupDeleteButtonSubscription;
    ngAfterViewInit(): void;
    ngAfterContentInit(): void;
    ngOnDestroy(): void;
    getComponentKey(): string;
    initialize(): void;
    reinitialize(options: OListInitializationOptions): void;
    onListItemClicked(onNext: (item: OListItemDirective) => void): object;
    onItemDetailClick(item: OListItemDirective | ListItem): void;
    onItemDetailDoubleClick(item: OListItemDirective | ListItem): void;
    getDataToStore(): any;
    reloadData(clearSelectedItems?: boolean): void;
    reloadPaginatedDataFromStart(clearSelectedItems?: boolean): void;
    protected getSortedDataFromArray(dataArray: any[]): any[];
    isItemSelected(item: any): boolean;
    onScroll(e: Event): void;
    remove(clearSelectedItems?: boolean): void;
    add(e?: Event): void;
    parseSortColumns(): void;
    getQueryArguments(filter: object, ovrrArgs?: OQueryDataArgs): OQueryParams;
    protected setListItemDirectivesData(): void;
    protected saveDataNavigationInLocalStorage(): void;
    protected parseResponseArray(data: any[], replace?: boolean): any[];
    registerQuickFilter(arg: any): void;
    setDataArray(data: any): void;
    setSelected(item: any): void;
    updateSelectedItems(): void;
    getSqlTypes(): any;
    static ɵfac: i0.ɵɵFactoryDeclaration<OListComponent, [null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<OListComponent, "o-list", never, { "quickFilterColumns": { "alias": "quick-filter-columns"; "required": false; }; "refreshButton": { "alias": "refresh-button"; "required": false; }; "route": { "alias": "route"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; }; "deleteButton": { "alias": "delete-button"; "required": false; }; "sortColumns": { "alias": "sort-columns"; "required": false; }; "insertButtonPosition": { "alias": "insert-button-position"; "required": false; }; "insertButtonFloatable": { "alias": "insert-button-floatable"; "required": false; }; "showButtonsText": { "alias": "show-buttons-text"; "required": false; }; "keysSqlTypes": { "alias": "keys-sql-types"; "required": false; }; }, { "onInsertButtonClick": "onInsertButtonClick"; "onItemDeleted": "onItemDeleted"; "onItemSelected": "onItemSelected"; "onItemDeselected": "onItemDeselected"; }, ["listItemDirectives"], ["[o-list-toolbar][position=start]", "[o-list-toolbar][position=end]", "[o-list-toolbar]", "*"], true, never>;
}
