import type { RepoIconPickResult } from '../../shared/repo-icon-pick-failure-copy' import type { ExecutionHostId } from '../../shared/execution-host' import type { ShellPathExistence } from '../../shared/path-existence-batch' import type { ShellOpenExternalEditorRequest, ShellOpenExternalEditorResult, ShellOpenLocalPathResult } from '../../shared/shell-open-types' export type { ShellOpenExternalEditorRequest, ShellOpenExternalEditorResult, ShellOpenLocalPathResult } from '../../shared/shell-open-types' export type ShellApi = { /** Every OS open names the path's owner; main refuses anything not owned by this computer. */ openPath: (path: string, ownerHostId: ExecutionHostId) => Promise openInFileManager: ( path: string, ownerHostId: ExecutionHostId ) => Promise openInExternalEditor: ( request: ShellOpenExternalEditorRequest ) => Promise openUrl: (url: string) => Promise openFilePath: (path: string, ownerHostId: ExecutionHostId) => Promise openFileUri: (uri: string, ownerHostId: ExecutionHostId) => Promise pathsExist?: (paths: string[]) => Promise pathExists: (path: string) => Promise pickAttachment: () => Promise pickAttachments: () => Promise pickImage: () => Promise pickRepoIconImage: () => Promise pickAudio: () => Promise pickDirectory: (args: { defaultPath?: string }) => Promise copyFile: (args: { srcPath: string; destPath: string }) => Promise }