import 'reflect-metadata'; import { GroupingMethod, SortingMethod } from '../../entities/SortingMethods'; import { UserRoles } from '../../entities/UserDTO'; import { SearchQueryDTO } from '../../entities/SearchQueryDTO'; import { GridSizes } from '../../entities/GridSizes'; export declare enum MapProviders { OpenStreetMap = 1, Mapbox = 2, Custom = 3 } export declare enum ConfigPriority { basic = 1, advanced = 2, underTheHood = 3 } export declare enum ThemeModes { light = 1, dark = 2, auto = 3 } export declare enum ScrollUpModes { never = 1, mobileOnly = 2, always = 3 } /** * Used for lightbox titles */ export declare enum LightBoxTitleTexts { NONE = 1, file = 2, resolution = 3, size = 4, caption = 5, title = 6, keywords = 7, persons = 8, location = 9, date = 10, camera = 11, lens = 12, iso = 13, fstop = 14, focal_length = 15, directory = 16, titleOrCaption = 17, titleOrDirectory = 18, titleOrCaptionOrDirectory = 19 } export type TAGS = { client?: true; priority?: ConfigPriority; name?: string; relevant?: (c: any) => boolean; dockerSensitive?: boolean; hint?: string; githubIssue?: number; secret?: boolean; experimental?: boolean; unit?: string; uiIcon?: string; uiType?: 'SearchQuery' | 'ThemeSelector' | 'SelectedThemeSettings' | 'SVGIconConfig'; uiOptions?: (string | number)[]; uiAllowSpaces?: boolean; uiOptional?: boolean; uiDisabled?: (subConfig: any, config: ClientConfig) => boolean; uiJob?: { job: string; hideProgress: boolean; relevant?: (c: ClientConfig) => boolean; description: string; }[]; uiResetNeeded?: { server?: boolean; db?: boolean; }; }; export declare class AutoCompleteItemsPerCategoryConfig { maxItems: number; fileName: number; directory: number; caption: number; position: number; person: number; keyword: number; } export declare class AutoCompleteConfig { enabled: boolean; ItemsPerCategory: AutoCompleteItemsPerCategoryConfig; cacheTimeout: number; } export declare class ClientSearchConfig { enabled: boolean; searchCacheTimeout: number; AutoComplete: AutoCompleteConfig; maxMediaResult: number; maxDirectoryResult: number; listDirectories: boolean; listMetafiles: boolean; } export declare class ClientAlbumConfig { enabled: boolean; readAccessMinRole: UserRoles; } export declare class ClientSharingConfig { enabled: boolean; passwordRequired: boolean; sharingKeyLength: number; } export declare class ClientRandomPhotoConfig { enabled: boolean; } export declare class MapLayers { name: string; url: string; darkLayer: boolean; } export declare class SVGIconConfig { viewBox: string; items: string; constructor(viewBox?: string, items?: string); } export declare class PathThemeConfig { color: string; dashArray: string; svgIcon: SVGIconConfig; constructor(color?: string, dashArray?: string, svgIcon?: SVGIconConfig); } export declare class MapPathGroupThemeConfig { matchers: string[]; theme: PathThemeConfig; constructor(matchers?: string[], theme?: PathThemeConfig); } export declare class MapPathGroupConfig { name: string; matchers: MapPathGroupThemeConfig[]; constructor(name?: string, matchers?: MapPathGroupThemeConfig[]); } export declare class ClientMapConfig { enabled: boolean; useImageMarkers: boolean; mapProvider: MapProviders; mapboxAccessToken: string; customLayers: MapLayers[]; maxPreviewMarkers: number; MapPathGroupConfig: MapPathGroupConfig[]; bendLongPathsTrigger: number; } export declare enum NavigationLinkTypes { gallery = 1, faces = 2, albums = 3, search = 4, url = 5 } export declare class NavigationLinkConfig { type: NavigationLinkTypes; name?: string; SearchQuery?: SearchQueryDTO; url?: string; constructor(type?: NavigationLinkTypes, name?: string, SearchQuery?: SearchQueryDTO, url?: string); } export declare class ClientSortingConfig implements SortingMethod { method: number; ascending: boolean; constructor(method?: number, ascending?: boolean); } export declare class ClientFaceSortingConfig implements SortingMethod { method: number; ascending: boolean; constructor(method?: number, ascending?: boolean); } export declare class ClientGroupingConfig implements GroupingMethod { method: number; ascending: boolean; constructor(method?: number, ascending?: boolean); } export declare class NavBarSortingAndGroupingConfig { defaultPhotoSortingMethod: ClientSortingConfig; defaultSearchSortingMethod: ClientSortingConfig; defaultPhotoGroupingMethod: ClientGroupingConfig; defaultSearchGroupingMethod: ClientGroupingConfig; } export declare class NavBarConfig { enableDownloadZip: boolean; enableDirectoryFlattening: boolean; defaultGidSize: GridSizes; showItemCount: boolean; links: NavigationLinkConfig[]; NavbarShowDelay: number; NavbarHideDelay: number; showScrollUpButton: ScrollUpModes; SortingGrouping: NavBarSortingAndGroupingConfig; } export declare class ClientLightboxTitleConfig { topLeftTitle: LightBoxTitleTexts[]; topLeftSubtitle: LightBoxTitleTexts[]; bottomLeftTitle: LightBoxTitleTexts[]; bottomLeftSubtitle: LightBoxTitleTexts[]; } export declare class AutoUpdateConfig { enable: boolean; interval: number; } export declare class ClientLightboxConfig { slideshowSpeed: number; captionAlwaysOn: boolean; facesAlwaysOn: boolean; loopVideos: boolean; loopSlideshow: boolean; loadFullImageOnZoom: boolean; loadFullImageIfPreviewTooSmall: boolean; Titles: ClientLightboxTitleConfig; } export declare class ThemeConfig { name: string; theme: string; constructor(name?: string, theme?: string); } export declare class ThemesConfig { enabled: boolean; defaultMode: ThemeModes; selectedTheme: 'default' | string; availableThemes: ThemeConfig[]; } export declare class ClientGalleryConfig { enableCache: boolean; enableOnScrollRendering: boolean; enableDirectorySortingByDate: boolean; ignoreTimestampOffset: boolean; enableOnScrollThumbnailPrioritising: boolean; NavBar: NavBarConfig; captionFirstNaming: boolean; Lightbox: ClientLightboxConfig; Themes: ThemesConfig; InlineBlogStartsOpen: boolean; TopBlogStartsOpen: boolean; AutoUpdate: AutoUpdateConfig; } export declare class ClientVideoConfig { enabled: boolean; supportedFormatsWithTranscoding: string[]; supportedFormats: string[]; } export declare class ClientPhotoConfig { iconSize: number; personThumbnailSize: number; thumbnailSizes: number[]; concurrentThumbnailGenerations: number; concurrentThumbnailGenerationsLimit: number; supportedFormats: string[]; /** * Generates a map for bitwise operation from icon and normal thumbnails */ generateThumbnailMap(): { [key: number]: number; }; /** * Generates a map for bitwise operation from icon and normal thumbnails */ generateThumbnailMapEntries(): { size: number; bit: number; }[]; } export declare class ClientGPXCompressingConfig { enabled: boolean; } export declare class ClientMediaConfig { Video: ClientVideoConfig; Photo: ClientPhotoConfig; } export declare class ClientMetaFileConfig { gpx: boolean; GPXCompressing: ClientGPXCompressingConfig; markdown: boolean; pg2conf: boolean; supportedFormats: string[]; } export declare class ClientFacesConfig { enabled: boolean; sorting: ClientFaceSortingConfig; keywordsToPersons: boolean; writeAccessMinRole: UserRoles; readAccessMinRole: UserRoles; } export declare class ClientServiceConfig { applicationTitle: string; publicUrl: string; urlBase: string; apiPath: string; languages: string[] | undefined; customHTMLHead: string; svgIcon: SVGIconConfig; reloadClientOnServerUpdate: boolean; } export declare class ClientUserOIDCConfig { enabled: boolean; displayName: string; } export declare class ClientUserConfig { authenticationRequired: boolean; unAuthenticatedUserRole: UserRoles; oidc: ClientUserOIDCConfig; } export declare class ClientExtensionsConfig { enabled: boolean; } export declare class ClientUploadConfig { enabled: boolean; minimumRole: UserRoles; enforcedDirectoryConfig: boolean; } export declare class ClientConfig { Server: ClientServiceConfig; Users: ClientUserConfig; Gallery: ClientGalleryConfig; Media: ClientMediaConfig; MetaFile: ClientMetaFileConfig; Album: ClientAlbumConfig; Search: ClientSearchConfig; Sharing: ClientSharingConfig; Map: ClientMapConfig; Faces: ClientFacesConfig; RandomPhoto: ClientRandomPhotoConfig; Extensions: ClientExtensionsConfig; Upload: ClientUploadConfig; }