import { ComputedRef } from 'vue'; import { FloatingPlacement } from '../utils'; import { PickerFormattedValue, PickerRangeFormattedValue, PickerRangeSide, PickerRangeValue, PickerValue } from './types'; export declare const POPUP_OFFSET = 4; export declare const RANGE_ARROW_SIZE = 16; export declare const RANGE_POPUP_OFFSET: number; export declare const ARROW_PLACEMENTS: FloatingPlacement[]; export declare const PANEL_OPEN_IGNORED_KEYS: string[]; export interface PickerTriggerExpose { focus: (index?: 0 | 1) => void; blur: () => void; } export interface PickerPopupExpose { actualPlacement: FloatingPlacement; panelRef?: HTMLElement | null; } export declare function isPickerFocusInside(wrapper: HTMLElement | null, popup: PickerPopupExpose | null, target: Node | null): boolean; export interface PickerShellProps { value?: PickerValue; defaultValue?: PickerValue; open?: boolean; formattedValue?: PickerFormattedValue; allowClear: boolean; allowEmpty: [boolean, boolean]; disabled: boolean | [boolean, boolean]; } export interface PickerShellOptions { props: PickerShellProps; isRange: ComputedRef; valueFormat: ComputedRef; onChange: (value: PickerValue, formatted: PickerFormattedValue) => void; onFormattedChange: (value: PickerFormattedValue) => void; onCalendarChange: (range: PickerRangeValue, formatted: PickerRangeFormattedValue | null, side: PickerRangeSide) => void; onOpenChange: (open: boolean) => void; onOpenToggle?: (open: boolean) => void; } export declare function usePickerShell(options: PickerShellOptions): { openModel: import('vue').WritableComputedRef; triggerRef: import('vue').Ref<{ focus: (index?: 0 | 1) => void; blur: () => void; } | null, PickerTriggerExpose | { focus: (index?: 0 | 1) => void; blur: () => void; } | null>; popupRef: import('vue').Ref<{ actualPlacement: FloatingPlacement; panelRef?: (HTMLElement | null) | undefined; } | null, PickerPopupExpose | { actualPlacement: FloatingPlacement; panelRef?: (HTMLElement | null) | undefined; } | null>; wrapperRef: import('vue').Ref; formattedControlled: ComputedRef; disabledSides: ComputedRef<[boolean, boolean]>; fullyDisabled: ComputedRef; innerValue: ComputedRef; rangeValue: ComputedRef; formatSideTimestamp: (timestamp: number | null | undefined) => string; showClear: ComputedRef; draftValue: import('vue').Ref; draftRange: import('vue').Ref<[number | null, number | null] | null, PickerRangeValue | [number | null, number | null] | null>; activeSide: import('vue').Ref; activeTriggerIndex: ComputedRef<1 | 0>; activatedSides: import('vue').Ref<{ start: boolean; end: boolean; }, Record | { start: boolean; end: boolean; }>; activateSide: (side: PickerRangeSide) => void; panelRangeValue: ComputedRef; commit: (timestamp: number | null) => PickerFormattedValue; commitRange: (range: PickerRangeValue | null) => PickerRangeFormattedValue | null; applyRangeSide: (timestamp: number, side: PickerRangeSide, switchSide: boolean) => { value: PickerRangeValue; formatted: PickerRangeFormattedValue | null; }; requestOpen: (next: boolean) => void; onSideFocus: (index: 0 | 1) => void; onClear: () => void; onEscKeydown: () => void; focus: () => void; blur: () => void; };