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 * 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>;
    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[];
    constructor(injector: Injector, elRef: ElementRef, form: OFormComponent);
    get state(): OListComponentStateClass;
    ngOnInit(): void;
    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): any[];
    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": "quick-filter-columns"; "refreshButton": "refresh-button"; "route": "route"; "selectable": "selectable"; "deleteButton": "delete-button"; "sortColumns": "sort-columns"; "insertButtonPosition": "insert-button-position"; "insertButtonFloatable": "insert-button-floatable"; "showButtonsText": "show-buttons-text"; "keysSqlTypes": "keys-sql-types"; }, { "onInsertButtonClick": "onInsertButtonClick"; "onItemDeleted": "onItemDeleted"; }, ["listItemDirectives"], ["[o-list-toolbar][position=start]", "[o-list-toolbar][position=end]", "[o-list-toolbar]", "*"], false, never>;
}
