timeUntilNextToken method

Future<Duration> timeUntilNextToken()

Calculates the time remaining until the next token is available.

Returns Duration.zero if a token is already available. This is useful for implementing retry mechanisms or displaying wait times to users.

Implementation

Future<Duration> timeUntilNextToken() async {
  final available = await getAvailableTokens();
  if (available >= 1) return Duration.zero;

  final refillRatePerMs = maxTokens / refillDuration.inMilliseconds;
  final needed = 1 - available;
  final msUntilNext = (needed / refillRatePerMs).ceil();
  return Duration(milliseconds: msUntilNext);
}