chromium/ios/chrome/browser/ui/settings/password/password_sharing/sharing_status_view_controller.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_SHARING_STATUS_VIEW_CONTROLLER_H_
#define IOS_CHROME_BROWSER_UI_SETTINGS_PASSWORD_PASSWORD_SHARING_SHARING_STATUS_VIEW_CONTROLLER_H_

#import <UIKit/UIKit.h>

#import "ios/chrome/browser/ui/settings/password/password_sharing/sharing_status_consumer.h"

@protocol SharingStatusViewControllerPresentationDelegate;
@protocol TableViewFaviconDataSource;

// Presents the following animation:
// * Recipient and sender images appear on the middle.
// * Both images slide out (sender to the left, recipient to the right).
// * Shield with lock appears on the middle.
// * Progress bar is loading between sender and the recipient.
// * Shield and progress bar disappear, profile images slide to the middle
// If the user clicks "cancel" button at any point, the animation stops and
// cancelled status is presented. Otherwise, success status is displayed when
// the animation finishes.
@interface SharingStatusViewController
    : UIViewController <SharingStatusConsumer>

// Delegate for handling dismissal of the view.
@property(nonatomic, weak) id<SharingStatusViewControllerPresentationDelegate>
    delegate;

// Data source for favicon images.
@property(nonatomic, weak) id<TableViewFaviconDataSource> imageDataSource;

// Detent that attempts to fit the preferred height of the content.
- (UISheetPresentationControllerDetent*)preferredHeightDetent;

@end

#endif  // IOS_CHROME_BROWSER_UI_SETTINGS_PASSWORD_PASSWORD_SHARING_SHARING_STATUS_VIEW_CONTROLLER_H_