import { NavigatorScreenParams } from '@react-navigation/native';
import React from 'react';
import { GlazeLayer, UserListType, StepType } from '../types';

export type RootStackParamList = {
  Login: undefined;
  SignUp: undefined;
  Onboarding: undefined;
  MainTabs: NavigatorScreenParams<MainTabParamList>;
  ProjectDetail: { projectId: string };
  StepEditor: {
    projectId: string;
    stepId?: string;
    selectedGlazeIds?: string[]; // DEPRECATED - keep for backwards compat
    newGlazeLayers?: GlazeLayer[]; // NEW
    mixNotes?: string;
    initialStepType?: StepType; // NEW
    _timestamp?: number;
    _editorKey?: string
  };
  GlazePicker: {
    projectId: string;
    stepId?: string;
    selectedGlazeIds?: string[];
    mode?: 'add_layer' | 'replace';
    onGlazesSelected?: React.MutableRefObject<((layers: GlazeLayer[]) => void) | null>;
    _editorKey?: string
  };
  GlazeDetail: { glazeId: string };
  AddCustomGlaze: { onGlazeCreated?: (glazeId: string) => void };
  UserList: { type: UserListType }; // NEW
};

export type MainTabParamList = {
  Home: undefined;
  Projects: undefined;
  News: undefined;
  Settings: undefined;
};

declare global {
  namespace ReactNavigation {
    interface RootParamList extends RootStackParamList { }
  }
}
