declare type ErrorScope = `PUBLIC` | `SYSTEM_ONLY` | `INTERNAL_SERVER` | `DEBUG_ONLY`;
declare type ExcludeMethod<T> = Pick<T, {
    [K in keyof T]: T[K] extends Function ? never : K;
}[keyof T]>;
declare type DebugType<O = Record<string, unknown>> = {
    [K in keyof O]?: O[K];
};
declare type AnyObject = (Record<string, any>) & (Record<string, any> | object);
declare type AnyValue = AnyObject | string | number | boolean | symbol | bigint;
declare class BaseError<D = unknown> extends Error {
    message: string;
    public_message?: string | undefined;
    stack?: string | undefined;
    error?: Record<string, any> | Error | BaseError<unknown> | undefined;
    cause?: any;
    code?: number | undefined;
    method?: string | undefined;
    expose: boolean;
    name: string;
    debug?: AnyValue;
    protected scope: ErrorScope;
    constructor(construct: string | Partial<ExcludeMethod<BaseError>>, debug?: DebugType<D>, override?: Partial<ExcludeMethod<BaseError>>, message?: string, public_message?: string | undefined, stack?: string | undefined, error?: Record<string, any> | Error | BaseError<unknown> | undefined, cause?: any, code?: number | undefined, method?: string | undefined, expose?: boolean);
    toObject(): ExcludeMethod<BaseError<unknown>>;
    toString(): string;
    makePublic(): this;
    setScope(scope: ErrorScope): this;
    get getScope(): ErrorScope;
    rename(name?: string): this;
    static factory: (input: {
        name?: string | undefined;
        debug?: string | number | bigint | boolean | symbol | {
            [x: string]: any;
        } | {
            [x: string]: any;
        } | undefined;
        message?: string | undefined;
        public_message?: string;
        stack?: string;
        error?: {
            [x: string]: any;
        } | any | {
            name?: string | undefined;
            message?: string | undefined;
            stack?: string | undefined;
            cause?: any | undefined;
        } | undefined;
        cause?: any;
        code?: number;
        method?: string;
        expose?: boolean | undefined;
        toObject?: {} | undefined;
        toString?: {} | undefined;
        makePublic?: {} | undefined;
        setScope?: {} | undefined;
        readonly getScope?: ErrorScope | undefined;
        rename?: {} | undefined;
    }, options?: {
        defaultValue: boolean;
        excludeExtraProp: boolean;
    } | undefined, customMapperOverride?: ((input: {
        name?: string | undefined;
        debug?: string | number | bigint | boolean | symbol | {
            [x: string]: any;
        } | {
            [x: string]: any;
        } | undefined;
        message?: string | undefined;
        public_message?: string;
        stack?: string;
        error?: {
            [x: string]: any;
        } | any | {
            name?: string | undefined;
            message?: string | undefined;
            stack?: string | undefined;
            cause?: any | undefined;
        } | undefined;
        cause?: any;
        code?: number;
        method?: string;
        expose?: boolean | undefined;
        toObject?: {} | undefined;
        toString?: {} | undefined;
        makePublic?: {} | undefined;
        setScope?: {} | undefined;
        readonly getScope?: ErrorScope | undefined;
        rename?: {} | undefined;
    }) => never) | undefined) => BaseError<unknown>;
}

export { BaseError, ErrorScope };
