import { ComponentType as uComponentType, ConstructableComponent as uConstructableComponent, FunctionComponent as uFunctionComponent, ComponentOptions as uComponentOptions, ICustomElement as uICustomElement, PropsDefinitionInput as uPropsDefinitionInput, PropDefinition as uPropDefinition } from "./utils";
export type ComponentOptions = uComponentOptions;
export type ComponentType<T> = uComponentType<T>;
export type ConstructableComponent<T> = uConstructableComponent<T>;
export type FunctionComponent<T> = uFunctionComponent<T>;
export type PropsDefinitionInput<T> = uPropsDefinitionInput<T>;
export type ICustomElement = uICustomElement;
export type RegisterOptions = {
    BaseElement?: typeof HTMLElement;
    extension?: {
        extends: string;
    };
    customElements?: CustomElementRegistry;
};
export type PropDefinition<T> = uPropDefinition<T>;
export declare function register<T>(tag: string, props?: PropsDefinitionInput<T>, options?: RegisterOptions): (ComponentType: ComponentType<T>) => CustomElementConstructor;
export { isConstructor, isObject, isFunction, toAttribute, toProperty, reloadElement } from "./utils";
export { createMixin, compose } from "./mixin";
export * from "./context";
export { getCurrentElement, noShadowDOM } from "./element";
export { hot } from "./hot";
