include "state_common.fbs"; namespace link.roadio.riff.state.fbs; table ProfileSettings { theme:Theme = SYSTEM; long_press_starts_playback:bool; auto_search:bool = true; ignore_leading_articles:bool = true; content_mode:ContentKind = MUSIC; audiobook_speed_tenths:ubyte = 10; ai_queue_size:ubyte = 20; ai_pte_bands:ubyte; ai_arousal:double; ai_valence:double; } table Reaction { target:ObjectKey (required); preference:Preference; banned:bool; } table ClassificationOverride { target:ObjectKey (required); kind:ContentKind; } table QueueItem { occurrence_id:ulong = null; media_id:MediaKey (required); label:string (required); known_duration_us:long = -1; } table QueueRevision { id:ulong = null; items:[QueueItem] (required); } table Checkpoint { revision_id:ulong = null; occurrence_id:ulong = null; position_us:long; play_requested:bool; repeat_enabled:bool; shuffle_enabled:bool; shuffle_order:[ulong] (required); preferred_binding_key:ulong = null; completed:bool; attempt_id:ulong = null; history_recorded:bool; } table Bookmark { id:ulong = null; occurrence_id:ulong = null; position_us:long; label:string (required); } table QueueState { id:ulong = null; creation_id:ulong = null; kind:ContentKind; name:string; title_id:ulong = null; definition:QueueRevision (required); execution:QueueRevision (required); checkpoint:Checkpoint (required); bookmarks:[Bookmark] (required); } table ProfileState { header:FileHeader (required); settings:ProfileSettings (required); reactions:[Reaction] (required); classifications:[ClassificationOverride] (required); dynamic_queue:QueueState (required); saved_queues:[QueueState] (required); last_queue:QueueRef; } root_type ProfileState; file_identifier "PFST"; file_extension "fb";