import { type Nullable } from "../../types.js";
/**
 * CubeMap information grouping all the data for each faces as well as the cubemap size.
 */
export interface CubeMapInfo {
    /**
     * The pixel array for the front face.
     * This is stored in format, left to right, up to down format.
     */
    front: Nullable<ArrayBufferView>;
    /**
     * The pixel array for the back face.
     * This is stored in format, left to right, up to down format.
     */
    back: Nullable<ArrayBufferView>;
    /**
     * The pixel array for the left face.
     * This is stored in format, left to right, up to down format.
     */
    left: Nullable<ArrayBufferView>;
    /**
     * The pixel array for the right face.
     * This is stored in format, left to right, up to down format.
     */
    right: Nullable<ArrayBufferView>;
    /**
     * The pixel array for the up face.
     * This is stored in format, left to right, up to down format.
     */
    up: Nullable<ArrayBufferView>;
    /**
     * The pixel array for the down face.
     * This is stored in format, left to right, up to down format.
     */
    down: Nullable<ArrayBufferView>;
    /**
     * The size of the cubemap stored.
     *
     * Each faces will be size * size pixels.
     */
    size: number;
    /**
     * The format of the texture.
     *
     * RGBA, RGB.
     */
    format: number;
    /**
     * The type of the texture data.
     *
     * UNSIGNED_INT, FLOAT.
     */
    type: number;
    /**
     * Specifies whether the texture is in gamma space.
     */
    gammaSpace: boolean;
}
/**
 * Helper class useful to convert panorama picture to their cubemap representation in 6 faces.
 */
export declare class PanoramaToCubeMapTools {
    private static FACE_LEFT;
    private static FACE_RIGHT;
    private static FACE_FRONT;
    private static FACE_BACK;
    private static FACE_DOWN;
    private static FACE_UP;
    /**
     * Converts a panorama stored in RGB right to left up to down format into a cubemap (6 faces).
     *
     * @param float32Array The source data.
     * @param inputWidth The width of the input panorama.
     * @param inputHeight The height of the input panorama.
     * @param size The willing size of the generated cubemap (each faces will be size * size pixels)
     * @param supersample enable supersampling the cubemap
     * @param invertY defines if the Y axis must be inverted
     * @returns The cubemap data
     */
    static ConvertPanoramaToCubemap(float32Array: Float32Array, inputWidth: number, inputHeight: number, size: number, supersample?: boolean, invertY?: boolean): CubeMapInfo;
    private static CreateCubemapTexture;
    private static CalcProjectionSpherical;
}
