package net.pterodactylus.rhynodge;
+import javax.annotation.Nonnull;
+
+import net.pterodactylus.rhynodge.output.Output;
+
/**
* Defines the current state of a system.
*
boolean success();
/**
+ * Returns whether this state triggers a change notification. This can
+ * only return {@code true} if this state is the result of a
+ * {@link Merger} merging two states.
+ *
+ * @return {@code true} if this state triggers a change notification,
+ * {@code false} otherwise
+ */
+ boolean triggered();
+
+ /**
+ * Sets whether this state will trigger a notification.
+ */
+ void trigger();
+
+ boolean isEmpty();
+
+ /**
* Returns the number of consecutive failures. This method only returns a
* meaningful number iff {@link #success()} returns {@code false}. If
* {@link #success()} returns {@code false} for the first time after
*/
Throwable exception();
+ @Nonnull
+ Output output(Reaction reaction);
+
}