///
import type { NextRequest } from 'next/server';
import type { WaysPathRoutingConfig } from '@18ways/core/i18n-shared';
import type { WaysRootProps } from '@18ways/react';
import type { WaysDomainConfig } from './next-domains';
export type WaysRouterMode = 'app' | 'path' | 'none';
export type WaysLegacyRouterMode = WaysRouterMode | 'pages';
export type WaysPersistLocaleCookiePolicy = boolean | ((request: NextRequest) => boolean);
export type WaysRouteManifest = {
localized: string[];
unlocalized: string[];
ambiguous: string[];
};
export type WaysConfig = {
apiKey: WaysRootProps['apiKey'];
locale?: WaysRootProps['locale'];
acceptedLocales?: WaysRootProps['acceptedLocales'];
cacheTtl?: WaysRootProps['cacheTtl'];
fetcher?: WaysRootProps['fetcher'];
messageFormatter?: WaysRootProps['messageFormatter'];
suspenseTimeoutMs?: number;
_apiUrl?: WaysRootProps['_apiUrl'];
_requestInitDecorator?: WaysRootProps['_requestInitDecorator'];
} & {
baseLocale: string;
router?: WaysLegacyRouterMode;
domains?: WaysDomainConfig[];
localeParamName?: string;
persistLocaleCookie?: WaysPersistLocaleCookiePolicy;
requestOrigin?: string;
pathRouting?: WaysPathRoutingConfig;
routeManifest?: WaysRouteManifest;
};
export type WaysPublicConfig = Omit & {
baseLocale: string;
router: WaysRouterMode;
localeParamName: string;
pathRouting?: WaysPathRoutingConfig;
routeManifest?: WaysRouteManifest;
persistLocaleCookie?: boolean;
};