<p align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset=".github/logo-dark.svg">
    <source media="(prefers-color-scheme: light)" srcset=".github/logo-light.svg">
    <img alt="accounts" src=".github/logo-light.svg" width="auto" height="100">
  </picture>
</p>

<p align="center"><b>Tempo Accounts SDK for apps and wallets building stablecoin experiences on Tempo.</b></p>

<p align="center">
  <a href="https://accounts.tempo.xyz">Website</a> · <a href="https://accounts.tempo.xyz/docs">Docs</a> · <a href="#install">Install</a> · <a href="#examples">Examples</a> · <a href="#development">Development</a>
</p>

---

## Quick Prompt

Prompt your agent:

```
Read accounts.tempo.xyz/docs and integrate Tempo Wallet into my application
```

## Install

```bash
npm i accounts
```

```bash
pnpm i accounts
```

```bash
bun i accounts
```

## Documentation

Start at [accounts.tempo.xyz](https://accounts.tempo.xyz) for the product overview, live demos, and integration guides. The documentation lives at [accounts.tempo.xyz/docs](https://accounts.tempo.xyz/docs).

## Getting Help

Have questions or building something cool with the Tempo Accounts SDK?

Join the Telegram group to chat with the team and other devs: [@mpp_devs](https://t.me/mpp_devs)

## Examples

| Example                                                       | Description                                                                      |
| ------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| [basic](./examples/basic)                                     | Wagmi-based setup using the `tempoWallet` connector to connect to Tempo Wallet.  |
| [deposits](./examples/deposits)                               | Open the deposit UI with optional pre-filled fields.                             |
| [cli](./examples/cli)                                         | Minimal CLI setup to connect and authorize local keys using Tempo Wallet.        |
| [webauthn](./examples/webauthn)                               | Domain-bound passkey example using Wagmi and the `webAuthn` connector.           |
| [access-key](./examples/access-key)                           | Authorize access keys using Tempo Wallet to submit transactions without prompts. |
| [access-key-and-webauthn](./examples/access-key-and-webauthn) | Authorize access keys using domain-bound Passkeys.                               |
| [fee-payer](./examples/fee-payer)                             | Sponsor transactions via Tempo Wallet.                                           |
| [fee-payer-and-webauthn](./examples/fee-payer-and-webauthn)   | Sponsor transactions using a Cloudflare Worker with domain-bound Passkeys.       |
| [mpp](./examples/mpp)                                         | Auto-pay HTTP `402` responses served by a Hono server using `mppx/hono`.         |

## Development

Requires [Docker](https://docs.docker.com/get-docker/) and [OrbStack](https://orbstack.dev/) (recommended on macOS for automatic HTTPS `.accounts.local` domains).

```sh
pnpm dev              # start all dev services via docker compose
pnpm build            # build library
pnpm check            # lint + format
pnpm check:types      # type checks
pnpm test             # run tests
```

### Services

| Service          | OrbStack URL                        |
| ---------------- | ----------------------------------- |
| Playground       | `https://playground.accounts.local` |
| Dialog Reference | `https://dialog-ref.accounts.local` |
| Docs             | `https://docs.accounts.local`       |
| Wagmi Playground | `https://wagmi.accounts.local`      |

## Deployment

The docs site is configured for Vercel as a monorepo project.

| Setting        | Value        |
| -------------- | ------------ |
| Root Directory | `site`       |
| Build Command  | `pnpm build` |
| Dev Command    | `pnpm dev`   |

Set `VITE_BASE_URL` to the production docs origin when using a custom domain.

### Playgrounds

| Playground                   | Command          | Description                                  |
| ---------------------------- | ---------------- | -------------------------------------------- |
| [web](./playgrounds/web)     | `pnpm dev`       | Web playground for dialog + adapter testing. |
| [wagmi](./playgrounds/wagmi) | `pnpm dev:wagmi` | Wagmi-based playground with connectors.      |
| [cli](./playgrounds/cli)     | `pnpm dev:cli`   | CLI playground for device-code auth flow.    |

### Reference Implementations

The `ref-impls/` directory contains reference implementations for building with Tempo Accounts SDK:

| Directory             | Description                                                                                                                                                                              |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ref-impls/dialog/`   | Minimal, unstyled embed dialog app demonstrating how to build a custom embed using the `Remote` API. Select `dialogRefImpl` in the web playground's adapter dropdown to test against it. |
| `ref-impls/cli-auth/` | Minimal React + Cloudflare/Vite host reference for device-code CLI auth: built-in code-auth endpoints plus a single unstyled approval screen and local smoke client.                     |

## License

<sup>
Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
</sup>

<br>

<sub>
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in these packages by you, as defined in the Apache-2.0 license,
shall be dual licensed as above, without any additional terms or conditions.
</sub>
