v0.2.6-pre.007

This commit is contained in:
2026-08-21 10:50:36 +02:00
parent 4c9086e2f0
commit f11f0921b0
25 changed files with 871 additions and 42 deletions

View File

@@ -0,0 +1,39 @@
// file: crates/ksp-app-wallet-desk/src/wallet_balance.rs
// version: 1
//! Safe Wallet balance projection produced by the typed HTTP Transport path.
use ts_rs::TS; // rust-rules: trait-import
/// Safe balance snapshot for the currently authorized Wallet.
#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize, TS)]
#[serde(rename_all = "camelCase")]
#[ts(export, export_to = "../frontend/ts/bindings/ksp_app_wallet_desk/wallet_balance/WalletBalanceDto.ts")]
pub(crate) struct WalletBalanceDto {
/// Optional Solana RPC API version reported by the selected node.
pub(crate) api_version: std::option::Option<String>,
/// Exact decimal account balance in lamports, encoded as text to avoid JavaScript integer precision loss.
pub(crate) lamports: String,
/// RPC context slot associated with this balance.
pub(crate) slot: u64,
/// Exact decimal SOL presentation derived from lamports without floating point.
pub(crate) sol: String,
/// Composite-selected Transport profile used for the RPC.
pub(crate) transport_profile: String,
/// Logical Transport role used for the RPC.
pub(crate) transport_role: String,
/// Root-scoped Wallet identifier whose authorized Pubkey was queried.
pub(crate) wallet_id: String,
}
/// Formats exact lamports as a decimal SOL string with nine fractional digits.
#[must_use]
pub(crate) fn format_lamports_as_sol(lamports: u64) -> String {
let whole = lamports / 1_000_000_000;
let fractional = lamports % 1_000_000_000;
return format!("{whole}.{fractional:09}");
}
#[cfg(test)]
#[path = "../unit_tests/wallet_balance.rs"]
mod tests;