import { Ms } from '../../../units/ms.js';
import { Id, TimelineFile } from '../../parts/basics.js';
import { SampleContext } from './samplers/visual/parts/types.js';
import { Mat6 } from '../../utils/matrix.js';
import { ContainerItem, Item } from '../../parts/item.js';
type WalkCallbacks = {
    sequence?: (x: Item.Sequence, matrix: Mat6, ancestors: AncestorAt[]) => void;
    stack?: (x: Item.Stack, matrix: Mat6, ancestors: AncestorAt[]) => void;
    video?: (x: Item.Video, matrix: Mat6, ancestors: AncestorAt[]) => void;
    image?: (x: Item.Image, matrix: Mat6, ancestors: AncestorAt[]) => void;
    text?: (x: Item.Text, matrix: Mat6, ancestors: AncestorAt[]) => void;
    caption?: (x: Item.Caption, matrix: Mat6, ancestors: AncestorAt[]) => void;
    audio?: (x: Item.Audio) => void;
};
interface Props {
    timeline: TimelineFile;
    timecode: Ms;
}
export interface AncestorAt {
    item: ContainerItem;
    localTime: Ms;
}
interface At {
    item: Item.Any;
    localTime: Ms;
    ancestors: AncestorAt[];
}
export declare function itemsAt(p: Props): At[];
interface FromProps {
    timeline: TimelineFile;
    from: Ms;
}
export declare function itemsFrom(p: FromProps): At[];
export declare function computeWorldMatrix(items: Map<Id, Item.Any>, ancestors: AncestorAt[], item: Item.Any, localTime: Ms): Mat6;
export declare function walk(id: Id, items: Map<Id, Item.Any>, parentMatrix: Mat6, localTime: Ms, callbacks: WalkCallbacks, ancestors?: AncestorAt[]): void;
export declare function computeItemDuration(id: number, timeline: TimelineFile): Ms;
export declare function computeOpacity(ctx: SampleContext, item: Item.Any, time: Ms): number;
export {};
