/** @packageDocumentation
 * @module WebGL
 */
import { Matrix4d, Point3d, Transform, Vector3d } from "@itwin/core-geometry";
import { Frustum } from "@itwin/core-common";
import { UniformHandle } from "./UniformHandle";
import { Matrix4 } from "./Matrix";
/** @internal */
export declare const enum FrustumUniformType {
    TwoDee = 0,
    Orthographic = 1,
    Perspective = 2
}
/** @internal */
export declare const enum Plane {
    kTop = 0,
    kBottom = 1,
    kLeft = 2,
    kRight = 3
}
/** Represents a Target's frustum for use in glsl as a pair of uniforms.
 * Do not modify fields of exposed objects directly. e.g., do not directly manipulate the projection or view matrices - use the appropriate APIs.
 * @internal
 */
export declare class FrustumUniforms {
    readonly planFrustum: Frustum;
    private _planFraction;
    private readonly _nearPlaneCenter;
    readonly viewMatrix: Transform;
    readonly projectionMatrix: Matrix4d;
    private readonly _worldUpVector;
    private readonly _viewUpVector;
    private readonly _planeData;
    private readonly _frustumData;
    readonly projectionMatrix32: Matrix4;
    private readonly _logZData;
    private readonly _viewUpVector32;
    syncKey: number;
    private readonly _scratch;
    constructor();
    bindProjectionMatrix(uniform: UniformHandle): void;
    bindUpVector(uniform: UniformHandle): void;
    get planes(): Float32Array;
    get frustum(): Float32Array;
    get nearPlane(): number;
    get farPlane(): number;
    get type(): FrustumUniformType;
    get is2d(): boolean;
    get planFraction(): number;
    get logZ(): Float32Array;
    changeFrustum(newFrustum: Frustum, newFraction: number, is3d: boolean): void;
    changeProjectionMatrix(newMatrix: Matrix4d): void;
    protected setPlanes(top: number, bottom: number, left: number, right: number): void;
    protected setFrustum(nearPlane: number, farPlane: number, type: FrustumUniformType): void;
}
/** @internal */
export declare function fromSumOf(p: Point3d, v: Vector3d, scale: number, out?: Point3d): Point3d;
//# sourceMappingURL=FrustumUniforms.d.ts.map