#nullable enable
using System;
using System.Threading;
using System.Threading.Tasks;

namespace IGP.UnitySDK
{
    internal interface IIGPHostSessionTransport : IDisposable
    {
        bool IsConnected { get; }

        event Action<byte[]>? PayloadReceived;
        event Action<Exception>? Failed;
        event Action<string>? Closed;

        Task ConnectAsync(CancellationToken cancellationToken);
        Task SendAsync(byte[] payload, CancellationToken cancellationToken);
        Task DisconnectAsync();
    }
}
