import { EventDispatcher } from 'three';
import { IMaterial, IObject3D, ITexture } from '../core';
import { BlobExt, ExportFileOptions, IAssetExporter, IExporter, IExportWriter } from './IExporter';
import { AssetExportHooks } from './export';
import { IRenderTarget } from '../rendering';
export interface AssetExporterEventMap {
    exporterCreate: {
        exporter: IExporter;
        parser: IExportWriter;
    };
    exportFile: {
        obj: IObject3D | IMaterial | ITexture | IRenderTarget;
        state: 'processing' | 'exporting' | 'done' | 'error';
        progress?: number;
        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;
    exportHooks: AssetExportHooks;
    constructor();
    exportObject(obj?: IObject3D | IMaterial | ITexture | IRenderTarget, options?: ExportFileOptions): Promise<BlobExt | undefined>;
    private _exportFile;
    private _createParser;
    private _cachedWriters;
    private _getWriter;
    processBeforeExport(obj: IObject3D | IMaterial | ITexture | IRenderTarget, options?: ExportFileOptions): Promise<{
        obj: any;
        ext: string;
        typeExt?: string;
        blob?: BlobExt;
    } | undefined>;
    processAfterExport(blob: BlobExt, _obj: IObject3D | IMaterial | ITexture | IRenderTarget, _options?: ExportFileOptions): Promise<BlobExt>;
    dispose(): void;
}
export declare function matToJson(mat: IMaterial): any;
//# sourceMappingURL=../src/assetmanager/AssetExporter.d.ts.map