export type ActiveMode = "creator" | "participant";

export type ParticipantProfileStatus =
  | "incomplete"
  | "active"
  | "paused"
  | "closed";

export type OnboardingIntent = "participate" | "both";

export type ConsentStatus = "granted" | "withdrawn" | "expired" | "superseded";

export type DomesticQuestionStatus =
  | "draft"
  | "review"
  | "published"
  | "paused"
  | "retired";

export type DomesticSensitivity = "standard" | "personal" | "sensitive";

export type DomesticQuestionType =
  | "single_choice"
  | "multi_choice"
  | "yes_no"
  | "rating"
  | "number"
  | "short_text";

export type DomesticConditionType =
  | "always"
  | "equals"
  | "not_equals"
  | "any_of"
  | "includes"
  | "gte"
  | "lte";

export type DomesticEdgeType = "unlock" | "boost" | "suppress" | "terminate";

export type QueueReason = "seed" | "branch" | "rotation" | "profile_refresh";

export type QueueStatus =
  | "queued"
  | "served"
  | "answered"
  | "skipped"
  | "expired"
  | "suppressed";

export type DomesticAnswerSource = "feed" | "profile" | "import";

export interface DomesticOption {
  value: string;
  label: string;
}

/** `options` for choice types; `min`/`max` for rating/number. */
export interface DomesticOptionsConfig {
  options?: DomesticOption[];
  min?: number;
  max?: number;
  minLabel?: string;
  maxLabel?: string;
}

export interface DomesticConditionConfig {
  value?: string | number | boolean;
  values?: Array<string | number>;
}

export type DomesticAnswerValue = string | number | boolean | string[];

export interface UserCapabilities {
  activeMode: ActiveMode;
  hasCreatorCapability: boolean;
  hasParticipantCapability: boolean;
  participantProfileId: string | null;
}
