Script: Add liquidity to all markets in a group
This commit is contained in:
parent
b87e29d7c0
commit
14c008234a
|
@ -55,6 +55,7 @@ Returns the authenticated user.
|
||||||
Gets all groups, in no particular order.
|
Gets all groups, in no particular order.
|
||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
|
|
||||||
- `availableToUserId`: Optional. if specified, only groups that the user can
|
- `availableToUserId`: Optional. if specified, only groups that the user can
|
||||||
join and groups they've already joined will be returned.
|
join and groups they've already joined will be returned.
|
||||||
|
|
||||||
|
@ -81,7 +82,6 @@ Gets a group's markets by its unique ID.
|
||||||
Requires no authorization.
|
Requires no authorization.
|
||||||
Note: group is singular in the URL.
|
Note: group is singular in the URL.
|
||||||
|
|
||||||
|
|
||||||
### `GET /v0/markets`
|
### `GET /v0/markets`
|
||||||
|
|
||||||
Lists all markets, ordered by creation date descending.
|
Lists all markets, ordered by creation date descending.
|
||||||
|
@ -582,12 +582,17 @@ $ curl https://manifold.markets/api/v0/market -X POST -H 'Content-Type: applicat
|
||||||
"initialProb":25}'
|
"initialProb":25}'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `POST /v0/market/[marketId]/add-liquidity`
|
||||||
|
|
||||||
|
Adds a specified amount of liquidity into the market.
|
||||||
|
|
||||||
|
- `amount`: Required. The amount of liquidity to add, in M$.
|
||||||
|
|
||||||
### `POST /v0/market/[marketId]/close`
|
### `POST /v0/market/[marketId]/close`
|
||||||
|
|
||||||
Closes a market on behalf of the authorized user.
|
Closes a market on behalf of the authorized user.
|
||||||
- `closeTime`: Optional. Milliseconds since the epoch to close the market at. If not provided, the market will be closed immediately. Cannot provide close time in past.
|
|
||||||
|
|
||||||
|
- `closeTime`: Optional. Milliseconds since the epoch to close the market at. If not provided, the market will be closed immediately. Cannot provide close time in past.
|
||||||
|
|
||||||
### `POST /v0/market/[marketId]/resolve`
|
### `POST /v0/market/[marketId]/resolve`
|
||||||
|
|
||||||
|
|
52
functions/src/scripts/contest/bulk-add-liquidity.ts
Normal file
52
functions/src/scripts/contest/bulk-add-liquidity.ts
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
// Run with `npx ts-node src/scripts/contest/resolve-markets.ts`
|
||||||
|
|
||||||
|
const DOMAIN = 'http://localhost:3000'
|
||||||
|
// Dev API key for Cause Exploration Prizes (@CEP)
|
||||||
|
// const API_KEY = '188f014c-0ba2-4c35-9e6d-88252e281dbf'
|
||||||
|
// DEV API key for Criticism and Red Teaming (@CARTBot)
|
||||||
|
const API_KEY = '6ff1f78a-32fe-43b2-b31b-9e3c78c5f18c'
|
||||||
|
|
||||||
|
// Warning: Checking these in can be dangerous!
|
||||||
|
// Prod API key for @CEPBot
|
||||||
|
|
||||||
|
// Can just curl /v0/group/{slug} to get a group
|
||||||
|
async function getGroupBySlug(slug: string) {
|
||||||
|
const resp = await fetch(`${DOMAIN}/api/v0/group/${slug}`)
|
||||||
|
return await resp.json()
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getMarketsByGroupId(id: string) {
|
||||||
|
// API structure: /v0/group/by-id/[id]/markets
|
||||||
|
const resp = await fetch(`${DOMAIN}/api/v0/group/by-id/${id}/markets`)
|
||||||
|
return await resp.json()
|
||||||
|
}
|
||||||
|
|
||||||
|
async function addLiquidityById(id: string, amount: number) {
|
||||||
|
const resp = await fetch(`${DOMAIN}/api/v0/market/${id}/add-liquidity`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
Authorization: `Key ${API_KEY}`,
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
amount: amount,
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
return await resp.json()
|
||||||
|
}
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
const group = await getGroupBySlug('cart-contest')
|
||||||
|
const markets = await getMarketsByGroupId(group.id)
|
||||||
|
|
||||||
|
// Count up some metrics
|
||||||
|
console.log('Number of markets', markets.length)
|
||||||
|
|
||||||
|
// Resolve each market to NO
|
||||||
|
for (const market of markets.slice(0, 3)) {
|
||||||
|
console.log(market.slug, market.totalLiquidity)
|
||||||
|
const resp = await addLiquidityById(market.id, 200)
|
||||||
|
console.log(resp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
main()
|
28
web/pages/api/v0/market/[id]/add-liquidity.ts
Normal file
28
web/pages/api/v0/market/[id]/add-liquidity.ts
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
import { NextApiRequest, NextApiResponse } from 'next'
|
||||||
|
import {
|
||||||
|
CORS_ORIGIN_MANIFOLD,
|
||||||
|
CORS_ORIGIN_LOCALHOST,
|
||||||
|
} from 'common/envs/constants'
|
||||||
|
import { applyCorsHeaders } from 'web/lib/api/cors'
|
||||||
|
import { fetchBackend, forwardResponse } from 'web/lib/api/proxy'
|
||||||
|
|
||||||
|
export const config = { api: { bodyParser: true } }
|
||||||
|
|
||||||
|
export default async function route(req: NextApiRequest, res: NextApiResponse) {
|
||||||
|
await applyCorsHeaders(req, res, {
|
||||||
|
origin: [CORS_ORIGIN_MANIFOLD, CORS_ORIGIN_LOCALHOST],
|
||||||
|
methods: 'POST',
|
||||||
|
})
|
||||||
|
|
||||||
|
const { id } = req.query
|
||||||
|
const contractId = id as string
|
||||||
|
|
||||||
|
if (req.body) req.body.contractId = contractId
|
||||||
|
try {
|
||||||
|
const backendRes = await fetchBackend(req, 'addliquidity')
|
||||||
|
await forwardResponse(res, backendRes)
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Error talking to cloud function: ', err)
|
||||||
|
res.status(500).json({ message: 'Error communicating with backend.' })
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user