ctx.Step(`^there exists an account with username "([^"]*)" and password "([^"]*)"$`,s.thereExistsAnAccountWithUsernameAndPassword)
ctx.Step(`^there exists a disabled account with username "([^"]*)" and password "([^"]*)"$`,s.thereExistsAnAccountWithUsernameAndPasswordWithDisablePrimary)
ctx.Step(`^the account "([^"]*)" has additional address "([^"]*)"$`,s.theAccountHasAdditionalAddress)
ctx.Step(`^the account "([^"]*)" has additional disabled address "([^"]*)"$`,s.theAccountHasAdditionalDisabledAddress)
ctx.Step(`^the account "([^"]*)" has additional address "([^"]*)" without keys$`,s.theAccountHasAdditionalAddressWithoutKeys)
ctx.Step(`^the account "([^"]*)" no longer has additional address "([^"]*)"$`,s.theAccountNoLongerHasAdditionalAddress)
ctx.Step(`^the account "([^"]*)" has (\d+) custom folders$`,s.theAccountHasCustomFolders)
ctx.Step(`^the account "([^"]*)" has (\d+) custom labels$`,s.theAccountHasCustomLabels)
ctx.Step(`^the account "([^"]*)" has the following custom mailboxes:$`,s.theAccountHasTheFollowingCustomMailboxes)
ctx.Step(`^the address "([^"]*)" of account "([^"]*)" has the following messages in "([^"]*)":$`,s.theAddressOfAccountHasTheFollowingMessagesInMailbox)
ctx.Step(`^the address "([^"]*)" of account "([^"]*)" has (\d+) messages in "([^"]*)"$`,s.theAddressOfAccountHasMessagesInMailbox)
ctx.Step(`^the following fields were changed in draft (\d+) for address "([^"]*)" of account "([^"]*)":$`,s.theFollowingFieldsWereChangedInDraftForAddressOfAccount)
ctx.Step(`^draft (\d+) for address "([^"]*)" of account "([^"]*)" was moved to trash$`,s.drafAtIndexWasMovedToTrashForAddressOfAccount)
ctx.Step(`^bridge is version "([^"]*)" and the latest available version is "([^"]*)" reachable from "([^"]*)"$`,s.bridgeVersionIsAndTheLatestAvailableVersionIsReachableFrom)
ctx.Step(`^the user has disabled automatic updates$`,s.theUserHasDisabledAutomaticUpdates)
ctx.Step(`^the user has disabled automatic start`,s.theUserHasDisabledAutomaticStart)
ctx.Step(`^the user has enabled alternative routing`,s.theUserHasEnabledAlternativeRouting)
ctx.Step(`^the user set IMAP mode to SSL`,s.theUserSetIMAPModeToSSL)
ctx.Step(`^the user set SMTP mode to SSL`,s.theUserSetSMTPModeToSSL)
ctx.Step(`^the user changes the IMAP port to (\d+)$`,s.theUserChangesTheIMAPPortTo)
ctx.Step(`^the user changes the SMTP port to (\d+)$`,s.theUserChangesTheSMTPPortTo)
ctx.Step(`^the user sets the address mode of user "([^"]*)" to "([^"]*)"$`,s.theUserSetsTheAddressModeOfUserTo)
ctx.Step(`^the user changes the default keychain application`,s.theUserChangesTheDefaultKeychainApplication)
ctx.Step(`^the user changes the gluon path$`,s.theUserChangesTheGluonPath)
ctx.Step(`^the user deletes the gluon files$`,s.theUserDeletesTheGluonFiles)
ctx.Step(`^the user deletes the gluon cache$`,s.theUserDeletesTheGluonCache)
ctx.Step(`^the user reports a bug$`,s.theUserReportsABug)
ctx.Step(`^user "([^"]*)" connects and authenticates IMAP client "([^"]*)" with address "([^"]*)" using IMAP AUTHENTICATE$`,s.userConnectsAndAuthenticatesIMAPClientWithAddressUsingIMAPAuthenticate)
ctx.Step(`^user "([^"]*)" connects and can not authenticate IMAP client "([^"]*)" with address "([^"]*)"$`,s.userConnectsAndCanNotAuthenticateIMAPClientWithAddress)
ctx.Step(`^IMAP client "([^"]*)" can authenticate$`,s.imapClientCanAuthenticate)
ctx.Step(`^IMAP client "([^"]*)" can authenticate with address "([^"]*)" using IMAP AUTHENTICATE$`,s.imapClientCanAuthenticateWithAddressUsingIMAPAuthenticate)
ctx.Step(`^IMAP client "([^"]*)" copies the message with subject "([^"]*)" from "([^"]*)" to "([^"]*)"$`,s.imapClientCopiesTheMessageWithSubjectFromTo)
ctx.Step(`^IMAP client "([^"]*)" copies all messages from "([^"]*)" to "([^"]*)"$`,s.imapClientCopiesAllMessagesFromTo)
ctx.Step(`^IMAP client "([^"]*)" moves the message with subject "([^"]*)" from "([^"]*)" to "([^"]*)"$`,s.imapClientMovesTheMessageWithSubjectFromTo)
ctx.Step(`^IMAP client "([^"]*)" moves all messages from "([^"]*)" to "([^"]*)"$`,s.imapClientMovesAllMessagesFromTo)
ctx.Step(`^IMAP client "([^"]*)" eventually sees the following messages in "([^"]*)":$`,s.imapClientEventuallySeesTheFollowingMessagesInMailbox)
ctx.Step(`^IMAP client "([^"]*)" eventually sees the following message in "([^"]*)" with this structure:$`,s.imapClientSeesMessageInMailboxWithStructure)
ctx.Step(`^IMAP client "([^"]*)" eventually sees that message at row (\d+) does not have the flag "([^"]*)"$`,s.imapClientSeesThatMessageDoesNotHaveTheFlag)
ctx.Step(`^IMAP client "([^"]*)" eventually sees that the message with subject "([^"]*)" has the flag "([^"]*)"`,s.imapClientEventuallySeesThatTheMessageWithSubjectHasTheFlag)
ctx.Step(`^IMAP client "([^"]*)" eventually sees that the message with subject "([^"]*)" does not have the flag "([^"]*)"`,s.imapClientEventuallySeesThatTheMessageWithSubjectDoesNotHaveTheFlag)
ctx.Step(`^IMAP client "([^"]*)" eventually sees that all the messages have the flag "([^"]*)"`,s.imapClientEventuallySeesThatAllTheMessagesHaveTheFlag)
ctx.Step(`^IMAP client "([^"]*)" eventually sees that all the messages do not have the flag "([^"]*)"`,s.imapClientEventuallySeesThatAllTheMessagesDoNotHaveTheFlag)
ctx.Step(`^IMAP client "([^"]*)" appends the following message to "([^"]*)":$`,s.imapClientAppendsTheFollowingMessageToMailbox)
ctx.Step(`^IMAP client "([^"]*)" appends the following messages to "([^"]*)":$`,s.imapClientAppendsTheFollowingMessagesToMailbox)
ctx.Step(`^IMAP client "([^"]*)" appends "([^"]*)" to "([^"]*)"$`,s.imapClientAppendsToMailbox)
ctx.Step(`^IMAP clients "([^"]*)" and "([^"]*)" move message with subject "([^"]*)" of "([^"]*)" to "([^"]*)" by ([^"]*) ([^"]*) ([^"]*)`,s.imapClientsMoveMessageWithSubjectUserFromToByOrderedOperations)
ctx.Step(`^IMAP client "([^"]*)" sees header "([^"]*)" in message with subject "([^"]*)" in "([^"]*)"$`,s.imapClientSeesHeaderInMessageWithSubject)
ctx.Step(`^IMAP client "([^"]*)" does not see header "([^"]*)" in message with subject "([^"]*)" in "([^"]*)"$`,s.imapClientDoesNotSeeHeaderInMessageWithSubject)
ctx.Step(`^external client deletes all messages`,s.externalClientDeletesAllMessages)
ctx.Step(`^external client sends the following message from "([^"]*)" to "([^"]*)":$`,s.externalClientSendsTheFollowingMessageFromTo)
ctx.Step(`^external client fetches the following message with subject "([^"]*)" and sender "([^"]*)" and state "([^"]*)"$`,s.externalClientFetchesTheFollowingMessage)
ctx.Step(`^external client fetches the following message with subject "([^"]*)" and sender "([^"]*)" and state "([^"]*)" with this structure:$`,s.externalClientSeesMessageWithStructure)
ctx.Step(`^the user with username "([^"]*)" sends all possible observability heartbeat metrics$`,s.userHeartbeatPermutationsObservability)
ctx.Step(`^the user with username "([^"]*)" sends all possible user distinction metrics$`,s.userDistinctionMetricsPermutationsObservability)
ctx.Step(`^the user with username "([^"]*)" sends all possible sync message event failure observability metrics$`,s.syncFailureMessageEventsObservability)
ctx.Step(`^the user with username "([^"]*)" sends all possible event loop message events observability metrics$`,s.eventLoopFailureMessageEventsObservability)
ctx.Step(`^the user with username "([^"]*)" sends all possible sync message building failure observability metrics$`,s.syncFailureMessageBuiltObservability)
ctx.Step(`^the user with username "([^"]*)" sends all possible sync message building success observability metrics$`,s.syncSuccessMessageBuiltObservability)
ctx.Step(`^the user with username "([^"]*)" sends all possible vault or keychain related error observability metrics$`,s.VaultKeychainErrorsObservabilityMetrics)
// Gluon metric - on newly opened IMAP connections exceeding threshold.
ctx.Step(`^the user with username "([^"]*)" sends a Gluon metric indicating that the number of newly opened IMAP connections within some interval have exceed a threshold value$`,s.GluonNewlyOpenedIMAPConnectionsExceedThreshold)