using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using BITKit;
using Cysharp.Threading.Tasks;

namespace Net.Project.B.Emoji
{
    public interface IEmojiData<T>:IDescription
    {
        public T Clip { get; }
    }

    public struct EmojiData<T>:IEmojiData<T>
    {
        public string Name { get; set; }
        public string Description { get; set; }
        public T Clip { get; set; }
    }
    public interface IEmojiService<T>
    {
        public event Func<IEmojiData<T>, CancellationToken, UniTask> OnPlayAsync;
        public UniTask<IReadOnlyCollection<IEmojiData<T>>> GetAllEmojis(); 
        public UniTask Play(IEmojiData<T> emojiData,CancellationToken cancellationToken=default);
    }
}
