import '../../../globals.js';
import StrictOmit from '../../../phet-core/js/types/StrictOmit.js';
import { DeviceContext, LinearEdge, PolygonFilterType, RasterizationOptions, RenderableFace, RenderProgram, TwoPassConfig, TwoPassInitialRenderableFace } from '../imports.js';
/**
 * TODO: doc
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
export type FaceRasterizerOptions = {
    deviceContext: DeviceContext;
    supportsGridFiltering?: boolean;
    supportsBilinear?: boolean;
    supportsMitchellNetravali?: boolean;
    maxRenderableFaces?: number;
    maxInitialEdges?: number;
    maxRenderProgramInstructions?: number;
    maxCoarseRenderableFaces?: number;
    maxCoarseEdges?: number;
    maxFineFaces?: number;
    maxFineEdges?: number;
    maxBins?: number;
};
export declare const FACE_RASTERIZER_DEFAULT_OPTIONS: {
    readonly supportsGridFiltering: true;
    readonly supportsBilinear: true;
    readonly supportsMitchellNetravali: false;
    readonly maxRenderableFaces: number;
    readonly maxInitialEdges: number;
    readonly maxRenderProgramInstructions: number;
    readonly maxCoarseRenderableFaces: number;
    readonly maxCoarseEdges: number;
    readonly maxFineFaces: number;
    readonly maxFineEdges: number;
    readonly maxBins: number;
};
export type FaceRasterizerRunOptions = {
    renderableFaces: RenderableFace[];
    canvasContext: GPUCanvasContext;
    rasterWidth: number;
    rasterHeight: number;
    colorSpace?: 'srgb' | 'display-p3';
    filterType?: PolygonFilterType;
    filterScale?: number;
};
export declare const FACE_RASTERIZER_RUN_DEFAULT_OPTIONS: {
    readonly filterType: PolygonFilterType.Box;
    readonly filterScale: 1;
    readonly colorSpace: "srgb";
};
export type FaceRasterizerExecutionInfo = {
    config: TwoPassConfig;
    numTiles: number;
    numBins: number;
    initialRenderableFaces: TwoPassInitialRenderableFace[];
    initialEdges: LinearEdge[];
    renderProgramInstructions: number[];
    textureBlit: [GPUTextureView, GPUTextureView] | null;
};
export default class FaceRasterizer {
    private readonly deviceContext;
    private readonly supportsGridFiltering;
    private readonly supportsBilinear;
    private readonly supportsMitchellNetravali;
    private readonly maxRenderableFaces;
    private readonly maxInitialEdges;
    private readonly maxRenderProgramInstructions;
    private readonly maxCoarseRenderableFaces;
    private readonly maxCoarseEdges;
    private readonly maxFineFaces;
    private readonly maxFineEdges;
    private readonly maxBins;
    private readonly initializationPromise;
    private readonly outputSlot;
    private procedure;
    constructor(providedOptions: FaceRasterizerOptions);
    private initialize;
    getCanvasContext(canvas: HTMLCanvasElement, colorSpace: 'srgb' | 'display-p3'): GPUCanvasContext;
    private static getFilterExpansion;
    runRenderProgram(program: RenderProgram, providedRunOptions: StrictOmit<FaceRasterizerRunOptions, 'renderableFaces'>, rasterizeOptions?: RasterizationOptions): Promise<void>;
    run(providedOptions: FaceRasterizerRunOptions): Promise<void>;
    dispose(): void;
}
//# sourceMappingURL=FaceRasterizer.d.ts.map