/**
 * Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 * @author David Sehnal <david.sehnal@gmail.com>
 */
import { WebGLContext } from './webgl/context';
import { GraphicsRenderObject } from './render-object';
import { Object3D } from './object3d';
import { Sphere3D } from '../mol-math/geometry';
import { GraphicsRenderable } from './renderable';
interface Scene extends Object3D {
    readonly count: number;
    readonly renderables: ReadonlyArray<GraphicsRenderable>;
    readonly boundingSphere: Sphere3D;
    readonly boundingSphereVisible: Sphere3D;
    readonly primitives: Scene.Group;
    readonly volumes: Scene.Group;
    /** Returns `true` if some visibility has changed, `false` otherwise. */
    syncVisibility: () => boolean;
    update: (objects: ArrayLike<GraphicsRenderObject> | undefined, keepBoundingSphere: boolean) => void;
    add: (o: GraphicsRenderObject) => void;
    remove: (o: GraphicsRenderObject) => void;
    commit: (maxTimeMs?: number) => boolean;
    readonly needsCommit: boolean;
    has: (o: GraphicsRenderObject) => boolean;
    clear: () => void;
    forEach: (callbackFn: (value: GraphicsRenderable, key: GraphicsRenderObject) => void) => void;
}
declare namespace Scene {
    interface Group extends Object3D {
        readonly renderables: ReadonlyArray<GraphicsRenderable>;
    }
    function create(ctx: WebGLContext): Scene;
}
export { Scene };
