use alloc::{collections::BTreeMap, vec::Vec};
use crate::{
auction::{Bid, SeigniorageRecipient, UnbondingPurse},
PublicKey, URef, U512,
};
pub type DelegationRate = u64;
pub type DelegatedAmounts = BTreeMap<PublicKey, U512>;
pub type Delegators = BTreeMap<PublicKey, DelegatedAmounts>;
pub type DelegatorRewardMap = BTreeMap<PublicKey, BTreeMap<PublicKey, U512>>;
pub type ValidatorRewardMap = BTreeMap<PublicKey, U512>;
pub type Bids = BTreeMap<PublicKey, Bid>;
pub type BidPurses = BTreeMap<PublicKey, URef>;
pub type ValidatorWeights = BTreeMap<PublicKey, U512>;
pub type EraId = u64;
pub type EraValidators = BTreeMap<EraId, ValidatorWeights>;
pub type SeigniorageRecipients = BTreeMap<PublicKey, SeigniorageRecipient>;
pub type SeigniorageRecipientsSnapshot = BTreeMap<EraId, SeigniorageRecipients>;
pub type UnbondingPurses = BTreeMap<PublicKey, Vec<UnbondingPurse>>;