import { Queue, type Computed, type Effect } from "./core/index.js";
import type { Signal } from "./core/index.js";
export interface BoundaryComputed<T> extends Computed<T> {
    _propagationMask: number;
}
type RevealSlot = CollectionQueue | RevealController;
type BoolAccessor = () => boolean;
export declare class RevealController {
    _togetherAccessor: BoolAccessor;
    _collapsedAccessor: BoolAccessor;
    _slots: RevealSlot[];
    _parentController?: RevealController;
    _disabled: Signal<boolean>;
    _collapsed: Signal<boolean>;
    _ready: boolean;
    _evaluating: boolean;
    constructor(together: BoolAccessor, collapsed: BoolAccessor);
    _forEachOwnedSlot(fn: (slot: RevealSlot) => boolean | void): boolean;
    isReady(): boolean;
    register(slot: RevealSlot): void;
    unregister(slot: RevealSlot): void;
    evaluate(disabledOverride?: boolean, collapsedOverride?: boolean): void;
}
export declare class CollectionQueue extends Queue {
    _collectionType: number;
    _sources: Set<Computed<any>>;
    _tree?: BoundaryComputed<any>;
    _pending: boolean;
    _disabled: Signal<boolean>;
    _collapsed: Signal<boolean>;
    _revealController?: RevealController;
    _initialized: boolean;
    _onFn: (() => any) | undefined;
    _prevOn: any;
    constructor(type: number);
    run(type: number): void;
    notify(node: Effect<any>, type: number, flags: number, error?: any): boolean;
    checkSources(): void;
}
export declare function createLoadingBoundary(fn: () => any, fallback: () => any, options?: {
    on?: () => any;
}): import("./signals.js").Accessor<unknown>;
export declare function createErrorBoundary<U>(fn: () => any, fallback: (error: unknown, reset: () => void) => U): import("./signals.js").Accessor<unknown>;
export declare function createRevealOrder<T>(fn: () => T, options?: {
    together?: BoolAccessor;
    collapsed?: BoolAccessor;
}): T;
export declare function flatten(children: any, options?: {
    skipNonRendered?: boolean;
    doNotUnwrap?: boolean;
}): any;
export {};
