import React, { type AriaAttributes } from 'react';
import type { CommonProps } from '../../internal/CommonWrapper';
import { DateInput } from '../DateInput';
import type { DatePickerProps } from '../DatePicker';
import type { InstanceWithRootNode } from '../../lib/rootNode';
import type { DateRangePickerInputType } from './DateRangePickerInput';
import { validateDateRangePicker } from './helpers/validateDateRangePicker';
export declare const DateRangePickerDataTids: {
    readonly root: "DateRangePicker__root";
    readonly start: "DateRangePicker__start";
    readonly end: "DateRangePicker__end";
    readonly popup: "DateRangePicker__popup";
    readonly calendar: "DateRangePicker__calendar";
    readonly todayButton: "DateRangePicker__todayButton";
    readonly startOptionalButton: "DateRangePicker__startOptionalButton";
    readonly endOptionalButton: "DateRangePicker__endOptionalButton";
    readonly mobileStart: "DateRangePicker__mobileStart";
    readonly mobileEnd: "DateRangePicker__mobileEnd";
    readonly rangeStart: "DateRangePicker__rangeStart";
    readonly rangeEnd: "DateRangePicker__rangeEnd";
};
export interface DateRangePickerProps extends CommonProps, Pick<AriaAttributes, 'aria-describedby' | 'aria-label' | 'aria-labelledby'>, Pick<DatePickerProps, 'size' | 'width' | 'renderDay' | 'menuPos' | 'menuAlign' | 'useMobileNativeDatePicker' | 'enableTodayLink' | 'onMonthChange'> {
    /**
     * Элемент относительно которого открывается календарь,
     * Если передать значение `focused` - меню будет открываться у зафокусированного элемента.
     * Если передать ссылку на DOM элемент или ref - меню откроется относительно переданного элемента.
     */
    menuAnchorElement?: 'focused' | Element | React.ReactNode | React.RefObject<any>;
    /**
     * Элементы DateRangePicker:
     * `<DateRangePicker.Start />`
     * `<DateRangePicker.Separator />`
     * `<DateRangePicker.End />`
     */
    children: React.ReactNode;
}
export interface DateRangePickerRef extends InstanceWithRootNode {
    open: (inputType?: DateRangePickerInputType) => void;
    close: () => void;
    scrollToMonth: (month: number, year: number) => void;
}
export type DateRangePicker = DateRangePickerRef;
export declare const DateRangePicker: {
    Start: import("../../lib/forwardRefAndName").ReactUIComponentWithRef<DateInput, {
        style?: React.CSSProperties | undefined;
        children?: React.ReactNode;
        className?: string | undefined;
        onValueChange?: ((value: string) => void) | undefined;
        disabled?: boolean | undefined;
        size?: import("../..").SizeProp | undefined;
        value?: string | null | undefined;
        width?: string | number | undefined;
        autoFocus?: boolean | undefined;
        id?: string | undefined;
        "aria-describedby"?: string | undefined;
        "aria-label"?: string | undefined;
        "aria-labelledby"?: string | undefined;
        onFocus?: ((x0: React.FocusEvent<HTMLElement, Element>) => void) | undefined;
        onBlur?: ((x0: React.FocusEvent<HTMLElement, Element>) => void) | undefined;
        onKeyDown?: ((x0: React.KeyboardEvent<HTMLElement>) => void) | undefined;
        onClick?: ((x0: React.MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
        'data-tid'?: string | undefined;
        error?: boolean | undefined;
        warning?: boolean | undefined;
        minDate?: string | undefined;
        maxDate?: string | undefined;
        withIcon?: boolean | undefined;
        optional?: boolean | undefined;
    }> & Record<never, never>;
    End: import("../../lib/forwardRefAndName").ReactUIComponentWithRef<DateInput, {
        style?: React.CSSProperties | undefined;
        children?: React.ReactNode;
        className?: string | undefined;
        onValueChange?: ((value: string) => void) | undefined;
        disabled?: boolean | undefined;
        size?: import("../..").SizeProp | undefined;
        value?: string | null | undefined;
        width?: string | number | undefined;
        autoFocus?: boolean | undefined;
        id?: string | undefined;
        "aria-describedby"?: string | undefined;
        "aria-label"?: string | undefined;
        "aria-labelledby"?: string | undefined;
        onFocus?: ((x0: React.FocusEvent<HTMLElement, Element>) => void) | undefined;
        onBlur?: ((x0: React.FocusEvent<HTMLElement, Element>) => void) | undefined;
        onKeyDown?: ((x0: React.KeyboardEvent<HTMLElement>) => void) | undefined;
        onClick?: ((x0: React.MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
        'data-tid'?: string | undefined;
        error?: boolean | undefined;
        warning?: boolean | undefined;
        minDate?: string | undefined;
        maxDate?: string | undefined;
        withIcon?: boolean | undefined;
        optional?: boolean | undefined;
    }> & Record<never, never>;
    Separator: () => React.JSX.Element;
    validate: typeof validateDateRangePicker;
} & import("../../lib/forwardRefAndName").ReactUIComponentWithRef<DateRangePickerRef, DateRangePickerProps> & Record<never, never>;
