import type { Token } from "./token";
export interface TokenAndError {
    token: Token;
    errorMessage: string;
}
export type ErrorKind = "overflow";
export declare class YoLexerError {
    characterIndex: number;
    message: string;
    row: number;
    constructor({ characterIndex, message, row, }: {
        characterIndex: number;
        message: string;
        row: number;
    });
    toString(): string;
}
export declare class YoError {
    tokenAndErrorList: TokenAndError[];
    isAssertionError: boolean;
    kind?: ErrorKind;
    constructor(tokenAndErrorList: TokenAndError[], isAssertionError?: boolean, kind?: ErrorKind);
    toString(): string;
}
export declare function getLineAtToken({ token }: {
    token: Token;
}): string;
export declare function getLineAtPosition({ modulePath, inputString, position, }: {
    modulePath: string;
    inputString: string;
    position: {
        row: number;
        column: number;
    };
}): string;
export declare function formatErrorMessage({ token, errorMessage, cause, isAssertionError, kind, }: {
    token: Token;
    errorMessage: string;
    cause?: Error;
    isAssertionError?: boolean;
    kind?: ErrorKind;
}): YoError;
export declare function formatErrorMessages(tokenAndErrorList: TokenAndError[], isAssertionError?: boolean, kind?: ErrorKind): YoError;
export declare function formatWarningMessages({ warningMessage, tokenAndWarningList, }: {
    warningMessage?: string;
    tokenAndWarningList: {
        token: Token;
        warningMessage: string;
    }[];
}): string;
export declare function printYoError(error: YoError | Error): void;
