0ec15ff2f8
* add subsidy * drizzle liquidity * update liquidity panel * remove addliquidity * update cloud functions index * remove json endpoints * imports * drizzle liquidity: add velocity; dev script; run every minute * adjust speed * logging * liquidity button, dialog * modal size * modal * info table * pay back excess liquidity * remove client withdrawal * house liquidity subsidy * disable liquidity button if market resolved or closed * format tip amount
43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import * as admin from 'firebase-admin'
|
|
|
|
import { CPMMContract } from '../../../common/contract'
|
|
import { isProd } from '../utils'
|
|
import {
|
|
DEV_HOUSE_LIQUIDITY_PROVIDER_ID,
|
|
HOUSE_LIQUIDITY_PROVIDER_ID,
|
|
} from '../../../common/antes'
|
|
import { getNewLiquidityProvision } from '../../../common/add-liquidity'
|
|
|
|
const firestore = admin.firestore()
|
|
|
|
export const addHouseSubsidy = (contractId: string, amount: number) => {
|
|
return firestore.runTransaction(async (transaction) => {
|
|
const newLiquidityProvisionDoc = firestore
|
|
.collection(`contracts/${contractId}/liquidity`)
|
|
.doc()
|
|
|
|
const providerId = isProd()
|
|
? HOUSE_LIQUIDITY_PROVIDER_ID
|
|
: DEV_HOUSE_LIQUIDITY_PROVIDER_ID
|
|
|
|
const contractDoc = firestore.doc(`contracts/${contractId}`)
|
|
const snap = await contractDoc.get()
|
|
const contract = snap.data() as CPMMContract
|
|
|
|
const { newLiquidityProvision, newTotalLiquidity, newSubsidyPool } =
|
|
getNewLiquidityProvision(
|
|
providerId,
|
|
amount,
|
|
contract,
|
|
newLiquidityProvisionDoc.id
|
|
)
|
|
|
|
transaction.update(contractDoc, {
|
|
subsidyPool: newSubsidyPool,
|
|
totalLiquidity: newTotalLiquidity,
|
|
} as Partial<CPMMContract>)
|
|
|
|
transaction.create(newLiquidityProvisionDoc, newLiquidityProvision)
|
|
})
|
|
}
|