import { IProperty } from './IProperty.js';
import { IService } from '../IService.js';
import { IDesignItem } from '../../item/IDesignItem.js';
import { ValueType } from './ValueType.js';
import { BindingTarget } from '../../item/BindingTarget.js';
import { IBinding } from '../../item/IBinding.js';
import { IPropertyGroup } from './IPropertyGroup.js';
import { IContextMenuItem } from '../../helper/contextMenu/IContextMenuItem.js';
export declare enum RefreshMode {
    none = 0,
    full = 1,
    fullOnValueChange = 2,
    fullOnClassChange = 3
}
export interface IPropertiesService extends IService {
    getRefreshMode(designItem: IDesignItem): RefreshMode;
    isHandledElement(designItem: IDesignItem): boolean;
    getProperties(designItem: IDesignItem): Promise<IProperty[] | IPropertyGroup[]>;
    getProperty(designItem: IDesignItem, name: string): Promise<IProperty>;
    getBinding(designItems: IDesignItem[], property: IProperty): IBinding;
    getPropertyTarget(designItem: IDesignItem, property: IProperty): BindingTarget;
    getPropertyNameSuggestions?(designItems: IDesignItem[]): string[];
    setValue(designItems: IDesignItem[], property: IProperty, value: any): Promise<void>;
    previewValue?(designItems: IDesignItem[], property: IProperty, value: any): Promise<void>;
    removePreviewValue?(designItems: IDesignItem[], property: IProperty): Promise<void>;
    clearValue(designItems: IDesignItem[], property: IProperty, clearType: 'all' | 'binding' | 'value'): any;
    isSet(designItems: IDesignItem[], property: IProperty): ValueType;
    getValue(designItems: IDesignItem[], property: IProperty): any;
    getUnsetValue(designItems: IDesignItem[], property: IProperty): any;
    getContextMenu(designItems: IDesignItem[], property: IProperty): IContextMenuItem[];
}
