import type { OptionShape } from '../_shared/option'; export interface CityLoaderContext { signal: AbortSignal; locale: string; /** Selected country (lowercase alpha-2), passed through to bias results. */ country?: string; /** Selected province/region code, passed through to bias results. */ province?: string; } export interface CityInputProps { /** City / town name (free text). */ value?: string; defaultValue?: string; onValueChange?: (city: string) => void; /** * Optional async suggestion source. Omit → the field is a plain text * input with no suggestions. The kit never imports a geocoder; wire your * own here. */ loadCities?: (query: string, ctx: CityLoaderContext) => Promise; /** Fires when a suggestion is picked, with the full option. */ onCitySelect?: (option: OptionShape) => void; /** Passed through to `loadCities` to bias suggestions. */ country?: string; /** Passed through to `loadCities` to bias suggestions. */ province?: string; /** Frequently-picked cities surfaced before the user types. */ recents?: OptionShape[]; debounceMs?: number; /** Snap the value back to the last picked suggestion on blur. */ snapOnBlur?: boolean; placeholder?: string; /** Clear button — text-fallback mode only. */ clearable?: boolean; disabled?: boolean; readOnly?: boolean; required?: boolean; name?: string; id?: string; size?: 'sm' | 'md' | 'lg'; tone?: 'default' | 'error'; /** * Accessible name. Not needed inside a ``: the field's label * names the input in both modes. Pass it when there is no FormField. */ 'aria-label'?: string; /** Invalid-state fallback for use outside a `` (inline editors). */ 'aria-invalid'?: boolean; /** Error-message id fallback for use outside a ``. */ 'aria-describedby'?: string; className?: string; } export declare const CityInput: import("react").ForwardRefExoticComponent>; //# sourceMappingURL=city-input.d.ts.map