v0.2.12-pre.009

This commit is contained in:
2026-08-27 17:18:29 +02:00
parent d3bb026345
commit 233aaf9bd8
15 changed files with 462 additions and 64 deletions

View File

@@ -1,10 +1,12 @@
// file: crates/ksp-app-solprices-desk/src/market_price_runtime.rs
// version: 3
// version: 4
//! Provider-neutral market-price presentation runtime owned by SOL Prices Desk.
use ts_rs::TS; // rust-rules: trait-import
const MARKET_PRICE_REFRESH_MAX_PROVIDER_IDS: usize = 64;
/// Safe provider-neutral row projected to the SOL Prices Desk frontend.
#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize, TS)]
#[serde(rename_all = "camelCase")]
@@ -534,6 +536,16 @@ fn lock_presentation(
}
fn parse_provider_ids(provider_ids: std::vec::Vec<String>) -> ksp_core_lib::Result<std::vec::Vec<ksp_offchain_transport_lib::MarketPriceProviderId>> {
if provider_ids.is_empty() || provider_ids.len() > MARKET_PRICE_REFRESH_MAX_PROVIDER_IDS {
return std::result::Result::Err(
ksp_core_lib::Error::new(
crate::ERROR_CODE_MARKET_PRICE_SELECTION_INVALID,
"SOL Prices Desk market-price refresh selection has an invalid provider count",
)
.with_context("provider_count", provider_ids.len().to_string())
.with_context("max_provider_count", MARKET_PRICE_REFRESH_MAX_PROVIDER_IDS.to_string()),
);
}
let mut parsed = std::vec::Vec::with_capacity(provider_ids.len());
for provider_id in provider_ids {
let provider_id = ksp_offchain_transport_lib::MarketPriceProviderId::new(provider_id);