@startuml package core { class App { -- Signals -- current_account_changed(str : account_name) data_changed() -- Slots -- -- Properties -- current_account accounts -- Methods -- } App --* Account : accounts class Account { -- Signals -- wallets_changed(int : nb_wallets) community_added(int : index) community_removed(int : index) data_changed() -- Slots -- -- Properties -- communities wallets -- Methods -- } Account "1" --* "*" Wallet Account "1" --* "*" Community class Wallet { -- Signals -- money_received(Transfer) money_sent(Transfer) name_changed(str : new_name data_changed() -- Slots -- -- Properties -- transfers -- Methods -- } Wallet "1" --* "*" Transfer class Transfer { -- Signals -- state_changed(int : new_state) -- Slots -- -- Properties -- -- Methods -- } class Community { -- Signals -- members_changed() data_changed() -- Slots -- -- Properties -- network -- Methods -- } App --> Identity class Identity { {static} _identities {static} load(data : dict) {static} lookup(search : str) } } package net { class Network { -- Signals -- node_found(int : index) node_removed(int : index) block_found(int : block_number) -- Slots -- -- Properties -- nodes root_nodes -- Methods -- } Community "1" --* "1" Network Network "1" --* "*" Node class Node { -- Signals -- changed() -- Slots -- -- Properties -- endpoints pubkey uid block state -- Methods -- } } @enduml