# StorageContext

Defined in: [packages/synapse-sdk/src/storage/context.ts:68](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L68)

## Constructors

### Constructor

> **new StorageContext**(`synapse`, `warmStorageService`, `provider`, `dataSetId`, `options`, `dataSetMetadata`): `StorageContext`

Defined in: [packages/synapse-sdk/src/storage/context.ts:170](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L170)

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `synapse` | [`Synapse`](/reference/filoz/synapse-sdk/synapse/classes/synapse/) |
| `warmStorageService` | [`WarmStorageService`](/reference/filoz/synapse-sdk/warmstorage/classes/warmstorageservice/) |
| `provider` | [`PDPProvider`](/reference/filoz/synapse-sdk/synapse/interfaces/pdpprovider/) |
| `dataSetId` | `bigint` \| `undefined` |
| `options` | [`StorageServiceOptions`](/reference/filoz/synapse-sdk/synapse/interfaces/storageserviceoptions/) |
| `dataSetMetadata` | [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `string`\> |

#### Returns

`StorageContext`

## Properties

### serviceProvider

> `readonly` **serviceProvider**: `` `0x${string}` ``

Defined in: [packages/synapse-sdk/src/storage/context.ts:100](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L100)

## Accessors

### dataSetId

#### Get Signature

> **get** **dataSetId**(): `bigint` \| `undefined`

Defined in: [packages/synapse-sdk/src/storage/context.ts:117](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L117)

##### Returns

`bigint` \| `undefined`

***

### dataSetMetadata

#### Get Signature

> **get** **dataSetMetadata**(): [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `string`\>

Defined in: [packages/synapse-sdk/src/storage/context.ts:112](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L112)

##### Returns

[`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `string`\>

***

### provider

#### Get Signature

> **get** **provider**(): [`PDPProvider`](/reference/filoz/synapse-sdk/synapse/interfaces/pdpprovider/)

Defined in: [packages/synapse-sdk/src/storage/context.ts:107](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L107)

##### Returns

[`PDPProvider`](/reference/filoz/synapse-sdk/synapse/interfaces/pdpprovider/)

***

### withCDN

#### Get Signature

> **get** **withCDN**(): `boolean`

Defined in: [packages/synapse-sdk/src/storage/context.ts:103](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L103)

##### Returns

`boolean`

## Methods

### deletePiece()

> **deletePiece**(`piece`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`` `0x${string}` ``\>

Defined in: [packages/synapse-sdk/src/storage/context.ts:1287](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L1287)

Delete a piece with given CID from this data set

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `piece` | `string` \| `bigint` \| `PieceLink` | The PieceCID identifier or a piece number to delete by pieceID |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`` `0x${string}` ``\>

Transaction hash of the delete operation

***

### download()

> **download**(`pieceCid`, `options?`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<`ArrayBufferLike`\>\>

Defined in: [packages/synapse-sdk/src/storage/context.ts:1157](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L1157)

Download data from this specific service provider

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `pieceCid` | `string` \| `PieceLink` | The PieceCID identifier |
| `options?` | [`DownloadOptions`](/reference/filoz/synapse-sdk/synapse/type-aliases/downloadoptions/) | Download options |

#### Returns

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

The downloaded data

***

### ~~getDataSetPieces()~~

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

Defined in: [packages/synapse-sdk/src/storage/context.ts:1189](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L1189)

Get the list of piece CIDs for this service service's data set.

:::caution[Deprecated]
  Use getPieces() generator for better memory efficiency with large data sets
  :::

#### Returns

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

Array of piece CIDs as PieceCID objects

***

### getPieces()

> **getPieces**(`options?`): [`AsyncGenerator`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/AsyncGenerator)\<[`PieceRecord`](/reference/filoz/synapse-sdk/synapse/interfaces/piecerecord/)\>

Defined in: [packages/synapse-sdk/src/storage/context.ts:1229](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L1229)

Get all active pieces for this data set as an async generator.
This provides lazy evaluation and better memory efficiency for large data sets.

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `options?` | \{ `batchSize?`: `bigint`; `signal?`: [`AbortSignal`](https://developer.mozilla.org/docs/Web/API/AbortSignal); \} | Optional configuration object |
| `options.batchSize?` | `bigint` | The batch size for each pagination call (default: 100) |
| `options.signal?` | [`AbortSignal`](https://developer.mozilla.org/docs/Web/API/AbortSignal) | Optional AbortSignal to cancel the operation |

#### Returns

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

#### Yields

Object with pieceCid and pieceId - the piece ID is needed for certain operations like deletion

***

### getProviderInfo()

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

Defined in: [packages/synapse-sdk/src/storage/context.ts:1180](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L1180)

Get information about the service provider used by this service

#### Returns

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

Provider information including pricing (currently same for all providers)

***

### getScheduledRemovals()

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

Defined in: [packages/synapse-sdk/src/storage/context.ts:1205](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L1205)

Get pieces scheduled for removal from this data set

#### Returns

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

Array of piece IDs scheduled for removal

***

### hasPiece()

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

Defined in: [packages/synapse-sdk/src/storage/context.ts:1309](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L1309)

Check if a piece exists on this service provider.

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `pieceCid` | `string` \| `PieceLink` | The PieceCID (piece CID) to check |

#### Returns

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

True if the piece exists on this provider, false otherwise

***

### pieceStatus()

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

Defined in: [packages/synapse-sdk/src/storage/context.ts:1338](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L1338)

Check if a piece exists on this service provider and get its proof status.
Also returns timing information about when the piece was last proven and when the next
proof is due.

Note: Proofs are submitted for entire data sets, not individual pieces. The timing information
returned reflects when the data set (containing this piece) was last proven and when the next
proof is due.

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `pieceCid` | `string` \| `PieceLink` | The PieceCID (piece CID) to check |

#### Returns

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

Status information including existence, data set timing, and retrieval URL

***

### preflightUpload()

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

Defined in: [packages/synapse-sdk/src/storage/context.ts:884](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L884)

Run preflight checks for an upload

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `size` | `number` | The size of data to upload in bytes |

#### Returns

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

Preflight information including costs and allowances

***

### ~~providerDownload()~~

> **providerDownload**(`pieceCid`, `options?`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<`ArrayBufferLike`\>\>

Defined in: [packages/synapse-sdk/src/storage/context.ts:1171](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L1171)

Download data from the service provider

:::caution[Deprecated]
  Use download() instead. This method will be removed in a future version.
  :::

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `pieceCid` | `string` \| `PieceLink` |
| `options?` | [`DownloadOptions`](/reference/filoz/synapse-sdk/synapse/type-aliases/downloadoptions/) |

#### Returns

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

***

### terminate()

> **terminate**(): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`` `0x${string}` ``\>

Defined in: [packages/synapse-sdk/src/storage/context.ts:1457](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L1457)

Terminates the data set by sending on-chain message.
This will also result in the removal of all pieces in the data set.

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`` `0x${string}` ``\>

Transaction response

***

### upload()

> **upload**(`data`, `options?`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`UploadResult`](/reference/filoz/synapse-sdk/synapse/interfaces/uploadresult/)\>

Defined in: [packages/synapse-sdk/src/storage/context.ts:907](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L907)

Upload data to the service provider

Accepts Uint8Array or ReadableStream<Uint8Array>.
For large files, prefer streaming to minimize memory usage.

Note: When uploading to multiple contexts, pieceCid should be pre-calculated and passed in options
to avoid redundant computation. For streaming uploads, pieceCid must be provided in options as it
cannot be calculated without consuming the stream.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `data` | [`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<`ArrayBufferLike`\> \| [`ReadableStream`](https://developer.mozilla.org/docs/Web/API/ReadableStream)\<[`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<`ArrayBufferLike`\>\> |
| `options?` | [`UploadOptions`](/reference/filoz/synapse-sdk/synapse/interfaces/uploadoptions/) |

#### Returns

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

***

### create()

> `static` **create**(`synapse`, `warmStorageService`, `options`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`StorageContext`\>

Defined in: [packages/synapse-sdk/src/storage/context.ts:290](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L290)

Static factory method to create a StorageContext
Handles provider selection and data set selection/creation

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `synapse` | [`Synapse`](/reference/filoz/synapse-sdk/synapse/classes/synapse/) |
| `warmStorageService` | [`WarmStorageService`](/reference/filoz/synapse-sdk/warmstorage/classes/warmstorageservice/) |
| `options` | [`StorageServiceOptions`](/reference/filoz/synapse-sdk/synapse/interfaces/storageserviceoptions/) |

#### Returns

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

***

### createContexts()

> `static` **createContexts**(`synapse`, `warmStorageService`, `options`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`StorageContext`[]\>

Defined in: [packages/synapse-sdk/src/storage/context.ts:202](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L202)

Creates new storage contexts with specified options
Each context corresponds to a different data set

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `synapse` | [`Synapse`](/reference/filoz/synapse-sdk/synapse/classes/synapse/) |
| `warmStorageService` | [`WarmStorageService`](/reference/filoz/synapse-sdk/warmstorage/classes/warmstorageservice/) |
| `options` | [`CreateContextsOptions`](/reference/filoz/synapse-sdk/synapse/interfaces/createcontextsoptions/) |

#### Returns

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

***

### performPreflightCheck()

> `static` **performPreflightCheck**(`warmStorageService`, `paymentsService`, `size`, `withCDN`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`PreflightInfo`](/reference/filoz/synapse-sdk/synapse/interfaces/preflightinfo/)\>

Defined in: [packages/synapse-sdk/src/storage/context.ts:851](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/storage/context.ts#L851)

Static method to perform preflight checks for an upload

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `warmStorageService` | [`WarmStorageService`](/reference/filoz/synapse-sdk/warmstorage/classes/warmstorageservice/) | WarmStorageService instance |
| `paymentsService` | [`PaymentsService`](/reference/filoz/synapse-sdk/payments/classes/paymentsservice/) | PaymentsService instance |
| `size` | `number` | The size of data to upload in bytes |
| `withCDN` | `boolean` | Whether CDN is enabled |

#### Returns

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

Preflight check results without provider/dataSet specifics