import * as THREE from 'three';
import '../../chipper/js/browser/initialize-globals.js';
import '../../globals.js';
/**
 * Base view for all "show a single molecule in the center" screens
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import Bounds2 from '../../dot/js/Bounds2.js';
import Vector3 from '../../dot/js/Vector3.js';
import { Color } from '../../scenery/js/imports.js';
declare const ThreeUtils: {
    /**
     * Converts a Vector3 to a THREE.Vector3
     */
    vectorToThree(vector: Vector3): THREE.Vector3;
    /**
     * Converts a THREE.Vector3 to a Vector3
     */
    threeToVector(vector: THREE.Vector3): Vector3;
    /**
     * Converts a Color to a THREE.Color
     */
    colorToThree(color: Color): THREE.Color;
    /**
     * Returns an array of [ x, y, z, ... ] vertices for a quad pointed towards the camera.
     *
     * @param bounds2 - x,y
     * @param z
     */
    frontVertices(bounds2: Bounds2, z: number): Float32Array;
    /**
     * Returns an array of [ x, y, z, ... ] vertices for a quad pointed up.
     *
     * @param bounds2 - x,z
     * @param y
     */
    topVertices(bounds2: Bounds2, y: number): Float32Array;
    /**
     * Returns an array of [ x, y, z, ... ] vertices for a quad pointed towards the right.
     *
     * @param bounds2 - z,y
     * @param x
     */
    rightVertices(bounds2: Bounds2, x: number): Float32Array;
    /**
     * Returns an array of [ x, y, z, ... ] vertices for a quad pointed towards the left.
     *
     * @param Bounds2 bounds2 - z,y
     * @param number x
     */
    leftVertices(bounds2: Bounds2, x: number): Float32Array;
    /**
     * Writes a single triangle into a buffer, returning the new index location. Assumes vertices in counterclockwise
     * order.
     *
     * Writes 9 entries into the array.
     *
     * @returns - The index for the next write
     */
    writeTriangle(array: Float32Array | Float64Array, index: number, x0: number, y0: number, z0: number, x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): number;
    /**
     * Writes a single quad into a buffer, returning the new index location. Assumes verties in counterclockwise order.
     *
     * Writes 18 entries into the array.
     *
     * @returns - The index for the next write
     */
    writeQuad(array: Float32Array | Float64Array, index: number, x0: number, y0: number, z0: number, x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, x3: number, y3: number, z3: number): number;
    /**
     * Writes a single front-facing quad into a buffer, returning the new index location. Assumes verties in
     * counterclockwise order.
     *
     * Writes 18 entries into the array.
     *
     * @returns - The index for the next write
     */
    writeFrontVertices(array: Float32Array | Float64Array, index: number, bounds2: Bounds2, z: number): number;
    /**
     * Writes a single up-facing quad into a buffer, returning the new index location. Assumes verties in
     * counterclockwise order.
     *
     * Writes 18 entries into the array.
     *
     * @param array
     * @param index
     * @param bounds2 - x,z
     * @param y
     * @returns - The index for the next write
     */
    writeTopVertices(array: Float32Array | Float64Array, index: number, bounds2: Bounds2, y: number): number;
    /**
     * Writes a single right-facing quad into a buffer, returning the new index location. Assumes verties in
     * counterclockwise order.
     *
     * Writes 18 entries into the array.
     *
     * @param array
     * @param index
     * @param bounds2 - z,y
     * @param x
     * @returns - The index for the next write
     */
    writeRightVertices(array: Float32Array | Float64Array, index: number, bounds2: Bounds2, x: number): number;
    /**
     * Writes a single left-facing quad into a buffer, returning the new index location. Assumes verties in
     * counterclockwise order.
     *
     * Writes 18 entries into the array.
     *
     * @param array
     * @param index
     * @param bounds2 - z,y
     * @param x
     * @returns - The index for the next write
     */
    writeLeftVertices(array: Float32Array | Float64Array, index: number, bounds2: Bounds2, x: number): number;
    /**
     * Returns a THREE.TextureLoader instance (using a singleton so we don't create more than we need).
     */
    readonly textureLoader: THREE.TextureLoader;
    /**
     * Returns a THREE.Texture for a given HTMLImageElement.
     */
    imageToTexture(image: HTMLImageElement, waitForLoad?: boolean): THREE.Texture;
    /**
     * Checks if webgl is enabled by the browser.
     */
    isWebGLEnabled(): boolean;
};
export default ThreeUtils;
//# sourceMappingURL=ThreeUtils.d.ts.map