import React from "react";
import { type PortalContainer } from "../PortalDismissLayer.js";
/**
* A date range represented as a start/end tuple. Either element may be
* `null` when the range is partially selected.
*/
export type DateRange = readonly [Date | null, Date | null];
/** Default empty range — both bounds are null. */
export declare const EMPTY_RANGE: DateRange;
/**
* Props for the shared DateRangePicker. Used by filter-list's date-range
* histogram and action-form's `DATE_RANGE_INPUT` field kind. `id` and
* `error` are optional so non-form callers can omit them.
*
* Renders two text inputs (start / end) with a shared calendar popover
* supporting range selection.
*/
export interface DateRangePickerProps {
	/**
	* The HTML `id` attribute for the start input element. Used for
	* `<label htmlFor>` association in form contexts.
	*/
	id?: string;
	/**
	* Visual error state for the inputs. Set by form validation in
	* action-form contexts; non-form callers typically omit it.
	*/
	error?: string;
	/** The currently-selected range, or `null` for empty. */
	value: DateRange | null;
	/** Called when the user selects or types a new range. */
	onChange?: (value: DateRange | null) => void;
	/** Whether the picker is disabled. */
	disabled?: boolean;
	/** The earliest selectable date. */
	min?: Date;
	/** The latest selectable date. */
	max?: Date;
	/** Whether to show time pickers for both dates. */
	showTime?: boolean;
	/** Placeholder text for the start date input. */
	placeholderStart?: string;
	/** Placeholder text for the end date input. */
	placeholderEnd?: string;
	/** Whether to allow start and end on the same day. @default true */
	allowSingleDayRange?: boolean;
	/** Formats a Date for display. Defaults to "YYYY-MM-DD". */
	formatDate?: (date: Date) => string;
	/** Parses a user-typed string back into a Date. */
	parseDate?: (text: string) => Date | undefined;
	/**
	* Element that receives the date range picker portal. Use this when
	* rendering inside modal dialogs so popovers stay in the dialog's
	* stacking and focus context instead of being appended directly to
	* document.body.
	*/
	portalContainer?: PortalContainer;
	/**
	* Popover modality. Defaults to `"trap-focus"`, which traps Tab cycling
	* inside the calendar and renders a transparent dismiss layer over the
	* page. Pass `false` when nesting this picker inside another popover so
	* the inner dismiss layer doesn't intercept clicks intended for the
	* outer popover and base-ui's default outside-click handles dismissal
	* instead.
	*/
	modal?: "trap-focus" | false;
}
export declare const DateRangePicker: React.NamedExoticComponent<DateRangePickerProps>;
