import { ErrorOptions, SpruceErrorOptions } from './error.options';
type MyInstanceType<T extends {
    prototype: any;
}> = T['prototype'];
export default abstract class AbstractSpruceError<T extends ErrorOptions = SpruceErrorOptions> extends Error {
    options: T;
    originalError?: Error;
    constructor(options: T);
    friendlyMessage(): string;
    toString(): string;
    private serializeOriginalError;
    toJson(): string;
    toObject(): any;
    prettyPrint(): string;
    static parse<T extends {
        prototype: any;
    }>(json: string | Record<string, any> | Error | AbstractSpruceError, ClassRef: T): MyInstanceType<T>;
}
export {};
