export interface DateRange {
    startDate: Date;
    endDate: Date;
}
export type SelectionMode = 'days' | 'months' | 'years';
export type ViewMode = 'day' | 'month' | 'year';
export interface ValidationRule {
    /** 선택 가능한 최대 일수 */
    maxDays?: number;
    /** 선택 가능한 최대 월수 */
    maxMonths?: number;
    /** 선택 가능한 최대 년수 */
    maxYears?: number;
    /** 선택 가능한 최소 날짜 (이 날짜 이전은 비활성화) */
    minDate?: Date;
    /** 선택 가능한 최대 날짜 (이 날짜 이후는 비활성화) */
    maxDate?: Date;
}
export interface Category {
    key: ViewMode;
    label: string;
    disabled?: boolean;
}
export interface DateRangePickerLabels {
    /** 일 선택 탭 라벨 (범위 선택) */
    day?: string;
    /** 월 선택 탭 라벨 */
    month?: string;
    /** 년 선택 탭 라벨 */
    year?: string;
    /** 초기화 버튼 */
    reset?: string;
    /** 취소 버튼 */
    cancel?: string;
    /** 확인 버튼 */
    apply?: string;
    /** 요일 (일~토) */
    weekdays?: string[];
    /** 월 이름 (1~12월) */
    months?: string[];
    /** 이전 버튼 aria-label */
    previous?: string;
    /** 다음 버튼 aria-label */
    next?: string;
    /** 검증 에러 메시지 */
    validation?: {
        noSelection?: string;
        maxDays?: string;
        maxMonths?: string;
        maxYears?: string;
        error?: string;
    };
    /** 접근성 라벨 */
    accessibility?: {
        /** 트리거 버튼 aria-label */
        triggerLabel?: string;
        /** 날짜 버튼 aria-label 포맷 (예: "{year}년 {month}월 {day}일 선택") */
        dateButtonLabel?: string;
        /** 월 버튼 aria-label 포맷 (예: "{year}년 {month} 선택") */
        monthButtonLabel?: string;
        /** 연도 버튼 aria-label 포맷 (예: "{year}년 선택") */
        yearButtonLabel?: string;
        /** 선택됨 상태 */
        selected?: string;
        /** 오늘 */
        today?: string;
        /** 비활성화됨 */
        disabled?: string;
        /** 초기화 버튼 */
        resetButton?: string;
        /** 취소 버튼 */
        cancelButton?: string;
        /** 확인 버튼 */
        applyButton?: string;
    };
}
export type DateRangePickerPlacement = 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';
export type DateFormat = 'ko-KR' | 'en-US';
export interface DateRangePickerProps {
    /** 날짜 범위 적용 시 호출되는 콜백 */
    onDateRangeApply?: (dateRange: DateRange, selectedDates: Date[], selectionMode: SelectionMode) => void;
    /** 검증 에러 발생 시 호출되는 콜백 */
    onError?: (message: string) => void;
    /** 초기 날짜 범위 */
    initialDateRange?: DateRange;
    /** 검증 규칙 */
    validationRules?: ValidationRule;
    /** 커스텀 카테고리 (탭) 설정 */
    categories?: Category[];
    /** 기본 뷰 모드 */
    defaultViewMode?: ViewMode;
    /** 활성화할 모드들 */
    enabledModes?: ViewMode[];
    /** 연도 선택 범위 */
    yearRange?: {
        min: number;
        max: number;
    };
    /** 드롭다운 위치 */
    placement?: DateRangePickerPlacement;
    /** 추가 CSS 클래스 */
    className?: string;
    /** 버튼 최소 너비 (px) */
    buttonMinWidth?: number;
    /** 로케일 (날짜 포맷용) */
    locale?: 'ko' | 'en';
    /** 날짜 포맷 */
    dateFormat?: DateFormat;
    /** 드롭다운 z-index */
    zIndex?: number;
    /** 에러 상태 */
    error?: boolean;
    /** 컴포넌트 ID */
    id?: string;
    /** 커스텀 라벨 (i18n용) */
    labels?: DateRangePickerLabels;
    /** 비활성화 여부 */
    disabled?: boolean;
    /** Popover 없이 컨텐츠만 렌더링 (외부 Popover 사용 시) */
    withoutPopover?: boolean;
    /** 취소 버튼 클릭 시 콜백 (withoutPopover 모드에서 사용) */
    onCancel?: () => void;
}
export interface InternalState {
    viewMode: ViewMode;
    selectedDays: Date[];
    selectedRange: Date[];
    selectedMonths: Date[];
    selectedYears: Date[];
    rangeSelectionState: 'start' | 'end';
    monthRangeSelectionState: 'start' | 'end';
    yearRangeSelectionState: 'start' | 'end';
    dayCurrentDate: Date;
    monthCurrentDate: Date;
    yearCurrentDate: Date;
}
//# sourceMappingURL=types.d.ts.map