import type { PayChannel } from "@/data/dto/payment"; import type { PaymentAnalyticsContext } from "@/lib/analytics/payment_analytics_context"; import type { PendingChatUnlockKind, PendingChatPromotion, PendingChatUnlockStage, } from "@/data/storage/navigation"; export type AppSubscriptionType = "vip" | "topup"; export type AppSubscriptionReturnTo = "chat" | "private-room" | null; export interface OpenSubscriptionInput { type: AppSubscriptionType; payChannel?: PayChannel; returnTo?: AppSubscriptionReturnTo; replace?: boolean; analytics?: PaymentAnalyticsContext; } export interface StartMessageUnlockInput { displayMessageId: string; messageId?: string; kind: PendingChatUnlockKind; lockType?: PendingChatPromotion["lockType"]; clientLockId?: string; promotion?: PendingChatPromotion; returnUrl: string; stage?: PendingChatUnlockStage; onAuthenticated: () => void; } export interface OpenSubscriptionForPendingUnlockInput { displayMessageId: string; messageId?: string; kind: PendingChatUnlockKind; lockType?: PendingChatPromotion["lockType"]; clientLockId?: string; promotion?: PendingChatPromotion; returnUrl: string; type: AppSubscriptionType; payChannel?: PayChannel; analytics?: PaymentAnalyticsContext; }