namespace BlueLaminate.Scraper.Proxies;
///
/// A concrete, ready-to-use proxy endpoint handed back by an
/// . This is the only proxy type a consumer ever
/// sees, so swapping providers (or mixing several in a grab-bag) never touches
/// the calling code. and are the
/// literal credentials to present to the gateway — for providers like IPRoyal
/// the targeting/session parameters are already baked into them.
///
/// Gateway host, e.g. "geo.iproyal.com".
/// Gateway port, e.g. 12321.
/// Credential username for the gateway.
/// Credential password (may carry encoded session/geo params).
/// Name of the provider that issued this lease.
/// The sticky session key, if this is a pinned IP.
/// When a sticky IP may be recycled; null if rotating/unbounded.
public sealed record ProxyLease(
string Host,
int Port,
string Username,
string Password,
string Provider,
string? SessionId = null,
DateTimeOffset? ExpiresAt = null)
{
/// "host:port" form used by browser proxy settings.
public string Endpoint => $"{Host}:{Port}";
}