import type { NativeStackScreenProps } from "@react-navigation/native-stack";
import type { PaymentType, WaveTransactionInitilizationResponse } from "@/features/pay/types";

export type IpaymentStackNavigator = {
	homePageWithPaymentOptions: undefined;
	numberAndOtpForPaymentScreen: {
		paymentType: PaymentType;
		amount: number;
	};
	paymentAmountInputScreen: {
		paymentType: PaymentType;
	};
};

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: WaveTransactionInitilizationResponse;
	};
};

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

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