chromium/ios/chrome/browser/ui/whats_new/whats_new_mediator.h

// Copyright 2022 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_WHATS_NEW_WHATS_NEW_MEDIATOR_H_
#define IOS_CHROME_BROWSER_UI_WHATS_NEW_WHATS_NEW_MEDIATOR_H_

#import "ios/chrome/browser/ui/whats_new/whats_new_detail_view_action_handler.h"
#import "ios/chrome/browser/ui/whats_new/whats_new_table_view_action_handler.h"

@protocol WhatsNewMediatorConsumer;
@protocol ApplicationCommands;
@protocol WhatsNewCommands;
@protocol LensCommands;
@protocol SettingsCommands;

class UrlLoadingBrowserAgent;

// Mediator between the Model and the UI.
// What's New mediator between `WhatsNewModel` and the view layers
// `WhatsNewTableViewController`.
@interface WhatsNewMediator
    : NSObject <WhatsNewDetailViewActionHandler, WhatsNewTableViewActionHandler>

// The delegate object that manages interactions with What's New table view.
@property(nonatomic, weak) id<WhatsNewMediatorConsumer> consumer;

// Url loading agent.
@property(nonatomic, assign) UrlLoadingBrowserAgent* urlLoadingAgent;

// Application command handler.
@property(nonatomic, weak) id<ApplicationCommands> applicationHandler;

// Dispatcher for handling Lens promo actions.
@property(nonatomic, weak) id<LensCommands> lensHandler;

// What's New command handler.
@property(nonatomic, weak) id<WhatsNewCommands> whatsNewHandler;

// Settings command handler.
@property(nonatomic, weak) id<SettingsCommands> settingsHandler;

@end

#endif  // IOS_CHROME_BROWSER_UI_WHATS_NEW_WHATS_NEW_MEDIATOR_H_