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

export enum FundAccountTabKeys {
  TransferList = 'TransferList',
  ResultList = 'ResultList'
};
export enum FundAccountResultType {
  RequestDate = 'RequestDate',
  ProcessDate = 'ProcessDate',
};
export interface FundAccountTabProps {
  activeTab: FundAccountTabKeys;
};

export enum FundAccountReceiveAccountNameNo {
  ReceiveAccountNo = 'ReceiveAccountNo',
  ReceiveAccountName = 'ReceiveAccountName'
};


export interface ExtensionFundAccountTransferRequestParams {
  mid?: string;
  transferAmount?: number;
  receiveBankCode?: string;
  receiveAccountNo?: string;
  receiveAccountName?: string;
  transferMemo?: string;
};
export interface ExtensionFundAccountTransferRequestResponse {
  tid: string;
  result: string;
  message: string;
};
export enum FundAccountStatus {
  ALL = 'ALL',
  SUCCESS = 'SUCCESS',
  FAIL = 'FAIL',
  PENDING = 'PENDING'
};
export interface ExtensionFundAccountTransferListParams {
  mid: string;
  fromDate: string;
  toDate: string;
  status: FundAccountStatus;
  pagination: DefaultRequestPagination;
}
export interface ExtensionFundAccountTransferListResponse extends DefaulResponsePagination {
  content: Array<FundAccountTransferContent>;
};
export interface FundAccountTransferContent {
  pagination: string;
  items: Array<FundAccountTransferContentItem>;
};
export interface FundAccountTransferContentItem {
  tid?: string;
  requestDate?: string;
  transferAmount?: number;
  receiveBankName?: string;
  receiveAccountNo?: string;
  receiveAccountName?: string;
  status?: FundAccountStatus;
  processDate?: string;
};
export interface ExtensionFundAccountTransferExcelParams {
  mid: string;
  fromDate: string;
  toDate: string;
  status: FundAccountStatus;
};
export interface ExtensionFundAccountTransferExcelResponse {};
export interface ExtensionFundAccountTransferDetailParams {
  mid: string;
  tid: string;
};
export interface ExtensionFundAccountTransferDetailResponse {
  tid: string;
  requestDate: string;
  transferAmount: number;
  receiveBankName: string;
  receiveAccountNo: string;
  receiveAccountName: string;
  status: FundAccountStatus;
  processDate: string;
  failReason: string;
  fee: number;
  afterBalance: number;
};
export interface ExtensionFundAccountResultSummaryParams {
  mid: string;
  fromDate: string;
  toDate: string;
};
export interface ExtensionFundAccountResultSummaryResponse {
  totalCount: number;
  totalAmount: number;
  successCount: number;
  successAmount: number;
  failCount: number;
  failAmount: number;
  pendingCount: number;
  pendingAmount: number;
};
export interface ExtensionFundAccountResultListParams {
  mid?: string;
  fromDate?: string;
  toDate?: string;
  status?: FundAccountStatus;
  pagination?: DefaultRequestPagination;
};
export interface ExtensionFundAccountResultListResponse extends DefaulResponsePagination {
  content: Array<FundAccountResultContent>;
};
export interface FundAccountResultContent {
  pagination: string;
  items: Array<FundAccountResultContentItem>;
};
export interface FundAccountResultContentItem {
  tid?: string;
  requestDate?: string;
  transferAmount?: number;
  receiveBankName?: string;
  receiveAccountNo?: string;
  receiveAccountName?: string;
  status?: FundAccountStatus;
  processDate?: string;
  failReason?: string;
};
export interface ExtensionFundAccountResultExcelParams {
  mid: string;
  fromDate: string;
  toDate: string;
  status: FundAccountStatus;
};
export interface ExtensionFundAccountResultExcelResponse {};
export interface ExtensionFundAccountResultDetailParams {
  mid: string;
  tid: string;
};
export interface ExtensionFundAccountResultDetailResponse {
  tid: string;
  requestDate: string;
  transferAmount: number;
  receiveBankName: string;
  receiveAccountNo: string;
  receiveAccountName: string;
  status: FundAccountStatus;
  processDate: string;
  failReason: string;
  fee: number;
  afterBalance: number;
  transferMemo: string;
  bankTid: string;
};
export interface ExtensionFundAccountBalanceParams {
  mid: string;
};
export interface ExtensionFundAccountBalanceResponse {
  balance: number;
};