Update method to convert base units to decimal

This commit is contained in:
Adw8 2025-01-30 18:08:55 +05:30
parent 2806fd344a
commit 41470fc895
4 changed files with 8 additions and 8 deletions

View File

@ -24,7 +24,7 @@ class QuotesService {
const quoteResponse = await response.json(); const quoteResponse = await response.json();
// Handle price with Big.js, then convert to BN // Handle price with big.js, then convert to bn.js instance
const priceMTMFor1USDC = new Big(quoteResponse['data'][USDC_MINT]['price']).toFixed(6); const priceMTMFor1USDC = new Big(quoteResponse['data'][USDC_MINT]['price']).toFixed(6);
const priceMTMFor1USDCInBaseUnits = new BN(new Big(priceMTMFor1USDC).times(new Big(10).pow(6)).toString()); const priceMTMFor1USDCInBaseUnits = new BN(new Big(priceMTMFor1USDC).times(new Big(10).pow(6)).toString());

View File

@ -53,8 +53,8 @@ export async function POST(req: NextRequest): Promise<NextResponse> {
const scale = new BN(100); const scale = new BN(100);
const scaledModelCost = new BN(model.cost).mul(scale); const scaledModelCost = new BN(model.cost).mul(scale);
const lowestTokenAmount = scaledModelCost.mul(new BN(lowestAmountOfMTM)).div(scale); const lowestTokenAmountForModel = scaledModelCost.mul(new BN(lowestAmountOfMTM)).div(scale);
const isPaymentVerified = await verifyPayment(transactionSignature, lowestTokenAmount); const isPaymentVerified = await verifyPayment(transactionSignature, lowestTokenAmountForModel);
if (!isPaymentVerified) { if (!isPaymentVerified) {
return NextResponse.json( return NextResponse.json(

View File

@ -121,8 +121,8 @@ const Page: React.FC = (): React.ReactElement => {
<div className="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-6"> <div className="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-6">
{FLUX_MODELS.map((model) => { {FLUX_MODELS.map((model) => {
// Convert cost from number to BN // Convert cost from number to BN
const costBN = new BN(model.cost * 100); const scaledModelCost = new BN(model.cost * 100);
const priceMTM = costBN.mul(priceMTMFor1USDC).div(new BN(100)); const priceMTM = scaledModelCost.mul(priceMTMFor1USDC).div(new BN(100));
return ( return (
<AIServiceCard <AIServiceCard

View File

@ -19,7 +19,7 @@ interface GenerationState {
error: string | null error: string | null
} }
const formatBNWithDecimals = (value: BN, decimals: number): string => { const baseUnitToDecimalFormat = (value: BN, decimals: number): string => {
const bigValue = new Big(value.toString()); const bigValue = new Big(value.toString());
const factor = new Big(10).pow(decimals); const factor = new Big(10).pow(decimals);
@ -95,7 +95,7 @@ const AIServiceCard: React.FC<AIServiceCardProps> = ({
</h2> </h2>
<p className="text-gray-400 mt-2">{description}</p> <p className="text-gray-400 mt-2">{description}</p>
<div className="mt-2 inline-block px-3 py-1 bg-green-500/20 rounded-full text-green-300 text-sm"> <div className="mt-2 inline-block px-3 py-1 bg-green-500/20 rounded-full text-green-300 text-sm">
Cost: {priceMTM ? formatBNWithDecimals(priceMTM, 6) : '...'} MTM Cost: {priceMTM ? baseUnitToDecimalFormat(priceMTM, 6) : '...'} MTM
</div> </div>
</div> </div>
@ -119,7 +119,7 @@ const AIServiceCard: React.FC<AIServiceCardProps> = ({
transition-all duration-200 shadow-lg hover:shadow-green-500/25 transition-all duration-200 shadow-lg hover:shadow-green-500/25
disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:shadow-none" disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:shadow-none"
> >
{generationState.loading ? 'Processing...' : `Pay ${priceMTM ? formatBNWithDecimals(priceMTM, 6) : '...'} MTM & Generate`} {generationState.loading ? 'Processing...' : `Pay ${priceMTM ? baseUnitToDecimalFormat(priceMTM, 6) : '...'} MTM & Generate`}
</button> </button>
</div> </div>