> ## Documentation Index
> Fetch the complete documentation index at: https://docs.eco.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Pot, fee and price helpers: Pot address and Kitchen fee

> Pot address and Kitchen fee: the declaration and description of each of the 5 exports of @eco-incorp/sauce.

Root exports for a Pot and for pool prices. `v12PredictPot(owner, salt?, kitchen?)` derives a Pot's address without reading a chain, `potSalt` and `DEFAULT_POT_SALT` give its salt, and `kitchenExecutionFee()` builds the read of the Kitchen's fee per cook. `sqrtPriceX96FromPrice` and `priceFromSqrtPriceX96` convert between a price and a pool's `sqrtPriceX96`.

```typescript theme={null}
import { v12PredictPot, kitchenExecutionFee, sqrtPriceX96FromPrice } from "@eco-incorp/sauce";
```

Generated from the type declarations of `@eco-incorp/sauce`.

### `potSalt`

*Function* · `@eco-incorp/sauce`

The salt of the Pot an owner names `label`: `keccak256(utf8(label))`.

An owner has one Pot per salt. The zero salt (`DEFAULT_POT_SALT`) is the convention
for the one Pot an owner has by default, and a label names any other:
`v12PredictPot(owner, potSalt("treasury"))`. Hashing gives any label a full 32-byte salt, the
same everywhere: the `sauce` command's `--salt treasury` is this. An exact salt needs no helper;
pass the 32 bytes to `v12PredictPot` as they are.

```typescript theme={null}
export declare function potSalt(label: string): Hex;
```

### `DEFAULT_POT_SALT`

*Variable* · `@eco-incorp/sauce`

The salt of an owner's default Pot: zero.

A Pot is fixed by its (owner, salt) pair, so this is not a namespace: whoever calls
`Kitchen.deployPot(owner, 0)` creates this same Pot, owned by `owner`, and nobody can create a
different one there.

```typescript theme={null}
DEFAULT_POT_SALT: Hex
```

### `v12PredictPot`

*Function* · `@eco-incorp/sauce`

`CREATE2(kitchen, keccak256(abi.encode(owner, salt)), initCodeHash)` - the formula
`V12Deployments.json` records, applied. `kitchen` defaults to the pinned release's Kitchen proxy,
the Pots' deployer; the init-code hash is always the pinned release's, never a constant here.

Chain-independent, like every CREATE2 address: the same owner and salt give the same Pot on every
chain the Kitchen is deployed at that address on. A Kitchen upgrade that moves the init-code hash
moves every Pot minted after it - the reason this reads the hash from the release.

```typescript theme={null}
export declare function v12PredictPot(owner: Hex, salt?: Hex, kitchen?: Hex): Hex;
```

### `kitchenExecutionFee`

*Function* · `@eco-incorp/sauce`

`Kitchen.executionFee()`, as a request plus its decoder.

```ts theme={null}
const request = kitchenExecutionFee();
const fee = request.decode(await client.call(request).then((r) => r.data!));
```

Read it shortly before building a cook: an increase between the read and the cook makes the cook
revert.

```typescript theme={null}
export declare function kitchenExecutionFee(kitchen?: Hex): ExecutionFeeCall;
```

### `ExecutionFeeCall`

*Interface* · `@eco-incorp/sauce`

```typescript theme={null}
export interface ExecutionFeeCall {
    readonly to: Hex;
    readonly data: Hex;
    decode(result: Hex): bigint;
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.