import { Injector, OnDestroy, OnInit } from '@angular/core';
import { AbstractHeaderService } from './abstract-header-service';
import { HeaderType } from './models/header-type';
import { HeaderMode } from './models/header-mode';
import { HeaderSearchService } from '../search/header-search-service/header-search.service';
import { FormControl } from '@angular/forms';
import { TranslateService } from '@ngx-translate/core';
import { OverflowService } from './services/overflow.service';
import { Subscription } from 'rxjs';
import * as i0 from "@angular/core";
export declare abstract class AbstractHeaderComponent implements OnInit, OnDestroy {
    protected _injector: Injector;
    protected _translate: TranslateService;
    protected _overflowService: OverflowService;
    protected readonly DEFAULT_COLUMN_COUNT = 6;
    protected readonly DEFAULT_COLUMN_WIDTH = 220;
    protected readonly INPUT_DEBOUNCE_TIME = 600;
    type: HeaderType;
    hideHeaderMenu: boolean;
    showEditButton: boolean;
    showSortButton: boolean;
    showSearchButton: boolean;
    showTableSection: boolean;
    approval: boolean;
    headerService: AbstractHeaderService;
    protected _headerSearch: HeaderSearchService;
    readonly headerModeEnum: typeof HeaderMode;
    readonly headerTypeEnum: typeof HeaderType;
    overflowControl: FormControl<boolean>;
    columnCountControl: FormControl<number>;
    columnWidthControl: FormControl<number>;
    canOverflow: boolean;
    subOverflowControl: Subscription;
    subColumnCountControl: Subscription;
    subColumnWidthControl: Subscription;
    protected _initHeaderCount: number;
    protected _initResponsiveHeaders: boolean;
    protected _approvalFormControl: FormControl<boolean>;
    constructor(_injector: Injector, _translate: TranslateService, _overflowService: OverflowService);
    set maxHeaderColumns(count: number);
    set responsiveHeaders(responsive: boolean);
    get approvalFormControl(): FormControl<boolean>;
    changeHeadersMode(mode: HeaderMode, saveLastMode?: boolean): void;
    ngOnInit(): void;
    ngOnDestroy(): void;
    /**
     * Injects the correct {@link AbstractHeaderService} instance based on this component's type
     */
    protected resolveHeaderService(): void;
    /**
     * Sets the correct {@link AbstractHeaderService} instance to the {@link HeaderSearchService}
     */
    protected initializedHeaderSearch(): void;
    clickStop($event: any): void;
    getMinWidth(): string;
    confirmEditMode(): void;
    getErrorMessageWidth(): any;
    getErrorMessageCount(): any;
    buildErrorMessage(formControlRef: FormControl<any>, minNumber: any): any;
    protected initializeFormControls(exist: boolean): void;
    protected initializeValueChanges(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AbstractHeaderComponent, [null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AbstractHeaderComponent, "ncc-abstract-header", never, { "type": { "alias": "type"; "required": false; }; "hideHeaderMenu": { "alias": "hideHeaderMenu"; "required": false; }; "showEditButton": { "alias": "showEditButton"; "required": false; }; "showSortButton": { "alias": "showSortButton"; "required": false; }; "showSearchButton": { "alias": "showSearchButton"; "required": false; }; "showTableSection": { "alias": "showTableSection"; "required": false; }; "approval": { "alias": "approval"; "required": false; }; "maxHeaderColumns": { "alias": "maxHeaderColumns"; "required": false; }; "responsiveHeaders": { "alias": "responsiveHeaders"; "required": false; }; }, {}, never, never, false, never>;
}
