List an item
Updating an item will upload the new metadata file to IPFS, and update item attributes Royalties are listed in basis points (BPS). 100 BPS is equal to 1%. Royalties will be paid as soon as an item has been shipped.import { mkt } from './config'
const listing = await mkt.update({
id: '<ITEM_MARKETPLACE_ID>',
name: 'My Item',
description: 'This is my item',
category: 'Clothing',
color: 'blue',
tags: ['sale']
brand: 'brand',
nftType: 'physical'
status: 'listed',
royalty: {
royaltyAmount: 300, // 3% royalty
receiver: '0x123'
},
price: 100, // $1
quantityDiff: 1,
images: ['image_url', File],
primaryImageIndex: 0,
})
import type { UpdateItemInput } from './interface'
update(input: UpdateItemInput): void
export interface UpdateMetadataInput {
id: string // item marketplace id
name: string
description: string
category: string
color: string
tags: string[]
brand?: string
nftType: NftType
status: ItemStatus
royalty: Partial<RoyaltyConfig>,
price: number | null, // in cents
quantityDiff: number, // positive if more items should be minted, negative if some items should be burned
images: (string | File)[] // urls or Files
primaryImageIndex: number,
video?: string
}
export interface RoyaltyConfig {
receiver: Address
royaltyAmount: bigint
}
export type NftType = 'physical' | 'digital'
export type ItemStatus = 'listed' | 'delist'
import { Marketplace } from '@evav/marketplace'
import { useDynamicContext, getAuthToken } from '@dynamic-labs/sdk-react-core'
const { primaryWallet } = useDynamicContext()
const walletClient = await primaryWallet?.connector?.getWalletClient()
const publicClient = await primaryWallet?.connector?.getPublicClient()
const [account] = await walletConnector.getConnectedAccounts()
// viem is required for the evav sdk
export const mkt = new Marketplace({
walletClient,
publicClient,
account: account as Address,
// Optional. If not provided, SIWE will be used instead, and you will be asked to sign a message with your wallet
accessToken: getAuthToken(),
})
import { Marketplace } from '@evav/marketplace'
import { useWallets, usePrivy } from 'privy'
import { createWalletClient, createPublicClient, custom } from 'viem'
import { base } from 'viem/chains'
const { wallets } = useWallets();
const { user } = usePrivy();
const wallet = wallets[0]; // Replace this with your desired wallet
const provider = await wallet.getEthereumProvider()
const walletClient = createWalletClient({
chain: base,
transport: custom(provider),
})
const publicClient = createPublicClient({
chain: base,
transport: custom(provider),
})
// viem is required for the evav sdk
export const mkt = new Marketplace({
walletClient,
publicClient,
account: user.linked_accounts[0].address // Replace with your desired account
})