import { ViewModelBase } from './view-model-base';
import { ServiceBase } from '../data/service-base';
import { EntityManager } from '../data/entity-manager';
import * as breeze from 'breeze-client';
import { Router } from 'aurelia-router';
import { CustomLogger } from '../modules/custom-logger';
import { EditingModeEnum } from './editing-mode-enum';
import { DialogService } from 'aurelia-dialog';
import { ValidationController } from 'aurelia-validation';
import { ActionDialogBoxInputParameters } from './../model/common-model';
export declare abstract class EntityDetailViewModelBase<T extends breeze.Entity> extends ViewModelBase {
    hasChangesSubscriptionKey: number;
    entity: T;
    service: ServiceBase<T>;
    hasChanges: boolean;
    editingMode: EditingModeEnum;
    get isEditable(): boolean;
    get canEdit(): boolean;
    get disabled(): boolean;
    get canSave(): boolean;
    get isCreationMode(): boolean;
    get canAddOrUpdate(): boolean;
    abstract get documentTitle(): string;
    isInitialized: boolean;
    isSaving: boolean;
    entityManager: EntityManager;
    controller: ValidationController;
    dialogService: DialogService;
    dialogRightActions: Array<ActionDialogBoxInputParameters>;
    dialogLeftActions: Array<ActionDialogBoxInputParameters>;
    constructor(router: Router, logger: CustomLogger);
    isSavingChanged(newValue: any, oldValue: any): void;
    initialize(serviceInstance: ServiceBase<T>): void;
    protected getTranslationKeyEntityTypeName(): string;
    get ribbonHeaderText(): string;
    cancel(silentCancel?: boolean, onlyCurrentEntity?: boolean): Promise<any>;
    innerCancel(allowNavigateBack?: boolean, silentMode?: boolean, onlyCurrentEntity?: boolean): Promise<unknown>;
    edit(): Promise<any>;
    refreshData(): void;
    deactivate(): void;
    canDeactivate(): Promise<boolean>;
    navigateBack(): Promise<void>;
    protected doNavigateBack(): void;
    protected beforeSave(): Promise<void | boolean>;
    protected afterSave(): Promise<void>;
    saveCurrentEntity(silentSave?: boolean): Promise<T>;
    save(silentSave?: boolean, byPassLocking?: boolean, navigateBack?: boolean): Promise<any>;
    private internalSave;
    protected changeRouteAfterCreation(): void;
    checkInitialized(): void;
    private innerSave;
    addNew(): void;
    delete(detachInverseFKEntities?: boolean): Promise<void>;
    private handleShortcutsEvent;
    protected handleShortcuts(event: KeyboardEvent): Promise<boolean>;
    detached(): void;
    selectAction(action: ActionDialogBoxInputParameters): Promise<void>;
}
