export const PAYMENT_TYPES = [
	"manual",
	"acss_debit",
	"affirm",
	"afterpay_clearpay",
	"alipay",
	"alma",
	"amazon_pay",
	"au_becs_debit",
	"bacs_debit",
	"bancontact",
	"billie",
	"blik",
	"boleto",
	"card",
	"card_present",
	"cashapp",
	"customer_balance",
	"eps",
	"fpx",
	"giropay",
	"grabpay",
	"ideal",
	"interac_present",
	"kakao_pay",
	"klarna",
	"konbini",
	"kr_card",
	"link",
	"mobilepay",
	"multibanco",
	"naver_pay",
	"nz_bank_account",
	"oxxo",
	"p24",
	"pay_by_bank",
	"payco",
	"paynow",
	"paypal",
	"pix",
	"promptpay",
	"revolut_pay",
	"samsung_pay",
	"satispay",
	"sepa_debit",
	"sofort",
	"swish",
	"twint",
	"us_bank_account",
	"wechat_pay",
	"zip",
] as const;

export type PaymentType = (typeof PAYMENT_TYPES)[number];

export const PaymentMethodToString = (type: PaymentType) => {
	switch (type) {
		case "manual":
			return "Pagamento in sede";
		case "card":
			return "Carta di credito";
		case "sepa_debit":
			return "Addebito diretto SEPA";
		case "bancontact":
			return "Bancontact";
		case "giropay":
			return "Giropay";
		case "ideal":
			return "iDEAL";
		case "sofort":
			return "Sofort";
		case "eps":
			return "EPS";
		case "p24":
			return "Przelewy24 (P24)";
		case "link":
			return "Link";
		case "acss_debit":
			return "ACSS Debit";
		case "affirm":
			return "Affirm";
		case "afterpay_clearpay":
			return "Afterpay/Clearpay";
		case "alipay":
			return "Alipay";
		case "alma":
			return "Alma";
		case "amazon_pay":
			return "Amazon Pay";
		case "au_becs_debit":
			return "AU BECS Debit";
		case "bacs_debit":
			return "BACS Debit";
		case "billie":
			return "Billie";
		case "blik":
			return "Blik";
		case "boleto":
			return "Boleto";
		case "card_present":
			return "Card Present";
		case "cashapp":
			return "Cash App";
		case "customer_balance":
			return "Customer Balance";
		case "fpx":
			return "FPX";
		case "grabpay":
			return "GrabPay";
		case "interac_present":
			return "Interac Present";
		case "kakao_pay":
			return "Kakao Pay";
		case "klarna":
			return "Klarna";
		case "konbini":
			return "Konbini";
		case "kr_card":
			return "KR Card";
		case "mobilepay":
			return "MobilePay";
		case "multibanco":
			return "Multibanco";
		case "naver_pay":
			return "Naver Pay";
		case "nz_bank_account":
			return "NZ Bank Account";
		case "oxxo":
			return "OXXO";
		case "pay_by_bank":
			return "Pay by Bank";
		case "payco":
			return "Payco";
		case "paynow":
			return "PayNow";
		case "paypal":
			return "PayPal";
		case "pix":
			return "Pix";
		case "promptpay":
			return "PromptPay";
		case "revolut_pay":
			return "Revolut Pay";
		case "samsung_pay":
			return "Samsung Pay";
		case "satispay":
			return "Satispay";
		case "swish":
			return "Swish";
		case "twint":
			return "Twint";
		case "us_bank_account":
			return "US Bank Account";
		case "wechat_pay":
			return "WeChat Pay";
		case "zip":
			return "Zip";
		default:
			throw new Error(`Invalid payment type: ${type satisfies never}`);
	}
};
