import type { Readable } from 'node:stream'; import type { LogLevel } from '@remotion/renderer'; import type { DownloadBehavior } from 'remotion'; import type { CustomCredentials, Privacy, RenderOutput, ServerlessRoutines } from './constants'; import type { BillingCurrency } from './format-costs-info'; import type { RenderMetadata } from './render-metadata'; import type { RendererFunctionTransport } from './renderer-transport'; import type { ServerlessReturnValues } from './return-values'; import type { GetBinaryPayloadSink, OnMessage } from './streaming/streaming'; import type { CallFunctionOptions, CloudProvider } from './types'; export type ParseFunctionName = (functionName: string) => { version: string; memorySizeInMb: number; diskSizeInMb: number; timeoutInSeconds: number; } | null; type DeleteFile = (params: { bucketName: string; key: string; region: Provider['region']; customCredentials: CustomCredentials | null; forcePathStyle: boolean; requestHandler: Provider['requestHandler'] | null; }) => Promise; export type BucketWithLocation = { name: string; creationDate: number; region: Provider['region']; }; type BucketExists = (params: { bucketName: string; region: Provider['region']; expectedBucketOwner: string | null; forcePathStyle: boolean; requestHandler: Provider['requestHandler'] | null; }) => Promise; type ReadFile = (params: { bucketName: string; key: string; region: Provider['region']; expectedBucketOwner: string | null; forcePathStyle: boolean; requestHandler: Provider['requestHandler'] | null; }) => Promise; type GetBuckets = (options: { region: Provider['region']; forceBucketName: string | null; forcePathStyle: boolean; requestHandler: Provider['requestHandler'] | null; }) => Promise[]>; type CreateBucket = (params: { region: Provider['region']; bucketName: string; forcePathStyle: boolean; skipPutAcl: boolean; requestHandler: Provider['requestHandler'] | null; logLevel: LogLevel; }) => Promise; type ApplyLifeCycle = (params: { enableFolderExpiry: boolean | null; bucketName: string; region: Provider['region']; customCredentials: CustomCredentials | null; forcePathStyle: boolean; requestHandler: Provider['requestHandler'] | null; }) => Promise; type ListObjects = (params: { bucketName: string; prefix: string; region: Provider['region']; expectedBucketOwner: string | null; forcePathStyle: boolean; requestHandler: Provider['requestHandler'] | null; continuationToken?: string; }) => Promise; type BucketObject = { Key: string; LastModified: Date; ETag: string; Size: number; }; type HeadFile = (params: HeadFileInput) => Promise; type RandomHash = () => string; type ConvertToServeUrl = (params: { urlOrId: string; region: Provider['region']; bucketName: string; }) => string; type HeadFileOutput = { LastModified?: Date | undefined; ContentLength?: number | undefined; Metadata?: Record | undefined; }; export type DeleteFunctionInput = { region: Provider['region']; functionName: string; }; export type DeleteFunction = (options: DeleteFunctionInput) => Promise; export type WriteFileInput = { bucketName: string; key: string; body: Readable | string | Uint8Array; region: Provider['region']; privacy: Privacy; expectedBucketOwner: string | null; downloadBehavior: DownloadBehavior | null; customCredentials: CustomCredentials | null; forcePathStyle: boolean; storageClass: Provider['storageClass'] | null; requestHandler: Provider['requestHandler'] | null; metadata?: Record | null; }; type WriteFile = (params: WriteFileInput) => Promise; type HeadFileInput = { bucketName: string; key: string; region: Provider['region']; customCredentials: CustomCredentials | null; forcePathStyle: boolean; requestHandler: Provider['requestHandler'] | null; }; export type CallFunctionAsync = ({ functionName, payload, region, timeoutInTest, requestHandler }: CallFunctionOptions) => Promise; export type CallFunctionStreaming = (options: CallFunctionOptions & { receivedStreamingPayload: OnMessage; retriesRemaining: number; getBinaryPayloadSink: GetBinaryPayloadSink | null; }) => Promise; export type CallFunctionSync = ({ functionName, payload, region, timeoutInTest }: CallFunctionOptions) => Promise[T]>; export type GetOutputUrl = (options: { output: RenderOutput; renderMetadata: RenderMetadata; bucketName: string; customCredentials: CustomCredentials | null; currentRegion: Provider['region']; }) => { url: string; key: string; }; export type EstimatePriceInput = { region: Provider['region']; memorySizeInMb: number; diskSizeInMb: number; lambdasInvoked: number; durationInMilliseconds: number; }; export type EstimatePrice = ({ region, memorySizeInMb, diskSizeInMb, lambdasInvoked, ...other }: EstimatePriceInput) => number; export type GetLoggingUrlForRendererFunction = (options: { region: Provider['region']; functionName: string; rendererFunctionName: string | null; renderId: string; chunk: null | number; }) => string; export type GetFunctionsInput = { region: Provider['region']; compatibleOnly: boolean; logLevel?: LogLevel; }; export type GetLoggingUrlForMethod = (options: { region: Provider['region']; functionName: string; method: ServerlessRoutines; rendererFunctionName: string | null; renderId: string; }) => string; export type GetAccountId = (options: { region: Provider['region']; }) => Promise; export type FunctionInfo = { functionName: string; timeoutInSeconds: number; memorySizeInMb: number; version: string | null; diskSizeInMb: number; }; export type GetFunctions = (params: GetFunctionsInput) => Promise; export type ProviderSpecifics = { getChromiumPath: () => string | null; getBuckets: GetBuckets; getBucketPrefix: () => string; createBucket: CreateBucket; applyLifeCycle: ApplyLifeCycle; listObjects: ListObjects; deleteFile: DeleteFile; bucketExists: BucketExists; randomHash: RandomHash; readFile: ReadFile; writeFile: WriteFile; supportsConditionalOutput: (params: { customCredentials: CustomCredentials | null; }) => boolean; writeFileIfNotExists: WriteFile | null; headFile: HeadFile; convertToServeUrl: ConvertToServeUrl; printLoggingHelper: boolean; validateDeleteAfter: (lifeCycleValue: unknown) => void; callFunctionAsync: CallFunctionAsync; callFunctionStreaming: CallFunctionStreaming; callFunctionSync: CallFunctionSync; estimatePrice: EstimatePrice; getLoggingUrlForRendererFunction: GetLoggingUrlForRendererFunction; getLoggingUrlForMethod: GetLoggingUrlForMethod; getEphemeralStorageForPriceCalculation: () => number; getBillingCurrency: (region: Provider['region']) => BillingCurrency; getRendererFunctionTransport: (region: Provider['region']) => RendererFunctionTransport; getServiceDnsSuffix: (region: Provider['region']) => string; getOutputUrl: GetOutputUrl; isFlakyError: (err: Error) => boolean; serverStorageProductName: () => string; getMaxStillInlinePayloadSize: () => number; getMaxNonInlinePayloadSizePerFunction: () => number; getAccountId: GetAccountId; deleteFunction: DeleteFunction; getFunctions: GetFunctions; parseFunctionName: ParseFunctionName; checkCredentials: () => void; }; export {};