package utils

import "time"

// Clock is an interface for a clock.
type Clock interface {
	Now() time.Time
	After(d time.Duration) <-chan time.Time
}

// RealClock is the implementation of a clock for production code.
type RealClock struct{}

// Now return the current time.
func (RealClock) Now() time.Time {
	return time.Now()
}

// After return a channel receiving the time after the defined duration.
func (RealClock) After(d time.Duration) <-chan time.Time {
	return time.After(d)
}