import type { $Global, Template } from "../common/types"; import { type ServerRenderer } from "./template"; declare const kAssets: unique symbol; declare const kBlockIndex: unique symbol; declare const kDeferIndex: unique symbol; export interface VisibleTrigger { type: "visible"; selector: string; options?: { rootMargin?: string; }; } export interface IdleTrigger { type: "idle"; selector?: never; options?: { timeout?: number; }; } export interface MediaTrigger { type: "media"; selector: string; options?: never; } export interface EventTrigger { type: `on-${string}`; selector: string; options?: never; } export type LoadTrigger = VisibleTrigger | IdleTrigger | MediaTrigger | EventTrigger; type Trigger = LoadTrigger; interface Asset { id: string; triggers?: Trigger[]; } declare module "../common/types" { interface $Global { [kAssets]?: Asset[]; [kBlockIndex]?: number; [kDeferIndex]?: number; } } type AssetFlush = (g: $Global, type: "block" | "defer", asset: string) => string; export declare function withLoadAssets(renderer: ServerRenderer, assetId: string, triggers?: Trigger[]): ServerRenderer; export declare function withPageAssets(template: ServerRenderer & Template, runtime: AssetFlush, assetId: string, runtimeId?: string): Template; export declare function _flush_head(): string; export {};