# StarknetFees

Defined in: [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:33](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L33)

A module for starknet fee estimation

## Constructors

### Constructor

```
new StarknetFees(

   provider, 

   maxFeeRate, 

   feeMultiplier, 

   da): StarknetFees;
```

Defined in: [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:77](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L77)

Constructs a new Starknet fee module

#### Parameters

| Parameter       | Type                                                                                                                          | Default value | Description                                                                          |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------- | ------------- | ------------------------------------------------------------------------------------ |
| `provider`      | `Provider`                                                                                                                    | `undefined`   | A starknet.js provider to use for fee estimation                                     |
| `maxFeeRate`    | [`StarknetFeeRate`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-starknet/src/type-aliases/StarknetFeeRate.md) | `...`         | Fee rate limits in base units, defaults to L1: 20 PFri, L2: 4 PFri, L1 data: 10 PFri |
| `feeMultiplier` | `number`                                                                                                                      | `1.25`        | A multiplier to use for the returned fee rates                                       |
| `da`            | { `fee?`: `"L1"` \| `"L2"`; `nonce?`: `"L1"` \| `"L2"`; }                                                                     | `...`         | Data-availability mode - currently just L1                                           |
| `da.fee?`       | `"L1"` \| `"L2"`                                                                                                              | `undefined`   | -                                                                                    |
| `da.nonce?`     | `"L1"` \| `"L2"`                                                                                                              | `undefined`   | -                                                                                    |

#### Returns

`StarknetFees`

## Methods

### extractFromFeeRateString()

```
static extractFromFeeRateString(feeRate): StarknetFeeRate;
```

Defined in: [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:147](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L147)

A utility function for deserializing a stringified starknet fee rate to its constituent fees

#### Parameters

| Parameter | Type     | Description                                                   |
| --------- | -------- | ------------------------------------------------------------- |
| `feeRate` | `string` | Serialized fee rate in format: \[l1Gas],\[l2Gas],\[l1DataGas] |

#### Returns

[`StarknetFeeRate`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-starknet/src/type-aliases/StarknetFeeRate.md)

***

### getFeeDetails()

```
getFeeDetails(gas, feeRate): object;
```

Defined in: [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:179](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L179)

Returns transaction details that apply the corresponding gas limits and gas price to the transaction

#### Parameters

| Parameter | Type                                                                                                                  | Description                                                                                 |
| --------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| `gas`     | [`StarknetGas`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-starknet/src/type-aliases/StarknetGas.md) | Gas limits                                                                                  |
| `feeRate` | `string`                                                                                                              | Fee rate to use for the calculation, serialized as a string: \[l1Gas],\[l2Gas],\[l1DataGas] |

#### Returns

`object`

| Name                                            | Type             | Default value   | Defined in                                                                                                                                                                                                                |
| ----------------------------------------------- | ---------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `feeDataAvailabilityMode`                       | `"L1"` \| `"L2"` | -               | [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:194](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L194) |
| `nonceDataAvailabilityMode`                     | `"L1"` \| `"L2"` | -               | [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:193](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L193) |
| `paymasterData`                                 | `any`\[]         | `[]`            | [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:192](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L192) |
| `resourceBounds`                                | `object`         | -               | [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:186](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L186) |
| `resourceBounds.l1_data_gas`                    | `object`         | -               | [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:189](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L189) |
| `resourceBounds.l1_data_gas.max_amount`         | `bigint`         | -               | [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:189](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L189) |
| `resourceBounds.l1_data_gas.max_price_per_unit` | `bigint`         | `l1DataGasCost` | [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:189](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L189) |
| `resourceBounds.l1_gas`                         | `object`         | -               | [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:187](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L187) |
| `resourceBounds.l1_gas.max_amount`              | `bigint`         | -               | [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:187](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L187) |
| `resourceBounds.l1_gas.max_price_per_unit`      | `bigint`         | `l1GasCost`     | [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:187](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L187) |
| `resourceBounds.l2_gas`                         | `object`         | -               | [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:188](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L188) |
| `resourceBounds.l2_gas.max_amount`              | `bigint`         | -               | [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:188](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L188) |
| `resourceBounds.l2_gas.max_price_per_unit`      | `bigint`         | `l2GasCost`     | [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:188](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L188) |
| `tip`                                           | `bigint`         | `0n`            | [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:191](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L191) |
| `version`                                       | `"0x3"`          | -               | [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:185](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L185) |

***

### getGasFee()

```
static getGasFee(gas, feeRate): bigint;
```

Defined in: [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:163](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L163)

Calculates the total gas fee paid for a given gas limit at a given fee rate

#### Parameters

| Parameter | Type                                                                                                                  | Description                                                                                 |
| --------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| `gas`     | [`StarknetGas`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-starknet/src/type-aliases/StarknetGas.md) | Gas limits                                                                                  |
| `feeRate` | `string`                                                                                                              | Fee rate to use for the calculation, serialized as a string: \[l1Gas],\[l2Gas],\[l1DataGas] |

#### Returns

`bigint`

***

### starknetGasAdd()

```
static starknetGasAdd(a, b?): StarknetGas;
```

Defined in: [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:51](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L51)

Sums up all the gas parameters

#### Parameters

| Parameter | Type                                                                                                                  | Description |
| --------- | --------------------------------------------------------------------------------------------------------------------- | ----------- |
| `a`       | [`StarknetGas`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-starknet/src/type-aliases/StarknetGas.md) |             |
| `b?`      | [`StarknetGas`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-starknet/src/type-aliases/StarknetGas.md) |             |

#### Returns

[`StarknetGas`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-starknet/src/type-aliases/StarknetGas.md)

***

### starknetGasMul()

```
static starknetGasMul(gas, scalar): StarknetGas;
```

Defined in: [atomiq-chain-starknet/src/starknet/chain/modules/StarknetFees.ts:41](https://github.com/atomiqlabs/atomiq-chain-starknet/blob/697277c430597a8514a43540ef8b9a10e2b6a595/src/starknet/chain/modules/StarknetFees.ts#L41)

Multiplies all the gas parameters by a specific scalar

#### Parameters

| Parameter | Type                                                                                                                  | Description |
| --------- | --------------------------------------------------------------------------------------------------------------------- | ----------- |
| `gas`     | [`StarknetGas`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-starknet/src/type-aliases/StarknetGas.md) |             |
| `scalar`  | `number`                                                                                                              |             |

#### Returns

[`StarknetGas`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-starknet/src/type-aliases/StarknetGas.md)
