/** biome-ignore-all lint/suspicious/noAssignInExpressions: <explanation> */
import type { TgdContext } from "../../context";
import { TgdEvent } from "../../event";
import { type ArrayNumber4, type TgdColor, type TgdInputPointerEventTap, TgdVec4, type WebglBlendOptions, type WebglDepthOptions, type webglPresetBlend, type webglPresetDepth } from "../../index";
import { TgdTexture2D } from "../../texture";
import { type TgdPainterOverlayOptions } from "../overlay";
import { TgdPainter } from "../painter";
import type { TgdPainterSpritesAtlas } from "../sprites";
type Keys<T2, T1> = {
    [K in keyof T1]: T1[K] extends T2 ? K : never;
}[keyof T1] | T2;
export interface TgdPainterIconOptions extends Omit<Partial<TgdPainterOverlayOptions>, "texture" | "scaleX" | "scaleY"> {
    name?: string;
    texture: TgdTexture2D;
    atlas?: TgdPainterSpritesAtlas;
    index?: number;
    blend?: Keys<WebglBlendOptions, typeof webglPresetBlend>;
    depth?: Keys<WebglDepthOptions, typeof webglPresetDepth>;
    color?: ArrayNumber4 | TgdVec4 | TgdColor;
}
export declare class TgdPainterIcon extends TgdPainter {
    readonly context: TgdContext;
    readonly eventPointerTap: TgdEvent<TgdInputPointerEventTap>;
    private readonly texture;
    private readonly framebuffer;
    private readonly sprite;
    private readonly overlay;
    private readonly state;
    private _color;
    private _index;
    private dirty;
    private overlayWidth;
    private overlayheight;
    constructor(context: TgdContext, options: TgdPainterIconOptions);
    get index(): number;
    set index(index: number);
    get color(): TgdVec4;
    set color(value: TgdVec4 | ArrayNumber4);
    get alignX(): number;
    set alignX(alignX: number);
    get alignY(): number;
    set alignY(alignY: number);
    get width(): number | undefined;
    set width(width: number | undefined);
    get height(): number | undefined;
    set height(height: number | undefined);
    get marginTop(): number;
    set marginTop(marginTop: number);
    get marginRight(): number;
    set marginRight(marginRight: number);
    get marginBottom(): number;
    set marginBottom(marginBottom: number);
    get marginLeft(): number;
    set marginLeft(marginLeft: number);
    get z(): number;
    set z(z: number);
    delete(): void;
    paint(time: number, delta: number): void;
    refresh: () => void;
    private readonly handleOverlayResize;
}
export {};
//# sourceMappingURL=icon.d.ts.map