import { IMaterial } from './IMaterial';
import { Source, Texture, TextureEventMap } from 'three';
import { IRenderTarget } from '../rendering';
import { ChangeEvent, UiObjectConfig } from 'uiconfig.js';
import { IObject3D } from './IObject';
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;
    timeline?: {
        enabled: boolean;
        delay?: number;
        scale?: number;
        start?: number;
        end?: number;
    };
    [key: string]: any;
}
export type ITextureEventMap = TextureEventMap;
declare module 'three' {
    interface TextureEventMap {
        textureUpdate: {
            texture: Texture;
            bubbleToObject?: boolean;
            bubbleToParent?: boolean;
            uiChangeEvent?: ChangeEvent;
        };
    }
}
export interface ITexture<TE extends ITextureEventMap = ITextureEventMap> extends Texture<TE> {
    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;
        _canSerialize?: boolean;
    };
    /**
     * Objects/Materials in the scene that are using this texture.
     * This is set in the {@link Object3DManager} when the objects are added/removed from the scene. Do not modify this set directly.
     */
    appliedObjects?: Set<IObject3D | IMaterial>;
    uiConfig?: UiObjectConfig;
    /**
     * for internal use only. refers to the render target that this texture is attached to
     * @internal
     */
    ['_target']?: IRenderTarget;
}
export declare function upgradeTexture(this: ITexture): void;
//# sourceMappingURL=../src/core/ITexture.d.ts.map