import { FC } from 'react'; interface Props { onFiles: (files: FileList | null) => void; /** * The OS picker is about to take over the screen. * * ★ Exists for the voice session, which must release the microphone before the * camera app claims it. Fired on the `.click()` rather than on selection, * because by the time a file arrives the damage is done — and a CANCELLED * picker never reports anything at all. */ onPickerOpen?: () => void; /** * Which way the source menu opens. * * ★ 'up' is right for the COMPOSER, which sits at the bottom of the panel — a * downward menu there is clipped by the panel edge at every size. It is wrong * for the voice session, whose attach control is anchored at the TOP: the menu * would open above the button, outside the panel, and all four sources would be * unreachable. The control would look present and do nothing. */ direction?: "up" | "down"; /** False once MAX_ATTACHMENTS is reached — the control explains why. */ canAddMore: boolean; disabled?: boolean; } /** * Leading circular "+" attach control in the composer. * * ★ Opens a SOURCE MENU rather than the OS picker directly. One picker had to * stand in for every source, and on a phone it lands in Files — so * photographing a diseased leaf, the single most likely thing a farmer wants to * show the assistant, meant leaving for the camera app and coming back. * * ★ One input, reconfigured per source, rather than one input each. `accept` and * `capture` are set immediately before `.click()`, so there is exactly one place * a change event can arrive from and the existing `onFiles` contract — shared * with drag-drop and paste — is untouched. * * ★ Camera uses the `capture` attribute rather than a bespoke `getUserMedia` * viewfinder. That hands capture → preview → retake → use to the OS camera, * which does it better, is already localised, and cannot be exercised on a * desktop CI box at all; on a device without a camera the attribute is ignored * and the picker opens as usual, so it degrades instead of breaking. * * `accept` is advisory — the picker still allows "All files" on most platforms — * so validation lives in `validateFile`, not here. */ export declare const AssistantAttachmentButton: FC; export {}; //# sourceMappingURL=AssistantAttachmentButton.d.ts.map