import {attrs} from "./attrs/attrs.js" export type Renderable = HTMLElement | ShadowRoot | DocumentFragment export type Queryable = HTMLElement | ShadowRoot | Element | Document | DocumentFragment // attrs export type AttrValue = string | boolean | number | undefined | null | void export type AttrKind = ( | typeof String | typeof Number | typeof Boolean ) export type AttrType = ( H extends typeof String ? string | undefined : H extends typeof Number ? number | undefined : H extends typeof Boolean ? boolean : never ) export type AttrSpec = { [key: string]: AttrKind } export type AttrTypes = { [P in keyof A]: AttrType } export type Attrs = ReturnType // register export type HTMLElementClasses = { [key: string]: {new(...args: any[]): HTMLElement} } export type RegisterOptions = { soft: boolean upgrade: boolean }