import type { RegionConfig } from './type.js'; export interface UseRedirectBannerOptions { /** * 地理位置信息 */ geo?: { country?: { code?: string; }; }; /** * 地区配置列表 */ regions: RegionConfig[]; /** * 国家到地区的映射 */ countryToRegionMap: Record; /** * 当前站点的地区代码 */ currentRegionCode: string; /** * 当前路径 */ pathname: string; /** * 白名单路径(在白名单中不显示横幅) */ excludePaths?: string[]; /** * 保存地区选择的函数 */ saveRegion: (regionCode: string, languageCode?: string) => void; /** * 打开地区选择弹窗的函数 */ setModalOpen: (open: boolean) => void; } export interface UseRedirectBannerReturn { /** * 横幅是否可见 */ bannerVisible: boolean; /** * 设置横幅可见性 */ setBannerVisible: (visible: boolean) => void; /** * 推荐的地区信息 */ recommendedRegion: (RegionConfig & { userCountry?: string; }) | null; /** * 用户是否手动关闭了横幅 */ userDismissedBanner: boolean; /** * 设置用户已关闭横幅的状态 */ setUserDismissedBanner: (dismissed: boolean) => void; /** * "留在这里"按钮处理函数 */ handleStayHere: () => void; /** * "切换站点"按钮处理函数 */ handleSwitchSite: () => void; } /** * 地区重定向横幅控制 Hook * * 自动检测用户是否被重定向,并显示提示横幅 * 提供"留在这里"和"切换站点"的交互 * * @example * ```tsx * const { * bannerVisible, * setBannerVisible, * recommendedRegion, * handleStayHere, * handleSwitchSite, * } = useRedirectBanner({ * geo, * regions, * countryToRegionMap, * currentRegionCode, * pathname, * excludePaths, * saveRegion, * setModalOpen, * }) * * return ( * * ) * ``` */ export declare function useRedirectBanner(options: UseRedirectBannerOptions): UseRedirectBannerReturn;