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

# Usando a Carteira

> Leia o estado de autenticação, assine mensagens e transações, envie e leia o histórico com useHeliusWallet

## Autenticação

Use o hook `useHeliusWallet` para ler o estado de autenticação e conduzir o login:

```tsx theme={"system"}
"use client";

import { useHeliusWallet } from "helius-wallet-kit";

export function AuthButton() {
  const { status, login, logout, address } = useHeliusWallet();

  if (status === "loading") return <p>Loading…</p>;

  if (status === "authenticated") {
    return (
      <div>
        <span>{address}</span>
        <button onClick={() => logout()}>Sign out</button>
      </div>
    );
  }

  return <button onClick={() => login()}>Sign in</button>;
}
```

Chamar `login()` abre o modal da carteira com os métodos de autenticação que você habilitou.

Após o login, `status` se torna `"authenticated"` e `user` é preenchido com o ID do usuário, ID da sub-organização e ID da carteira.

Escolha quais métodos de login aparecem no dashboard — veja [Configure sign-in methods](/docs/pt-BR/waas/configuration#configure-sign-in-methods).

## Assinando e enviando

`useHeliusWallet` expõe o endereço da carteira, métodos de assinatura e um Solana `Connection` pronto para uso conectado ao Helius RPC.

### Assinar uma mensagem

```tsx theme={"system"}
const { signMessage } = useHeliusWallet();
const signature = await signMessage("Sign in to Acme");
```

### Assinar e enviar uma transação

`signAndSendTransaction` assina a transação no cliente e a envia através do Helius. Ele aceita uma transação serializada e retorna a assinatura da transação.

```tsx theme={"system"}
import {
  Transaction,
  SystemProgram,
  PublicKey,
  LAMPORTS_PER_SOL,
  ComputeBudgetProgram,
} from "@solana/web3.js";

const { address, connection, signAndSendTransaction, getPriorityFeeLevels } =
  useHeliusWallet();

const fromPubkey = new PublicKey(address!);
const toPubkey = new PublicKey(recipient);

// Estimate a priority fee from Helius.
const fees = await getPriorityFeeLevels([address!, recipient]);

const tx = new Transaction()
  .add(ComputeBudgetProgram.setComputeUnitPrice({ microLamports: fees.medium }))
  .add(
    SystemProgram.transfer({
      fromPubkey,
      toPubkey,
      lamports: 0.01 * LAMPORTS_PER_SOL,
    }),
  );

const { blockhash } = await connection.getLatestBlockhash();
tx.recentBlockhash = blockhash;
tx.feePayer = fromPubkey;

const serialized = tx.serialize({
  requireAllSignatures: false,
  verifySignatures: false,
});

const signature = await signAndSendTransaction(serialized);
```

<Tip>
  Use `signTransaction` em vez de `signAndSendTransaction` quando você quiser a
  assinatura da carteira sem transmiti-la — por exemplo, para adicioná-la a uma
  transação de várias partes antes de enviá-la você mesmo.
</Tip>

### Ler histórico de transações

```tsx theme={"system"}
const { getTransactions } = useHeliusWallet();
const transactions = await getTransactions({ limit: 20 });
```

<Note>
  `getTransactions` requer o [manipulador de rota do servidor](/docs/pt-BR/waas/quickstart#setup) —
  não está disponível no modo padrão apenas para o cliente (Secure RPC).
</Note>

### Exportar a carteira

As carteiras são não-custodiais, para que os usuários possam levar suas chaves com eles. `exportWallet` abre um fluxo seguro e criptografado para que o usuário autenticado revele e exporte sua chave privada.

```tsx theme={"system"}
const { exportWallet } = useHeliusWallet();
await exportWallet();
```

## Próximos passos

<CardGroup cols={2}>
  <Card title="Referência da API" icon="code" href="/docs/pt-BR/waas/api-reference">
    A superfície completa `useHeliusWallet()` e importações.
  </Card>

  <Card title="Migrando do Privy" icon="arrow-right-arrow-left" href="/docs/pt-BR/waas/migrating-from-privy">
    Mova carteiras Privy existentes para Helius WaaS
  </Card>
</CardGroup>
