v0.2.8-pre.005-fix.001

This commit is contained in:
2026-08-23 15:02:41 +02:00
parent 92224e5ac6
commit 53dbb5bccd
9 changed files with 264 additions and 94 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-onchain-transport-lib/src/lib.rs
// version: 31
// version: 32
#![warn(missing_docs)]
#![deny(unreachable_pub)]
@@ -415,16 +415,6 @@ pub(crate) use self::rpc_common::decode_wire_json;
pub(crate) use self::rpc_common::parse_wire_pubkey;
/// Validates endpoint settings.
pub(crate) use self::settings::validate_endpoint_settings;
/// Crate-internal decoder for Helius transaction-subscribe acknowledgement IDs.
pub(crate) use self::ws_helius_transactions::decode_helius_transaction_subscribe_result;
/// Crate-internal decoder for Helius transaction-unsubscribe boolean results.
pub(crate) use self::ws_helius_transactions::decode_helius_transaction_unsubscribe_result;
/// Crate-internal exact Helius transaction-subscribe method descriptor.
pub(crate) use self::ws_helius_transactions::helius_transaction_subscribe_method;
/// Crate-internal exact Helius transaction-unsubscribe method descriptor.
pub(crate) use self::ws_helius_transactions::helius_transaction_unsubscribe_method;
/// Crate-internal Helius transaction-unsubscribe parameter encoder.
pub(crate) use self::ws_helius_transactions::helius_transaction_unsubscribe_params;
/// Crate-internal command surface shared by the physical session and typed subscription handle.
pub(crate) use self::ws_session::WsSessionCommand;
/// Crate-internal notification dispatch result.

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-onchain-transport-lib/src/ws_helius_transactions.rs
// version: 1
// version: 2
const MAX_HELIUS_TRANSACTION_FILTER_ACCOUNTS: usize = 50_000;
@@ -325,20 +325,6 @@ impl HeliusTransactionSubscribeRequest {
}
return std::result::Result::Ok(());
}
/// Builds the exact JSON-RPC params array after deterministic validation.
#[allow(dead_code)] // Consumed by actor-owned transaction subscription registration in pre.006.
pub(crate) fn to_params(&self) -> ksp_core_lib::Result<std::vec::Vec<serde_json::Value>> {
let validation = self.validate();
if let std::result::Result::Err(error) = validation {
return std::result::Result::Err(error);
}
let mut params = std::vec![self.filter.to_json_value()];
if let std::option::Option::Some(options) = self.options {
params.push(options.to_json_value());
}
return std::result::Result::Ok(params);
}
}
impl std::fmt::Debug for HeliusTransactionSubscribeRequest {
@@ -347,21 +333,27 @@ impl std::fmt::Debug for HeliusTransactionSubscribeRequest {
}
}
/// Returns the exact Helius transaction-subscribe JSON-RPC method name.
#[allow(dead_code)] // Consumed by actor-owned transaction subscription registration in pre.006.
pub(crate) const fn helius_transaction_subscribe_method() -> &'static str {
fn helius_transaction_subscribe_params(request: &crate::HeliusTransactionSubscribeRequest) -> ksp_core_lib::Result<std::vec::Vec<serde_json::Value>> {
let validation = request.validate();
if let std::result::Result::Err(error) = validation {
return std::result::Result::Err(error);
}
let mut params = std::vec![request.filter.to_json_value()];
if let std::option::Option::Some(options) = request.options {
params.push(options.to_json_value());
}
return std::result::Result::Ok(params);
}
const fn helius_transaction_subscribe_method() -> &'static str {
return "transactionSubscribe";
}
/// Returns the exact Helius transaction-unsubscribe JSON-RPC method name.
#[allow(dead_code)] // Consumed by actor-owned transaction subscription cleanup in pre.006.
pub(crate) const fn helius_transaction_unsubscribe_method() -> &'static str {
const fn helius_transaction_unsubscribe_method() -> &'static str {
return "transactionUnsubscribe";
}
/// Decodes a successful Helius transaction-subscribe acknowledgement without exposing the remote ID publicly.
#[allow(dead_code)] // Consumed by actor-owned transaction subscription registration in pre.006.
pub(crate) fn decode_helius_transaction_subscribe_result(value: serde_json::Value) -> ksp_core_lib::Result<u64> {
fn decode_helius_transaction_subscribe_result(value: serde_json::Value) -> ksp_core_lib::Result<u64> {
return match value.as_u64() {
std::option::Option::Some(remote_id) => std::result::Result::Ok(remote_id),
std::option::Option::None => std::result::Result::Err(
@@ -371,15 +363,11 @@ pub(crate) fn decode_helius_transaction_subscribe_result(value: serde_json::Valu
};
}
/// Builds the exact Helius transaction-unsubscribe params array for one actor-owned remote subscription ID.
#[allow(dead_code)] // Consumed by actor-owned transaction subscription cleanup in pre.006.
pub(crate) fn helius_transaction_unsubscribe_params(remote_id: u64) -> std::vec::Vec<serde_json::Value> {
fn helius_transaction_unsubscribe_params(remote_id: u64) -> std::vec::Vec<serde_json::Value> {
return std::vec![serde_json::Value::Number(remote_id.into())];
}
/// Decodes the boolean Helius transaction-unsubscribe result.
#[allow(dead_code)] // Consumed by actor-owned transaction subscription cleanup in pre.006.
pub(crate) fn decode_helius_transaction_unsubscribe_result(value: serde_json::Value) -> ksp_core_lib::Result<bool> {
fn decode_helius_transaction_unsubscribe_result(value: serde_json::Value) -> ksp_core_lib::Result<bool> {
return match value.as_bool() {
std::option::Option::Some(unsubscribed) => std::result::Result::Ok(unsubscribed),
std::option::Option::None => std::result::Result::Err(