import type { Track } from '../interfaces/Track'; export interface UseMiniPlayerResult { /** Whether there is a current track (queue has an active track). */ hasTrack: boolean; /** Whether the player is in a "playing" state (play when ready and not ended/error/none). */ isPlaying: boolean; /** True when state is loading or buffering (e.g. show a spinner). */ isLoadingAudio: boolean; /** Current track or undefined. */ track: Track | undefined; /** Convenience: track?.title ?? ''. */ trackTitle: string; /** Convenience: track?.artist ?? ''. */ trackArtist: string; /** Convenience: track?.artwork (URL string or undefined). */ trackArtwork: string | undefined; /** Toggle between play and pause. Safe to call when loading. */ togglePlayPause: () => void; /** Pause playback. */ pause: () => void; /** Stop and clear current track. */ stop: () => void; /** Re-fetch active track from native and update hook state. Call when you need to sync (e.g. after returning to the app). */ refreshActiveTrack: () => Promise; /** Re-fetch playback state from native. Call when you need to sync. */ refreshPlaybackState: () => Promise; } /** * Aggregates state and actions needed for a global mini player bar (play/pause, title, artist, artwork, close). * Works on both iOS and Android; use with useSetupPlayer() at app root so the player is ready. * * openFullScreen / closeFullScreen are not provided here — implement them in your app (e.g. navigate to a full-screen player route). */ export declare function useMiniPlayer(): UseMiniPlayerResult;