import {interpolate, NoReactInternals, random} from 'remotion/no-react';
export * from './constants';
export {
	artifactName,
	customOutName,
	expiryDays,
	MINIMUM_FRAMES_PER_FUNCTION,
	outName,
	outStillName,
	overallProgressKey,
	rendersPrefix,
	ServerlessCodec,
	serverlessCodecs,
	ServerlessPayload,
	ServerlessPayloads,
	ServerlessRoutines,
	ServerlessStartPayload,
	ServerlessStatusPayload,
	type CustomCredentials,
	type CustomCredentialsWithoutSensitiveData,
	type DeleteAfter,
	type OutNameInput,
	type OutNameInputWithoutCredentials,
	type OutNameOutput,
	type Privacy,
	type SerializedInputProps,
	type WebhookOption,
} from './constants';
export {GenericRenderProgress} from './render-progress';
export {
	deserializeArtifact,
	serializeArtifact,
	SerializedArtifact,
} from './serialize-artifact';

export {validateDownloadBehavior} from './validate-download-behavior';
export {validateFramesPerFunction} from './validate-frames-per-function';

export type {
	AudioCodec,
	ChromiumOptions,
	ColorSpace,
	FrameRange,
	LogLevel,
	PixelFormat,
	StillImageFormat,
	ToOptions,
	VideoImageFormat,
	X264Preset,
} from '@remotion/renderer';
export type {BrowserSafeApis} from '@remotion/renderer/client';
export {wrapWithErrorHandling} from '@remotion/renderer/error-handling';
export {makeStreamer, makeStreamPayloadMessage} from '@remotion/streaming';
export type {_InternalTypes} from 'remotion';
export type {DownloadBehavior, VideoConfig} from 'remotion/no-react';
export {VERSION} from 'remotion/version';
export {Await} from './await';
export {calculateChunkTimes} from './calculate-chunk-times';
export {
	compressInputProps,
	decompressInputProps,
	getNeedsToUpload,
	serializeOrThrow,
} from './compress-props';
export {MAX_FUNCTIONS_PER_RENDER} from './constants';
export {DOCS_URL} from './docs-url';
export {
	errorIsOutOfSpaceError,
	isBrowserCrashedError,
	isErrInsufficientResourcesErr,
} from './error-category';
export {estimatePriceFromMetadata} from './estimate-price-from-bucket';
export {
	getCredentialsFromOutName,
	getExpectedOutName,
} from './expected-out-name';
export {formatCostsInfo} from './format-costs-info';
export {FileNameAndSize, GetFolderFiles} from './get-files-in-folder';
export {
	GetOrCreateBucketInput,
	GetOrCreateBucketOutput,
	internalGetOrCreateBucket,
} from './get-or-create-bucket';
export {getOverallProgressFromStorage} from './get-overall-progress-from-storage';
export {getRemotionVersionFromIndexHtml} from './get-remotion-version-from-index-html';
export {inputPropsKey, resolvedPropsKey} from './input-props-keys';
export {inspectErrors} from './inspect-error';
export {makeBucketName} from './make-bucket-name';
export {
	getMostExpensiveChunks,
	OVERHEAD_TIME_PER_LAMBDA,
} from './most-expensive-chunks';
export {OverallRenderProgress} from './overall-render-progress';
export {getProgress} from './progress';
export * from './provider-implementation';
export {RenderMetadata} from './render-metadata';
export {OrError, ServerlessReturnValues} from './return-values';
export {streamToString} from './stream-to-string';
export {
	formatMap,
	makeStreamPayload,
	MessageTypeId,
	messageTypeIdToMessageType,
	OnMessage,
	OnStream,
	StreamingMessage,
	StreamingPayload,
} from './streaming/streaming';
export {truthy} from './truthy';
export * from './types';
export {validateBucketName} from './validate-bucket-name';
export {validateOutname} from './validate-outname';
export {validatePrivacy} from './validate-privacy';
export {validateWebhook} from './validate-webhook';
export * from './webhook-types';
export {EnhancedErrorInfo, FunctionErrorInfo} from './write-error-to-storage';
export {interpolate, random};

/* eslint-disable prefer-destructuring */
export const ENABLE_V5_BREAKING_CHANGES =
	NoReactInternals.ENABLE_V5_BREAKING_CHANGES;
export const serializeJSONWithSpecialTypes =
	NoReactInternals.serializeJSONWithSpecialTypes;
export const validateFps: typeof NoReactInternals.validateFps =
	NoReactInternals.validateFps;
export const validateDimension: typeof NoReactInternals.validateDimension =
	NoReactInternals.validateDimension;
export const validateDurationInFrames: typeof NoReactInternals.validateDurationInFrames =
	NoReactInternals.validateDurationInFrames;
export const validateCodec: typeof NoReactInternals.validateCodec =
	NoReactInternals.validateCodec;
