export interface ElectronHubApi {
    startDrag: (file: string, base?: string) => void;
    getWebdavPath: () => string;
    showOpenDialogAsync: (options: OpenDialogOptions) => Promise<{
        canceled: boolean;
        filePaths: string[];
    }>;
    showSaveDialogAsync: (options: SaveDialogOptions) => Promise<{
        canceled: boolean;
        filePath: string;
    }>;
    getCurrentVersion: () => Promise<string>;
    getLatestVersion: () => Promise<string>;
    triggerUpdate: (latestVersion: string) => void;
    controlDownloadItem: (id: string, action: "pause" | "resume" | "cancel") => void;
    openInApp: (...args: unknown[]) => void;
    installDavinciPlugin: (url: string) => Promise<{
        davinciPath: string;
        pluginsPath: string;
        zipSize: number;
    } | {
        message: string;
    }>;
    downloadFile: (options: DownloadFileOptions) => void;
    showItemInFolder: (fullPath: string) => void;
    openPath: (path: string) => void;
}
export interface DownloadFileOptions {
    /**
     * Unique ID of the download, to be used to control and track the download progress.
     */
    id?: string;
    /**
     * URL of the resource to download.
     */
    url: string;
    filename?: string;
    directory?: string;
    /** If present, filename and directory will be ignored. */
    path?: string;
    /**
     * If true, a postfix like (1), (2), etc. will be added to the filename in
     * case a file with the requested name already exists.
     */
    collisionPostfix?: boolean;
}
interface OpenDialogOptions {
    title?: string;
    defaultDirectory?: string;
    defaultFilename?: string;
    /** If present, defaultDirectory and defaultFilename will be ignored. */
    defaultPath?: string;
    buttonLabel?: string;
    filters?: Array<{
        name: string;
        extensions: string[];
    }>;
    properties?: Array<"openFile" | "openDirectory" | "multiSelections" | "showHiddenFiles" | "createDirectory" | "promptToCreate" | "noResolveAliases" | "treatPackageAsDirectory" | "dontAddToRecent">;
    message?: string;
    securityScopedBookmarks?: boolean;
}
interface SaveDialogOptions {
    title?: string;
    defaultDirectory?: string;
    defaultFilename?: string;
    /** If present, defaultDirectory and defaultFilename will be ignored. */
    defaultPath?: string;
    buttonLabel?: string;
    filters?: Array<{
        name: string;
        extensions: string[];
    }>;
    message?: string;
    nameFieldLabel?: string;
    showsTagField?: boolean;
    properties?: Array<"showHiddenFiles" | "createDirectory" | "treatPackageAsDirectory" | "showOverwriteConfirmation" | "dontAddToRecent">;
    securityScopedBookmarks?: boolean;
}
export interface DownloadMessage {
    type: "download";
    id: string;
    title: string;
    bytes: number;
    size: number;
    state: "progressing" | "completed" | "cancelled" | "interrupted";
    savePath: string;
    done?: boolean;
}
export {};
