import { IS_PRIVATE_MANIFOLD } from './envs/constants'

export type Challenge = {
  // The link to send: https://manifold.markets/challenges/username/market-slug/{slug}
  // Also functions as the unique id for the link.
  slug: string

  // The user that created the challenge.
  creatorId: string
  creatorUsername: string
  creatorName: string
  creatorAvatarUrl?: string

  // Displayed to people claiming the challenge
  message: string

  // How much to put up
  creatorAmount: number

  // YES or NO for now
  creatorOutcome: string

  // Different than the creator
  acceptorOutcome: string
  acceptorAmount: number

  // The probability the challenger thinks
  creatorOutcomeProb: number

  contractId: string
  contractSlug: string
  contractQuestion: string
  contractCreatorUsername: string

  createdTime: number
  // If null, the link is valid forever
  expiresTime: number | null

  // How many times the challenge can be used
  maxUses: number

  // Used for simpler caching
  acceptedByUserIds: string[]
  // Successful redemptions of the link
  acceptances: Acceptance[]

  // TODO: will have to fill this on resolve contract
  isResolved: boolean
  resolutionOutcome?: string
}

export type Acceptance = {
  // User that accepted the challenge
  userId: string
  userUsername: string
  userName: string
  userAvatarUrl: string

  // The ID of the successful bet that tracks the money moved
  betId: string

  createdTime: number
}

export const CHALLENGES_ENABLED = !IS_PRIVATE_MANIFOLD