import * as React from 'react';
import type { Language, LocalizedLabel } from '../../types';
/**
 * 2뎁스 메뉴 항목 정의.
 * 자식 링크는 모두 텍스트 기반으로 렌더링되며, 외부 링크 여부는 `target`으로 제어합니다.
 */
interface MenuLinkChild {
    name: LocalizedLabel;
    url: string;
    target?: string;
}
/**
 * 일반 텍스트형 1뎁스 메뉴 항목.
 * `children` 배열을 지정하면 드롭다운으로 2뎁스 메뉴가 노출됩니다.
 */
interface NamedMenuItem {
    name: LocalizedLabel;
    url: string;
    target?: string;
    children?: MenuLinkChild[];
    logo?: never;
}
/**
 * 로고를 활용한 1뎁스 메뉴 항목.
 * 텍스트 대신 로고 렌더링이 필요한 제품 바로가기에 사용합니다.
 */
interface LogoMenuItem<TLogo extends string = string> {
    logo: TLogo;
    url: string;
    target?: string;
    name?: never;
    children?: never;
}
/** 메뉴 항목 공통 타입. 로고형과 텍스트형을 함께 관리할 때 사용합니다. */
type MenuItem<TLogo extends string = string> = NamedMenuItem | LogoMenuItem<TLogo>;
/** 메뉴 공통 속성. 데스크톱/모바일/compact 변형에서 공유합니다. */
interface MenuBaseProps<TLogo extends string = string> {
    menuLinks: MenuItem<TLogo>[];
    language: Language;
    className?: string;
}
/**
 * GNB 공통 메뉴 컴포넌트 속성.
 * `variant`로 데스크톱/모바일 렌더링 방식을 선택하고, 각 변형에 필요한 콜백을 전달합니다.
 */
interface MenuProps<TLogo extends string = string> extends MenuBaseProps<TLogo> {
    variant?: 'desktop' | 'mobile';
    onNavigate?: () => void;
    packageMode?: boolean;
    resolveLogo?: (logo: TLogo) => React.ReactNode;
    resolveLogoLabel?: (logo: TLogo, language: Language) => string;
}
declare const Menu: {
    <TLogo extends string>({ menuLinks, language, className, variant, onNavigate, packageMode, resolveLogo, resolveLogoLabel, }: MenuProps<TLogo>): React.JSX.Element | null;
    displayName: string;
};
export type { LogoMenuItem, MenuItem, MenuLinkChild };
export default Menu;
//# sourceMappingURL=Menu.d.ts.map