import { on, type CSSMixinDescriptor, type Dispatched, type ElementProps, type Handle, type MixinFactory, type Props, type RemixNode } from '@remix-run/ui'; import * as listbox from '../listbox/listbox.ts'; import * as popover from '../popover/popover.ts'; declare const SELECT_CHANGE_EVENT: "rmx:select-change"; type SelectChangeHandler = (event: Dispatched, signal: AbortSignal) => void | Promise; declare global { interface HTMLElementEventMap { [SELECT_CHANGE_EVENT]: SelectChangeEvent; } } export declare class SelectChangeEvent extends Event { readonly label: string | null; readonly optionId: string | null; readonly value: string | null; constructor({ label, optionId, value, }: { label: string | null; optionId: string | null; value: string | null; }); } export interface SelectContextProps { children?: RemixNode; defaultLabel: string; defaultValue?: string | null; disabled?: boolean; name?: string; } export interface SelectProps extends Omit, 'children' | 'name'> { children?: RemixNode; defaultLabel: string; defaultValue?: string | null; name?: string; } export type SelectOptionProps = Props<'div'> & Omit; interface SelectContextValue { readonly activeId: string | undefined; readonly disabled: boolean; readonly displayedLabel: string; readonly isExpanded: boolean; readonly isOpen: boolean; readonly listId: string; readonly name: string | undefined; readonly selectedId: string | undefined; readonly value: listbox.ListboxValue; close: () => void; open: () => void; registerPopoverContext: (context: popover.PopoverContext) => void; registerSurface: (node: HTMLElement) => void; registerTrigger: (node: HTMLButtonElement) => void; selectTypeaheadMatch: (text: string) => void; syncPopoverMinWidth: () => void; unregisterPopoverContext: (context: popover.PopoverContext) => void; unregisterSurface: (node: HTMLElement) => void; unregisterTrigger: (node: HTMLButtonElement) => void; } declare function SelectProvider(handle: Handle): () => RemixNode; declare const popoverMixin: MixinFactory; export declare const triggerStyle: CSSMixinDescriptor; export declare const Context: typeof SelectProvider; export declare const hiddenInput: MixinFactory; export declare const list: MixinFactory; export declare const option: MixinFactory], ElementProps>; export { popoverMixin as popover }; export declare const trigger: MixinFactory; export declare function onSelectChange(handler: SelectChangeHandler, captureBoolean?: boolean): ReturnType>; export declare function Select(handle: Handle): () => RemixNode; export declare function Option(handle: Handle): () => RemixNode;