/// <reference types="react" />
import type { Attribute, VideoSegmentToolConfig, VideoFrameToolConfig, VideoAnnotationType, EnumerableAttribute, TextAttribute, MediaAnnotationInUI, MediaAnnotationWithTextAndTag } from '@labelu/interface';
export interface AudioAnnotatorConfig {
    tag?: EnumerableAttribute[];
    text?: TextAttribute[];
    segment: VideoSegmentToolConfig;
    frame: VideoFrameToolConfig;
}
export interface MediaSample {
    id: string | number;
    name?: string;
    url: string;
    annotations: MediaAnnotationWithTextAndTag[];
    meta?: {
        width: number;
        height: number;
        duration: number;
    };
}
export interface AnnotatorContextType {
    currentTool: VideoAnnotationType | undefined;
    samples: MediaSample[];
    config?: AudioAnnotatorConfig;
    annotations: MediaAnnotationInUI[];
    attributes: Attribute[];
    containerRef: React.RefObject<HTMLDivElement>;
    orderVisible: boolean;
    currentSample?: MediaSample;
    attributeMapping: Record<string, Record<string, Attribute>>;
    annotationsMapping: Record<string, MediaAnnotationWithTextAndTag>;
    selectedAnnotation: MediaAnnotationInUI | undefined;
    selectedAttribute: Attribute | undefined;
    handleSelectSample: (sample: MediaSample) => void;
    onToolChange: (tool?: VideoAnnotationType) => void;
    onLabelChange: (attribute: Attribute) => void;
    onAnnotationRemove: (annotation: MediaAnnotationInUI) => void;
    onAnnotationsRemove: (annotations: MediaAnnotationWithTextAndTag[]) => void;
    onAnnotationSelect: (annotation: MediaAnnotationInUI) => void;
    onAnnotationChange: (annotation: MediaAnnotationInUI) => void;
    onOrderVisibleChange: (visible: boolean) => void;
    onAttributeChange: (payload: any) => void;
    onAnnotationsChange: (annotations: MediaAnnotationWithTextAndTag[]) => void;
    redo: () => void;
    undo: () => void;
    pastRef: React.RefObject<MediaSample[]>;
    futureRef: React.RefObject<MediaSample[]>;
    getCurrentTime: () => number;
    setCurrentTime: (time: number) => void;
    getDuration: () => number;
    pause: () => void;
    play: () => void;
}
export declare const AnnotatorContext: import("react").Context<AnnotatorContextType>;
export declare function useAnnotator(): AnnotatorContextType;
//# sourceMappingURL=context.d.ts.map