using System;
using InABox.Core;

namespace InABox.Mobile
{
    
        
    public class TransportConnectedEventArgs : EventArgs
    {
        
    }
    
    public delegate void TransportConnectedEvent(TransportConnectedEventArgs args);
    
    public class TransportDisconnectedEventArgs : EventArgs
    {
        
    }
    
    public delegate void BackgroundUpdateStatusEvent(object sender, EventArgs args);
    
    public delegate void TransportDisconnectedEvent(TransportDisconnectedEventArgs args);
    
    public interface IModelHost
    {
        bool IsConnected();
        
        event TransportDisconnectedEvent TransportDisconnected;
        
        event TransportConnectedEvent TransportConnected;
        
        bool IsBackgroundUpdateStatusActive { get; }
        
        event BackgroundUpdateStatusEvent BackgroundUpdateStatusChanged;
        void AddUpdateQueue<TEntity>(QueueUpdater<TEntity> queueUpdater) where TEntity : Entity, IPersistent, IRemotable, new();
        void RemoveUpdateQueue<TEntity>(QueueUpdater<TEntity> queueUpdater) where TEntity : Entity, IPersistent, IRemotable, new();
    }
}