@startuml

abstract class CognitoStateMachineManager {
  + states: async* AuthState
  - machines: [StateMachine<AuthEvent, AuthState>]
  - queue: Queue<AuthEvent>
  --
  + accept(E event): void => queue.add(event);
  - dispatch(E event): void => machines[E].accept(event);
  --
  + loadCredentials(CredentialStoreEvent? event): async CredentialStoreData;
  + clearCredentials(Iterable<String>? keys): async void;
  + loadSession(FetchAuthSessionEvent? event): async CognitoAuthSession;
  + configureHostedUI(): async void;
  + signOutHostedUI(): async void;
}

@enduml