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

# Viem

> Use the viem library with Aurum

### Wallet Client

```typescript theme={null}
import { createWalletClient, custom } from 'viem';
import { aurum } from './aurum';

const walletClient = createWalletClient({
  transport: custom(aurum.rpcProvider),
});
```

### Sign a Message

```typescript theme={null}
const [address] = await walletClient.getAddresses();

const signature = await walletClient.signMessage({ 
  account: address, 
  message: 'Hello!',
});
```

### Send a Transaction

```typescript theme={null}
import { parseEther } from 'viem';

const [address] = await walletClient.getAddresses();

const hash = await walletClient.sendTransaction({
  account: address,
  to: '0x...',
  value: parseEther('0.01'),
});
```

### Write to a Contract

```typescript theme={null}
const hash = await walletClient.writeContract({
  address: tokenAddress,
  abi: erc20Abi,
  functionName: 'transfer',
  args: [recipient, amount],
  account: address,
});
```

### Public Client

Use a separate public client for read operations

```typescript theme={null}
import { createPublicClient, http } from 'viem';

const publicClient = createPublicClient({
  transport: http('https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY'),
});

const balance = await publicClient.readContract({
  address: tokenAddress,
  abi: erc20Abi,
  functionName: 'balanceOf',
  args: [walletAddress],
});
```

<Info>
  When creating a viem public client, use a dedicated RPC URL from a provider like Alemchy or Infura instead of using `aurum.rpcProvider`.
</Info>
