import type { Asset } from "../types/editor";
import "./dialog.css";
import "./AssetManagerModal.css";
export interface AssetManagerModalProps {
    open: boolean;
    onClose: () => void;
    onLoadAssets?: () => Promise<Asset[]>;
    onLoadLibraryAssets?: () => Promise<Asset[]>;
    /** Insert an asset tag at the cursor position. */
    onInsert: (asset: Asset) => void;
    /** Associate a library asset with the current project. */
    onAddFromLibrary?: (asset: Asset) => Promise<void> | void;
    /** Upload an image file; host returns the created asset. */
    onUpload?: (file: File) => Promise<Asset>;
    /**
     * Fetch an external URL on the user's behalf (server-side, to avoid CORS)
     * and return the raw file bytes. Must not create a persisted asset — the
     * returned file is then committed via `onUpload`, the same as a local
     * file pick, so there is a single code path that creates project assets.
     */
    onFetchUrl?: (url: string) => Promise<File>;
    /** Create a new Doenet activity; host returns the created asset. */
    onCreateDoenet?: (name: string, ref: string) => Promise<Asset>;
    /** Remove an asset from the project. */
    onRemoveAsset?: (asset: Asset) => void;
}
declare const AssetManagerModal: ({ open, onClose, onLoadAssets, onLoadLibraryAssets, onInsert, onAddFromLibrary, onUpload, onFetchUrl, onCreateDoenet, onRemoveAsset, }: AssetManagerModalProps) => import("react").JSX.Element | null;
export default AssetManagerModal;
