import { IMaterial } from './IMaterial';
import { Event, Source, Texture } from 'three';
import { ChangeEvent } from 'uiconfig.js';
import { IRenderTarget } from '../rendering';
export interface ITextureUserData {
    mimeType?: string;
    embedUrlImagePreviews?: boolean;
    /**
     * Automatically dispose texture when not used by any material that's applied to some object in the scene.
     * Works only after it's applied to a material once.
     */
    disposeOnIdle?: boolean;
}
export type ITextureEventTypes = 'dispose' | 'update';
export type ITextureEvent<T extends string = ITextureEventTypes> = Event & {
    type: T;
    texture?: ITexture;
    uiChangeEvent?: ChangeEvent;
};
export interface ITexture extends Texture {
    assetType?: 'texture';
    userData: ITextureUserData;
    readonly isTexture: true;
    isDataTexture?: boolean;
    isCubeTexture?: boolean;
    isVideoTexture?: boolean;
    isCanvasTexture?: boolean;
    isCompressedTexture?: boolean;
    is3DDataTexture?: boolean;
    setDirty?(): void;
    source: Source & {
        _sourceImgBuffer?: ArrayBuffer | Uint8Array;
    };
    _appliedMaterials?: Set<IMaterial>;
    _target?: IRenderTarget;
}
export declare function upgradeTexture(this: ITexture): void;
//# sourceMappingURL=ITexture.d.ts.map