/** Single policy item (required or optional) with label and optional document URL */
export interface PolicyItem {
    /** Optional id for tracking (e.g. 'privacy' | 'service' | 'marketing') */
    id?: string;
    /** Checkbox label */
    label: string;
    /** If true, submit is disabled until this is checked */
    required: boolean;
    /** URL for "view" link. Per-locale object or single string. */
    url?: Record<string, string> | string;
}
export interface PolicyModalProps {
    /** Modal title */
    title: string;
    /** Optional description (e.g. for screen readers) */
    description?: string;
    /** Policy items. Single or multiple; "전체 동의" row when length > 1. */
    items: PolicyItem[];
    /** Label for the "view" link to policy document */
    viewLabel: string;
    /** Label for the submit/consent button */
    signUpLabel: string;
    /** Label for "agree to all" checkbox (when items.length > 1). Default: "전체 동의" */
    allAgreeLabel?: string;
    /** Prefix for required items (e.g. "[필수] "). Default: "[필수] " */
    requiredPrefix?: string;
    /** Prefix for optional items (e.g. "[선택] "). Default: "[선택] " */
    optionalPrefix?: string;
    /** Current language to pick URL from item.url (e.g. 'en' | 'ko') */
    language?: string;
    /** Called when user submits consent. (allRequiredChecked, allOptionalChecked) */
    onConsent: (allRequiredChecked: boolean, allOptionalChecked: boolean) => void | Promise<void>;
    /** Called when modal is closed (e.g. overlay click, close button) */
    onClose: () => void;
}
export declare function PolicyModal({ title, description, items, viewLabel, signUpLabel, allAgreeLabel, requiredPrefix, optionalPrefix, language, onConsent, onClose, }: PolicyModalProps): import("react").JSX.Element;
//# sourceMappingURL=Policy.d.ts.map