/// <reference types="lodash" />
import { FieldViewModel } from './field-view-model';
import { ColorService } from '../color.service';
import { ErrorService } from '../error.service';
import { AttachmentViewModel } from './attachment-view-model';
import { ViewModelFactoryService } from '../view-model-factory.service';
import { ContextService } from '../context.service';
import { MaskService } from '../mask.service';
import { ClickHandlerService } from '../click-handler.service';
import { UrlManagerService } from '../url-manager.service';
import { IDraggableViewModel } from './idraggable-view-model';
import { Dictionary } from 'lodash';
import * as Models from '../models';
import * as Configservice from '../config.service';
import { Pane } from '../route-data';
export declare class PropertyViewModel extends FieldViewModel implements IDraggableViewModel {
    readonly propertyRep: Models.PropertyMember;
    private readonly viewModelfactory;
    private readonly maskService;
    private readonly urlManager;
    private readonly clickHandler;
    private readonly previousValue;
    constructor(propertyRep: Models.PropertyMember, color: ColorService, error: ErrorService, viewModelfactory: ViewModelFactoryService, context: ContextService, maskService: MaskService, urlManager: UrlManagerService, clickHandler: ClickHandlerService, configService: Configservice.ConfigService, id: string, previousValue: Models.Value, onPaneId: Pane, parentValues: () => Dictionary<Models.Value>);
    private getDigest(propertyRep);
    private setupPropertyAutocomplete(parentValues);
    private setupPropertyConditionalChoices();
    private callIfChanged(newValue, doRefresh);
    private setupChoice(newValue);
    private setupReference(value, rep);
    private setupReferencePropertyValue();
    private setupScalarPropertyValue();
    readonly isEditable: boolean;
    readonly attachment: AttachmentViewModel | null;
    refType: "null" | "navigable" | "notNavigable";
    readonly draggableType: string;
    readonly draggableTitle: () => string;
    readonly canDropOn: (targetType: string) => Promise<boolean>;
    readonly doClick: (right?: boolean | undefined) => void;
    readonly isDirty: () => boolean;
}
