# getUploadCosts

> **getUploadCosts**(`client`, `options`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`OutputType`](/reference/filoz/synapse-core/utils/namespaces/calculateuploadcosts/type-aliases/outputtype/)\>

Defined in: [packages/synapse-core/src/warm-storage/get-upload-costs.ts:55](https://github.com/FilOzone/synapse-sdk/blob/0c729dad461472f017e4d84f8e6ac16e6afbe7c0/packages/synapse-core/src/warm-storage/get-upload-costs.ts#L55)

Read-only function that computes upload costs, reserve-aware deposit needed,
and approval state.

Fetches account state, pricing, and approval via read-only contract calls,
then delegates all cost arithmetic to the shared pure
`calculateUploadCosts` utility. Existing-data-set calls must provide
`dataSetLeafCount` and `currentLifecycleReserveBalance`; pass
`pendingOneTimePayments` when the data set has unflushed lifecycle fees.

## Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `client` | `Client`\<`Transport`, `Chain`\> | The client to use to compute upload costs. |
| `options` | [`OptionsType`](/reference/filoz/synapse-core/warm-storage/namespaces/getuploadcosts/type-aliases/optionstype/) | [getUploadCosts.OptionsType](/reference/filoz/synapse-core/warm-storage/namespaces/getuploadcosts/type-aliases/optionstype/) |

## Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`OutputType`](/reference/filoz/synapse-core/utils/namespaces/calculateuploadcosts/type-aliases/outputtype/)\>

[getUploadCosts.OutputType](/reference/filoz/synapse-core/warm-storage/namespaces/getuploadcosts/type-aliases/outputtype/)

## Throws

ValidationError when existing-data-set state, leaf count, or piece sizes are invalid