import UIKit import AsyncDisplayKit import SwiftSignalKit public protocol PresentableController: AnyObject { func viewDidAppear(completion: @escaping () -> Void) } public protocol ContainableController: AnyObject { var view: UIView! { get } var displayNode: ASDisplayNode { get } var isViewLoaded: Bool { get } var isOpaqueWhenInOverlay: Bool { get } var blocksBackgroundWhenInOverlay: Bool { get } var ready: Promise { get } var updateTransitionWhenPresentedAsModal: ((CGFloat, ContainedViewLayoutTransition) -> Void)? { get set } func combinedSupportedOrientations(currentOrientationToLock: UIInterfaceOrientationMask) -> ViewControllerSupportedOrientations var deferScreenEdgeGestures: UIRectEdge { get } var prefersOnScreenNavigationHidden: Bool { get } func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) func updateToInterfaceOrientation(_ orientation: UIInterfaceOrientation) func updateModalTransition(_ value: CGFloat, transition: ContainedViewLayoutTransition) func preferredContentSizeForLayout(_ layout: ContainerViewLayout) -> CGSize? func viewWillAppear(_ animated: Bool) func viewWillDisappear(_ animated: Bool) func viewDidAppear(_ animated: Bool) func viewDidDisappear(_ animated: Bool) }