import { BackgroundSource } from './types';
export declare class WebGLRenderer {
    readonly canvas: OffscreenCanvas;
    readonly gl: WebGL2RenderingContext;
    readonly stateUpdateProgram: WebGLProgram;
    readonly maskRefineProgram: WebGLProgram;
    readonly blurProgram: WebGLProgram;
    readonly blendProgram: WebGLProgram;
    readonly stateUpdateLocations: {
        position: number;
        texCoord: number;
        categoryTexture: WebGLUniformLocation | null;
        confidenceTexture: WebGLUniformLocation | null;
        prevStateTexture: WebGLUniformLocation | null;
        smoothingFactor: WebGLUniformLocation | null;
        smoothstepMin: WebGLUniformLocation | null;
        smoothstepMax: WebGLUniformLocation | null;
        selfieModel: WebGLUniformLocation | null;
    };
    readonly maskRefineLocations: {
        position: number;
        texCoord: number;
        maskTexture: WebGLUniformLocation | null;
        frameTexture: WebGLUniformLocation | null;
        texelSize: WebGLUniformLocation | null;
        sigmaSpatial: WebGLUniformLocation | null;
        sigmaRange: WebGLUniformLocation | null;
    };
    readonly blurLocations: {
        position: number;
        texCoord: number;
        image: WebGLUniformLocation | null;
        texelSize: WebGLUniformLocation | null;
        sigma: WebGLUniformLocation | null;
        radiusScale: WebGLUniformLocation | null;
        personMask: WebGLUniformLocation | null;
        direction: WebGLUniformLocation | null;
    };
    readonly blendLocations: {
        position: number;
        texCoord: number;
        frameTexture: WebGLUniformLocation | null;
        currentStateTexture: WebGLUniformLocation | null;
        backgroundTexture: WebGLUniformLocation | null;
        bgImageDimensions: WebGLUniformLocation | null;
        canvasDimensions: WebGLUniformLocation | null;
        borderSmooth: WebGLUniformLocation | null;
        bgBlur: WebGLUniformLocation | null;
        bgBlurRadius: WebGLUniformLocation | null;
        enabled: WebGLUniformLocation | null;
    };
    readonly positionBuffer: WebGLBuffer | null;
    readonly texCoordBuffer: WebGLBuffer | null;
    readonly storedStateTextures: (WebGLTexture | null)[];
    readonly fbo: WebGLFramebuffer | null;
    readonly refineFbo: WebGLFramebuffer | null;
    readonly refinedMaskTexture: WebGLTexture | null;
    readonly frameTexture: WebGLTexture | null;
    readonly blurTexture1: WebGLTexture | null;
    readonly blurTexture2: WebGLTexture | null;
    readonly blurFbo1: WebGLFramebuffer | null;
    readonly blurFbo2: WebGLFramebuffer | null;
    private running;
    private static readonly DEFAULT_BG_COLOR;
    private currentStateIndex;
    private backgroundRenderInfo;
    private activeBackgroundSourceIdentifier;
    constructor(canvas: OffscreenCanvas);
    private createAndLinkProgram;
    private createShader;
    private createColorTexture;
    private updateBackgroundIfNeeded;
    render(videoFrame: VideoFrame, options: {
        backgroundSource?: BackgroundSource | null;
        bgBlur: number;
        bgBlurRadius: number;
        isSelfieMode: boolean;
        segmentationOptions?: {
            smoothingFactor?: number;
            smoothstepMin?: number;
            smoothstepMax?: number;
        };
    }, categoryTexture?: WebGLTexture, confidenceTexture?: WebGLTexture): void;
    close(): void;
}
