import { TextStyleOptions } from "pixi.js";
import { Media } from "../parts/media.js";
import { Id, TimelineFile } from "../parts/basics.js";
import { FilterActions } from "../parts/filters.js";
import { Crop, Item, ItemBase } from "../parts/item.js";
import { TransitionActions } from "../parts/transitions.js";
import { PresetAnimateActions } from "../parts/animations/types.js";
import { CaptionActions } from "../parts/captions.js";
import { Anim, AnimateAction, Interpolation, Keyframes, TrackTransform, Transform, TransformOptions, Vec2 } from "../types.js";
type ContainerInput = [label: string, ...items: Item.Any[]] | Item.Any[];
export declare class O {
    #private;
    state: {
        timeline: TimelineFile;
    };
    constructor(state: {
        timeline: TimelineFile;
    });
    require<T extends Item.Any>(id: Id | undefined): T | undefined;
    get timeline(): TimelineFile;
    getId(): number;
    register(item: Item.Any): void;
    textStyle: (style: TextStyleOptions) => Item.TextStyle;
    spatial: (transform?: Transform, crop?: Crop) => Item.Spatial;
    anim: {
        scalar: (terp: Interpolation, track: Keyframes) => Anim<Keyframes>;
        vec2: (terp: Interpolation, source: Keyframes<Vec2>) => {
            terp: Interpolation;
            track: {
                x: Keyframes;
                y: Keyframes;
            };
        };
        transform: (terp: Interpolation, source: Keyframes<Transform>) => Anim<TrackTransform>;
    };
    filter: FilterActions;
    animate: {
        presets: PresetAnimateActions;
        opacity: AnimateAction<"opacity">;
        transform: AnimateAction<"transform">;
    };
    sequence: (...input: ContainerInput) => Item.Sequence;
    stack: (...input: ContainerInput) => Item.Stack;
    video: (media: Media, options?: {
        start?: number;
        duration?: number;
        label?: string;
        enabled?: boolean;
    }) => Item.Video;
    image: (media: Media, options?: {
        duration?: number;
        label?: string;
        enabled?: boolean;
    }) => Item.Image;
    audio: (media: Media, options?: {
        start?: number;
        duration?: number;
        gain?: number;
        label?: string;
        enabled?: boolean;
    }) => Item.Audio;
    text: (content: string, options?: {
        duration?: number;
        styles?: TextStyleOptions;
        label?: string;
        enabled?: boolean;
    }) => Item.Text;
    captions: CaptionActions;
    gap: (duration: number, options?: ItemBase) => Item.Gap;
    transition: TransitionActions;
    transform: (options?: TransformOptions) => Transform;
    addChildren(parent: Item.Stack | Item.Sequence, ...items: Item.Any[]): void;
    set: <K extends Item.Any>(id: Id, partial: Partial<K>) => void;
}
export {};
