import { NextRequest, NextResponse } from "next/server";
import { InitOptions, Resource } from "i18next";

//#region src/appRouter/types.d.ts
type ResourceLoader = (language: string, namespace: string) => Promise<any>;
interface I18nConfig {
  /** Supported languages, e.g. ['en', 'de', 'it'] */
  supportedLngs: string[];
  /** Default/fallback language */
  fallbackLng: string;
  /** Default namespace (defaults to 'common') */
  defaultNS?: string;
  /** All known namespaces (defaults to [defaultNS]) */
  ns?: string[];
  /** Path to locale files relative to /public (defaults to '/locales') */
  localePath?: string;
  /** Directory structure pattern (defaults to '{{lng}}/{{ns}}') */
  localeStructure?: string;
  /** File extension (defaults to 'json') */
  localeExtension?: string;
  /** Pre-loaded resources (if provided, skips dynamic loading) */
  resources?: Resource;
  /** Custom resource loader function (overrides localePath) */
  resourceLoader?: ResourceLoader;
  /** Whether to include locale in URL path (defaults to true) */
  localeInPath?: boolean;
  /** When true (and localeInPath is true), the default language has no URL prefix.
   *  e.g. `/about` serves the default language, `/de/about` serves German.
   *  Requests to the explicit default prefix (`/en/about`) are redirected to `/about`. */
  hideDefaultLocale?: boolean;
  /** Cookie name for storing selected language (defaults to 'i18next') */
  cookieName?: string;
  /** Custom header name for passing language to server components (defaults to 'x-i18next-current-language') */
  headerName?: string;
  /** Cookie max age in seconds (defaults to 365 * 24 * 60 * 60) */
  cookieMaxAge?: number;
  /** URL path prefixes to ignore in middleware (defaults to ['/api', '/_next', '/static']) */
  ignoredPaths?: string[];
  /** Base path prefix for middleware to handle (e.g., '/app-router'). When set, the middleware only processes requests under this prefix and locale segments are placed after it. Useful for mixed App Router + Pages Router setups. */
  basePath?: string;
  /** Extra i18next plugins to use */
  use?: any[];
  /** Additional i18next init options (merged into init call) */
  i18nextOptions?: Omit<InitOptions, 'lng' | 'resources' | 'ns' | 'defaultNS' | 'supportedLngs' | 'fallbackLng'>;
  /** Legacy i18n config for Pages Router / next.config.js */
  i18n?: {
    defaultLocale: string;
    locales: string[];
    domains?: {
      defaultLocale: string;
      domain: string;
      http?: true;
      locales?: string[];
    }[];
    localeDetection?: false;
  };
  /** @deprecated Use i18nextOptions instead */
  serializeConfig?: boolean;
  /**
   * Dev-only: when true (and `NODE_ENV !== 'production'`), reload translation
   * resources from the backend before each render so edits to locale files
   * appear without restarting `next dev`. No effect in production builds.
   */
  reloadOnPrerender?: boolean;
  /** Support non-explicit language codes like 'en' matching 'en-US' */
  nonExplicitSupportedLngs?: boolean;
}
interface NormalizedConfig {
  supportedLngs: string[];
  fallbackLng: string;
  defaultNS: string;
  ns: string[];
  localeInPath: boolean;
  hideDefaultLocale: boolean;
  localePath: string;
  localeStructure: string;
  localeExtension: string;
  cookieName: string;
  headerName: string;
  cookieMaxAge: number;
  ignoredPaths: string[];
  basePath?: string;
  resources?: Resource;
  resourceLoader?: ResourceLoader;
  use: any[];
  i18nextOptions: Record<string, any>;
  nonExplicitSupportedLngs: boolean;
  i18n?: I18nConfig['i18n'];
  serializeConfig?: boolean;
  reloadOnPrerender?: boolean;
}
//#endregion
//#region src/appRouter/config.d.ts
declare function defineConfig(config: I18nConfig): I18nConfig;
declare function normalizeConfig(userConfig: I18nConfig): NormalizedConfig;
//#endregion
//#region src/appRouter/proxy/index.d.ts
declare function createProxy(userConfig: I18nConfig): (req: NextRequest) => NextResponse;
/**
 * Backwards-compatible alias for createProxy.
 * Use `createProxy` for new projects with Next.js 16+ `proxy.ts`.
 */
declare const createMiddleware: typeof createProxy;
//#endregion
export { type I18nConfig, type NormalizedConfig, type ResourceLoader, createMiddleware, createProxy, defineConfig, normalizeConfig };
//# sourceMappingURL=index.d.cts.map