import { BoundingBox, Vector2, Vector3 } from "@galacean/engine-math";
import { RenderElement } from "../../RenderPipeline/RenderElement";
import { Renderer } from "../../Renderer";
import { SpriteMaskLayer } from "../../enums/SpriteMaskLayer";
import { SpriteModifyFlags } from "../enums/SpriteModifyFlags";
import { Sprite } from "./Sprite";
/**
 * Public contract of the MaskRenderable mixin, used for declaration file generation.
 */
export interface IMaskRenderable {
    influenceLayers: SpriteMaskLayer;
    flipX: boolean;
    flipY: boolean;
    sprite: Sprite;
    alphaCutoff: number;
    _renderElement: RenderElement;
    _maskIndex: number;
    _containsWorldPoint(worldPoint: Vector3): boolean;
    _initMask(): void;
    _cloneMaskData(target: IMaskRenderable): void;
    _destroyMaskResources(): void;
    _updateMaskBounds(worldBounds: BoundingBox): void;
    _renderMask(distanceForSort: number): void;
    _onSpriteChange(type: SpriteModifyFlags): void;
    _onSpriteChangeExtra(type: SpriteModifyFlags): void;
    _getSpriteWidth(): number;
    _getSpriteHeight(): number;
    _getSpritePivot(): Vector2;
}
type RendererConstructor = abstract new (...args: any[]) => Renderer;
/**
 * Mixin that provides shared mask rendering logic for both 2D SpriteMask and UI Mask.
 */
export declare function MaskRenderable<T extends RendererConstructor>(Base: T): (abstract new (...args: any[]) => IMaskRenderable) & T;
/**
 * @remarks Extends `RendererUpdateFlags`.
 */
export declare enum MaskDirtyFlags {
    /** UV. */
    UV = 2,
    /** Automatic Size. */
    AutomaticSize = 8,
    /** WorldVolume and UV. */
    WorldVolumeAndUV = 3,
    /** All. */
    All = 11
}
export {};
