import type { TaskConfig } from 'payload'; import type { BunnyStorageCollectionConfig, BunnyStorageConfig, PurgeConfig, SignedUrlsConfig, StorageConfig, StreamConfig, StreamTusConfig, UrlTransformFunction } from './config.js'; export type NormalizedStorageConfig = { uploadTimeout: number; } & StorageConfig; export type NormalizedStreamConfig = { cleanup?: { maxAge: number; schedule: Exclude[0]; }; mp4Fallback: boolean; tus?: { autoMode: boolean; mimeTypes: string[]; uploadTimeout: number; } & StreamTusConfig; uploadTimeout: number; } & Omit; export type NormalizedSignedUrlsConfig = { expiresIn: number; staticHandler?: { expiresIn?: number; redirectStatus: 301 | 302 | 307 | 308; useRedirect: boolean; }; } & Omit; export type NormalizedUrlTransformConfig = { appendTimestamp: boolean; queryParams: Record; transformUrl?: UrlTransformFunction; }; export type NormalizedThumbnailConfig = { sizeName?: string; } & NormalizedUrlTransformConfig; export type NormalizedPurgeConfig = { async: boolean; } & PurgeConfig; export interface NormalizedCollectionConfig extends Pick { disablePayloadAccessControl: boolean; prefix: string; signedUrls: false | NormalizedSignedUrlsConfig; thumbnail: false | NormalizedThumbnailConfig; urlTransform: false | NormalizedUrlTransformConfig; } export interface NormalizedBunnyStorageConfig extends Pick { _original: BunnyStorageConfig; collections: Map; purge?: NormalizedPurgeConfig; signedUrls: false | NormalizedSignedUrlsConfig; storage?: NormalizedStorageConfig; stream?: NormalizedStreamConfig; thumbnail: false | NormalizedThumbnailConfig; urlTransform: false | NormalizedUrlTransformConfig; }