# @usebutr/wallets (/api/wallets)



## Discovery [#discovery]

### `autoDiscovery(options?: DiscoverOptions): WalletSource` [#autodiscoveryoptions-discoveroptions-walletsource]

The headline export. Returns a `WalletSource` that composes EVM (EIP-6963 +
injected fallback) and SVM (Wallet Standard) discovery. Pass it directly as the
`discovery` prop on `WalletManagerProvider`:

```tsx
import { WalletManagerProvider } from "@usebutr/react";
import { autoDiscovery } from "@usebutr/wallets";

// Hoist to module scope so the reference is stable.
const discovery = autoDiscovery();

export function App() {
  return <WalletManagerProvider discovery={discovery}>{children}</WalletManagerProvider>;
}
```

`DiscoverOptions = { evm?; svm?; injected? }`. Omit options to enable
everything. `injected` defaults to `true` whenever `evm` is enabled.

## Discovery primitives [#discovery-primitives]

### `discoverWalletAdapters(onAdapter, options?: DiscoverOptions): () => void` [#discoverwalletadaptersonadapter-options-discoveroptions---void]

Composed EVM + SVM discovery. Calls `onAdapter` for each wallet found and
returns an unsubscribe function.

### `resolveDiscoverOptions(auto: true | false | DiscoverOptions)` [#resolvediscoveroptionsauto-true--false--discoveroptions]

Normalises an options value. `true` enables everything. Object form is opt-in:
unspecified flags default to `false`; `injected` defaults to `true` only when
`evm` is true. Returns `{ active, evm, injected, svm }`.

### `createDiscoveryBus(onAdapter): DiscoveryBus` [#creatediscoverybusonadapter-discoverybus]

Lower-level multiplexer. Types: `DiscoveryBus`, `DiscoveryPath`.

## Chains [#chains]

* `CHAINS` — `{ evm: Record<…>, svm: Record<…> }`.
* `CHAINS_BY_PLATFORM` — `Record<"evm" | "svm", ChainBase[]>`. Index with
  `wallet.connector.chainPlatform`.

## Types [#types]

`DiscoverOptions`, `DiscoveryBus`, `DiscoveryPath`.

**Source:** `packages/wallets/src/index.ts`.
