// Path: lib/src/main/java/com/yheriatovych/reductor/Reducer.java
// public interface Reducer<State> {
//     /**
//      * Produce new state based on current state and action to dispatch.
//      * <p>
//      * Reducer is responsible to populate initial state if null is passed as 'state' argument
//      * <p>
//      * Note:
//      * This function should be pure. No side effects, no API calls!
//      *
//      * @param state  state to be reduced
//      * @param action minimum representation of change to be performed on state
//      * @return a new state
//      */
//     State reduce(State state, Action action);
// }
// 
// Path: example/src/main/java/com/yheriatovych/reductor/example/model/NotesFilter.java
// public enum NotesFilter {
//     ALL,
//     CHECKED,
//     UNCHECKED
// }


import com.yheriatovych.reductor.Reducer;
import com.yheriatovych.reductor.annotations.AutoReducer;
import com.yheriatovych.reductor.annotations.AutoReducer.Action;
import com.yheriatovych.reductor.example.model.NotesFilter;
package com.yheriatovych.reductor.example.reductor.filter;


@AutoReducer
public abstract class NotesFilterReducer implements Reducer<NotesFilter> {
    @AutoReducer.InitialState
    NotesFilter initialState() {
        return NotesFilter.ALL;
    }

// Path: lib/src/main/java/com/yheriatovych/reductor/Reducer.java
// public interface Reducer<State> {
//     /**
//      * Produce new state based on current state and action to dispatch.
//      * <p>
//      * Reducer is responsible to populate initial state if null is passed as 'state' argument
//      * <p>
//      * Note:
//      * This function should be pure. No side effects, no API calls!
//      *
//      * @param state  state to be reduced
//      * @param action minimum representation of change to be performed on state
//      * @return a new state
//      */
//     State reduce(State state, Action action);
// }
// 
// Path: example/src/main/java/com/yheriatovych/reductor/example/model/NotesFilter.java
// public enum NotesFilter {
//     ALL,
//     CHECKED,
//     UNCHECKED
// }


// Path: example/src/main/java/com/yheriatovych/reductor/example/reductor/filter/NotesFilterReducer.java
import com.yheriatovych.reductor.Reducer;
import com.yheriatovych.reductor.annotations.AutoReducer;
import com.yheriatovych.reductor.annotations.AutoReducer.Action;
import com.yheriatovych.reductor.example.model.NotesFilter;

package com.yheriatovych.reductor.example.reductor.filter;


@AutoReducer
public abstract class NotesFilterReducer implements Reducer<NotesFilter> {
    @AutoReducer.InitialState
    NotesFilter initialState() {
        return NotesFilter.ALL;
    }

    @Action(value = FilterActions.SET_FILTER,