# StorageContext

Defined in: [packages/synapse-sdk/src/storage/context.ts:82](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L82)

## Constructors

### Constructor

> **new StorageContext**(`options`): `StorageContext`

Defined in: [packages/synapse-sdk/src/storage/context.ts:192](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L192)

Creates a new StorageContext

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `options` | [`StorageContextOptions`](/reference/filoz/synapse-sdk/storage/interfaces/storagecontextoptions/) | The options for the StorageContext [StorageContextOptions](/reference/filoz/synapse-sdk/storage/interfaces/storagecontextoptions/) |

#### Returns

`StorageContext`

## Properties

### serviceProvider

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

Defined in: [packages/synapse-sdk/src/storage/context.ts:113](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L113)

## Accessors

### dataSetId

#### Get Signature

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

Defined in: [packages/synapse-sdk/src/storage/context.ts:130](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L130)

##### 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:125](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L125)

##### 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:120](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L120)

##### Returns

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

***

### withCDN

#### Get Signature

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

Defined in: [packages/synapse-sdk/src/storage/context.ts:116](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L116)

##### Returns

`boolean`

## Methods

### deletePiece()

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

Defined in: [packages/synapse-sdk/src/storage/context.ts:1237](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L1237)

Delete a piece with given CID from this data set

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `options` | \{ `piece`: `string` \| `bigint` \| `PieceLink`; \} | Options for the delete operation |
| `options.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**(`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:1132](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L1132)

Download data from this specific service provider

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `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 [Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)

***

### 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:1182](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L1182)

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`; \} | Optional configuration object |
| `options.batchSize?` | `bigint` | The batch size for each pagination call (default: 100) |

#### 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:1159](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L1159)

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:1167](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L1167)

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**(`options`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`boolean`\>

Defined in: [packages/synapse-sdk/src/storage/context.ts:1262](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L1262)

Check if a piece exists on this service provider.

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `options` | \{ `pieceCid`: `string` \| `PieceLink`; \} | Options for the has piece operation |
| `options.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**(`options`): [`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:1293](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L1293)

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 |
| ------ | ------ | ------ |
| `options` | \{ `pieceCid`: `string` \| `PieceLink`; \} | Options for the piece status |
| `options.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**(`options`): [`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:896](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L896)

Run preflight checks for an upload

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `options` | \{ `size`: `number`; \} | Options for the preflight upload |
| `options.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

***

### 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:1413](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L1413)

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:918](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L918)

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` | [`UploadPieceStreamingData`](/reference/filoz/synapse-core/sp/type-aliases/uploadpiecestreamingdata/) |
| `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**(`options`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`StorageContext`\>

Defined in: [packages/synapse-sdk/src/storage/context.ts:296](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L296)

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

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `options` | [`StorageContextCreateOptions`](/reference/filoz/synapse-sdk/synapse/interfaces/storagecontextcreateoptions/) |

#### Returns

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

***

### createContexts()

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

Defined in: [packages/synapse-sdk/src/storage/context.ts:210](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L210)

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

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `options` | [`ContextCreateContextsOptions`](/reference/filoz/synapse-sdk/synapse/interfaces/contextcreatecontextsoptions/) |

#### Returns

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

***

### performPreflightCheck()

> `static` **performPreflightCheck**(`options`): [`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:861](https://github.com/FilOzone/synapse-sdk/blob/7fdc04df4e3c52366a9f0cd55da4c05e20b2ed82/packages/synapse-sdk/src/storage/context.ts#L861)

Static method to perform preflight checks for an upload

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `options` | \{ `size`: `number`; `warmStorageService`: [`WarmStorageService`](/reference/filoz/synapse-sdk/warmstorage/classes/warmstorageservice/); `withCDN`: `boolean`; \} | Options for the preflight check |
| `options.size` | `number` | The size of data to upload in bytes |
| `options.warmStorageService` | [`WarmStorageService`](/reference/filoz/synapse-sdk/warmstorage/classes/warmstorageservice/) | WarmStorageService instance |
| `options.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