chromium/ios/chrome/browser/ui/authentication/account_menu/account_menu_data_source.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_DATA_SOURCE_H_
#define IOS_CHROME_BROWSER_UI_AUTHENTICATION_ACCOUNT_MENU_ACCOUNT_MENU_DATA_SOURCE_H_

#import <UIKit/UIKit.h>

#import <vector>

@class AccountErrorUIInfo;
enum class IdentityAvatarSize;
@class LegacyAccountsTableViewController;
struct ManagementState;
@protocol SystemIdentity;
@class TableViewAccountItem;

// Identity data source for AccountMenuTableViewController instance, to
// manage the model.
@protocol AccountMenuDataSource <NSObject>

// Provides error UI info to the controller.
@property(nonatomic, readonly) AccountErrorUIInfo* accountErrorUIInfo;

// The gaia ids of the secondary accounts.
@property(nonatomic, readonly) NSArray<NSString*>* secondaryAccountsGaiaIDs;

// The email of the primary account.
@property(nonatomic, readonly) NSString* primaryAccountEmail;

// The avatar of the primary account.
@property(nonatomic, readonly) UIImage* primaryAccountAvatar;

// The user full name of the primary account.
@property(nonatomic, readonly) NSString* primaryAccountUserFullName;

// The management state of this browser and profile.
@property(nonatomic, readonly) ManagementState managementState;

// The identity for the value at `itemIndex` in the table.
- (TableViewAccountItem*)identityItemForGaiaID:(NSString*)gaiaID;

@end

#endif  // IOS_CHROME_BROWSER_UI_AUTHENTICATION_ACCOUNT_MENU_ACCOUNT_MENU_DATA_SOURCE_H_