chromium/ios/chrome/browser/ui/settings/password/password_sharing/recipient_info.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_PASSWORD_PASSWORD_SHARING_RECIPIENT_INFO_H_
#define IOS_CHROME_BROWSER_UI_SETTINGS_PASSWORD_PASSWORD_SHARING_RECIPIENT_INFO_H_

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

namespace password_manager {
struct PublicKey;
struct RecipientInfo;
}  // namespace password_manager

// Object which is used by `FamilyPickerViewController` to show information
// about the potential password sharing recipient of the user.
@interface RecipientInfoForIOSDisplay : NSObject

// Full name of the recipient.
@property(nonatomic, copy) NSString* fullName;

// Email address of the recipient.
@property(nonatomic, copy) NSString* email;

// Whether the recipient is eligible to receive a shared password.
@property(nonatomic, assign) BOOL isEligible;

// Recipient's identifier (obfuscated Gaia ID).
@property(nonatomic, readonly) NSString* userID;

// Public key of the user including its version.
@property(nonatomic, readonly) password_manager::PublicKey publicKey;

// URL to the profile picture of the recipient for display in the UI.
@property(nonatomic, copy) NSString* profileImageURL;

// Circular profile icon of the recipient. Initialized with default user icon
// placeholder.
@property(nonatomic, copy) UIImage* profileImage;

// Whether the `profileImage` has been already fetched from `profileImageURL`.
@property(nonatomic, assign, getter=isImageFetched) BOOL imageFetched;

- (instancetype)initWithRecipientInfo:
    (const password_manager::RecipientInfo&)recipient NS_DESIGNATED_INITIALIZER;

- (instancetype)init NS_UNAVAILABLE;

@end

#endif  // IOS_CHROME_BROWSER_UI_SETTINGS_PASSWORD_PASSWORD_SHARING_RECIPIENT_INFO_H_