import type { User } from "@sentry/node";
import type { NodeClientOptions } from "@sentry/node/build/types/types";
import type { AppenderFunction, LayoutFunction, LayoutsParam, Levels } from "log4js";
export interface Config extends Partial<NodeClientOptions> {
    /**
     * The Data Source Name (DSN) for connecting to the Sentry server.
     *
     * @see https://<project_name>.sentry.io/settings/projects/node/keys/
     * @see https://docs.sentry.io/product/sentry-basics/dsn-explainer/#the-parts-of-the-dsn
     */
    dsn: string;
    /**
     * Sentry user data for scope setting
     */
    user?: User;
    /**
     * Levels to be reported to Sentry.
     */
    levels?: SentryAppenderLevels[];
}
declare module "log4js" {
    interface Appenders {
        SentryAppender: {
            type: "log4js-appender-sentry";
        } & Config;
    }
}
export type SentryAppenderLevels = keyof Pick<Levels, "WARN" | "ERROR" | "FATAL">;
export declare function sentry(config: Config, levels: Levels, layout: LayoutFunction): AppenderFunction;
export declare class ConfigError extends Error {
    constructor(msg: string, cause?: unknown);
}
export declare function configure(config: Config, layouts: LayoutsParam, _findAppender: () => AppenderFunction, levels: Levels): AppenderFunction;
