using System;
using System.IO;
namespace MediaBrowser.Model.Serialization
{
    public interface IProtobufSerializer
    {
        /// 
        /// Serializes to stream.
        /// 
        /// The obj.
        /// The stream.
        /// obj
        void SerializeToStream(object obj, Stream stream);
        /// 
        /// Deserializes from stream.
        /// 
        /// The stream.
        /// The type.
        /// System.Object.
        /// stream
        object DeserializeFromStream(Stream stream, Type type);
        /// 
        /// Deserializes from stream.
        /// 
        /// 
        /// The stream.
        /// ``0.
        T DeserializeFromStream(Stream stream)
            where T : class;
        /// 
        /// Serializes to file.
        /// 
        /// 
        /// The obj.
        /// The file.
        /// file
        void SerializeToFile(T obj, string file);
        /// 
        /// Deserializes from file.
        /// 
        /// 
        /// The file.
        /// ``0.
        /// file
        T DeserializeFromFile(string file)
            where T : class;
        /// 
        /// Serializes to bytes.
        /// 
        /// 
        /// The obj.
        /// System.Byte[][].
        /// obj
        byte[] SerializeToBytes(T obj)
            where T : class;
    }
}