import { type ColorSource } from '../../../color/Color';
import { ExtensionType } from '../../../extensions/Extensions';
import { Rectangle } from '../../../maths/shapes/Rectangle';
import { Container } from '../../scene/Container';
import type { Renderer } from '../types';
import type { System } from './system/System';
import type { TextureSourceOptions } from './texture/sources/TextureSource';
import type { Texture } from './texture/Texture';
export type GenerateTextureSourceOptions = Omit<TextureSourceOptions, 'resource' | 'width' | 'height' | 'resolution'>;
export type GenerateTextureOptions = {
    /** The container to generate the texture from */
    target: Container;
    /**
     * The region of the container, that shall be rendered,
     * if no region is specified, defaults to the local bounds of the container.
     */
    frame?: Rectangle;
    resolution?: number;
    clearColor?: ColorSource;
    /** The options passed to the texture source. */
    textureSourceOptions?: GenerateTextureSourceOptions;
};
/** System that manages the generation of textures from the renderer. */
export declare class GenerateTextureSystem implements System {
    /** @ignore */
    static extension: {
        readonly type: readonly [ExtensionType.WebGLSystem, ExtensionType.WebGPUSystem];
        readonly name: "textureGenerator";
    };
    private readonly _renderer;
    constructor(renderer: Renderer);
    /**
     * A Useful function that returns a texture of the display object that can then be used to create sprites
     * This can be quite useful if your container is complicated and needs to be reused multiple times.
     * @param {GenerateTextureOptions | Container} options - Generate texture options.
     * @param {Container} [options.container] - If not given, the renderer's resolution is used.
     * @param {Rectangle} options.region - The region of the container, that shall be rendered,
     *        if no region is specified, defaults to the local bounds of the container.
     * @param {GenerateTextureSourceOptions} [options.textureSourceOptions] - Texture options for GPU.
     * @returns a shiny new texture of the container passed in
     */
    generateTexture(options: GenerateTextureOptions | Container): Texture;
    destroy(): void;
}
