import { browserTracingIntegration } from '@sentry/browser'; import { Integration, Span } from '@sentry/core'; import * as React from 'react'; import { Action, AgnosticDataRouteMatch, CreateRouterFunction, CreateRoutesFromChildren, Location, MatchRoutes, RouteObject, Router, RouterState, UseEffect, UseLocation, UseNavigationType, UseRoutes } from '../types'; export declare const allRoutes: Set; /** * Computes location key for duplicate detection. Normalizes undefined/null to empty strings. * Exported for testing. */ export declare function computeLocationKey(location: Location): string; /** * Determines if a navigation should be skipped as a duplicate, and if an existing span should be updated. * Exported for testing. * * @returns An object with: * - skip: boolean - Whether to skip creating a new span * - shouldUpdate: boolean - Whether to update the existing span name (wildcard upgrade) */ export declare function shouldSkipNavigation(trackedNav: { span: Span; routeName: string; pathname: string; locationKey: string; isPlaceholder?: boolean; } | undefined, locationKey: string, proposedName: string, spanHasEnded: boolean): { skip: boolean; shouldUpdate: boolean; }; export interface ReactRouterOptions { useEffect: UseEffect; useLocation: UseLocation; useNavigationType: UseNavigationType; createRoutesFromChildren: CreateRoutesFromChildren; matchRoutes: MatchRoutes; /** * Whether to strip the basename from the pathname when creating transactions. * * This is useful for applications that use a basename in their routing setup. * @default false */ stripBasename?: boolean; /** * Enables support for async route handlers. * * This allows Sentry to track and instrument routes dynamically resolved from async handlers. * @default false */ enableAsyncRouteHandlers?: boolean; /** * Maximum time (in milliseconds) to wait for lazy routes to load before finalizing span names. * * - Set to `0` to not wait at all (immediate finalization) * - Set to `Infinity` to wait as long as possible (capped at `finalTimeout` to prevent indefinite hangs) * - Negative values will fall back to the default * * Defaults to 3× the configured `idleTimeout` (default: 3000ms). * * @default idleTimeout * 3 */ lazyRouteTimeout?: number; /** * Static route manifest for resolving parameterized route names with lazy routes. * * Requires `enableAsyncRouteHandlers: true`. When provided, the manifest is used * as the primary source for determining transaction names. This is more reliable * than depending on React Router's lazy route resolution timing. * * @example * ```ts * lazyRouteManifest: [ * '/', * '/users', * '/users/:userId', * '/org/:orgSlug/projects/:projectId', * ] * ``` */ lazyRouteManifest?: string[]; } type V6CompatibleVersion = '6' | '7'; export declare function addResolvedRoutesToParent(resolvedRoutes: RouteObject[], parentRoute: RouteObject): void; /** * Processes resolved routes by adding them to allRoutes and checking for nested async handlers. * When capturedSpan is provided, updates that specific span instead of the current active span. * This prevents race conditions where a lazy handler resolves after the user has navigated away. */ export declare function processResolvedRoutes(resolvedRoutes: RouteObject[], parentRoute?: RouteObject, currentLocation?: Location | null, capturedSpan?: Span): void; /** * Updates a navigation span with the correct route name after lazy routes have been loaded. */ export declare function updateNavigationSpan(activeRootSpan: Span, location: Location, allRoutes: RouteObject[], forceUpdate: boolean | undefined, matchRoutes: MatchRoutes): void; /** * Creates a wrapCreateBrowserRouter function that can be used with all React Router v6 compatible versions. */ export declare function createV6CompatibleWrapCreateBrowserRouter = Router>(createRouterFunction: CreateRouterFunction, version: V6CompatibleVersion): CreateRouterFunction; /** * Creates a wrapCreateMemoryRouter function that can be used with all React Router v6 compatible versions. */ export declare function createV6CompatibleWrapCreateMemoryRouter = Router>(createRouterFunction: CreateRouterFunction, version: V6CompatibleVersion): CreateRouterFunction; /** * Creates a browser tracing integration that can be used with all React Router v6 compatible versions. */ export declare function createReactRouterV6CompatibleTracingIntegration(options: Parameters[0] & ReactRouterOptions, version: V6CompatibleVersion): Integration; export declare function createV6CompatibleWrapUseRoutes(origUseRoutes: UseRoutes, version: V6CompatibleVersion): UseRoutes; export declare function handleNavigation(opts: { location: Location; routes: RouteObject[]; navigationType: Action; version: V6CompatibleVersion; matches?: AgnosticDataRouteMatch; basename?: string; allRoutes?: RouteObject[]; }): void; export declare function addRoutesToAllRoutes(routes: RouteObject[]): void; export declare function createV6CompatibleWithSentryReactRouterRouting

, R extends React.FC

>(Routes: R, version: V6CompatibleVersion): R; export {}; //# sourceMappingURL=instrumentation.d.ts.map