import { type InternalTexture } from "../Materials/Textures/internalTexture.js";
/**
 * for description see https://www.khronos.org/opengles/sdk/tools/KTX/
 * for file layout see https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/
 */
export declare class KhronosTextureContainer {
    /** contents of the KTX container file */
    data: ArrayBufferView;
    private static HEADER_LEN;
    private static COMPRESSED_2D;
    private static COMPRESSED_3D;
    private static TEX_2D;
    private static TEX_3D;
    /**
     * Gets the openGL type
     */
    glType: number;
    /**
     * Gets the openGL type size
     */
    glTypeSize: number;
    /**
     * Gets the openGL format
     */
    glFormat: number;
    /**
     * Gets the openGL internal format
     */
    glInternalFormat: number;
    /**
     * Gets the base internal format
     */
    glBaseInternalFormat: number;
    /**
     * Gets image width in pixel
     */
    pixelWidth: number;
    /**
     * Gets image height in pixel
     */
    pixelHeight: number;
    /**
     * Gets image depth in pixels
     */
    pixelDepth: number;
    /**
     * Gets the number of array elements
     */
    numberOfArrayElements: number;
    /**
     * Gets the number of faces
     */
    numberOfFaces: number;
    /**
     * Gets the number of mipmap levels
     */
    numberOfMipmapLevels: number;
    /**
     * Gets the bytes of key value data
     */
    bytesOfKeyValueData: number;
    /**
     * Gets the load type
     */
    loadType: number;
    /**
     * If the container has been made invalid (eg. constructor failed to correctly load array buffer)
     */
    isInvalid: boolean;
    /**
     * Creates a new KhronosTextureContainer
     * @param data contents of the KTX container file
     * @param facesExpected should be either 1 or 6, based whether a cube texture or or
     */
    constructor(
    /** contents of the KTX container file */
    data: ArrayBufferView, facesExpected: number);
    /**
     * Uploads KTX content to a Babylon Texture.
     * It is assumed that the texture has already been created & is currently bound
     * @internal
     */
    uploadLevels(texture: InternalTexture, loadMipmaps: boolean): void;
    private _upload2DCompressedLevels;
    /**
     * Checks if the given data starts with a KTX file identifier.
     * @param data the data to check
     * @returns true if the data is a KTX file or false otherwise
     */
    static IsValid(data: ArrayBufferView): boolean;
}
