lushdog@outlook.com пре 2 недеља
родитељ
комит
24770360fa
1 измењених фајлова са 31 додато и 0 уклоњено
  1. 31 0
      src/app/components/DataTable.tsx

+ 31 - 0
src/app/components/DataTable.tsx

@@ -1,5 +1,6 @@
 'use client'
 
+import { TickMath } from '@/lib/byreal-clmm-sdk/src/instructions/utils/tickMath'
 import { useEffect, useState } from 'react'
 import { Table, Select, Typography, Tag, Button, InputNumber, App } from 'antd'
 
@@ -10,6 +11,7 @@ interface TableData {
 	positionAgeMs: number
 	tokenAaddress?: string
 	tokenBaddress?: string
+	priceRange?: string
 	[key: string]: unknown
 }
 
@@ -38,15 +40,19 @@ interface PoolInfo {
 	mintA?: {
 		address: string
 		symbol?: string
+		decimals?: number
 		mintInfo?: {
 			symbol?: string
+			decimals?: number
 		}
 	}
 	mintB?: {
 		address: string
 		symbol?: string
+		decimals?: number
 		mintInfo?: {
 			symbol?: string
+			decimals?: number
 		}
 	}
 }
@@ -151,9 +157,26 @@ function DataTableContent() {
 					: undefined
 				const tokenAaddress = poolMapData?.mintA?.address
 				const tokenBaddress = poolMapData?.mintB?.address
+				const getPriceRange = (
+					item: Record<string, unknown>,
+					poolMapData: PoolInfo | undefined
+				) => {
+					const priceUpper = TickMath.getPriceFromTick({
+						tick: item.upperTick as number,
+						decimalsA: poolMapData?.mintA?.decimals || 0,
+						decimalsB: poolMapData?.mintB?.decimals || 0,
+					})
+					const priceLower = TickMath.getPriceFromTick({
+						tick: item.lowerTick as number,
+						decimalsA: poolMapData?.mintA?.decimals || 0,
+						decimalsB: poolMapData?.mintB?.decimals || 0,
+					})
+					return `${priceLower.toFixed(6)} - ${priceUpper.toFixed(6)}`
+				}
 				setData(
 					records.map((item, index) => ({
 						key: `${item.id || index}`,
+						priceRange: getPriceRange(item, poolMapData),
 						tokenAaddress,
 						tokenBaddress,
 						...item,
@@ -349,6 +372,14 @@ function DataTableContent() {
 				)
 			},
 		},
+		{
+			title: '区间',
+			dataIndex: 'priceRange',
+			key: 'priceRange',
+			render: (text: string) => {
+				return <span className="font-bold text-lg">{text}</span>
+			},
+		},
 		{
 			title: '复制数',
 			dataIndex: 'copies',