1 // Copyright 2015-present 650 Industries. All rights reserved.
2 
3 @objc
4 public protocol DevMenuManagerProtocol {
5   /**
6    Whether the dev menu window is visible on the device screen.
7    */
8   @objc
9   var isVisible: Bool { get }
10 
11   @objc
12   var delegate: DevMenuDelegateProtocol? { get set }
13 
14   /**
15    Opens up the dev menu.
16    */
17   @objc
18   @discardableResult
19   func openMenu(_ screen: String?) -> Bool
20 
21   @objc
22   @discardableResult
23   func openMenu() -> Bool
24 
25   /**
26    Sends an event to JS to start collapsing the dev menu bottom sheet.
27    */
28   @objc
29   @discardableResult
30   func closeMenu() -> Bool
31 
32   /**
33    Forces the dev menu to hide. Called by JS once collapsing the bottom sheet finishes.
34    */
35   @objc
36   @discardableResult
37   func hideMenu() -> Bool
38 
39   /**
40    Toggles the visibility of the dev menu.
41    */
42   @objc
43   @discardableResult
44   func toggleMenu() -> Bool
45 
46   @objc
47   var expoApiClient: DevMenuExpoApiClientProtocol { get }
48 }
49