import { Template } from '@tiny-lit/core'; export declare type Constructor = new (...args: any[]) => T; export interface Element { state: any; render(): Template | null; update(): void; setState(nextState: object | Function, callback?: Function): void; renderCallbacks: Array; afterRender?: Function; renderRoot: HTMLElement | ShadowRoot; } export interface CustomElement { connectedCallback?(): void; disconnectedCallback?(): void; adoptedCallback?(): void; attributeChangedCallback?(name: string, oldValue: string, newValue: string): void; observedAttributes?: Array; } export declare type PropertyDescriptor = { type: Function; onChange?: Function; }; export declare type ElementProperties = { [P in keyof T]?: T[P]; }; export declare type AttributeMap = Map; export declare const PROPS: unique symbol; export declare const ATTRS: unique symbol;