/** @packageDocumentation
 * @module WebGL
 */
import { Id64String } from "@itwin/core-bentley";
import { Transform } from "@itwin/core-geometry";
import { BatchType, FeatureAppearance, FeatureAppearanceProvider, GeometryClass, HiddenLine, RealityModelDisplaySettings, ViewFlags } from "@itwin/core-common";
import { IModelConnection } from "../../IModelConnection";
import { FeatureSymbology } from "../FeatureSymbology";
import { ClipVolume } from "./ClipVolume";
import { Branch } from "./Graphic";
import { PlanarClassifier } from "./PlanarClassifier";
import { TextureDrape } from "./TextureDrape";
import { EdgeSettings } from "./EdgeSettings";
/** Options used to construct a BranchState.
 * @internal
 */
export interface BranchStateOptions {
    readonly transform: Transform;
    viewFlags: ViewFlags;
    symbologyOverrides: FeatureSymbology.Overrides;
    clipVolume?: ClipVolume;
    readonly planarClassifier?: PlanarClassifier;
    readonly secondaryClassifiers?: PlanarClassifier[];
    readonly textureDrape?: TextureDrape;
    readonly edgeSettings: EdgeSettings;
    /** Used chiefly for readPixels() to identify context of picked Ids when graphics from multiple iModels are displayed together. */
    readonly iModel?: IModelConnection;
    readonly transformFromIModel?: Transform;
    /** Whether the graphics in this branch are 2d or 3d.
     * Sometimes we draw 3d orthographic views in the context of a 2d view (e.g., sheet view attachments).
     * Currently this only affects the logic for discarding surfaces (in 2d, we relay on display priority to enforce draw order between different elements;
     * in 3d we use the pick buffers.
     */
    is3d: boolean;
    frustumScale?: {
        x: number;
        y: number;
    };
    readonly appearanceProvider?: FeatureAppearanceProvider;
    readonly realityModelDisplaySettings?: RealityModelDisplaySettings;
    forceViewCoords?: boolean;
    readonly viewAttachmentId?: Id64String;
    groupNodeId?: number;
    /** If true, the view's [DisplayStyleSettings.clipStyle]($common) will be disabled for this branch.
     * No [ClipStyle.insideColor]($common), [ClipStyle.outsideColor]($common), or [ClipStyle.intersectionStyle]($common) will be applied.
     */
    disableClipStyle?: true;
}
/**
 * Represents a branch node in the scene graph, with associated view flags and transform to be applied to
 * all sub-nodes of the branch.
 * @internal
 */
export declare class BranchState {
    private readonly _opts;
    get transform(): Transform;
    get viewFlags(): ViewFlags;
    set viewFlags(vf: ViewFlags);
    get clipVolume(): ClipVolume | undefined;
    get forceViewCoords(): boolean;
    get planarClassifier(): PlanarClassifier | undefined;
    get textureDrape(): TextureDrape | undefined;
    get edgeSettings(): EdgeSettings;
    get iModel(): IModelConnection | undefined;
    get transformFromIModel(): Transform | undefined;
    get is3d(): boolean;
    get frustumScale(): {
        x: number;
        y: number;
    };
    get appearanceProvider(): FeatureAppearanceProvider | undefined;
    get secondaryClassifiers(): PlanarClassifier[] | undefined;
    get realityModelDisplaySettings(): RealityModelDisplaySettings | undefined;
    get viewAttachmentId(): string | undefined;
    get groupNodeId(): number | undefined;
    get disableClipStyle(): true | undefined;
    get symbologyOverrides(): FeatureSymbology.Overrides;
    set symbologyOverrides(ovrs: FeatureSymbology.Overrides);
    changeRenderPlan(viewFlags: ViewFlags, is3d: boolean, hline: HiddenLine.Settings | undefined): void;
    /** Create a BranchState from a Branch. Any properties not explicitly specified by the new Branch are inherited from the previous BranchState. */
    static fromBranch(prev: BranchState, branch: Branch): BranchState;
    getFeatureAppearance(overrides: FeatureSymbology.Overrides, elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number): FeatureAppearance | undefined;
    static createForDecorations(): BranchState;
    withViewCoords(): BranchState;
    constructor(opts: BranchStateOptions);
}
//# sourceMappingURL=BranchState.d.ts.map