/**
 * assertSwiftShader — verify Chrome's WebGL is rendered by SwiftShader.
 *
 * Distributed renders pixel-lock on the GPU backend: hardware GL is bitwise
 * unstable across worker machines (different drivers, driver versions, GL
 * extension sets, even differing fp32 rounding on the same vendor). Chunk
 * workers launch Chrome with `--use-gl=swiftshader --use-angle=swiftshader`
 * so every worker uses the same pure-software GL implementation.
 *
 * Those Chrome flags are advisory: a misconfigured base image, a missing
 * SwiftShader library, or a `chrome://gpu` blocklist override can silently
 * downgrade to system GL. The distributed pipeline cannot detect the
 * downgrade by sampling pixels (one machine = one render), so we read
 * `chrome://gpu` directly after launch and refuse to render if the active
 * GL renderer is anything other than SwiftShader.
 */
import type { Page } from "puppeteer-core";
/**
 * Error code classifying this failure as non-retryable for distributed
 * workflow adapters — a downgraded GPU on a worker will not heal on retry.
 */
export declare const BROWSER_GPU_NOT_SOFTWARE = "BROWSER_GPU_NOT_SOFTWARE";
/**
 * Error thrown when chrome://gpu reports a non-SwiftShader WebGL backend.
 *
 * Carries a `code` property so the adapter can match on it without parsing
 * the message string — Temporal/Step Functions retry policies key off the
 * code, not the message.
 */
export declare class SwiftShaderAssertionError extends Error {
    readonly code: typeof BROWSER_GPU_NOT_SOFTWARE;
    readonly vendor: string;
    readonly renderer: string;
    constructor(message: string, vendor: string, renderer: string);
}
interface WebGlInfo {
    vendor: string;
    renderer: string;
}
/**
 * Read the WebGL vendor/renderer strings from a live `chrome://gpu` page.
 *
 * Extracted from `assertSwiftShader` so tests can stub the navigation +
 * extraction step. Returns the raw values; callers decide how to interpret
 * them. Both fields are best-effort — Chrome returns empty strings if the
 * GPU info table hasn't populated yet, which the caller treats as failure.
 */
export declare function readWebGlVendorInfo(page: Page): Promise<WebGlInfo>;
/**
 * Validate that the active WebGL renderer is SwiftShader. Throws
 * `SwiftShaderAssertionError` otherwise.
 *
 * Pass an optional `readInfo` override for tests that don't have a real
 * Puppeteer `Page`. The default implementation navigates to `chrome://gpu`
 * and parses the GL_VENDOR / GL_RENDERER rows.
 */
export declare function assertSwiftShader(page: Page, readInfo?: (page: Page) => Promise<WebGlInfo>): Promise<void>;
export {};
//# sourceMappingURL=assertSwiftShader.d.ts.map