using System;

namespace ET
{
	public interface IEvent
	{
		Type Type { get; }
	}

    public abstract class BEvent<A>: IEvent
    {
        public Type Type
        {
            get
            {
                return typeof(A);
            }
        }

        protected abstract ETTask OnEvent(A a);
        public async ETTask Handle(A a)
        {
            await OnEvent(a);
        }
    }
}