export * from './domImpl';
export * from './domComponent';
export * from './domComputed';
export * from './domDispose';
export * from './domForEach';
export * from './domMethods';
export * from './domevent';
import * as _domComponent from './domComponent';
import * as _domComputed from './domComputed';
import * as _domDispose from './domDispose';
import * as _domForEach from './domForEach';
import * as _domImpl from './domImpl';
import * as _domMethods from './domMethods';
import * as domevent from './domevent';
import { IDomArgs, TagElem, TagName } from './domImpl';
/**
* `dom()` provides a way to build a DOM tree easily.
*
* The first argument is a string consisting of a lowercase tag name (e.g. `"div"`), with optional
* `"#foo"` suffix to add the ID `'foo'`, and zero or more `".bar"` suffixes to add a CSS class
* `'bar'`.
*
* The rest of the arguments are optional and may be any number, of these types:
*
* @param Nodes - become children of the created element
* @param strings - become text node children
* @param objects - Literal objects to set string attributes on the element.
* E.g. `{title: "foo"}`.
* @param null - The values `null` and `undefined` values are ignored completely.
* @param Arrays - flattened with each item processed recursively
* @param functions - called with the element being built as the argument, for a chance to modify
* the element as it's being created. Return values are processed recursively.
* @param functions - "dom methods" are a expressions such as `dom.attr('href', url)` or
* `dom.hide(obs)`, which are special cases of the "functions" category.
*
* @example
* ```ts
* import {dom} from 'grainjs';
* dom('a', {href: url, className: 'myclass'}, 'Hello ', dom('strong', 'world'));
* ```
* creates HTML element `Hello world`.
*
* @example
* Here's an example equivalent to the one above, using dom methods `dom.cls`, `dom.attr`,
* `dom.text`. In reality, these methods are useful with observable values rather than constant
* strings.
* ```ts
* dom('a', dom.attr('href', url), dom.cls('myclass'),
* dom.text('Hello '), dom('strong', dom.text('world')));
* ```
*
* @see [DOM & Observables](/basics).
*/
export declare function dom(tagString: Tag, ...args: IDomArgs>): TagElem;
export declare namespace dom {
const svg: typeof _domImpl.svg;
const frag: typeof _domImpl.frag;
const update: typeof _domImpl.update;
const find: typeof _domImpl.find;
const findAll: typeof _domImpl.findAll;
const domDispose: typeof _domDispose.domDispose;
const onDisposeElem: typeof _domDispose.onDisposeElem;
const onDispose: typeof _domDispose.onDispose;
const autoDisposeElem: typeof _domDispose.autoDisposeElem;
const autoDispose: typeof _domDispose.autoDispose;
const attrsElem: typeof _domMethods.attrsElem;
const attrs: typeof _domMethods.attrs;
const attrElem: typeof _domMethods.attrElem;
const attr: typeof _domMethods.attr;
const boolAttrElem: typeof _domMethods.boolAttrElem;
const boolAttr: typeof _domMethods.boolAttr;
const textElem: typeof _domMethods.textElem;
const text: typeof _domMethods.text;
const styleElem: typeof _domMethods.styleElem;
const style: typeof _domMethods.style;
const propElem: typeof _domMethods.propElem;
const prop: typeof _domMethods.prop;
const showElem: typeof _domMethods.showElem;
const show: typeof _domMethods.show;
const hideElem: typeof _domMethods.hideElem;
const hide: typeof _domMethods.hide;
const clsElem: typeof _domMethods.clsElem;
const cls: typeof _domMethods.cls;
const clsPrefix: typeof _domMethods.clsPrefix;
const dataElem: typeof _domMethods.dataElem;
const data: typeof _domMethods.data;
const getData: typeof _domMethods.getData;
const replaceContent: typeof _domComputed.replaceContent;
const domComputed: typeof _domComputed.domComputed;
const domComputedOwned: typeof _domComputed.domComputedOwned;
const maybe: typeof _domComputed.maybe;
const maybeOwned: typeof _domComputed.maybeOwned;
const forEach: typeof _domForEach.forEach;
const create: typeof _domComponent.create;
const onElem: typeof domevent.onElem;
const on: typeof domevent.on;
const onMatchElem: typeof domevent.onMatchElem;
const onMatch: typeof domevent.onMatch;
const onKeyElem: typeof domevent.onKeyElem;
const onKeyPress: typeof domevent.onKeyPress;
const onKeyDown: typeof domevent.onKeyDown;
}