import { LitElement } from 'lit-element/lit-element.js';
import '@kano/styles/color.js';
import '@kano/styles/typography.js';
import './kc-part-list-item.js';
import { EventEmitter, IEvent } from '@kano/common/index.js';
import { PartInlineDisplay } from '../../lib/parts/inline-display.js';
import { Editor } from '../../lib/index.js';
export interface IStackEntry {
    id: string;
    name: string;
    icon: HTMLTemplateElement;
    inlineDisplay: PartInlineDisplay;
    editor: Editor;
    color: string;
    entry?: any;
}
export declare class KCPartsControls extends LitElement {
    private _onDidClickAddParts;
    private _onDidClickRemovePart;
    parts: IStackEntry[];
    addPartsHidden: boolean;
    readonly onDidClickAddParts: IEvent<void>;
    readonly onDidClickRemovePart: IEvent<string>;
    static readonly styles: import("lit-element").CSSResult;
    render(): import("lit-element").TemplateResult;
    readonly addPartsButton: Element | null;
    _addPartClicked(): void;
    _removePartClicked(part: any): void;
    _removePart(part: any): void;
    _partItemTapped(part: any): void;
    getPartNode(id: string): HTMLElement;
    addEntry(model: IStackEntry): IPartsControlsEntry;
    _onNameChange(e: CustomEvent, part: IStackEntry): void;
    _validatePartName(oldName: string, newName: string): string | true;
}
export interface IPartsControlsEntry {
    _onDidChangeName: EventEmitter<string>;
    onDidChangeName: IEvent<string>;
    dispose(): void;
    update(model: IStackEntry): void;
}
