/** @packageDocumentation
 * @module WebGL
 */
import { BeEvent } from "@itwin/core-bentley";
import { Point3d, Vector3d } from "@itwin/core-geometry";
import { Viewport } from "../../Viewport";
import { FrameBuffer, FrameBufferStack } from "./FrameBuffer";
import { FrustumUniformType } from "./FrustumUniforms";
import { RenderCommands } from "./RenderCommands";
import { CompositeFlags } from "./RenderFlags";
import { System } from "./System";
/** @internal */
export interface FrameRenderData {
    commands: RenderCommands;
    needComposite: boolean;
    compositeFlags: CompositeFlags;
    fbo: FrameBuffer;
    frameBufferStack: FrameBufferStack;
}
/** @internal */
export interface FrameBeforeRenderData {
    renderSystem: System;
    viewport: Viewport;
    setSceneNeedRedraw: (redraw: boolean) => void;
}
/** @internal */
export interface FrameCameraFrustumData {
    type: FrustumUniformType;
    left: number;
    right: number;
    bottom: number;
    top: number;
    front: number;
    back: number;
}
/** @internal */
export interface FrameCameraViewData {
    cameraPosition: Point3d;
    viewX: Vector3d;
    viewY: Vector3d;
    viewZ: Vector3d;
}
/** @internal */
export declare class IModelFrameLifecycle {
    static readonly onBeforeRender: BeEvent<(data: FrameBeforeRenderData) => void>;
    static readonly onRenderOpaque: BeEvent<(data: FrameRenderData) => void>;
    static readonly onChangeCameraFrustum: BeEvent<(data: FrameCameraFrustumData) => void>;
    static readonly onChangeCameraView: BeEvent<(data: FrameCameraViewData) => void>;
}
//# sourceMappingURL=IModelFrameLifecycle.d.ts.map