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); }