import type { PaymentCode } from "@/utils/requests/types";
import type { IwaveStarterRespone } from "@/utils/requests/wavePayment";
import type { NativeStackScreenProps } from "@react-navigation/native-stack";

export type IpaymentStackNavigator = {
	homePageWithPaymentOptions: undefined;
	numberAndOtpForPaymentScreen: undefined;
	paymentAmountInputScreen: {
		paymentType: PaymentCode;
	};
};

export type PaymentStackScreenProps<T extends keyof IpaymentStackNavigator> =
	NativeStackScreenProps<IpaymentStackNavigator, T, "IpaymentStackNavigator">;

export type PaymentStackScreenComponentProps<T extends keyof IpaymentStackNavigator> = React.FC<
	PaymentStackScreenProps<T>
>;

export type ImainStackNavigator = {
	homeUserNotLoggedIn: undefined;
	userLoginScreen: undefined;
	appBottomTabsNavigator: undefined;
	paymentResultScreen: undefined;
	waveQrCodePaymentScreen: {
		data: IwaveStarterRespone;
	};
};

export type MainStackScreenProps<T extends keyof ImainStackNavigator> = NativeStackScreenProps<
	ImainStackNavigator,
	T,
	"ImainStackNavigator"
>;

export type MainStackScreenComponentProps<T extends keyof ImainStackNavigator> = React.FC<
	MainStackScreenProps<T>
>;
