import { Amount } from '../../commonStateTypes/amount'; import { FetchState, FetchStateAndError } from '../../commonStateTypes/common'; import { SelectorView } from '../../commonStateTypes/viewAndReport/viewAndReport'; import { SubscriptionWithSchema } from '../../entity/subscription/subscription/subscriptionSelector'; import { SubscriptionAddOnWithSchema } from '../../entity/subscription/subscriptionAddOn/subscriptionAddOnSelector'; import { SubscriptionAddOn } from '../../entity/subscription/subscriptionAddOn/subscriptionAddOnState'; import { SubscriptionCouponWithSchema } from '../../entity/subscription/subscriptionCoupon/subscriptionCouponSelector'; import { SubscriptionPlanWithSchema } from '../../entity/subscription/subscriptionPlan/subscriptionPlanSelector'; import { SubscriptionPlan } from '../../entity/subscription/subscriptionPlan/subscriptionPlanState'; import { SubscriptionSummaryWithSchema } from '../../entity/subscription/subscriptionSummary/subscriptionSummarySelector'; import { User } from '../../entity/user/userState'; import { ZeniAPIStatus } from '../../responsePayload'; import { CompanyView } from '../companyView/types/companyView'; import { SubscriptionCreateData, SubscriptionListUIState, SubscriptionUpdateData } from './subscriptionViewState'; import { SubscriptionActionType } from './subscriptionViewState'; import { SubscriptionEstimateWithSchema } from './types/subscriptionEstmiate'; export interface SubscriptionDetails { addOns: SubscriptionAddOnWithSchema[]; coupons: SubscriptionCouponWithSchema[]; subscription: SubscriptionWithSchema; plan?: SubscriptionPlanWithSchema; summary?: SubscriptionSummaryWithSchema; } export interface SubscriptionListView extends SelectorView { companies: CompanyView[]; subscriptionAddOns: SubscriptionAddOn[]; subscriptionPlans: SubscriptionPlan[]; totalMonthlyRecurringRevenue: Amount; uiState: SubscriptionListUIState; zeniUsers: { fetchState: FetchState; values: User[]; error?: ZeniAPIStatus; }; } export interface SubscriptionEstimationData extends SelectorView { updateStatus: FetchStateAndError; estimateDetails?: SubscriptionEstimateWithSchema; type?: SubscriptionActionType; } export interface SubscriptionLocalStoreDataView extends SelectorView { estimateStatus: FetchStateAndError; subscriptionMetaDetails: { addOns: SubscriptionAddOnWithSchema[]; coupons: SubscriptionCouponWithSchema[]; plans: SubscriptionPlanWithSchema[]; }; type: SubscriptionActionType; data?: SubscriptionCreateData | SubscriptionUpdateData; subscriptionDetail?: SubscriptionDetails; } export interface SubscriptionsDetailView extends SelectorView { updateStatus: FetchStateAndError; subscriptionDetails?: SubscriptionDetails[]; type?: SubscriptionActionType; }