/ components / frontend / F002-wallet_app.component.cspec
F002-wallet_app.component.cspec
  1  # F002-wallet_app.component.cspec
  2  
  3  metadata:
  4    id: F002
  5    name: wallet_app
  6    version: 1.1.0
  7    domain: frontend
  8    stability: high_change
  9    updated: 2026-01-15
 10    cascade_priority: 20
 11    roles:
 12      primary: [Dev]
 13      review: [Security]
 14    expertise:
 15      required: [react, typescript, mobile]
 16      helpful: [tauri, swift, kotlin, wasm]
 17    context_tags: [wallet, mobile, desktop, web, trading, governance]
 18  
 19  dependencies:
 20    upstream: [F001, F008, F009]
 21    downstream: []
 22  
 23  interface:
 24    types_ref: _registry/types.cspec
 25    types:
 26      account: {seed: isolated, features: role_detected}
 27      pocket: enum[alpha, dx, sax]
 28      trading_mode: enum[simple, pro, market_maker]
 29      persona: enum[personal, trader, operator, developer]
 30  
 31    functions:
 32      create_wallet: {inputs: [], outputs: [mnemonic, account]}
 33      restore_wallet: {inputs: [mnemonic], outputs: [account]}
 34      send_alpha: {inputs: [to, amount], outputs: [tx_id]}
 35      receive_alpha: {inputs: [], outputs: [address, qr]}
 36      mint_sax: {inputs: [alpha_amount], outputs: [sax_amount, tx_id]}
 37      redeem_sax: {inputs: [sax_amount], outputs: [alpha_amount, tx_id]}
 38      submit_order: {inputs: [order], outputs: [order_id]}
 39      vote: {inputs: [proposal_id, vote], outputs: [tx_id]}
 40  
 41    events:
 42      - wallet_created
 43      - transaction_submitted
 44      - balance_updated
 45      - order_filled
 46  
 47  spec:
 48    # === PLATFORM STRUCTURE ===
 49    structure:
 50      acdc-wallet/:
 51        core/: shared_wallet_core_bindings
 52        shared/:
 53          components/: []
 54          hooks/: []
 55          stores/: []
 56          utils/: []
 57        platforms/:
 58          ios/: swift_swiftui
 59          android/: kotlin_compose
 60          desktop/: tauri_react
 61          web/: react_wasm
 62        e2e/: end_to_end_tests
 63  
 64    # === MULTI-ACCOUNT MODEL ===
 65    accounts:
 66      model: isolated_seeds
 67      features:
 68        - each_seed_fully_isolated
 69        - no_cross_account_key_access
 70        - separate_device_mesh_per_account_optional
 71        - clear_visual_distinction
 72  
 73    # === THREE POCKETS VIEW ===
 74    pockets:
 75      alpha:
 76        privacy: private
 77        actions: [send, receive, mint_sax]
 78      dx:
 79        privacy: private
 80        actions: [vote, stake]
 81      sax:
 82        privacy: public
 83        actions: [trade, redeem, off_ramp]
 84  
 85    # === EXTERNAL CHAINS ===
 86    external_chains:
 87      ecosystem_keys:
 88        - synced_across_device_mesh
 89        - recoverable_via_seed
 90        - backed_by_name_service
 91      imported_keys:
 92        - device_local_only
 93        - not_synced
 94        - not_recoverable_from_ecosystem_seed
 95        - sweep_to_ecosystem_action
 96      chains: [btc, eth, sol, trx]
 97      tokens: [usdt, usdc]  # Supported on applicable chains (ETH, TRX, SOL)
 98  
 99    # === TRADING INTERFACE ===
100    trading:
101      simple_mode:
102        - market_buy_sell
103        - basic_limit_orders
104        - simple_position_view
105        - basic_charts
106      pro_mode:
107        - all_order_types
108        - tradingview_charting
109        - depth_of_market
110        - position_analytics
111        - hotkeys
112        - api_access
113      market_maker_mode:
114        - quick_quote_bid_ask
115        - bulk_order_management
116        - inventory_tracking
117        - revenue_analytics
118  
119    # === CONDITIONAL UI ===
120    conditional_features:
121      validator_tab: "account.addresses.any IN validator_set"
122      prover_tab: "account.addresses.any IN prover_pool"
123      delta_governance_tab: "account.dx_staked >= 10k_DX"  # Delta governance only; Alpha governance via F003
124      mm_mode: "user.persona == TRADER OR user.enabled_mm_mode"
125  
126    # === ONBOARDING ===
127    onboarding:
128      required_initial:
129        - create_seed_phrase_24_words
130        - verify_seed_phrase
131      progressive_prompts:
132        - device_mesh_setup
133        - recovery_method_social_or_shamir
134        - name_registration
135        - persona_selection
136      nag_behavior:
137        - semi_obtrusive_banner
138        - escalates_over_time
139        - contextual_triggers_balance_thresholds
140        - disappears_when_complete
141  
142    # === SCREEN INVENTORY ===
143    screens:
144      onboarding: [welcome, seed_generate, seed_verify, setup_complete, progressive_setup]
145      wallet: [home, alpha_pocket, dx_pocket, sax_pocket, external_chains, imported_wallets]
146      trading: [simple_mode, pro_mode, market_maker_mode, order_entry, position_detail, swap]
147      delta_governance: [proposals_list, proposal_detail, vote, history]  # Delta chain governance
148      validator_prover: [status, rewards, history]
149      settings: [account_switcher, security, backup, preferences, accessibility, network, about]
150      help: [ai_assistant, community_link]
151  
152    # === STATE MANAGEMENT ===
153    stores:
154      - AccountStore: multi_account_active_account
155      - WalletStore: balances_addresses_per_account
156      - TransactionStore: history_pending
157      - SettingsStore: preferences_theme
158      - NetworkStore: mainnet_testnet_connection
159      - DeltaGovernanceStore: delta_proposals_votes  # Delta governance only
160  
161    persistence:
162      - encrypted_local_storage
163      - ipfs_backup_sync
164      - chain_state_derived_on_restore
165  
166  changelog:
167    - version: 1.1.0
168      date: 2026-01-15
169      type: fix
170      description: "Renamed governance to delta_governance - Alpha governance is via governor console"
171      breaking: false
172  
173    - version: 1.0.0
174      date: 2026-01-14
175      type: initial
176      description: "Initial wallet app spec from UI/UX Specification v1.0"
177      breaking: false