import { TemplateResult, nothing } from 'lit';
export declare const renderingValue: unique symbol;
export declare const renderPage: unique symbol;
export declare const setUpdatePromise: unique symbol;
export declare const updateResolver: unique symbol;
export declare const hasPendingUpdatePromise: unique symbol;
export declare const resolveUpdatePromise: unique symbol;
type Constructor<T = object> = new (...args: any[]) => T;
export declare class RenderableMixinInterface {
    /**
     * Determines whether the initial render had run and the `firstRender()`
     * function was called.
     *
     * @default false
     */
    accessor firstRendered: boolean;
    /**
     * @type A promise resolved when the render finished.
     */
    get updateComplete(): Promise<boolean>;
    /**
     * True when rendering debouncer is running.
     */
    get rendering(): boolean;
    /**
     * Helper function to be overridden by child classes. It is called when the view
     * is rendered for the first time.
     */
    firstRender(): void;
    /**
     * A function called when the template has been rendered
     */
    updated(): void;
    /**
     * This to be used by the child classes to render page template.
     * @returns Application page template
     */
    pageTemplate(): TemplateResult | typeof nothing;
    /**
     * The main render function. Sub classes should not override this method.
     * Override `[renderPage]()` instead.
     *
     * The function calls `[renderPage]()` in a micro task so it is safe to call this
     * multiple time in the same event loop.
     */
    render(): void;
}
/**
 * Adds methods that helps with asynchronous template rendering.
 *
 * The application page content is rendered into the `#app` container.
 *
 * @mixin
 */
export declare const RenderableMixin: <T extends Constructor<any>>(superClass: T) => Constructor<RenderableMixinInterface> & T;
export {};
//# sourceMappingURL=RenderableMixin.d.ts.map