/** * How long the iframe stays at zero size before it is grown. * * The window this has to hit: long enough for the game to boot and construct its renderer against * the 0-size viewport (which floors it to 1x1), short enough that the grow still lands before the * first rendered frame — that ordering is what makes the engine's size self-heal call * onWindowResize while the post chain is still uninitialised. Too early and there is no renderer * to mis-size; too late and the first frame has already rendered and the hazard is gone. */ export declare const SMOKE_FRAME_GROW_MS = 400; /** * A local page that loads the published bundle the way the portal does. * * The portal embeds a published game in an iframe, and a cold start there begins with a 0-size * viewport. Three of the four defects found in Phase 5's manual gate were invisible to a direct * navigation: * * - a wrong Content-Type makes the iframe DOWNLOAD instead of render, so no canvas ever appears * and there is no console error at all; * - the bloom `invSize` crash needs the renderer to be resized before its first rendered frame, * which only happens when the viewport diverges from the renderer's size; * - a canvas that is never claimed by a renderer keeps the 300x150 HTML default. * * Loading the URL directly reproduces none of the first two. This does. */ export declare function renderSmokeHarness(publishedUrl: string): string;