package infra

// RateLimiterNew crea un RateLimiter token-bucket vacio con la tasa y rafaga indicadas.
// rate son los tokens recargados por segundo (sostenido).
// burst es la capacidad maxima del bucket (rafaga puntual).
// Si rate o burst son <= 0 se usa 1 como minimo seguro.
func RateLimiterNew(rate float64, burst int) *RateLimiter {
	if rate <= 0 {
		rate = 1
	}
	if burst <= 0 {
		burst = 1
	}
	return &RateLimiter{
		rate:    rate,
		burst:   burst,
		clients: make(map[string]*rateLimiterClient),
	}
}
