import { codegenNativeComponent, codegenNativeCommands, type CodegenTypes, type ColorValue, type HostComponent, type ViewProps, } from 'react-native'; type Source = Readonly<{ uri: string }>; type OnLoadEvent = Readonly<{ durationMs: CodegenTypes.Int32 }>; type OnLoadErrorEvent = Readonly<{ message: string }>; type OnPlayerStateChangeEvent = Readonly<{ state: string; isPlaying: boolean; speed: CodegenTypes.Float; error: string; }>; type OnTimeUpdateEvent = Readonly<{ currentTimeMs: CodegenTypes.Int32; durationMs: CodegenTypes.Int32; }>; type OnSeekEvent = Readonly<{ positionMs: CodegenTypes.Int32 }>; type OnEndEvent = Readonly<{}>; export interface NativeProps extends ViewProps { source: Source; samples?: ReadonlyArray; playedBarColor?: ColorValue; unplayedBarColor?: ColorValue; barWidth?: CodegenTypes.WithDefault; barGap?: CodegenTypes.WithDefault; // -1 sentinel = "auto" (barWidth / 2) barRadius?: CodegenTypes.WithDefault; // 0 sentinel = "auto from width" barCount?: CodegenTypes.WithDefault; containerBackgroundColor?: ColorValue; containerBorderRadius?: CodegenTypes.WithDefault; showBackground?: CodegenTypes.WithDefault; showPlayButton?: CodegenTypes.WithDefault; playButtonColor?: ColorValue; showTime?: CodegenTypes.WithDefault; timeColor?: ColorValue; timeMode?: CodegenTypes.WithDefault<'count-up' | 'count-down', 'count-up'>; showSpeedControl?: CodegenTypes.WithDefault; speedColor?: ColorValue; speedBackgroundColor?: ColorValue; speeds?: ReadonlyArray; defaultSpeed?: CodegenTypes.WithDefault; autoPlay?: CodegenTypes.WithDefault; initialPositionMs?: CodegenTypes.WithDefault; loop?: CodegenTypes.WithDefault; playInBackground?: CodegenTypes.WithDefault; pauseUiUpdatesInBackground?: CodegenTypes.WithDefault; // -1 sentinel = "uncontrolled" — internal state drives playback. controlledPlaying?: CodegenTypes.WithDefault; // -1 sentinel = "uncontrolled" — internal state drives speed. controlledSpeed?: CodegenTypes.WithDefault; onLoad?: CodegenTypes.DirectEventHandler; onLoadError?: CodegenTypes.DirectEventHandler; onPlayerStateChange?: CodegenTypes.DirectEventHandler; onTimeUpdate?: CodegenTypes.DirectEventHandler; onSeek?: CodegenTypes.DirectEventHandler; onEnd?: CodegenTypes.DirectEventHandler; } interface NativeCommands { play: (viewRef: React.ElementRef>) => void; pause: (viewRef: React.ElementRef>) => void; toggle: (viewRef: React.ElementRef>) => void; seekTo: ( viewRef: React.ElementRef>, positionMs: CodegenTypes.Int32 ) => void; setSpeed: ( viewRef: React.ElementRef>, speed: CodegenTypes.Float ) => void; } export const Commands: NativeCommands = codegenNativeCommands({ supportedCommands: ['play', 'pause', 'toggle', 'seekTo', 'setSpeed'], }); export default codegenNativeComponent('AudioWaveformView');