declare enum HermesErrorCode {
    Assertion = "Assertion",
    NotSupportedMongoVersion = "NotSupportedMongoVersion"
}
type HermesErrorDetails<T extends Record<string, unknown> = Record<string, never>> = {
    [K in keyof T]: T[K];
};
declare abstract class HermesError<T extends Record<string, unknown> = Record<string, never>, Code extends string = HermesErrorCode> extends Error {
    code: Code;
    details?: HermesErrorDetails<T> | undefined;
    constructor(code: Code, details?: HermesErrorDetails<T> | undefined, message?: string);
}
declare class AssertionError extends HermesError<{
    forKey?: string;
    forValue?: any;
}> {
    details: HermesErrorDetails<{
        forKey?: string;
        forValue?: any;
    }>;
    constructor(details: HermesErrorDetails<{
        forKey?: string;
        forValue?: any;
    }>, message?: string);
}
declare class NotSupportedMongoVersionError extends HermesError<{
    supportedVersions: number[];
    currentVersion: string;
}> {
    details?: HermesErrorDetails<{
        supportedVersions: number[];
        currentVersion: string;
    }> | undefined;
    constructor(details?: HermesErrorDetails<{
        supportedVersions: number[];
        currentVersion: string;
    }> | undefined, message?: string);
}
export { AssertionError, HermesError, HermesErrorCode, NotSupportedMongoVersionError };
