---@meta ---@class ID ID = {} ---@return string function ID:to_s() end ---@class StatefulDestructible StatefulDestructible = {} ---@class StatefulDestructiblePtr StatefulDestructiblePtr = {} function StatefulDestructiblePtr:clear_changes() end ---@class SessionObjectPtr SessionObjectPtr = {} ---@return StatefulDestructible function SessionObjectPtr:to_statefuldestructible() end ---@return ID function StatefulDestructiblePtr:id() end ---@class Temporal Temporal = {} ---@param pos integer ---@return timepos_t function Temporal.timepos_t(pos) end ---@param pos integer ---@return timecnt_t function Temporal.timecnt_t(pos) end ---@class timepos_t timepos_t = {} ---@class timecnt_t timecnt_t = {} ---@class Location Location = {} ---@return string function Location:name() end ---@class Locations Locations = {} ---@param pos timepos_t ---@param cnt timecnt_t ---@param flag boolean ---@return Location function Locations:range_starts_at(pos, cnt, flag) end ---@class Route Route = {} ---@return Track function Route:to_track() end ---@class RouteListPtr RouteListPtr = {} ---@return fun():Route function RouteListPtr:iter() end ---@class Region: SessionObjectPtr Region = {} ---@return boolean function Region:isnil() end ---@return timepos_t function Region:position() end ---@param string name function Region:set_name(name) end ---@return AudioRegion function Region:to_audioregion() end ---@return StatefulDestructiblePtr function Region:to_stateful() end ---@class RegionList RegionList = {} ---@return fun():Region function RegionList:iter() end ---@class RegionSelection RegionSelection = {} ---@return RegionList function RegionSelection:regionlist() end ---@class AudioRegion: Region AudioRegion = {} ---@return boolean function AudioRegion:isnil() end ---@class Playlist Playlist = {} ---@param region_id ID ---@return Region function Playlist:region_by_id(region_id) end ---@class Track Track = {} ---@return Playlist function Track:playlist() end ---@return string function Track:name() end ---@class Command Command = {} ---@class Selection ---@field regions RegionSelection Selection = {} ---@class Session Session = {} ---@return Locations function Session:locations() end ---@return RouteListPtr function Session:get_tracks() end ---@param name string function Session:begin_reversible_command(name) end ---@param obj StatefulDestructible|StatefulDestructiblePtr function Session:add_stateful_diff_command(obj) end function Session:abort_empty_reversible_command() end ---@param cmd Command|nil function Session:commit_reversible_command(cmd?) end ---@class Editor Editor = {} ---@return Selection function Editor:get_selection() end