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