chromium/ios/chrome/browser/shared/public/commands/open_lens_input_selection_command.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_SHARED_PUBLIC_COMMANDS_OPEN_LENS_INPUT_SELECTION_COMMAND_H_
#define IOS_CHROME_BROWSER_SHARED_PUBLIC_COMMANDS_OPEN_LENS_INPUT_SELECTION_COMMAND_H_

#import <UIKit/UIKit.h>
#import "base/ios/block_types.h"

enum class LensEntrypoint;

// Enum representing the possible ways the input selection UI can be presented.
enum class LensInputSelectionPresentationStyle {
  SlideFromRight = 0,
  SlideFromLeft = 1,
};

// An instance of this class contains the data needed to do a Lens search via
// the input selection UI AKA live view finder.
@interface OpenLensInputSelectionCommand : NSObject

// Initializes to open the Lens input election UI with `entryPoint`.
- (instancetype)initWithEntryPoint:(LensEntrypoint)entryPoint
                 presentationStyle:
                     (LensInputSelectionPresentationStyle)presentationStyle
            presentationCompletion:(ProceduralBlock)presentationCompletion
    NS_DESIGNATED_INITIALIZER;

- (instancetype)init NS_UNAVAILABLE;

// The entry point to pass to Lens.
@property(nonatomic, assign, readonly) LensEntrypoint entryPoint;

// The presentation style.
@property(nonatomic, assign, readonly)
    LensInputSelectionPresentationStyle presentationStyle;

// The completion block to be run on the main thread.
@property(nonatomic, strong, readonly) ProceduralBlock presentationCompletion;

@end

#endif  // IOS_CHROME_BROWSER_SHARED_PUBLIC_COMMANDS_OPEN_LENS_INPUT_SELECTION_COMMAND_H_