export type RendererTier = "webgl" | "canvas" | "dom"; export type RendererAddon = { dispose: () => void; }; /** A loader constructs + `loadAddon`s its renderer, wiring `onLoss` to the * addon's context-loss event, and throws if the renderer can't initialize. */ export type RendererLoaders = { webgl?: ((onLoss: () => void) => Promise) | undefined; canvas?: (() => Promise) | undefined; }; /** The next lower renderer tier, or null at the bottom (DOM). Pure. */ export declare function nextRendererTier(tier: RendererTier): RendererTier | null; /** * Attach the highest renderer tier at or below `prefer` that initializes, * reporting the settled tier via `onTier`. On a WebGL/canvas context loss the * loader's `onLoss` re-enters at the next tier down, so `onTier` is called again * with the downgraded tier. Returns the tier chosen on this pass. */ export declare function attachRenderer(prefer: RendererTier, loaders: RendererLoaders, onTier: (tier: RendererTier) => void): Promise;