import { TgdLogic } from "../context";
import type { TgdPainterFunction } from "../types/painter";
import { type TgdDebugPainterHierarchy, TgdPainter } from "./painter";
export type TgdPainterGroupOptions = {
    onEnter?(time: number, delta: number): void;
    onExit?(time: number, delta: number): void;
    name?: string;
    children?: (TgdPainter | TgdPainterFunction)[];
};
/**
 * Group several painters together.
 */
export declare class TgdPainterGroup extends TgdPainter {
    /**
     * the logic will be executed at the beginning of `paint()`.
     */
    readonly logic: TgdLogic;
    active: boolean;
    onEnter: TgdPainterFunction | undefined;
    onExit: TgdPainterFunction | undefined;
    protected readonly painters: TgdPainter[];
    private readonly logics;
    constructor();
    constructor(painters?: (TgdPainter | TgdPainterFunction)[], options?: TgdPainterGroupOptions);
    constructor(options?: TgdPainterGroupOptions);
    forEachChild(callback: (child: TgdPainter, index: number) => void): void;
    has(painter: TgdPainter): boolean;
    add(...painters: (TgdPainter | TgdPainterFunction)[]): void;
    addFirst(...painters: TgdPainter[]): void;
    remove(...painters: TgdPainter[]): void;
    removeWithoutDeleting(...painters: TgdPainter[]): void;
    /**
     * Remove all the painters from this group.
     *
     * @param deleteRemovedPainters By default, when a painter is removed,
     * its `delete()` function is called. You can prevent this by setting
     * `deleteRemovedPainters === false`.
     */
    removeAll(deleteRemovedPainters?: boolean): void;
    delete(): void;
    paint(time: number, delta: number): void;
    get hierarchy(): TgdDebugPainterHierarchy;
    debugHierarchy(caption?: string): void;
    private recursiveDebug;
}
//# sourceMappingURL=group.d.ts.map