# StorageManager

Defined in: [packages/synapse-sdk/src/storage/manager.ts:95](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/storage/manager.ts#L95)

## Constructors

### Constructor

```ts
new StorageManager(
   synapse, 
   warmStorageService, 
   pieceRetriever, 
   withCDN, 
   dev, 
   withIpni?): StorageManager;
```

Defined in: [packages/synapse-sdk/src/storage/manager.ts:104](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/storage/manager.ts#L104)

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `synapse` | [`Synapse`](/reference/filoz/synapse-sdk/synapse/classes/synapse/) |
| `warmStorageService` | [`WarmStorageService`](/reference/filoz/synapse-sdk/warmstorage/classes/warmstorageservice/) |
| `pieceRetriever` | [`PieceRetriever`](/reference/filoz/synapse-sdk/synapse/interfaces/pieceretriever/) |
| `withCDN` | `boolean` |
| `dev` | `boolean` |
| `withIpni?` | `boolean` |

#### Returns

`StorageManager`

## Methods

### createContext()

```ts
createContext(options?): Promise<StorageContext>;
```

Defined in: [packages/synapse-sdk/src/storage/manager.ts:395](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/storage/manager.ts#L395)

Create a new storage context with specified options

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `options?` | [`StorageServiceOptions`](/reference/filoz/synapse-sdk/synapse/interfaces/storageserviceoptions/) |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`StorageContext`](/reference/filoz/synapse-sdk/storage/classes/storagecontext/)\>

***

### createContexts()

```ts
createContexts(options?): Promise<StorageContext[]>;
```

Defined in: [packages/synapse-sdk/src/storage/manager.ts:332](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/storage/manager.ts#L332)

Creates storage contexts for multi-provider storage deals and other operations.

By storing data with multiple independent providers, you reduce dependency on any
single provider and improve overall data availability. Use contexts together as a group.

Contexts are selected by priority:
1. Specified datasets (`dataSetIds`) - uses their existing providers
2. Specified providers (`providerIds` or `providerAddresses`) - finds or creates matching datasets
3. Automatically selected from remaining approved providers

For automatic selection, existing datasets matching the `metadata` are reused unless
`forceCreateDataSets` is true. Providers are randomly chosen to distribute across the network.

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `options?` | [`CreateContextsOptions`](/reference/filoz/synapse-sdk/synapse/interfaces/createcontextsoptions/) | Configuration options |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`StorageContext`](/reference/filoz/synapse-sdk/storage/classes/storagecontext/)[]\>

Promise resolving to array of storage contexts

***

### download()

```ts
download(pieceCid, options?): Promise<Uint8Array<ArrayBufferLike>>;
```

Defined in: [packages/synapse-sdk/src/storage/manager.ts:224](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/storage/manager.ts#L224)

Download data from storage
If context is provided, routes to context.download()
Otherwise performs SP-agnostic download

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `pieceCid` | `string` \| `PieceLink` |
| `options?` | `StorageManagerDownloadOptions` |

#### 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`\>\>

***

### findDataSets()

```ts
findDataSets(clientAddress?): Promise<EnhancedDataSetInfo[]>;
```

Defined in: [packages/synapse-sdk/src/storage/manager.ts:473](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/storage/manager.ts#L473)

Query data sets for this client

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `clientAddress?` | `string` | Optional client address, defaults to current signer |

#### Returns

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

Array of enhanced data set information including management status

***

### getDefaultContext()

```ts
getDefaultContext(): Promise<StorageContext>;
```

Defined in: [packages/synapse-sdk/src/storage/manager.ts:464](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/storage/manager.ts#L464)

Get or create the default context

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`StorageContext`](/reference/filoz/synapse-sdk/storage/classes/storagecontext/)\>

***

### getStorageInfo()

```ts
getStorageInfo(): Promise<StorageInfo>;
```

Defined in: [packages/synapse-sdk/src/storage/manager.ts:493](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/storage/manager.ts#L493)

Get comprehensive information about the storage service including
approved providers, pricing, contract addresses, and current allowances

#### Returns

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

Complete storage service information

***

### preflightUpload()

```ts
preflightUpload(size, options?): Promise<PreflightInfo>;
```

Defined in: [packages/synapse-sdk/src/storage/manager.ts:285](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/storage/manager.ts#L285)

Run preflight checks for an upload without creating a context

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `size` | `number` | The size of data to upload in bytes |
| `options?` | \{ `metadata?`: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `string`\>; `withCDN?`: `boolean`; \} | Optional settings including withCDN flag and/or metadata |
| `options.metadata?` | [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `string`\> | - |
| `options.withCDN?` | `boolean` | - |

#### 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

***

### terminateDataSet()

```ts
terminateDataSet(dataSetId): Promise<TransactionResponse>;
```

Defined in: [packages/synapse-sdk/src/storage/manager.ts:484](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/storage/manager.ts#L484)

Terminate a data set with given ID that belongs to the synapse signer.
This will also result in the removal of all pieces in the data set.

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `dataSetId` | `number` | The ID of the data set to terminate |

#### Returns

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

Transaction response

***

### upload()

```ts
upload(data, options?): Promise<UploadResult>;
```

Defined in: [packages/synapse-sdk/src/storage/manager.ts:132](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/storage/manager.ts#L132)

Upload data to storage
Uses the storage contexts or context provided in the options
Otherwise creates/reuses default context

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

Note: Multi-context uploads (uploading to multiple providers simultaneously) currently
only support Uint8Array. For streaming uploads with multiple contexts, convert your
stream to Uint8Array first or use stream forking (future feature).

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `data` | \| [`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<`ArrayBufferLike`\> \| `ReadableStream`\<[`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<`ArrayBufferLike`\>\> |
| `options?` | `StorageManagerUploadOptions` |

#### Returns

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