import { Component } from 'vue'; import { IPart } from './model'; export type PartPropertyType = 'readonly-text' | 'text' | 'number' | 'multiline-text' | 'select' | string; export type PartPropertyEditor = (property: PartProperty, parts: IPart[]) => Component | undefined; export type PartProperty = { propertyName: string; caption: string; propertyType: PartPropertyType; params?: any; propertyEditor?: PartPropertyEditor; localPartOnly?: boolean; }; export type PartPropertyGroupEditor = (group: PartPropertyGroup, parts: IPart[]) => Component | undefined; export type PartPropertyGroup = { groupName: string; caption: string; properties: PartProperty[]; showGroupName?: boolean; propertyGroupEditor?: PartPropertyGroupEditor; localPartOnly?: boolean; }; export type PartDefinition = { partType: string; partName: string; caption: string; propertyGroups?: PartPropertyGroup[]; initialProperties?: Record; creator?: PartCreator; allowsChild?: (partOrName: IPart | string | undefined) => boolean; }; export type PartCreator = (part: IPart, partDef: PartDefinition) => Component | undefined; export type PartDefinitionGroup = { groupName: string; caption: string; partDefinitions: PartDefinition[]; }; export type PartComponent = { part: IPart; component: Component; }; export declare class PartManager { readonly partDefinitionGroups: PartDefinitionGroup[]; readonly partPropertyGroupEditors: Map; readonly partPropertyEditors: Map; private readonly partDefinitionMap; registerPartDefinitionGroup(groups: PartDefinitionGroup[]): void; getPartDefinition(partName: string): PartDefinition | undefined; getPropertyDefinition(partName: string, propertyName: string): PartProperty | undefined; createPartComponent(part?: IPart): Component | undefined; createPartComponents(parts?: IPart[]): PartComponent[]; registerPartPropertyGroupEditors(editors: Record): void; getPartPropertyGroupEditor(groupName: string): PartPropertyGroupEditor | undefined; registerPartPropertyEditors(editors: Record): void; getPartPropertyEditor(attrType: PartPropertyType): PartPropertyEditor | undefined; findNearestAvailableParentPart(target: IPart, partOrName: IPart | string | undefined): IPart | undefined; getSectionDefinition(): PartDefinition | undefined; getBlockDefinition(): PartDefinition | undefined; findNearestSection(part: IPart): IPart | undefined; findNearestBlock(part: IPart): IPart | undefined; }