///
import { IPartAPI } from './api.js';
import { IAPIDefinition } from '../meta-api/module.js';
import { Part } from './part.js';
import Editor from '../editor/editor.js';
import { ToolboxEntry, IToolboxWhitelist } from '../editor/toolbox.js';
import { QueryEngine } from '../editor/selector/selector.js';
import { IPartsControlsEntry } from '../../elements/kc-workspace-frame/kc-parts-controls.js';
declare type PartAPIOrFactory = IPartAPI | IPartFactory;
declare type IPartFactory = (editor: Editor) => IPartAPI;
interface IPartRecord {
type: string;
toolboxEntry: ToolboxEntry;
partsControlsEntry: IPartsControlsEntry;
part: Part;
}
export declare class EditorPartsManager {
private editor;
private addDialog;
private addDialogProvider;
private apiRegistry;
private parts;
private names;
private whitelist;
private _telemetry;
private _onDidOpenAddParts;
private _onDidAddPart;
readonly onDidOpenAddParts: import("@kano/common/index.js").IEvent;
readonly onDidAddPart: import("@kano/common/index.js").IEvent;
constructor(editor: Editor);
getRegisteredParts(): Map;
getAddedParts(): Map;
setWhitelist(whitelist: IToolboxWhitelist | null): void;
onInject(): void;
createToolboxModule(api: IPartAPI, id: string, name: string): IAPIDefinition;
reserveName(name: string): void;
/**
* Find a unique name available
* @param source Original name
*/
getAvailableName(source: string, inc?: number): string;
/**
* Mark a name as free to use
* @param source Name to free
*/
freeName(source: string): void;
/**
* Called by the editor when the user imports a saved app
* @param app Exported app data
*/
onImport(app: any): void;
addPart(partClass: typeof Part, data?: any): IPartRecord | undefined;
removePartAttempt(id: string): void;
removePart(id: string): void;
checkBlockDependency(id: string): boolean;
static getInlineDisplay(api: IPartAPI, part: Part): import("./inline-display.js").PartInlineDisplay;
renamePart(partRecord: IPartRecord, newName: string): void;
registerAPI(partAPI: PartAPIOrFactory): void;
reset(): void;
registerQueryHandlers(engine: QueryEngine): void;
/**
* Disable all parts. This prevents users from being able to create parts.
* Parts can still be created and visible if their are loaded through the editor
*/
disable(): void;
dispose(): void;
}
export {};