import { Content } from "@benev/slate";
import { Task } from "./parts/task.js";
import { LoadingOperation } from "./parts/operation.js";
export declare class Loader {
    #private;
    render: () => Content;
    static transitionMs: number;
    /**
     * curtain state
     *  - 0 -- loading screen absent
     *  - 1 -- loading screen rendered invisible (fading)
     *  - 2 -- loading screen rendered visible (fading)
     *  - 3 -- loading screen rendered visible (stable)
     */
    curtain: import("@benev/slate").Signal<number>;
    /**
     * indicates which part of a loading operation we're in
     */
    stage: import("@benev/slate").Signal<"none" | "fade-in" | "loading" | "fade-out">;
    /** loading tasks underway */
    operation: import("@benev/slate").Signal<LoadingOperation | undefined>;
    constructor(render: () => Content);
    load(tasks: Task[], challenger: () => Content): Promise<undefined>;
}
