import React from 'react';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { AppStackParamList } from '@navigation/navigationTypes';
import BottomTabNavigator from './bottomTabNavigator';
import NewJobRequestScreen from '@features/screens/newJobRequestScreen/newJobRequestScreen';
import OrderAcceptedScreen from '@features/screens/orderAcceptedScreen/orderAcceptedScreen';
import ArrivedAtStoreScreen from '@features/screens/arrivedAtStoreScreen/arrivedAtStoreScreen';
import ConfirmPickupScreen from '@features/screens/confirmPickupScreen/confirmPickupScreen';
import OrderPickedUpScreen from '@features/screens/orderPickedUpScreen/orderPickedUpScreen';
import LiveTrackingScreen from '@features/screens/liveTrackingScreen/liveTrackingScreen';
import ArrivedAtCustomerScreen from '@features/screens/arrivedAtCustomerScreen/arrivedAtCustomerScreen';
import DeliverOrderScreen from '@features/screens/deliverOrderScreen/deliverOrderScreen';
import DeliveryCompletedScreen from '@features/screens/deliveryCompletedScreen/deliveryCompletedScreen';
import DocumentsScreen from '@features/screens/documentsScreen/documentsScreen';
import { RouteNames } from '@utils/constants';

const Stack = createNativeStackNavigator<AppStackParamList>();

const AppStack: React.FC = () => {
  return (
  <Stack.Navigator screenOptions={{ headerShown: false }}>
    <Stack.Screen name={RouteNames.BottomTabs} component={BottomTabNavigator} />
    <Stack.Screen name={RouteNames.NewJobRequest} component={NewJobRequestScreen} />
    <Stack.Screen name={RouteNames.OrderAccepted} component={OrderAcceptedScreen} />
    <Stack.Screen name={RouteNames.ArrivedAtStore} component={ArrivedAtStoreScreen} />
    <Stack.Screen name={RouteNames.ConfirmPickup} component={ConfirmPickupScreen} />
    <Stack.Screen name={RouteNames.OrderPickedUp} component={OrderPickedUpScreen} />
    <Stack.Screen name={RouteNames.LiveTracking} component={LiveTrackingScreen} />
    <Stack.Screen name={RouteNames.ArrivedAtCustomer} component={ArrivedAtCustomerScreen} />
    <Stack.Screen name={RouteNames.DeliverOrder} component={DeliverOrderScreen} />
    <Stack.Screen name={RouteNames.DeliveryCompleted} component={DeliveryCompletedScreen} />
    <Stack.Screen name={RouteNames.Documents} component={DocumentsScreen} />
  </Stack.Navigator>
  );
};

export default AppStack;
