/** @packageDocumentation
 * @module Tile
 */
import { RequireAtLeastOne } from "@itwin/core-bentley";
/** The schema describing a 3d tileset per the [3d tiles specification](https://github.com/CesiumGS/3d-tiles/blob/main/specification/schema/tileset.schema.json).
 * @alpha
 */
export declare namespace Tileset3dSchema {
    /** An object that can be defined on any [[TilesetProperty]] to provide extensions to the core spec. */
    interface Extensions {
        [key: string]: any;
    }
    /** An extensible property of a [[Tileset]]. Most types within the schema are extensible. */
    interface TilesetProperty {
        extensions?: Extensions;
        extras?: any;
    }
    type BoundingSphere = [
        centerX: number,
        centerY: number,
        centerZ: number,
        radius: number
    ];
    type BoundingRegion = [
        west: number,
        south: number,
        east: number,
        north: number,
        minHeight: number,
        maxHeight: number
    ];
    type BoundingBox = [
        centerX: number,
        centerY: number,
        centerZ: number,
        uX: number,
        uY: number,
        uZ: number,
        vX: number,
        vY: number,
        vZ: number,
        wX: number,
        wY: number,
        wZ: number
    ];
    type BoundingVolume = RequireAtLeastOne<{
        box?: BoundingBox;
        sphere?: BoundingSphere;
        region?: BoundingRegion;
    }>;
    type GeometricError = number;
    type Refinement = "ADD" | "REPLACE" | string;
    type Transform = [
        number,
        number,
        number,
        number,
        number,
        number,
        number,
        number,
        number,
        number,
        number,
        number,
        number,
        number,
        number,
        number
    ];
    interface Content extends TilesetProperty {
        uri: string;
        boundingVolume?: BoundingVolume;
    }
    interface Tile extends TilesetProperty {
        boundingVolume: BoundingVolume;
        geometricError: GeometricError;
        viewerRequestVolume?: BoundingVolume;
        refine?: Refinement;
        transform?: Transform;
        content?: Content;
        children?: Tile[];
    }
    interface Asset extends TilesetProperty {
        version: string;
        tilesetVersion?: string;
    }
    interface Tileset extends TilesetProperty {
        asset: Asset;
        geometricError: GeometricError;
        properties: unknown;
        root: Tile;
        extensionsUsed?: string[];
        extensionsRequired?: string[];
    }
}
//# sourceMappingURL=Tileset3dSchema.d.ts.map