import { DefaulResponsePagination, DefaultRequestPagination } from '@/entities/common/model/types';

export enum AlimtalkSettingFlagKeys {
  cardApprovalFlag = 'cardApprovalFlag',
  cardCancelFlag = 'cardCancelFlag',
  bankApprovalFlag = 'bankApprovalFlag',
  bankCancelFlag = 'bankCancelFlag',
  virtureAccountDepositRequestFlag = 'virtureAccountDepositRequestFlag',
  virtureAccountDepositCompleteFlag = 'virtureAccountDepositCompleteFlag',
  virtureAccountRefundFlag = 'virtureAccountRefundFlag'
};
export enum AlimtalkSearchCl {
  BUYER_NAME = 'BUYER_NAME',
  TID = 'TID'
};
export enum AlimtalkAlimCl {
  DEPOSIT_REQUEST = 'DEPOSIT_REQUEST',
  DEPOSIT_COMPLETE = 'DEPOSIT_COMPLETE',
  REFUND = 'REFUND',
  APPROVAL = 'APPROVAL',
  CANCEL = 'CANCEL'
};
export enum AlimtalkSendType {
  ALL = '',
  KAKAOTALK = 'KAKAOTALK',
  FB_SMS = 'FB_SMS'
};
export enum AlimTalkSendCl {
  ALL = '',
  REQUEST = 'REQUEST',
  SUCCESS = 'SUCCESS',
  FAIL = 'FAIL'
};

export enum ServiceCode {
  ALL = '',
  CARD = 'CARD',
  BANK = 'BANK',
  VBANK = 'VBANK',
  PHONE = 'PHONE'
}

export interface ExtensionAlimtalkSettingSaveParams {
  mid: string;
  sendMerchantInfo?: SendMerchantInfo;
  sendUserInfo?: SendUserInfo;
};

export interface ExtensionAlimtalkSettingSaveResponse {};

export interface ExtensionAlimtalkSettingDetailParams {
  mid: string;
};

export interface ExtensionAlimtalkSettingDetailResponse {
  sendMerchantInfo: SendMerchantInfo,
  sendUserInfo: SendUserInfo
};
export interface AlimtalkSettingDetailContent {
  sendMerchantInfo: SendMerchantInfo,
  sendUserInfo: SendUserInfo
};
export interface SendMerchantInfo {
  cardApprovalFlag: boolean;
  cardCancelFlag: boolean;
  bankApprovalFlag: boolean;
  bankCancelFlag: boolean;
  virtureAccountDepositRequestFlag: boolean;
  virtureAccountDepositCompleteFlag: boolean;
  virtureAccountRefundFlag: boolean;
};
export interface SendUserInfo {
  cardApprovalFlag: boolean;
  cardCancelFlag: boolean;
  bankApprovalFlag: boolean;
  bankCancelFlag: boolean;
  virtureAccountDepositRequestFlag: boolean;
  virtureAccountDepositCompleteFlag: boolean;
  virtureAccountRefundFlag: boolean;
};

export interface ExtensionAlimtalkListParams {
  mid?: string;
  searchCl?: AlimtalkSearchCl;
  searchValue?: string;
  serviceCode?: string;
  alimCl?: AlimtalkAlimCl;
  fromDate?: string;
  toDate?: string;
  sendType?: AlimtalkSendType;
  sendCl?: AlimTalkSendCl;
  page?: DefaultRequestPagination;
};
export interface ExtensionAlimtalkListResponse extends DefaulResponsePagination {
  content: Array<AlimtalkListContent>
};
export interface AlimtalkListContent {
  tid?: string;
  sendDate?: string;
  alimCl?: AlimtalkAlimCl;
  sendType?: AlimtalkSendType;
  sendCl?: AlimTalkSendCl;
  serviceCode?: string;
  receiverName?: string;
};
export interface ExtensionAlimtalkDownloadExcelParams {
  mid?: string;
  searchCl?: AlimtalkSearchCl;
  searchValue?: string;
  serviceCode?: string;
  alimCl?: AlimtalkAlimCl;
  fromDate?: string;
  toDate?: string;
  sendType?: AlimtalkSendType;
  sendCl?: AlimTalkSendCl;
};

export interface ExtensionAlimtalkDownloadExcelResponse {
  status : boolean
};

export interface ExtensionAlimtalkDetailParams {
  mid: string;
  tid: string;
};

export interface ExtensionAlimtalkDetailResponse {
  receiverName: string;
  companyName: string;
  sendDate: string;
  mid: string;
  tid: string;
  extensionServiceName: string;
  sendType: AlimtalkSendType;
  senderName: string;
  serviceCode: string;
  alimCl: AlimtalkAlimCl;
  sendCl: AlimTalkSendCl;
};
