import { type EncodedAccessor, type Scope, type Template } from "../common/types";
import { type Renderer, type SetupFn } from "./renderer";
import type { Signal } from "./signals";
interface LoadModule {
    _: [template: string, walks: string, setup: SetupFn];
}
interface LoadSignal {
    _: Signal;
}
export interface LoadTrigger {
    <T>(load: () => Promise<T>): () => Promise<T>;
}
export declare const _load_template: (id: string, load: () => Promise<Renderer>) => Template & Renderer;
export declare const _load_setup: (nodeAccessor: EncodedAccessor, childScopeAccessor: EncodedAccessor, load: () => Promise<LoadModule>) => (owner: Scope) => void;
export declare const _load_signal: (load: () => Promise<LoadSignal>) => Signal;
export declare function _load_visible_trigger(selector: string, options?: IntersectionObserverInit): LoadTrigger;
export declare function _load_idle_trigger(options?: {
    timeout?: number;
}): LoadTrigger;
export declare function _load_event_trigger(event: string, selector: string): LoadTrigger;
export declare function _load_media_trigger(query: string): LoadTrigger;
export declare function _load_race_trigger(...triggers: LoadTrigger[]): LoadTrigger;
export {};
