export type UserRole = "super_admin" | "client" | "respondent";
export type PlanTier = "free" | "pro" | "enterprise";
export type SubscriptionStatus = "active" | "past_due" | "canceled";
export type BillingCycle = "monthly" | "annual";
export type SurveyStatus = "draft" | "active" | "closed";
export type QuestionType =
  | "multiple_choice"
  | "checkbox"
  | "rating"
  | "nps"
  | "open_text"
  | "matrix"
  | "file_upload"
  | "dropdown"
  | "date_time";
export type LogicConditionType = "equals" | "not_equals" | "any_answer";
export type LogicAction = "skip_to_question" | "end_survey";
export type CollectorType =
  | "web_link"
  | "embed"
  | "qr_code"
  | "email_campaign"
  | "social";
export type RespondentStatus = "in_progress" | "completed" | "abandoned";
export type InvoiceStatus = "paid" | "open" | "failed";

export interface WelcomeScreenConfig {
  title?: string;
  description?: string;
  buttonLabel?: string;
}

export interface ThankYouVariant {
  id: string;
  questionId: string;
  conditionType: LogicConditionType;
  conditionValue: string | null;
  emoji: string;
  title: string;
  description: string;
}

export interface ThankYouScreenConfig {
  title?: string;
  description?: string;
  emoji?: string;
  variants?: ThankYouVariant[];
}

export interface ThemeConfig {
  logoUrl?: string;
  primaryColor?: string;
  accentColor?: string;
}

export interface QuestionOptionsConfig {
  choices?: string[];
  minRating?: number;
  maxRating?: number;
  rows?: string[];
  columns?: string[];
  placeholder?: string;
  allowMultiple?: boolean;
}

export interface QuestionValidationConfig {
  minLength?: number;
  maxLength?: number;
  maxFileSizeMb?: number;
  allowedFileTypes?: string[];
  responseType?: "text" | "number" | "email" | "regex";
  regexPattern?: string;
  minSelections?: number;
  maxSelections?: number;
}

export interface CollectorConfig {
  embedWidth?: string;
  embedHeight?: string;
  emailSubject?: string;
  emailBody?: string;
}
