import 'reflect-metadata'; import { AfterJobTrigger, JobScheduleDTO, JobTriggerType, NeverJobTrigger, PeriodicJobTrigger, ScheduledJobTrigger } from '../../entities/job/JobScheduleDTO'; import { ClientConfig, ClientGPXCompressingConfig, ClientMediaConfig, ClientMetaFileConfig, ClientPhotoConfig, ClientServiceConfig, ClientSharingConfig, ClientSortingConfig, ClientUploadConfig, ClientUserConfig, ClientUserOIDCConfig, ClientVideoConfig } from '../public/ClientConfig'; import { SearchQueryDTO } from '../../entities/SearchQueryDTO'; import { UserRoles } from '../../entities/UserDTO'; import { MediaPickDTO } from '../../entities/MediaPickDTO'; import { ServerExtensionsConfig } from './subconfigs/ServerExtensionsConfig'; import { MessagingConfig } from './subconfigs/MessagingConfig'; export declare enum DatabaseType { mysql = 2, sqlite = 3 } export declare enum LogLevel { error = 1, warn = 2, info = 3, verbose = 4, debug = 5, silly = 6 } export declare enum SQLLogLevel { none = 1, error = 2, all = 3 } export declare enum ReIndexingSensitivity { never = 10, low = 20, medium = 30, high = 40 } export declare enum FFmpegPresets { ultrafast = 1, superfast = 2, veryfast = 3, faster = 4, fast = 5, medium = 6, slow = 7, slower = 8, veryslow = 9, placebo = 10 } export type videoCodecType = 'libvpx-vp9' | 'libx264' | 'libvpx' | 'libx265'; export type videoResolutionType = 240 | 360 | 480 | 720 | 1080 | 1440 | 2160 | 4320; export type videoFormatType = 'mp4' | 'webm'; export declare class MySQLConfig { host: string; port: number; database: string; username: string; password: string; } export declare class SQLiteConfig { DBFileName: string; } export declare class UserConfig { name: string; role: UserRoles; password: string; encryptedPassword: string | undefined; encrypted: boolean; constructor(name?: string, password?: string, role?: UserRoles); } export declare class ServerDataBaseConfig { type: DatabaseType; dbFolder: string; sqlite?: SQLiteConfig; mysql?: MySQLConfig; } export declare class ServerUserOIDCConfig extends ClientUserOIDCConfig { issuerUrl: string; clientId: string; clientSecret: string; redirectUri: string; scopes: string[]; usernameClaim: string; emailClaim: string; allowedDomains: string[]; autoCreateUser: boolean; } export declare class ServerUserConfig extends ClientUserConfig { enforcedUsers: UserConfig[]; allowQuery: SearchQueryDTO; blockQuery: SearchQueryDTO; suppressDefUserWarn: boolean; oidc: ServerUserOIDCConfig; } export declare class ServerPhotoConfig extends ClientPhotoConfig { useLanczos3: boolean; quality: number; smartSubsample: boolean; sharpOptions: { test: number; }; personFaceMargin: number; animateGif: boolean; } export declare class ServerGPXCompressingConfig extends ClientGPXCompressingConfig { onTheFly: boolean; minDistance: number; maxMiddleDeviance: number; minTimeDistance: number; } export declare class ServerMetaFileConfig extends ClientMetaFileConfig { GPXCompressing: ServerGPXCompressingConfig; } export declare class ServerSharingConfig extends ClientSharingConfig { updateTimeout: number; } export declare class ServerIndexingConfig { cachedFolderTimeout: number; reIndexingSensitivity: ReIndexingSensitivity; excludeFolderList: string[]; excludeFileList: string[]; } export declare class ServerDuplicatesConfig { listingLimit: number; } export declare class ServerLogConfig { level: LogLevel; sqlLevel: SQLLogLevel; logServerTiming: boolean; } /** * This is a "Hack" for the typeconfig * The config should contain all the fields that are settable, * otherwise change detection won't work, and we can't save the config. * WARN: Do not use this class directly, use the separate Trigger classes below */ export declare class JobTriggerConfigBase { readonly type: JobTriggerType; time?: number | undefined; periodicity?: number | undefined; atTime?: number | undefined; afterScheduleName?: string | undefined; } export declare class NeverJobTriggerConfig extends JobTriggerConfigBase implements NeverJobTrigger { readonly type = JobTriggerType.never; } export declare class ScheduledJobTriggerConfig extends JobTriggerConfigBase implements ScheduledJobTrigger { readonly type = JobTriggerType.scheduled; time: number; } export declare class PeriodicJobTriggerConfig extends JobTriggerConfigBase implements PeriodicJobTrigger { readonly type = JobTriggerType.periodic; periodicity: number | undefined; atTime: number | undefined; } export declare class AfterJobTriggerConfig extends JobTriggerConfigBase implements AfterJobTrigger { readonly type = JobTriggerType.after; afterScheduleName: string | undefined; constructor(afterScheduleName?: string); } export declare class JobScheduleConfig implements JobScheduleDTO { name: string; jobName: string; config: Record; allowParallelRun: boolean; trigger: AfterJobTriggerConfig | NeverJobTriggerConfig | PeriodicJobTriggerConfig | ScheduledJobTriggerConfig; constructor(name: string, jobName: string, trigger: AfterJobTriggerConfig | NeverJobTriggerConfig | PeriodicJobTriggerConfig | ScheduledJobTriggerConfig, config?: any, allowParallelRun?: boolean); } export declare class ServerJobConfig { maxSavedProgress: number; mediaProcessingBatchSize: number; scheduled: JobScheduleConfig[]; } export declare class VideoTranscodingConfig { bitRate: number; resolution: videoResolutionType; fps: number; format: videoFormatType; mp4Codec: videoCodecType; webmCodec: videoCodecType; crf: number; preset: FFmpegPresets; customOutputOptions: string[]; customInputOptions: string[]; } export declare class ServerVideoConfig extends ClientVideoConfig { transcoding: VideoTranscodingConfig; } export declare class ServerAlbumCoverConfig { SearchQuery: SearchQueryDTO; Sorting: ClientSortingConfig[]; } export declare class ServerMediaConfig extends ClientMediaConfig { folder: string; tempFolder: string; Video: ServerVideoConfig; Photo: ServerPhotoConfig; } export declare class ServerServiceConfig extends ClientServiceConfig { sessionSecret: string[]; sessionTimeout: number; trustProxy: string; port: number; host: string; Log: ServerLogConfig; } export declare class ServerEnvironmentConfig { upTime: string | undefined; appVersion: string | undefined; buildTime: string | undefined; buildCommitHash: string | undefined; isDocker: boolean | undefined; } export declare class ServerUploadConfig extends ClientUploadConfig { } export declare class ServerConfig extends ClientConfig { Environment: ServerEnvironmentConfig; Server: ServerServiceConfig; Database: ServerDataBaseConfig; Users: ServerUserConfig; Indexing: ServerIndexingConfig; Media: ServerMediaConfig; MetaFile: ServerMetaFileConfig; AlbumCover: ServerAlbumCoverConfig; Sharing: ServerSharingConfig; Duplicates: ServerDuplicatesConfig; Messaging: MessagingConfig; Extensions: ServerExtensionsConfig; Upload: ServerUploadConfig; Jobs: ServerJobConfig; }