1109 lines
41 KiB
Rust
1109 lines
41 KiB
Rust
// file: crates/ksp-onchain-transport-lib/src/rpc_method.rs
|
||
// version: 5
|
||
|
||
const CURRENT_HTTP_RPC_METHODS: [crate::HttpRpcMethodDescriptor; 52] = [
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getAccountInfo",
|
||
crate::HttpRpcCategory::Accounts,
|
||
"get_account_info",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getBalance",
|
||
crate::HttpRpcCategory::Accounts,
|
||
"get_balance",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_1,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getLargestAccounts",
|
||
crate::HttpRpcCategory::Accounts,
|
||
"get_largest_accounts",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getMinimumBalanceForRentExemption",
|
||
crate::HttpRpcCategory::Accounts,
|
||
"get_minimum_balance_for_rent_exemption",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getMultipleAccounts",
|
||
crate::HttpRpcCategory::Accounts,
|
||
"get_multiple_accounts",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getProgramAccounts",
|
||
crate::HttpRpcCategory::Accounts,
|
||
"get_program_accounts",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getTokenAccountBalance",
|
||
crate::HttpRpcCategory::Tokens,
|
||
"get_token_account_balance",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getTokenAccountsByDelegate",
|
||
crate::HttpRpcCategory::Tokens,
|
||
"get_token_accounts_by_delegate",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getTokenAccountsByOwner",
|
||
crate::HttpRpcCategory::Tokens,
|
||
"get_token_accounts_by_owner",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getTokenLargestAccounts",
|
||
crate::HttpRpcCategory::Tokens,
|
||
"get_token_largest_accounts",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getTokenSupply",
|
||
crate::HttpRpcCategory::Tokens,
|
||
"get_token_supply",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getFeeForMessage",
|
||
crate::HttpRpcCategory::Transactions,
|
||
"get_fee_for_message",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_3,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getLatestBlockhash",
|
||
crate::HttpRpcCategory::Transactions,
|
||
"get_latest_blockhash",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_3,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getRecentPrioritizationFees",
|
||
crate::HttpRpcCategory::Transactions,
|
||
"get_recent_prioritization_fees",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_3,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getSignaturesForAddress",
|
||
crate::HttpRpcCategory::Transactions,
|
||
"get_signatures_for_address",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_3,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getSignatureStatuses",
|
||
crate::HttpRpcCategory::Transactions,
|
||
"get_signature_statuses",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_3,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getTransaction",
|
||
crate::HttpRpcCategory::Transactions,
|
||
"get_transaction",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::StableWithDeprecatedLegacy,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_3,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getTransactionCount",
|
||
crate::HttpRpcCategory::Transactions,
|
||
"get_transaction_count",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_3,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"isBlockhashValid",
|
||
crate::HttpRpcCategory::Transactions,
|
||
"is_blockhash_valid",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_3,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"requestAirdrop",
|
||
crate::HttpRpcCategory::Transactions,
|
||
"request_airdrop",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::WriteSubmission,
|
||
crate::TransportRetryClass::NeverAfterDispatch,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_3,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"sendTransaction",
|
||
crate::HttpRpcCategory::Transactions,
|
||
"send_transaction",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::WriteSubmission,
|
||
crate::TransportRetryClass::NeverAfterDispatch,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_3,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"simulateTransaction",
|
||
crate::HttpRpcCategory::Transactions,
|
||
"simulate_transaction",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Simulation,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_3,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getBlock",
|
||
crate::HttpRpcCategory::Blocks,
|
||
"get_block",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::StableWithDeprecatedLegacy,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_4,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getBlockCommitment",
|
||
crate::HttpRpcCategory::Blocks,
|
||
"get_block_commitment",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_4,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getBlockHeight",
|
||
crate::HttpRpcCategory::Blocks,
|
||
"get_block_height",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_4,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getBlockProduction",
|
||
crate::HttpRpcCategory::Blocks,
|
||
"get_block_production",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_4,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getBlocks",
|
||
crate::HttpRpcCategory::Blocks,
|
||
"get_blocks",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_4,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getBlocksWithLimit",
|
||
crate::HttpRpcCategory::Blocks,
|
||
"get_blocks_with_limit",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_4,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getBlockTime",
|
||
crate::HttpRpcCategory::Blocks,
|
||
"get_block_time",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_4,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getFirstAvailableBlock",
|
||
crate::HttpRpcCategory::Blocks,
|
||
"get_first_available_block",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_4,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getRecentPerformanceSamples",
|
||
crate::HttpRpcCategory::Blocks,
|
||
"get_recent_performance_samples",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_4,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"minimumLedgerSlot",
|
||
crate::HttpRpcCategory::Blocks,
|
||
"minimum_ledger_slot",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_4,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getClusterNodes",
|
||
crate::HttpRpcCategory::Cluster,
|
||
"get_cluster_nodes",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getEpochInfo",
|
||
crate::HttpRpcCategory::Cluster,
|
||
"get_epoch_info",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getEpochSchedule",
|
||
crate::HttpRpcCategory::Cluster,
|
||
"get_epoch_schedule",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getGenesisHash",
|
||
crate::HttpRpcCategory::Cluster,
|
||
"get_genesis_hash",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_1,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getHealth",
|
||
crate::HttpRpcCategory::Cluster,
|
||
"get_health",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_1,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getHighestSnapshotSlot",
|
||
crate::HttpRpcCategory::Cluster,
|
||
"get_highest_snapshot_slot",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getIdentity",
|
||
crate::HttpRpcCategory::Cluster,
|
||
"get_identity",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getLeaderSchedule",
|
||
crate::HttpRpcCategory::Cluster,
|
||
"get_leader_schedule",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getMaxRetransmitSlot",
|
||
crate::HttpRpcCategory::Cluster,
|
||
"get_max_retransmit_slot",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getMaxShredInsertSlot",
|
||
crate::HttpRpcCategory::Cluster,
|
||
"get_max_shred_insert_slot",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getSlot",
|
||
crate::HttpRpcCategory::Cluster,
|
||
"get_slot",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getSlotLeader",
|
||
crate::HttpRpcCategory::Cluster,
|
||
"get_slot_leader",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getSlotLeaders",
|
||
crate::HttpRpcCategory::Cluster,
|
||
"get_slot_leaders",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getVersion",
|
||
crate::HttpRpcCategory::Cluster,
|
||
"get_version",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_1,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getVoteAccounts",
|
||
crate::HttpRpcCategory::Cluster,
|
||
"get_vote_accounts",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_2,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getInflationGovernor",
|
||
crate::HttpRpcCategory::Economics,
|
||
"get_inflation_governor",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_4,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getInflationRate",
|
||
crate::HttpRpcCategory::Economics,
|
||
"get_inflation_rate",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_4,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getInflationReward",
|
||
crate::HttpRpcCategory::Economics,
|
||
"get_inflation_reward",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_4,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getStakeMinimumDelegation",
|
||
crate::HttpRpcCategory::Economics,
|
||
"get_stake_minimum_delegation",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_4,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getSupply",
|
||
crate::HttpRpcCategory::Economics,
|
||
"get_supply",
|
||
crate::RpcDocumentationStatus::Stable,
|
||
crate::RpcRuntimeStatus::Supported,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::RetrySafe,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::V0_2_4,
|
||
),
|
||
];
|
||
|
||
const HISTORICAL_HTTP_RPC_METHODS: [crate::HttpRpcMethodDescriptor; 14] = [
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"confirmTransaction",
|
||
crate::HttpRpcCategory::Historical,
|
||
"confirm_transaction",
|
||
crate::RpcDocumentationStatus::Deprecated,
|
||
crate::RpcRuntimeStatus::Removed,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::NotApplicable,
|
||
std::option::Option::Some("getSignatureStatuses"),
|
||
crate::HttpRpcCoverageRelease::Historical,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getConfirmedBlock",
|
||
crate::HttpRpcCategory::Historical,
|
||
"get_confirmed_block",
|
||
crate::RpcDocumentationStatus::Deprecated,
|
||
crate::RpcRuntimeStatus::Removed,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::NotApplicable,
|
||
std::option::Option::Some("getBlock"),
|
||
crate::HttpRpcCoverageRelease::Historical,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getConfirmedBlocks",
|
||
crate::HttpRpcCategory::Historical,
|
||
"get_confirmed_blocks",
|
||
crate::RpcDocumentationStatus::Deprecated,
|
||
crate::RpcRuntimeStatus::Removed,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::NotApplicable,
|
||
std::option::Option::Some("getBlocks"),
|
||
crate::HttpRpcCoverageRelease::Historical,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getConfirmedBlocksWithLimit",
|
||
crate::HttpRpcCategory::Historical,
|
||
"get_confirmed_blocks_with_limit",
|
||
crate::RpcDocumentationStatus::Deprecated,
|
||
crate::RpcRuntimeStatus::Removed,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::NotApplicable,
|
||
std::option::Option::Some("getBlocksWithLimit"),
|
||
crate::HttpRpcCoverageRelease::Historical,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getConfirmedSignaturesForAddress2",
|
||
crate::HttpRpcCategory::Historical,
|
||
"get_confirmed_signatures_for_address2",
|
||
crate::RpcDocumentationStatus::Deprecated,
|
||
crate::RpcRuntimeStatus::Removed,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::NotApplicable,
|
||
std::option::Option::Some("getSignaturesForAddress"),
|
||
crate::HttpRpcCoverageRelease::Historical,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getConfirmedTransaction",
|
||
crate::HttpRpcCategory::Historical,
|
||
"get_confirmed_transaction",
|
||
crate::RpcDocumentationStatus::Deprecated,
|
||
crate::RpcRuntimeStatus::Removed,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::NotApplicable,
|
||
std::option::Option::Some("getTransaction"),
|
||
crate::HttpRpcCoverageRelease::Historical,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getFeeCalculatorForBlockhash",
|
||
crate::HttpRpcCategory::Historical,
|
||
"get_fee_calculator_for_blockhash",
|
||
crate::RpcDocumentationStatus::Deprecated,
|
||
crate::RpcRuntimeStatus::Removed,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::NotApplicable,
|
||
std::option::Option::Some("isBlockhashValid / getFeeForMessage"),
|
||
crate::HttpRpcCoverageRelease::Historical,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getFeeRateGovernor",
|
||
crate::HttpRpcCategory::Historical,
|
||
"get_fee_rate_governor",
|
||
crate::RpcDocumentationStatus::Deprecated,
|
||
crate::RpcRuntimeStatus::Removed,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::NotApplicable,
|
||
std::option::Option::Some("getFeeForMessage"),
|
||
crate::HttpRpcCoverageRelease::Historical,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getFees",
|
||
crate::HttpRpcCategory::Historical,
|
||
"get_fees",
|
||
crate::RpcDocumentationStatus::Deprecated,
|
||
crate::RpcRuntimeStatus::Removed,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::NotApplicable,
|
||
std::option::Option::Some("getFeeForMessage"),
|
||
crate::HttpRpcCoverageRelease::Historical,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getRecentBlockhash",
|
||
crate::HttpRpcCategory::Historical,
|
||
"get_recent_blockhash",
|
||
crate::RpcDocumentationStatus::Deprecated,
|
||
crate::RpcRuntimeStatus::Removed,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::NotApplicable,
|
||
std::option::Option::Some("getLatestBlockhash"),
|
||
crate::HttpRpcCoverageRelease::Historical,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getSignatureConfirmation",
|
||
crate::HttpRpcCategory::Historical,
|
||
"get_signature_confirmation",
|
||
crate::RpcDocumentationStatus::Deprecated,
|
||
crate::RpcRuntimeStatus::Removed,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::NotApplicable,
|
||
std::option::Option::Some("getSignatureStatuses"),
|
||
crate::HttpRpcCoverageRelease::Historical,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getSignatureStatus",
|
||
crate::HttpRpcCategory::Historical,
|
||
"get_signature_status",
|
||
crate::RpcDocumentationStatus::Deprecated,
|
||
crate::RpcRuntimeStatus::Removed,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::NotApplicable,
|
||
std::option::Option::Some("getSignatureStatuses"),
|
||
crate::HttpRpcCoverageRelease::Historical,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getSnapshotSlot",
|
||
crate::HttpRpcCategory::Historical,
|
||
"get_snapshot_slot",
|
||
crate::RpcDocumentationStatus::Deprecated,
|
||
crate::RpcRuntimeStatus::Removed,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::NotApplicable,
|
||
std::option::Option::Some("getHighestSnapshotSlot"),
|
||
crate::HttpRpcCoverageRelease::Historical,
|
||
),
|
||
crate::HttpRpcMethodDescriptor::new(
|
||
"getStakeActivation",
|
||
crate::HttpRpcCategory::Historical,
|
||
"get_stake_activation",
|
||
crate::RpcDocumentationStatus::Deprecated,
|
||
crate::RpcRuntimeStatus::Removed,
|
||
crate::RpcRequestFormStatus::Stable,
|
||
crate::RpcOperationKind::Read,
|
||
crate::TransportRetryClass::NotApplicable,
|
||
std::option::Option::None,
|
||
crate::HttpRpcCoverageRelease::Historical,
|
||
),
|
||
];
|
||
|
||
/// Functional category used by the audited Solana HTTP JSON-RPC registry.
|
||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||
pub enum HttpRpcCategory {
|
||
/// Account state and rent queries.
|
||
Accounts,
|
||
/// SPL token-oriented RPC queries exposed by the standard Solana HTTP surface.
|
||
Tokens,
|
||
/// Transaction, signature, fee, simulation and submission methods.
|
||
Transactions,
|
||
/// Block, slot-history and performance-sample methods.
|
||
Blocks,
|
||
/// Cluster identity, epoch, leader, health and validator methods.
|
||
Cluster,
|
||
/// Supply, inflation and stake-economics methods.
|
||
Economics,
|
||
/// Historically documented methods removed from the targeted Agave runtime generation.
|
||
Historical,
|
||
}
|
||
|
||
/// Documentation lifecycle status of one audited RPC method.
|
||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||
pub enum RpcDocumentationStatus {
|
||
/// The method is documented as stable.
|
||
Stable,
|
||
/// The method is documented as deprecated or obsolete.
|
||
Deprecated,
|
||
/// The method is documented as unstable or experimental.
|
||
Unstable,
|
||
}
|
||
|
||
impl RpcDocumentationStatus {
|
||
/// Returns the stable machine-readable status code.
|
||
#[must_use]
|
||
pub const fn code(self) -> &'static str {
|
||
return match self {
|
||
Self::Stable => "stable",
|
||
Self::Deprecated => "deprecated",
|
||
Self::Unstable => "unstable",
|
||
};
|
||
}
|
||
}
|
||
|
||
/// Runtime availability status of one audited RPC method.
|
||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||
pub enum RpcRuntimeStatus {
|
||
/// The targeted runtime generation still supports the method.
|
||
Supported,
|
||
/// The method is historically documented but removed from the targeted runtime generation.
|
||
Removed,
|
||
}
|
||
|
||
impl RpcRuntimeStatus {
|
||
/// Returns the stable machine-readable runtime status code.
|
||
#[must_use]
|
||
pub const fn code(self) -> &'static str {
|
||
return match self {
|
||
Self::Supported => "supported",
|
||
Self::Removed => "removed",
|
||
};
|
||
}
|
||
}
|
||
|
||
/// Request-form policy attached to a stable RPC method.
|
||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||
pub enum RpcRequestFormStatus {
|
||
/// Only the currently documented stable request form is tracked by KSP.
|
||
Stable,
|
||
/// The method is stable but also has a documented deprecated legacy request form that must warn when explicitly used.
|
||
StableWithDeprecatedLegacy,
|
||
}
|
||
|
||
impl RpcRequestFormStatus {
|
||
/// Returns whether the method has a documented deprecated legacy request form.
|
||
#[must_use]
|
||
pub const fn has_deprecated_legacy(self) -> bool {
|
||
return match self {
|
||
Self::Stable => false,
|
||
Self::StableWithDeprecatedLegacy => true,
|
||
};
|
||
}
|
||
}
|
||
|
||
/// Technical operation kind used to separate reads, simulations and submissions.
|
||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||
pub enum RpcOperationKind {
|
||
/// Read-only RPC operation.
|
||
Read,
|
||
/// Simulation operation that does not submit a transaction for execution.
|
||
Simulation,
|
||
/// Technical write/submission operation whose ambiguous post-dispatch outcome must not be resent automatically.
|
||
WriteSubmission,
|
||
}
|
||
|
||
/// HTTP transport retry classification attached to an RPC method descriptor.
|
||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||
pub enum TransportRetryClass {
|
||
/// The identical transport request may be retried when the transport failure is classified as retryable.
|
||
RetrySafe,
|
||
/// The request must not be resent automatically after an ambiguous dispatch.
|
||
NeverAfterDispatch,
|
||
/// Retry classification does not apply because the method is not callable on the targeted runtime.
|
||
NotApplicable,
|
||
}
|
||
|
||
/// Release that owns the typed KSP coverage for one audited current HTTP method.
|
||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||
pub enum HttpRpcCoverageRelease {
|
||
/// `0.2.1` HTTP foundation and four canary methods.
|
||
V0_2_1,
|
||
/// `0.2.2` Accounts + Tokens + remaining Cluster methods.
|
||
V0_2_2,
|
||
/// `0.2.3` Transactions methods.
|
||
V0_2_3,
|
||
/// `0.2.4` Blocks + Economics methods and final HTTP compliance.
|
||
V0_2_4,
|
||
/// Historical registry entry with no callable typed release.
|
||
Historical,
|
||
}
|
||
|
||
/// Immutable audited descriptor for one Solana HTTP JSON-RPC method.
|
||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||
pub struct HttpRpcMethodDescriptor {
|
||
method: &'static str,
|
||
category: crate::HttpRpcCategory,
|
||
request_kind: &'static str,
|
||
documentation_status: crate::RpcDocumentationStatus,
|
||
runtime_status: crate::RpcRuntimeStatus,
|
||
request_form_status: crate::RpcRequestFormStatus,
|
||
operation_kind: crate::RpcOperationKind,
|
||
transport_retry_class: crate::TransportRetryClass,
|
||
replacement: std::option::Option<&'static str>,
|
||
coverage_release: crate::HttpRpcCoverageRelease,
|
||
}
|
||
|
||
impl HttpRpcMethodDescriptor {
|
||
const fn new(
|
||
method: &'static str,
|
||
category: crate::HttpRpcCategory,
|
||
request_kind: &'static str,
|
||
documentation_status: crate::RpcDocumentationStatus,
|
||
runtime_status: crate::RpcRuntimeStatus,
|
||
request_form_status: crate::RpcRequestFormStatus,
|
||
operation_kind: crate::RpcOperationKind,
|
||
transport_retry_class: crate::TransportRetryClass,
|
||
replacement: std::option::Option<&'static str>,
|
||
coverage_release: crate::HttpRpcCoverageRelease,
|
||
) -> Self {
|
||
return Self {
|
||
method,
|
||
category,
|
||
request_kind,
|
||
documentation_status,
|
||
runtime_status,
|
||
request_form_status,
|
||
operation_kind,
|
||
transport_retry_class,
|
||
replacement,
|
||
coverage_release,
|
||
};
|
||
}
|
||
|
||
/// Returns the exact JSON-RPC method name.
|
||
#[must_use]
|
||
pub const fn method(&self) -> &'static str {
|
||
return self.method;
|
||
}
|
||
|
||
/// Returns the audited functional category.
|
||
#[must_use]
|
||
pub const fn category(&self) -> crate::HttpRpcCategory {
|
||
return self.category;
|
||
}
|
||
|
||
/// Returns the stable open request-kind descriptor used by future endpoint role matching.
|
||
#[must_use]
|
||
pub const fn request_kind(&self) -> &'static str {
|
||
return self.request_kind;
|
||
}
|
||
|
||
/// Returns the method documentation lifecycle status.
|
||
#[must_use]
|
||
pub const fn documentation_status(&self) -> crate::RpcDocumentationStatus {
|
||
return self.documentation_status;
|
||
}
|
||
|
||
/// Returns runtime availability on the targeted Agave generation.
|
||
#[must_use]
|
||
pub const fn runtime_status(&self) -> crate::RpcRuntimeStatus {
|
||
return self.runtime_status;
|
||
}
|
||
|
||
/// Returns the request-form policy, including whether a documented deprecated legacy form exists.
|
||
#[must_use]
|
||
pub const fn request_form_status(&self) -> crate::RpcRequestFormStatus {
|
||
return self.request_form_status;
|
||
}
|
||
|
||
/// Returns the technical operation kind.
|
||
#[must_use]
|
||
pub const fn operation_kind(&self) -> crate::RpcOperationKind {
|
||
return self.operation_kind;
|
||
}
|
||
|
||
/// Returns the transport retry classification.
|
||
#[must_use]
|
||
pub const fn transport_retry_class(&self) -> crate::TransportRetryClass {
|
||
return self.transport_retry_class;
|
||
}
|
||
|
||
/// Returns the documented replacement or migration direction when one exists.
|
||
#[must_use]
|
||
pub const fn replacement(&self) -> std::option::Option<&'static str> {
|
||
return self.replacement;
|
||
}
|
||
|
||
/// Returns the release assigned to typed KSP coverage.
|
||
#[must_use]
|
||
pub const fn coverage_release(&self) -> crate::HttpRpcCoverageRelease {
|
||
return self.coverage_release;
|
||
}
|
||
|
||
/// Returns whether calling the method itself must emit a lifecycle warning when runtime support exists.
|
||
#[must_use]
|
||
pub const fn requires_method_usage_warning(&self) -> bool {
|
||
return match self.runtime_status {
|
||
crate::RpcRuntimeStatus::Removed => false,
|
||
crate::RpcRuntimeStatus::Supported => match self.documentation_status {
|
||
crate::RpcDocumentationStatus::Stable => false,
|
||
crate::RpcDocumentationStatus::Deprecated | crate::RpcDocumentationStatus::Unstable => true,
|
||
},
|
||
};
|
||
}
|
||
|
||
/// Checks runtime support and centrally emits the KSP warning required for deprecated, unstable or removed methods.
|
||
///
|
||
/// Removed methods return [`crate::ERROR_CODE_METHOD_REMOVED`] and are never presented as callable standard RPC operations.
|
||
pub fn ensure_runtime_supported(&self) -> ksp_core_lib::Result<()> {
|
||
if self.runtime_status == crate::RpcRuntimeStatus::Removed {
|
||
let replacement = match self.replacement {
|
||
std::option::Option::Some(replacement) => replacement,
|
||
std::option::Option::None => "none",
|
||
};
|
||
ksp_logging_lib::warn!(
|
||
target: crate::TRACING_TARGET,
|
||
rpc_method = self.method,
|
||
documentation_status = self.documentation_status.code(),
|
||
runtime_status = self.runtime_status.code(),
|
||
replacement,
|
||
"removed Solana HTTP RPC method requested"
|
||
);
|
||
let mut error = ksp_core_lib::Error::new(crate::ERROR_CODE_METHOD_REMOVED, "Solana HTTP RPC method is removed from the targeted runtime")
|
||
.with_context("rpc_method", self.method)
|
||
.with_context("documentation_status", self.documentation_status.code());
|
||
if let std::option::Option::Some(replacement) = self.replacement {
|
||
error = error.with_context("replacement", replacement);
|
||
}
|
||
return std::result::Result::Err(error);
|
||
}
|
||
if self.requires_method_usage_warning() {
|
||
let replacement = match self.replacement {
|
||
std::option::Option::Some(replacement) => replacement,
|
||
std::option::Option::None => "none",
|
||
};
|
||
ksp_logging_lib::warn!(
|
||
target: crate::TRACING_TARGET,
|
||
rpc_method = self.method,
|
||
documentation_status = self.documentation_status.code(),
|
||
runtime_status = self.runtime_status.code(),
|
||
replacement,
|
||
"non-stable Solana HTTP RPC method requested"
|
||
);
|
||
}
|
||
return std::result::Result::Ok(());
|
||
}
|
||
}
|
||
|
||
/// Returns all 52 current Solana HTTP RPC method descriptors audited for the `0.2.1`–`0.2.4` coverage sequence.
|
||
#[must_use]
|
||
pub const fn current_http_rpc_methods() -> &'static [crate::HttpRpcMethodDescriptor] {
|
||
return &CURRENT_HTTP_RPC_METHODS;
|
||
}
|
||
|
||
/// Returns the 14 historically documented deprecated HTTP RPC descriptors retained for compliance history.
|
||
#[must_use]
|
||
pub const fn historical_http_rpc_methods() -> &'static [crate::HttpRpcMethodDescriptor] {
|
||
return &HISTORICAL_HTTP_RPC_METHODS;
|
||
}
|
||
|
||
/// Finds a current or historical standard Solana HTTP RPC descriptor by exact JSON-RPC method name.
|
||
#[must_use]
|
||
pub fn find_http_rpc_method(method: &str) -> std::option::Option<&'static crate::HttpRpcMethodDescriptor> {
|
||
for descriptor in CURRENT_HTTP_RPC_METHODS.iter() {
|
||
if descriptor.method() == method {
|
||
return std::option::Option::Some(descriptor);
|
||
}
|
||
}
|
||
for descriptor in HISTORICAL_HTTP_RPC_METHODS.iter() {
|
||
if descriptor.method() == method {
|
||
return std::option::Option::Some(descriptor);
|
||
}
|
||
}
|
||
return std::option::Option::None;
|
||
}
|
||
|
||
#[cfg(test)]
|
||
#[path = "../unit_tests/rpc_method.rs"]
|
||
mod tests;
|