import type { ArgumentsHost, CallHandler, DynamicModule, ExecutionContext, NestInterceptor, OnModuleInit } from '@nestjs/common';
import type { HttpServer } from '@nestjs/common';
import { BaseExceptionFilter } from '@nestjs/core';
import type { Observable } from 'rxjs';
/**
 * Note: We cannot use @ syntax to add the decorators, so we add them directly below the classes as function wrappers.
 */
/**
 * Interceptor to add Sentry tracing capabilities to Nest.js applications.
 */
declare class SentryTracingInterceptor implements NestInterceptor {
    readonly __SENTRY_INTERNAL__: boolean;
    constructor();
    /**
     * Intercepts HTTP requests to set the transaction name for Sentry tracing.
     */
    intercept(context: ExecutionContext, next: CallHandler): Observable<unknown>;
}
export { SentryTracingInterceptor };
/**
 * Global filter to handle exceptions and report them to Sentry.
 */
declare class SentryGlobalFilter extends BaseExceptionFilter {
    readonly __SENTRY_INTERNAL__: boolean;
    constructor(applicationRef?: HttpServer);
    /**
     * Catches exceptions and reports them to Sentry unless they are expected errors.
     */
    catch(exception: unknown, host: ArgumentsHost): void;
}
export { SentryGlobalFilter };
/**
 * Global filter to handle exceptions and report them to Sentry.
 *
 * The BaseExceptionFilter does not work well in GraphQL applications.
 * By default, Nest GraphQL applications use the ExternalExceptionFilter, which just rethrows the error:
 * https://github.com/nestjs/nest/blob/master/packages/core/exceptions/external-exception-filter.ts
 *
 * The ExternalExceptinFilter is not exported, so we reimplement this filter here.
 */
declare class SentryGlobalGraphQLFilter {
    private static readonly _logger;
    readonly __SENTRY_INTERNAL__: boolean;
    constructor();
    /**
     * Catches exceptions and reports them to Sentry unless they are HttpExceptions.
     */
    catch(exception: unknown, host: ArgumentsHost): void;
}
export { SentryGlobalGraphQLFilter };
/**
 * Global filter to handle exceptions and report them to Sentry.
 *
 * This filter is a generic filter that can handle both HTTP and GraphQL exceptions.
 */
declare class SentryGlobalGenericFilter extends SentryGlobalFilter {
    readonly __SENTRY_INTERNAL__: boolean;
    private readonly _graphqlFilter;
    constructor(applicationRef?: HttpServer);
    /**
     * Catches exceptions and forwards them to the according error filter.
     */
    catch(exception: unknown, host: ArgumentsHost): void;
}
export { SentryGlobalGenericFilter };
/**
 * Service to set up Sentry performance tracing for Nest.js applications.
 */
declare class SentryService implements OnModuleInit {
    readonly __SENTRY_INTERNAL__: boolean;
    constructor();
    /**
     * Initializes the Sentry service and registers span attributes.
     */
    onModuleInit(): void;
}
export { SentryService };
/**
 * Set up a root module that can be injected in nest applications.
 */
declare class SentryModule {
    /**
     * Configures the module as the root module in a Nest.js application.
     */
    static forRoot(): DynamicModule;
}
export { SentryModule };
//# sourceMappingURL=setup.d.ts.map