import type { ComponentType, LazyExoticComponent } from 'react'; import React from 'react'; import type { AnyZodObject } from 'zod'; import type { CalculateMetadataFunction } from './Composition.js'; import type { InferProps, PropsIfHasProps } from './props-if-has-props.js'; export type TComposition> = { width: number | undefined; height: number | undefined; fps: number | undefined; durationInFrames: number | undefined; id: string; folderName: string | null; parentFolderName: string | null; component: LazyExoticComponent>; nonce: number; schema: Schema | null; calculateMetadata: CalculateMetadataFunction> | null; } & PropsIfHasProps; export type AnyComposition = TComposition>; export type TCompMetadataWithCalcFunction> = Pick, 'id' | 'height' | 'width' | 'fps' | 'durationInFrames' | 'defaultProps' | 'calculateMetadata'>; export type TCompMetadata> = Pick, 'id' | 'height' | 'width' | 'fps' | 'durationInFrames' | 'defaultProps'>; export type AnyCompMetadata = TCompMetadata>; export type SmallTCompMetadata> = Pick, 'id' | 'height' | 'width' | 'fps' | 'durationInFrames'> & Partial, 'defaultProps'>>; type EnhancedTSequenceData = { type: 'sequence'; } | { type: 'audio'; src: string; volume: string | number; doesVolumeChange: boolean; startMediaFrom: number; playbackRate: number; } | { type: 'video'; src: string; volume: string | number; doesVolumeChange: boolean; startMediaFrom: number; playbackRate: number; }; export type LoopDisplay = { numberOfTimes: number; startOffset: number; durationInFrames: number; }; export type TSequence = { from: number; duration: number; id: string; displayName: string; parent: string | null; rootId: string; showInTimeline: boolean; nonce: number; loopDisplay: LoopDisplay | undefined; stack: string | null; premountDisplay: number | null; } & EnhancedTSequenceData; export type AudioOrVideoAsset = { type: 'audio' | 'video'; src: string; id: string; frame: number; volume: number; mediaFrame: number; playbackRate: number; allowAmplificationDuringRender: boolean; toneFrequency: number | null; audioStartFrame: number; }; export type ArtifactAsset = { type: 'artifact'; id: string; filename: string; content: string | Uint8Array; frame: number; binary: boolean; }; export type TRenderAsset = AudioOrVideoAsset | ArtifactAsset; export declare const compositionsRef: React.RefObject<{ getCompositions: () => AnyComposition[]; }>; export declare const CompositionManagerProvider: React.FC<{ readonly children: React.ReactNode; readonly numberOfAudioTags: number; }>; export {};