using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Threading.Tasks; using Robust.Client.ViewVariables.Instances; using Robust.Shared.Network.Messages; using Robust.Shared.ViewVariables; namespace Robust.Client.ViewVariables { internal interface IClientViewVariablesManagerInternal : IClientViewVariablesManager { void Initialize(); /// /// Creates the ideal property editor for a specific property type. /// /// The type of the property to create an editor for. VVPropEditor PropertyFor(Type? type); /// /// Requests a session to an object on the server. /// /// The selector so the server knows what object we want. /// A session that can be used to request data and modify the remote object. Task RequestSession(ViewVariablesObjectSelector selector); /// /// Requests a data blob from the object referenced by a VV session. /// /// The session for the remote object. /// A request object the server uses to know what kind of data you want of the remote object. Task RequestData(ViewVariablesRemoteSession session, ViewVariablesRequest meta); /// /// Requests a data blob from the object referenced by a VV session. /// /// The type of blob that is expected of the server to be sent back, to be automatically cast for convenience. /// The session for the remote object. /// A request object the server uses to know what kind of data you want of the remote object. Task RequestData(ViewVariablesRemoteSession session, ViewVariablesRequest meta) where T : ViewVariablesBlob; /// /// Close a session to a remote object. /// /// The session to close. void CloseSession(ViewVariablesRemoteSession session); /// /// Attempts to get a VV session given its Uid. /// /// /// bool TryGetSession(uint sessionId, [NotNullWhen(true)] out ViewVariablesRemoteSession? session); /// /// Modify a remote object. /// /// The session pointing to the remote object. /// An array of objects that the server can parse to figure out what to assign. /// The new value for the object. /// Whether the will be reinterpreted on the server. Also see: void ModifyRemote(ViewVariablesRemoteSession session, object[] propertyIndex, object? value, bool reinterpretValue = false); /// /// Gets a collection of trait IDs that are agreed upon so knows which traits to instantiate. /// /// /// ICollection TraitIdsFor(Type type); } }