import { NestedTreeControl } from '@angular/cdk/tree';
import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
import { FormControl, FormGroup } from '@angular/forms';
import { MatLegacyDialog as MatDialog } from '@angular/material/legacy-dialog';
import { Router } from '@angular/router';
import { Observable, Subscription } from 'rxjs';
import { AbstractAppConfig } from '../../../../../../app.config';
import { CaseFileViewCategory, CaseFileViewDocument, CategoriesAndDocuments, DocumentTreeNode } from '../../../../../domain/case-file-view';
import { DocumentManagementService, WindowService } from '../../../../../services';
import * as i0 from "@angular/core";
export declare const MEDIA_VIEWER_LOCALSTORAGE_KEY = "media-viewer-info";
export declare class CaseFileViewFolderComponent implements OnInit, OnDestroy {
    private readonly windowService;
    private readonly router;
    private readonly documentManagementService;
    private readonly dialog;
    private readonly appConfig;
    private static readonly UNCATEGORISED_DOCUMENTS_TITLE;
    private static readonly DOCUMENT_SEARCH_FORM_CONTROL_NAME;
    private static readonly MINIMUM_SEARCH_CHARACTERS;
    categoriesAndDocuments: Observable<CategoriesAndDocuments>;
    allowMoving: boolean;
    clickedDocument: EventEmitter<DocumentTreeNode>;
    moveDocument: EventEmitter<{
        newCategory: string;
        document: DocumentTreeNode;
    }>;
    nestedTreeControl: NestedTreeControl<DocumentTreeNode>;
    nestedDataSource: DocumentTreeNode[];
    categories: CaseFileViewCategory[];
    categoriesAndDocumentsSubscription: Subscription;
    selectedNodeItem: DocumentTreeNode | undefined;
    documentFilterFormGroup: FormGroup;
    documentSearchFormControl: FormControl;
    documentTreeData: DocumentTreeNode[];
    documentFilterSubscription: Subscription;
    searchTermLength: number;
    private getChildren;
    nestedChildren: (_: number, nodeData: DocumentTreeNode) => DocumentTreeNode[];
    get documentCount(): number;
    constructor(windowService: WindowService, router: Router, documentManagementService: DocumentManagementService, dialog: MatDialog, appConfig: AbstractAppConfig);
    collapseAll(expand: boolean): void;
    expandAll(expand: boolean): void;
    ngOnInit(): void;
    generateTreeData(categories: CaseFileViewCategory[]): DocumentTreeNode[];
    getDocuments(documents: CaseFileViewDocument[]): DocumentTreeNode[];
    getUncategorisedDocuments(uncategorisedDocuments: CaseFileViewDocument[]): DocumentTreeNode;
    filter(searchTerm: string): Observable<DocumentTreeNode[]>;
    triggerDocumentAction(actionType: 'changeFolder' | 'openInANewTab' | 'download' | 'print', documentTreeNode: DocumentTreeNode): void;
    sortDataSourceAscending(column: number): void;
    sortDataSourceDescending(column: number): void;
    updateNodeData(data: DocumentTreeNode[]): void;
    ngOnDestroy(): void;
    private openMoveDialog;
    printDocument(url: string): void;
    downloadFile(url: string, downloadFileName: string): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<CaseFileViewFolderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CaseFileViewFolderComponent, "ccd-case-file-view-folder", never, { "categoriesAndDocuments": { "alias": "categoriesAndDocuments"; "required": false; }; "allowMoving": { "alias": "allowMoving"; "required": false; }; }, { "clickedDocument": "clickedDocument"; "moveDocument": "moveDocument"; }, never, never, false, never>;
}
//# sourceMappingURL=case-file-view-folder.component.d.ts.map