| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- import { NextRequest, NextResponse } from 'next/server'
- import { TickMath } from '@/lib/byreal-clmm-sdk/src/instructions/utils/tickMath'
- export async function GET(request: NextRequest) {
- try {
- const searchParams = request.nextUrl.searchParams
- const tickParam = searchParams.get('tick')
- const decimalsAParam = searchParams.get('decimalsA')
- const decimalsBParam = searchParams.get('decimalsB')
- const baseInParam = searchParams.get('baseIn')
- if (
- tickParam === null ||
- decimalsAParam === null ||
- decimalsBParam === null
- ) {
- return NextResponse.json(
- { error: 'Missing required parameters: tick, decimalsA, decimalsB' },
- { status: 400 }
- )
- }
- const tick = parseInt(tickParam, 10)
- const decimalsA = parseInt(decimalsAParam, 10)
- const decimalsB = parseInt(decimalsBParam, 10)
- const baseIn = baseInParam === 'false' ? false : true
- if (isNaN(tick) || isNaN(decimalsA) || isNaN(decimalsB)) {
- return NextResponse.json(
- {
- error:
- 'Invalid parameter types. tick, decimalsA, and decimalsB must be numbers.',
- },
- { status: 400 }
- )
- }
- const price = TickMath.getPriceFromTick({
- tick,
- decimalsA,
- decimalsB,
- baseIn,
- })
- return NextResponse.json({
- price: price.toString(),
- })
- } catch (error) {
- console.error('Tick to Price API Error:', error)
- return NextResponse.json(
- { error: 'Internal Server Error' },
- { status: 500 }
- )
- }
- }
|