namespace marlin.core.functional;
using System.Diagnostics;
///
/// Supplies whatever git needs to authenticate a single invocation — an HTTP header,
/// an SSH key, etc. Credentials are applied per-process via environment variables only;
/// nothing is written to git config, argv, or any credential store.
///
public interface IGitCredential
{
///
/// Configures so the git process it starts can authenticate.
/// Returns a disposable that tears down anything ephemeral (e.g. a temp key file)
/// once that process has exited.
///
Task ApplyAsync(ProcessStartInfo psi);
}