# Encoded

[Git Source](https://github.com/traderjoe-xyz/joe-v2/blob/16f011d25e6bf6d0a0c479974345b623d491104f/src/libraries/math/Encoded.sol)

Helper contract used for decoding bytes32 sample

## State Variables

### MASK\_UINT1

```solidity
uint256 internal constant MASK_UINT1 = 0x1;
```

### MASK\_UINT8

```solidity
uint256 internal constant MASK_UINT8 = 0xff;
```

### MASK\_UINT12

```solidity
uint256 internal constant MASK_UINT12 = 0xfff;
```

### MASK\_UINT14

```solidity
uint256 internal constant MASK_UINT14 = 0x3fff;
```

### MASK\_UINT16

```solidity
uint256 internal constant MASK_UINT16 = 0xffff;
```

### MASK\_UINT20

```solidity
uint256 internal constant MASK_UINT20 = 0xfffff;
```

### MASK\_UINT24

```solidity
uint256 internal constant MASK_UINT24 = 0xffffff;
```

### MASK\_UINT40

```solidity
uint256 internal constant MASK_UINT40 = 0xffffffffff;
```

### MASK\_UINT64

```solidity
uint256 internal constant MASK_UINT64 = 0xffffffffffffffff;
```

### MASK\_UINT128

```solidity
uint256 internal constant MASK_UINT128 = 0xffffffffffffffffffffffffffffffff;
```

## Functions

### set

Internal function to set a value in an encoded bytes32 using a mask and offset

*This function can overflow*

```solidity
function set(bytes32 encoded, uint256 value, uint256 mask, uint256 offset) internal pure returns (bytes32 newEncoded);
```

**Parameters**

| Name      | Type      | Description                |
| --------- | --------- | -------------------------- |
| `encoded` | `bytes32` | The previous encoded value |
| `value`   | `uint256` | The value to encode        |
| `mask`    | `uint256` | The mask                   |
| `offset`  | `uint256` | The offset                 |

**Returns**

| Name         | Type      | Description           |
| ------------ | --------- | --------------------- |
| `newEncoded` | `bytes32` | The new encoded value |

### setBool

Internal function to set a bool in an encoded bytes32 using an offset

*This function can overflow*

```solidity
function setBool(bytes32 encoded, bool boolean, uint256 offset) internal pure returns (bytes32 newEncoded);
```

**Parameters**

| Name      | Type      | Description                |
| --------- | --------- | -------------------------- |
| `encoded` | `bytes32` | The previous encoded value |
| `boolean` | `bool`    | The bool to encode         |
| `offset`  | `uint256` | The offset                 |

**Returns**

| Name         | Type      | Description           |
| ------------ | --------- | --------------------- |
| `newEncoded` | `bytes32` | The new encoded value |

### decode

Internal function to decode a bytes32 sample using a mask and offset

*This function can overflow*

```solidity
function decode(bytes32 encoded, uint256 mask, uint256 offset) internal pure returns (uint256 value);
```

**Parameters**

| Name      | Type      | Description       |
| --------- | --------- | ----------------- |
| `encoded` | `bytes32` | The encoded value |
| `mask`    | `uint256` | The mask          |
| `offset`  | `uint256` | The offset        |

**Returns**

| Name    | Type      | Description       |
| ------- | --------- | ----------------- |
| `value` | `uint256` | The decoded value |

### decodeBool

Internal function to decode a bytes32 sample into a bool using an offset

*This function can overflow*

```solidity
function decodeBool(bytes32 encoded, uint256 offset) internal pure returns (bool boolean);
```

**Parameters**

| Name      | Type      | Description       |
| --------- | --------- | ----------------- |
| `encoded` | `bytes32` | The encoded value |
| `offset`  | `uint256` | The offset        |

**Returns**

| Name      | Type   | Description                 |
| --------- | ------ | --------------------------- |
| `boolean` | `bool` | The decoded value as a bool |

### decodeUint8

Internal function to decode a bytes32 sample into a uint8 using an offset

*This function can overflow*

```solidity
function decodeUint8(bytes32 encoded, uint256 offset) internal pure returns (uint8 value);
```

**Parameters**

| Name      | Type      | Description       |
| --------- | --------- | ----------------- |
| `encoded` | `bytes32` | The encoded value |
| `offset`  | `uint256` | The offset        |

**Returns**

| Name    | Type    | Description       |
| ------- | ------- | ----------------- |
| `value` | `uint8` | The decoded value |

### decodeUint12

Internal function to decode a bytes32 sample into a uint12 using an offset

*This function can overflow*

```solidity
function decodeUint12(bytes32 encoded, uint256 offset) internal pure returns (uint16 value);
```

**Parameters**

| Name      | Type      | Description       |
| --------- | --------- | ----------------- |
| `encoded` | `bytes32` | The encoded value |
| `offset`  | `uint256` | The offset        |

**Returns**

| Name    | Type     | Description                                                  |
| ------- | -------- | ------------------------------------------------------------ |
| `value` | `uint16` | The decoded value as a uint16, since uint12 is not supported |

### decodeUint14

Internal function to decode a bytes32 sample into a uint14 using an offset

*This function can overflow*

```solidity
function decodeUint14(bytes32 encoded, uint256 offset) internal pure returns (uint16 value);
```

**Parameters**

| Name      | Type      | Description       |
| --------- | --------- | ----------------- |
| `encoded` | `bytes32` | The encoded value |
| `offset`  | `uint256` | The offset        |

**Returns**

| Name    | Type     | Description                                                  |
| ------- | -------- | ------------------------------------------------------------ |
| `value` | `uint16` | The decoded value as a uint16, since uint14 is not supported |

### decodeUint16

Internal function to decode a bytes32 sample into a uint16 using an offset

*This function can overflow*

```solidity
function decodeUint16(bytes32 encoded, uint256 offset) internal pure returns (uint16 value);
```

**Parameters**

| Name      | Type      | Description       |
| --------- | --------- | ----------------- |
| `encoded` | `bytes32` | The encoded value |
| `offset`  | `uint256` | The offset        |

**Returns**

| Name    | Type     | Description       |
| ------- | -------- | ----------------- |
| `value` | `uint16` | The decoded value |

### decodeUint20

Internal function to decode a bytes32 sample into a uint20 using an offset

*This function can overflow*

```solidity
function decodeUint20(bytes32 encoded, uint256 offset) internal pure returns (uint24 value);
```

**Parameters**

| Name      | Type      | Description       |
| --------- | --------- | ----------------- |
| `encoded` | `bytes32` | The encoded value |
| `offset`  | `uint256` | The offset        |

**Returns**

| Name    | Type     | Description                                                  |
| ------- | -------- | ------------------------------------------------------------ |
| `value` | `uint24` | The decoded value as a uint24, since uint20 is not supported |

### decodeUint24

Internal function to decode a bytes32 sample into a uint24 using an offset

*This function can overflow*

```solidity
function decodeUint24(bytes32 encoded, uint256 offset) internal pure returns (uint24 value);
```

**Parameters**

| Name      | Type      | Description       |
| --------- | --------- | ----------------- |
| `encoded` | `bytes32` | The encoded value |
| `offset`  | `uint256` | The offset        |

**Returns**

| Name    | Type     | Description       |
| ------- | -------- | ----------------- |
| `value` | `uint24` | The decoded value |

### decodeUint40

Internal function to decode a bytes32 sample into a uint40 using an offset

*This function can overflow*

```solidity
function decodeUint40(bytes32 encoded, uint256 offset) internal pure returns (uint40 value);
```

**Parameters**

| Name      | Type      | Description       |
| --------- | --------- | ----------------- |
| `encoded` | `bytes32` | The encoded value |
| `offset`  | `uint256` | The offset        |

**Returns**

| Name    | Type     | Description       |
| ------- | -------- | ----------------- |
| `value` | `uint40` | The decoded value |

### decodeUint64

Internal function to decode a bytes32 sample into a uint64 using an offset

*This function can overflow*

```solidity
function decodeUint64(bytes32 encoded, uint256 offset) internal pure returns (uint64 value);
```

**Parameters**

| Name      | Type      | Description       |
| --------- | --------- | ----------------- |
| `encoded` | `bytes32` | The encoded value |
| `offset`  | `uint256` | The offset        |

**Returns**

| Name    | Type     | Description       |
| ------- | -------- | ----------------- |
| `value` | `uint64` | The decoded value |

### decodeUint128

Internal function to decode a bytes32 sample into a uint128 using an offset

*This function can overflow*

```solidity
function decodeUint128(bytes32 encoded, uint256 offset) internal pure returns (uint128 value);
```

**Parameters**

| Name      | Type      | Description       |
| --------- | --------- | ----------------- |
| `encoded` | `bytes32` | The encoded value |
| `offset`  | `uint256` | The offset        |

**Returns**

| Name    | Type      | Description       |
| ------- | --------- | ----------------- |
| `value` | `uint128` | The decoded value |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.lfj.gg/contracts/libraries/math/encoded.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
