export interface Asset {
    id: string;
    url: string;
    name?: string;
    thumbnailUrl?: string;
    mimeType?: string;
    sizeBytes?: number;
}
export type AssetPickerValue = Asset | {
    id?: string;
    url?: string;
    name?: string;
} | string | null;
export interface AssetPickerFileProps {
    modelValue?: AssetPickerValue;
    id?: string;
    name?: string;
    label?: string;
    hideLabel?: boolean;
    required?: boolean;
    readonly?: boolean;
    disabled?: boolean;
    helpText?: string;
    errors?: string[];
    /** Required — called when the picker dialog opens. */
    onBrowse?: () => Promise<Asset[]>;
    /** Optional — when provided, an "Upload new" button appears in the dialog. */
    onUpload?: (file: File) => Promise<Asset>;
    /** File-input `accept` attribute for the upload flow. */
    acceptedFileTypes?: string[];
}
type __VLS_Props = AssetPickerFileProps;
type __VLS_PublicProps = {
    "modelValue"?: AssetPickerValue;
} & __VLS_Props;
declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
    "update:modelValue": (value: AssetPickerValue) => any;
}, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
    "onUpdate:modelValue"?: ((value: AssetPickerValue) => any) | undefined;
}>, {
    acceptedFileTypes: string[];
    errors: string[];
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
    fileInput: HTMLInputElement;
}, HTMLDivElement>;
export default _default;
//# sourceMappingURL=AssetPickerFile.vue.d.ts.map