export default C3DTExtensions;
/**
 * Class for managing
 * [3D Tiles extensions](https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/extensions).
 * Extensions used in a 3D Tiles tileset must be registered in the iTowns' layer
 * holding the tileset by the user with the {@link registerExtension}
 * method. The extension must be registered together with a class holding the
 * code to interpret the extension.
 * An example of extension class is {@link C3DTBatchTableHierarchyExtension}.
 * This extension has only one part situated in the batch table (but other
 * extensions can have multiple parts, stored in different 3D Tiles classes
 * such as tileset or bounding volume).
 * @example
 * // Create a C3DTExtensions object
 * const extensions = new itowns.C3DTExtensions();
 * // Register an extension to it named "3DTILES_batch_table_hierarchy" and
 * // a class itowns.C3DTBatchTableHierarchyExtension to the batch table part
 * // (with [itowns.C3DTilesTypes.batchtable]). see {@link C3DTilesTypes}
 * extensions.registerExtension("3DTILES_batch_table_hierarchy",
 * { [itowns.C3DTilesTypes.batchtable]: itowns.C3DTBatchTableHierarchyExtension });
 *
 * // Create a 3D Tiles layer with registered extensions
 * var $3dTilesLayerBTHierarchy = new itowns.C3DTilesLayer('3d-tiles-bt-hierarchy', {
 *      name: 'BTHierarchy',
 *      source: new itowns.C3DTilesSource({
 *          url: 'https://raw.githubusercontent.com/AnalyticalGraphicsInc/cesium/master/Apps/SampleData/Cesium3DTiles/Hierarchy/BatchTableHierarchy/tileset.json',
 *          }),
 *          registeredExtensions: extensions,
 *      },
 * view);
 */
declare class C3DTExtensions {
    /**
     * Register a 3D Tiles extension: Maps an extension name to the
     * extensionsManagers (i.e. one class per 3D Tiles class (e.g.
     * batch table or bounding volume).
     * @param {string} extensionName - Name of the extension
     * @param {object} extensionManagers - An object mapping 3D Tiles
     * classes names (see @link{C3DTilesTypes} to the extension managers
     * corresponding to this class. These extension managers should be able
     * to parse the extension fragment (done in the constructor) and should
     * have a getInfoById method if they are related to the batch table class.
     * See {@link C3DTBatchTableHierarchyExtension} for an example of
     * extension class.
     */
    registerExtension(extensionName: string, extensionManagers: object): void;
    /**
     * Get an extension manager from its name and C3DTilesType
     * @param {string} extensionName - name of the extension.
     * @param {C3DTilesTypes} type - type of 3DTiles class (e.g. batch
     * table, bounding volume, tileset, etc.)
     * @returns {object} - the extension manager corresponding to the
     * extensioNname and type.
     */
    getExtension(extensionName: string, type: C3DTilesTypes): object;
    /**
     * Test if an extension is registered
     * @param {string} extensionName - Name of the extension
     * @returns {boolean} - true if the extension is registered and false
     * otherwise.
     */
    isExtensionRegistered(extensionName: string): boolean;
    /**
     * Parses the extensions from a given JSON (extensionsJSON) by
     * instanciating the right class from the registered extensions.
     * @param {object} extensionsJSON - the JSON to parse extensions from.
     * @param {C3DTilesTypes} type - type of class asking for extensions parsing
     * has been called. For instance, if {@link C3DTBatchTable} needs to
     * parse its extensions, it will call parseExtension with the JSON to
     * parse and C3DTilesTypes.batchtable as type.
     * @returns {object} - An object with keys being the names of the
     * extensions and values the instances of the extensions managers.
     */
    parseExtensions(extensionsJSON: object, type: C3DTilesTypes): object;
}
