export type Token = {
    type: "Alternator" | "Assertion" | "Backreference" | "Character" | "CharacterClassClose" | "CharacterClassHyphen" | "CharacterClassIntersector" | "CharacterClassOpen" | "CharacterSet" | "Directive" | "GroupClose" | "GroupOpen" | "Subroutine" | "Quantifier" | "VariableLengthCharacterSet" | "EscapedNumber";
    raw: string;
    [key: string]: string | number | boolean;
};
export type TokenizerResult = {
    tokens: Array<Token>;
    flags: {
        dotAll: boolean;
        extended: boolean;
        ignoreCase: boolean;
    };
};
/**
@typedef {{
  type: keyof TokenTypes;
  raw: string;
  [key: string]: string | number | boolean;
}} Token
@typedef {{
  tokens: Array<Token>;
  flags: {
    dotAll: boolean;
    extended: boolean;
    ignoreCase: boolean;
  };
}} TokenizerResult
*/
/**
@param {string} pattern
@param {string} [flags] Oniguruma flags. Flag `m` is equivalent to JS flag `s`.
@returns {TokenizerResult}
*/
export function tokenize(pattern: string, flags?: string): TokenizerResult;
export namespace TokenCharacterSetKinds {
    let any: string;
    let digit: string;
    let dot: string;
    let hex: string;
    let non_newline: string;
    let posix: string;
    let property: string;
    let space: string;
    let word: string;
}
export namespace TokenDirectiveKinds {
    let flags: string;
    let keep: string;
}
export namespace TokenGroupKinds {
    let atomic: string;
    let capturing: string;
    let group: string;
    let lookahead: string;
    let lookbehind: string;
}
export namespace TokenTypes {
    let Alternator: "Alternator";
    let Assertion: "Assertion";
    let Backreference: "Backreference";
    let Character: "Character";
    let CharacterClassClose: "CharacterClassClose";
    let CharacterClassHyphen: "CharacterClassHyphen";
    let CharacterClassIntersector: "CharacterClassIntersector";
    let CharacterClassOpen: "CharacterClassOpen";
    let CharacterSet: "CharacterSet";
    let Directive: "Directive";
    let GroupClose: "GroupClose";
    let GroupOpen: "GroupOpen";
    let Subroutine: "Subroutine";
    let Quantifier: "Quantifier";
    let VariableLengthCharacterSet: "VariableLengthCharacterSet";
    let EscapedNumber: "EscapedNumber";
}
