import type { IAABBBounds } from '@visactor/vutils';
import type { IImage, IImageGraphicAttribute, IRepeatType, ISetAttributeContext } from '../interface';
import { Graphic } from './graphic';
export declare class Image extends Graphic<IImageGraphicAttribute> implements IImage {
    type: 'image';
    successCallback?: () => void;
    failCallback?: () => void;
    _actualWidth?: number;
    _actualHeight?: number;
    static NOWORK_ANIMATE_ATTR: {
        strokeSeg: number;
        boundsPadding: number;
        pickMode: number;
        boundsMode: number;
        customPickShape: number;
        pickable: number;
        childrenPickable: number;
        visible: number;
        zIndex: number;
        layout: number;
        keepDirIn3d: number;
        globalZIndex: number;
        outerBorder: number;
        innerBorder: number;
        lineDash: number;
        lineCap: number;
        lineJoin: number;
        miterLimit: number;
        strokeBoundsBuffer: number;
        scaleCenter: number;
        anchor: number;
        anchor3d: number;
        postMatrix: number;
        backgroundMode: number;
        background: number;
        texture: number;
        cursor: number;
        html: number;
        image: number;
        repeatX: number;
        repeatY: number;
    };
    constructor(params: IImageGraphicAttribute);
    getImageElement(): HTMLImageElement | HTMLCanvasElement | null;
    get width(): number;
    get height(): number;
    get repeatX(): IRepeatType;
    set repeatX(repeatX: IRepeatType);
    get repeatY(): IRepeatType;
    set repeatY(repeatY: IRepeatType);
    get image(): string | HTMLImageElement | HTMLCanvasElement;
    set image(image: string | HTMLImageElement | HTMLCanvasElement);
    imageLoadSuccess(url: string, image: HTMLImageElement, cb?: () => void): void;
    imageLoadFail(url: string, cb?: () => void): void;
    setAttributes(params: Partial<IImageGraphicAttribute>, forceUpdateTag?: boolean, context?: ISetAttributeContext): void;
    setAttribute(key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext): void;
    getGraphicTheme(): Required<IImageGraphicAttribute>;
    protected updateAABBBounds(attribute: IImageGraphicAttribute, imageTheme: Required<IImageGraphicAttribute>, aabbBounds: IAABBBounds): import("@visactor/vutils").IBounds;
    getDefaultAttribute(name: string): any;
    protected needUpdateTags(keys: string[]): boolean;
    protected needUpdateTag(key: string): boolean;
    clone(): Image;
    getNoWorkAnimateAttr(): Record<string, number>;
}
export declare function createImage(attributes: IImageGraphicAttribute): IImage;
