import { SelectionModel } from '@angular/cdk/collections';
import { ElementRef, EventEmitter, Injector } from '@angular/core';
import { MatFormFieldAppearance } from '@angular/material/form-field';
import { MatPaginator, PageEvent } from '@angular/material/paginator';
import { ActivatedRoute } from '@angular/router';
import { BehaviorSubject, Observable, Subscription } from 'rxjs';
import { OFilterBuilderComponent } from '../components/filter-builder/o-filter-builder.component';
import { OSearchInputComponent } from '../components/input/search-input/o-search-input.component';
import { IServiceDataComponent } from '../interfaces/service-data-component.interface';
import { OFormLayoutDialogComponent } from '../layouts/form-layout/dialog/o-form-layout-dialog.component';
import { NavigationService } from '../services/navigation.service';
import { PermissionsService } from '../services/permissions/permissions.service';
import { AbstractServiceComponentStateClass } from '../services/state/o-component-state.class';
import { AbstractComponentStateService, DefaultServiceComponentStateService } from '../services/state/o-component-state.service';
import { OTranslateService } from '../services/translate/o-translate.service';
import { OPermissions } from '../types';
import { Expression } from '../types/expression.type';
import { OListInitializationOptions } from '../types/o-list-initialization-options.type';
import { OTableInitializationOptions } from '../types/table/o-table-initialization-options.type';
import { OFormComponent } from './form/o-form.component';
import { AbstractOServiceBaseComponent } from './o-service-base-component.class';
import { OFormLayoutManagerBase } from '../layouts/form-layout/o-form-layout-manager-base.class';
import { OFormLayoutManagerContext } from '../types/form-layout-manager-context.type';
import * as i0 from "@angular/core";
interface ItemClick {
    getItemData(): any;
}
export declare const DEFAULT_INPUTS_O_SERVICE_COMPONENT: string[];
export declare const DEFAULT_OUTPUTS_O_SERVICE_COMPONENT: string[];
export declare abstract class AbstractOServiceComponent<T extends AbstractComponentStateService<AbstractServiceComponentStateClass>> extends AbstractOServiceBaseComponent<T> implements IServiceDataComponent {
    protected elRef: ElementRef;
    protected form: OFormComponent;
    matpaginator: MatPaginator;
    protected permissionsService: PermissionsService;
    protected translateService: OTranslateService;
    protected navigationService: NavigationService;
    set title(val: string);
    get title(): string;
    protected _title: string;
    protected ovisible: boolean;
    protected oenabled: boolean;
    protected controls: boolean;
    detailMode: string;
    protected detailFormRoute: string;
    protected recursiveDetail: boolean;
    detailButtonInRow: boolean;
    detailButtonInRowIcon: string;
    protected editFormRoute: string;
    protected recursiveEdit: boolean;
    editButtonInRow: boolean;
    editButtonInRowIcon: string;
    insertButton: boolean;
    paginationControls: boolean;
    disablePageSizeCalculation: boolean;
    get pageSizeOptions(): number[];
    set pageSizeOptions(val: number[]);
    protected _rowHeight: string;
    protected rowHeightSubject: BehaviorSubject<string>;
    rowHeightObservable: Observable<string>;
    protected checkViewPortSubject: BehaviorSubject<boolean>;
    checkViewPortObservable: Observable<boolean>;
    set rowHeight(value: string);
    get rowHeight(): string;
    protected insertFormRoute: string;
    protected recursiveInsert: boolean;
    protected _filterCaseSensitive: boolean;
    set filterCaseSensitive(value: boolean);
    get filterCaseSensitive(): boolean;
    protected _quickFilter: boolean;
    get quickFilter(): boolean;
    set quickFilter(val: boolean);
    quickFilterPlaceholder: string;
    onClick: EventEmitter<any>;
    onDoubleClick: EventEmitter<any>;
    onDataLoaded: EventEmitter<any>;
    onPaginatedDataLoaded: EventEmitter<any>;
    onSearch: EventEmitter<string>;
    filterBuilder: OFilterBuilderComponent;
    protected _selection: SelectionModel<any>;
    get selection(): SelectionModel<any>;
    protected onTriggerUpdateSubscription: any;
    protected formLayoutManager: OFormLayoutManagerBase;
    protected formLayoutManagerTabIndex: number;
    oFormLayoutDialog: OFormLayoutDialogComponent;
    protected tabsSubscriptions: any;
    quickFilterComponent: OSearchInputComponent;
    searchInputComponent: OSearchInputComponent;
    protected quickFilterColArray: string[];
    protected dataResponseArray: any[];
    protected quickFilterSubscription: Subscription;
    _pageSizeOptions: number[];
    protected clickTimer: any;
    protected clickDelay: number;
    protected clickPrevent: boolean;
    protected _quickFilterAppearance: MatFormFieldAppearance;
    private mutationObservers;
    enabledInsertButton: boolean;
    enabledRefreshButton: boolean;
    protected initialFilterFunction: () => Expression | {
        [key: string]: any;
    };
    protected filterBuilderFunction?: () => OFilterBuilderComponent;
    constructor(injector: Injector, elRef: ElementRef, form: OFormComponent);
    private getGlobalInjectionTokenConfig;
    initialize(): void;
    afterViewInit(): void;
    destroy(): void;
    isVisible(): boolean;
    hasControls(): boolean;
    hasTitle(): boolean;
    getSelectedItems(): any[];
    clearSelection(): void;
    setSelected(item: any): void;
    protected navigateToDetail(route: any[], qParams: any, relativeTo: ActivatedRoute): Promise<void>;
    insertDetail(): void;
    viewDetail(item: any, context?: OFormLayoutManagerContext): void;
    editDetail(item: any): void;
    protected addFormLayoutManagerRoute(routeArr: any[]): any[];
    protected setButtonPermissions(actionsPermissions: any): void;
    protected setPermission(attr: string, visibleProp: string, enabledProp: string, actionsPermissions: any): void;
    protected manageCustomPermissions(actionsPermissions: any, selector: any): void;
    protected getActionsPermissions(permissions: any): OPermissions[];
    protected getPermissionByAttr(attr: string, actionsPermissions: OPermissions[]): OPermissions;
    protected managePermission(elementRef: any, permission: OPermissions, mutationObservers: any[], selector: string, attr?: string): void;
    protected getEncodedParentKeys(): string;
    getInsertRoute(): any[];
    getItemModeRoute(item: any, modeRoute: string): any[];
    protected getQueryConfiguration(): any;
    getRouteOfSelectedRow(item: any): any[];
    protected deleteLocalItems(): void;
    reinitialize(options: OListInitializationOptions | OTableInitializationOptions): void;
    setFilterBuilder(filterBuilder: OFilterBuilderComponent): void;
    getComponentFilter(existingFilter?: any): Expression | {
        [key: string]: any;
    };
    protected getQuickFilterExpression(): Expression;
    protected getFilterBuilderExpression(): Expression;
    protected storeNavigationFormRoutes(activeMode: string, queryConf?: any): void;
    protected saveDataNavigationInLocalStorage(): void;
    protected getKeysValues(): any[];
    getRouteKey(): string;
    get elementRef(): ElementRef;
    showCaseSensitiveCheckbox(): boolean;
    registerQuickFilter(arg: any): void;
    isFilterCaseSensitive(): boolean;
    configureFilterValue(value: string): string;
    getQuickFilterValue(): string;
    getQuickFilterColumns(): string[];
    filterData(value?: string, loadMore?: boolean): void;
    protected getQuickFilterDataFromArray(quickfilter: string, dataArray: any[]): any[];
    protected getSortedDataFromArray(dataArray: any[]): any[];
    protected setData(data: any, sqlTypes?: any, replace?: boolean): void;
    protected parseResponseArray(data: any[], replace?: boolean): any[];
    protected registerFormLayoutManagerState(): void;
    applyDefaultConfiguration(): void;
    onChangePage(e: PageEvent): void;
    set currentPage(val: number);
    get currentPage(): number;
    protected _currentPage: number;
    get totalRecords(): number;
    protected getPaginationDataFromArray(dataArray: any[]): any[];
    handleItemClick(item: ItemClick): void;
    protected itemClickDone(item: ItemClick): void;
    handleItemDblClick(item: ItemClick): void;
    protected itemDblClickDone(item: ItemClick): void;
    get quickFilterAppearance(): MatFormFieldAppearance;
    set quickFilterAppearance(value: MatFormFieldAppearance);
    protected getSqlTypesOfKeys(): {};
    compareRow(): ((o1: any, o2: any) => boolean) | undefined;
    static ɵfac: i0.ɵɵFactoryDeclaration<AbstractOServiceComponent<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractOServiceComponent<any>, never, never, { "oattr": { "alias": "attr"; "required": false; }; "service": { "alias": "service"; "required": false; }; "serviceType": { "alias": "service-type"; "required": false; }; "entity": { "alias": "entity"; "required": false; }; "queryOnInit": { "alias": "query-on-init"; "required": false; }; "queryOnBind": { "alias": "query-on-bind"; "required": false; }; "queryOnEvent": { "alias": "query-on-event"; "required": false; }; "pageable": { "alias": "pageable"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "keys": { "alias": "keys"; "required": false; }; "parentKeys": { "alias": "parent-keys"; "required": false; }; "staticData": { "alias": "static-data"; "required": false; }; "queryMethod": { "alias": "query-method"; "required": false; }; "paginatedQueryMethod": { "alias": "paginated-query-method"; "required": false; }; "oQueryRows": { "alias": "query-rows"; "required": false; }; "insertMethod": { "alias": "insert-method"; "required": false; }; "updateMethod": { "alias": "update-method"; "required": false; }; "deleteMethod": { "alias": "delete-method"; "required": false; }; "storeState": { "alias": "store-state"; "required": false; }; "queryWithNullParentKeys": { "alias": "query-with-null-parent-keys"; "required": false; }; "queryFallbackFunction": { "alias": "query-fallback-function"; "required": false; }; "configureServiceArgs": { "alias": "configure-service-args"; "required": false; }; "_title": { "alias": "title"; "required": false; }; "ovisible": { "alias": "visible"; "required": false; }; "oenabled": { "alias": "enabled"; "required": false; }; "controls": { "alias": "controls"; "required": false; }; "detailMode": { "alias": "detail-mode"; "required": false; }; "detailFormRoute": { "alias": "detail-form-route"; "required": false; }; "recursiveDetail": { "alias": "recursive-detail"; "required": false; }; "detailButtonInRow": { "alias": "detail-button-in-row"; "required": false; }; "detailButtonInRowIcon": { "alias": "detail-button-in-row-icon"; "required": false; }; "editFormRoute": { "alias": "edit-form-route"; "required": false; }; "recursiveEdit": { "alias": "recursive-edit"; "required": false; }; "editButtonInRow": { "alias": "edit-button-in-row"; "required": false; }; "editButtonInRowIcon": { "alias": "edit-button-in-row-icon"; "required": false; }; "insertButton": { "alias": "insert-button"; "required": false; }; "rowHeight": { "alias": "row-height"; "required": false; }; "insertFormRoute": { "alias": "insert-form-route"; "required": false; }; "recursiveInsert": { "alias": "recursive-insert"; "required": false; }; "filterCaseSensitive": { "alias": "filter-case-sensitive"; "required": false; }; "quickFilter": { "alias": "quick-filter"; "required": false; }; "quickFilterPlaceholder": { "alias": "quick-filter-placeholder"; "required": false; }; "paginationControls": { "alias": "pagination-controls"; "required": false; }; "pageSizeOptions": { "alias": "page-size-options"; "required": false; }; "quickFilterAppearance": { "alias": "quick-filter-appearance"; "required": false; }; "disablePageSizeCalculation": { "alias": "disable-page-size-calculation"; "required": false; }; "initialFilterFunction": { "alias": "initial-filter-function"; "required": false; }; "filterBuilderFunction": { "alias": "filter-builder-function"; "required": false; }; }, { "onClick": "onClick"; "onDoubleClick": "onDoubleClick"; "onDataLoaded": "onDataLoaded"; "onPaginatedDataLoaded": "onPaginatedDataLoaded"; "onSearch": "onSearch"; }, never, never, false, never>;
}
export declare class OServiceComponent extends AbstractOServiceComponent<DefaultServiceComponentStateService> {
    static ɵfac: i0.ɵɵFactoryDeclaration<OServiceComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<OServiceComponent, never, never, {}, {}, never, never, false, never>;
}
export {};
