+ * Updates the peers and information to match the given ServerConfigurationPayload.
+ *
+ * @param serverCfgPayload the ServerConfigurationPayload.
+ */
+ void updatePeerIds(ServerConfigurationPayload serverCfgPayload);
+
+ /**
+ * Returns the PeerInfo instances for each peer.
+ *
+ * @return list of PeerInfo
+ */
+ @NonNull Collection<PeerInfo> getPeers();
+
+ /**
+ * Returns the id's for each peer.
+ *
+ * @return the list of peer id's.
+ */
+ @NonNull Collection<String> getPeerIds();
+
+ /**
+ * Returns the PeerInfo for the given peer.
+ *
+ * @param peerId the id of the peer
+ * @return the PeerInfo or null if not found
+ */
+ @Nullable PeerInfo getPeerInfo(String peerId);
+
+ /**
+ * Adds a new peer.
+ *
+ * @param id the id of the new peer.
+ * @param address the address of the new peer.
+ * @param votingState the VotingState of the new peer.
+ */
+ void addToPeers(String id, String address, VotingState votingState);
+
+ /**
+ * Removes a peer.
+ *
+ * @param id the id of the peer to remove.
+ */
+ void removePeer(String id);
+
+ /**
+ * Returns an ActorSelection for a peer.
+ *
+ * @param peerId the id of the peer.
+ * @return the actorSelection corresponding to the peer or null if the address has not yet been resolved.
+ */
+ @Nullable ActorSelection getPeerActorSelection(String peerId);
+
+ /**
+ * Sets the address of a peer.
+ *
+ * @param peerId the id of the peer.
+ * @param peerAddress the address of the peer.
+ */
+ void setPeerAddress(String peerId, String peerAddress);
+
+ /**
+ * Returns the ConfigParams instance.
+ *
+ * @return the ConfigParams instance.
+ */
+ @NonNull ConfigParams getConfigParams();
+
+ /**
+ * Returns the SnapshotManager instance.
+ *
+ * @return the SnapshotManager instance.
+ */
+ @NonNull SnapshotManager getSnapshotManager();
+
+ /**
+ * Returns the DataPersistenceProvider instance.
+ *
+ * @return the DataPersistenceProvider instance.
+ */
+ @NonNull DataPersistenceProvider getPersistenceProvider();
+
+ /**
+ * Determines if there are any peer followers.
+ *
+ * @return true if there are followers otherwise false.
+ */
+ boolean hasFollowers();
+
+ /**
+ * Returns the total available memory for use in calculations. Normally this returns JVM's max memory but can be
+ * overridden for unit tests.
+ *
+ * @return the total memory.
+ */
+ long getTotalMemory();
+
+ /**
+ * Sets the retriever of the total memory metric.
+ *
+ * @param retriever a supplier of the total memory metric.
+ */
+ @VisibleForTesting
+ void setTotalMemoryRetriever(LongSupplier retriever);
+
+ /**
+ * Returns the payload version to be used when replicating data.
+ *
+ * @return the payload version.
+ */
+ short getPayloadVersion();
+
+ /**
+ * Returns the RaftPolicy used to determine certain Raft behaviors.
+ *
+ * @return the RaftPolicy instance.
+ */
+ @NonNull RaftPolicy getRaftPolicy();
+
+ /**
+ * Determines if there have been any dynamic server configuration changes applied.
+ *
+ * @return true if dynamic server configuration changes have been applied, false otherwise, meaning that static
+ * peer configuration is still in use.
+ */
+ boolean isDynamicServerConfigurationInUse();
+
+ /**
+ * Sets that dynamic server configuration changes have been applied.
+ */
+ void setDynamicServerConfigurationInUse();
+
+ /**
+ * Returns the peer information as a ServerConfigurationPayload if dynamic server configurations have been applied.
+ *
+ * @param includeSelf include this peer's info.
+ * @return the peer information as a ServerConfigurationPayload or null if no dynamic server configurations have
+ * been applied.
+ */
+ @Nullable ServerConfigurationPayload getPeerServerInfo(boolean includeSelf);
+
+ /**
+ * Determines if this peer is a voting member of the cluster.
+ *
+ * @return true if this peer is a voting member, false otherwise.
+ */
+ boolean isVotingMember();
+
+ /**
+ * Determines if there are any voting peers.
+ *
+ * @return true if there are any voting peers, false otherwise.
+ */
+ boolean anyVotingPeers();
+
+ /**
+ * Returns the current behavior attached to the RaftActor.
+ *
+ * @return current behavior.
+ */
+ RaftActorBehavior getCurrentBehavior();
+
+ /**
+ * Returns the consumer of ApplyState operations. This is invoked by a behavior when a log entry needs to be
+ * applied to the state.
+ *
+ * @return the Consumer
+ */
+ Consumer<ApplyState> getApplyStateConsumer();
+
+ /**
+ * Returns the {@link FileBackedOutputStreamFactory} instance with a common configuration.
+ *
+ * @return the {@link FileBackedOutputStreamFactory};
+ */
+ @NonNull FileBackedOutputStreamFactory getFileBackedOutputStreamFactory();
+
+ /**
+ * Returns the RaftActorLeadershipTransferCohort if leadership transfer is in progress.
+ *
+ * @return the RaftActorLeadershipTransferCohort if leadership transfer is in progress, null otherwise