UNPKG

@lyncworld/fuel-marketplace

Version:

Marketplace NPM SDK on Fuel blockchain. Powered by LYNC, it allows anyone to create their own decentralized marketplace which includes listing and buying of Non-fungible tokens (NFTs) and Semi-fungible tokens (SFTs) in a few lines of code.

56 lines (45 loc) 1.84 kB
import { bn } from 'fuels'; import { NftMarketplace } from '@/contracts/marketplace'; import { MarketplaceServices } from '@/interfaces'; import { checkArguments } from '@/utils'; export class ModifyListingService extends MarketplaceServices { private readonly contract: NftMarketplace | undefined = undefined; private assetId: `0x${string}` | undefined = undefined; private listingId: `0x${string}` = '0x'; private newPrice: number = 0; private quantityToAdd: number = 0; constructor(contract: NftMarketplace) { super(); checkArguments([contract], 'arguments'); this.contract = contract; } setProperties(listingId: `0x${string}`, newPrice: number, quantityToAdd: number, assetId?: `0x${string}`) { checkArguments([listingId, newPrice, quantityToAdd], 'arguments'); this.assetId = assetId; this.listingId = listingId; this.newPrice = newPrice; this.quantityToAdd = quantityToAdd; return this; } async execute() { checkArguments([this.contract, this.listingId, this.newPrice, this.quantityToAdd], 'properties'); try { const contractCall = this.contract!.functions.modify_listing( bn(this.listingId), bn(this.newPrice * 10 ** 9), bn(this.quantityToAdd) ); if (this.quantityToAdd > 0 && this.assetId) { contractCall.callParams({ forward: [bn(this.quantityToAdd), this.assetId], }); } const transactionAwaited = await contractCall.call(); const finalTransaction = await transactionAwaited.waitForResult(); return { success: true, data: finalTransaction }; } catch (error: unknown) { console.error('Error Log: Error executing buy token transaction: ', { error }); return { success: false, error }; } } }