import type { IImageGraphicAttribute, ISetAttributeContext, ITextGraphicAttribute } from './../../vrender';
import { Image, Text } from './../../vrender';
import type { IIconBase } from '../../ts-types';
import type { ParsedFrame } from 'gifuct-js';
export interface IIconGraphicAttribute extends IImageGraphicAttribute {
    backgroundWidth?: number;
    backgroundHeight?: number;
    backgroundColor?: string;
    visibleTime?: string;
    funcType?: string;
    hoverImage?: string | HTMLImageElement | HTMLCanvasElement;
    originImage?: string | HTMLImageElement | HTMLCanvasElement;
    marginLeft?: number;
    marginRight?: number;
    shape?: 'circle' | 'square';
    interactive?: boolean;
}
export declare class Icon extends Image {
    attribute: IIconGraphicAttribute;
    role?: string;
    tooltip?: IIconBase['tooltip'];
    frameImageData?: ImageData;
    tempCanvas?: HTMLCanvasElement;
    tempCtx?: CanvasRenderingContext2D;
    gifCanvas?: HTMLCanvasElement;
    gifCtx?: CanvasRenderingContext2D;
    loadedFrames?: ParsedFrame[];
    frameIndex?: number;
    playing?: boolean;
    lastTime?: number;
    constructor(params: IIconGraphicAttribute);
    loadGif(): void;
    get backgroundWidth(): number;
    get backgroundHeight(): number;
    renderGIF(frames: ParsedFrame[]): void;
    renderFrame(context: CanvasRenderingContext2D, x: number, y: number): void;
    drawPatch(frame: ParsedFrame): void;
    manipulate(context: CanvasRenderingContext2D, x: number, y: number): void;
    setAttribute(key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext): void;
    setAttributes(params: Partial<IIconGraphicAttribute>, forceUpdateTag?: boolean, context?: ISetAttributeContext): void;
    failCallback: () => void;
}
export declare class TextIcon extends Text {
    attribute: IIconGraphicAttribute;
    role?: string;
    tooltip?: IIconBase['tooltip'];
    constructor(params: ITextGraphicAttribute);
}
