export type Success = { success: true; value: T; index: number; }; export type Failure = { success: false; }; export type Result = Success | Failure; export type ParserHandler = (input: string, index: number, state: any) => Result; export declare function success(index: number, value: T): Success; export declare function failure(): Failure; export declare class Parser { name?: string; handler: ParserHandler; constructor(handler: ParserHandler, name?: string); map(fn: (value: T) => U): Parser; text(): Parser; many(min: number): Parser; sep(separator: Parser, min: number): Parser; option(): Parser; } export declare function str(value: T): Parser; export declare function regexp(pattern: T): Parser; export declare function seq(parsers: Parser[], select?: number): Parser; export declare function alt(parsers: Parser[]): Parser; export declare function notMatch(parser: Parser): Parser; export declare function difference(parserIncluded: Parser, parserExcluded: Parser): Parser; export declare const cr: Parser<"\r">; export declare const lf: Parser<"\n">; export declare const crlf: Parser<"\r\n">; export declare const newline: Parser; export declare const char: Parser; export declare const lineBegin: Parser; export declare const lineEnd: Parser; export declare function lazy(fn: () => Parser): Parser; export declare function createLanguage(syntaxes: { [K in keyof T]: (r: Record>) => T[K]; }): T;