import { Options } from './types.js';
import { findCause, hasCause } from './cause.js';
export declare class VError extends Error {
    message: string;
    protected jse_shortmsg: string;
    protected jse_cause: Error;
    protected jse_info: Record<string, unknown>;
    constructor(options: Options | Error, message: string, ...params: unknown[]);
    constructor(message?: string, ...params: unknown[]);
    toString(): string;
    /**
     * Link to {@link cause}. For compatibility with original verror.
     */
    static cause: (err: unknown) => Error | null;
    /**
     * Link to {@link info}. For compatibility with original verror.
     */
    static info: (err: unknown) => import("./types.js").Info;
    /**
     * Finds cause in stack by error name.
     * Link to {@link findCause}. For compatibility with original verror.
     *
     * @example
     * // Single string
     * VError.findCauseByName(err, 'PayloadTooLargeException');
     *
     * @example
     * // Array of names
     * VError.findCauseByName(err, ['PayloadTooLargeException', 'OtherError']);
     *
     * @example
     * // Set of names
     * VError.findCauseByName(err, new Set(['PayloadTooLargeException', 'OtherError']));
     */
    static findCauseByName: typeof findCause;
    /**
     * Check if cause exists in stack by error name.
     * Link to {@link hasCause}. For compatibility with original verror.
     *
     * @example
     * // Single string
     * VError.hasCauseWithName(err, 'PayloadTooLargeException');
     *
     * @example
     * // Array of names
     * VError.hasCauseWithName(err, ['PayloadTooLargeException', 'OtherError']);
     *
     * @example
     * // Set of names
     * VError.hasCauseWithName(err, new Set(['PayloadTooLargeException', 'OtherError']));
     */
    static hasCauseWithName: typeof hasCause;
    /**
     * Link to {@link stack}. For compatibility with original verror.
     */
    static fullStack: (err: unknown) => string;
}
