import type React from 'react';
import type { AnyZodObject } from './any-zod-type.js';
import type { AnyComposition, TComposition } from './CompositionManager.js';
import type { TFolder } from './Folder.js';
import type { NonceHistory } from './nonce.js';
import type { VideoConfig } from './video-config.js';
export type BaseMetadata = Pick<VideoConfig, 'durationInFrames' | 'fps' | 'props' | 'height' | 'width' | 'defaultCodec' | 'defaultOutName' | 'defaultVideoImageFormat' | 'defaultPixelFormat' | 'defaultProResProfile'>;
export type CanvasContent = {
    type: 'composition';
    compositionId: string;
} | {
    type: 'asset';
    asset: string;
} | {
    type: 'output';
    path: string;
} | {
    type: 'output-blob';
    displayName: string;
    getBlob: () => Promise<Blob>;
    width: number;
    height: number;
    sizeInBytes: number;
};
export type CompositionManagerSetters = {
    registerComposition: <Schema extends AnyZodObject, Props extends Record<string, unknown>>(comp: TComposition<Schema, Props>) => void;
    unregisterComposition: (name: string) => void;
    registerFolder: (name: string, parent: string | null, nonce: NonceHistory) => void;
    unregisterFolder: (name: string, parent: string | null) => void;
    setCanvasContent: React.Dispatch<React.SetStateAction<CanvasContent | null>>;
    onlyRenderComposition: string | null;
};
export type CompositionManagerContext = {
    compositions: AnyComposition[];
    currentCompositionMetadata: BaseMetadata | null;
    folders: TFolder[];
    canvasContent: CanvasContent | null;
};
export declare const CompositionManager: React.Context<CompositionManagerContext>;
export declare const CompositionSetters: React.Context<CompositionManagerSetters>;
