Skip to content

addProductSync

addProductSync(client, options): Promise<OutputType>

Defined in: packages/synapse-core/src/sp-registry/add-product.ts:164

Add a product to the service provider and wait for confirmation

Adds a new product to the calling provider’s offerings and waits for the transaction to be confirmed. Returns the receipt with the event.

Parameter Type Description
client Client<Transport, Chain, Account> The viem client with account to use for the transaction.
options { capabilities?: Record<string, string>; contractAddress?: `0x${string}`; onHash?: (hash) => void; pdpOffering: PDPOffering; productType?: number; } addProductSync.OptionsType
options.capabilities? Record<string, string> Additional capabilities as key-value pairs. Optional.
options.contractAddress? `0x${string}` Service provider registry contract address. If not provided, the default is the registry contract address for the chain.
options.onHash? (hash) => void Callback function called with the transaction hash before waiting for the receipt.
options.pdpOffering PDPOffering The PDP offering details
options.productType? number The product type to add (0 for PDP). Defaults to 0.

Promise<OutputType>

The transaction receipt and extracted event addProductSync.OutputType

Errors addProductSync.ErrorType

import { addProductSync } from '@filoz/synapse-core/sp-registry'
import { createWalletClient, http, parseEther } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { calibration } from '@filoz/synapse-core/chains'

const account = privateKeyToAccount('0x...')
const client = createWalletClient({
  account,
  chain: calibration,
  transport: http(),
})

const { receipt, event } = await addProductSync(client, {
  pdpOffering: {
    serviceURL: 'https://provider.example.com',
    minPieceSizeInBytes: 1024n,
    maxPieceSizeInBytes: 1073741824n,
    storagePricePerTibPerDay: parseEther('0.1'),
    minProvingPeriodInEpochs: 2880n,
    location: 'us-east',
    paymentTokenAddress: '0x0000000000000000000000000000000000000000',
  },
  onHash: (hash) => console.log('Transaction sent:', hash),
})

console.log('Provider ID:', event.args.providerId)
console.log('Product Type:', event.args.productType)