export interface Options {
    width: number;
    height: number;
    maskImage: string | false | null | undefined;
    pixelRatio: number;
    lightThreshold: number;
    opacityThreshold: number;
    minFontSize: number;
    maxFontSize: number;
    angleFrom: number;
    angleTo: number;
    angleCount: number;
    family: string;
    cut: boolean;
    padding: number;
    canvas: boolean;
    shape: ((theta: number) => number) | null;
}
export interface Tag {
    text: string;
    weight: number;
    angle?: number;
    color?: string;
    [prop: string]: any;
}
export interface Pixels {
    width: number;
    height: number;
    data: number[][];
}
export interface TagData extends Required<Tag> {
    angle: number;
    fontSize: number;
    x: number;
    y: number;
    rendered: boolean;
    tag: Tag;
}
export declare class Tag2Cloud {
    private readonly defaultOptions;
    options: Options;
    private $container;
    private $wrapper;
    private $canvas;
    private $displayCanvas;
    private ctx;
    private displayCtx;
    private listeners;
    private pixels;
    private maxTagWeight;
    private minTagWeight;
    private promised;
    private points;
    constructor($container: HTMLElement, options?: Partial<Options>);
    draw(tags?: Tag[]): Promise<TagData[]>;
    clear(): void;
    destroy(): void;
    shape(cb: (ctx: CanvasRenderingContext2D) => void): void;
    onClick(listener: Function): () => void;
    offClick(listener: Function): void;
    getCtx(): CanvasRenderingContext2D;
    private initPixels;
    private initPoints;
    private performDraw;
    private layout;
    private layoutByCanvas;
    private layoutByDom;
    private click;
    private generatePixels;
    private handleTag;
    private placeTag;
    private tryPlaceTag;
    private getTagPixels;
    private getPixelsFromImgData;
    private loadMaskImage;
    private printPixels;
    private binaryStrIfy;
}
//# sourceMappingURL=tag2cloud.d.ts.map