diff --git a/src/app/api/registry/route.ts b/src/app/api/registry/route.ts
index 0f1838f..f1fbb3f 100644
--- a/src/app/api/registry/route.ts
+++ b/src/app/api/registry/route.ts
@@ -10,7 +10,7 @@ import { DENOM as ALNT_DENOM } from '@cerc-io/registry-sdk';
import { verifyUnusedSolanaPayment } from '@/utils/solanaVerify';
import { transferLNTTokens } from '@/services/laconicTransfer';
import { getRegistry, getRegistryConfig } from '@/config';
-import { calculateTokenAmount } from '@/services/jupiterPrice';
+import { GetRequiredTokenInfo } from '@/services/jupiterPrice';
assert(process.env.NEXT_PUBLIC_SOLANA_RPC_URL, 'SOLANA_RPC_URL is required');
const SOLANA_RPC_URL = process.env.NEXT_PUBLIC_SOLANA_RPC_URL;
@@ -185,7 +185,8 @@ export async function POST(request: NextRequest) {
// Calculate expected token amount based on current price
let expectedTokenAmount: number;
try {
- expectedTokenAmount = await calculateTokenAmount(targetUsdAmount, mintAddress);
+ const { requiredAmount } = await GetRequiredTokenInfo(targetUsdAmount, mintAddress);
+ expectedTokenAmount = Math.round(requiredAmount - 0.2 * requiredAmount); // Allow 20% slippage due to price fluctuations
} catch (error) {
console.error('Error calculating token amount:', error);
return NextResponse.json({
@@ -223,7 +224,7 @@ export async function POST(request: NextRequest) {
}
console.log('LNT transfer completed:', lntTransferResult.transactionHash);
- const finalTxHash = lntTransferResult.transactionHash!; // Use LNT transfer hash for registry
+ const laconicTxHash = lntTransferResult.transactionHash!; // Use LNT transfer hash for registry
// Validate required environment variables for Solana payments
const requiredEnvVars = [
@@ -412,7 +413,7 @@ export async function POST(request: NextRequest) {
tx_hash: txHash,
pubkey: senderPublicKey
},
- payment: finalTxHash,
+ payment: laconicTxHash,
};
console.log('Deployment request data:', deploymentRequestData);
diff --git a/src/components/PaymentModal.tsx b/src/components/PaymentModal.tsx
index 70107fc..041327c 100644
--- a/src/components/PaymentModal.tsx
+++ b/src/components/PaymentModal.tsx
@@ -7,7 +7,7 @@ import assert from 'assert';
import { Connection } from '@solana/web3.js';
import { sendSolanaTokenPayment } from '@/services/solana';
-import { calculateTokenAmount, getTokenPrice } from '@/services/jupiterPrice';
+import { GetRequiredTokenInfo } from '@/services/jupiterPrice';
import { PaymentModalProps } from '@/types';
assert(process.env.NEXT_PUBLIC_SOLANA_RPC_URL, 'SOLANA_RPC_URL is required');
@@ -42,12 +42,9 @@ export default function PaymentModal({
setError('');
try {
- const [amount, priceInfo] = await Promise.all([
- calculateTokenAmount(targetUsdAmount, mintAddress),
- getTokenPrice(mintAddress)
- ]);
- setTokenAmount(amount);
- setTokenDecimals(priceInfo.decimals);
+ const {requiredAmount, decimals} = await GetRequiredTokenInfo(targetUsdAmount, mintAddress)
+ setTokenAmount(requiredAmount);
+ setTokenDecimals(decimals);
} catch (error) {
console.error('Error fetching token price:', error);
setError('Unable to fetch current token price. Please try again.');
@@ -147,7 +144,7 @@ export default function PaymentModal({
- Token amount calculated from current market price + Token information fetched from Jupiter
diff --git a/src/services/jupiterPrice.ts b/src/services/jupiterPrice.ts index 4120e3f..364b6bc 100644 --- a/src/services/jupiterPrice.ts +++ b/src/services/jupiterPrice.ts @@ -12,27 +12,32 @@ interface TokenPriceInfo { decimals: number; } +interface RequiredTokenInfo { + requiredAmount: number; + decimals: number; +} + /** * Fetches token price from Jupiter aggregator API * @param mintAddress The Solana token mint address * @returns Token price information including USD price and decimals */ -export async function getTokenPrice(mintAddress: string): Promise