/*
 * File: navigationTypes.ts
 * Description: TypeScript types for Auth module navigation
 * Design & Developed by Tech4Biz Solutions
 * Copyright (c) Spurrin Innovations. All rights reserved.
 */

import { StackNavigationProp } from '@react-navigation/stack';

/**
 * AuthStackParamList - Defines the parameter list for Auth stack navigator
 * 
 * This interface defines all the screens available in the Auth module
 * and their associated navigation parameters.
 */
export type AuthStackParamList = {
  // Login screen - Main authentication entry point
  Login: undefined;
  
  // Sign Up screen - Multi-step registration process
  SignUp: undefined;
};

/**
 * AuthNavigationProp - Type for navigation prop in Auth screens
 * 
 * This type provides type-safe navigation methods for screens
 * within the Auth module.
 */
export type AuthNavigationProp = StackNavigationProp<AuthStackParamList>;

/**
 * AuthScreenProps - Base props interface for Auth screens
 * 
 * This interface provides the common props that all Auth screens
 * will receive, including navigation and route.
 */
export interface AuthScreenProps<T extends keyof AuthStackParamList> {
  navigation: AuthNavigationProp;
  route: {
    key: string;
    name: T;
    params: AuthStackParamList[T];
  };
}

/**
 * LoginScreenProps - Props for LoginScreen component
 */
export type LoginScreenProps = AuthScreenProps<'Login'>;

/**
 * SignUpScreenProps - Props for SignUpScreen component
 */
export type SignUpScreenProps = AuthScreenProps<'SignUp'>;



/*
 * End of File: navigationTypes.ts
 * Design & Developed by Tech4Biz Solutions
 * Copyright (c) Spurrin Innovations. All rights reserved.
 */ 