using System.Collections.Concurrent;
using System.IO;
namespace BurnOutSharp.Interfaces
{
///
/// Mark a file type as extractable
///
internal interface IScannable
{
///
/// Determine if a file signature matches one of the expected values
///
/// Byte array representing the file header
/// True if the signature is valid, false otherwise
bool ShouldScan(byte[] magic);
///
/// Scan a file for all internal protections
///
/// Scanner object for state tracking
/// Path to the input file
/// Dictionary mapping paths to protection lists
/// Ideally, this should just point to the other scan implementation
ConcurrentDictionary> Scan(Scanner scanner, string file);
///
/// Scan a stream for all internal protections
///
/// Scanner object for state tracking
/// Stream representing the input file
/// Path to the input file
/// Dictionary mapping paths to protection lists
ConcurrentDictionary> Scan(Scanner scanner, Stream stream, string filename);
}
}