import { Token } from '../lexer';
export declare const SINGLE_TOKEN = "TOKEN";
export declare const MIN_TO_MAX = "MIN_TO_MAX";
export interface SingleTokenRule {
    rule: typeof SINGLE_TOKEN;
    type: Token['type'];
    value: Token['value'] | RegExp | null | undefined;
    negate?: boolean;
}
export interface MinToMaxRule {
    rule: typeof MIN_TO_MAX;
    min: number;
    max: number;
    match: Array<SingleTokenRule>;
}
export declare type TokenRule = SingleTokenRule | MinToMaxRule;
export declare function token(type: Token['type'], value?: Token['value'] | RegExp): SingleTokenRule;
export declare function notToken(type: Token['type'], value?: Token['value']): SingleTokenRule;
export declare function one(match: Array<SingleTokenRule>): MinToMaxRule;
export declare function zeroOrOne(match: Array<SingleTokenRule>): MinToMaxRule;
export declare function zeroOrMore(match: Array<SingleTokenRule>): MinToMaxRule;
export declare function oneOrMore(match: Array<SingleTokenRule>): MinToMaxRule;
export declare function minToMax(min: number, max: number, match: Array<SingleTokenRule>): MinToMaxRule;
