chromium/ios/chrome/browser/ui/settings/downloads/save_to_photos/save_to_photos_settings_mediator.h

// Copyright 2023 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_UI_SETTINGS_DOWNLOADS_SAVE_TO_PHOTOS_SAVE_TO_PHOTOS_SETTINGS_MEDIATOR_H_
#define IOS_CHROME_BROWSER_UI_SETTINGS_DOWNLOADS_SAVE_TO_PHOTOS_SAVE_TO_PHOTOS_SETTINGS_MEDIATOR_H_

#import <Foundation/Foundation.h>

#import "ios/chrome/browser/ui/settings/downloads/save_to_photos/save_to_photos_settings_mutator.h"

class ChromeAccountManagerService;
class PrefService;
@protocol SaveToPhotosSettingsMediatorDelegate;
@protocol SaveToPhotosSettingsAccountConfirmationConsumer;
@protocol SaveToPhotosSettingsAccountSelectionConsumer;

namespace signin {
class IdentityManager;
}  // namespace signin

// Mediator for Save to Photos settings.
@interface SaveToPhotosSettingsMediator : NSObject <SaveToPhotosSettingsMutator>

// Delegate.
@property(nonatomic, weak) id<SaveToPhotosSettingsMediatorDelegate> delegate;

// Two consumers (for two different screens).
@property(nonatomic, weak) id<SaveToPhotosSettingsAccountConfirmationConsumer>
    accountConfirmationConsumer;
@property(nonatomic, weak) id<SaveToPhotosSettingsAccountSelectionConsumer>
    accountSelectionConsumer;

// Initialization.
- (instancetype)initWithAccountManagerService:
                    (ChromeAccountManagerService*)accountManagerService
                                  prefService:(PrefService*)prefService
                              identityManager:
                                  (signin::IdentityManager*)identityManager
    NS_DESIGNATED_INITIALIZER;
- (instancetype)init NS_UNAVAILABLE;

- (void)disconnect;

@end

#endif  // IOS_CHROME_BROWSER_UI_SETTINGS_DOWNLOADS_SAVE_TO_PHOTOS_SAVE_TO_PHOTOS_SETTINGS_MEDIATOR_H_