import { ChangeDetectorRef, Injector, OnChanges, SimpleChange } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { BehaviorSubject, Observable, Subscription } from 'rxjs';
import { PaginationContext } from '../interfaces/pagination-context.interface';
import { ILocalStorageComponent } from '../interfaces/local-storage-component.interface';
import { ServiceResponse } from '../interfaces/service-response.interface';
import { BaseService } from '../services/base-service.class';
import { DialogService } from '../services/dialog.service';
import { LocalStorageService } from '../services/local-storage.service';
import { OErrorDialogManager } from '../services/o-error-dialog-manager.service';
import { AbstractServiceComponentStateClass } from '../services/state/o-component-state.class';
import { AbstractComponentStateService, DefaultServiceComponentStateService } from '../services/state/o-component-state.service';
import { OConfigureServiceArgs } from '../types/configure-service-args.type';
import { OQueryDataArgs } from '../types/query-data-args.type';
import { OQueryParams } from '../types/query-params.type';
import { OExpandableContainerComponent } from './expandable-container/o-expandable-container.component';
import { OFormComponent } from './form/o-form.component';
import * as i0 from "@angular/core";
export declare const DEFAULT_INPUTS_O_SERVICE_BASE_COMPONENT: string[];
export declare abstract class AbstractOServiceBaseComponent<T extends AbstractComponentStateService<AbstractServiceComponentStateClass>> implements ILocalStorageComponent, OnChanges {
    protected injector: Injector;
    protected localStorageService: LocalStorageService;
    componentStateService: T;
    protected dialogService: DialogService;
    protected oErrorDialogManager: OErrorDialogManager;
    parentComponent: AbstractOServiceBaseComponent<T>;
    oattr: string;
    service: string;
    serviceType: string;
    entity: string;
    queryOnInit: boolean;
    queryOnBind: boolean;
    queryOnEvent: any;
    pageable: boolean;
    columns: string;
    keys: string;
    parentKeys: string;
    staticData: Array<any>;
    queryMethod: string;
    paginatedQueryMethod: string;
    originalQueryRows: number;
    protected _queryRows: number;
    set oQueryRows(value: number);
    get queryRows(): number;
    set queryRows(value: number);
    insertMethod: string;
    updateMethod: string;
    deleteMethod: string;
    storeState: boolean;
    queryWithNullParentKeys: boolean;
    queryFallbackFunction: (err: any) => void;
    protected colArray: Array<string>;
    protected keysArray: Array<string>;
    protected _pKeysEquiv: {};
    dataArray: Array<any>;
    protected oattrFromEntity: boolean;
    protected onRouteChangeStorageSubscription: any;
    protected onFormDataSubscribe: any;
    protected querySubscription: Subscription;
    protected dataService: BaseService<ServiceResponse>;
    protected loadingSubject: BehaviorSubject<boolean>;
    loading: Observable<boolean>;
    protected form: OFormComponent;
    expandableContainer: OExpandableContainerComponent;
    protected alreadyStored: boolean;
    protected queryOnEventSubscription: Subscription;
    cd: ChangeDetectorRef;
    protected queryArguments: OQueryParams;
    protected router: Router;
    protected actRoute: ActivatedRoute;
    protected sqlTypes: any;
    abortQuery: BehaviorSubject<boolean>;
    protected configureServiceArgs: OConfigureServiceArgs;
    constructor(injector: Injector);
    initializeLoadingSubject(): void;
    get state(): AbstractServiceComponentStateClass;
    initialize(): void;
    checkColumns(): void;
    afterViewInit(): void;
    destroy(): void;
    protected canSetStaticData(staticData: any): boolean;
    ngOnChanges(changes: {
        [propName: string]: SimpleChange;
    }): void;
    beforeunloadHandler(): void;
    getAttribute(): string;
    getComponentKey(): string;
    getDataToStore(): any;
    getRouteKey(): string;
    getKeys(): string[];
    configureService(): void;
    getDataArray(): any[];
    setDataArray(data: any): void;
    setFormComponent(form: OFormComponent): void;
    getParentKeysFromContext(parentKeys: object, context: any): {};
    clearData(): void;
    queryData(filter?: any, ovrrArgs?: OQueryDataArgs): void;
    reloadData(): void;
    reloadPaginatedDataFromStart(): void;
    extractKeysFromRecord(item: any): object;
    getAttributesValuesToQuery(): Array<string>;
    getQueryArguments(filter: object, ovrrArgs?: OQueryDataArgs): OQueryParams;
    updatePaginationInfo(queryRes: ServiceResponse): void;
    protected updatePaginationContext(paginationContext: PaginationContext): void;
    getTotalRecordsNumber(): number;
    getContextComponent(): OFormComponent | OExpandableContainerComponent;
    getComponentFilter(existingFilter?: any): any;
    getSqlTypes(): any;
    getParentKeysValues(): {};
    getForm(): OFormComponent;
    getParentKeysEquivalence(): {};
    getDataService(): BaseService<ServiceResponse>;
    updateStateStorage(): void;
    protected setData(data: any, sqlTypes?: any, replace?: boolean): void;
    protected registerLocalStorageServiceRouteChange(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AbstractOServiceBaseComponent<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractOServiceBaseComponent<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; }; }, {}, never, never, false, never>;
}
export declare class DefaultOServiceBaseComponent extends AbstractOServiceBaseComponent<DefaultServiceComponentStateService> {
    static ɵfac: i0.ɵɵFactoryDeclaration<DefaultOServiceBaseComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DefaultOServiceBaseComponent, never, never, {}, {}, never, never, false, never>;
}
export declare class OServiceBaseComponent extends AbstractOServiceBaseComponent<DefaultServiceComponentStateService> {
    static ɵfac: i0.ɵɵFactoryDeclaration<OServiceBaseComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<OServiceBaseComponent, never, never, {}, {}, never, never, false, never>;
}
