package clock

import 

type systemTimer struct {
	timer *time.Timer
}

func ( systemTimer) () <-chan time.Time {
	return .timer.C
}

func ( systemTimer) ( time.Duration) {
	.timer.Reset()
}

func ( systemTimer) () bool {
	return .timer.Stop()
}

type systemTicker struct {
	ticker *time.Ticker
}

func ( systemTicker) () <-chan time.Time {
	return .ticker.C
}

func ( systemTicker) () {
	.ticker.Stop()
}

func ( systemTicker) ( time.Duration) {
	.ticker.Reset()
}

type systemClock struct{}

func ( systemClock) ( time.Duration) Ticker {
	return systemTicker{ticker: time.NewTicker()}
}

func (systemClock) ( time.Duration) Timer {
	return systemTimer{timer: time.NewTimer()}
}

func (systemClock) () time.Time { return time.Now() }

// System Clock.
var System Clock = systemClock{}