// Path: src/main/java/org/graylog/plugins/aggregates/report/schedule/rest/models/requests/AddReportScheduleRequest.java
// @AutoValue
// @JsonAutoDetect
// public abstract class AddReportScheduleRequest {
// 	
//     @JsonProperty("reportSchedule")
//     @NotNull
//     public abstract ReportScheduleImpl getReportSchedule();
//     
//     @JsonCreator    
//     public static AddReportScheduleRequest create(//@JsonProperty("name") @Valid String name,
//     		@JsonProperty("reportSchedule") @Valid ReportScheduleImpl reportSchedule
// 
//     		) {
//         return new AutoValue_AddReportScheduleRequest(reportSchedule);
//     }
// }
// 
// Path: src/main/java/org/graylog/plugins/aggregates/report/schedule/rest/models/requests/UpdateReportScheduleRequest.java
// @AutoValue
// @JsonAutoDetect
// public abstract class UpdateReportScheduleRequest {
// 	
// 
//     @JsonProperty("reportSchedule")
//     @NotNull
//     public abstract ReportScheduleImpl getReportSchedule();
//     
//     @JsonCreator    
//     public static UpdateReportScheduleRequest create(
//     		@JsonProperty("reportSchedule") @Valid ReportScheduleImpl reportSchedule    		    		
//     		) {
//         return new AutoValue_UpdateReportScheduleRequest(reportSchedule);
//     }
// }


import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.List;
import org.graylog.plugins.aggregates.report.schedule.rest.models.requests.AddReportScheduleRequest;
import org.graylog.plugins.aggregates.report.schedule.rest.models.requests.UpdateReportScheduleRequest;
import com.mongodb.MongoException;
package org.graylog.plugins.aggregates.report.schedule;





public interface ReportScheduleService {
    long count();

    ReportSchedule update(String name, ReportSchedule schedule);

    ReportSchedule create(ReportSchedule schedule);
    
    List<ReportSchedule> all();
    
    int destroy(String scheduleName) throws MongoException, UnsupportedEncodingException;

// Path: src/main/java/org/graylog/plugins/aggregates/report/schedule/rest/models/requests/AddReportScheduleRequest.java
// @AutoValue
// @JsonAutoDetect
// public abstract class AddReportScheduleRequest {
// 	
//     @JsonProperty("reportSchedule")
//     @NotNull
//     public abstract ReportScheduleImpl getReportSchedule();
//     
//     @JsonCreator    
//     public static AddReportScheduleRequest create(//@JsonProperty("name") @Valid String name,
//     		@JsonProperty("reportSchedule") @Valid ReportScheduleImpl reportSchedule
// 
//     		) {
//         return new AutoValue_AddReportScheduleRequest(reportSchedule);
//     }
// }
// 
// Path: src/main/java/org/graylog/plugins/aggregates/report/schedule/rest/models/requests/UpdateReportScheduleRequest.java
// @AutoValue
// @JsonAutoDetect
// public abstract class UpdateReportScheduleRequest {
// 	
// 
//     @JsonProperty("reportSchedule")
//     @NotNull
//     public abstract ReportScheduleImpl getReportSchedule();
//     
//     @JsonCreator    
//     public static UpdateReportScheduleRequest create(
//     		@JsonProperty("reportSchedule") @Valid ReportScheduleImpl reportSchedule    		    		
//     		) {
//         return new AutoValue_UpdateReportScheduleRequest(reportSchedule);
//     }
// }


// Path: src/main/java/org/graylog/plugins/aggregates/report/schedule/ReportScheduleService.java
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.List;
import org.graylog.plugins.aggregates.report.schedule.rest.models.requests.AddReportScheduleRequest;
import org.graylog.plugins.aggregates.report.schedule.rest.models.requests.UpdateReportScheduleRequest;
import com.mongodb.MongoException;

package org.graylog.plugins.aggregates.report.schedule;





public interface ReportScheduleService {
    long count();

    ReportSchedule update(String name, ReportSchedule schedule);

    ReportSchedule create(ReportSchedule schedule);
    
    List<ReportSchedule> all();
    
    int destroy(String scheduleName) throws MongoException, UnsupportedEncodingException;

	ReportSchedule fromRequest(AddReportScheduleRequest request);