import { FetchStateAndError, FetchedState, ID } from '../../commonStateTypes/common'; import { SortOrder } from '../../commonStateTypes/selectorTypes/sortOrderTypes'; import { ZeniDate } from '../../zeniDayJS'; import { CockpitFilters } from '../companyView/types/cockpitTypes'; import { SubscriptionEstimateWithSchema } from './types/subscriptionEstmiate'; import { SubscriptionViewSortKey } from './types/subscriptionTypes'; export interface SubscriptionViewState { addOnListState: { addOnIds: ID[]; fetchStatus: FetchStateAndError; }; couponListState: { couponIds: ID[]; fetchStatus: FetchStateAndError; }; planListState: { fetchStatus: FetchStateAndError; planIds: ID[]; }; subscriptionDetailsByCompanyId: Record; subscriptionListView: SubscriptionListViewState; subscriptionUpdateViewDataByTenantId: Record; } interface SubscriptionListViewState extends FetchedState { companyIds: ID[]; uiState: SubscriptionListUIState; } export interface SubscriptionListUIState { filters: CockpitFilters; filterText: string; isCollapsedByCompanyId: Record; sortKey: SubscriptionViewSortKey; sortOrder: SortOrder; scrollYOffset?: number; } export interface SubscriptionDetailsState { fetchStatus: FetchStateAndError; subscriptionIds: ID[]; } export type SubscriptionActionType = 'subscription_create' | 'subscription_update'; interface SubscriptionUpdateViewData { estimateStatus: FetchStateAndError; type: SubscriptionActionType; updateStatus: FetchStateAndError; data?: SubscriptionCreateData | SubscriptionUpdateData; } export interface SubscriptionCreateData { invoiceImmediately: boolean; subscriptionAddOnIds: ID[]; subscriptionCouponIds: ID[]; subscriptionPlanId: ID; startDate?: ZeniDate; subscriptionEstmiate?: SubscriptionEstimateWithSchema; } export interface SubscriptionUpdateData { applyEndOfTerm: boolean; invoiceImmediately: boolean; shouldProrate: boolean; subscriptionAddOnIds: ID[]; subscriptionCouponIds: ID[]; subscriptionId: ID; subscriptionPlanId: ID; subscriptionEstmiate?: SubscriptionEstimateWithSchema; } export {};