+ * The workflow state to check.
+ *
+ * @return bool
+ * TRUE if the workflow state is being used, FALSE if not.
+ */
+ public function workflowStateHasData(WorkflowInterface $workflow, StateInterface $state);
+
+ /**
+ * Gets the initial state for the workflow.
+ *
+ * @return \Drupal\workflows\StateInterface
+ * The initial state.
+ */
+ public function getInitialState();
+
+ /**
+ * Gets the required states of workflow type.
+ *
+ * This is usually specified in the workflow type annotation.
+ *
+ * @return string[]
+ * The required states.
+ *
+ * @see \Drupal\workflows\Annotation\WorkflowType
+ */
+ public function getRequiredStates();
+
+ /**
+ * Informs the plugin that a dependency of the workflow will be deleted.
+ *
+ * @param array $dependencies
+ * An array of dependencies that will be deleted keyed by dependency type.
+ *
+ * @return bool
+ * TRUE if the workflow settings have been changed, FALSE if not.
+ *
+ * @see \Drupal\Core\Config\ConfigEntityInterface::onDependencyRemoval()
+ *
+ * @todo https://www.drupal.org/node/2579743 make part of a generic interface.
+ */
+ public function onDependencyRemoval(array $dependencies);
+
+ /**
+ * Adds a state to the workflow.
+ *
+ * @param string $state_id
+ * The state's ID.
+ * @param string $label
+ * The state's label.
+ *
+ * @return $this
+ *
+ * @throws \InvalidArgumentException
+ * Thrown if a state already exists or state ID is invalid.
+ */
+ public function addState($state_id, $label);
+
+ /**
+ * Determines if the workflow has a state with the provided ID.
+ *
+ * @param string $state_id
+ * The state's ID.
+ *
+ * @return bool
+ * TRUE if the workflow has a state with the provided ID, FALSE if not.
+ */
+ public function hasState($state_id);
+
+ /**
+ * Gets state objects for the provided state IDs.
+ *
+ * @param string[] $state_ids
+ * A list of state IDs to get. If NULL then all states will be returned.
+ *
+ * @return \Drupal\workflows\StateInterface[]
+ * An array of workflow states.
+ *
+ * @throws \InvalidArgumentException
+ * Thrown if $state_ids contains a state ID that does not exist.
+ */
+ public function getStates($state_ids = NULL);
+
+ /**
+ * Gets a workflow state.
+ *
+ * @param string $state_id
+ * The state's ID.