chromium/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_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_SEARCH_ENGINE_CHOICE_SEARCH_ENGINE_CHOICE_VIEW_CONTROLLER_H_
#define IOS_CHROME_BROWSER_UI_SEARCH_ENGINE_CHOICE_SEARCH_ENGINE_CHOICE_VIEW_CONTROLLER_H_

#import "ios/chrome/browser/ui/search_engine_choice/search_engine_choice_consumer.h"

#import <UIKit/UIKit.h>

@protocol SearchEngineChoiceMutator;

// Delegate protocol for SearchEngineViewController.
@protocol SearchEngineChoiceActionDelegate <NSObject>

// Called when the user taps the primary button.
- (void)didTapPrimaryButton;
// Called when the user taps the "Learn More" hyperlink.
- (void)showLearnMore;

@end

// A base view controller for showing a choice screen.
@interface SearchEngineChoiceViewController
    : UIViewController <SearchEngineChoiceConsumer>

// Delegate for all the user actions.
@property(nonatomic, weak) id<SearchEngineChoiceActionDelegate> actionDelegate;
// Delegate to update the selected search engine.
@property(nonatomic, weak) id<SearchEngineChoiceMutator> mutator;

- (instancetype)initWithFirstRunMode:(BOOL)isForFRE
    NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithNibName:(NSString*)nibNameOrNil
                         bundle:(NSBundle*)nibBundleOrNil NS_UNAVAILABLE;
- (instancetype)initWithCoder:(NSCoder*)aDecoder NS_UNAVAILABLE;

@end

#endif  // IOS_CHROME_BROWSER_UI_SEARCH_ENGINE_CHOICE_SEARCH_ENGINE_CHOICE_VIEW_CONTROLLER_H_