interface ErrorNode {
    input?: string;
    pos?: number;
    start?: number;
    end?: number;
    op?: string;
    args?: unknown;
}
interface SourceRange {
    start: number;
    end: number;
}
interface CelErrorOptions {
    name: string;
    code: string;
    message: string;
    node?: ErrorNode;
    cause?: unknown;
    range?: SourceRange;
}
interface ErrorShorthandOptions {
    code?: string;
    message: string;
    node?: ErrorNode;
    cause?: unknown;
    range?: SourceRange;
}
export declare class CelError extends Error {
    #private;
    constructor({ name, code, message, node, cause, range }: CelErrorOptions);
    get node(): ErrorNode | undefined;
    get code(): string;
    get range(): SourceRange | undefined;
    get summary(): string;
    withAst(node: ErrorNode): this;
}
export declare class ParseError extends CelError {
    constructor(message: string | ErrorShorthandOptions, node?: ErrorNode, cause?: unknown);
}
export declare class EvaluationError extends CelError {
    constructor(message: string | ErrorShorthandOptions, node?: ErrorNode, cause?: unknown);
}
export declare class TypeError extends CelError {
    constructor(message: string | ErrorShorthandOptions, node?: ErrorNode, cause?: unknown);
}
export declare function parseError(code: string | ErrorShorthandOptions, message?: string, node?: ErrorNode): ParseError;
export declare function evaluationError(code: string | ErrorShorthandOptions, message?: string, node?: ErrorNode): EvaluationError;
export declare function typeError(code: string | ErrorShorthandOptions, message?: string, node?: ErrorNode): TypeError;
export declare function attachErrorAst(error: unknown, node: ErrorNode): unknown;
export {};
