import { ExtensionType } from '../../../extensions/Extensions';
import { Container } from '../../scene/Container';
import { Texture } from './texture/Texture';
import type { ColorSource } from '../../../color/Color';
import type { Rectangle } from '../../../maths/shapes/Rectangle';
import type { ICanvas } from '../../../settings/adapter/ICanvas';
import type { Renderer } from '../types';
import type { System } from './system/System';
import type { GetPixelsOutput } from './texture/GenerateCanvas';
type Formats = 'png' | 'jpg';
interface ImageOptions {
    format?: Formats;
    quality?: number;
}
export interface BaseExtractOptions {
    target: Container | Texture;
    frame?: Rectangle;
    resolution?: number;
    clearColor?: ColorSource;
}
export type ExtractImageOptions = BaseExtractOptions & ImageOptions;
export type ExtractDownloadOptions = BaseExtractOptions & {
    filename: string;
};
export type ExtractOptions = BaseExtractOptions | ExtractImageOptions | ExtractDownloadOptions;
/**
 * System plugin to the renderer to manage texture garbage collection on the GPU,
 * ensuring that it does not get clogged up with textures that are no longer being used.
 */
export declare class ExtractSystem implements System {
    /** @ignore */
    static extension: {
        readonly type: readonly [ExtensionType.WebGLSystem, ExtensionType.WebGPUSystem];
        readonly name: "extract";
    };
    static defaultImageOptions: ImageOptions;
    private _renderer;
    /** @param renderer - The renderer this System works for. */
    constructor(renderer: Renderer);
    private _normalizeOptions;
    image(options: ExtractImageOptions | Container | Texture): Promise<HTMLImageElement>;
    base64(options: ExtractImageOptions | Container | Texture): Promise<string>;
    canvas(options: ExtractOptions | Container | Texture): ICanvas;
    pixels(options: ExtractOptions | Container | Texture): GetPixelsOutput;
    texture(options: ExtractOptions | Container | Texture): Texture;
    download(options: ExtractDownloadOptions | Container | Texture): void;
    log(options: (ExtractOptions & {
        width?: number;
    }) | Container | Texture): void;
    destroy(): void;
}
export {};
