import type { ProjectAsset } from "../types/editor";
import "./dialog.css";
import "./AssetPickerDialog.css";
export interface AssetPickerDialogProps {
    open: boolean;
    onClose: () => void;
    /** Assets already associated with this project — can be inserted directly. */
    projectAssets: ProjectAsset[];
    /**
     * All assets available in the user's library (across all projects).
     * When omitted the library tab shows only projectAssets.
     */
    libraryAssets?: ProjectAsset[];
    /** Called when the user uploads a file. Host uploads to server and returns the asset record. */
    onUpload?: (file: File) => Promise<ProjectAsset>;
    /**
     * Called when the user submits an external URL. Host downloads/registers the
     * asset on the server and returns the asset record with a stable filename.
     * When omitted the URL tab inserts a synthetic asset without a server round-trip.
     */
    onAddUrl?: (url: string, name: string) => Promise<ProjectAsset>;
    /**
     * Called when the user picks a library asset not yet in this project.
     * Host should associate the asset with the project (e.g. Rails join record).
     */
    onAddFromLibrary?: (asset: ProjectAsset) => Promise<void> | void;
    /** Called with the resolved asset when the user confirms an insertion. */
    onInsert: (asset: ProjectAsset) => void;
}
declare const AssetPickerDialog: ({ open, onClose, projectAssets, libraryAssets, onUpload, onAddUrl, onAddFromLibrary, onInsert, }: AssetPickerDialogProps) => import("react/jsx-runtime").JSX.Element | null;
export default AssetPickerDialog;
