import { AfterViewInit, EventEmitter, OnDestroy, QueryList, TemplateRef } from '@angular/core';
import { TccContextMenuServiceNamespace } from '../../../shared/services/tcc-context-menu/tcc-context-menu.service';
import { Observable } from 'rxjs';
import { tccFilterbar, TccFilterbarComponent } from '../tcc-filterbar/tcc-filterbar.component';
import { TccTable, TccTableComponent } from '../tcc-table/tcc-table.component';
import { TccSliderRightComponent } from '../../../shared/components/tcc-slider-right/tcc-slider-right.component';
import { tccDialogWindow } from '../tcc-dialog-window/tcc-dialog-window.component';
import { TccInfinityScroll, TccInfinityScrollComponent } from '../../../shared/components/tcc-infinity-scroll/tcc-infinity-scroll.component';
import { TccPagedDataManager, TccPagedDataManagerNamespace } from '../../../shared/classes/TccPagedDataManager';
import { TccGetOrderByFields } from '../../../shared/services/tcc-get-order-by-fields/tcc-get-order-by-fields.service';
import { TccODataServiceFactory } from '../../../odata/factories/tcc-odata-service/tcc-odata-service.factory';
import { TccPagedDataManagerService } from '../../../shared/services/tcc-paged-data-manager/tcc-paged-data-manager.service';
import { TccDialogWindowService } from '../../services/tcc-dialog-window/tcc-dialog-window.service';
import { TccSnackBarService } from '../../services/tcc-snackbar/tcc-snackbar.service';
import { tccListTileSwitch } from '../tcc-list-tile-switch/tcc-list-tile-switch.component';
import { TccInputMask } from '../../../shared/models/inputMask.model';
import { TccTutorialTooltip } from '../tcc-tutorial-tooltip/tcc-tutorial-tooltip.component';
import { TccIcon } from '../../../odata/models/shared.model';
import { TccStandardSliderDetailsViewComponent } from '../tcc-standard-slider-details-view/tcc-standard-slider-details-view.component';
import { TccInputMaskComponent } from '../../../shared/components/tcc-input-mask/tcc-input-mask.component';
import { MatTabChangeEvent } from '@angular/material/tabs';
import { PageEvent } from '@angular/material/paginator';
import { tccFilter } from '../tcc-filter/tcc-filter.component';
import { TccKeypressService } from '../../services/tcc-keypress/tcc-keypress.service';
import { TccUserPropertyService } from '../../../shared/services/tcc-user-property/tcc-user-property.service';
import { TccChooseProfileThumbnail } from '../tcc-choose-profile-thumbnail/tcc-choose-profile-thumbnail.component';
import { MatDialog } from '@angular/material/dialog';
import { InputMaskHTMLElement } from '../../../shared/components/tcc-input-mask/directives/input-mask-htmlelement';
import { SpecialColDirective } from '../tcc-table/directives/special-col.directive';
import { EditColDirective } from '../tcc-table/directives/edit-col.directive';
import { TccSectionNavigationButtonConfig } from '../../../shared/components/tcc-section-navigation/tcc-section-navigation.component';
import { tccAdvancedFilter } from '../tcc-advanced-filter/tcc-advanced-filter.component';
import { TileInstanceDirective } from '../../../shared/directives/tcc-tile-instance/tile-instance-directive';
import { TccRedirectService } from '../../services/tcc-redirect/tcc-redirect';
import { LocaleService } from '../../services/tcc-locale/tcc-locale.service';
import { TccCatchErrorService } from '../../../shared/services/tcc-catch-error/tcc-catch-error.service';
import { AddtotransportService } from '../../../shared/services/add-to-transport/addtotransport.service';
import { AppContext } from '../../../shared/classes/app-context';
export declare namespace TccStandardTableView {
    enum userServiceColumnDefPropertyName {
        columnDef = "columnDef",
        sort = "sort"
    }
    interface options<T> {
        tableInput: TccTable.TableInputs<T>;
        entityName?: TccStandardTableView.entityName;
        entityPath?: string;
        iconPath?: string[];
        nestedEntity?: {
            path: string;
            id: string;
        };
        searchFields?: string[];
        useSliderDetailsView?: boolean;
        useSliderStandardDetailsView?: boolean;
        standardDetailsInputElements?: TccInputMask.SectionElements<T>;
        standardDetailsProfileOptions?: TccChooseProfileThumbnail.Options;
        standardDetailsTitle?: string;
        createEntityCallback?: (result: tccDialogWindow.TccInputDialogReturn, newEntity: T) => T;
        createEntityOptions?: TccStandardTableView.createEntityOptions<T>;
        noContentSettings?: tccFilterbar.noContentSettings;
        hideSaveButton?: boolean;
        hideDeleteButton?: boolean;
        multiSave?: boolean;
        setValueChangesFunction?: (Entity: T, Changes: TccInputMask.valueChanges) => void;
        useStandardCreate?: boolean;
        filterOptions?: tccFilter.FilterInputOptions;
        advancedFilterOptions?: tccAdvancedFilter.AdvancedFilterInputOptions;
        permanentFilter?: string;
        deleteGetNameFunction?: (entity: T) => string;
        deleteForbiddenFunction?: (entity: T) => string;
        deleteEntityCallback?: (deletedEntities: Array<string>) => void;
        primaryButton?: string;
        primaryButtonIcon?: string;
        primaryButtonDisabled?: boolean;
        orderBy?: string;
        disableChangableColumns?: boolean;
        generateChangableColumnsFunction?: () => tccFilterbar.settings;
        disableChooseProfile?: boolean;
        disabledTableColumns?: string[];
        basePath?: string;
        useSelectForTable?: boolean;
        addSelectsForTable?: string[][];
        sliderConfig?: TccSectionNavigationButtonConfig;
        defaultView?: tccListTileSwitch.view;
        initSort?: initSort;
        disableAddToTransport?: boolean;
        disableSetEntityId?: boolean;
        navigationQueryParams?: {
            tab?: string;
            itemIdentifier?: string;
            itemPath?: string;
        };
        lockedStateBasePath?: string;
    }
    interface initSort {
        fieldPath: string;
        field: string;
        direction: "asc" | "desc";
        type?: TccGetOrderByFields.type;
    }
    interface entityName {
        singular: string;
        plural: string;
    }
    interface createEntityOptions<T = any> {
        extraInputs?: TccInputMask.RowElements<T>;
        title?: string;
        illustration?: string;
        tutorial?: TccTutorialTooltip.options;
        disableStandardInput?: boolean;
        returnEntity?: boolean;
    }
    interface rowClickEvent<T> {
        entity: T;
        index?: number;
    }
    interface change<T> {
        entity: T;
        changes: TccInputMask.valueChanges;
        icon?: TccIcon;
    }
    interface changes<T> {
        [entityId: string]: change<T>;
    }
    interface inputsLoaded<T> {
        inputs: string[];
        entity: T;
    }
}
export declare class TccStandardTableViewComponent<T> implements AfterViewInit, OnDestroy {
    private factory;
    private pagedDataManagerService;
    private dialog;
    private matDialog;
    private snackbarservice;
    private keyPressService;
    private userPropertyService;
    private redirectService;
    private localeService;
    private tccCatchError;
    private addToTransportService;
    globalVarContext?: AppContext;
    dataCyStandardTableView: string;
    dataCyStandardSliderDetails: boolean;
    dataCySliderDetails: boolean;
    dataCyStandardTableViewHidden: boolean;
    dataCyStandardTableViewMultiSave: boolean;
    specialColumnDirectivesList: QueryList<SpecialColDirective>;
    editColumnDirectivesList: QueryList<EditColDirective>;
    tileTemplateRef: TemplateRef<any>;
    filterBar: TccFilterbarComponent;
    table: TccTableComponent<T>;
    slider: TccSliderRightComponent;
    tccStandardSliderDetailsView: TccStandardSliderDetailsViewComponent<T>;
    infinityScrollTiles: TccInfinityScrollComponent;
    tileInstanceDirective: TileInstanceDirective;
    inputMaskHTMLElementDirectives: QueryList<InputMaskHTMLElement>;
    set entities(entities: T[]);
    set options(options: TccStandardTableView.options<T>);
    changed: boolean;
    sliderDetailsHideIcon: boolean;
    sliderContentMarginLeft: number;
    /** sets the standardTableView to display: none */
    set hide(hide: boolean);
    set standardDetailsTitle(standardDetailsTitle: string);
    cellClickEmitter: EventEmitter<any>;
    rowClickEmitter: EventEmitter<TccStandardTableView.rowClickEvent<T>>;
    scrollDownEmitter: EventEmitter<boolean>;
    checkboxEmitter: EventEmitter<TccTable.checkboxEvent>;
    sortTableEmitter: EventEmitter<TccTable.sortTableEvent>;
    contextMenuEmitter: EventEmitter<TccContextMenuServiceNamespace.contextMenuClickEvent>;
    tableLoadedEmitter: EventEmitter<boolean>;
    markTableRowEmitter: EventEmitter<T[]>;
    onPrimary: EventEmitter<void>;
    onDelete: EventEmitter<T[]>;
    pageLoaded: EventEmitter<T[]>;
    onComponentViewChange: EventEmitter<string>;
    onFileUploadEvent: EventEmitter<FileList>;
    inputMaskInputsLoaded: EventEmitter<TccStandardTableView.inputsLoaded<T>>;
    inputMaskSubmit: EventEmitter<void>;
    inputMaskChangeTab: EventEmitter<{
        id: string;
        value: MatTabChangeEvent;
    }>;
    inputMaskChangeChip: EventEmitter<{
        id: string;
        index: number;
    }>;
    inputMaskChangePage: EventEmitter<{
        id: string;
        value: PageEvent;
    }>;
    inputMaskSearch: EventEmitter<TccInputMask.eventOutput<TccInputMask.ValueUnion>>;
    inputMaskSearchEnter: EventEmitter<TccInputMask.eventOutput<TccInputMask.ValueUnion>>;
    inputMaskValueChange: EventEmitter<TccInputMask.eventOutput<TccInputMask.ValueUnion>>;
    inputMaskValueChangeExtended: EventEmitter<TccInputMask.eventOutput<TccInputMask.ValueUnion>>;
    inputMaskFocusEvent: EventEmitter<TccInputMask.eventTrigger>;
    inputMaskBlurEvent: EventEmitter<TccInputMask.eventTrigger>;
    inputMaskInputButtonClick: EventEmitter<TccInputMask.eventTrigger>;
    inputMaskRowButtonClick: EventEmitter<TccInputMask.eventTrigger>;
    inputMaskButtonClick: EventEmitter<TccInputMask.eventTrigger>;
    inputMaskSelectOpen: EventEmitter<TccInputMask.eventTrigger>;
    inputMaskSearchListChange: EventEmitter<{
        id: string;
        value: Array<string>;
    }>;
    inputMaskSearchListChangePage: EventEmitter<{
        id: string;
        pagenumber: number;
        searchactive: boolean;
    }>;
    inputMaskSearchListSearch: EventEmitter<{
        id: string;
        searchstring: string;
        selection?: string;
    }>;
    inputMaskSearchListDialogClose: EventEmitter<TccInputMask.searchListDialogEvent>;
    inputMaskCreateListDialogClose: EventEmitter<TccInputMask.createListDialogEvent>;
    inputMaskCreateSimpleListDialogClose: EventEmitter<TccInputMask.eventOutput<TccInputMask.ValueUnion>>;
    inputMaskFieldMouseEnter: EventEmitter<TccInputMask.eventTrigger>;
    inputMaskFieldMouseLeave: EventEmitter<TccInputMask.eventTrigger>;
    inputMaskOpenAccordion: EventEmitter<string>;
    inputMaskEntityValuesSet: EventEmitter<T>;
    save: EventEmitter<T | T[]>;
    afterSave: EventEmitter<T | T[]>;
    createEntity: EventEmitter<T>;
    sliderIconButtonEvent: EventEmitter<void>;
    sliderOutlinedButtonEvent: EventEmitter<void>;
    sliderPrimaryButtonEvent: EventEmitter<void>;
    private set multiSave(value);
    _tableInput: TccTable.TableInputs<T>;
    _useSliderDetailsView: boolean;
    _useSliderStandardDetailsView: boolean;
    _standardDetailsInputElements: TccInputMask.SectionElements;
    _standardDetailsProfileOptions: TccChooseProfileThumbnail.Options;
    _standardDetailsTitle: string;
    _noContentSettings: tccFilterbar.noContentSettings;
    _saveButtonCaption: string;
    _deleteButtonCaption: string;
    _standardPrimaryButtonTooltip: string;
    _defaultView: tccListTileSwitch.view;
    _filterOptions: tccFilter.FilterInputOptions;
    _advancedFilterOptions: tccAdvancedFilter.AdvancedFilterInputOptions;
    private _permanentFilter;
    _primaryButton: string;
    _primaryButtonIcon: string;
    _primaryButtonDisabled: boolean;
    _disableChooseProfile: boolean;
    _basePath: string;
    _hide: boolean;
    private _useSelectForTable;
    private _addSelectsForTable;
    private _entityName;
    _entityPath: string;
    private _iconPath;
    private _nestedEntity;
    private _searchFields;
    hasSearch: boolean;
    private _internalCreateEntityCallback;
    private _createEntityOptions;
    private _multiSave;
    private _setValueChangesFunction;
    private _useStandardCreate;
    private _deleteGetNameFunction;
    private _deleteForbiddenFunction;
    private _deleteEntityCallback;
    private _orderBy;
    private _disableChangableColumns;
    private _generateChangableColumnsFunction;
    private _disabledTableColumns;
    _searchOnEnter: boolean;
    _sliderConfig: TccSectionNavigationButtonConfig;
    _disableAddToTransport: boolean;
    _disableSetEntityId: boolean;
    _navigationQueryParams: {
        tab?: string;
        itemIdentifier?: string;
        itemPath?: string;
    };
    dataSource: Array<T>;
    infinityScrollContentType: TccInfinityScroll.contentType;
    private service;
    private serviceSelect;
    pagedDataManager: TccPagedDataManager<T>;
    deleteDisabled: boolean;
    _entities: T[];
    private entitiesGiven;
    currEntity: T;
    changes: TccStandardTableView.changes<T>;
    private lastRefreshedCheckDirective;
    elementIds: {
        [elementId: string]: T;
    };
    _standardPrimaryButton: string;
    _deleteButton: string;
    changeableColumns: tccFilterbar.settings;
    displayedColumns: string[];
    private _searchEntities;
    private lastSearchString;
    private _initSort;
    get standardDetailsInputMask(): TccInputMaskComponent;
    private checkedTiles;
    private lockedState;
    locked: boolean;
    changeable: boolean;
    _lockedStateBasePath: string;
    constructor(factory: TccODataServiceFactory, pagedDataManagerService: TccPagedDataManagerService, dialog: TccDialogWindowService, matDialog: MatDialog, snackbarservice: TccSnackBarService, keyPressService: TccKeypressService, userPropertyService: TccUserPropertyService, redirectService: TccRedirectService, localeService: LocaleService, tccCatchError: TccCatchErrorService, addToTransportService: AddtotransportService, globalVarContext?: AppContext);
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    private initObjectDetails;
    private initKeyPressService;
    private initSliderSubscriptions;
    private initService;
    private initServiceSelect;
    private generatePagedDataManager;
    private dataSubscribe;
    private localSearchEventHandler;
    private canSliderClose;
    getItemByIndex(index: number): Observable<T>;
    tableLoadedEvent(): void;
    refreshReferences(references: TccPagedDataManagerNamespace.refreshReferencesOptions<T>): void;
    private onKeyPressCreate;
    private onKeyPressDelete;
    afterCustomDeleteSuccess(deletedEntities: T[]): void;
    private onKeyPressSave;
    private changeView;
    cellClickEvent(event: any): void;
    selectEntity(row: TccTable.rowClickEvent): void;
    refreshDataManagerCheckDirectiveRef(): void;
    sortColumn(sort: {
        active: string;
        direction: "asc" | "desc" | "";
    }): void;
    contextMenuOptionClick(event: TccContextMenuServiceNamespace.contextMenuClickEvent): void;
    scrollDownEvent(event: boolean): void;
    markTableRowEvent(event: TccTable.checkboxEvent): void;
    getSelectedItems(): T[];
    refreshTransformedValues(): void;
    standardDetailsSave(): void;
    onPrimaryButtonEvent(): void;
    onOutlinedButtonEvent(): void;
    onIconButtonEvent(): void;
    onFilterbarCreate(): void;
    onFilterbarPrimary(): void;
    getSaveRequest(): Observable<T>;
    onFilterbarSave(): void;
    private setIconInEntity;
    private changeSingleEntity;
    onFilterbarSaveCallback(entity: T): void;
    private onFilterbarSaveErrorCallback;
    onChangeColumnEvent(settings: tccFilterbar.settings): void;
    onFilterbarDelete(): void;
    /**
     * opens dialog to create new Entity
    */
    _createEntity(entity?: T): void;
    /**
     * dialog callback to create new Workflow and save it to the Server
     * @param {TccInputDialogReturn} result dialog result
    */
    private _createEntityCallback;
    navigateOnEntitySelection(entity: T, index?: number): void;
    private _navigateOnEntitySelection;
    addChangeToInactiveEntity(entityId: string, changePropertyId: string, value: any, idPath?: string[]): boolean;
    private addCurrChangesToChanges;
    getEntityId(entity: T): string;
    private generateId;
    private generateChangeableColumns;
    private getDisplayedColumns;
    onChangeComponetView(event: string): void;
    FileUploadEvent(event: FileList): void;
    _inputMaskInputsLoaded(event: string[]): void;
    _inputMaskSubmit(): void;
    _inputMaskChangeTab(event: {
        id: string;
        value: MatTabChangeEvent;
    }): void;
    _inputMaskChangeChip(event: {
        id: string;
        index: number;
    }): void;
    _inputMaskChangePage(event: {
        id: string;
        value: PageEvent;
    }): void;
    _inputMaskSearch(event: TccInputMask.eventOutput): void;
    _inputMaskSearchEnter(event: TccInputMask.eventOutput): void;
    _inputMaskValueChange(event: TccInputMask.eventOutput): void;
    _inputMaskValueChangeExtended(event: TccInputMask.eventOutput): void;
    _iconChanged(): void;
    _inputMaskFocusEvent(event: TccInputMask.eventTrigger): void;
    _inputMaskBlurEvent(event: TccInputMask.eventTrigger): void;
    _inputMaskInputButtonClick(event: TccInputMask.eventTrigger): void;
    _inputMaskRowButtonClick(event: TccInputMask.eventTrigger): void;
    _inputMaskButtonClick(event: TccInputMask.eventTrigger): void;
    _inputMaskSelectOpen(event: TccInputMask.eventTrigger): void;
    _inputMaskSearchListChange(event: {
        id: string;
        value: Array<string>;
    }): void;
    _inputMaskSearchListChangePage(event: {
        id: string;
        pagenumber: number;
        searchactive: boolean;
    }): void;
    _inputMaskSearchListSearch(event: {
        id: string;
        searchstring: string;
        selection?: string;
    }): void;
    _inputMaskSearchListDialogClose(event: TccInputMask.searchListDialogEvent): void;
    _inputMaskCreateListDialogClose(event: TccInputMask.createListDialogEvent): void;
    _inputMaskCreateSimpleListDialogClose(event: TccInputMask.eventOutput): void;
    _inputMaskFieldMouseEnter(event: TccInputMask.eventTrigger): void;
    _inputMaskFieldMouseLeave(event: TccInputMask.eventTrigger): void;
    _inputMaskOpenAccordion(event: string): void;
    _inputMaskEntityValuesSet(event: T): void;
    resetTableCheckBoxes(): void;
    private replaceEntities;
    refreshTableData(entities?: T[]): void;
    disablePrimaryButton(disable?: boolean): void;
    handleChildOutput: (event: {
        Id: string;
        checked: boolean;
    }) => void;
    private mapIdListToEntities;
    findAndSelectEntity(entity: T, item?: {
        value: any;
        path: string;
    }): void;
}
