---@meta ---@class SessiondDevice ---@field subsystem string udev subsystem, for example "drm" or "input" ---@field sysname string Kernel device name, for example "card0" ---@field syspath string Absolute sysfs path local Device = {} ---@class SessiondSeat local Seat = {} ---Make this seat the default seat. ---@return nil function Seat:default() end ---Restrict this seat to a user. ---@param username string ---@return nil function Seat:user(username) end ---Set the access group associated with this seat. ---@param groupname string ---@return nil function Seat:group(groupname) end ---Register a device matcher for this seat. ---@param matcher fun(device: SessiondDevice): boolean ---@return nil function Seat:attach(matcher) end ---Register a session matcher for this seat. ---@param matcher fun(session: SessiondSession): boolean ---@return nil function Seat:session(matcher) end ---@class SessiondSession ---@field id integer Session identifier ---@field uid integer User identifier ---@field username string ---@field class string Session class, for example "user" or "greeter" ---@field vt integer|nil Virtual terminal number, if any ---@field leader integer PID of the session leader ---@field timestamp integer Session start timestamp ---@field is_local boolean ---@field remote_host string Empty for local sessions ---@field active "online"|"active"|"closing"|"opening" local Session = {} ---@class SessiondSeats local Seats = {} ---Get an existing seat. ---@param name string ---@return SessiondSeat function Seats:get(name) end ---Create a new seat. ---@param name string ---@return SessiondSeat function Seats:create(name) end ---Set the default seat by name. ---@param name string ---@return nil function Seats:default(name) end ---@class Sessiond ---@field seats SessiondSeats ---@type Sessiond sessiond = {}