# SPRegistryService

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:38](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L38)

## Constructors

### Constructor

> **new SPRegistryService**(`provider`, `registryAddress`, `multicall3Address`): `SPRegistryService`

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:47](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L47)

Constructor for SPRegistryService

#### Parameters

| Parameter | Type | Default value |
| ------ | ------ | ------ |
| `provider` | `Provider` | `undefined` |
| `registryAddress` | `string` | `undefined` |
| `multicall3Address` | `string` \| `null` | `null` |

#### Returns

`SPRegistryService`

## Methods

### activeProviderCount()

> **activeProviderCount**(): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`number`\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:319](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L319)

Get number of active providers

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`number`\>

Active provider count

***

### addPDPProduct()

> **addPDPProduct**(`signer`, `pdpOffering`, `capabilities`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`TransactionResponse`\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:334](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L334)

Add PDP product to provider

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `signer` | `Signer` | Provider's signer |
| `pdpOffering` | [`PDPOffering`](/reference/filoz/synapse-sdk/spregistry/interfaces/pdpoffering/) | PDP offering details |
| `capabilities` | [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `string`\> | Optional capability keys |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`TransactionResponse`\>

Transaction response

***

### getActiveProvidersByProductType()

> **getActiveProvidersByProductType**(`productType`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`ProviderInfo`](/reference/filoz/synapse-sdk/synapse/interfaces/providerinfo/)[]\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:256](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L256)

Get active providers by product type (handles pagination internally)

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `productType` | `0` | Product type to filter by |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`ProviderInfo`](/reference/filoz/synapse-sdk/synapse/interfaces/providerinfo/)[]\>

List of providers with specified product type

***

### getAllActiveProviders()

> **getAllActiveProviders**(): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`ProviderInfo`](/reference/filoz/synapse-sdk/synapse/interfaces/providerinfo/)[]\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:224](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L224)

Get all active providers (handles pagination internally)

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`ProviderInfo`](/reference/filoz/synapse-sdk/synapse/interfaces/providerinfo/)[]\>

List of all active providers

***

### getPDPService()

> **getPDPService**(`providerId`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`PDPServiceInfo`](/reference/filoz/synapse-sdk/spregistry/interfaces/pdpserviceinfo/) \| `null`\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:393](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L393)

Get PDP service info for a provider

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `providerId` | `bigint` | Provider ID |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`PDPServiceInfo`](/reference/filoz/synapse-sdk/spregistry/interfaces/pdpserviceinfo/) \| `null`\>

PDP service info or null if not found

***

### getProvider()

> **getProvider**(`providerId`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`ProviderInfo`](/reference/filoz/synapse-sdk/synapse/interfaces/providerinfo/) \| `null`\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:163](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L163)

Get provider information by ID

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `providerId` | `bigint` | Provider ID |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`ProviderInfo`](/reference/filoz/synapse-sdk/synapse/interfaces/providerinfo/) \| `null`\>

Provider info with decoded products

***

### getProviderByAddress()

> **getProviderByAddress**(`address`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`ProviderInfo`](/reference/filoz/synapse-sdk/synapse/interfaces/providerinfo/) \| `null`\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:190](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L190)

Get provider information by address

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `address` | `string` | Provider address |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`ProviderInfo`](/reference/filoz/synapse-sdk/synapse/interfaces/providerinfo/) \| `null`\>

Provider info with decoded products

***

### getProviderCount()

> **getProviderCount**(): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`number`\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:309](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L309)

Get total number of providers

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`number`\>

Total provider count

***

### getProviderIdByAddress()

> **getProviderIdByAddress**(`address`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`number`\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:214](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L214)

Get provider ID by address

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `address` | `string` | Provider address |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`number`\>

Provider ID (0 if not found)

***

### getProviders()

> **getProviders**(`providerIds`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`ProviderInfo`](/reference/filoz/synapse-sdk/synapse/interfaces/providerinfo/)[]\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:433](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L433)

Get multiple providers by IDs using Multicall3 for efficiency

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `providerIds` | `bigint`[] | Array of provider IDs |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`ProviderInfo`](/reference/filoz/synapse-sdk/synapse/interfaces/providerinfo/)[]\>

Array of provider info

***

### isProviderActive()

> **isProviderActive**(`providerId`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`boolean`\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:290](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L290)

Check if provider is active

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `providerId` | `number` | Provider ID |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`boolean`\>

Whether provider is active

***

### isRegisteredProvider()

> **isRegisteredProvider**(`address`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`boolean`\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:300](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L300)

Check if address is a registered provider

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `address` | `string` | Address to check |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`boolean`\>

Whether address is registered

***

### providerHasProduct()

> **providerHasProduct**(`providerId`, `productType`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`boolean`\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:421](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L421)

Check if provider has a specific product type

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `providerId` | `bigint` | Provider ID |
| `productType` | `0` | Product type to check |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`boolean`\>

Whether provider has the product

***

### registerProvider()

> **registerProvider**(`signer`, `info`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`TransactionResponse`\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:105](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L105)

Register as a new service provider with optional PDP product

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `signer` | `Signer` | Signer to register as provider |
| `info` | [`ProviderRegistrationInfo`](/reference/filoz/synapse-sdk/spregistry/interfaces/providerregistrationinfo/) | Provider registration information |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`TransactionResponse`\>

Transaction response containing the provider ID

#### Example

```typescript
const tx = await spRegistry.registerProvider(signer, {
  payee: '0x...', // Address that will receive payments
  name: 'My Storage Provider',
  description: 'High-performance storage service',
  pdpOffering: {
    serviceURL: 'https://provider.example.com',
    minPieceSizeInBytes: SIZE_CONSTANTS.KiB,
    maxPieceSizeInBytes: SIZE_CONSTANTS.GiB,
    // ... other PDP fields
  },
  capabilities: { 'region': 'us-east', 'tier': 'premium' }
})

// Wait for transaction and get provider ID from event
const receipt = await tx.wait()
const event = receipt.logs.find(log =>
  log.topics[0] === ethers.id('ProviderRegistered(uint256,address,address)')
)
const providerId = event ? parseInt(event.topics[1], 16) : null
```

***

### removeProduct()

> **removeProduct**(`signer`, `productType`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`TransactionResponse`\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:383](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L383)

Remove product from provider

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `signer` | `Signer` | Provider's signer |
| `productType` | `0` | Type of product to remove |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`TransactionResponse`\>

Transaction response

***

### removeProvider()

> **removeProvider**(`signer`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`TransactionResponse`\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:151](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L151)

Remove provider registration

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `signer` | `Signer` | Provider's signer |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`TransactionResponse`\>

Transaction response

***

### updatePDPProduct()

> **updatePDPProduct**(`signer`, `pdpOffering`, `capabilities`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`TransactionResponse`\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:359](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L359)

Update PDP product with capabilities

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `signer` | `Signer` | Provider's signer |
| `pdpOffering` | [`PDPOffering`](/reference/filoz/synapse-sdk/spregistry/interfaces/pdpoffering/) | Updated PDP offering |
| `capabilities` | [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `string`\> | Updated capability key-value pairs |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`TransactionResponse`\>

Transaction response

***

### updateProviderInfo()

> **updateProviderInfo**(`signer`, `name`, `description`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`TransactionResponse`\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:137](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L137)

Update provider information

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `signer` | `Signer` | Provider's signer |
| `name` | `string` | New name |
| `description` | `string` | New description |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`TransactionResponse`\>

Transaction response

***

### create()

> `static` **create**(`provider`, `registryAddress`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`SPRegistryService`\>

Defined in: [packages/synapse-sdk/src/sp-registry/service.ts:56](https://github.com/FilOzone/synapse-sdk/blob/6cf8b3ed2dd3ae76ed05cb86995d711a08a298a6/packages/synapse-sdk/src/sp-registry/service.ts#L56)

Create a new SPRegistryService instance

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `provider` | `Provider` |
| `registryAddress` | `string` |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`SPRegistryService`\>