contract type

This commit is contained in:
mantikoros 2022-03-02 17:02:38 -05:00
parent b05d8b3d3c
commit d91abf4faf
7 changed files with 34 additions and 16 deletions

View File

@ -4,7 +4,7 @@ import { useEffect, useRef, useState } from 'react'
import { XIcon } from '@heroicons/react/solid'
import { Answer } from '../../../common/answer'
import { Contract } from '../../../common/contract'
import { DPM, FreeResponse, FullContract } from '../../../common/contract'
import { AmountInput } from '../amount-input'
import { Col } from '../layout/col'
import { placeBet } from '../../lib/firebase/api-call'
@ -28,7 +28,7 @@ import { Bet } from '../../../common/bet'
export function AnswerBetPanel(props: {
answer: Answer
contract: Contract
contract: FullContract<DPM, FreeResponse>
closePanel: () => void
className?: string
}) {

View File

@ -3,7 +3,7 @@ import _ from 'lodash'
import { useState } from 'react'
import { Answer } from '../../../common/answer'
import { Contract } from '../../../common/contract'
import { DPM, FreeResponse, FullContract } from '../../../common/contract'
import { Col } from '../layout/col'
import { Row } from '../layout/row'
import { Avatar } from '../avatar'
@ -18,7 +18,7 @@ import { Linkify } from '../linkify'
export function AnswerItem(props: {
answer: Answer
contract: Contract
contract: FullContract<DPM, FreeResponse>
showChoice: 'radio' | 'checkbox' | undefined
chosenProb: number | undefined
totalChosenProb?: number

View File

@ -2,7 +2,7 @@ import clsx from 'clsx'
import _ from 'lodash'
import { useState } from 'react'
import { Contract } from '../../../common/contract'
import { DPM, FreeResponse, FullContract } from '../../../common/contract'
import { Col } from '../layout/col'
import { resolveMarket } from '../../lib/firebase/api-call'
import { Row } from '../layout/row'
@ -11,7 +11,7 @@ import { ResolveConfirmationButton } from '../confirmation-button'
import { removeUndefinedProps } from '../../../common/util/object'
export function AnswerResolvePanel(props: {
contract: Contract
contract: FullContract<DPM, FreeResponse>
resolveOption: 'CHOOSE' | 'CHOOSE_MULTIPLE' | 'CANCEL' | undefined
setResolveOption: (
option: 'CHOOSE' | 'CHOOSE_MULTIPLE' | 'CANCEL' | undefined

View File

@ -2,7 +2,7 @@ import _ from 'lodash'
import { useLayoutEffect, useState } from 'react'
import { Answer } from '../../../common/answer'
import { Contract } from '../../../common/contract'
import { DPM, FreeResponse, FullContract } from '../../../common/contract'
import { Col } from '../layout/col'
import { formatPercent } from '../../../common/util/format'
import { useUser } from '../../hooks/use-user'
@ -13,7 +13,10 @@ import { AnswerItem } from './answer-item'
import { CreateAnswerPanel } from './create-answer-panel'
import { AnswerResolvePanel } from './answer-resolve-panel'
export function AnswersPanel(props: { contract: Contract; answers: Answer[] }) {
export function AnswersPanel(props: {
contract: FullContract<DPM, FreeResponse>
answers: Answer[]
}) {
const { contract } = props
const { creatorId, resolution, resolutions, totalBets } = contract

View File

@ -3,7 +3,12 @@ import _ from 'lodash'
import { useState } from 'react'
import Textarea from 'react-expanding-textarea'
import { Contract } from '../../../common/contract'
import {
Contract,
DPM,
FreeResponse,
FullContract,
} from '../../../common/contract'
import { AmountInput } from '../amount-input'
import { Col } from '../layout/col'
import { createAnswer } from '../../lib/firebase/api-call'
@ -23,7 +28,9 @@ import {
import { firebaseLogin } from '../../lib/firebase/users'
import { Bet } from '../../../common/bet'
export function CreateAnswerPanel(props: { contract: Contract }) {
export function CreateAnswerPanel(props: {
contract: FullContract<DPM, FreeResponse>
}) {
const { contract } = props
const user = useUser()
const [text, setText] = useState('')

View File

@ -42,6 +42,7 @@ import BetRow from './bet-row'
import { parseTags } from '../../common/util/parse'
import { Avatar } from './avatar'
import { useAdmin } from '../hooks/use-admin'
import { FreeResponse, FullContract } from '../../common/contract'
function FeedComment(props: {
activityItem: any
@ -384,7 +385,10 @@ function FeedDescription(props: { contract: Contract }) {
)
}
function FeedAnswer(props: { contract: Contract; outcome: string }) {
function FeedAnswer(props: {
contract: FullContract<any, FreeResponse>
outcome: string
}) {
const { contract, outcome } = props
const answer = contract?.answers?.[Number(outcome) - 1]
if (!answer) return null

View File

@ -17,9 +17,10 @@ import _ from 'lodash'
import { app } from './init'
import { getValues, listenForValue, listenForValues } from './utils'
import { Contract } from '../../../common/contract'
import { Binary, Contract, FullContract } from '../../../common/contract'
import { getProbability } from '../../../common/calculate'
import { createRNG, shuffle } from '../../../common/util/random'
import { getCpmmProbability } from '../../../common/calculate-cpmm'
export type { Contract }
export function contractPath(contract: Contract) {
@ -40,12 +41,15 @@ export function contractMetrics(contract: Contract) {
return { truePool, createdDate, resolvedDate }
}
export function getBinaryProbPercent(contract: Contract) {
const { totalShares, resolutionProbability } = contract
export function getBinaryProbPercent(contract: FullContract<any, Binary>) {
const { totalShares, pool, resolutionProbability, mechanism } = contract
const prob =
resolutionProbability ?? mechanism === 'cpmm-1'
? getCpmmProbability(pool)
: getProbability(totalShares)
const prob = resolutionProbability ?? getProbability(totalShares)
const probPercent = Math.round(prob * 100) + '%'
return probPercent
}