import { NativeStackNavigationOptions } from '@react-navigation/native-stack'; import { BackBehavior } from '@react-navigation/routers/src/TabRouter'; import { StackNavigationOptions } from '@react-navigation/stack'; import React from 'react'; import { StyleProp, ViewStyle } from 'react-native'; import { TabOptions } from './view/TabBarItem'; interface WindowConfig { pageOrientation?: 'auto' | 'portrait' | 'landscape'; pullRefresh?: 'YES' | 'NO' | boolean; allowsBounceVertical?: 'YES' | 'NO'; navigationBarBackgroundColor?: string; navigationBarTextStyle?: 'white' | 'black'; navigationStyle?: 'default' | 'custom'; navigationBarTitleText?: string; backgroundTextStyle?: 'dark' | 'light'; enablePullDownRefresh?: boolean; onReachBottomDistance?: number; } interface ITabBarItem { pagePath: string; text: string; iconPath?: string; selectedIconPath?: string; } interface ITabBar { color?: string; selectedColor?: string; backgroundColor?: string; borderStyle?: 'black' | 'white'; list: ITabBarItem[]; position?: 'bottom' | 'top'; custom?: boolean; } interface PageItem { name: string; component: any; pagePath: string; } interface RNConfig { initialRouteName?: string; linking?: string[]; screenOptions?: StackNavigationOptions | NativeStackNavigationOptions; tabOptions?: TabOptions; tabBarOptions?: Record; tabProps?: { backBehavior?: BackBehavior; lazy?: boolean; detachInactiveScreens?: boolean; sceneContainerStyle?: StyleProp; }; stackProps?: { keyboardHandlingEnabled?: boolean; headerMode?: 'float' | 'screen'; detachInactiveScreens?: boolean; }; useNativeStack?: boolean; } export interface RouterConfig { pages: PageItem[]; tabBar?: ITabBar; window?: WindowConfig; linkPrefix?: string[]; rnConfig?: RNConfig; initParams?: Record; initPath?: string; entryPagePath?: string; } export interface RouterOption { onReady?: (options: any) => void; onUnhandledAction?: (options: any) => void; } export declare function createRouter(config: RouterConfig, options: RouterOption): React.JSX.Element | null; export declare function getInitOptions(config: any): { path: any; query: any; }; export {};