import type { Maybe, Path } from "@thi.ng/api";
import type { IComponent, IMountWithState, NumOrElement } from "./api.js";
/**
* Takes an ES `AsyncIterable` and creates a simple component wrapper for its
* asynchronously produced values.
*
* @remarks
* If given an {@link IMountWithState} component, new values are applied via the
* `.update()` life cycle value. If given a `tag` and `attribs`, a corresponding
* element wrapper component will be created automatically (using
* {@link $wrapText} and incoming values will be applied using {@link $text}
* (aka setting `el.innerText`).
*
* @example
* ```ts
* import { $async } from "@thi.ng/rdom";
* import { range } from "@thi.ng/transducers-async";
*
* // infinite 1Hz counter
* const counter = range(1000);
*
* // wrapper component which updates whenever counter produces new values
* $async(counter, "div", { class: "red" }).mount(document.body);
* ```
*
* @param src -
* @param inner -
*/
export declare function $async<T>(src: AsyncIterable<T>, inner: IMountWithState<T>): IComponent<T>;
export declare function $async(src: AsyncIterable<any>, tag: string, attribs?: any): IComponent;
export declare class $Async<T = any> {
protected src: AsyncIterable<T>;
protected inner: IMountWithState<Maybe<T>>;
el?: Element;
constructor(src: AsyncIterable<T>, inner: IMountWithState<Maybe<T>>);
mount(parent: ParentNode, index?: NumOrElement): Promise<Element>;
unmount(): Promise<void>;
update(x: T): void;
}
export declare const $asyncA: (src: AsyncIterable<any>, comp: IComponent, path: Path) => Promise<void>;
//# sourceMappingURL=async.d.ts.map