import type { PayChannel } from "@/data/dto/payment";
import type {
  PendingChatUnlockKind,
  PendingChatUnlockStage,
} from "@/data/storage/navigation";

export type AppSubscriptionType = "vip" | "topup";
export type AppSubscriptionReturnTo = "chat" | null;

export interface OpenSubscriptionInput {
  type: AppSubscriptionType;
  payChannel?: PayChannel;
  returnTo?: AppSubscriptionReturnTo;
  replace?: boolean;
}

export interface StartMessageUnlockInput {
  messageId: string;
  kind: PendingChatUnlockKind;
  returnUrl: string;
  stage?: PendingChatUnlockStage;
  onAuthenticated: () => void;
}

export interface OpenSubscriptionForPendingUnlockInput {
  messageId: string;
  kind: PendingChatUnlockKind;
  returnUrl: string;
  type: AppSubscriptionType;
  payChannel?: PayChannel;
}
