619 lines
39 KiB
Rust
619 lines
39 KiB
Rust
// file: crates/ksp-onchain-transport-lib/src/lib.rs
|
||
// version: 47
|
||
|
||
#![warn(missing_docs)]
|
||
#![deny(unreachable_pub)]
|
||
#![forbid(unsafe_code)]
|
||
|
||
//! KSP-owned Solana on-chain transport foundation.
|
||
//!
|
||
//! This crate owns runtime HTTP transport settings, Solana HTTP JSON-RPC envelopes and the audited standard method registry. It deliberately remains
|
||
//! independent from `ksp-config-lib`, Store and Program layers. `ksp-config-lib` now constructs these public settings through its one-way Config ->
|
||
//! Transport adapter without creating a reverse dependency. Logical endpoint clients, priority-aware pools, bounded admission limits and retry/no-resend policy
|
||
//! are available. The four typed Solana HTTP foundation canaries plus all 22 typed `0.2.2` Accounts, Tokens and Cluster wrappers execute real JSON-RPC
|
||
//! requests through the shared transport path. `0.2.3` exposes its shared Transaction wire/config primitives and all eleven Transaction wrappers through
|
||
//! `pre.007`: eight reads, two write submissions with centralized no-resend protection, and retry-safe `simulateTransaction`, including complete
|
||
//! modern/legacy `getTransaction` coverage. `0.2.4` completes the HTTP surface with all ten Blocks and five Economics wrappers, including complete
|
||
//! modern/legacy `getBlock`, positional inflation rewards, runtime-provided economics values and the final `KSP-TRANSPORT-007` compliance target.
|
||
//! The candidate surface therefore exposes typed wrappers for all 52 current audited Solana HTTP methods while retaining 14 removed historical descriptors.
|
||
//! `0.2.7-pre.002` adds the provider-neutral WebSocket settings foundation, redacted endpoint URLs, explicit protocol-family discrimination, local session and
|
||
//! subscription identities, observable lifecycle states and safe snapshots. `0.2.7-pre.004` adds the first physical WebSocket runtime with one
|
||
//! actor-owned socket,
|
||
//! bounded handshake, command/pending JSON-RPC flow and deterministic local-server fixtures. `0.2.7-pre.005` adds explicit bounded shutdown, adversarial
|
||
//! request/frame/message limits and control-frame handling. `0.2.7-pre.006` adds the typed subscription registry with stable local IDs and internal remote-ID
|
||
//! routing. `0.2.7-pre.007` adds finite reconnect, deterministic resubscribe and continuity-gap tracking. `0.2.7-pre.008` makes per-subscription notification
|
||
//! backpressure terminal and observable, preserves safe terminal error codes, performs best-effort remote cleanup and proves bounded capacity reuse.
|
||
//! `0.2.7-pre.009` opens the first stable typed WebSocket wrappers for account, program-account and transaction-log subscriptions without exposing a raw
|
||
//! provider-extension subscription API. `0.2.8-pre.002` adds a Helius LaserStream WebSocket protocol discriminator and two typed protocol facades while
|
||
//! keeping the `WsSession` actor/socket implementation unique and the historical generic constructor standard-only.
|
||
//! `0.2.8-pre.003` initially exposed the six standard families unambiguously supported by the audited Helius pages; `0.2.8-pre.009` reconciles the current
|
||
//! Helius documentation and adds the now-documented unstable `slotsUpdatesSubscribe` pair while keeping explicitly unsupported block/vote pairs absent.
|
||
//! `0.2.8-pre.005` adds the typed Helius `transactionSubscribe` request contract and provider filter/options validation. `0.2.8-pre.006` integrates the live
|
||
//! transaction handle and typed `transactionNotification` union into the same actor-owned registry, remote-ID remap, unsubscribe-race handling and
|
||
//! per-subscription backpressure path.
|
||
//! `0.2.9-pre.002` opens the Yellowstone gRPC N1 engine foundation with Transport-owned redacted settings, bounded reconnect/channel/message policies, the
|
||
//! published Yellowstone protobuf dependency and a lazy Tonic HTTP/2 channel wrapper that exposes no raw Tonic or upstream protobuf types.
|
||
//! `0.2.9-pre.003` adds bounded TLS/WebPKI connection establishment, generic redacted ASCII request metadata and the seven standard Yellowstone unary RPCs
|
||
//! through KSP-owned DTOs.
|
||
//! `0.2.9-pre.004` materializes the provider-neutral standard `SubscribeRequest` foundation: all seven named filter maps, global filter-name bounds/uniqueness,
|
||
//! commitment, ordered account-data slices, ping and `from_slot`. Family-specific account/slot filters land in `pre.005`; transaction/block filters remain
|
||
//! staged for `pre.007–008`.
|
||
//! `0.2.9-pre.006` normalizes the five unambiguously HTTP-owned private implementation modules with an `http_` prefix while preserving shared `rpc_*`,
|
||
//! JSON-RPC, error and constants modules.
|
||
//! `0.2.9-pre.007` completes the standard transaction/transaction-status filters and storage-wire projections; `pre.008` completes Blocks, block-meta and
|
||
//! entry projections. `0.2.9-pre.009` promotes those protobuf bridges into runtime and opens one KSP-owned bounded bidirectional `Subscribe` session with
|
||
//! request mutation, automatic server-Ping reply, observable Pong, normal server half-close, terminal backpressure and bounded graceful shutdown.
|
||
//! `0.2.9-pre.010` activates the bounded KSP-owned reconnect policy, deterministic replay from the latest accepted request and highest observed slot,
|
||
//! conservative ReplayInfo-based continuity-gap observability and bounded duplicate observation without claiming exactly-once or lossless delivery.
|
||
|
||
mod constants;
|
||
mod error;
|
||
mod grpc_channel;
|
||
mod grpc_settings;
|
||
mod grpc_stream;
|
||
mod grpc_subscribe;
|
||
mod grpc_unary;
|
||
mod http_client;
|
||
mod http_executor;
|
||
mod http_pool;
|
||
mod http_resilience;
|
||
mod http_settings;
|
||
mod json_rpc;
|
||
mod rpc_accounts;
|
||
mod rpc_blocks;
|
||
mod rpc_canary;
|
||
mod rpc_cluster;
|
||
mod rpc_common;
|
||
mod rpc_economics;
|
||
mod rpc_method;
|
||
mod rpc_tokens;
|
||
mod rpc_transactions;
|
||
mod ws_accounts;
|
||
mod ws_blocks;
|
||
mod ws_cluster;
|
||
mod ws_helius_transactions;
|
||
mod ws_lifecycle;
|
||
mod ws_protocol_session;
|
||
mod ws_session;
|
||
mod ws_settings;
|
||
mod ws_subscription;
|
||
mod ws_transactions;
|
||
|
||
/// Error code used when no logical endpoint can satisfy a request.
|
||
pub use self::error::ERROR_CODE_ENDPOINT_SELECTION_FAILED;
|
||
/// Error code used when bounded Yellowstone gRPC runtime capacity is exhausted.
|
||
pub use self::error::ERROR_CODE_GRPC_BACKPRESSURE_OVERFLOW;
|
||
/// Error code used when a Yellowstone gRPC channel cannot be prepared safely.
|
||
pub use self::error::ERROR_CODE_GRPC_CHANNEL_FAILED;
|
||
/// Error code used when a Yellowstone gRPC subscribe session is no longer available.
|
||
pub use self::error::ERROR_CODE_GRPC_SESSION_CLOSED;
|
||
/// Error code used when a Yellowstone gRPC endpoint returns a remote status.
|
||
pub use self::error::ERROR_CODE_GRPC_STATUS;
|
||
/// Error code used when an HTTP connection cannot be established.
|
||
pub use self::error::ERROR_CODE_HTTP_CONNECTION_FAILED;
|
||
/// Error code used when an HTTP request fails after connection establishment.
|
||
pub use self::error::ERROR_CODE_HTTP_REQUEST_FAILED;
|
||
/// Error code used when a decoded response cannot satisfy the expected KSP transport contract.
|
||
pub use self::error::ERROR_CODE_INVALID_RESPONSE;
|
||
/// Error code used when typed Solana RPC parameters violate a locally enforceable method contract.
|
||
pub use self::error::ERROR_CODE_INVALID_RPC_PARAMETERS;
|
||
/// Error code used when HTTP transport runtime settings are invalid.
|
||
pub use self::error::ERROR_CODE_INVALID_SETTINGS;
|
||
/// Error code used when an HTTP JSON-RPC payload cannot be decoded as JSON.
|
||
pub use self::error::ERROR_CODE_JSON_DECODE_FAILED;
|
||
/// Error code used when a JSON-RPC request cannot be encoded.
|
||
pub use self::error::ERROR_CODE_JSON_ENCODE_FAILED;
|
||
/// Error code used when a decoded JSON-RPC envelope violates protocol invariants.
|
||
pub use self::error::ERROR_CODE_JSON_RPC_PROTOCOL_INVALID;
|
||
/// Error code used when a historically documented RPC method has been removed from the targeted runtime.
|
||
pub use self::error::ERROR_CODE_METHOD_REMOVED;
|
||
/// Error code used when an endpoint or provider rate-limits a request.
|
||
pub use self::error::ERROR_CODE_RATE_LIMITED;
|
||
/// Error code used when a remote endpoint returns an application-level JSON-RPC error.
|
||
pub use self::error::ERROR_CODE_RPC_APPLICATION_ERROR;
|
||
/// Error code used when a transport deadline expires.
|
||
pub use self::error::ERROR_CODE_TIMEOUT;
|
||
/// Error code used when bounded WebSocket runtime capacity is exhausted.
|
||
pub use self::error::ERROR_CODE_WS_BACKPRESSURE_OVERFLOW;
|
||
/// Error code used when a physical WebSocket connection or handshake fails.
|
||
pub use self::error::ERROR_CODE_WS_CONNECTION_FAILED;
|
||
/// Error code used when WebSocket wire data violates protocol invariants.
|
||
pub use self::error::ERROR_CODE_WS_PROTOCOL_ERROR;
|
||
/// Error code used when a WebSocket session is no longer available.
|
||
pub use self::error::ERROR_CODE_WS_SESSION_CLOSED;
|
||
/// Yellowstone gRPC channel owned by KSP Transport.
|
||
pub use self::grpc_channel::YellowstoneGrpcChannel;
|
||
/// Open cluster or network descriptor used by Yellowstone gRPC endpoint settings.
|
||
pub use self::grpc_settings::YellowstoneGrpcClusterName;
|
||
/// Runtime settings for one named Yellowstone gRPC endpoint.
|
||
pub use self::grpc_settings::YellowstoneGrpcEndpointSettings;
|
||
/// Runtime Yellowstone gRPC endpoint URL with redacted diagnostics.
|
||
pub use self::grpc_settings::YellowstoneGrpcEndpointUrl;
|
||
/// Validated public or secret ASCII metadata attached to Yellowstone gRPC requests.
|
||
pub use self::grpc_settings::YellowstoneGrpcMetadataEntry;
|
||
/// Open provider descriptor used by Yellowstone gRPC endpoint settings.
|
||
pub use self::grpc_settings::YellowstoneGrpcProviderName;
|
||
/// Bounded reconnect settings owned by the Yellowstone gRPC runtime.
|
||
pub use self::grpc_settings::YellowstoneGrpcReconnectSettings;
|
||
/// Runtime limits and lifecycle settings for one Yellowstone gRPC channel/session path.
|
||
pub use self::grpc_settings::YellowstoneGrpcSessionSettings;
|
||
/// Complete runtime settings consumed by the KSP Yellowstone gRPC transport engine.
|
||
pub use self::grpc_settings::YellowstoneGrpcTransportSettings;
|
||
/// Standard Yellowstone bidirectional Subscribe session.
|
||
pub use self::grpc_stream::SolanaYellowstoneGrpcSubscribeSession;
|
||
/// Safe Yellowstone reconnect/replay continuity snapshot.
|
||
pub use self::grpc_stream::YellowstoneGrpcSubscribeSnapshot;
|
||
/// Cloneable latest-value observer for one standard Yellowstone Subscribe session snapshot.
|
||
pub use self::grpc_stream::YellowstoneGrpcSubscribeSnapshotSource;
|
||
/// Safe Yellowstone bidirectional Subscribe lifecycle state.
|
||
pub use self::grpc_stream::YellowstoneGrpcSubscribeState;
|
||
/// One validated standard Yellowstone account predicate.
|
||
pub use self::grpc_subscribe::YellowstoneAccountFilterPredicate;
|
||
/// Typed account payload carried by one standard Yellowstone account update.
|
||
pub use self::grpc_subscribe::YellowstoneAccountInfo;
|
||
/// Lamport comparison used by standard Yellowstone account filters.
|
||
pub use self::grpc_subscribe::YellowstoneAccountLamportsFilter;
|
||
/// Validated standard Yellowstone account memcmp predicate.
|
||
pub use self::grpc_subscribe::YellowstoneAccountMemcmp;
|
||
/// Encoding selected by one Yellowstone account memcmp predicate.
|
||
pub use self::grpc_subscribe::YellowstoneAccountMemcmpEncoding;
|
||
/// Standard Yellowstone account-update projection owned by KSP.
|
||
pub use self::grpc_subscribe::YellowstoneAccountUpdate;
|
||
/// One standard Yellowstone account-data slice.
|
||
pub use self::grpc_subscribe::YellowstoneAccountsDataSlice;
|
||
/// Metadata-only standard Yellowstone block update.
|
||
pub use self::grpc_subscribe::YellowstoneBlockMetaUpdate;
|
||
/// Rewards container carried by Yellowstone block and block-meta updates.
|
||
pub use self::grpc_subscribe::YellowstoneBlockRewards;
|
||
/// Full standard Yellowstone block update.
|
||
pub use self::grpc_subscribe::YellowstoneBlockUpdate;
|
||
/// One compiled instruction from the Yellowstone Solana-storage transaction wire.
|
||
pub use self::grpc_subscribe::YellowstoneCompiledInstruction;
|
||
/// Wire-preserving KSP representation of a standard Yellowstone Cuckoo filter.
|
||
pub use self::grpc_subscribe::YellowstoneCuckooFilter;
|
||
/// Hash algorithm carried by a standard Yellowstone Cuckoo filter.
|
||
pub use self::grpc_subscribe::YellowstoneCuckooHashAlgorithm;
|
||
/// One Yellowstone block-entry payload reused by block and standalone entry updates.
|
||
pub use self::grpc_subscribe::YellowstoneEntryInfo;
|
||
/// Standalone standard Yellowstone entry update.
|
||
pub use self::grpc_subscribe::YellowstoneEntryUpdate;
|
||
/// Fixed-width 32-byte hash from the Yellowstone Solana-storage transaction wire.
|
||
pub use self::grpc_subscribe::YellowstoneHashBytes;
|
||
/// One inner instruction from Yellowstone transaction status metadata.
|
||
pub use self::grpc_subscribe::YellowstoneInnerInstruction;
|
||
/// One indexed inner-instruction group from Yellowstone transaction status metadata.
|
||
pub use self::grpc_subscribe::YellowstoneInnerInstructions;
|
||
/// One address-table lookup from a Yellowstone transaction message.
|
||
pub use self::grpc_subscribe::YellowstoneMessageAddressTableLookup;
|
||
/// Return-data payload from Yellowstone transaction status metadata.
|
||
pub use self::grpc_subscribe::YellowstoneReturnData;
|
||
/// One reward entry from Yellowstone transaction status metadata.
|
||
pub use self::grpc_subscribe::YellowstoneReward;
|
||
/// Reward classification from the Yellowstone Solana-storage wire.
|
||
pub use self::grpc_subscribe::YellowstoneRewardType;
|
||
/// Current standard Yellowstone slot status.
|
||
pub use self::grpc_subscribe::YellowstoneSlotStatus;
|
||
/// Standard Yellowstone slot-update projection owned by KSP.
|
||
pub use self::grpc_subscribe::YellowstoneSlotUpdate;
|
||
/// Solana transaction body carried by Yellowstone storage protobuf messages.
|
||
pub use self::grpc_subscribe::YellowstoneStoredTransaction;
|
||
/// Complete account-family filter group for standard Yellowstone Subscribe.
|
||
pub use self::grpc_subscribe::YellowstoneSubscribeAccountFilter;
|
||
/// Complete block-family filter group for standard Yellowstone Subscribe.
|
||
pub use self::grpc_subscribe::YellowstoneSubscribeBlockFilter;
|
||
/// Empty filter marker activating the standard Yellowstone blocks-meta family.
|
||
pub use self::grpc_subscribe::YellowstoneSubscribeBlocksMetaFilter;
|
||
/// Empty filter marker activating the standard Yellowstone entry family.
|
||
pub use self::grpc_subscribe::YellowstoneSubscribeEntryFilter;
|
||
/// Validated globally unique logical filter name for standard Yellowstone Subscribe maps.
|
||
pub use self::grpc_subscribe::YellowstoneSubscribeFilterName;
|
||
/// Optional ping mutation carried by the standard Yellowstone Subscribe request.
|
||
pub use self::grpc_subscribe::YellowstoneSubscribePing;
|
||
/// Standard Yellowstone server Ping update.
|
||
pub use self::grpc_subscribe::YellowstoneSubscribePingUpdate;
|
||
/// Standard Yellowstone server Pong update.
|
||
pub use self::grpc_subscribe::YellowstoneSubscribePongUpdate;
|
||
/// Provider-neutral standard Yellowstone Subscribe request.
|
||
pub use self::grpc_subscribe::YellowstoneSubscribeRequest;
|
||
/// Opaque deterministic identity for one complete Yellowstone Subscribe request.
|
||
pub use self::grpc_subscribe::YellowstoneSubscribeRequestIdentity;
|
||
/// Complete slot-family filter group for standard Yellowstone Subscribe.
|
||
pub use self::grpc_subscribe::YellowstoneSubscribeSlotFilter;
|
||
/// Complete transaction-family filter shared by transactions and transaction-status maps.
|
||
pub use self::grpc_subscribe::YellowstoneSubscribeTransactionFilter;
|
||
/// Any standard Yellowstone Subscribe update.
|
||
pub use self::grpc_subscribe::YellowstoneSubscribeUpdate;
|
||
/// Optional token-account owner expansion for current Yellowstone transaction filters.
|
||
pub use self::grpc_subscribe::YellowstoneTokenAccountExpansion;
|
||
/// One pre/post token balance from Yellowstone transaction status metadata.
|
||
pub use self::grpc_subscribe::YellowstoneTokenBalance;
|
||
/// Optional Transaction V1 inline budget configuration from Yellowstone Solana-storage.
|
||
pub use self::grpc_subscribe::YellowstoneTransactionConfig;
|
||
/// Opaque runtime transaction error bytes from Yellowstone Solana-storage.
|
||
pub use self::grpc_subscribe::YellowstoneTransactionError;
|
||
/// Complete transaction info carried by Yellowstone transaction and block updates.
|
||
pub use self::grpc_subscribe::YellowstoneTransactionInfo;
|
||
/// Complete current Yellowstone transaction message.
|
||
pub use self::grpc_subscribe::YellowstoneTransactionMessage;
|
||
/// Solana transaction message header from Yellowstone Solana-storage.
|
||
pub use self::grpc_subscribe::YellowstoneTransactionMessageHeader;
|
||
/// Fixed-width transaction signature attached to Yellowstone updates.
|
||
pub use self::grpc_subscribe::YellowstoneTransactionSignature;
|
||
/// Validated base58 transaction-signature selector for Yellowstone transaction filters.
|
||
pub use self::grpc_subscribe::YellowstoneTransactionSignatureSelector;
|
||
/// Complete Yellowstone transaction status metadata.
|
||
pub use self::grpc_subscribe::YellowstoneTransactionStatusMeta;
|
||
/// Lightweight Yellowstone transaction-status update.
|
||
pub use self::grpc_subscribe::YellowstoneTransactionStatusUpdate;
|
||
/// Full Yellowstone transaction update.
|
||
pub use self::grpc_subscribe::YellowstoneTransactionUpdate;
|
||
/// UI token amount from Yellowstone transaction status metadata.
|
||
pub use self::grpc_subscribe::YellowstoneUiTokenAmount;
|
||
/// Timestamp attached to standard Yellowstone update envelopes.
|
||
pub use self::grpc_subscribe::YellowstoneUpdateTimestamp;
|
||
/// Standard Solana Yellowstone unary facade over one KSP-owned physical gRPC channel.
|
||
pub use self::grpc_unary::SolanaYellowstoneGrpcUnaryClient;
|
||
/// Block height returned by the standard Yellowstone unary surface.
|
||
pub use self::grpc_unary::YellowstoneBlockHeight;
|
||
/// Result of a standard Yellowstone blockhash-validity check.
|
||
pub use self::grpc_unary::YellowstoneBlockhashValidity;
|
||
/// Latest blockhash returned by the standard Yellowstone unary surface.
|
||
pub use self::grpc_unary::YellowstoneLatestBlockhash;
|
||
/// Echo returned by the standard Yellowstone unary Ping RPC.
|
||
pub use self::grpc_unary::YellowstonePong;
|
||
/// Replay availability advertised by the standard Yellowstone unary surface.
|
||
pub use self::grpc_unary::YellowstoneReplayInfo;
|
||
/// Current slot returned by the standard Yellowstone unary surface.
|
||
pub use self::grpc_unary::YellowstoneSlot;
|
||
/// Bounded endpoint version returned by the standard Yellowstone unary surface.
|
||
pub use self::grpc_unary::YellowstoneVersionInfo;
|
||
/// Passive runtime availability reported for one logical HTTP endpoint.
|
||
pub use self::http_client::HttpEndpointAvailability;
|
||
/// Shareable logical HTTP endpoint client owned by KSP Transport.
|
||
pub use self::http_client::HttpEndpointClient;
|
||
/// Safe routing snapshot for one configured endpoint role.
|
||
pub use self::http_client::HttpEndpointRoleSnapshot;
|
||
/// Safe metadata snapshot for one logical HTTP endpoint.
|
||
pub use self::http_client::HttpEndpointSnapshot;
|
||
/// Typed RPC value paired with the safe identity of the HTTP endpoint that produced the successful response.
|
||
pub use self::http_executor::HttpObservedValue;
|
||
/// Result of one logical endpoint selection.
|
||
pub use self::http_pool::HttpEndpointSelection;
|
||
/// Runtime admission permit for one HTTP request.
|
||
pub use self::http_pool::HttpRequestPermit;
|
||
/// Shareable logical HTTP endpoint pool with priority routing, admission limits and bounded deadlines.
|
||
pub use self::http_pool::HttpTransportPool;
|
||
/// Safe snapshot of the logical HTTP endpoint pool.
|
||
pub use self::http_pool::HttpTransportPoolSnapshot;
|
||
/// Dispatch knowledge used to prevent ambiguous automatic resubmission.
|
||
pub use self::http_resilience::HttpDispatchState;
|
||
/// Transport-level cause considered by the bounded retry policy.
|
||
pub use self::http_resilience::HttpRetryCause;
|
||
/// Result of evaluating one bounded transport retry opportunity.
|
||
pub use self::http_resilience::HttpRetryDecision;
|
||
/// Evaluates the centralized bounded HTTP retry policy for one audited RPC method.
|
||
pub use self::http_resilience::evaluate_transport_retry;
|
||
/// Open cluster or network descriptor used by HTTP endpoint settings.
|
||
pub use self::http_settings::HttpClusterName;
|
||
/// Runtime settings for one role declared by an HTTP endpoint.
|
||
pub use self::http_settings::HttpEndpointRoleSettings;
|
||
/// Runtime settings for one named Solana HTTP endpoint.
|
||
pub use self::http_settings::HttpEndpointSettings;
|
||
/// Runtime HTTP endpoint URL with redacted diagnostics.
|
||
pub use self::http_settings::HttpEndpointUrl;
|
||
/// Open provider descriptor used by HTTP endpoint settings.
|
||
pub use self::http_settings::HttpProviderName;
|
||
/// Open request-kind descriptor used by logical endpoint capabilities.
|
||
pub use self::http_settings::HttpRequestKind;
|
||
/// Bounded retry settings owned by the HTTP transport runtime.
|
||
pub use self::http_settings::HttpRetrySettings;
|
||
/// Local limits attached to one logical HTTP endpoint role.
|
||
pub use self::http_settings::HttpRoleLimits;
|
||
/// Open logical endpoint role descriptor.
|
||
pub use self::http_settings::HttpRoleName;
|
||
/// Complete runtime settings consumed by the Solana HTTP transport foundation.
|
||
pub use self::http_settings::HttpTransportSettings;
|
||
/// JSON-RPC 2.0 error payload returned by a remote Solana endpoint.
|
||
pub use self::json_rpc::JsonRpcErrorObject;
|
||
/// Validated JSON-RPC 2.0 error response.
|
||
pub use self::json_rpc::JsonRpcErrorResponse;
|
||
/// JSON-RPC 2.0 HTTP request envelope emitted by KSP.
|
||
pub use self::json_rpc::JsonRpcRequest;
|
||
/// Validated JSON-RPC 2.0 HTTP response.
|
||
pub use self::json_rpc::JsonRpcResponse;
|
||
/// Validated JSON-RPC 2.0 success response.
|
||
pub use self::json_rpc::JsonRpcSuccessResponse;
|
||
/// Parses and validates a JSON-RPC HTTP response from UTF-8 JSON text.
|
||
pub use self::json_rpc::parse_json_rpc_response_text;
|
||
/// Validates a decoded JSON value as one JSON-RPC HTTP response.
|
||
pub use self::json_rpc::parse_json_rpc_response_value;
|
||
/// Typed transport-level Solana account without Program/SPL decoding.
|
||
pub use self::rpc_accounts::SolanaAccount;
|
||
/// Address and lamport balance returned by `getLargestAccounts`.
|
||
pub use self::rpc_accounts::SolanaAccountBalance;
|
||
/// Wire-preserving account data returned by Solana account HTTP and WebSocket methods.
|
||
pub use self::rpc_accounts::SolanaAccountData;
|
||
/// Account-data encoding accepted by Solana account HTTP and WebSocket methods.
|
||
pub use self::rpc_accounts::SolanaAccountEncoding;
|
||
/// Shared account configuration used by account-info and token-account list methods.
|
||
pub use self::rpc_accounts::SolanaAccountInfoConfig;
|
||
/// Byte range requested from account data without decoding it locally.
|
||
pub use self::rpc_accounts::SolanaDataSliceConfig;
|
||
/// One public key plus its account returned by account-list RPC methods.
|
||
pub use self::rpc_accounts::SolanaKeyedAccount;
|
||
/// Optional configuration for `getLargestAccounts`.
|
||
pub use self::rpc_accounts::SolanaLargestAccountsConfig;
|
||
/// Filter accepted by `getLargestAccounts`.
|
||
pub use self::rpc_accounts::SolanaLargestAccountsFilter;
|
||
/// Bytes used by a `memcmp` program-account filter.
|
||
pub use self::rpc_accounts::SolanaMemcmpBytes;
|
||
/// One `memcmp` filter applied to account data.
|
||
pub use self::rpc_accounts::SolanaMemcmpFilter;
|
||
/// Parsed account payload returned by the RPC node for `jsonParsed` account data.
|
||
pub use self::rpc_accounts::SolanaParsedAccountData;
|
||
/// Filter accepted by the current `getProgramAccounts` implementation.
|
||
pub use self::rpc_accounts::SolanaProgramAccountFilter;
|
||
/// Configuration for `getProgramAccounts`.
|
||
pub use self::rpc_accounts::SolanaProgramAccountsConfig;
|
||
/// Result union returned by `getProgramAccounts` with or without an RPC context.
|
||
pub use self::rpc_accounts::SolanaProgramAccountsResult;
|
||
/// Commitment distribution returned by `getBlockCommitment`.
|
||
pub use self::rpc_blocks::SolanaBlockCommitment;
|
||
/// Block-production counts returned by `getBlockProduction` before the shared RPC context wrapper is applied.
|
||
pub use self::rpc_blocks::SolanaBlockProduction;
|
||
/// Optional configuration accepted by `getBlockProduction`.
|
||
pub use self::rpc_blocks::SolanaBlockProductionConfig;
|
||
/// Slot range accepted inside `getBlockProduction` configuration.
|
||
pub use self::rpc_blocks::SolanaBlockProductionRange;
|
||
/// Effective range reported inside `getBlockProduction` results.
|
||
pub use self::rpc_blocks::SolanaBlockProductionResultRange;
|
||
/// One reward entry returned in a confirmed block.
|
||
pub use self::rpc_blocks::SolanaBlockReward;
|
||
/// One transaction entry returned inside a confirmed block.
|
||
pub use self::rpc_blocks::SolanaBlockTransaction;
|
||
/// Confirmed block wire result returned by `getBlock` when the RPC result is non-null.
|
||
pub use self::rpc_blocks::SolanaConfirmedBlock;
|
||
/// Modern configuration object accepted by `getBlock`.
|
||
pub use self::rpc_blocks::SolanaGetBlockConfig;
|
||
/// One entry returned by `getRecentPerformanceSamples`.
|
||
pub use self::rpc_blocks::SolanaPerformanceSample;
|
||
/// Transaction detail level accepted by modern `getBlock` requests.
|
||
pub use self::rpc_blocks::SolanaTransactionDetails;
|
||
/// Optional typed configuration for the `getBalance` canary.
|
||
pub use self::rpc_canary::GetBalanceConfig;
|
||
/// Typed lamport balance returned by the `getBalance` canary.
|
||
pub use self::rpc_canary::GetBalanceResult;
|
||
/// Typed genesis hash returned by the `getGenesisHash` canary.
|
||
pub use self::rpc_canary::SolanaGenesisHash;
|
||
/// Typed healthy result returned by the `getHealth` canary.
|
||
pub use self::rpc_canary::SolanaNodeHealth;
|
||
/// Typed software-version response returned by the `getVersion` canary.
|
||
pub use self::rpc_canary::SolanaNodeVersion;
|
||
/// Contact information returned for one cluster node.
|
||
pub use self::rpc_cluster::SolanaClusterNode;
|
||
/// Epoch-credit history entry returned by `getVoteAccounts`.
|
||
pub use self::rpc_cluster::SolanaEpochCredits;
|
||
/// Epoch information returned by `getEpochInfo`.
|
||
pub use self::rpc_cluster::SolanaEpochInfo;
|
||
/// Epoch schedule returned by `getEpochSchedule`.
|
||
pub use self::rpc_cluster::SolanaEpochSchedule;
|
||
/// Leader schedule mapping validator identities to relative epoch slot indices.
|
||
pub use self::rpc_cluster::SolanaLeaderSchedule;
|
||
/// Optional configuration accepted by `getLeaderSchedule`.
|
||
pub use self::rpc_cluster::SolanaLeaderScheduleConfig;
|
||
/// Typed parameter overload for `getLeaderSchedule`.
|
||
pub use self::rpc_cluster::SolanaLeaderScheduleRequest;
|
||
/// Highest full and optional incremental snapshot slots returned by `getHighestSnapshotSlot`.
|
||
pub use self::rpc_cluster::SolanaSnapshotSlotInfo;
|
||
/// One validator vote-account record returned by `getVoteAccounts`.
|
||
pub use self::rpc_cluster::SolanaVoteAccountInfo;
|
||
/// Current and delinquent validator vote-account groups returned by `getVoteAccounts`.
|
||
pub use self::rpc_cluster::SolanaVoteAccountStatus;
|
||
/// Configuration accepted by `getVoteAccounts`.
|
||
pub use self::rpc_cluster::SolanaVoteAccountsConfig;
|
||
/// Commitment level accepted by typed Solana HTTP and WebSocket adapters.
|
||
pub use self::rpc_common::SolanaCommitment;
|
||
/// Optional commitment-only configuration shared by typed Solana RPC methods.
|
||
pub use self::rpc_common::SolanaCommitmentConfig;
|
||
/// Optional commitment and minimum-context configuration shared by typed Solana HTTP RPC methods.
|
||
pub use self::rpc_common::SolanaContextConfig;
|
||
/// Typed Solana RPC context shared by contextual HTTP and WebSocket responses.
|
||
pub use self::rpc_common::SolanaRpcContext;
|
||
/// Generic contextual result returned by typed Solana HTTP and WebSocket adapters.
|
||
pub use self::rpc_common::SolanaRpcResponse;
|
||
/// Inflation-governor values returned by `getInflationGovernor`.
|
||
pub use self::rpc_economics::SolanaInflationGovernor;
|
||
/// Current inflation-rate values returned by `getInflationRate`.
|
||
pub use self::rpc_economics::SolanaInflationRate;
|
||
/// One non-null positional reward returned by `getInflationReward`.
|
||
pub use self::rpc_economics::SolanaInflationReward;
|
||
/// Optional epoch/context configuration accepted by `getInflationReward`.
|
||
pub use self::rpc_economics::SolanaInflationRewardConfig;
|
||
/// Supply totals returned inside the contextual `getSupply` response.
|
||
pub use self::rpc_economics::SolanaSupply;
|
||
/// Optional configuration accepted by `getSupply`.
|
||
pub use self::rpc_economics::SolanaSupplyConfig;
|
||
/// Functional category used by the audited Solana HTTP JSON-RPC registry.
|
||
pub use self::rpc_method::HttpRpcCategory;
|
||
/// Release that owns typed KSP coverage for one audited HTTP RPC method.
|
||
pub use self::rpc_method::HttpRpcCoverageRelease;
|
||
/// Immutable audited descriptor for one Solana HTTP JSON-RPC method.
|
||
pub use self::rpc_method::HttpRpcMethodDescriptor;
|
||
/// Documentation lifecycle status of one audited RPC method.
|
||
pub use self::rpc_method::RpcDocumentationStatus;
|
||
/// Technical operation kind used to separate reads, simulations and submissions.
|
||
pub use self::rpc_method::RpcOperationKind;
|
||
/// Request-form policy attached to a stable RPC method.
|
||
pub use self::rpc_method::RpcRequestFormStatus;
|
||
/// Runtime availability status of one audited RPC method.
|
||
pub use self::rpc_method::RpcRuntimeStatus;
|
||
/// HTTP transport retry classification attached to an RPC method descriptor.
|
||
pub use self::rpc_method::TransportRetryClass;
|
||
/// Returns all current Solana HTTP RPC method descriptors audited for the `0.2.1`–`0.2.4` coverage sequence.
|
||
pub use self::rpc_method::current_http_rpc_methods;
|
||
/// Finds a current or historical standard Solana HTTP RPC descriptor by exact method name.
|
||
pub use self::rpc_method::find_http_rpc_method;
|
||
/// Returns historically documented deprecated HTTP RPC descriptors retained for compliance history.
|
||
pub use self::rpc_method::historical_http_rpc_methods;
|
||
/// Token-account balance entry returned by `getTokenLargestAccounts`.
|
||
pub use self::rpc_tokens::SolanaTokenAccountBalance;
|
||
/// Exclusive selector accepted by token-account list RPC methods.
|
||
pub use self::rpc_tokens::SolanaTokenAccountSelector;
|
||
/// Token amount returned by Solana HTTP token RPC methods.
|
||
pub use self::rpc_tokens::SolanaTokenAmount;
|
||
/// Confirmed transaction result returned by `getTransaction` when the RPC result is non-null.
|
||
pub use self::rpc_transactions::SolanaConfirmedTransaction;
|
||
/// Wire-preserving transaction payload returned by `getTransaction`.
|
||
pub use self::rpc_transactions::SolanaEncodedTransaction;
|
||
/// Modern configuration object accepted by `getTransaction`.
|
||
pub use self::rpc_transactions::SolanaGetTransactionConfig;
|
||
/// Blockhash information returned by `getLatestBlockhash` and optionally by simulation.
|
||
pub use self::rpc_transactions::SolanaLatestBlockhash;
|
||
/// One recent prioritization-fee sample returned by `getRecentPrioritizationFees`.
|
||
pub use self::rpc_transactions::SolanaPrioritizationFee;
|
||
/// Configuration accepted by `requestAirdrop`.
|
||
pub use self::rpc_transactions::SolanaRequestAirdropConfig;
|
||
/// Configuration accepted by `sendTransaction` without changing KSP transport retry semantics.
|
||
pub use self::rpc_transactions::SolanaSendTransactionConfig;
|
||
/// One ordered signature record returned by `getSignaturesForAddress`.
|
||
pub use self::rpc_transactions::SolanaSignatureInfo;
|
||
/// One non-null position returned by `getSignatureStatuses`.
|
||
pub use self::rpc_transactions::SolanaSignatureStatus;
|
||
/// Optional historical-search configuration accepted by `getSignatureStatuses`.
|
||
pub use self::rpc_transactions::SolanaSignatureStatusesConfig;
|
||
/// Pagination and context configuration accepted by `getSignaturesForAddress`.
|
||
pub use self::rpc_transactions::SolanaSignaturesForAddressConfig;
|
||
/// Configuration accepted by `simulateTransaction`.
|
||
pub use self::rpc_transactions::SolanaSimulateTransactionConfig;
|
||
/// Rich result payload returned inside the contextual `simulateTransaction` response.
|
||
pub use self::rpc_transactions::SolanaSimulateTransactionResult;
|
||
/// Account-return configuration nested under `simulateTransaction`.
|
||
pub use self::rpc_transactions::SolanaSimulationAccountsConfig;
|
||
/// Binary encoding accepted for serialized transaction input payloads.
|
||
pub use self::rpc_transactions::SolanaTransactionBinaryEncoding;
|
||
/// Confirmation state reported for a signature or transaction status.
|
||
pub use self::rpc_transactions::SolanaTransactionConfirmationStatus;
|
||
/// Encoding accepted by `getTransaction`, including its retained legacy `binary` alias.
|
||
pub use self::rpc_transactions::SolanaTransactionEncoding;
|
||
/// Transaction version reported by `getTransaction` when the version field is present.
|
||
pub use self::rpc_transactions::SolanaTransactionVersion;
|
||
/// Three-state wire field used when Solana distinguishes omission from an explicit JSON `null`.
|
||
pub use self::rpc_transactions::SolanaWireField;
|
||
/// Configuration accepted by the standard Solana `accountSubscribe` WebSocket method.
|
||
pub use self::ws_accounts::SolanaAccountSubscribeConfig;
|
||
/// One `programNotification` payload preserving contextual and non-contextual upstream forms.
|
||
pub use self::ws_accounts::SolanaProgramNotification;
|
||
/// Configuration accepted by the standard Solana `programSubscribe` WebSocket method.
|
||
pub use self::ws_accounts::SolanaProgramSubscribeConfig;
|
||
/// Typed value carried inside an unstable Solana `blockNotification` response.
|
||
pub use self::ws_blocks::SolanaBlockNotification;
|
||
/// Optional configuration accepted by unstable Solana `blockSubscribe`.
|
||
pub use self::ws_blocks::SolanaBlockSubscribeConfig;
|
||
/// Filter accepted by unstable Solana `blockSubscribe`.
|
||
pub use self::ws_blocks::SolanaBlockSubscribeFilter;
|
||
/// Slot relationship reported by the standard Solana `slotNotification` WebSocket method.
|
||
pub use self::ws_cluster::SolanaSlotNotification;
|
||
/// Typed unstable Solana slot-lifecycle update with an unknown-variant fallback.
|
||
pub use self::ws_cluster::SolanaSlotUpdate;
|
||
/// Execution statistics attached to unstable Solana `slotsUpdatesNotification` frozen updates.
|
||
pub use self::ws_cluster::SolanaSlotUpdateStats;
|
||
/// Typed unstable gossip-vote notification delivered by standard Solana `voteSubscribe`.
|
||
pub use self::ws_cluster::SolanaVoteNotification;
|
||
/// Full/accounts-mode notification delivered by Helius `transactionSubscribe`.
|
||
pub use self::ws_helius_transactions::HeliusFullTransactionNotification;
|
||
/// Helius `tokenAccounts` expansion mode accepted by `transactionSubscribe`.
|
||
pub use self::ws_helius_transactions::HeliusTokenAccountsFilter;
|
||
/// Typed Helius `transactionNotification` payload union.
|
||
pub use self::ws_helius_transactions::HeliusTransactionNotification;
|
||
/// Signatures-mode notification delivered by Helius `transactionSubscribe`.
|
||
pub use self::ws_helius_transactions::HeliusTransactionSignatureNotification;
|
||
/// Transaction encoding accepted by Helius `transactionSubscribe`.
|
||
pub use self::ws_helius_transactions::HeliusTransactionSubscribeEncoding;
|
||
/// Helius-specific filter object accepted as the first `transactionSubscribe` parameter.
|
||
pub use self::ws_helius_transactions::HeliusTransactionSubscribeFilter;
|
||
/// Optional Helius `transactionSubscribe` result-shaping configuration.
|
||
pub use self::ws_helius_transactions::HeliusTransactionSubscribeOptions;
|
||
/// Complete typed request contract for Helius `transactionSubscribe` before actor registration.
|
||
pub use self::ws_helius_transactions::HeliusTransactionSubscribeRequest;
|
||
/// Stable local identity assigned to one physical WebSocket session.
|
||
pub use self::ws_lifecycle::WsSessionId;
|
||
/// Safe runtime snapshot for one physical WebSocket session.
|
||
pub use self::ws_lifecycle::WsSessionSnapshot;
|
||
/// Observable lifecycle state of one physical WebSocket session.
|
||
pub use self::ws_lifecycle::WsSessionState;
|
||
/// Stable local identity assigned to one logical WebSocket subscription.
|
||
pub use self::ws_lifecycle::WsSubscriptionId;
|
||
/// WebSocket subscription family represented by one logical subscription.
|
||
pub use self::ws_lifecycle::WsSubscriptionKind;
|
||
/// Safe lifecycle projection for one logical WebSocket subscription.
|
||
pub use self::ws_lifecycle::WsSubscriptionSnapshot;
|
||
/// Observable lifecycle state of one logical WebSocket subscription.
|
||
pub use self::ws_lifecycle::WsSubscriptionState;
|
||
/// Typed facade for one Helius LaserStream WebSocket physical session.
|
||
pub use self::ws_protocol_session::HeliusLaserStreamWsSession;
|
||
/// Typed facade for one standard Solana WebSocket physical session.
|
||
pub use self::ws_protocol_session::SolanaStandardWsSession;
|
||
/// Shareable compatibility handle for one explicitly created standard Solana physical WebSocket session.
|
||
pub use self::ws_session::WsSession;
|
||
/// Open cluster or network descriptor used by WebSocket endpoint settings.
|
||
pub use self::ws_settings::WsClusterName;
|
||
/// Runtime settings for one named WebSocket endpoint.
|
||
pub use self::ws_settings::WsEndpointSettings;
|
||
/// Runtime WebSocket endpoint URL with redacted diagnostics.
|
||
pub use self::ws_settings::WsEndpointUrl;
|
||
/// WebSocket protocol family understood by KSP Transport.
|
||
pub use self::ws_settings::WsProtocolKind;
|
||
/// Open provider descriptor used by WebSocket endpoint settings.
|
||
pub use self::ws_settings::WsProviderName;
|
||
/// Bounded reconnect settings owned by the WebSocket transport runtime.
|
||
pub use self::ws_settings::WsReconnectSettings;
|
||
/// Policy controlling logical resubscription after reconnect.
|
||
pub use self::ws_settings::WsResubscribePolicy;
|
||
/// Runtime limits and lifecycle settings for one physical WebSocket session.
|
||
pub use self::ws_settings::WsSessionSettings;
|
||
/// Complete runtime settings consumed by the KSP WebSocket transport foundation.
|
||
pub use self::ws_settings::WsTransportSettings;
|
||
/// Typed handle for one logical WebSocket subscription.
|
||
pub use self::ws_subscription::WsSubscription;
|
||
/// Typed value carried by a contextual Solana `logsNotification`.
|
||
pub use self::ws_transactions::SolanaLogsNotification;
|
||
/// Filter accepted by the standard Solana `logsSubscribe` WebSocket method.
|
||
pub use self::ws_transactions::SolanaLogsSubscribeFilter;
|
||
/// Typed value carried by standard Solana `signatureNotification` messages.
|
||
pub use self::ws_transactions::SolanaSignatureNotification;
|
||
/// Optional configuration accepted by standard Solana `signatureSubscribe`.
|
||
pub use self::ws_transactions::SolanaSignatureSubscribeConfig;
|
||
|
||
/// Owning tracing target for events emitted by the on-chain transport crate.
|
||
pub(crate) use self::constants::TRACING_TARGET;
|
||
/// Internal Yellowstone Subscribe session opener used by the physical channel.
|
||
pub(crate) use self::grpc_stream::open_yellowstone_subscribe_session;
|
||
/// Internal Yellowstone Subscribe request wire conversion shared with the stream engine.
|
||
pub(crate) use self::grpc_subscribe::yellowstone_subscribe_request_to_wire;
|
||
/// Internal Yellowstone Subscribe update decoder shared with the stream engine.
|
||
pub(crate) use self::grpc_subscribe::yellowstone_subscribe_update_from_wire;
|
||
/// Crate-internal `HttpConcurrencyPermit` state shared across the owning crate.
|
||
pub(crate) use self::http_resilience::HttpConcurrencyPermit;
|
||
/// Crate-internal `HttpRoleRuntime` state shared across the owning crate.
|
||
pub(crate) use self::http_resilience::HttpRoleRuntime;
|
||
/// Crate-internal `RoleAdmissionAttempt` variants used by the owning crate.
|
||
pub(crate) use self::http_resilience::RoleAdmissionAttempt;
|
||
/// Validates endpoint settings.
|
||
pub(crate) use self::http_settings::validate_endpoint_settings;
|
||
/// Decodes one private serde wire type into the shared Transport error domain for typed RPC adapters.
|
||
pub(crate) use self::rpc_common::decode_wire_json;
|
||
/// Parses a base58 public key without echoing its wire value into diagnostics for typed RPC adapters.
|
||
pub(crate) use self::rpc_common::parse_wire_pubkey;
|
||
/// 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.
|
||
pub(crate) use self::ws_subscription::WsNotificationDispatchOutcome;
|
||
/// Crate-internal type-erased notification dispatcher.
|
||
pub(crate) use self::ws_subscription::WsNotificationDispatcher;
|
||
/// Crate-internal actor registration returned after subscribe acknowledgement.
|
||
pub(crate) use self::ws_subscription::WsSubscriptionRegistration;
|
||
/// Crate-internal actor-owned logical subscription runtime entry.
|
||
pub(crate) use self::ws_subscription::WsSubscriptionRuntime;
|
||
/// Crate-internal constructor for bounded typed notification channels with terminal-value classification.
|
||
pub(crate) use self::ws_subscription::typed_notification_channel_with_completion;
|