export enum PaymentTabKeys {
  Info = 'Info',
  NotificationData = 'NotificationData',
};
export enum PaymentInfoItemType {
  Comission = 'Comission',
  NoInterest = 'NoInterest'
};
export interface PaymentTabProps {
  activeTab: PaymentTabKeys;
};
export enum NotifyRowKeys {
  CreditCard = 'CreditCard',
  AccountTransfer = 'AccountTransfer',
  VirtualAccount = 'VirtualAccount',
  MobilePayment = 'MobilePayment',
  EscrowPayment = 'EscrowPayment',
};

export interface PaymentNotificationDataParams {
  mid: string;
};
export interface PaymentNotificationDataResponse {
  merchantInfo: MerchantInfo;
  creditCard: CreditCard;
  accountTransfer: AccountTransfer;
  virtualAccount: VirtualAccount;
  mobilePayment: MobilePayment;
  escrowPayment: EscrowPayment
};
export interface MerchantInfo {
  paymentInfoType: string;
  mid: string;
};
export interface PaymentNotificationDataCommonType {
  id: number;
  paymentMethodName: string;
  startDate: string;
  adminEmail: string;
  urlIp: string;
  retransmissionInterval: string;
  retransmissionCount: string;
  okCheck: string;
  encryptionStatus: string;
  expandable: boolean;
  detail: Record<string, any>;
};

export interface CreditCard extends PaymentNotificationDataCommonType {};
export interface AccountTransfer extends PaymentNotificationDataCommonType {};
export interface VirtualAccount extends PaymentNotificationDataCommonType {};
export interface MobilePayment extends PaymentNotificationDataCommonType {};
export interface EscrowPayment extends PaymentNotificationDataCommonType {};

export interface PaymentNonCardParams {
  mid: string;
  paymentMethod: string;
};
export interface PaymentNonCardResponse {
  settlementPeriod: string;
  accountTransferData: AccountTransferData;
  mobilePaymentData: MobilePaymentData;
  otherPaymentData: OtherPaymentData;
};
export interface AccountTransferData {
  feeRanges: Array<FeeRanges>;
  bankFees: Array<BankFees>;
};
export interface FeeRanges {
  id: number;
  feeRange: string;
  feeAmount: string;
};
export interface BankFees {
  id: number;
  bankName: string;
  feeAmount: string;
};
export interface MobilePaymentData {
  paymentFees: Array<PaymentFees>;
  categoryFees: Array<CategoryFees>;
};
export interface PaymentFees {
  id: number;
  category: string;
  feeRate: number;
  feeAmount: string;
};
export interface CategoryFees {
  id: number;
  category: string;
  feeRate: number;
};

export interface OtherPaymentData {
  feeRate: number;
};
export interface PaymentInstallmentParams {
  mid: string;
  paymentMethod: string;
};
export interface PaymentInstallmentResponse {
  installmentData: Array<InstallmentData>;
};
export interface InstallmentData {
  id: number;
  category: string;
  detailLink: string;
};
export interface InstallmentDetails {
  id: number;
  installmentMonths: string;
  applicationPeriod: string;
  applicationAmount: number;
};
export interface PaymentInstallmentDetailParams {
  mid: string;
  cardCompany: string;
};
export interface PaymentInstallmentDetailResponse {
  cardCompany: string;
  cardCompanyOptions: Array<string>;
  installmentDetails: Array<InstallmentDetails>;
};
export interface PaymentCardParams {
  mid: string;
  paymentMethod: string;
};
export interface PaymentCardResponse {
  settlementPeriod: string;
  generalTab: GeneralTab;
  installmentTab: InstallmentTab;
  moneyPointTab: MoneyPointTab;
};
export interface GeneralTab {
  items: Array<GeneralTabItems>;
};
export interface GeneralTabItems {
  id: number;
  cardCompany: string;
  feeRate: number;
};
export interface InstallmentTab {
  items: Array<InstallmentTabItems>;
};
export interface InstallmentTabItems {
  id: number;
  installmentMonth: string;
  cardCompany: string;
  feeRate: number;
};
export interface MoneyPointTab {
  items: Array<MoneyPointTabItems>;
};
export interface MoneyPointTabItems {
  id: number;
  category: string;
  feeRate: number;
};
