import type { GlRenderer } from '../GlRenderer';
import type { GlRenderingContext } from '../types';
import { GlSystem } from '../system';
import { GlBlendMode } from './GlBlendMode';
export interface GlState {
    blend: boolean;
    offsets: boolean;
    culling: boolean;
    depthTest: boolean;
    clockwiseFrontFace: boolean;
    depthMask: boolean;
}
export declare class GlState {
    static readonly _properties: string[];
    static _init(): void;
    static for2D(): GlState;
    protected _blendMode: GlBlendMode;
    protected _polygonOffset: number;
    bitmap: number;
    get blendMode(): GlBlendMode;
    set blendMode(value: GlBlendMode);
    get polygonOffset(): number;
    set polygonOffset(value: number);
    constructor(options?: Partial<GlState>);
}
export declare class GlStateSystem extends GlSystem {
    install(renderer: GlRenderer): void;
    protected _blendEq: boolean;
    protected _setters: any[];
    boundStateBitmap: number;
    boundBlendMode?: string;
    blendModes: Record<GlBlendMode, any>;
    defaultState: GlState;
    protected _updateContext(gl: GlRenderingContext): void;
    toggle(boundPoint: number, enable: boolean): void;
    setBlend(value: boolean): void;
    setOffsets(value: boolean): void;
    setCulling(value: boolean): void;
    setDepthTest(value: boolean): void;
    setDepthMask(value: boolean): void;
    setClockwiseFrontFace(value: boolean): void;
    setBlendMode(value: GlBlendMode): void;
    setPolygonOffset(value: number, scale: number): void;
    bind(state: GlState): void;
    reset(): void;
}
