using System.Diagnostics;

namespace Metin2Launcher.Runtime;

/// <summary>
/// Strategy for handing a <see cref="RuntimeKey"/> to the game process. The
/// MVP implements a single strategy (<see cref="EnvVarKeyDelivery"/>) — the
/// Windows shared-memory strategy is stubbed in <c>SharedMemoryKeyDelivery</c>
/// and will be wired once the client-side receiver lands.
/// </summary>
public interface IRuntimeKeyDelivery
{
    /// <summary>Name of the delivery mechanism, used for logs and tests.</summary>
    string Name { get; }

    /// <summary>Mutates <paramref name="psi"/> so the spawned process can pick up the key.</summary>
    void Apply(ProcessStartInfo psi, RuntimeKey key);
}
