import { EventDispatcher } from 'three';
import { IMaterial, IObject3D, ITexture } from '../core';
import { BlobExt, ExportFileOptions, IAssetExporter, IExporter, IExportParser } from './IExporter';
import { IRenderTarget } from '../rendering';
export interface AssetExporterEventMap {
    exporterCreate: {
        exporter: IExporter;
        parser: IExportParser;
    };
    exportFile: {
        obj: IObject3D | IMaterial | ITexture | IRenderTarget;
        state: 'processing' | 'exporting' | 'done' | 'error';
        error?: any;
        exportOptions: ExportFileOptions;
    };
}
/**
 * Asset Exporter
 *
 * Utility class to export objects, materials, textures, render targets, etc.
 * Used in {@link AssetManager} to export assets.
 * @category Asset Manager
 */
export declare class AssetExporter extends EventDispatcher<AssetExporterEventMap> implements IAssetExporter {
    readonly exporters: IExporter[];
    addExporter(...exporters: IExporter[]): void;
    removeExporter(...exporters: IExporter[]): void;
    getExporter(...ext: string[]): IExporter | undefined;
    constructor();
    exportObject(obj?: IObject3D | IMaterial | ITexture | IRenderTarget, options?: ExportFileOptions): Promise<BlobExt | undefined>;
    private _exportFile;
    private _createParser;
    private _cachedParsers;
    private _getParser;
    processBeforeExport(obj: IObject3D | IMaterial | ITexture | IRenderTarget, options?: ExportFileOptions): Promise<{
        obj: any;
        ext: string;
        typeExt?: string;
        blob?: BlobExt;
    } | undefined>;
    dispose(): void;
}
//# sourceMappingURL=AssetExporter.d.ts.map