using System; using JetBrains.Collections.Viewable; using JetBrains.Lifetimes; using JetBrains.Rd.Base; using JetBrains.Rd.Impl; namespace JetBrains.Rd { public interface IProtocol : IRdDynamic { Lifetime Lifetime { get; } SerializationCtx SerializationContext { get; } ViewableSet OutOfSyncModels { get; } string Name { get; } ISerializers Serializers { get; } IIdentities Identities { get; } IScheduler Scheduler { get; } IWire Wire { get; } ProtocolContexts Contexts { get; } ISignal ExtCreated { get; } public T? GetExtension() where T : RdExtBase; public T GetOrCreateExtension(Func create) where T : RdExtBase; } }