import * as D from './Device'; import * as P from './Presentation'; import * as PL from './Playlist'; import * as R from './Resource'; export type FolderType = 'library' | 'devices'; export type VirtualFolderResponse = { devices: D.DeviceResponse[] | null; presentations: P.PresentationResponse[] | null; playlists: PL.PlaylistResponse[] | null; folders: NestedFolderResponse[] | null; }; export type FolderResponse = { id: string; name: string; description: string | null; path: Array<{ id: string; name: string }>; type: FolderType; devices: D.DeviceResponse[] | null; presentations: P.PresentationResponse[] | null; playlists: PL.PlaylistResponse[] | null; folders: NestedFolderResponse[] | null; resource: R.ResourceResponse; }; export type NestedFolderResponse = { id: string; name: string; description: string | null; type: FolderType; resource: R.ResourceResponse; }; export type VirtualFolder = { devices: D.Device[]; presentations: P.Presentation[]; playlists: PL.Playlist[]; folders: NestedFolder[]; }; export type Folder = { id: string; name: string; description: string | null; path: Array<{ id: string; name: string }>; type: FolderType; devices: D.Device[]; presentations: P.Presentation[]; playlists: PL.Playlist[]; folders: NestedFolder[]; resource: R.Resource; }; export type NestedFolder = { id: string; name: string; description: string | null; type: FolderType; resource: R.Resource; }; export type CreateFolder = { name: string; description: string | null; type: FolderType; }; export type GetDevicesFolderRequest = undefined; export type GetDevicesFolderResponse = VirtualFolderResponse; export type GetLibraryFolderRequest = undefined; export type GetLibraryFolderResponse = VirtualFolderResponse; export type GetFolderRequest = undefined; export type GetFolderResponse = FolderResponse; export type CreateFolderRequest = { name: string; description: string | null; type: FolderType; }; export type CreateFolderResponse = FolderResponse; export type UpdateFolderRequest = { name: string; description: string | null; }; export type UpdateFolderResponse = FolderResponse; export type DeleteFolderRequest = undefined; export type DeleteFolderResponse = string; export type CopyFolderRequest = { name?: string; target_folder_id?: string; copy_out_of_tree_unowned?: boolean; }; export type CopyFolderResponse = | { has_out_of_tree_unowned: true } | (FolderResponse & { has_out_of_tree_unowned?: boolean; supporting_content_folder_created?: boolean; }); export type CopyFolder = | { hasOutOfTreeUnowned: true; supportingContentFolderCreated: false } | (Folder & { supportingContentFolderCreated: boolean });