import { Texture } from 'three';
import * as ThreeMeshUI from 'three-mesh-ui';
import type { Options } from 'three-mesh-ui/build/types/core/elements/MeshUIBaseElement.js';
import { ComponentInit } from '../../engine/engine_types.js';
import { RGBAColor } from "../../engine/js-extensions/index.js";
import { BaseUIComponent } from "./BaseUIComponent.js";
import { type IGraphic, type IRectTransformChangedReceiver } from './Interfaces.js';
import { RectTransform } from './RectTransform.js';
/**
 * [Graphic](https://engine.needle.tools/docs/api/Graphic) provides basic rendering for UI elements with color, opacity, and texture support.
 * @category User Interface
 * @group Components
 */
export declare class Graphic extends BaseUIComponent implements IGraphic, IRectTransformChangedReceiver {
    get isGraphic(): boolean;
    get color(): RGBAColor;
    set color(col: RGBAColor);
    private _alphaFactor;
    setAlphaFactor(factor: number): void;
    get alphaFactor(): number;
    private sRGBColor;
    protected onColorChanged(): void;
    private get m_Color();
    raycastTarget: boolean;
    protected uiObject: ThreeMeshUI.Block | null;
    private _color;
    private _rect;
    private _stateManager;
    protected get rectTransform(): RectTransform;
    onParentRectTransformChanged(): void;
    __internalNewInstanceCreated(init: ComponentInit<this>): this;
    setState(state: string): void;
    setupState(state: object): void;
    setOptions(opts: Options): void;
    awake(): void;
    onEnable(): void;
    onDisable(): void;
    private _currentlyCreatingPanel;
    protected makePanel(): void;
    protected onBeforeCreate(_opts: any): void;
    protected onCreate(opts: any): void;
    protected onAfterCreated(): void;
    private applyEffects;
    /** used internally to ensure textures assigned to UI use linear encoding */
    static textureCache: Map<Texture, Texture>;
    protected setTexture(tex: Texture | null | undefined): Promise<void>;
    protected onAfterAddedToScene(): void;
}
/**
 * @category User Interface
 * @group Components
 */
export declare class MaskableGraphic extends Graphic {
    private _flippedObject;
    protected onAfterCreated(): void;
}
