import { ActionType, DiffMeta, DiffType } from 'api-smart-diff';
export declare const metaKey = "$diff";
export declare const diffTypes: DiffType[];
export type TokenTag = "before" | "after" | "empty" | "collapsed" | "expanded";
export type TokenType = "key" | "index" | "value" | "spec" | DiffType;
export type LineDiff = {
    type: DiffType;
    action: ActionType;
};
export declare class Token {
    tags: TokenTag[];
    type: TokenType;
    value: string;
    constructor(type: TokenType, value: string, tags?: TokenTag[] | TokenTag);
    static Key(value: string, tags?: TokenTag | TokenTag[]): Token;
    static Index(value: string, tags?: TokenTag | TokenTag[]): Token;
    static Value(value: string, tags?: TokenTag | TokenTag[]): Token;
    static Spec(value: string, tags?: TokenTag | TokenTag[]): Token;
    static Change(count: number, changeIndex: number, tags?: TokenTag | TokenTag[]): Token;
    cond(value: TokenTag | TokenTag[], cond?: boolean): this;
}
export declare class DiffLineData {
    index: number;
    indent: number;
    tokens: Token[];
    diff?: DiffMeta;
    constructor(index: number, indent: number, tokens: Token[], diff?: DiffMeta);
}
export declare class DiffBlockData extends DiffLineData {
    id: string;
    children: DiffBlockData[];
    diffs: number[];
    lines: number;
    get nextLine(): number;
    constructor(index: number, indent: number, tokens: Token[], diff?: DiffMeta, id?: string);
    addDiff(diff: DiffMeta): void;
    addBlock(block: DiffBlockData): void;
}
