using System.IO;
using System.Threading;
using System.Threading.Tasks;
using Wabbajack.DTOs.BSA.FileStates;
using Wabbajack.DTOs.Streams;
using Wabbajack.Paths;
namespace Wabbajack.Compression.BSA.Interfaces;
public interface IFile
{
///
/// The path of the file inside the archive
///
RelativePath Path { get; }
///
/// The uncompressed file size
///
uint Size { get; }
///
/// Get the metadata for the file.
///
AFile State { get; }
///
/// Copies this entry to the given stream. 100% thread safe, the .bsa will be opened multiple times
/// in order to maintain thread-safe access.
///
///
ValueTask CopyDataTo(Stream output, CancellationToken token);
///
/// Stream factory for this file
///
///
ValueTask GetStreamFactory(CancellationToken token);
}