pub trait IdentityAction: Send {
// Required methods
fn update_state(
&self,
existing_state: Option<AssociationState>,
client_timestamp_ns: u64,
) -> Result<AssociationState, AssociationError>;
fn signatures(&self) -> Vec<Vec<u8>>;
// Provided method
fn replay_check(
&self,
state: &AssociationState,
) -> Result<(), AssociationError> { ... }
}