import { html, svg } from 'lit-html';
import { directive } from 'lit-html/directive.js';
import { asyncAppend, AsyncAppendDirective } from 'lit-html/directives/async-append.js';
import { asyncReplace, AsyncReplaceDirective } from 'lit-html/directives/async-replace.js';
import { cache, CacheDirective } from 'lit-html/directives/cache.js';
import { guard, GuardDirective } from 'lit-html/directives/guard.js';
import { ifDefined } from 'lit-html/directives/if-defined.js';
import { repeat, RepeatDirective } from 'lit-html/directives/repeat.js';
import { unsafeHTML, UnsafeHTMLDirective } from 'lit-html/directives/unsafe-html.js';
import { until, UntilDirective } from 'lit-html/directives/until.js';
import { live, LiveDirective } from 'lit-html/directives/live.js';
import { styleMap, StyleMapDirective } from 'lit-html/directives/style-map.js';
import { classMap, ClassMapDirective } from 'lit-html/directives/class-map.js';
import { when } from 'lit-html/directives/when.js';
import { choose } from 'lit-html/directives/choose.js';
import { map } from 'lit-html/directives/map.js';
import { join } from 'lit-html/directives/join.js';
import { range } from 'lit-html/directives/range.js';
import { templateContent, TemplateContentDirective } from 'lit-html/directives/template-content.js';
import { unsafeSVG, UnsafeSVGDirective } from 'lit-html/directives/unsafe-svg.js';
import { ref, RefDirective, Ref, createRef } from 'lit-html/directives/ref.js';
import { StyleMap } from './StyleMap';
import detach from './Detach';
import PointerAction from './PointerAction';
import { schedule } from './helpers';
import Action from './Action';
import { Slots } from './Slots';
import helpers from './helpers';
import * as lithtml from 'lit-html';
export * from 'lit-html/directive.js';
export * from 'lit-html';
export { AsyncAppendDirective, AsyncReplaceDirective, CacheDirective, GuardDirective, RepeatDirective, UnsafeHTMLDirective, UntilDirective, LiveDirective, StyleMapDirective, ClassMapDirective, TemplateContentDirective, UnsafeSVGDirective, RefDirective, Ref, createRef, };
type htmlResult = lithtml.TemplateResult | lithtml.TemplateResult[] | lithtml.SVGTemplateResult | lithtml.SVGTemplateResult[] | undefined | null;
interface ClassInfo {
[name: string]: string | boolean | number;
}
interface StyleInfo {
[name: string]: string | undefined | null;
}
type UpdateTemplate = (props: unknown) => htmlResult;
type Component = (vido: AnyVido, props: unknown) => UpdateTemplate;
interface ComponentInstance {
instance: string;
update: () => Promise;
destroy: () => void;
change: (props: unknown, options?: any) => void;
html: (props?: unknown) => lithtml.TemplateResult;
vidoInstance: AnyVido;
}
interface CreateAppConfig {
element: HTMLElement;
component: Component;
props: unknown;
}
type Callback = () => void;
type OnChangeCallback = (props: any, options: any) => void;
type GetPropsFn = (arg: unknown) => unknown | any;
interface vido {
instance: string;
name: string;
state: State;
api: Api;
html: typeof html;
lithtml: typeof lithtml;
svg: typeof svg;
onDestroy: (callback: Callback) => void;
onChange: (callback: OnChangeCallback) => void;
update: (callback?: any) => Promise;
createComponent: (component: Component, props?: unknown, content?: unknown) => ComponentInstance;
createApp: (config: CreateAppConfig) => ComponentInstance;
reuseComponents: (currentComponents: ComponentInstance[], dataArray: unknown[], getProps: GetPropsFn, component: Component, leaveTail?: boolean, debug?: boolean) => void;
getElement: (callback: (element: Element) => void) => void;
directive: typeof directive;
asyncAppend: typeof asyncAppend;
asyncReplace: typeof asyncReplace;
cache: typeof cache;
classMap: typeof classMap;
styleMap: typeof styleMap;
StyleMap: typeof StyleMap;
guard: typeof guard;
live: typeof live;
ifDefined: typeof ifDefined;
repeat: typeof repeat;
unsafeHTML: typeof unsafeHTML;
until: typeof until;
schedule: typeof schedule;
detach: typeof detach;
when: typeof when;
choose: typeof choose;
map: typeof map;
join: typeof join;
range: typeof range;
templateContent: typeof templateContent;
unsafeSVG: typeof unsafeSVG;
ref: typeof ref;
PointerAction: typeof PointerAction;
Action: typeof Action;
Slots: typeof Slots;
Actions?: any;
}
type AnyVido = vido;
declare function Vido(state: State, api: Api): vido;
declare namespace Vido {
var lithtml: typeof import("lit-html");
var Action: typeof import("./Action").default;
var Directive: typeof import("lit-html/directive.js").Directive;
var StyleMap: typeof import("./StyleMap").StyleMap;
var PointerAction: typeof import("./PointerAction").default;
var Slots: typeof import("./Slots").Slots;
var directives: VidoDirectives;
}
export default Vido;
export interface VidoDirectives {
schedule: typeof schedule;
detach: typeof detach;
styleMap: typeof styleMap;
classMap: typeof classMap;
asyncAppend: typeof asyncAppend;
asyncReplace: typeof asyncReplace;
cache: typeof cache;
guard: typeof guard;
live: typeof live;
ifDefined: typeof ifDefined;
repeat: typeof repeat;
unsafeHTML: typeof unsafeHTML;
until: typeof until;
when: typeof when;
choose: typeof choose;
map: typeof map;
join: typeof join;
range: typeof range;
templateContent: typeof templateContent;
unsafeSVG: typeof unsafeSVG;
ref: typeof ref;
}
declare const lit: typeof lithtml;
export { vido, lithtml, lit, Action, schedule, detach, styleMap, StyleMap, classMap, PointerAction, asyncAppend, asyncReplace, cache, guard, ifDefined, repeat, unsafeHTML, until, when, choose, map, join, range, templateContent, unsafeSVG, ref, Slots, helpers, ClassInfo, StyleInfo, htmlResult, UpdateTemplate, Component, ComponentInstance, CreateAppConfig, OnChangeCallback, Callback, GetPropsFn, AnyVido, };
//# sourceMappingURL=vido.d.ts.map