import { Object3D } from "three";

import { USDObject, USDWriter, USDZExporterContext } from "./ThreeUSDZExporter.js";

/**
 * Interface for USDZ Exporter Extensions used by {@link USDZExporter}  
 */
export interface IUSDExporterExtension {

    /**
     * The name of the extension
     */
    get extensionName(): string;
    /**
     * Called before the document is built
     */
    onBeforeBuildDocument?(context: USDZExporterContext);
    /**
     * Called after the document is built
     */
    onAfterBuildDocument?(context: USDZExporterContext);
    onExportObject?(object: Object3D, model: USDObject, context: USDZExporterContext);
    onAfterSerialize?(context: USDZExporterContext);
    onAfterHierarchy?(context: USDZExporterContext, writer: USDWriter) : void | Promise<void>;
}