import { IPropertiesService } from './IPropertiesService.js';
import { IPropertyEditor } from './IPropertyEditor.js';
import { PropertyType } from './PropertyType.js';
import type { IDesignItem } from '../../item/IDesignItem.js';
export interface IProperty {
    name: string;
    renamable?: boolean;
    displayName?: string;
    propertyName?: string;
    group?: string;
    attributeName?: string;
    description?: string;
    type?: 'addNew' | 'json' | 'color' | 'date' | 'number' | 'list' | 'enum' | 'boolean' | 'img-lis' | 'thickness' | 'css-length' | 'length' | 'angle' | 'time' | 'frequency' | 'flex' | 'resolution' | 'string' | string;
    default?: any;
    min?: number;
    max?: number;
    step?: number;
    readonly?: boolean;
    values?: string[];
    units?: string[];
    unitSteps?: Record<string, number>;
    numericValueDecimalPlaces?: number;
    numericValueConverter?: (value: number, fromUnit: string, toUnit: string, property: IProperty, numericType: string, numberText?: string, rawValue?: string, designItems?: IDesignItem[]) => string | number | null | undefined;
    enumValues?: [name: string, value: string | number][];
    createEditor?: (property: IProperty) => IPropertyEditor;
    value?: any;
    service: IPropertiesService;
    defaultValue?: any;
    example?: string;
    propertyType: PropertyType;
}
