import { TemplateResult } from 'lit-html'; import { O as OutsideClickResolution } from './outside-click-rZ3Di_WX.cjs'; type Constructor = new (...args: unknown[]) => T; type RenderableElement = HTMLElement & { render?(): TemplateResult | null | undefined; afterRender?(): void; wrapRender?(commit: () => void, context: RenderContext): void; onAttributeChange?(name: string, oldValue: string | null, newValue: string | null): void; requestRender?(): void; renderRoot?: ShadowRoot | HTMLElement; }; type TemplateValue = TemplateResult | null | undefined | ((this: TElement, host: TElement) => TemplateResult | null | undefined); interface ComponentOptions { tag: string; template?: TemplateValue; styles?: string; styleUrls?: string[]; observedAttributes?: string[]; shadowMode?: ShadowRootMode; autoSlot?: boolean; } interface RenderContext { fragment: DocumentFragment; root: ShadowRoot | HTMLElement; } declare const Component: (options: ComponentOptions) => & { observedAttributes?: string[]; }>(Base: TBase, _context: ClassDecoratorContext) => TBase; type ListenHost = HTMLElement & { renderRoot?: ShadowRoot | DocumentFragment | HTMLElement; }; type ListenTargetResolver = 'document' | 'window' | 'shadow' | 'root' | 'light' | EventTarget | ((host: THost) => EventTarget | null | undefined); type Predicate = (event: TEvent, matched: TElement | null) => boolean; interface ListenOptions { selector?: string; target?: ListenTargetResolver; prevent?: boolean; stop?: boolean; stopImmediate?: boolean; once?: boolean; passive?: boolean; capture?: boolean; when?: Predicate; } declare function Listen(eventName: keyof HTMLElementEventMap | string, selectorOrOptions?: string | ListenOptions): (originalMethod: (this: THost, event: TEvent, matched?: TElement | null) => unknown, context: ClassMethodDecoratorContext) => void; type OutsideClickHost = HTMLElement & { connectedCallback?: (...args: unknown[]) => unknown; disconnectedCallback?: (...args: unknown[]) => unknown; afterRender?: (...args: unknown[]) => unknown; }; interface OutsideClickOptions { resolve?: (host: THost) => OutsideClickResolution | null | undefined; owner?: (host: THost) => HTMLElement | null | undefined; content?: (host: THost) => HTMLElement | null | undefined; triggers?: (host: THost) => Array; disabled?: (host: THost) => boolean; } declare function OutsideClick(options?: OutsideClickOptions): (originalMethod: (this: THost, event: TEvent) => unknown, context: ClassMethodDecoratorContext) => void; type RenderHost$1 = HTMLElement & { requestRender?(): void; render?(): void; connectedCallback?(): void; disconnectedCallback?(...args: unknown[]): void; }; type PropTypeDescriptor = BooleanConstructor | NumberConstructor | StringConstructor | ObjectConstructor | ArrayConstructor | 'boolean' | 'number' | 'string' | 'json'; type Formatter = (this: THost, value: TValue) => string | null | undefined; type Parser = (this: THost, value: string | null) => TValue; interface PropOptions { attribute?: string; reflect?: boolean; type?: PropTypeDescriptor; parse?: Parser; format?: Formatter; defaultValue?: TValue | ((this: THost) => TValue); compare?: (previous: TValue, next: TValue) => boolean; onChange?: (this: THost, next: TValue, previous: TValue) => void; onAttributeChange?: (this: THost, next: TValue, previous: TValue) => void; } declare function Prop(options?: PropOptions): (accessor: ClassAccessorDecoratorTarget, context: ClassAccessorDecoratorContext) => ClassAccessorDecoratorResult; type QueryRoot = 'shadow' | 'light' | 'document'; type QueryHost = HTMLElement & { renderRoot?: ShadowRoot | DocumentFragment | HTMLElement; }; type QueryFallback = TResult | ((host: THost) => TResult); interface BaseQueryOptions { from?: QueryRoot; fallback?: QueryFallback; } interface QueryAllOptions extends BaseQueryOptions { all: true; closest?: false; } interface QueryClosestOptions extends BaseQueryOptions { closest: true; all?: false; } interface QuerySingleOptions extends BaseQueryOptions { all?: false; closest?: false; } type QueryOptions = QueryAllOptions | QueryClosestOptions | QuerySingleOptions; type QueryReturnType> = TOptions extends QueryAllOptions ? TElement[] : TOptions extends QueryClosestOptions ? Element | null : TElement | null; type QueryDecorator> = (target: ClassAccessorDecoratorTarget> | undefined, context: ClassFieldDecoratorContext> | ClassAccessorDecoratorContext>) => ClassAccessorDecoratorResult> | undefined; declare function Query>(selector: string, userOptions: TOptions): QueryDecorator; declare function Query(selector: string): QueryDecorator>; type RenderHost = HTMLElement & { requestRender?(): void; render?(): void; }; interface WatchOptions { compare?: (previous: TValue, next: TValue) => boolean; onChange?: (this: THost, next: TValue, previous: TValue) => void; transform?: (this: THost, initial: TValue) => TValue; } declare function Watch(options?: WatchOptions): (accessor: ClassAccessorDecoratorTarget, context: ClassAccessorDecoratorContext) => ClassAccessorDecoratorResult; export { Component, Listen, OutsideClick, Prop, Query, type RenderContext, Watch };