import { CSSResultGroup, TemplateResult } from 'lit'; import { Builder } from './builder.js'; import { Clazz, View } from './view.js'; export declare const cssPropMetadataKey: unique symbol; export declare const slotMetadataKey: unique symbol; export declare function view(tag: string, options: ComponentOptionsWithCtorAndFactory): [U & { View: Clazz; }, Clazz, Clazz]; export declare function view(tag: string, options: ComponentOptionsWithCtor): [BuilderFactory & { View: Clazz; }, Clazz, Clazz]; export declare function view(tag: string, options: ComponentOptions): [ BuilderFactory<{ props: T; }> & { View: Clazz; }, Clazz, Clazz ]; export declare function cssPropsFrom(...props: string[]): Map; export declare function cssProp(name: string, attrName?: string): any; export declare function slot(name?: string): any; interface ComponentOptions { template: (props: T) => (TemplateResult | View) | (TemplateResult | View)[]; slotTemplate?: (props: T) => (TemplateResult | View) | (TemplateResult | View)[]; cssTemplate?: (() => CSSResultGroup) | CSSResultGroup; cssProps?: Map; viewRoot?: (element: Element) => Element; noShadow?: boolean; } interface ComponentOptionsWithCtor extends ComponentOptions { Props: Clazz; } export declare type BuilderFactory = () => Builder; interface ComponentOptionsWithCtorAndFactory extends ComponentOptionsWithCtor { mapBuilder: (_: BuilderFactory) => U; } export {};