import { ComposedCustomEvent, Constructor, CustomElement, HTMLElementClass, EventOptions, PropOptions, WithChildren, WithRenderer, WithUpdate, WithComponent, WithLifecycle, WithContext, Mixed } from './types'; /** * The define() function is syntactic sugar on top of customElements.define() * that allows you to specify a static is property on your constructor that is the name of the component, * or omit it altogether. */ export const define: (ctor: T) => T; /** * Emits an Event on elem that is composed, bubbles and is cancelable by default. * The return value of emit() is the same as dispatchEvent(). */ export function emit(elem: EventTarget | HTMLElementClass, eventName: string, eventOptions?: EventOptions): boolean; export function link(elem: CustomElement, target?: string): (e: ComposedCustomEvent) => void; export const props: Readonly<{ any: PropOptions & PropertyDecorator; array: PropOptions & PropertyDecorator; boolean: PropOptions & PropertyDecorator; number: PropOptions & PropertyDecorator; object: PropOptions & PropertyDecorator; string: PropOptions & PropertyDecorator; }>; export const prop: (ops?: PropOptions) => PropertyDecorator & PropOptions; export const shadow: (elem: CustomElement | HTMLElement) => ShadowRoot; export const name: (componentName?: string) => string; // Mixins export function withComponent = Constructor>( Base?: T ): typeof WithComponent; export function withComponent< P = Mixed, S = Mixed, C = void, T extends Constructor = Constructor >(Base?: T): Constructor> & T; export function withUpdate

= Constructor>( Base?: T ): Constructor> & T; export function withRenderer = Constructor>( Base?: T ): Constructor> & T; export function withContext = Constructor>( Base?: T ): Constructor> & T; export function withLifecycle = Constructor>( Base?: T ): Constructor & T; export function withChildren = Constructor>( Base?: T ): Constructor & T;