chromium/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_mediator.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_TAB_SWITCHER_TAB_GRID_TAB_GROUPS_TAB_GROUP_MEDIATOR_H_
#define IOS_CHROME_BROWSER_UI_TAB_SWITCHER_TAB_GRID_TAB_GROUPS_TAB_GROUP_MEDIATOR_H_

#import <Foundation/Foundation.h>

#import "base/memory/weak_ptr.h"
#import "ios/chrome/browser/ui/tab_switcher/tab_grid/grid/base_grid_mediator.h"
#import "ios/chrome/browser/ui/tab_switcher/tab_grid/tab_groups/tab_group_mutator.h"

class TabGroup;
@protocol TabCollectionConsumer;
@class TabGridModeHolder;
@protocol TabGroupsCommands;
@protocol TabGroupConsumer;
class WebStateList;

// Tab group mediator in charge to handle model update for one group.
@interface TabGroupMediator : BaseGridMediator <TabGroupMutator>

- (instancetype)initWithWebStateList:(WebStateList*)webStateList
                            tabGroup:(base::WeakPtr<const TabGroup>)tabGroup
                            consumer:(id<TabGroupConsumer>)consumer
                        gridConsumer:(id<TabCollectionConsumer>)gridConsumer
                          modeHolder:(TabGridModeHolder*)modeHolder;

@end

#endif  // IOS_CHROME_BROWSER_UI_TAB_SWITCHER_TAB_GRID_TAB_GROUPS_TAB_GROUP_MEDIATOR_H_