import type { RenderOptions } from 'lit';
import { AsyncDirective, type DirectiveClass, type DirectiveResult, type PartInfo } from 'lit/async-directive.js';
export type AsyncDirectiveArgs = PartInfo & {
    element: HTMLElement;
    name: string;
    options: RenderOptions;
};
/**
 * The base class for all async directives.
 *
 * @public
 * @abstract
 */
export declare abstract class AsyncDirectiveBase extends AsyncDirective {
    private readonly _internals;
    /**
     * Constructs a new instance of the `AsyncDirectiveBase` class.
     *
     * @protected
     */
    protected constructor(args: AsyncDirectiveArgs);
    /**
     * Returns the `internals` property.
     *
     * @protected
     * @readonly
     */
    protected get internals(): Omit<AsyncDirectiveArgs, 'part'>;
}
export { PartType } from 'lit/async-directive.js';
/**
 * Composes a async directive.
 */
export declare function compose<TDirective extends DirectiveClass>(c: TDirective): (...values: Parameters<InstanceType<TDirective>['render']>) => DirectiveResult<TDirective>;
//# sourceMappingURL=AsyncDirectiveBase.d.ts.map