import { RawTexture, Observable, ISceneComponent, Scene } from './babylonjs-import';
import { Uint32Bits, Uint32BitsOnChangedEventHandler, Uint32Bytes } from '../Uint32Bits';
/**
 * A resizable RGBA raw texture where bits and bytes can be manipulated freely. The texture
 * will always be square.
 */
export declare class LazyResizableRawTexture implements ISceneComponent {
    name: string;
    hasAlpha: boolean;
    private readonly _maxTextureSize;
    private readonly _onPixelChanged;
    private readonly _rgba;
    private _texture?;
    private _hasTextureChanges;
    private _beginFrameObserver;
    private _scene?;
    private readonly _propertyBits;
    readonly onUpdateObservable: Observable<LazyResizableRawTexture>;
    /**
     * Constructor
     * @param name Name of texture
     * @param hasAlpha Whether texture has alpha or not.
     * @param _maxTextureSize Maximum size of the texture. Default is 4096. May actually become less than the specified value if the GPU does not support it.
     * @param _onPixelChanged Callback invoked when a pixel has changed its value.
     */
    constructor(name: string, hasAlpha: boolean, _maxTextureSize?: number, _onPixelChanged?: Uint32BitsOnChangedEventHandler);
    /** @inheritDoc */
    get scene(): Scene;
    /** @inheritDoc */
    register(): void;
    /** @inheritDoc */
    rebuild(): void;
    /** @inheritDoc */
    dispose(): void;
    /**
     * Total size in bytes of the RGBA texture
     */
    get sizeInBytes(): number;
    /**
     * Size in pixels (RGBA) of texture.
     */
    get size(): number;
    /**
     * Sets the minimum size of the texture. If the texture is already
     * larger then size will not be changed.
     * @param sz Minimum size.
     * @returns The actual size.
     */
    setMinSize(sz: number): number;
    /**
     * Updates the texture (uploads it to the GPU) if required. Will only be updated
     * if there actually is changes in the texture since the last time that  {@link updateIfTextureHasChanges} was called.
     * @returns `true` if texture was updated, otherwise `false`.
     */
    updateIfTextureHasChanges(scene: Scene, forceRecreate?: boolean): boolean;
    /**
     * Resets texture. back to 0 size.
     */
    reset(): void;
    /**
     * Attaches the texture to a scene and ensures it is updated before rendering frames or to a render target.
     * A texture can only be attached to one scene.
     * @param scene - The scene to attach the texture to.
     * @returns The {@link LazyResizableRawTexture} instance.
     * @throws Error if the engine is not available.
     */
    attachToScene(scene: Scene): LazyResizableRawTexture;
    /**
     * Gets a BJS `RawTexture` that represents the current {@link LazyResizableRawTexture} instance.
     * @param _scene BJS scene.
     * @returns A BJS `RawTexture`.
     */
    getTexture(_scene: Scene): RawTexture;
    /**
     * Gets a {@link Uint32Bits} instance that can be used to manipulate the bits of the RGBA
     * pixel stored at the offset specified by `pixelOffset`
     * WARNING: Never ever store a reference to the {@link Uint32Bits} instance. It is reused for all pixels
     * in the texture. whenever {@link bits} or {@link bytes} are called again the {@link Uint32Bits} instance
     * will point to a new pixel. This behavior is because of performace.
     * @param pixelOffset Pixel offset.
     * @returns {@link Uint32Bits} instance
     */
    bits(pixelOffset: number): Uint32Bits;
    /**
     * Gets a {@link Uint32Bytes} instance that can be used to manipulate the bytes of the RGBA
     * pixel stored at the offset specified by `pixelOffset`
     * WARNING: Never ever store a reference to the {@link Uint32Bytes} instance. It is reused for all pixels
     * in the texture. whenever {@link bits} or {@link bytes} are called again the {@link Uint32Bytes} instance
     * will point to a new pixel. This behavior is because of performace.
     * @param pixelOffset Pixel offset.
     * @returns {@link Uint32Bits} instance
     */
    bytes(pixelOffset: number): Uint32Bytes;
}
//# sourceMappingURL=LazyResizableRawTexture.d.ts.map