import Workflow from './workflow.js';
import type Context from '../context/context.js';
import type { GlyphFeature, GlyphFilterUniforms, GlyphFilterWorkflow as GlyphFilterWorkflowSpec } from './workflow.spec.js';
/** Glyph Filter Feature is a standalone glyph filter compute storage unit that can be processed by the GPU */
export default class GlyphFilterWorkflow extends Workflow implements GlyphFilterWorkflowSpec {
    #private;
    label: "glyphFilter";
    quadTexture: WebGLTexture;
    resultTexture: WebGLTexture;
    quadFramebuffer: WebGLFramebuffer;
    resultFramebuffer: WebGLFramebuffer;
    indexOffset: number;
    mode: 1 | 2;
    uniforms: {
        [key in GlyphFilterUniforms]: WebGLUniformLocation;
    };
    /** @param context - The WebGL(1|2) context */
    constructor(context: Context);
    /** Delete the glyph filter workflow */
    delete(): void;
    /** Resize the glyph filter workflow */
    resize(): void;
    /**
     * Set the draw mode
     * @param mode - the draw mode
     */
    setMode(mode: number): void;
    /** Bind the resultant computed texture to a uniform texture that can be accessed by the glyph shaders */
    bindResultTexture(): void;
    /** Bind the quad framebuffer */
    bindQuadFrameBuffer(): void;
    /** Bind the result framebuffer */
    bindResultFramebuffer(): void;
    /**
     * Draw the glyph filter features to the compute texture
     * @param feature - feature to draw
     * @param _interactive - whether or not the feature is interactive
     */
    draw(feature: GlyphFeature, _interactive?: boolean): void;
}
