Skip to content

Commit

Permalink
extract reward-info crate
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinheavey committed Oct 8, 2024
1 parent 01520c1 commit 50e756d
Show file tree
Hide file tree
Showing 9 changed files with 95 additions and 40 deletions.
11 changes: 11 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ members = [
"sdk/program-pack",
"sdk/pubkey",
"sdk/rent",
"sdk/reward-info",
"sdk/serde-varint",
"sdk/serialize-utils",
"sdk/sha256-hasher",
Expand Down Expand Up @@ -444,6 +445,7 @@ solana-quic-client = { path = "quic-client", version = "=2.1.0" }
solana-rayon-threadlimit = { path = "rayon-threadlimit", version = "=2.1.0" }
solana-remote-wallet = { path = "remote-wallet", version = "=2.1.0", default-features = false }
solana-rent = { path = "sdk/rent", version = "=2.1.0", default-features = false }
solana-reward-info = { path = "sdk/reward-info", version = "=2.1.0" }
solana-sanitize = { path = "sanitize", version = "=2.1.0" }
solana-serde-varint = { path = "sdk/serde-varint", version = "=2.1.0" }
solana-serialize-utils = { path = "sdk/serialize-utils", version = "=2.1.0" }
Expand Down
9 changes: 9 additions & 0 deletions programs/sbf/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions sdk/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ frozen-abi = [
"solana-feature-set/frozen-abi",
"solana-account/frozen-abi",
"solana-program/frozen-abi",
"solana-reward-info/frozen-abi",
"solana-short-vec/frozen-abi",
"solana-signature/frozen-abi"
]
Expand Down Expand Up @@ -97,6 +98,7 @@ solana-frozen-abi-macro = { workspace = true, optional = true, features = [
] }
solana-program = { workspace = true }
solana-program-memory = { workspace = true }
solana-reward-info = { workspace = true, features = ["serde"] }
solana-sanitize = { workspace = true }
solana-sdk-macro = { workspace = true }
solana-secp256k1-recover = { workspace = true }
Expand Down
23 changes: 23 additions & 0 deletions sdk/reward-info/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
[package]
name = "solana-reward-info"
description = "Solana vote reward info types"
documentation = "https://docs.rs/solana-reward-info"
version = { workspace = true }
authors = { workspace = true }
repository = { workspace = true }
homepage = { workspace = true }
license = { workspace = true }
edition = { workspace = true }

[dependencies]
serde = { workspace = true, optional = true }
serde_derive = { workspace = true, optional = true }
solana-frozen-abi = { workspace = true, optional = true }
solana-frozen-abi-macro = { workspace = true, optional = true }

[features]
frozen-abi = ["dep:solana-frozen-abi", "dep:solana-frozen-abi-macro"]
serde = ["dep:serde", "dep:serde_derive"]

[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]
44 changes: 44 additions & 0 deletions sdk/reward-info/src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#![cfg_attr(feature = "frozen-abi", feature(min_specialization))]
#[cfg(feature = "serde")]
use serde_derive::{Deserialize, Serialize};
#[cfg(feature = "frozen-abi")]
use solana_frozen_abi_macro::{AbiEnumVisitor, AbiExample};
use std::fmt;

#[cfg_attr(feature = "frozen-abi", derive(AbiExample, AbiEnumVisitor))]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum RewardType {
Fee,
Rent,
Staking,
Voting,
}

impl fmt::Display for RewardType {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(
f,
"{}",
match self {
RewardType::Fee => "fee",
RewardType::Rent => "rent",
RewardType::Staking => "staking",
RewardType::Voting => "voting",
}
)
}
}

#[cfg_attr(feature = "frozen-abi", derive(AbiExample))]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub struct RewardInfo {
pub reward_type: RewardType,
/// Reward amount
pub lamports: i64,
/// Account balance in lamports after `lamports` was applied
pub post_balance: u64,
/// Vote account commission when the reward was credited, only present for voting and staking rewards
pub commission: Option<u8>,
}
2 changes: 2 additions & 0 deletions sdk/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,9 @@ pub mod quic;
pub mod rent_collector;
pub mod rent_debits;
pub mod reserved_account_keys;
#[deprecated(since = "2.1.0", note = "Use `solana-reward-info` crate instead")]
pub mod reward_info;
#[deprecated(since = "2.1.0", note = "Use `solana-reward-info` crate instead")]
pub mod reward_type;
pub mod rpc_port;
pub mod secp256k1_instruction;
Expand Down
14 changes: 1 addition & 13 deletions sdk/src/reward_info.rs
Original file line number Diff line number Diff line change
@@ -1,13 +1 @@
use crate::reward_type::RewardType;

#[cfg_attr(feature = "frozen-abi", derive(AbiExample))]
#[derive(Debug, PartialEq, Eq, Serialize, Deserialize, Clone, Copy)]
pub struct RewardInfo {
pub reward_type: RewardType,
/// Reward amount
pub lamports: i64,
/// Account balance in lamports after `lamports` was applied
pub post_balance: u64,
/// Vote account commission when the reward was credited, only present for voting and staking rewards
pub commission: Option<u8>,
}
pub use solana_reward_info::RewardInfo;
28 changes: 1 addition & 27 deletions sdk/src/reward_type.rs
Original file line number Diff line number Diff line change
@@ -1,27 +1 @@
//! Enumeration of reward types.
use std::fmt;

#[cfg_attr(feature = "frozen-abi", derive(AbiExample, AbiEnumVisitor))]
#[derive(Debug, PartialEq, Eq, Serialize, Deserialize, Clone, Copy)]
pub enum RewardType {
Fee,
Rent,
Staking,
Voting,
}

impl fmt::Display for RewardType {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(
f,
"{}",
match self {
RewardType::Fee => "fee",
RewardType::Rent => "rent",
RewardType::Staking => "staking",
RewardType::Voting => "voting",
}
)
}
}
pub use solana_reward_info::RewardType;

0 comments on commit 50e756d

Please sign in to comment.