# addProductCall

> **addProductCall**(`options`): `object`

Defined in: [packages/synapse-core/src/sp-registry/add-product.ts:235](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-core/src/sp-registry/add-product.ts#L235)

Create a call to the addProduct function

This function is used to create a call to the addProduct function for use with
sendCalls, sendTransaction, multicall, estimateContractGas, or simulateContract.

## Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `options` | \{ `capabilityKeys`: `string`[]; `capabilityValues`: readonly `` `0x${string}` ``[]; `chain`: `Chain`; `contractAddress?`: `` `0x${string}` ``; `productType?`: `number`; \} | [addProductCall.OptionsType](/reference/filoz/synapse-core/sp-registry/namespaces/addproductcall/type-aliases/optionstype/) |
| `options.capabilityKeys` | `string`[] | The capability keys array |
| `options.capabilityValues` | readonly `` `0x${string}` ``[] | The capability values array (as hex strings) |
| `options.chain` | `Chain` | The chain to use to make the call. |
| `options.contractAddress?` | `` `0x${string}` `` | Service provider registry contract address. If not provided, the default is the registry contract address for the chain. |
| `options.productType?` | `number` | The product type to add (0 for PDP). Defaults to 0. |

## Returns

`object`

The call to the addProduct function [addProductCall.OutputType](/reference/filoz/synapse-core/sp-registry/namespaces/addproductcall/type-aliases/outputtype/)

### abi

> **abi**: readonly \[\{ `inputs`: readonly \[\]; `stateMutability`: `"nonpayable"`; `type`: `"constructor"`; \}, \{ `inputs`: readonly \[\]; `name`: `"MAX_CAPABILITIES"`; `outputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `""`; `type`: `"uint256"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\]; `name`: `"MAX_CAPABILITY_KEY_LENGTH"`; `outputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `""`; `type`: `"uint256"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\]; `name`: `"MAX_CAPABILITY_VALUE_LENGTH"`; `outputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `""`; `type`: `"uint256"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\]; `name`: `"REGISTRATION_FEE"`; `outputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `""`; `type`: `"uint256"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\]; `name`: `"UPGRADE_INTERFACE_VERSION"`; `outputs`: readonly \[\{ `internalType`: `"string"`; `name`: `""`; `type`: `"string"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\]; `name`: `"VERSION"`; `outputs`: readonly \[\{ `internalType`: `"string"`; `name`: `""`; `type`: `"string"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}\]; `name`: `"activeProductTypeProviderCount"`; `outputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"count"`; `type`: `"uint256"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\]; `name`: `"activeProviderCount"`; `outputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `""`; `type`: `"uint256"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}, \{ `internalType`: `"string[]"`; `name`: `"capabilityKeys"`; `type`: `"string[]"`; \}, \{ `internalType`: `"bytes[]"`; `name`: `"capabilityValues"`; `type`: `"bytes[]"`; \}\]; `name`: `"addProduct"`; `outputs`: readonly \[\]; `stateMutability`: `"nonpayable"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"providerAddress"`; `type`: `"address"`; \}\]; `name`: `"addressToProviderId"`; `outputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `components`: readonly \[\{ `internalType`: `"address"`; `name`: `"nextImplementation"`; `type`: `"address"`; \}, \{ `internalType`: `"uint96"`; `name`: `"afterEpoch"`; `type`: `"uint96"`; \}\]; `internalType`: `"struct ServiceProviderRegistry.PlannedUpgrade"`; `name`: `"plannedUpgrade"`; `type`: `"tuple"`; \}\]; `name`: `"announcePlannedUpgrade"`; `outputs`: readonly \[\]; `stateMutability`: `"nonpayable"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\]; `name`: `"eip712Domain"`; `outputs`: readonly \[\{ `internalType`: `"bytes1"`; `name`: `"fields"`; `type`: `"bytes1"`; \}, \{ `internalType`: `"string"`; `name`: `"name"`; `type`: `"string"`; \}, \{ `internalType`: `"string"`; `name`: `"version"`; `type`: `"string"`; \}, \{ `internalType`: `"uint256"`; `name`: `"chainId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"address"`; `name`: `"verifyingContract"`; `type`: `"address"`; \}, \{ `internalType`: `"bytes32"`; `name`: `"salt"`; `type`: `"bytes32"`; \}, \{ `internalType`: `"uint256[]"`; `name`: `"extensions"`; `type`: `"uint256[]"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"offset"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"limit"`; `type`: `"uint256"`; \}\]; `name`: `"getAllActiveProviders"`; `outputs`: readonly \[\{ `internalType`: `"uint256[]"`; `name`: `"providerIds"`; `type`: `"uint256[]"`; \}, \{ `internalType`: `"bool"`; `name`: `"hasMore"`; `type`: `"bool"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}\]; `name`: `"getAllProductCapabilities"`; `outputs`: readonly \[\{ `internalType`: `"bool"`; `name`: `"isActive"`; `type`: `"bool"`; \}, \{ `internalType`: `"string[]"`; `name`: `"keys"`; `type`: `"string[]"`; \}, \{ `internalType`: `"bytes[]"`; `name`: `"values"`; `type`: `"bytes[]"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\]; `name`: `"getNextProviderId"`; `outputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `""`; `type`: `"uint256"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}, \{ `internalType`: `"string[]"`; `name`: `"keys"`; `type`: `"string[]"`; \}\]; `name`: `"getProductCapabilities"`; `outputs`: readonly \[\{ `internalType`: `"bytes[]"`; `name`: `"values"`; `type`: `"bytes[]"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}\]; `name`: `"getProvider"`; `outputs`: readonly \[\{ `components`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}, \{ `components`: readonly \[\{ `internalType`: `"address"`; `name`: `"serviceProvider"`; `type`: `"address"`; \}, \{ `internalType`: `"address"`; `name`: `"payee"`; `type`: `"address"`; \}, \{ `internalType`: `"string"`; `name`: `"name"`; `type`: `"string"`; \}, \{ `internalType`: `"string"`; `name`: `"description"`; `type`: `"string"`; \}, \{ `internalType`: `"bool"`; `name`: `"isActive"`; `type`: `"bool"`; \}\]; `internalType`: `"struct ServiceProviderRegistryStorage.ServiceProviderInfo"`; `name`: `"info"`; `type`: `"tuple"`; \}\]; `internalType`: `"struct ServiceProviderRegistry.ServiceProviderInfoView"`; `name`: `"info"`; `type`: `"tuple"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"providerAddress"`; `type`: `"address"`; \}\]; `name`: `"getProviderByAddress"`; `outputs`: readonly \[\{ `components`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}, \{ `components`: readonly \[\{ `internalType`: `"address"`; `name`: `"serviceProvider"`; `type`: `"address"`; \}, \{ `internalType`: `"address"`; `name`: `"payee"`; `type`: `"address"`; \}, \{ `internalType`: `"string"`; `name`: `"name"`; `type`: `"string"`; \}, \{ `internalType`: `"string"`; `name`: `"description"`; `type`: `"string"`; \}, \{ `internalType`: `"bool"`; `name`: `"isActive"`; `type`: `"bool"`; \}\]; `internalType`: `"struct ServiceProviderRegistryStorage.ServiceProviderInfo"`; `name`: `"info"`; `type`: `"tuple"`; \}\]; `internalType`: `"struct ServiceProviderRegistry.ServiceProviderInfoView"`; `name`: `"info"`; `type`: `"tuple"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\]; `name`: `"getProviderCount"`; `outputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `""`; `type`: `"uint256"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"providerAddress"`; `type`: `"address"`; \}\]; `name`: `"getProviderIdByAddress"`; `outputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `""`; `type`: `"uint256"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}\]; `name`: `"getProviderPayee"`; `outputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"payee"`; `type`: `"address"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}\]; `name`: `"getProviderWithProduct"`; `outputs`: readonly \[\{ `components`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}, \{ `components`: readonly \[\{ `internalType`: `"address"`; `name`: `"serviceProvider"`; `type`: `"address"`; \}, \{ `internalType`: `"address"`; `name`: `"payee"`; `type`: `"address"`; \}, \{ `internalType`: `"string"`; `name`: `"name"`; `type`: `"string"`; \}, \{ `internalType`: `"string"`; `name`: `"description"`; `type`: `"string"`; \}, \{ `internalType`: `"bool"`; `name`: `"isActive"`; `type`: `"bool"`; \}\]; `internalType`: `"struct ServiceProviderRegistryStorage.ServiceProviderInfo"`; `name`: `"providerInfo"`; `type`: `"tuple"`; \}, \{ `components`: readonly \[\{ `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}, \{ `internalType`: `"string[]"`; `name`: `"capabilityKeys"`; `type`: `"string[]"`; \}, \{ `internalType`: `"bool"`; `name`: `"isActive"`; `type`: `"bool"`; \}\]; `internalType`: `"struct ServiceProviderRegistryStorage.ServiceProduct"`; `name`: `"product"`; `type`: `"tuple"`; \}, \{ `internalType`: `"bytes[]"`; `name`: `"productCapabilityValues"`; `type`: `"bytes[]"`; \}\]; `internalType`: `"struct ServiceProviderRegistryStorage.ProviderWithProduct"`; `name`: `""`; `type`: `"tuple"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256[]"`; `name`: `"providerIds"`; `type`: `"uint256[]"`; \}\]; `name`: `"getProvidersByIds"`; `outputs`: readonly \[\{ `components`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}, \{ `components`: readonly \[\{ `internalType`: `"address"`; `name`: `"serviceProvider"`; `type`: `"address"`; \}, \{ `internalType`: `"address"`; `name`: `"payee"`; `type`: `"address"`; \}, \{ `internalType`: `"string"`; `name`: `"name"`; `type`: `"string"`; \}, \{ `internalType`: `"string"`; `name`: `"description"`; `type`: `"string"`; \}, \{ `internalType`: `"bool"`; `name`: `"isActive"`; `type`: `"bool"`; \}\]; `internalType`: `"struct ServiceProviderRegistryStorage.ServiceProviderInfo"`; `name`: `"info"`; `type`: `"tuple"`; \}\]; `internalType`: `"struct ServiceProviderRegistry.ServiceProviderInfoView[]"`; `name`: `"providerInfos"`; `type`: `"tuple[]"`; \}, \{ `internalType`: `"bool[]"`; `name`: `"validIds"`; `type`: `"bool[]"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}, \{ `internalType`: `"bool"`; `name`: `"onlyActive"`; `type`: `"bool"`; \}, \{ `internalType`: `"uint256"`; `name`: `"offset"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"limit"`; `type`: `"uint256"`; \}\]; `name`: `"getProvidersByProductType"`; `outputs`: readonly \[\{ `components`: readonly \[\{ `components`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}, \{ `components`: readonly \[\{ `internalType`: ...; `name`: ...; `type`: ...; \}, \{ `internalType`: ...; `name`: ...; `type`: ...; \}, \{ `internalType`: ...; `name`: ...; `type`: ...; \}, \{ `internalType`: ...; `name`: ...; `type`: ...; \}, \{ `internalType`: ...; `name`: ...; `type`: ...; \}\]; `internalType`: `"struct ServiceProviderRegistryStorage.ServiceProviderInfo"`; `name`: `"providerInfo"`; `type`: `"tuple"`; \}, \{ `components`: readonly \[\{ `internalType`: ...; `name`: ...; `type`: ...; \}, \{ `internalType`: ...; `name`: ...; `type`: ...; \}, \{ `internalType`: ...; `name`: ...; `type`: ...; \}\]; `internalType`: `"struct ServiceProviderRegistryStorage.ServiceProduct"`; `name`: `"product"`; `type`: `"tuple"`; \}, \{ `internalType`: `"bytes[]"`; `name`: `"productCapabilityValues"`; `type`: `"bytes[]"`; \}\]; `internalType`: `"struct ServiceProviderRegistryStorage.ProviderWithProduct[]"`; `name`: `"providers"`; `type`: `"tuple[]"`; \}, \{ `internalType`: `"bool"`; `name`: `"hasMore"`; `type`: `"bool"`; \}\]; `internalType`: `"struct ServiceProviderRegistryStorage.PaginatedProviders"`; `name`: `"result"`; `type`: `"tuple"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\]; `name`: `"initialize"`; `outputs`: readonly \[\]; `stateMutability`: `"nonpayable"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}\]; `name`: `"isProviderActive"`; `outputs`: readonly \[\{ `internalType`: `"bool"`; `name`: `""`; `type`: `"bool"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"provider"`; `type`: `"address"`; \}\]; `name`: `"isRegisteredProvider"`; `outputs`: readonly \[\{ `internalType`: `"bool"`; `name`: `""`; `type`: `"bool"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"string"`; `name`: `"newVersion"`; `type`: `"string"`; \}\]; `name`: `"migrate"`; `outputs`: readonly \[\]; `stateMutability`: `"nonpayable"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\]; `name`: `"nextUpgrade"`; `outputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"nextImplementation"`; `type`: `"address"`; \}, \{ `internalType`: `"uint96"`; `name`: `"afterEpoch"`; `type`: `"uint96"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\]; `name`: `"owner"`; `outputs`: readonly \[\{ `internalType`: `"address"`; `name`: `""`; `type`: `"address"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}, \{ `internalType`: `"string"`; `name`: `"key"`; `type`: `"string"`; \}\]; `name`: `"productCapabilities"`; `outputs`: readonly \[\{ `internalType`: `"bytes"`; `name`: `"value"`; `type`: `"bytes"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}\]; `name`: `"productTypeProviderCount"`; `outputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"count"`; `type`: `"uint256"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}\]; `name`: `"providerHasProduct"`; `outputs`: readonly \[\{ `internalType`: `"bool"`; `name`: `""`; `type`: `"bool"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}\]; `name`: `"providerProducts"`; `outputs`: readonly \[\{ `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}, \{ `internalType`: `"bool"`; `name`: `"isActive"`; `type`: `"bool"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}\]; `name`: `"providers"`; `outputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"serviceProvider"`; `type`: `"address"`; \}, \{ `internalType`: `"address"`; `name`: `"payee"`; `type`: `"address"`; \}, \{ `internalType`: `"string"`; `name`: `"name"`; `type`: `"string"`; \}, \{ `internalType`: `"string"`; `name`: `"description"`; `type`: `"string"`; \}, \{ `internalType`: `"bool"`; `name`: `"isActive"`; `type`: `"bool"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\]; `name`: `"proxiableUUID"`; `outputs`: readonly \[\{ `internalType`: `"bytes32"`; `name`: `""`; `type`: `"bytes32"`; \}\]; `stateMutability`: `"view"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"payee"`; `type`: `"address"`; \}, \{ `internalType`: `"string"`; `name`: `"name"`; `type`: `"string"`; \}, \{ `internalType`: `"string"`; `name`: `"description"`; `type`: `"string"`; \}, \{ `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}, \{ `internalType`: `"string[]"`; `name`: `"capabilityKeys"`; `type`: `"string[]"`; \}, \{ `internalType`: `"bytes[]"`; `name`: `"capabilityValues"`; `type`: `"bytes[]"`; \}\]; `name`: `"registerProvider"`; `outputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}\]; `stateMutability`: `"payable"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}\]; `name`: `"removeProduct"`; `outputs`: readonly \[\]; `stateMutability`: `"nonpayable"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\]; `name`: `"removeProvider"`; `outputs`: readonly \[\]; `stateMutability`: `"nonpayable"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\]; `name`: `"renounceOwnership"`; `outputs`: readonly \[\]; `stateMutability`: `"nonpayable"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"newOwner"`; `type`: `"address"`; \}\]; `name`: `"transferOwnership"`; `outputs`: readonly \[\]; `stateMutability`: `"nonpayable"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}, \{ `internalType`: `"string[]"`; `name`: `"capabilityKeys"`; `type`: `"string[]"`; \}, \{ `internalType`: `"bytes[]"`; `name`: `"capabilityValues"`; `type`: `"bytes[]"`; \}\]; `name`: `"updateProduct"`; `outputs`: readonly \[\]; `stateMutability`: `"nonpayable"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"string"`; `name`: `"name"`; `type`: `"string"`; \}, \{ `internalType`: `"string"`; `name`: `"description"`; `type`: `"string"`; \}\]; `name`: `"updateProviderInfo"`; `outputs`: readonly \[\]; `stateMutability`: `"nonpayable"`; `type`: `"function"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"newImplementation"`; `type`: `"address"`; \}, \{ `internalType`: `"bytes"`; `name`: `"data"`; `type`: `"bytes"`; \}\]; `name`: `"upgradeToAndCall"`; `outputs`: readonly \[\]; `stateMutability`: `"payable"`; `type`: `"function"`; \}, \{ `anonymous`: `false`; `inputs`: readonly \[\{ `indexed`: `false`; `internalType`: `"string"`; `name`: `"version"`; `type`: `"string"`; \}, \{ `indexed`: `false`; `internalType`: `"address"`; `name`: `"implementation"`; `type`: `"address"`; \}\]; `name`: `"ContractUpgraded"`; `type`: `"event"`; \}, \{ `anonymous`: `false`; `inputs`: readonly \[\]; `name`: `"EIP712DomainChanged"`; `type`: `"event"`; \}, \{ `anonymous`: `false`; `inputs`: readonly \[\{ `indexed`: `false`; `internalType`: `"uint64"`; `name`: `"version"`; `type`: `"uint64"`; \}\]; `name`: `"Initialized"`; `type`: `"event"`; \}, \{ `anonymous`: `false`; `inputs`: readonly \[\{ `indexed`: `true`; `internalType`: `"address"`; `name`: `"previousOwner"`; `type`: `"address"`; \}, \{ `indexed`: `true`; `internalType`: `"address"`; `name`: `"newOwner"`; `type`: `"address"`; \}\]; `name`: `"OwnershipTransferred"`; `type`: `"event"`; \}, \{ `anonymous`: `false`; `inputs`: readonly \[\{ `indexed`: `true`; `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}, \{ `indexed`: `true`; `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}, \{ `indexed`: `false`; `internalType`: `"address"`; `name`: `"serviceProvider"`; `type`: `"address"`; \}, \{ `indexed`: `false`; `internalType`: `"string[]"`; `name`: `"capabilityKeys"`; `type`: `"string[]"`; \}, \{ `indexed`: `false`; `internalType`: `"bytes[]"`; `name`: `"capabilityValues"`; `type`: `"bytes[]"`; \}\]; `name`: `"ProductAdded"`; `type`: `"event"`; \}, \{ `anonymous`: `false`; `inputs`: readonly \[\{ `indexed`: `true`; `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}, \{ `indexed`: `true`; `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}\]; `name`: `"ProductRemoved"`; `type`: `"event"`; \}, \{ `anonymous`: `false`; `inputs`: readonly \[\{ `indexed`: `true`; `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}, \{ `indexed`: `true`; `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}, \{ `indexed`: `false`; `internalType`: `"address"`; `name`: `"serviceProvider"`; `type`: `"address"`; \}, \{ `indexed`: `false`; `internalType`: `"string[]"`; `name`: `"capabilityKeys"`; `type`: `"string[]"`; \}, \{ `indexed`: `false`; `internalType`: `"bytes[]"`; `name`: `"capabilityValues"`; `type`: `"bytes[]"`; \}\]; `name`: `"ProductUpdated"`; `type`: `"event"`; \}, \{ `anonymous`: `false`; `inputs`: readonly \[\{ `indexed`: `true`; `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}\]; `name`: `"ProviderInfoUpdated"`; `type`: `"event"`; \}, \{ `anonymous`: `false`; `inputs`: readonly \[\{ `indexed`: `true`; `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}, \{ `indexed`: `true`; `internalType`: `"address"`; `name`: `"serviceProvider"`; `type`: `"address"`; \}, \{ `indexed`: `true`; `internalType`: `"address"`; `name`: `"payee"`; `type`: `"address"`; \}\]; `name`: `"ProviderRegistered"`; `type`: `"event"`; \}, \{ `anonymous`: `false`; `inputs`: readonly \[\{ `indexed`: `true`; `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}\]; `name`: `"ProviderRemoved"`; `type`: `"event"`; \}, \{ `anonymous`: `false`; `inputs`: readonly \[\{ `components`: readonly \[\{ `internalType`: `"address"`; `name`: `"nextImplementation"`; `type`: `"address"`; \}, \{ `internalType`: `"uint96"`; `name`: `"afterEpoch"`; `type`: `"uint96"`; \}\]; `indexed`: `false`; `internalType`: `"struct ServiceProviderRegistry.PlannedUpgrade"`; `name`: `"plannedUpgrade"`; `type`: `"tuple"`; \}\]; `name`: `"UpgradeAnnounced"`; `type`: `"event"`; \}, \{ `anonymous`: `false`; `inputs`: readonly \[\{ `indexed`: `true`; `internalType`: `"address"`; `name`: `"implementation"`; `type`: `"address"`; \}\]; `name`: `"Upgraded"`; `type`: `"event"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"target"`; `type`: `"address"`; \}\]; `name`: `"AddressEmptyCode"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"implementation"`; `type`: `"address"`; \}\]; `name`: `"ERC1967InvalidImplementation"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\]; `name`: `"ERC1967NonPayable"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\]; `name`: `"FailedCall"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}\]; `name`: `"InsufficientCapabilitiesForProduct"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\]; `name`: `"InvalidInitialization"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\]; `name`: `"NotInitializing"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"owner"`; `type`: `"address"`; \}\]; `name`: `"OwnableInvalidOwner"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"account"`; `type`: `"address"`; \}\]; `name`: `"OwnableUnauthorizedAccount"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\]; `name`: `"UUPSUnauthorizedCallContext"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"bytes32"`; `name`: `"slot"`; `type`: `"bytes32"`; \}\]; `name`: `"UUPSUnsupportedProxiableUUID"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"enum Errors.AddressField"`; `name`: `"field"`; `type`: `"uint8"`; \}\]; `name`: `"AddressAlreadySet"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\]; `name`: `"AtLeastOnePriceMustBeNonZero"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}\]; `name`: `"CDNPaymentAlreadyTerminated"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}\]; `name`: `"CacheMissPaymentAlreadyTerminated"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"address"`; `name`: `"expectedPayer"`; `type`: `"address"`; \}, \{ `internalType`: `"address"`; `name`: `"caller"`; `type`: `"address"`; \}\]; `name`: `"CallerNotPayer"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"address"`; `name`: `"expectedPayer"`; `type`: `"address"`; \}, \{ `internalType`: `"address"`; `name`: `"expectedPayee"`; `type`: `"address"`; \}, \{ `internalType`: `"address"`; `name`: `"caller"`; `type`: `"address"`; \}\]; `name`: `"CallerNotPayerOrPayee"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"expected"`; `type`: `"address"`; \}, \{ `internalType`: `"address"`; `name`: `"actual"`; `type`: `"address"`; \}\]; `name`: `"CallerNotPayments"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"windowStart"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"nowBlock"`; `type`: `"uint256"`; \}\]; `name`: `"ChallengeWindowTooEarly"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"clientDataSetId"`; `type`: `"uint256"`; \}\]; `name`: `"ClientDataSetAlreadyRegistered"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"enum Errors.CommissionType"`; `name`: `"commissionType"`; `type`: `"uint8"`; \}, \{ `internalType`: `"uint256"`; `name`: `"max"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"actual"`; `type`: `"uint256"`; \}\]; `name`: `"CommissionExceedsMaximum"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"railId"`; `type`: `"uint256"`; \}\]; `name`: `"DataSetNotFoundForRail"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}\]; `name`: `"DataSetNotRegistered"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}\]; `name`: `"DataSetPaymentAlreadyTerminated"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"pdpEndEpoch"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"currentBlock"`; `type`: `"uint256"`; \}\]; `name`: `"DataSetPaymentBeyondEndEpoch"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\]; `name`: `"DivisionByZero"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"string"`; `name`: `"key"`; `type`: `"string"`; \}\]; `name`: `"DuplicateMetadataKey"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\]; `name`: `"ExtraDataRequired"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"actualSize"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"maxAllowedSize"`; `type`: `"uint256"`; \}\]; `name`: `"ExtraDataTooLarge"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}\]; `name`: `"FilBeamServiceNotConfigured"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"enum ServiceProviderRegistryStorage.ProductType"`; `name`: `"productType"`; `type`: `"uint8"`; \}\]; `name`: `"InsufficientCapabilitiesForProduct"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"payer"`; `type`: `"address"`; \}, \{ `internalType`: `"address"`; `name`: `"operator"`; `type`: `"address"`; \}, \{ `internalType`: `"uint256"`; `name`: `"lockupAllowance"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"lockupUsage"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"minimumLockupRequired"`; `type`: `"uint256"`; \}\]; `name`: `"InsufficientLockupAllowance"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"payer"`; `type`: `"address"`; \}, \{ `internalType`: `"uint256"`; `name`: `"minimumRequired"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"available"`; `type`: `"uint256"`; \}\]; `name`: `"InsufficientLockupFunds"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"payer"`; `type`: `"address"`; \}, \{ `internalType`: `"address"`; `name`: `"operator"`; `type`: `"address"`; \}, \{ `internalType`: `"uint256"`; `name`: `"maxLockupPeriod"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"requiredLockupPeriod"`; `type`: `"uint256"`; \}\]; `name`: `"InsufficientMaxLockupPeriod"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"payer"`; `type`: `"address"`; \}, \{ `internalType`: `"address"`; `name`: `"operator"`; `type`: `"address"`; \}, \{ `internalType`: `"uint256"`; `name`: `"rateAllowance"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"rateUsage"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"minimumRateRequired"`; `type`: `"uint256"`; \}\]; `name`: `"InsufficientRateAllowance"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"minExpected"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"actual"`; `type`: `"uint256"`; \}\]; `name`: `"InvalidChallengeCount"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"minAllowed"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"maxAllowed"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"actual"`; `type`: `"uint256"`; \}\]; `name`: `"InvalidChallengeEpoch"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"maxProvingPeriod"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"challengeWindowSize"`; `type`: `"uint256"`; \}\]; `name`: `"InvalidChallengeWindowSize"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}\]; `name`: `"InvalidDataSetId"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"fromEpoch"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"toEpoch"`; `type`: `"uint256"`; \}\]; `name`: `"InvalidEpochRange"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"length"`; `type`: `"uint256"`; \}\]; `name`: `"InvalidServiceDescriptionLength"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"length"`; `type`: `"uint256"`; \}\]; `name`: `"InvalidServiceNameLength"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"expected"`; `type`: `"address"`; \}, \{ `internalType`: `"address"`; `name`: `"actual"`; `type`: `"address"`; \}\]; `name`: `"InvalidSignature"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"expectedLength"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"actualLength"`; `type`: `"uint256"`; \}\]; `name`: `"InvalidSignatureLength"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}\]; `name`: `"InvalidTopUpAmount"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\]; `name`: `"MaxProvingPeriodZero"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"metadataArrayCount"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"pieceCount"`; `type`: `"uint256"`; \}\]; `name`: `"MetadataArrayCountMismatch"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"keysLength"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"valuesLength"`; `type`: `"uint256"`; \}\]; `name`: `"MetadataKeyAndValueLengthMismatch"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"index"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"maxAllowed"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"length"`; `type`: `"uint256"`; \}\]; `name`: `"MetadataKeyExceedsMaxLength"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"index"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"maxAllowed"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"length"`; `type`: `"uint256"`; \}\]; `name`: `"MetadataValueExceedsMaxLength"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"periodDeadline"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"nowBlock"`; `type`: `"uint256"`; \}\]; `name`: `"NextProvingPeriodAlreadyCalled"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}\]; `name`: `"NoPDPPaymentRail"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"address"`; `name`: `"expected"`; `type`: `"address"`; \}, \{ `internalType`: `"address"`; `name`: `"actual"`; `type`: `"address"`; \}\]; `name`: `"OldServiceProviderMismatch"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"expected"`; `type`: `"address"`; \}, \{ `internalType`: `"address"`; `name`: `"actual"`; `type`: `"address"`; \}\]; `name`: `"OnlyFilBeamControllerAllowed"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"expected"`; `type`: `"address"`; \}, \{ `internalType`: `"address"`; `name`: `"actual"`; `type`: `"address"`; \}\]; `name`: `"OnlyPDPVerifierAllowed"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"expected"`; `type`: `"address"`; \}, \{ `internalType`: `"address"`; `name`: `"actual"`; `type`: `"address"`; \}\]; `name`: `"OnlySelf"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"payer"`; `type`: `"address"`; \}, \{ `internalType`: `"address"`; `name`: `"operator"`; `type`: `"address"`; \}\]; `name`: `"OperatorNotApproved"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"pdpEndEpoch"`; `type`: `"uint256"`; \}\]; `name`: `"PaymentRailsNotFinalized"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"enum Errors.PriceType"`; `name`: `"priceType"`; `type`: `"uint8"`; \}, \{ `internalType`: `"uint256"`; `name`: `"maxAllowed"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"actual"`; `type`: `"uint256"`; \}\]; `name`: `"PriceExceedsMaximum"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}\]; `name`: `"ProofAlreadySubmitted"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}\]; `name`: `"ProviderAlreadyApproved"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"providerId"`; `type`: `"uint256"`; \}\]; `name`: `"ProviderNotInApprovedList"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"address"`; `name`: `"provider"`; `type`: `"address"`; \}\]; `name`: `"ProviderNotRegistered"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}\]; `name`: `"ProvingNotStarted"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}\]; `name`: `"ProvingPeriodNotInitialized"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"dataSetId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"deadline"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"nowBlock"`; `type`: `"uint256"`; \}\]; `name`: `"ProvingPeriodPassed"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"railId"`; `type`: `"uint256"`; \}\]; `name`: `"RailNotAssociated"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"railId"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"settledUpTo"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"endEpoch"`; `type`: `"uint256"`; \}\]; `name`: `"RailNotFullySettled"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\]; `name`: `"ServiceContractMustTerminateRail"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint256"`; `name`: `"maxAllowed"`; `type`: `"uint256"`; \}, \{ `internalType`: `"uint256"`; `name`: `"keysLength"`; `type`: `"uint256"`; \}\]; `name`: `"TooManyMetadataKeys"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"uint8"`; `name`: `"v"`; `type`: `"uint8"`; \}\]; `name`: `"UnsupportedSignatureV"`; `type`: `"error"`; \}, \{ `inputs`: readonly \[\{ `internalType`: `"enum Errors.AddressField"`; `name`: `"field"`; `type`: `"uint8"`; \}\]; `name`: `"ZeroAddress"`; `type`: `"error"`; \}\] = `chain.contracts.serviceProviderRegistry.abi`

### address

> **address**: `` `0x${string}` ``

### args

> **args**: \[`number`, `string`[], readonly `` `0x${string}` ``[]\]

### functionName

> **functionName**: `"addProduct"` = `'addProduct'`

## Throws

Errors [addProductCall.ErrorType](/reference/filoz/synapse-core/sp-registry/namespaces/addproductcall/type-aliases/errortype/)

## Example

```ts
import { addProductCall } from '@filoz/synapse-core/sp-registry'
import { createWalletClient, http, parseEther } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { simulateContract } from 'viem/actions'
import { calibration } from '@filoz/synapse-core/chains'
import { encodePDPCapabilities } from '@filoz/synapse-core/utils/pdp-capabilities'

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

const pdpOffering = {
  serviceURL: 'https://provider.example.com',
  minPieceSizeInBytes: 1024n,
  maxPieceSizeInBytes: 1073741824n,
  storagePricePerTibPerDay: parseEther('0.1'),
  minProvingPeriodInEpochs: 2880n,
  location: 'us-east',
  paymentTokenAddress: '0x0000000000000000000000000000000000000000' as const,
}

const [capabilityKeys, capabilityValues] = encodePDPCapabilities(pdpOffering)

const { request } = await simulateContract(client, addProductCall({
  chain: calibration,
  productType: 0,
  capabilityKeys,
  capabilityValues,
}))

console.log(request)
```