import type { BundlerInternals } from '@remotion/bundler'; import type { ChromiumOptions, EmittedArtifact, LogLevel } from '@remotion/renderer'; import type { CloudProvider, DeleteAfter, GetFolderFiles, Privacy, ProviderSpecifics, ReceivedArtifact, WebhookPayload } from '@remotion/serverless-client'; import type { LaunchedBrowser } from './get-browser-instance'; export type MakeArtifactWithDetails = (params: { region: Provider['region']; renderBucketName: string; storageKey: string; artifact: EmittedArtifact; }) => ReceivedArtifact; export type DebuggingTimer = (label: string, logLevel: LogLevel) => { end: () => void; }; export type GetBrowserInstance = ({ logLevel, indent, chromiumOptions, providerSpecifics, insideFunctionSpecifics }: { logLevel: LogLevel; indent: boolean; chromiumOptions: ChromiumOptions; providerSpecifics: ProviderSpecifics; insideFunctionSpecifics: InsideFunctionSpecifics; }) => Promise; export type ForgetBrowserEventLoop = (options: { logLevel: LogLevel; launchedBrowser: LaunchedBrowser; }) => void; export type GenerateRenderId = (options: { deleteAfter: DeleteAfter | null; randomHashFn: () => string; }) => string; export type ReadDir = ({ dir, etags, originalDir, onProgress }: { dir: string; etags: { [key: string]: () => Promise; }; originalDir: string; onProgress: (bytes: number) => void; }) => { [key: string]: () => Promise; }; export type UploadDirProgress = { totalFiles: number; filesUploaded: number; totalSize: number; sizeUploaded: number; }; export type UploadDir = (options: { bucket: string; region: Provider['region']; localDir: string; keyPrefix: string; onProgress: (progress: UploadDirProgress) => void; privacy: Privacy; toUpload: string[]; forcePathStyle: boolean; requestHandler: Provider['requestHandler'] | null; }) => Promise; type CreateFunctionOptions = { region: Provider['region']; logLevel: LogLevel; ephemerealStorageInMb: number; timeoutInSeconds: number; memorySizeInMb: number; functionName: string; zipFile: string; requestHandler: Provider['requestHandler'] | null; } & Provider['creationFunctionOptions']; export type CreateFunction = (options: CreateFunctionOptions) => Promise<{ FunctionName: string; }>; export type InvokeWebhookOptions = { payload: WebhookPayload; url: string; secret: string | null; }; export type InvokeWebhookParams = { options: InvokeWebhookOptions; logLevel: LogLevel; retries?: number; errors?: number; }; export type InvokeWebhook = (params: InvokeWebhookParams) => Promise; export type InsideFunctionSpecifics = { getBrowserInstance: GetBrowserInstance; forgetBrowserEventLoop: ForgetBrowserEventLoop; timer: DebuggingTimer; generateRandomId: GenerateRenderId; deleteTmpDir: () => Promise; getCurrentFunctionName: () => string; getCurrentMemorySizeInMb: () => number; invokeWebhook: InvokeWebhook; getCurrentRegionInFunction: () => Provider['region']; makeArtifactWithDetails: MakeArtifactWithDetails; getFolderFiles: GetFolderFiles; }; export type FullClientSpecifics = { id: '__remotion_full_client_specifics'; bundleSite: typeof BundlerInternals.internalBundle; readDirectory: ReadDir; uploadDir: UploadDir; createFunction: CreateFunction; }; export {};