import { Location } from '@angular/common';
import { OnDestroy, OnInit, ViewContainerRef } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core';
import { NgxSpinnerService } from 'ngx-spinner';
import { MessageService } from 'primeng/api';
import { Observable, Subscription } from 'rxjs';
import { Error } from '../../error/error';
import { ActionStatus } from '../action-status';
import { RecordUiService } from '../record-ui.service';
import { RecordService } from '../record.service';
import { IRecordEvent } from './detail-button/IRecordEvent.interface';
import { RecordDetailDirective } from './detail.directive';
import * as i0 from "@angular/core";
export declare class DetailComponent implements OnInit, OnDestroy {
    protected route: ActivatedRoute;
    protected router: Router;
    protected location: Location;
    protected recordService: RecordService;
    protected recordUiService: RecordUiService;
    protected translate: TranslateService;
    protected spinner: NgxSpinnerService;
    protected messageService: MessageService;
    protected viewContainerRef: ViewContainerRef;
    /** View component for displaying record */
    viewComponent: any;
    /** Record can be used ? */
    useStatus: ActionStatus;
    /** Record can be updated ? */
    updateStatus: ActionStatus;
    /** Record can be deleted ? */
    deleteStatus: ActionStatus;
    /** Observable resolving record data */
    record$: Observable<any>;
    /** Record data */
    record: any;
    /** Error message */
    error: Error;
    /** Admin mode for CRUD operations */
    adminMode: ActionStatus;
    /** Type of record */
    type: string;
    /**Subscription to route parameters observables */
    private routeParametersSubscription;
    /** Object type route config */
    private config;
    private detailComponentSubscription;
    /** Directive for displaying record */
    recordDetail: RecordDetailDirective;
    /** On init hook */
    ngOnInit(): void;
    /**
     * Component destruction.
     *
     * Unsubscribes from the observables of the route parameters.
     * Unsubscribes from the observable for detail view.
     */
    ngOnDestroy(): void;
    /**
     * Record event
     * @param event - Record event message
     */
    recordEvent(event: IRecordEvent): void;
    /**
     * Getter giving the information if file management is enabled.
     * @returns True if file management is enabled.
     */
    get filesEnabled(): boolean;
    /**
     * Delete the record and go back to previous page.
     * @param event - DOM event
     * @param element - string (PID to remove) or object
     */
    deleteRecord(element: any): Subscription;
    /**
     * Show a modal containing message given in parameter.
     * @param message - message to display into modal
     */
    showDeleteMessage(message: string): void;
    /** Dynamically load component depending on selected resource type. */
    private loadRecordView;
    /** Load component view corresponding to type */
    private loadViewComponentRef;
    static ɵfac: i0.ɵɵFactoryDeclaration<DetailComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DetailComponent, "ng-core-record-detail", never, { "viewComponent": { "alias": "viewComponent"; "required": false; }; }, {}, never, never, false, never>;
}
