using System.Collections.Generic; using System.Threading.Tasks; using IRCTokens; namespace IRCRobots { public interface IServer { public IEnumerable SendRaw(string line, SendPriority sendPriority = SendPriority.Default); public IEnumerable Send(Line line, SendPriority sendPriority = SendPriority.Default); public void SetThrottle(int rate, float time); public (string address, int port) ServerAddress(); public Task Connect(ITCPTransport transport, ConnectionParams connectionParams); public Task Disconnect(); public void LinePreread(Line line); public void LinePresend(Line line); public Task LineRead(Line line); public Task LineSend(Line line); public Task STSPolicy(STSPolicy stsPolicy); public Task ResumePolicy(ResumePolicy resumePolicy); public bool CapAgreed(ICapability capability); public string? CapAvailable(ICapability capability); public Task SASLAuth(SASLParams saslParams); } public enum SendPriority { High = 0, Medium = 10, Low = 20, Default = Medium } }