export interface IErrorOptions { stack?: string; } type ErrorDataWithOptionalData = TData extends void ? { message: string; data?: never; } : { message: string; data: TData; }; export declare abstract class BaseError extends Error { abstract readonly code: string; readonly data: TData extends void ? undefined : TData; protected constructor(input: ErrorDataWithOptionalData, options?: IErrorOptions); } export declare namespace BaseError { type ErrorOptions = IErrorOptions; } export {};