import { NodeBuilder } from './parser';
export declare type MarkName = 'add' | 'and' | 'arr_expr' | 'array_end' | 'array_splat' | 'array' | 'asc' | 'attr_ident' | 'comp' | 'dblparent' | 'deref_field' | 'deref' | 'desc' | 'div' | 'exc_range' | 'filter' | 'float' | 'func_args_end' | 'func_call' | 'ident' | 'inc_range' | 'integer' | 'mod' | 'mul' | 'neg' | 'not' | 'object_end' | 'object_expr' | 'object_pair' | 'object_splat_this' | 'object_splat' | 'object' | 'or' | 'pair' | 'param' | 'paren' | 'parent' | 'pipecall' | 'pos' | 'pow' | 'project' | 'sci' | 'star' | 'str_begin' | 'sub' | 'this';
export interface Mark {
    name: MarkName;
    position: number;
}
export declare type MarkVisitor = {
    [key in MarkName]?: NodeBuilder;
};
export declare class MarkProcessor {
    private visitor;
    private string;
    private marks;
    private index;
    constructor(visitor: MarkVisitor, string: string, marks: Mark[]);
    hasMark(pos?: number): boolean;
    getMark(pos?: number): Mark;
    shift(): void;
    process(): any;
    processString(): string;
    processStringEnd(): string;
}
