import { NativeModules } from 'react-native'; import type { RNINavigatorRouteViewProps } from '../native_components/RNINavigatorRouteView'; import type { EdgeInsets, Rect } from '../types/MiscTypes'; export type NativePushPopOptions = { isAnimated?: boolean; }; export type NativeRouteData = { type: 'viewController' } | ({ type: 'reactRoute' | 'nativeRoute' } & Pick); export type NativeActiveRoutes = Pick & { type: 'reactRoute' | 'nativeRoute' }; export type NavigatorConstantsObject = { navigatorID: number; navBarHeight: number; statusBarHeight: number; safeAreaInsets: EdgeInsets; bounds: Rect; isPresentingModal: boolean; activeRoutes: Array; topViewController ?: NativeRouteData; visibleViewController?: NativeRouteData; }; interface RNINavigatorViewModule { // Module Commands: Navigator // -------------------------- push( node: number, routeID: number, options: Readonly ): Promise; pop( node: number, options: Readonly ): Promise<{routeKey: string, routeIndex: number}>; setNavigationBarHidden( node: number, isHidden: boolean, animated: boolean ): Promise; popToRoot( node: number, options: Readonly ): Promise; removeRoute( node: number, routeID: number, routeIndex: number, animated: boolean, ): Promise; removeRoutes( node: number, itemsToRemove: readonly Readonly<{ routeID: number; routeIndex: number; }>[], animated: boolean, ): Promise; replaceRoute( node: number, prevRouteIndex: number, prevRouteID: number, nextRouteID: number, animated: boolean, ): Promise; insertRoute( node: number, nextRouteID: number, atIndex: number, animated: boolean, ): Promise; setRoutes( node: number, nextRouteIDs: readonly number[], animated: boolean, ): Promise; // Module Commands: Misc // --------------------- getNativeRouteKeys(callback: (keys: [string]) => void): void; sendCustomCommandToNative( node: number, commandKey: string, commandData: Readonly | null ): Promise; getNavigatorConstants(node: number): Promise; getNavigatorActiveRoutes(node: number): Promise; dismissModal( node: number, animated: boolean ): Promise; }; const MODULE_NAME = "RNINavigatorViewModule"; export const RNINavigatorViewModule: RNINavigatorViewModule = NativeModules[MODULE_NAME];