// Path: plume-services/src/main/java/com/coreoz/plume/services/time/TimeProvider.java
// public interface TimeProvider {
// 
// 	Clock clock();
// 
// 	/**
// 	 * Returns the current time in milliseconds
// 	 */
// 	default long currentTime() {
// 		return clock().millis();
// 	}
// 
// 	default Instant currentInstant() {
// 		return Instant.now(clock());
// 	}
// 
// 	default LocalDate currentLocalDate() {
// 		return LocalDate.now(clock());
// 	}
// 
// 	default LocalDateTime currentDateTime() {
// 		return LocalDateTime.now(clock());
// 	}
// 
// }


import javax.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton;
import com.coreoz.plume.services.time.TimeProvider;
import com.coreoz.wisp.Scheduler;
import com.coreoz.wisp.SchedulerConfig;
package com.coreoz.plume.scheduler;



@Singleton
public class SchedulerProvider implements Provider<Scheduler> {

	private final Scheduler scheduler;

	@Inject
	public SchedulerProvider(TimeProvider timeProvider) {
		this.scheduler = new Scheduler(
			SchedulerConfig
				.builder()
// Path: plume-services/src/main/java/com/coreoz/plume/services/time/TimeProvider.java
// public interface TimeProvider {
// 
// 	Clock clock();
// 
// 	/**
// 	 * Returns the current time in milliseconds
// 	 */
// 	default long currentTime() {
// 		return clock().millis();
// 	}
// 
// 	default Instant currentInstant() {
// 		return Instant.now(clock());
// 	}
// 
// 	default LocalDate currentLocalDate() {
// 		return LocalDate.now(clock());
// 	}
// 
// 	default LocalDateTime currentDateTime() {
// 		return LocalDateTime.now(clock());
// 	}
// 
// }


// Path: plume-scheduler/src/main/java/com/coreoz/plume/scheduler/SchedulerProvider.java
import javax.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton;
import com.coreoz.plume.services.time.TimeProvider;
import com.coreoz.wisp.Scheduler;
import com.coreoz.wisp.SchedulerConfig;

package com.coreoz.plume.scheduler;



@Singleton
public class SchedulerProvider implements Provider<Scheduler> {

	private final Scheduler scheduler;

	@Inject
	public SchedulerProvider(TimeProvider timeProvider) {
		this.scheduler = new Scheduler(
			SchedulerConfig
				.builder()
				.timeProvider(new PlumeTimeProvider(timeProvider))