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

# Address Variants

> Checksummed, Lowercase, and Uppercase branded address types

<Card title="Try it Live" icon="play" href="https://playground.tevm.sh?example=primitives/address.ts">
  Run Address examples in the interactive playground
</Card>

# Address Variants

Branded hex string types representing different address formats with compile-time guarantees.

## Overview

Address variants provide type-safe hex strings with specific casing guarantees:

* **Checksummed** - EIP-55 mixed-case format for display and verification
* **Lowercase** - All lowercase hex for canonical storage
* **Uppercase** - All uppercase hex for specific protocols

Each variant is a [branded](/getting-started/branded-types) hex string type extending `Hex.Sized<20>`, not a `Uint8Array`.

## ChecksumAddress

EIP-55 checksummed address format with mixed casing based on keccak256 hash.

### `Address.Checksummed.from(addr)`

Create checksummed hex string from Address.

```typescript theme={null}
const addr = Address("0x742d35cc6634c0532925a3b844bc9e7595f51e3e")

// Get checksummed string
const checksummed = Address.Checksummed(addr)
// "0x742d35Cc6634C0532925a3b844Bc9e7595f51e3e" (mixed case)

// Type is branded Checksummed, not AddressType
typeof checksummed // "string"
```

**Parameters:**

* `addr: AddressType` - Address to checksum

**Returns:** `Checksummed` - Branded checksummed hex string

**Type:**

```typescript theme={null}
import type { Hex } from 'tevm'

type Checksummed = Hex.Sized<20> & {
  readonly __variant: 'Address'
  readonly __checksummed: true
}
```

Defined in: [primitives/Address/AddressType/ChecksumAddress.js:23](https://github.com/evmts/voltaire/blob/main/src/primitives/Address/AddressType/ChecksumAddress.js)

**Note:** Uses keccak256 internally.

### `Address.Checksummed.isValid(str)`

Validate EIP-55 checksum of address string.

```typescript theme={null}
// Valid checksummed
Address.Checksummed.isValid("0x742d35Cc6634C0532925a3b844Bc9e7595f51e3e") // true

// Invalid checksum (wrong casing)
Address.Checksummed.isValid("0x742d35cc6634c0532925a3b844bc9e7595f51e3e") // false
Address.Checksummed.isValid("0x742D35CC6634C0532925A3B844BC9E7595F51E3E") // false

// All lowercase/uppercase passes (no mixed case = no checksum)
Address.Checksummed.isValid("0x742d35cc6634c0532925a3b844bc9e7595f51e3e") // true
Address.Checksummed.isValid("0x742D35CC6634C0532925A3B844BC9E7595F51E3E") // true
```

**Parameters:**

* `str: string` - Address string to validate

**Returns:** `boolean`

Defined in: [primitives/Address/AddressType/ChecksumAddress.js:55](https://github.com/evmts/voltaire/blob/main/src/primitives/Address/AddressType/ChecksumAddress.js)

**EIP-55 Logic:**

* If all letters same case (all lower or all upper), valid
* If mixed case, each letter's case must match keccak256-based checksum

## LowercaseAddress

All lowercase hex format for canonical representation.

### `Address.Lowercase.from(addr)`

Create lowercase hex string from Address.

```typescript theme={null}
const addr = Address("0x742D35CC6634C0532925A3B844BC9E7595F51E3E")

const lowercase = Address.Lowercase(addr)
// "0x742d35cc6634c0532925a3b844bc9e7595f51e3e"
```

**Parameters:**

* `addr: AddressType` - Address to convert

**Returns:** `Lowercase` - Branded lowercase hex string

**Type:**

```typescript theme={null}
import type { Hex } from 'tevm'

type Lowercase = Hex.Sized<20> & {
  readonly __variant: 'Address'
  readonly __lowercase: true
}
```

Defined in: [primitives/Address/AddressType/LowercaseAddress.js:20](https://github.com/evmts/voltaire/blob/main/src/primitives/Address/AddressType/LowercaseAddress.js)

## UppercaseAddress

All uppercase hex format.

### `Address.Uppercase.from(addr)`

Create uppercase hex string from Address.

```typescript theme={null}
const addr = Address("0x742d35cc6634c0532925a3b844bc9e7595f51e3e")

const uppercase = Address.Uppercase(addr)
// "0x742D35CC6634C0532925A3B844BC9E7595F51E3E"
```

**Parameters:**

* `addr: AddressType` - Address to convert

**Returns:** `Uppercase` - Branded uppercase hex string

**Type:**

```typescript theme={null}
import type { Hex } from 'tevm'

type Uppercase = Hex.Sized<20> & {
  readonly __variant: 'Address'
  readonly __uppercase: true
}
```

Defined in: [primitives/Address/AddressType/UppercaseAddress.js:20](https://github.com/evmts/voltaire/blob/main/src/primitives/Address/AddressType/UppercaseAddress.js)

## Variant Comparison

| Variant         | Casing    | Use Case                      | Keccak256 Needed |
| --------------- | --------- | ----------------------------- | ---------------- |
| **Checksummed** | Mixed     | Display, verification         | Yes              |
| **Lowercase**   | All lower | Canonical storage, comparison | No               |
| **Uppercase**   | All upper | Specific protocols            | No               |
