import type { RequestRouter, RouteChangeOptions } from '@plyaz/types/api'; /** * Setup route change listeners for automatic cleanup * * @param router - Router instance from Next.js or React Router * @param options - Configuration options * @returns Cleanup function * * @example * ```tsx * // Next.js _app.tsx * import { useRouter } from 'next/router'; * * function MyApp({ Component, pageProps }) { * const router = useRouter(); * * useEffect(() => { * return setupRouteChangeCleanup(router, { * abortPattern: '/api/*', * preservePatterns: ['/api/auth/*'] * }); * }, [router]); * } * ``` */ export declare function setupRouteChangeCleanup(router: RequestRouter, options?: RouteChangeOptions): () => void; /** * Create a route guard that aborts requests when leaving * * @param pattern - Pattern to abort on route leave * @returns Object with enter and leave functions * * @example * ```tsx * const guard = createRouteGuard('/api/page/*'); * * // On route enter * guard.enter(); * * // On route leave * guard.leave(); * ``` */ export declare function createRouteGuard(pattern?: string): { enter: () => void; leave: (reason?: string) => void; isActive: () => boolean; }; /** * Create a scoped abort manager for specific routes * * @param routeName - Name of the route * @returns Abort manager functions * * @example * ```tsx * const profileRoute = createRouteScope('profile'); * * // Register requests for this route * profileRoute.register('/api/profile'); * profileRoute.register('/api/posts'); * * // Abort all when leaving * profileRoute.abortAll(); * ``` */ export declare function createRouteScope(routeName: string): { register: (key: string) => void; unregister: (key: string) => void; abortAll: (reason?: string) => void; getActiveCount: () => number; isActive: (key: string) => boolean; }; //# sourceMappingURL=routing.d.ts.map