import { ImproveServerSDK } from '@obelism/improve-sdk/server';
import { NextURL } from 'next/dist/server/web/next-url';
import { NextRequest, NextResponse } from 'next/server';
import { ResponseCookie } from 'next/dist/compiled/@edge-runtime/cookies';

type OptionConfig = {
    value: string;
    slug: string;
};
type ServerABTestConfig = {
    slug: string;
    routeHandler: string;
    formatSlug?: (url: NextURL, matchingOption: OptionConfig) => NextURL;
    options: OptionConfig[];
};
type GenerateImproveNextMiddlewareArgs = {
    improveSdk: ImproveServerSDK;
    serverABtests: ServerABTestConfig[];
    options?: {
        visitorId?: ResponseCookie;
        testValue?: ResponseCookie;
    };
};
declare const generateImproveNextMiddleware: (args: GenerateImproveNextMiddlewareArgs) => (request: NextRequest) => NextResponse<unknown>;

export { type GenerateImproveNextMiddlewareArgs, type OptionConfig, type ServerABTestConfig, generateImproveNextMiddleware };
