import { PersianDate } from './modules/core';
export { PersianDate };
import type { HTMLInputAttributes } from 'svelte/elements';
import type { Langs, RecursivePartial, Styles, Disable, Shortcuts } from './modules/types';
/**
 * Props interface for the Persian DatePicker component
 * This component supports Jalali (Persian), Gregorian, and Hijri calendars
 * with various selection modes and customization options.
 */
export interface DatePickerProps {
    /**
     * Callback fired when a date is selected (but not necessarily submitted)
     * @example <DatePicker select={(date) => console.log('Selected:', date.toString())} />
     */
    select?: (date: PersianDate) => void;
    /**
     * Callback fired when date selection is submitted/confirmed
     * @example <DatePicker submit={(dates) => console.log('Submitted:', dates)} />
     */
    submit?: (date: PersianDate | PersianDate[]) => void;
    /**
     * Callback fired when the input is cleared
     * @example <DatePicker clear={() => console.log('Input cleared')} />
     */
    clear?: () => void;
    /**
     * Callback fired when the datepicker opens
     * @example <DatePicker open={() => setIsOpen(true)} />
     */
    open?: () => void;
    /**
     * Callback fired when the datepicker closes
     * @example <DatePicker close={() => setIsOpen(false)} />
     */
    close?: () => void;
    /**
     * The datepicker model value - bindable prop that holds selected date(s)
     * @bindable - This prop is bindable and will update parent component
     * @example
     * // Single date
     * <DatePicker bind:model={selectedDate} />
     * // Multiple dates
     * <DatePicker mode="multiple" bind:model={selectedDates} />
     */
    model?: PersianDate | PersianDate[] | string | string[];
    /**
     * Date format for the model value (always stored in Gregorian)
     * @default 'YYYY-MM-DD' for date, 'YYYY-MM-DD HH:mm' for datetime, 'HH:mm' for time
     * @example format="YYYY/MM/DD"
     */
    format?: string;
    /**
     * Format for user input parsing - determined by input_calendar setting
     * @default Auto-determined based on input_calendar and locale
     * @example input_format="jYYYY/jMM/jDD" for Jalali calendar
     */
    input_format?: string;
    /**
     * Format for displaying dates in the UI
     * @default Auto-determined based on locale and calendar
     * @example display_format="?jD ?jMMMM ?jYYYY" for Persian display
     */
    display_format?: string;
    /**
     * Calendar system to use for input display and parsing
     * @default 'auto' - uses locale's default calendar
     * - 'auto': Automatically determined by locale
     * - 'jalali': Persian/Jalali calendar
     * - 'gregorian': Gregorian calendar
     */
    input_calendar?: 'auto' | 'jalali' | 'gregorian';
    /**
     * Type of date/time picker to display
     * @default 'date'
     * - 'date': Date selection only
     * - 'time': Time selection only
     * - 'datetime': Both date and time selection
     */
    type?: 'date' | 'time' | 'datetime';
    /**
     * Minimum selectable date/time
     * @default new Date() set to year 1921 for date/datetime, undefined for time
     * @example from={new Date('2024-01-01')} or leave undefined for time
     */
    from?: Date;
    /**
     * Maximum selectable date/time
     * @default new Date() set to year 2051 for date/datetime, undefined for time
     * @example to={new Date('2030-12-31')} or leave undefined for time
     */
    to?: Date;
    /**
     * Controls whether the datepicker is initially visible
     * @default false
     */
    show?: boolean;
    /**
     * Defines which elements can trigger the datepicker to open
     * @default 'all'
     * - 'all': Click on input or icon
     * - 'input': Click only on input field
     * - 'icon': Click only on calendar icon
     * - 'none': No click interaction (programmatic only)
     */
    click_on?: 'all' | 'input' | 'icon' | 'none';
    /**
     * Whether to show datepicker as a modal overlay
     * @default false
     */
    modal?: boolean;
    /**
     * Label text to display above the input
     * @example label="Select Date"
     */
    label?: string;
    /**
     * Number of calendar columns to display or responsive breakpoints
     * @default 1
     * @example column={2} or column={{768: 1, 1024: 2}} for responsive
     */
    column?: number | Record<number, number>;
    /**
     * Whether to automatically submit when selection is complete
     * @default true
     * - true: Auto-submit on single/range completion
     * - false: Requires manual submit button click
     */
    auto_submit?: boolean;
    /**
     * Date selection mode
     * @default 'single'
     * - 'single': Select one date
     * - 'range': Select a date range (start and end)
     * - 'multiple': Select multiple individual dates
     */
    mode?: 'single' | 'range' | 'multiple';
    /**
     * Locale for language and calendar system
     * @default 'fa' (Persian/Farsi)
     * @example locale="en" for English, locale="ar" for Arabic
     * Multiple locales: locale="fa,en" (user can toggle)
     */
    locale?: string;
    /**
     * Whether to show a clear button for the input
     * @default true
     */
    clearable?: boolean;
    /**
     * Disable specific dates, date ranges, or patterns
     * @example
     * // Disable specific dates
     * disable={['1403/01/01', '1403/01/02']}
     * // Disable with function
     * disable={(date) => date.day() === 6} // Disable Fridays
     */
    disable?: Disable;
    /**
     * Custom locale configuration to override defaults
     * @example locale_config={{fa: {months: ['Jan', 'Feb', ...]}}}
     */
    locale_config?: RecursivePartial<Langs>;
    /**
     * Custom CSS styles to apply to the component
     * @example styles={{input: {backgroundColor: '#f0f0f0'}}}
     */
    styles?: Styles;
    /**
     * Pre-defined color theme for the datepicker
     * @default undefined (uses default theme)
     */
    color?: 'primary' | 'blue' | 'red' | 'pink' | 'orange' | 'green' | 'purple' | 'gray';
    /**
     * Use separate input fields for range selection (from/to inputs)
     * @default false
     * Only applicable when mode="range"
     */
    dual_input?: boolean;
    /**
     * Position the calendar icon inside the input field
     * @default false
     */
    icon_inside?: boolean;
    /**
     * Enable shortcut buttons for quick date selection
     * @default false
     * @example
     * shortcut={true} // Use default shortcuts
     * shortcut={{'Today': [new PersianDate()], 'Yesterday': [new PersianDate().subDay()]}}
     */
    shortcut?: boolean | Shortcuts;
}
type Props = DatePickerProps;
type $$ComponentProps = Props & HTMLInputAttributes;
declare const DatePicker: import("svelte").Component<$$ComponentProps, {}, "model">;
type DatePicker = ReturnType<typeof DatePicker>;
export default DatePicker;
