import { Amount } from '../../../../commonStateTypes/amount'; import { FetchStateAndError, FetchedState, ID } from '../../../../commonStateTypes/common'; import { ChargeCardType, CreditCardCodeType, CreditLimitFrequencyCodeType, DebitCardCodeType, ShippingAddressType } from '../../../../entity/chargeCard/chargeCard'; import { AiCardCreationFormDraftSeedContext, CardsFormDraft } from './aiCardCreationFormDraftTypes'; export interface IssueChargeCardState extends FetchedState { activeChargeCardCount: Record; activeDebitCardCountByDepositAccountId: Record; depositAccountIds: ID[]; depositAccountsFetchState: FetchStateAndError; lastIssuedCardIds: ID[]; localData: IssueChargeCardLocalData[]; saveStatus: FetchStateAndError; aiCardCreationFormDraft?: CardsFormDraft; aiCardCreationFormDraftContext?: AiCardCreationFormDraftSeedContext; lastIssueSourceChatSessionId?: ID; lastSelfIssuedDebitCardId?: ID; } export interface ActiveChargeCardCount { physicalCardCount: number; virtualCardCount: number; } export interface ActiveDebitCardCountByUserId { [userId: ID]: ActiveDebitCardCount; } export interface ActiveDebitCardCount { physicalCardCount: number; virtualCardCount: number; } export interface PhysicalCreditCardData { cardName: string; frequency: CreditLimitFrequencyCodeType; addressId?: ID; addressType?: ShippingAddressType; amount?: Amount; userId?: ID; } export interface VirtualCreditCardData { cardName: string; frequency: CreditLimitFrequencyCodeType; userIds: ID[]; amount?: Amount; } export interface PhysicalDebitCardData { cardName: string; frequency: CreditLimitFrequencyCodeType; addressId?: ID; addressType?: ShippingAddressType; amount?: Amount; connectedAccountId?: ID; userId?: ID; } export interface VirtualDebitCardData { cardName: string; frequency: CreditLimitFrequencyCodeType; userIds: ID[]; amount?: Amount; connectedAccountId?: ID; } export interface IssueChargeCardLocalData { chargeCardType: ChargeCardType; creditCard: { cardType: CreditCardCodeType; physicalCard: PhysicalCreditCardData; virtualCard: VirtualCreditCardData; }; debitCard: { cardType: DebitCardCodeType; physicalCard: PhysicalDebitCardData; virtualCard: VirtualDebitCardData; }; lineId: ID; }