using System; using System.Threading; using System.Threading.Tasks; namespace LibreMetaverse.RLV { public interface IRlvQueryCallbacks { /// /// Checks if an object exists in the world /// /// Object ID to check /// Cancellation token /// True if the object exists Task ObjectExistsAsync(Guid objectId, CancellationToken cancellationToken); /// /// Checks if the user is currently sitting /// /// Cancellation token /// True if sitting Task IsSittingAsync(CancellationToken cancellationToken); /// /// Gets environment info for a setting /// /// Setting name /// Cancellation token /// Success flag and environment info if successful Task<(bool Success, string EnvironmentSettingValue)> TryGetEnvironmentSettingValueAsync(string settingName, CancellationToken cancellationToken); /// /// Gets debug info for a setting /// /// Setting name /// Cancellation token /// Success flag and debug info if successful Task<(bool Success, string DebugSettingValue)> TryGetDebugSettingValueAsync(string settingName, CancellationToken cancellationToken); /// /// Gets the ID of the object the user is sitting on /// /// Cancellation token /// Success flag and sit ID if successful Task<(bool Success, Guid SitId)> TryGetSitIdAsync(CancellationToken cancellationToken); /// /// Gets current camera settings /// /// Cancellation token /// Success flag and camera settings if successful Task<(bool Success, CameraSettings? CameraSettings)> TryGetCameraSettingsAsync(CancellationToken cancellationToken); /// /// Gets the current user's active group name /// /// Cancellation token /// Success flag and active group name if successful Task<(bool Success, string ActiveGroupName)> TryGetActiveGroupNameAsync(CancellationToken cancellationToken); /// /// Gets the complete RLV inventory map including shared folder structure, current outfit, and externally worn/attached items /// /// Cancellation token /// Success flag and inventory map if successful Task<(bool Success, InventoryMap? InventoryMap)> TryGetInventoryMapAsync(CancellationToken cancellationToken); } }