import { ChangeEvent, InputHTMLAttributes, ReactNode } from 'react';
import { IDatepickerStrings } from '../../shared-types/datepicker';
import { TPktInputSize } from '../../shared-types/size';
export interface IPktDatepicker extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'> {
    id: string;
    label: string;
    value?: string | string[];
    dateformat?: string;
    multiple?: boolean;
    maxlength?: number;
    range?: boolean;
    showRangeLabels?: boolean;
    weeknumbers?: boolean;
    withcontrols?: boolean;
    excludedates?: string[];
    excludeweekdays?: string[];
    currentmonth?: string;
    today?: string;
    calendarOpen?: boolean;
    timezone?: string;
    fullwidth?: boolean;
    inputSize?: TPktInputSize;
    hasFieldset?: boolean;
    inline?: boolean;
    helptext?: string | ReactNode;
    helptextDropdown?: string | ReactNode;
    helptextDropdownButton?: string;
    hasError?: boolean;
    errorMessage?: string | ReactNode;
    optionalTag?: boolean;
    optionalText?: string;
    requiredTag?: boolean;
    requiredText?: string;
    tagText?: string;
    useWrapper?: boolean;
    strings?: IDatepickerStrings;
    onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
    onValueChange?: (values: string[]) => void;
    className?: string;
}
export interface IDatepickerState {
    id: string;
    inputId: string;
    values: string[];
    calendarOpen: boolean;
    label: string;
    dateformat: string;
    multiple: boolean;
    maxlength?: number;
    range: boolean;
    showRangeLabels: boolean;
    weeknumbers: boolean;
    withcontrols: boolean;
    excludedates?: string[];
    excludeweekdays?: string[];
    disabled: boolean;
    readOnly: boolean;
    required: boolean;
    name?: string;
    placeholder?: string;
    fullwidth: boolean;
    inputSize: TPktInputSize;
    hasFieldset: boolean;
    inline: boolean;
    helptext?: string | ReactNode;
    helptextDropdown?: string | ReactNode;
    helptextDropdownButton?: string;
    hasError: boolean;
    errorMessage?: string | ReactNode;
    optionalTag: boolean;
    optionalText?: string;
    requiredTag: boolean;
    requiredText?: string;
    tagText?: string;
    useWrapper: boolean;
    className?: string;
    minStr?: string;
    maxStr?: string;
    effectiveCurrentMonth?: string;
    today?: string;
    inputType: string;
    isIOSDevice: boolean;
    strings: IDatepickerStrings;
    inputClasses: string;
    buttonClasses: string;
    rangeLabelClasses: string;
    datepickerInputsClasses: string;
    isInputDisabled: boolean;
    hasCounter: boolean;
    inputRef: React.RefObject<HTMLInputElement | null>;
    inputRefTo: React.RefObject<HTMLInputElement | null>;
    changeInputRef: React.RefObject<HTMLInputElement | null>;
    btnRef: React.RefObject<HTMLButtonElement | null>;
    wrapperRef: React.RefObject<HTMLDivElement | null>;
    onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
    toggleCalendar: () => void;
    hideCalendar: () => void;
    handleDateSelected: (selected: string[]) => void;
    handleCalendarClose: () => void;
    handleFocus: () => void;
    handleSingleInputChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
    handleRangeFromChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
    handleRangeToChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
    handleRangeBlur: () => void;
    handleMultipleBlur: (e: React.FocusEvent<HTMLInputElement>) => void;
    handleTagRemoved: (date: string) => void;
    handleSingleKeydown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
    handleRangeFromKeydown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
    handleRangeToKeydown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
    handleMultipleKeydown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
    restProps: Record<string, unknown>;
}
