Files
khadhroony-solana-project/crates/ksp-onchain-transport-lib/src/rpc_method.rs

1109 lines
41 KiB
Rust
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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;