import { AfterContentInit, AfterViewInit, EventEmitter, OnDestroy, QueryList } from '@angular/core';
import { TccStandardTableView, TccStandardTableViewComponent } from '../tcc-standard-table-view/tcc-standard-table-view.component';
import { TccTable } from '../tcc-table/tcc-table.component';
import { TccContextMenuServiceNamespace } from '../../../shared/services/tcc-context-menu/tcc-context-menu.service';
import { MatTabChangeEvent } from '@angular/material/tabs';
import { PageEvent } from '@angular/material/paginator';
import { TccInputMask } from '../../../shared/models/inputMask.model';
import { SpecialColDirective } from '../tcc-table/directives/special-col.directive';
import { EditColDirective } from '../tcc-table/directives/edit-col.directive';
import { InputMaskHTMLElement } from '../../../shared/components/tcc-input-mask/directives/input-mask-htmlelement';
import { TccStandardDetailsView, TccStandardDetailsViewComponent } from '../tcc-standard-details-view/tcc-standard-details-view.component';
import { TccC4Node } from '../../../odata/models/shared.model';
import { TccDialogWindowService } from '../../services/tcc-dialog-window/tcc-dialog-window.service';
import { canDeactivate } from '../../classes/canDeactivate';
import { TccTopNavService } from '../../services/tcc-top-nav/tcc-top-nav.service';
import { Observable } from 'rxjs';
import { TccODataService } from '../../../odata/services/tcc-odata/tcc-odata.service';
import { TccODataServiceFactory } from '../../../odata/factories/tcc-odata-service/tcc-odata-service.factory';
import { TccSnackBarService } from '../../services/tcc-snackbar/tcc-snackbar.service';
import { AppContext } from '../../../shared/classes/app-context';
export declare namespace TccStandardComplexTableView {
    enum view {
        details = "details",
        list = "list"
    }
    interface options<mainEntity, subEntity> {
        listTab: string;
        detailsTab: string;
        initTab?: string;
        entityPath?: string;
        entityName?: string;
        entityType?: string;
        createEntityIfMissing?: boolean;
        beforeCreateEntity?: () => mainEntity;
        itemsPropertyPath?: string[];
        itemsPropertyIdentifier?: string;
        /**
         * Path from the subEntity to the property, that represents the EndUser name of the entity;
         * Default: [['DisplayName'], ['Name']]; -> first check DisplayName, if empty check Name
         */
        itemsPropertyNamePaths?: string[][];
        /**
         * Function, that gets called, if the standardComplexTableView needs the Name of a subEntity to display it for an user;
         * @param subEntity the subEntity of which the name is needed
         * @returns subEntity name
         */
        getItemsPropertyName?: (subEntity: subEntity) => string;
        /**
         * If the standard callback function should be called after a subEntity was created.
         * Default: true;
         */
        useStandardSubEntityCreateCallback?: boolean;
    }
}
export declare class TccStandardComplexTableViewComponent<mainEntity extends TccC4Node, subEntity> extends canDeactivate implements AfterViewInit, AfterContentInit, OnDestroy {
    private dialog;
    private factory;
    private topnavservice;
    private snackBar;
    globalVarContext?: AppContext;
    inputMaskHTMLElementDirectives: QueryList<InputMaskHTMLElement>;
    tccStandardTableView: TccStandardTableViewComponent<subEntity>;
    standardTableViewSpecialColumnDirectivesList: QueryList<SpecialColDirective>;
    standardTableViewEditColumnDirectivesList: QueryList<EditColDirective>;
    standardTableViewCellClickEmitter: EventEmitter<any>;
    standardTableViewRowClickEmitter: EventEmitter<TccStandardTableView.rowClickEvent<subEntity>>;
    standardTableViewScrollDownEmitter: EventEmitter<boolean>;
    standardTableViewCheckboxEmitter: EventEmitter<TccTable.checkboxEvent>;
    standardTableViewSortTableEmitter: EventEmitter<TccTable.sortTableEvent>;
    standardTableViewContextMenuEmitter: EventEmitter<TccContextMenuServiceNamespace.contextMenuClickEvent>;
    standardTableViewTableLoadedEmitter: EventEmitter<boolean>;
    standardTableViewMarkTableRowEmitter: EventEmitter<subEntity[]>;
    standardTableViewOnPrimary: EventEmitter<void>;
    standardTableViewOnCreate: EventEmitter<void>;
    standardTableViewOnDelete: EventEmitter<subEntity[]>;
    standardTableViewPageLoaded: EventEmitter<subEntity[]>;
    standardTableViewOnComponentViewChange: EventEmitter<string>;
    standardTableViewOnFileUploadEvent: EventEmitter<FileList>;
    standardTableViewInputMaskInputsLoaded: EventEmitter<TccStandardTableView.inputsLoaded<subEntity>>;
    standardTableViewInputMaskSubmit: EventEmitter<void>;
    standardTableViewInputMaskChangeTab: EventEmitter<{
        id: string;
        value: MatTabChangeEvent;
    }>;
    standardTableViewInputMaskChangeChip: EventEmitter<{
        id: string;
        index: number;
    }>;
    standardTableViewInputMaskChangePage: EventEmitter<{
        id: string;
        value: PageEvent;
    }>;
    standardTableViewInputMaskSearch: EventEmitter<TccInputMask.eventOutput<TccInputMask.ValueUnion>>;
    standardTableViewInputMaskSearchEnter: EventEmitter<TccInputMask.eventOutput<TccInputMask.ValueUnion>>;
    standardTableViewInputMaskValueChange: EventEmitter<TccInputMask.eventOutput<TccInputMask.ValueUnion>>;
    standardTableViewInputMaskValueChangeExtended: EventEmitter<TccInputMask.eventOutput<TccInputMask.ValueUnion>>;
    standardTableViewInputMaskFocusEvent: EventEmitter<TccInputMask.eventTrigger>;
    standardTableViewInputMaskBlurEvent: EventEmitter<TccInputMask.eventTrigger>;
    standardTableViewInputMaskInputButtonClick: EventEmitter<TccInputMask.eventTrigger>;
    standardTableViewInputMaskRowButtonClick: EventEmitter<TccInputMask.eventTrigger>;
    standardTableViewInputMaskButtonClick: EventEmitter<TccInputMask.eventTrigger>;
    standardTableViewInputMaskSelectOpen: EventEmitter<TccInputMask.eventTrigger>;
    standardTableViewInputMaskSearchListChange: EventEmitter<{
        id: string;
        value: Array<string>;
    }>;
    standardTableViewInputMaskSearchListChangePage: EventEmitter<{
        id: string;
        pagenumber: number;
        searchactive: boolean;
    }>;
    standardTableViewInputMaskSearchListSearch: EventEmitter<{
        id: string;
        searchstring: string;
        selection?: string;
    }>;
    standardTableViewInputMaskSearchListDialogClose: EventEmitter<TccInputMask.searchListDialogEvent>;
    standardTableViewInputMaskCreateListDialogClose: EventEmitter<TccInputMask.createListDialogEvent>;
    standardTableViewInputMaskCreateSimpleListDialogClose: EventEmitter<TccInputMask.eventOutput<TccInputMask.ValueUnion>>;
    standardTableViewInputMaskFieldMouseEnter: EventEmitter<TccInputMask.eventTrigger>;
    standardTableViewInputMaskFieldMouseLeave: EventEmitter<TccInputMask.eventTrigger>;
    standardTableViewInputMaskOpenAccordion: EventEmitter<string>;
    standardTableViewInputMaskEntityValuesSet: EventEmitter<subEntity>;
    standardTableViewSave: EventEmitter<subEntity | subEntity[]>;
    standardTableViewAfterSave: EventEmitter<subEntity | subEntity[]>;
    standardTableViewCreateEntity: EventEmitter<void>;
    set standardTableViewEntities(entities: subEntity[]);
    set standardTableViewOptions(options: TccStandardTableView.options<subEntity>);
    set standardDetailsViewOptions(options: TccStandardDetailsView.options<mainEntity>);
    standardDetailsViewChanged: boolean;
    standardTableViewChanged: boolean;
    /** sets the standardTableView to display: none */
    set standardTableViewHide(hide: boolean);
    set standardTableViewDetailsTitle(standardDetailsTitle: string);
    disableSetEntityId: boolean;
    _standardTableViewEntities: subEntity[];
    _standardTableViewOptions: TccStandardTableView.options<subEntity>;
    _standardDetailsViewOptions: TccStandardDetailsView.options<mainEntity>;
    _standardTableViewHide: boolean;
    _standardTableViewStandardDetailsTitle: string;
    inputMaskHTMLElementDirectivesDetails: InputMaskHTMLElement[];
    inputMaskHTMLElementDirectivesList: InputMaskHTMLElement[];
    tccStandardDetailsView: TccStandardDetailsViewComponent<mainEntity>;
    standardDetailsViewInitInputMask: EventEmitter<TccStandardDetailsView.initEvent<any>>;
    standardDetailsViewChangeValue: EventEmitter<TccStandardDetailsView.onValueChangesEvent<any>>;
    standardDetailsViewSave: EventEmitter<TccStandardDetailsView.setValueChangesEvent<any>>;
    standardDetailsViewAfterSave: EventEmitter<mainEntity>;
    standardDetailsViewEntityValuesSet: EventEmitter<mainEntity>;
    standardDetailsViewFocusEvent: EventEmitter<TccInputMask.eventTrigger>;
    standardDetailsViewContextMenuEmitter: EventEmitter<TccContextMenuServiceNamespace.contextMenuClickEvent>;
    standardDetailsViewButtonClick: EventEmitter<TccInputMask.eventTrigger>;
    standardDetailsViewInputButtonClick: EventEmitter<TccInputMask.eventTrigger>;
    get canDeactivateChanged(): boolean;
    set options(options: TccStandardComplexTableView.options<mainEntity, subEntity>);
    set entity(entity: mainEntity);
    currentTab: string;
    set standardDetailsViewHeaderTitle(headerTitle: string);
    set entityId(entityId: string);
    set newElement(newElement: boolean);
    standardDetailsViewHide: boolean;
    /**
     * called, after the deletion of subEntities was successfully saved. Returns all deleted subEntities;
     */
    standardComplexTableViewafterDelete: EventEmitter<subEntity[]>;
    _entity: mainEntity;
    get currClonedSubEntity(): subEntity;
    private _entityPath;
    private _entityName;
    private _entityType;
    private _useStandardSubEntityCreateCallback;
    private _createEntityIfMissing;
    private _beforeCreateEntity;
    _headerTitle: string;
    _entityId: string;
    _newElement: boolean;
    private topNavSubscription;
    _detailsTab: string;
    _listTab: string;
    private _itemsPropertyPath;
    private _itemsPropertyIdentifier;
    private _itemsPropertyNamePaths;
    private _getItemsPropertyName;
    service: TccODataService<mainEntity>;
    loading: boolean;
    showLockedPlaceholder: boolean;
    lockedPlaceholderHeaderText: string;
    lockedPlaceholderMessageText: string;
    constructor(dialog: TccDialogWindowService, factory: TccODataServiceFactory, topnavservice: TccTopNavService, snackBar: TccSnackBarService, globalVarContext?: AppContext);
    ngAfterViewInit(): void;
    ngAfterContentInit(): void;
    ngOnDestroy(): void;
    private init;
    private loadEntity;
    private createEntityByName;
    private initInputMaskHtmlElements;
    private getSubEntities;
    _standardTableViewCellClickEmitter(event: any): void;
    _standardTableViewRowClickEmitter(event: TccStandardTableView.rowClickEvent<subEntity>): void;
    _standardTableViewCheckboxEmitter(event: TccTable.checkboxEvent): void;
    _standardTableViewSortTableEmitter(event: TccTable.sortTableEvent): void;
    _standardTableViewContextMenuEmitter(event: TccContextMenuServiceNamespace.contextMenuClickEvent): void;
    _standardTableViewTableLoadedEmitter(event: boolean): void;
    _standardTableViewMarkTableRowEmitter(event: subEntity[]): void;
    _standardTableViewOnPrimary(): void;
    _standardTableViewOnCreate(): void;
    _standardTableViewOnDelete(event: subEntity[]): void;
    _standardTableViewPageLoaded(event: subEntity[]): void;
    _standardTableViewOnComponentViewChange(event: string): void;
    _standardTableViewOnFileUploadEvent(event: FileList): void;
    _standardTableViewInputMaskInputsLoaded(event: TccStandardTableView.inputsLoaded<subEntity>): void;
    _standardTableViewInputMaskSubmit(): void;
    _standardTableViewInputMaskChangeTab(event: {
        id: string;
        value: MatTabChangeEvent;
    }): void;
    _standardTableViewInputMaskChangeChip(event: {
        id: string;
        index: number;
    }): void;
    _standardTableViewInputMaskChangePage(event: {
        id: string;
        value: PageEvent;
    }): void;
    _standardTableViewInputMaskSearch(event: TccInputMask.eventOutput<TccInputMask.ValueUnion>): void;
    _standardTableViewInputMaskSearchEnter(event: TccInputMask.eventOutput<TccInputMask.ValueUnion>): void;
    _standardTableViewInputMaskValueChange(event: TccInputMask.eventOutput<TccInputMask.ValueUnion>): void;
    _standardTableViewInputMaskValueChangeExtended(event: TccInputMask.eventOutput<TccInputMask.ValueUnion>): void;
    _standardTableViewInputMaskFocusEvent(event: TccInputMask.eventTrigger): void;
    _standardTableViewInputMaskBlurEvent(event: TccInputMask.eventTrigger): void;
    _standardTableViewInputMaskInputButtonClick(event: TccInputMask.eventTrigger): void;
    _standardTableViewInputMaskRowButtonClick(event: TccInputMask.eventTrigger): void;
    _standardTableViewInputMaskButtonClick(event: TccInputMask.eventTrigger): void;
    _standardTableViewInputMaskSelectOpen(event: TccInputMask.eventTrigger): void;
    _standardTableViewInputMaskSearchListChange(event: {
        id: string;
        value: Array<string>;
    }): void;
    _standardTableViewInputMaskSearchListChangePage(event: {
        id: string;
        pagenumber: number;
        searchactive: boolean;
    }): void;
    _standardTableViewInputMaskSearchListSearch(event: {
        id: string;
        searchstring: string;
        selection?: string;
    }): void;
    _standardTableViewInputMaskSearchListDialogClose(event: TccInputMask.searchListDialogEvent): void;
    _standardTableViewInputMaskCreateListDialogClose(event: TccInputMask.createListDialogEvent): void;
    _standardTableViewInputMaskCreateSimpleListDialogClose(event: TccInputMask.eventOutput<TccInputMask.ValueUnion>): void;
    _standardTableViewInputMaskFieldMouseEnter(event: TccInputMask.eventTrigger): void;
    _standardTableViewInputMaskFieldMouseLeave(event: TccInputMask.eventTrigger): void;
    _standardTableViewInputMaskOpenAccordion(event: string): void;
    _standardTableViewInputMaskEntityValuesSet(event: subEntity): void;
    _standardTableViewSave(event: subEntity | subEntity[]): void;
    _standardTableViewAfterSave(event: subEntity | subEntity[]): void;
    _standardTableViewCreateEntity(): void;
    _standardDetailsViewInitInputMask(event: TccStandardDetailsView.initEvent<any>): void;
    _standardDetailsViewChangeValue(event: TccStandardDetailsView.onValueChangesEvent<any>): void;
    _standardDetailsViewSave(event: TccStandardDetailsView.setValueChangesEvent<any>): void;
    _standardDetailsViewAfterSave(event: mainEntity): void;
    _standardDetailsViewEntityValuesSet(event: mainEntity): void;
    _standardDetailsViewFocusEvent(event: TccInputMask.eventTrigger): void;
    _standardDetailsViewContextMenuEmitter(event: TccContextMenuServiceNamespace.contextMenuClickEvent): void;
    _standardDetailsViewButtonClick(event: TccInputMask.eventTrigger): void;
    _standardDetailsViewInputButtonClick(event: TccInputMask.eventTrigger): void;
    private setItems;
    private getItemsArray;
    private standardTableViewCreateCallback;
    onFilterbarDelete(subEntities: subEntity[]): void;
    openDeleteDialog(items: subEntity[]): void;
    private getSubEntityName;
    private deleteItems;
    getSaveRequest(): Observable<mainEntity>;
    private saveOperation;
}
