# ABIs

The SDK exports protocol ABIs, genesis contract addresses, and deposit helper utilities.

## Constants

| Constant                                                                                        | Type         | Description                                       |
| ----------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------- |
| [`SRC20_ABI`](https://docs.seismic.systems/clients/python/abis/src20-abi)                       | `list[dict]` | SRC20 token interface (7 functions, 2 events)     |
| [`DEPOSIT_CONTRACT_ABI`](https://docs.seismic.systems/clients/python/abis/deposit-contract)     | `list[dict]` | Validator deposit contract (4 functions, 1 event) |
| [`DEPOSIT_CONTRACT_ADDRESS`](https://docs.seismic.systems/clients/python/abis/deposit-contract) | `str`        | `0x00000000219ab540356cBB839Cbe05303d7705Fa`      |
| [`DIRECTORY_ABI`](https://docs.seismic.systems/clients/python/abis/directory)                   | `list[dict]` | Viewing key directory (4 functions)               |
| [`DIRECTORY_ADDRESS`](https://docs.seismic.systems/clients/python/abis/directory)               | `str`        | `0x1000000000000000000000000000000000000004`      |

## Helper Functions

| Function                                                                                                      | Returns | Description                                      |
| ------------------------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------ |
| [`compute_deposit_data_root`](https://docs.seismic.systems/clients/python/abis/compute-deposit-data-root)     | `bytes` | SHA-256 SSZ hash tree root for deposit data      |
| [`make_withdrawal_credentials`](https://docs.seismic.systems/clients/python/abis/make-withdrawal-credentials) | `bytes` | 32-byte ETH1 withdrawal credentials from address |

## Example

```python
import os
from eth_abi import decode
from seismic_web3 import PrivateKey, SEISMIC_TESTNET, SRC20_ABI

pk = PrivateKey.from_hex_str(os.environ["PRIVATE_KEY"])
w3 = SEISMIC_TESTNET.wallet_client(pk)

token = w3.seismic.contract("0xYourTokenAddress", SRC20_ABI)
balance = decode(["uint256"], bytes(token.read.balanceOf()))[0]
```

## See Also

* [SRC20](https://docs.seismic.systems/clients/python/src20) — SRC20 token usage guide
* [Contract](https://docs.seismic.systems/clients/python/contract) — Contract interaction patterns
* [Namespaces](https://docs.seismic.systems/clients/python/namespaces) — `w3.seismic` methods including `deposit`, `get_deposit_count`, `get_deposit_root`
