import { NextFetchEvent, NextRequest, NextResponse } from "next/server";
type ReturnResponse = void | Response | NextResponse | Promise<void | Response | NextResponse>;
/**
 * 拦截器处理函数类型
 * @param request - 请求对象(NextAuthRequest/NextRequest)
 */
type InterceptorHandler<T> = (request: T, event?: NextFetchEvent) => ReturnResponse;
/**
 * 拦截器配置接口
 */
interface InterceptorConfig {
    /** 拦截器唯一标识 */
    id: string;
    /** 匹配模式：字符串、正则表达式或它们的数组 */
    pattern: string | RegExp | Array<string | RegExp>;
    /** 排除模式：字符串、正则表达式或它们的数组（可选） */
    exclude?: string | RegExp | Array<string | RegExp>;
    /** 优先级：数字越小优先级越高 */
    priority?: number;
    /** 匹配条件 */
    conditions?: {
        /** 请求头匹配条件 */
        headers?: Record<string, string | RegExp>;
        /** 查询参数匹配条件 */
        query?: Record<string, string | RegExp>;
        /** Cookie 匹配条件 */
        cookies?: Record<string, string | RegExp>;
    };
}
export declare class InterceptorRegistry<T extends NextRequest = NextRequest> {
    private interceptors;
    use(config: InterceptorConfig, handler: InterceptorHandler<T>): this;
    getPatterns(): (string | RegExp)[];
    /**
     * 获取所有拦截器的排除模式
     * @returns 排除模式数组
     */
    getExcludePatterns(): (string | RegExp)[];
    getMatchers(): (string | RegExp)[];
    handle(request: T, event?: NextFetchEvent): Promise<Awaited<ReturnResponse>>;
    private getSortedInterceptors;
    private matchesPattern;
    /**
     * 检查请求路径是否匹配排除模式
     * @param req - Next.js 请求对象
     * @param exclude - 排除模式：字符串、正则表达式或它们的数组
     * @returns 如果匹配任意一个排除模式则返回 true
     */
    private matchesExcludePattern;
    private matchesConditions;
    private matchesRecord;
    private matches;
}
declare const interceptorRegistry: InterceptorRegistry<NextRequest>;
export { interceptorRegistry };
export declare const interceptorMiddleware: (request: NextRequest, event?: NextFetchEvent) => Promise<Awaited<ReturnResponse>>;
