chromium/ios/chrome/browser/settings/model/sync/utils/sync_presenter.h

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef IOS_CHROME_BROWSER_SETTINGS_MODEL_SYNC_UTILS_SYNC_PRESENTER_H_
#define IOS_CHROME_BROWSER_SETTINGS_MODEL_SYNC_UTILS_SYNC_PRESENTER_H_

#import <Foundation/Foundation.h>

namespace syncer {
enum class TrustedVaultUserActionTriggerForUMA;
}  // namespace syncer

// Protocol used to display sync-related UI.
@protocol SyncPresenter

// Asks the presenter to display the reauthenticate the primary account.
// The primary should be available.
- (void)showPrimaryAccountReauth;

// Asks the presenter to display the sync encryption passphrase UI.
- (void)showSyncPassphraseSettings;

// Presents the Google services settings.
- (void)showGoogleServicesSettings;

// Presents the Account settings.
- (void)showAccountSettings;

// Presents the Trusted Vault reauthentication dialog, for sync security domain
// id. `trigger` UI elements where the trusted vault reauth has been triggered.
- (void)showTrustedVaultReauthForFetchKeysWithTrigger:
    (syncer::TrustedVaultUserActionTriggerForUMA)trigger;

// Presents the Trusted Vault degraded recoverability dialog (to enroll
// additional recovery factors), for sync security domain id.
// `trigger` UI elements where the trusted vault reauth has been triggered.
- (void)showTrustedVaultReauthForDegradedRecoverabilityWithTrigger:
    (syncer::TrustedVaultUserActionTriggerForUMA)trigger;

@end

#endif  // IOS_CHROME_BROWSER_SETTINGS_MODEL_SYNC_UTILS_SYNC_PRESENTER_H_