import { IRenderableSeries3D } from "../RenderableSeries/BaseRenderableSeries3D";
import { RenderPassInfo3D } from "./RenderPassInfo3D";
/**
 * A type class to contain information about the current state of 3D Axis Cube,
 * such is Visible Range or World Dimensions.
 */
export declare type TAxisCubeState = {
    xVisibleMin: number;
    xVisibleMax: number;
    yVisibleMin: number;
    yVisibleMax: number;
    zVisibleMin: number;
    zVisibleMax: number;
    xWorldDimension: number;
    yWorldDimension: number;
    zWorldDimension: number;
};
/**
 * State object for a 3D {@link RenderableSeriesSceneEntity} that contains a set of boolean flags and other state types
 * (e.g. TAxisCubeState) that determine whether underlying graphics resources of the Scene Entity are up-to-date and reflect
 * the current state of its properties and the date it visualizes.
 */
export declare class RenderableSeriesSceneEntityState {
    private isInitialStateProperty;
    private isDataSeriesModifiedProperty;
    private isRenderableSeriesPropertyChangedProperty;
    private isAxisCubeStateChangedProperty;
    private axisCubeState;
    constructor(isInitialStateProperty?: boolean, isDataSeriesModifiedProperty?: boolean, isRenderableSeriesPropertyChangedProperty?: boolean, isAxisCubeStateChangedProperty?: boolean, axisCubeState?: TAxisCubeState);
    /**
     * Gets whether the Scene Entity is in the initial state, meaning all the underlying resources must be (re-)created.
     */
    get isInitialState(): boolean;
    /**
     * Sets whether the Scene Entity is in the initial state, meaning all the underlying resources must be (re-)created.
     */
    setInitialState(): void;
    /**
     * Gets whether the Data Series has been modified since last update.
     */
    get isDataSeriesModified(): boolean;
    /**
     * Gets whether a property of the Renderable Series has been changed since last update.
     */
    get isRenderableSeriesPropertyChanged(): boolean;
    /**
     * Sets whether a property of the Renderable Series has been changed.
     */
    setRenderableSeriesPropertyChanged(): void;
    /**
     * Gets whether an Axis Cube state has been changed since last update.
     */
    get isAxisCubeStateChanged(): boolean;
    /**
     * Checks if a state of the Renderable Series and a state of other objects in the Render Pass (e.g. Axis Cube)
     * has been changed. Sets corresponding flags, if any.
     * @param rs The Rendrable Series to check
     * @param rpi The current {@link RenderPassInfo3D} to check
     */
    validate(rs: IRenderableSeries3D, rpi: RenderPassInfo3D): boolean;
    /**
     * Resets all the state changed flags and saves the current state of Rederable Series
     * and state of other objects in the Render Pass (e.g. Axis Cube).
     * @param rs The Rendrable Series, whose state gets save
     * @param rpi The current {@link RenderPassInfo3D}, whose state gets save
     */
    reset(rs: IRenderableSeries3D, rpi: RenderPassInfo3D): void;
}
