chromium/ios/chrome/browser/ui/authentication/account_menu/account_menu_view_controller.h

// Copyright 2024 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_AUTHENTICATION_ACCOUNT_MENU_ACCOUNT_MENU_VIEW_CONTROLLER_H_
#define IOS_CHROME_BROWSER_UI_AUTHENTICATION_ACCOUNT_MENU_ACCOUNT_MENU_VIEW_CONTROLLER_H_

#import <UIKit/UIKit.h>

#import "ios/chrome/browser/shared/ui/table_view/chrome_table_view_controller.h"
#import "ios/chrome/browser/ui/authentication/account_menu/account_menu_consumer.h"

@protocol AccountMenuDataSource;
@protocol AccountMenuMutator;
@protocol AccountMenuViewControllerPresentationDelegate;

// Identifier for the "manage your account" menu entry.
extern const char kManageYourGoogleAccountIdentifier[];
// Identifier for the "Edit account list" menu entry.
extern const char kEditAccountListIdentifier[];

@interface AccountMenuViewController
    : ChromeTableViewController <AccountMenuConsumer>

// The delegate for the view controller.
@property(nonatomic, weak) id<AccountMenuViewControllerPresentationDelegate>
    delegate;

// The mutator for the account menu.
@property(nonatomic, weak) id<AccountMenuMutator> mutator;

// The data source for the account menu.
@property(nonatomic, weak) id<AccountMenuDataSource> dataSource;

// Sets up the sheet presentation controller and its properties.
// It must be called before the view is presented, in order to work on
// popover adapted as sheet on compact width tablets.
- (void)setUpBottomSheetPresentationController;

@end

#endif  // IOS_CHROME_BROWSER_UI_AUTHENTICATION_ACCOUNT_MENU_ACCOUNT_MENU_VIEW_CONTROLLER_H_