import type { PendingRender } from "../dom/queue";
import type { Renderer as ClientRenderer, Renderer } from "../dom/renderer";
import type { AccessorProp } from "./accessor.debug";
export type Falsy = undefined | null | false | 0 | "";
export interface BranchScope extends Scope {
    [AccessorProp.StartNode]: ChildNode;
    [AccessorProp.EndNode]: ChildNode;
    [AccessorProp.ParentBranch]: BranchScope | undefined;
    [AccessorProp.AbortScopes]: Set<Scope> | undefined;
    [AccessorProp.BranchScopes]: Set<BranchScope> | undefined;
    [AccessorProp.Renderer]: ClientRenderer | string;
    [AccessorProp.AwaitCounter]: AwaitCounter | undefined;
    [AccessorProp.PendingEffects]: unknown[] | undefined;
    [AccessorProp.PlaceholderBranch]: BranchScope | undefined | 0;
    [AccessorProp.PendingRenders]: PendingRender[] | 0 | undefined;
    [AccessorProp.DetachedAwait]: Renderer | 0 | undefined;
    [AccessorProp.PendingScopes]: Scope[] | void;
}
export interface Scope {
    [AccessorProp.Owner]: Scope | undefined;
    [AccessorProp.Global]: Record<string, unknown>;
    [AccessorProp.Id]: number;
    [AccessorProp.Gen]: number;
    [AccessorProp.AbortControllers]: Record<string | number, AbortController | void> | undefined;
    [AccessorProp.ClosestBranch]: BranchScope | undefined;
    [AccessorProp.ClosestBranchId]: number | undefined;
    [x: `___${string}`]: never;
    [x: string | number]: any;
}
export declare enum ResumeSymbol {
    Node = "*",
    BranchStart = "[",
    BranchEnd = "]",
    BranchEndNativeTag = "'",
    BranchEndSingleNode = "|",
    BranchEndOnlyChildInParent = ")",
    BranchEndSingleNodeOnlyChildInParent = "}"
}
export interface AwaitCounter {
    m?: (effects: unknown[]) => unknown[];
    i: number;
    c: () => void | 1;
}
export { AccessorPrefix, AccessorProp, ClosureSignalProp, PendingRenderProp, RendererProp, } from "./accessor.debug";
export declare enum NodeType {
    Element = 1,
    Text = 3,
    Comment = 8,
    DocumentFragment = 11
}
export declare enum WalkCode {
    Get = 32,
    Inside = 36,
    Replace = 37,
    EndChild = 38,
    BeginChild = 47,
    BeginChildWithVar = 48,
    DynamicTagWithVar = 49,
    Next = 67,
    NextEnd = 91,
    Over = 97,
    OverEnd = 106,
    Out = 107,
    OutEnd = 116,
    Multiplier = 117,
    MultiplierEnd = 126
}
export declare enum WalkRangeSize {
    Next = 20,// 67 through 91
    Over = 10,// 97 through 106
    Out = 10,// 107 through 116
    Multiplier = 10
}
export type Accessor = string;
export type EncodedAccessor = number | string;
export interface $Global {
    [x: PropertyKey]: unknown;
    signal?: AbortSignal;
    cspNonce?: string;
    renderId?: string;
    runtimeId?: string;
}
export interface Input {
    [x: PropertyKey]: unknown;
}
export interface TemplateInput extends Input {
    $global?: $Global;
}
export interface Template {
    mount(input: Input, reference: Node, position?: InsertPosition): MountedTemplate;
    render(input?: Input): RenderedTemplate;
}
export interface MountedTemplate {
    value: unknown;
    update(input: unknown): void;
    destroy(): void;
}
export type RenderedTemplate = PromiseLike<string> & AsyncIterable<string> & {
    toReadable(): ReadableStream<Uint8Array<ArrayBufferLike>>;
};
export declare enum ControlledType {
    InputChecked = 0,
    InputCheckedValue = 1,
    InputValue = 2,
    SelectValue = 3,
    DetailsOrDialogOpen = 4,
    None = 5
}
