From 4ea8e6b62044d437da620353e6b24562c4206a6c Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Tue, 22 Jul 2025 15:38:47 +0530 Subject: [PATCH] Fix ts file names --- CLAUDE.md | 6 +++--- src/app/api/registry/route.ts | 9 ++++++--- src/components/PaymentModal.tsx | 6 +++--- src/services/{jupiterPrice.ts => jupiter-price.ts} | 6 +++--- src/services/{laconicTransfer.ts => laconic-transfer.ts} | 0 src/utils/{solanaVerify.ts => solana-verify.ts} | 0 6 files changed, 15 insertions(+), 12 deletions(-) rename src/services/{jupiterPrice.ts => jupiter-price.ts} (90%) rename src/services/{laconicTransfer.ts => laconic-transfer.ts} (100%) rename src/utils/{solanaVerify.ts => solana-verify.ts} (100%) diff --git a/CLAUDE.md b/CLAUDE.md index 3f27ed4..476ee7e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -22,7 +22,7 @@ npm run lint # Run ESLint ### Tech Stack - **Frontend**: Next.js 15.3.1 with React 19 - **Styling**: TailwindCSS 4 -- **Blockchain**: +- **Blockchain**: - Solana Web3.js for payments - @cerc-io/registry-sdk for Laconic Registry - CosmJS for Cosmos blockchain interactions @@ -71,13 +71,13 @@ npm run lint # Run ESLint ### Client-side Variables (NEXT_PUBLIC_*) ```bash -NEXT_PUBLIC_SOLANA_RPC_URL=https://api.mainnet-beta.solana.com +NEXT_PUBLIC_SOLANA_RPC_URL=https://skilled-prettiest-seed.solana-mainnet.quiknode.pro/eeecfebd04e345f69f1900cc3483cbbfea02a158 NEXT_PUBLIC_SOLANA_TOKEN_MINT_ADDRESS= NEXT_PUBLIC_SOLANA_TOKEN_RECIPIENT_ADDRESS= NEXT_PUBLIC_SOLANA_TOKEN_SYMBOL=GOR NEXT_PUBLIC_SOLANA_PAYMENT_AMOUNT_USD=5 NEXT_PUBLIC_DOMAIN_SUFFIX=.example.com -NEXT_PUBLIC_EXAMPLE_URL=https://github.com/cerc-io/laconic-registry-cli +NEXT_PUBLIC_EXAMPLE_URL=https://git.vdb.to/cerc-io/test-progressive-web-app ``` ### Server-side Variables diff --git a/src/app/api/registry/route.ts b/src/app/api/registry/route.ts index f1fbb3f..2eeeb3f 100644 --- a/src/app/api/registry/route.ts +++ b/src/app/api/registry/route.ts @@ -10,11 +10,14 @@ 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 { GetRequiredTokenInfo } from '@/services/jupiterPrice'; +import { getRequiredTokenInfo } from '@/services/jupiter-price'; assert(process.env.NEXT_PUBLIC_SOLANA_RPC_URL, 'SOLANA_RPC_URL is required'); const SOLANA_RPC_URL = process.env.NEXT_PUBLIC_SOLANA_RPC_URL; +// Allow 20% slippage due to price fluctuations +const ALLOWED_SLIPPAGE_FACTOR = 0.2 + // Use CAIP convention for chain ID: namespace + reference const SOLANA_CHAIN_ID = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp'; // Solana mainnet @@ -185,8 +188,8 @@ export async function POST(request: NextRequest) { // Calculate expected token amount based on current price let expectedTokenAmount: number; try { - const { requiredAmount } = await GetRequiredTokenInfo(targetUsdAmount, mintAddress); - expectedTokenAmount = Math.round(requiredAmount - 0.2 * requiredAmount); // Allow 20% slippage due to price fluctuations + const { requiredAmountInBaseUnits } = await getRequiredTokenInfo(targetUsdAmount, mintAddress); + expectedTokenAmount = Math.round(requiredAmountInBaseUnits - ALLOWED_SLIPPAGE_FACTOR * requiredAmountInBaseUnits); } catch (error) { console.error('Error calculating token amount:', error); return NextResponse.json({ diff --git a/src/components/PaymentModal.tsx b/src/components/PaymentModal.tsx index 041327c..4a1bfdb 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 { GetRequiredTokenInfo } from '@/services/jupiterPrice'; +import { getRequiredTokenInfo } from '@/services/jupiter-price'; import { PaymentModalProps } from '@/types'; assert(process.env.NEXT_PUBLIC_SOLANA_RPC_URL, 'SOLANA_RPC_URL is required'); @@ -42,8 +42,8 @@ export default function PaymentModal({ setError(''); try { - const {requiredAmount, decimals} = await GetRequiredTokenInfo(targetUsdAmount, mintAddress) - setTokenAmount(requiredAmount); + const {requiredAmountInBaseUnits, decimals} = await getRequiredTokenInfo(targetUsdAmount, mintAddress) + setTokenAmount(requiredAmountInBaseUnits); setTokenDecimals(decimals); } catch (error) { console.error('Error fetching token price:', error); diff --git a/src/services/jupiterPrice.ts b/src/services/jupiter-price.ts similarity index 90% rename from src/services/jupiterPrice.ts rename to src/services/jupiter-price.ts index 364b6bc..5a20f7a 100644 --- a/src/services/jupiterPrice.ts +++ b/src/services/jupiter-price.ts @@ -13,7 +13,7 @@ interface TokenPriceInfo { } interface RequiredTokenInfo { - requiredAmount: number; + requiredAmountInBaseUnits: number; decimals: number; } @@ -54,7 +54,7 @@ export async function getTokenInfo(mintAddress: string): Promise * @param mintAddress The Solana token mint address * @returns The token amount (in smallest units) needed and token decimals */ -export async function GetRequiredTokenInfo(targetUsdAmount: number, mintAddress: string): Promise { +export async function getRequiredTokenInfo(targetUsdAmount: number, mintAddress: string): Promise { const priceInfo = await getTokenInfo(mintAddress); // Calculate token amount needed @@ -63,5 +63,5 @@ export async function GetRequiredTokenInfo(targetUsdAmount: number, mintAddress: // Convert to smallest units (considering decimals) const amountInSmallestUnits = Math.round(tokenAmount * Math.pow(10, priceInfo.decimals)); - return {requiredAmount: amountInSmallestUnits, decimals: priceInfo.decimals}; + return {requiredAmountInBaseUnits: amountInSmallestUnits, decimals: priceInfo.decimals}; } diff --git a/src/services/laconicTransfer.ts b/src/services/laconic-transfer.ts similarity index 100% rename from src/services/laconicTransfer.ts rename to src/services/laconic-transfer.ts diff --git a/src/utils/solanaVerify.ts b/src/utils/solana-verify.ts similarity index 100% rename from src/utils/solanaVerify.ts rename to src/utils/solana-verify.ts