import type { Event, EventHint, Integration } from '@sentry/core';
export declare const MOBILE_REPLAY_INTEGRATION_NAME = "MobileReplay";
/**
 * Screenshot strategy type for Android Session Replay.
 *
 * - `'canvas'`: Canvas-based screenshot strategy. This strategy does **not** support any masking options, it always masks text and images. Use this if your application has strict PII requirements.
 * - `'pixelCopy'`: Pixel copy screenshot strategy (default). Supports all masking options.
 */
export type ScreenshotStrategy = 'canvas' | 'pixelCopy';
export interface MobileReplayOptions {
    /**
     * Mask all text in recordings
     *
     * @default true
     */
    maskAllText?: boolean;
    /**
     * Mask all images in recordings
     *
     * @default true
     */
    maskAllImages?: boolean;
    /**
     * Mask all vector graphics in recordings
     * Supports `react-native-svg`
     *
     * @default true
     */
    maskAllVectors?: boolean;
    /**
     * Enables the up to 5x faster experimental view renderer used by the Session Replay integration on iOS.
     *
     * Enabling this flag will reduce the amount of time it takes to render each frame of the session replay on the main thread, therefore reducing
     * interruptions and visual lag.
     *
     * - Experiment: This is an experimental feature and is therefore disabled by default.
     *
     * @deprecated Use `enableViewRendererV2` instead.
     * @platform ios
     */
    enableExperimentalViewRenderer?: boolean;
    /**
     * Enables up to 5x faster new view renderer used by the Session Replay integration on iOS.
     *
     * Enabling this flag will reduce the amount of time it takes to render each frame of the session replay on the main thread, therefore reducing
     * interruptions and visual lag. [Our benchmarks](https://github.com/getsentry/sentry-cocoa/pull/4940) have shown a significant improvement of
     * **up to 4-5x faster rendering** (reducing `~160ms` to `~36ms` per frame) on older devices.
     *
     * - Experiment: In case you are noticing issues with the new view renderer, please report the issue on [GitHub](https://github.com/getsentry/sentry-cocoa).
     *               Eventually, we will remove this feature flag and use the new view renderer by default.
     *
     * @default true
     * @platform ios
     */
    enableViewRendererV2?: boolean;
    /**
     * Enables up to 5x faster but incomplete view rendering used by the Session Replay integration on iOS.
     *
     * Enabling this flag will reduce the amount of time it takes to render each frame of the session replay on the main thread, therefore reducing
     * interruptions and visual lag.
     *
     * - Note: This flag can only be used together with `enableExperimentalViewRenderer` with up to 20% faster render times.
     * - Experiment: This is an experimental feature and is therefore disabled by default.
     *
     * @default false
     * @platform ios
     */
    enableFastViewRendering?: boolean;
    /**
     * Array of view class names to include in subtree traversal during session replay and screenshot capture on iOS.
     *
     * Only views that are instances of these classes (or subclasses) will be traversed.
     * This helps prevent crashes when traversing problematic view hierarchies by allowing you to explicitly include only safe view classes.
     *
     * If both `includedViewClasses` and `excludedViewClasses` are set, `excludedViewClasses` takes precedence:
     * views matching excluded classes won't be traversed even if they match an included class.
     *
     * @default undefined
     * @platform ios
     */
    includedViewClasses?: string[];
    /**
     * Array of view class names to exclude from subtree traversal during session replay and screenshot capture on iOS.
     *
     * Views of these classes (or subclasses) will be skipped entirely, including all their children.
     * This helps prevent crashes when traversing problematic view hierarchies by allowing you to explicitly exclude problematic view classes.
     *
     * If both `includedViewClasses` and `excludedViewClasses` are set, `excludedViewClasses` takes precedence:
     * views matching excluded classes won't be traversed even if they match an included class.
     *
     * @default undefined
     * @platform ios
     */
    excludedViewClasses?: string[];
    /**
     * Sets the screenshot strategy used by the Session Replay integration on Android.
     *
     * If your application has strict PII requirements we recommend using `'canvas'`.
     * This strategy does **not** support any masking options, it always masks text and images.
     *
     * - Experiment: In case you are noticing issues with the canvas screenshot strategy, please report the issue on [GitHub](https://github.com/getsentry/sentry-java).
     *
     * @default 'pixelCopy'
     * @platform android
     */
    screenshotStrategy?: ScreenshotStrategy;
    /**
     * Enables capturing `SurfaceView` content in Session Replay on Android.
     *
     * This allows replays to include content from components that render outside the normal
     * View hierarchy (e.g. video players, map SDKs) which otherwise appear as black regions.
     *
     * - Experiment: Masking granularity is at the `SurfaceView` level only.
     * - Note: Only works with the `pixelCopy` screenshot strategy (the default).
     *
     * @default false
     * @platform android
     */
    captureSurfaceViews?: boolean;
    /**
     * Callback to determine if a replay should be captured for a specific error.
     * When this callback returns `false`, no replay will be captured for the error.
     * This callback is only called when an error occurs and `replaysOnErrorSampleRate` is set.
     *
     * @param event The error event
     * @param hint Additional event information
     * @returns `false` to skip capturing a replay for this error, `true` or `undefined` to proceed with sampling
     */
    beforeErrorSampling?: (event: Event, hint: EventHint) => boolean;
}
type MobileReplayIntegration = Integration & {
    options: MobileReplayOptions;
    getReplayId: () => string | null;
};
/**
 * The Mobile Replay Integration, let's you adjust the default mobile replay options.
 * To be passed to `Sentry.init` with `replaysOnErrorSampleRate` or `replaysSessionSampleRate`.
 *
 * ```javascript
 * Sentry.init({
 *  replaysOnErrorSampleRate: 1.0,
 *  replaysSessionSampleRate: 1.0,
 *  integrations: [mobileReplayIntegration({
 *    // Adjust the default options
 *  })],
 * });
 * ```
 *
 * @experimental
 */
export declare const mobileReplayIntegration: (initOptions?: MobileReplayOptions) => MobileReplayIntegration;
export {};
//# sourceMappingURL=mobilereplay.d.ts.map
