chromium/ios/chrome/browser/shared/public/commands/tabs_animation_commands.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_SHARED_PUBLIC_COMMANDS_TABS_ANIMATION_COMMANDS_H_
#define IOS_CHROME_BROWSER_SHARED_PUBLIC_COMMANDS_TABS_ANIMATION_COMMANDS_H_

#include <objc/NSObjCRuntime.h>

#import "base/ios/block_types.h"
#import "ios/chrome/browser/browsing_data/model/tabs_closure_util.h"

// Protocol for animating tabs in the tab grid.
@protocol TabsAnimationCommands

// Triggers the tabs closure animation on the tab grid for the WebStates in
// `tabsToClose`, for the groups in `groupsWithTabsToClose`, and if
// `animateAllInactiveTabs` is true, then for the inactive tabs banner. It also
// triggers the closure of the selected WebStates through`completionHandler`
// after running the animation.
- (void)animateTabsClosureForTabs:(std::set<web::WebStateID>)tabsToClose
                           groups:
                               (std::map<tab_groups::TabGroupId, std::set<int>>)
                                   groupsWithTabsToClose
                  allInactiveTabs:(BOOL)animateAllInactiveTabs
                completionHandler:(ProceduralBlock)completionHandler;
@end

#endif  // IOS_CHROME_BROWSER_SHARED_PUBLIC_COMMANDS_TABS_ANIMATION_COMMANDS_H_