import { Bet } from './bet' import { getProbability } from './calculate' import { Contract } from './contract' import { User } from './user' export const PHANTOM_ANTE = 0.001 export const MINIMUM_ANTE = 10 export const calcStartPool = (initialProbInt: number, ante = 0) => { const p = initialProbInt / 100.0 const totalAnte = PHANTOM_ANTE + ante const sharesYes = Math.sqrt(p * totalAnte ** 2) const sharesNo = Math.sqrt(totalAnte ** 2 - sharesYes ** 2) const poolYes = p * ante const poolNo = (1 - p) * ante const phantomYes = Math.sqrt(p) * PHANTOM_ANTE const phantomNo = Math.sqrt(1 - p) * PHANTOM_ANTE return { sharesYes, sharesNo, poolYes, poolNo, phantomYes, phantomNo } } export function getAnteBets( creator: User, contract: Contract, yesAnteId: string, noAnteId: string ) { const p = getProbability(contract.totalShares) const ante = contract.totalBets.YES + contract.totalBets.NO const { createdTime } = contract const yesBet: Bet = { id: yesAnteId, userId: creator.id, contractId: contract.id, amount: p * ante, shares: Math.sqrt(p) * ante, outcome: 'YES', probBefore: p, probAfter: p, createdTime, isAnte: true, } const noBet: Bet = { id: noAnteId, userId: creator.id, contractId: contract.id, amount: (1 - p) * ante, shares: Math.sqrt(1 - p) * ante, outcome: 'NO', probBefore: p, probAfter: p, createdTime, isAnte: true, } return { yesBet, noBet } } export function getFreeAnswerAnte( creator: User, contract: Contract, anteBetId: string ) { const { totalBets, totalShares } = contract const amount = totalBets['0'] const shares = totalShares['0'] const { createdTime } = contract const anteBet: Bet = { id: anteBetId, userId: creator.id, contractId: contract.id, amount, shares, outcome: '0', probBefore: 0, probAfter: 1, createdTime, isAnte: true, } return anteBet }