import type { IProgressiveTransformResult } from '@visactor/vgrammar-core';
import type { Bounds, IBaseLayoutOptions, TagItemAttribute, TagItemFunction, TagOutputItem } from './interface';
import { BaseLayout } from './base';
export interface TagItem {
    text: number | string;
    fontFamily?: string;
    fontStyle?: string;
    fontWeight?: string;
    angle?: number;
    fontSize?: number;
    padding?: number;
    xoff?: number;
    yoff?: number;
    x?: number;
    y?: number;
    x1?: number;
    y1?: number;
    x0?: number;
    y0?: number;
    hasText?: boolean;
    sprite?: number[];
    datum: any;
    width: number;
    height: number;
}
interface ICloudLayoutOptions extends IBaseLayoutOptions {
    spiral?: 'archimedean' | 'rectangular' | ((size: [number, number]) => (t: number) => [number, number]);
    padding?: TagItemAttribute<number>;
    enlarge?: boolean;
    customInsertZerosToArray?: (array: any[], index: number, length: number) => void;
}
export declare class CloudLayout extends BaseLayout<ICloudLayoutOptions> implements IProgressiveTransformResult {
    getTextPadding: TagItemFunction<number>;
    spiral: (size: [number, number]) => (t: any) => [number, number];
    random: () => number;
    cw: number;
    ch: number;
    _size: [number, number];
    _originSize: [number, number];
    _isBoardExpandCompleted: boolean;
    _placeStatus: number;
    _tTemp?: number;
    _dtTemp?: number;
    _dy: number;
    contextAndRatio?: {
        context: CanvasRenderingContext2D;
        ratio: number;
        canvas: HTMLCanvasElement;
    };
    _board: number[];
    _bounds: Bounds;
    cacheMap: Map<any, any>;
    static defaultOptions: Partial<ICloudLayoutOptions>;
    constructor(options: ICloudLayoutOptions);
    zoomRatio(): number;
    dy(): number;
    layoutWord(index: number): boolean;
    layout(words: any[], config: {
        width: number;
        height: number;
    }): TagOutputItem[];
    formatTagItem(words: TagOutputItem[]): any[];
    output(): any[];
    progressiveOutput(): any[];
    private updateBoardExpandStatus;
    private shouldShrinkContinue;
    private shrinkBoard;
    private expandBoard;
    private insertZerosToArray;
    private getContext;
    private place;
    private clearCache;
    private setCache;
    private isSizeLargerThanMax;
}
export {};
