using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Diagnostics.CodeAnalysis;
using System.Reflection;
using System.Runtime.CompilerServices;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
// ReSharper disable InconsistentNaming
namespace Barotrauma.LuaCs.Services;
public interface IAssemblyManagementService : IReusableService
{
///
/// Searches for an assembly given it's fully qualified name, while excluding the contexts with the given Guids, if supplied.
///
/// The fully-qualified assembly name.
/// Guids of excluded contexts.
/// On Success: The assembly.
On Failure: nothing.
FluentResults.Result GetLoadedAssembly(string assemblyName, in Guid[] excludedContexts);
///
/// Searches for an assembly given it's fully qualified name, while excluding the contexts with the given Guids, if supplied.
///
/// The assembly info.
/// Guids of excluded contexts.
/// On Success: The assembly.
On Failure: nothing.
FluentResults.Result GetLoadedAssembly(AssemblyName assemblyName, in Guid[] excludedContexts);
///
/// Gets the assembly collection for the BCL and base game assemblies.
///
/// collection, if any are found. Returns an empty collection otherwise.
ImmutableArray GetDefaultMetadataReferences();
///
/// Gets the assembly collection for all add-in assemblies loaded.
///
/// collection, if any are found. Returns an empty collection otherwise.
ImmutableArray GetAddInContextsMetadataReferences();
///
///
///
ImmutableArray AssemblyLoaderServices { get; }
}