import { AnnotationData, AnnotationAction, AnnotationActionOptions, RenderAnnotationItemProps } from '@waveform-playlist/core'; import React, { FunctionComponent } from 'react'; interface AeneasFragment { begin: string; end: string; id: string; language: string; lines: string[]; } declare function parseAeneas(data: AeneasFragment): AnnotationData; declare function serializeAeneas(annotation: AnnotationData): AeneasFragment; interface AnnotationProps { annotation: AnnotationData; index: number; allAnnotations: AnnotationData[]; startPosition: number; endPosition: number; color?: string; editable?: boolean; controls?: AnnotationAction[]; onAnnotationUpdate?: (updatedAnnotations: AnnotationData[]) => void; annotationListConfig?: AnnotationActionOptions; onClick?: (annotation: AnnotationData) => void; } declare const Annotation: FunctionComponent; interface AnnotationBoxComponentProps { annotationId: string; annotationIndex: number; startPosition: number; endPosition: number; label?: string; color?: string; isActive?: boolean; onClick?: () => void; editable?: boolean; } declare const AnnotationBox: FunctionComponent; interface AnnotationBoxesWrapperProps { className?: string; children?: React.ReactNode; height?: number; offset?: number; width?: number; } declare const AnnotationBoxesWrapper: FunctionComponent; interface AnnotationsTrackProps { className?: string; children?: React.ReactNode; height?: number; offset?: number; width?: number; } declare const AnnotationsTrack: FunctionComponent; interface AnnotationTextProps { annotations: AnnotationData[]; activeAnnotationId?: string; shouldScrollToActive?: boolean; /** Where to position the active annotation when scrolling: 'center', 'start', 'end', or 'nearest'. Defaults to 'center'. */ scrollActivePosition?: ScrollLogicalPosition; /** Which scrollable containers to scroll: 'nearest' (only the annotation list) or 'all' (including viewport). Defaults to 'nearest'. */ scrollActiveContainer?: 'nearest' | 'all'; editable?: boolean; controls?: AnnotationAction[]; annotationListConfig?: AnnotationActionOptions; height?: number; onAnnotationClick?: (annotation: AnnotationData) => void; onAnnotationUpdate?: (updatedAnnotations: AnnotationData[]) => void; /** * Custom render function for annotation items. * When provided, completely replaces the default annotation item rendering. * Use this to customize the appearance of each annotation in the list. */ renderAnnotationItem?: (props: RenderAnnotationItemProps) => React.ReactNode; } declare const AnnotationText: React.NamedExoticComponent; interface ContinuousPlayCheckboxProps { checked: boolean; onChange: (checked: boolean) => void; disabled?: boolean; className?: string; } /** * Checkbox control for enabling/disabling continuous play of annotations. * When enabled, playback continues from one annotation to the next without stopping. */ declare const ContinuousPlayCheckbox: React.FC; interface LinkEndpointsCheckboxProps { checked: boolean; onChange: (checked: boolean) => void; disabled?: boolean; className?: string; } /** * Checkbox control for enabling/disabling linked endpoints between annotations. * When enabled, the end time of one annotation is automatically linked to the start time of the next. */ declare const LinkEndpointsCheckbox: React.FC; interface EditableCheckboxProps { checked: boolean; onChange: (enabled: boolean) => void; className?: string; } declare const EditableCheckbox: React.FC; interface DownloadAnnotationsButtonProps { annotations: AnnotationData[]; filename?: string; disabled?: boolean; className?: string; children?: React.ReactNode; } declare const DownloadAnnotationsButton: React.FC; declare const AnnotationProvider: React.FC<{ children: React.ReactNode; }>; interface UseAnnotationControlsOptions { initialContinuousPlay?: boolean; initialLinkEndpoints?: boolean; } interface AnnotationUpdateParams { annotationIndex: number; newTime: number; isDraggingStart: boolean; annotations: AnnotationData[]; duration: number; linkEndpoints: boolean; } interface UseAnnotationControlsReturn { continuousPlay: boolean; linkEndpoints: boolean; setContinuousPlay: (value: boolean) => void; setLinkEndpoints: (value: boolean) => void; updateAnnotationBoundaries: (params: AnnotationUpdateParams) => AnnotationData[]; } /** * Hook for managing annotation control state and boundary logic. * Boundary math lives in @waveform-playlist/core (shared with dawcore). */ declare const useAnnotationControls: (options?: UseAnnotationControlsOptions) => UseAnnotationControlsReturn; export { type AeneasFragment, Annotation, AnnotationBox, type AnnotationBoxComponentProps, AnnotationBoxesWrapper, type AnnotationBoxesWrapperProps, type AnnotationProps, AnnotationProvider, AnnotationText, type AnnotationTextProps, type AnnotationUpdateParams, AnnotationsTrack, type AnnotationsTrackProps, ContinuousPlayCheckbox, type ContinuousPlayCheckboxProps, DownloadAnnotationsButton, type DownloadAnnotationsButtonProps, EditableCheckbox, type EditableCheckboxProps, LinkEndpointsCheckbox, type LinkEndpointsCheckboxProps, type UseAnnotationControlsOptions, type UseAnnotationControlsReturn, parseAeneas, serializeAeneas, useAnnotationControls };