import { html, svg } from 'lit-html';
import { Signal } from 'signal-polyfill';
export { html, svg };
export type RenderFunction = () => ReturnType;
export type CleanupFunction = () => void;
export type EffectFunction = () => CleanupFunction | void;
export type StylePropsFunction = (props: Record) => void;
type AttributeSignals = {
[K in Attrs]: Signal.State;
};
export type ComponentContext = AttributeSignals & {
internals: ElementInternals;
effect: (fn: EffectFunction) => void;
styleProps: StylePropsFunction;
};
export type FunctionalComponent = (context: ComponentContext) => RenderFunction;
export interface DefineOptions {
setup: FunctionalComponent;
tagName?: string;
attributes?: Attrs[];
useShadow?: boolean;
formAssociated?: boolean;
styles?: string;
}
declare function lightElement(fn: FunctionalComponent): void;
declare function lightElement(styles: string, fn: FunctionalComponent): void;
declare function lightElement(observedAttributes: Attrs[], fn: FunctionalComponent): void;
declare function lightElement(observedAttributes: Attrs[], styles: string, fn: FunctionalComponent): void;
declare function shadowElement(fn: FunctionalComponent): void;
declare function shadowElement(styles: string, fn: FunctionalComponent): void;
declare function shadowElement(observedAttributes: Attrs[], fn: FunctionalComponent): void;
declare function shadowElement(observedAttributes: Attrs[], styles: string, fn: FunctionalComponent): void;
declare const state: (value: T) => Signal.State;
declare const computed: (fn: () => T) => Signal.Computed;
export { state, computed, lightElement, shadowElement };
export declare function define(options: DefineOptions): void;
//# sourceMappingURL=index.d.ts.map