# snono-dev/wallet-address-exporter architecture

> Architecture diagram of the GitHub repository snono-dev/wallet-address-exporter, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-23). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/snono-dev/wallet-address-exporter
- Repository: https://github.com/snono-dev/wallet-address-exporter

## Overview

Wallet Address Exporter is a browser-only wallet account collection and Excel export tool. The user connects a wallet, the app reads accounts exposed by the current session, converts supported CAIP-10 accounts into Currency, Network, Address, and Memo records, then exports them locally. The README documents EVM, Solana, Bitcoin, TON, and TRON support, while warning that undisclosed accounts cannot be derived. Runtime details are sampled only in part; uncertain adapter internals and connections are omitted.

Main entry points: [`src/main.js`](https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js) (App runtime), [`index.html`](https://github.com/snono-dev/wallet-address-exporter/blob/main/index.html) (Exporter page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_connection["Wallet connection"]
  node_app["App runtime<br/>[main.js]"]
  node_appkit["AppKit modal<br/>[main.js]"]
end

subgraph group_collection["Account collection"]
  node_provider["Wallet provider<br/>[main.js]"]
  node_session["Session reader<br/>[main.js]"]
  node_extract["Namespace extraction<br/>[main.js]"]
  node_normalize["Account normalization<br/>[main.js]"]
  node_memo["Memo detection<br/>[main.js]"]
end

subgraph group_export["Records and export"]
  node_records["Deduplicated records<br/>[main.js]"]
  node_table["Address table<br/>[main.js]"]
  node_workbook["Excel workbook<br/>[main.js]"]
  node_xlsx["XLSX writer<br/>[main.js]"]
end

subgraph group_protocols["Wallet protocols"]
  node_wagmi["EVM adapter<br/>[main.js]"]
  node_solana["Solana adapter<br/>[main.js]"]
  node_bitcoin["Bitcoin adapter<br/>[main.js]"]
  node_ton["TON adapter<br/>[main.js]"]
  node_tron["TRON adapter<br/>[main.js]"]
end

node_user(("User"))
node_page["Exporter page<br/>[index.html]"]
node_wallet["Connected wallet"]
node_file["Exported spreadsheet"]

node_user -->|"opens"| node_page
node_page -->|"loads"| node_app
node_user -->|"connects or exports"| node_app
node_app -->|"opens"| node_appkit
node_app -->|"configures"| node_wagmi
node_app -->|"configures"| node_solana
node_app -->|"configures"| node_bitcoin
node_app -->|"configures"| node_ton
node_app -->|"configures"| node_tron
node_appkit -->|"connects"| node_wallet
node_app -->|"gets provider"| node_provider
node_provider -->|"reads session"| node_wallet
node_app -->|"reads accounts"| node_session
node_session -->|"gets provider"| node_provider
node_session -->|"passes namespaces"| node_extract
node_extract -->|"parses accounts"| node_normalize
node_normalize -->|"checks metadata"| node_memo
node_normalize -->|"adds account"| node_records
node_memo -->|"supplies memo"| node_records
node_records -->|"renders"| node_table
node_app -->|"renders"| node_table
node_app -->|"builds on export"| node_workbook
node_records -->|"supplies rows"| node_workbook
node_workbook -->|"writes file"| node_xlsx
node_xlsx -->|"downloads"| node_file

click node_page "https://github.com/snono-dev/wallet-address-exporter/blob/main/index.html"
click node_app "https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js"
click node_appkit "https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js"
click node_wagmi "https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js"
click node_solana "https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js"
click node_bitcoin "https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js"
click node_ton "https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js"
click node_tron "https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js"
click node_provider "https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js"
click node_session "https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js"
click node_extract "https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js"
click node_normalize "https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js"
click node_memo "https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js"
click node_records "https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js"
click node_table "https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js"
click node_workbook "https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js"
click node_xlsx "https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_appkit,node_user toneBlue
class node_provider,node_session,node_extract,node_normalize,node_memo toneAmber
class node_records,node_table,node_workbook,node_xlsx toneMint
class node_wagmi,node_solana,node_bitcoin,node_ton,node_tron toneRose
class node_page toneTeal
class node_wallet,node_file toneIndigo
```

## Components

### Wallet connection

- [App runtime](https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js): `src/main.js`
- [AppKit modal](https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js): `src/main.js`

### Account collection

- [Wallet provider](https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js): `src/main.js`
- [Session reader](https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js): `src/main.js`
- [Namespace extraction](https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js): `src/main.js`
- [Account normalization](https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js): `src/main.js`
- [Memo detection](https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js): `src/main.js`

### Records and export

- [Deduplicated records](https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js): `src/main.js`
- [Address table](https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js): `src/main.js`
- [Excel workbook](https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js): `src/main.js`
- [XLSX writer](https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js): `src/main.js`

### Wallet protocols

- [EVM adapter](https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js): `src/main.js`
- [Solana adapter](https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js): `src/main.js`
- [Bitcoin adapter](https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js): `src/main.js`
- [TON adapter](https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js): `src/main.js`
- [TRON adapter](https://github.com/snono-dev/wallet-address-exporter/blob/main/src/main.js): `src/main.js`

### Other components

- **User**
- [Exporter page](https://github.com/snono-dev/wallet-address-exporter/blob/main/index.html): `index.html`
- **Connected wallet**
- **Exported spreadsheet**

## Connections

- User → Exporter page: opens
- Exporter page → App runtime: loads
- User → App runtime: connects or exports
- App runtime → AppKit modal: opens
- App runtime → EVM adapter: configures
- App runtime → Solana adapter: configures
- App runtime → Bitcoin adapter: configures
- App runtime → TON adapter: configures
- App runtime → TRON adapter: configures
- AppKit modal → Connected wallet: connects
- App runtime → Wallet provider: gets provider
- Wallet provider → Connected wallet: reads session
- App runtime → Session reader: reads accounts
- Session reader → Wallet provider: gets provider
- Session reader → Namespace extraction: passes namespaces
- Namespace extraction → Account normalization: parses accounts
- Account normalization → Memo detection: checks metadata
- Account normalization → Deduplicated records: adds account
- Memo detection → Deduplicated records: supplies memo
- Deduplicated records → Address table: renders
- App runtime → Address table: renders
- App runtime → Excel workbook: builds on export
- Deduplicated records → Excel workbook: supplies rows
- Excel workbook → XLSX writer: writes file
- XLSX writer → Exported spreadsheet: downloads
