Per discussion in #35436 (comment), WalletError is split out so that it can be reused by multiple wallet interface changes (#34861 in particular)
Introduce a wallet::WalletError, a generic wallet-layer error type that contains
- a machine-readable
WalletErrorCodefor programmatic handling - a translated user-facing
bilingual_strmessage
The initial enum is intentionally small. WALLET_ERROR is used for generic failures that callers should display to the user. The intention is to have more specific codes only when the callers can handle the condition differently.