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

# Helpers

> Addresses, ERC-20 ABI, and testnet mint. Odds helpers live on Seed.

From `@voiz-digital/markets-sdk`. Market / pool / user types come back from factory methods, not from these helpers. `CreateMarketMetadata` is the bag you pass as `createMarket({ metadata })`.

`normalizeOddsBps` and `quoteSeed` live on [Seed a market](/market/seed). Client construction lives on [Set up with viem](/quickstart-viem).

## getAddresses

```ts theme={null}
const addresses = getAddresses(chainId)
const staging = getAddresses(chainId, {
  marketFactory: CUSTOM_FACTORY,
  router: CUSTOM_ROUTER,
  collateral: CUSTOM_COLLATERAL,
})
```

Overrides are `Partial<Omit<ChainAddresses, "chainId">>`. Valid keys: `marketFactory`, `adminOracle`, `multisigOracle`, `router`, `collateral`, `conditionalTokens`. There is no `hook` field.

Pass the result as `addresses` on the client or `VoizProvider` when you are not on the baked-in Base / Base Sepolia map.

## erc20Abi

For the rare path where you read `balanceOf` / `allowance` yourself. High-level methods already encode approvals.

## mintCollateral

Testnet collateral, if the token exposes mint. There is no `client.burn`. First LP is `market.seed`. Later LP is `market.addLiquidity`.

```ts theme={null}
await client.mintCollateral({ to, amount })
```

## Next

[Create a market](/market/create)
