Skip to content

registerProviderSync

registerProviderSync(client, options): Promise<OutputType>

Defined in: packages/synapse-core/src/sp-registry/register-provider.ts:187

Register a new service provider and wait for confirmation

Registers a new service provider with the specified information and PDP offering. Waits for the transaction to be confirmed and returns the receipt with the event.

ParameterTypeDescription
clientClient<Transport, Chain, Account>The viem client with account to use for the transaction.
options{ capabilities?: Record<string, string>; contractAddress?: `0x${string}`; description: string; name: string; onHash?: (hash) => void; payee: `0x${string}`; pdpOffering: PDPOffering; productType?: number; value?: bigint; }registerProviderSync.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.descriptionstringThe description of the service provider
options.namestringThe name of the service provider
options.onHash?(hash) => voidCallback function called with the transaction hash before waiting for the receipt.
options.payee`0x${string}`The address that will receive payments for this provider
options.pdpOfferingPDPOfferingThe PDP offering details
options.productType?numberThe product type to register (0 for PDP). Defaults to 0.
options.value?bigintThe registration fee value. If not provided, will be fetched from the contract.

Promise<OutputType>

The transaction receipt and extracted event registerProviderSync.OutputType

Errors registerProviderSync.ErrorType

import { registerProviderSync } 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 registerProviderSync(client, {
payee: account.address,
name: 'My Storage Provider',
description: 'High-performance storage service',
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('Service Provider:', event.args.serviceProvider)
console.log('Payee:', event.args.payee)