WarmStorageService
Defined in: packages/synapse-sdk/src/warm-storage/service.ts:98
Methods
Section titled “Methods”addApprovedProvider()
Section titled “addApprovedProvider()”addApprovedProvider(signer, providerId): Promise<TransactionResponse>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:980
Add an approved provider by ID (owner only)
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
signer | Signer | Signer with owner permissions |
providerId | number | Provider ID from registry |
Returns
Section titled “Returns”Promise<TransactionResponse>
Transaction response
calculateStorageCost()
Section titled “calculateStorageCost()”calculateStorageCost(sizeInBytes): Promise<{ perDay: bigint; perEpoch: bigint; perMonth: bigint; withCDN: { perDay: bigint; perEpoch: bigint; perMonth: bigint; };}>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:728
Calculate storage costs for a given size
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
sizeInBytes | number | Size of data to store in bytes |
Returns
Section titled “Returns”Promise<{
perDay: bigint;
perEpoch: bigint;
perMonth: bigint;
withCDN: {
perDay: bigint;
perEpoch: bigint;
perMonth: bigint;
};
}>
Cost estimates per epoch, day, and month
Remarks
Section titled “Remarks”CDN costs are usage-based (egress pricing), so withCDN field reflects base storage cost only
checkAllowanceForStorage()
Section titled “checkAllowanceForStorage()”checkAllowanceForStorage( sizeInBytes, withCDN, paymentsService, lockupDays?): Promise<{ costs: { perDay: bigint; perEpoch: bigint; perMonth: bigint; }; currentLockupAllowance: bigint; currentLockupUsed: bigint; currentRateAllowance: bigint; currentRateUsed: bigint; depositAmountNeeded: bigint; lockupAllowanceNeeded: bigint; message?: string; rateAllowanceNeeded: bigint; sufficient: boolean;}>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:768
Check if user has sufficient allowances for a storage operation and calculate costs
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
sizeInBytes | number | Size of data to store |
withCDN | boolean | Whether CDN is enabled |
paymentsService | PaymentsService | PaymentsService instance to check allowances |
lockupDays? | number | Number of days for lockup period (defaults to 10) |
Returns
Section titled “Returns”Promise<{
costs: {
perDay: bigint;
perEpoch: bigint;
perMonth: bigint;
};
currentLockupAllowance: bigint;
currentLockupUsed: bigint;
currentRateAllowance: bigint;
currentRateUsed: bigint;
depositAmountNeeded: bigint;
lockupAllowanceNeeded: bigint;
message?: string;
rateAllowanceNeeded: bigint;
sufficient: boolean;
}>
Allowance requirement details and storage costs
getApprovedProviderIds()
Section titled “getApprovedProviderIds()”getApprovedProviderIds(): Promise<number[]>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:1012
Get list of approved provider IDs
Returns
Section titled “Returns”Promise<number[]>
Array of approved provider IDs
getChallengeWindow()
Section titled “getChallengeWindow()”getChallengeWindow(): Promise<number>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:1064
Get the challenge window size from the WarmStorage contract
Returns
Section titled “Returns”Promise<number>
Challenge window size in epochs
getClientDataSets()
Section titled “getClientDataSets()”getClientDataSets(clientAddress): Promise<DataSetInfo[]>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:311
Get all data sets for a specific client
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
clientAddress | string | The client address |
Returns
Section titled “Returns”Array of data set information
getClientDataSetsWithDetails()
Section titled “getClientDataSetsWithDetails()”getClientDataSetsWithDetails(client, onlyManaged): Promise<EnhancedDataSetInfo[]>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:341
Get all data sets for a client with enhanced details This includes live status and management information
Parameters
Section titled “Parameters”| Parameter | Type | Default value | Description |
|---|---|---|---|
client | string | undefined | The client address |
onlyManaged | boolean | false | If true, only return data sets managed by this Warm Storage contract |
Returns
Section titled “Returns”Promise<EnhancedDataSetInfo[]>
Array of enhanced data set information
getComprehensiveDataSetStatus()
Section titled “getComprehensiveDataSetStatus()”getComprehensiveDataSetStatus(txHashOrTransaction, pdpServer?): Promise<ComprehensiveDataSetStatus>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:520
Get comprehensive data set creation status combining server and chain info
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
txHashOrTransaction | string | TransactionResponse | Transaction hash or transaction object |
pdpServer? | PDPServer | PDP server instance for status checks |
Returns
Section titled “Returns”Promise<ComprehensiveDataSetStatus>
Combined status information
getDataSet()
Section titled “getDataSet()”getDataSet(dataSetId): Promise<DataSetInfo>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:282
Get a single data set by ID
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
dataSetId | number | The data set ID to retrieve |
Returns
Section titled “Returns”Data set information
Throws
Section titled “Throws”Error if data set doesn’t exist
getDataSetMetadata()
Section titled “getDataSetMetadata()”getDataSetMetadata(dataSetId): Promise<Record<string, string>>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:648
Get all metadata for a data set
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
dataSetId | number | The data set ID |
Returns
Section titled “Returns”Promise<Record<string, string>>
Object with metadata key-value pairs
getDataSetMetadataByKey()
Section titled “getDataSetMetadataByKey()”getDataSetMetadataByKey(dataSetId, key): Promise<string | null>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:666
Get specific metadata key for a data set
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
dataSetId | number | The data set ID |
key | string | The metadata key to retrieve |
Returns
Section titled “Returns”Promise<string | null>
The metadata value if it exists, null otherwise
getMaxProvingPeriod()
Section titled “getMaxProvingPeriod()”getMaxProvingPeriod(): Promise<number>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:1054
Get the maximum proving period from the WarmStorage contract
Returns
Section titled “Returns”Promise<number>
Maximum proving period in epochs
getOwner()
Section titled “getOwner()”getOwner(): Promise<string>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:1032
Get the contract owner address
Returns
Section titled “Returns”Promise<string>
Owner address
getPaymentsAddress()
Section titled “getPaymentsAddress()”getPaymentsAddress(): string;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:210
Returns
Section titled “Returns”string
getPDPVerifierAddress()
Section titled “getPDPVerifierAddress()”getPDPVerifierAddress(): string;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:206
Returns
Section titled “Returns”string
getPieceMetadata()
Section titled “getPieceMetadata()”getPieceMetadata(dataSetId, pieceId): Promise<Record<string, string>>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:678
Get all metadata for a piece in a data set
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
dataSetId | number | The data set ID |
pieceId | number | The piece ID |
Returns
Section titled “Returns”Promise<Record<string, string>>
Object with metadata key-value pairs
getPieceMetadataByKey()
Section titled “getPieceMetadataByKey()”getPieceMetadataByKey( dataSetId, pieceId,key): Promise<string | null>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:697
Get specific metadata key for a piece in a data set
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
dataSetId | number | The data set ID |
pieceId | number | The piece ID |
key | string | The metadata key to retrieve |
Returns
Section titled “Returns”Promise<string | null>
The metadata value if it exists, null otherwise
getProvider()
Section titled “getProvider()”getProvider(): Provider;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:234
Get the provider instance
Returns
Section titled “Returns”Provider
The ethers provider
getServicePrice()
Section titled “getServicePrice()”getServicePrice(): Promise<ServicePriceInfo>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:709
Get the current service price per TiB per month
Returns
Section titled “Returns”Promise<ServicePriceInfo>
Service price information for both CDN and non-CDN options
getServiceProviderRegistryAddress()
Section titled “getServiceProviderRegistryAddress()”getServiceProviderRegistryAddress(): string;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:222
Returns
Section titled “Returns”string
getSessionKeyRegistryAddress()
Section titled “getSessionKeyRegistryAddress()”getSessionKeyRegistryAddress(): string;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:226
Returns
Section titled “Returns”string
getUSDFCTokenAddress()
Section titled “getUSDFCTokenAddress()”getUSDFCTokenAddress(): string;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:214
Returns
Section titled “Returns”string
getViewContractAddress()
Section titled “getViewContractAddress()”getViewContractAddress(): string;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:218
Returns
Section titled “Returns”string
isOwner()
Section titled “isOwner()”isOwner(signer): Promise<boolean>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:1042
Check if a signer is the contract owner
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
signer | Signer | Signer to check |
Returns
Section titled “Returns”Promise<boolean>
Whether the signer is the owner
isProviderIdApproved()
Section titled “isProviderIdApproved()”isProviderIdApproved(providerId): Promise<boolean>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:1023
Check if a provider ID is approved
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
providerId | number | Provider ID to check |
Returns
Section titled “Returns”Promise<boolean>
Whether the provider is approved
prepareStorageUpload()
Section titled “prepareStorageUpload()”prepareStorageUpload(options, paymentsService): Promise<{ actions: object[]; allowanceCheck: { message?: string; sufficient: boolean; }; estimatedCost: { perDay: bigint; perEpoch: bigint; perMonth: bigint; };}>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:876
Prepare for storage upload by checking balances and allowances
This method performs a comprehensive check of the prerequisites for storage upload, including verifying sufficient funds and service allowances. It returns a list of actions that need to be executed before the upload can proceed.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
options | { dataSize: number; withCDN?: boolean; } | Configuration options for the storage upload |
options.dataSize | number | Size of data to store in bytes |
options.withCDN? | boolean | Whether to enable CDN for faster retrieval (optional, defaults to false) |
paymentsService | PaymentsService | Instance of PaymentsService for handling payment operations |
Returns
Section titled “Returns”Promise<{
actions: object[];
allowanceCheck: {
message?: string;
sufficient: boolean;
};
estimatedCost: {
perDay: bigint;
perEpoch: bigint;
perMonth: bigint;
};
}>
Object containing:
- estimatedCost: Breakdown of storage costs (per epoch, day, and month)
- allowanceCheck: Status of service allowances with optional message
- actions: Array of required actions (deposit, approveService) that need to be executed
Example
Section titled “Example”const prep = await warmStorageService.prepareStorageUpload( { dataSize: Number(SIZE_CONSTANTS.GiB), withCDN: true }, paymentsService)
if (prep.actions.length > 0) { for (const action of prep.actions) { console.log(`Executing: ${action.description}`) await action.execute() }}removeApprovedProvider()
Section titled “removeApprovedProvider()”removeApprovedProvider(signer, providerId): Promise<TransactionResponse>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:992
Remove an approved provider by ID (owner only)
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
signer | Signer | Signer with owner permissions |
providerId | number | Provider ID from registry |
Returns
Section titled “Returns”Promise<TransactionResponse>
Transaction response
terminateDataSet()
Section titled “terminateDataSet()”terminateDataSet(signer, dataSetId): Promise<TransactionResponse>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:966
Terminate a data set with given ID
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
signer | Signer | Signer which created this dataset |
dataSetId | number | ID of the data set to terminate |
Returns
Section titled “Returns”Promise<TransactionResponse>
Transaction receipt
topUpCDNPaymentRails()
Section titled “topUpCDNPaymentRails()”topUpCDNPaymentRails( signer, dataSetId, cdnAmountToAdd,cacheMissAmountToAdd): Promise<TransactionResponse>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:1080
Increments the fixed locked-up amounts for CDN payment rails.
This method tops up the prepaid balance for CDN services by adding to the existing lockup amounts. Both CDN and cache miss rails can be incremented independently.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
signer | Signer | - |
dataSetId | number | The ID of the data set |
cdnAmountToAdd | bigint | Amount to add to the CDN rail lockup |
cacheMissAmountToAdd | bigint | Amount to add to the cache miss rail lockup |
Returns
Section titled “Returns”Promise<TransactionResponse>
Transaction response
validateDataSet()
Section titled “validateDataSet()”validateDataSet(dataSetId): Promise<void>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:408
Validate that a dataset is live and managed by this WarmStorage contract
Performs validation checks in parallel:
- Dataset exists and is live
- Dataset is managed by this WarmStorage contract
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
dataSetId | number | The PDPVerifier data set ID |
Returns
Section titled “Returns”Promise<void>
Throws
Section titled “Throws”if dataset is not valid for operations
verifyDataSetCreation()
Section titled “verifyDataSetCreation()”verifyDataSetCreation(txHashOrTransaction): Promise<DataSetCreationVerification>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:438
Verify that a data set creation transaction was successful This checks both the transaction status and on-chain data set state
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
txHashOrTransaction | string | TransactionResponse | Transaction hash or transaction object |
Returns
Section titled “Returns”Promise<DataSetCreationVerification>
Verification result with data set ID if found
waitForDataSetCreationWithStatus()
Section titled “waitForDataSetCreationWithStatus()”waitForDataSetCreationWithStatus( txHashOrTransaction, pdpServer, maxWaitTime, pollInterval,onProgress?): Promise<ComprehensiveDataSetStatus>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:599
Wait for data set creation with status updates
Parameters
Section titled “Parameters”| Parameter | Type | Default value | Description |
|---|---|---|---|
txHashOrTransaction | string | TransactionResponse | undefined | Transaction hash or transaction object to wait for |
pdpServer | PDPServer | undefined | PDP server for status checks |
maxWaitTime | number | TIMING_CONSTANTS.DATA_SET_CREATION_TIMEOUT_MS | Maximum time to wait in milliseconds |
pollInterval | number | TIMING_CONSTANTS.DATA_SET_CREATION_POLL_INTERVAL_MS | Polling interval in milliseconds |
onProgress? | (status, elapsedMs) => Promise<void> | undefined | Optional progress callback |
Returns
Section titled “Returns”Promise<ComprehensiveDataSetStatus>
Final comprehensive status
create()
Section titled “create()”static create(provider, warmStorageAddress): Promise<WarmStorageService>;Defined in: packages/synapse-sdk/src/warm-storage/service.ts:140
Create a new WarmStorageService instance with initialized addresses
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
provider | Provider |
warmStorageAddress | string |
Returns
Section titled “Returns”Promise<WarmStorageService>