export interface ComponentEvent { type: string; payload: unknown; clone(event: ComponentEvent): ComponentEvent; } export interface EventDispatcher { handlersByEventName: Map>; addEventListener(event: string, instance: unknown, handler: string): void; canListen(eventType: string, instance: unknown, handler: string): boolean; removeEventListener(event: string, instance: unknown, handler: string): void; removeAllEventListeners(instance: unknown): void; dispatch(event: ComponentEvent): void; } export interface Component extends EventDispatcher { ready: boolean; id: string; element: HTMLElement; destroy(removed?: boolean): void; init(): void; inserted(): void; removed(): void; attributeChanged(): void; removeEventListeners(): void; onSkinPartAdded(part: string): void; attributeMap: Map; skinPartMap: Map; addAttributes(): void; addSkinParts(): void; render(list?: Array, isSsr?: boolean): HTMLElement; } export interface Listener { readonly handler: string; readonly instance: unknown; } export declare const random: () => string; export declare enum Events { CLICK = "lotusComponentClick", ITEM_SELECTED = "lotusItemViewItemSelected", ITEM_DESELECTED = "lotusItemViewItemDeselected", REMOVE_ITEM = "lotusItemViewRemoveItem" } export declare const addProperty: (instance: T, label: string, getter?: () => unknown, setter?: (v: unknown) => void, enumerable?: boolean) => T; export declare const mixin: (target: any, sub: any) => T; export declare const getTemplate: () => T; export declare const getComponentEvent: (type: string, payload: unknown) => ComponentEvent; export declare const createComponent: () => Component;