use crate::{
payload::{
milestone::{MilestoneEssence, MilestoneOptions, MilestonePayload},
tagged_data::TaggedDataPayload,
treasury_transaction::TreasuryTransactionPayload,
Payload,
},
rand::{
bytes::{rand_bytes, rand_bytes_array},
input::rand_treasury_input,
milestone::{rand_merkle_root, rand_milestone_id, rand_milestone_index},
number::{rand_number, rand_number_range},
output::rand_treasury_output,
parents::rand_parents,
},
signature::{Ed25519Signature, Signature},
};
pub fn rand_tagged_data_payload() -> TaggedDataPayload {
TaggedDataPayload::new(
rand_bytes(rand_number_range(TaggedDataPayload::TAG_LENGTH_RANGE).into()),
rand_bytes(rand_number_range(0..10000)),
)
.unwrap()
}
pub fn rand_treasury_transaction_payload(token_supply: u64) -> TreasuryTransactionPayload {
TreasuryTransactionPayload::new(rand_treasury_input(), rand_treasury_output(token_supply)).unwrap()
}
pub fn rand_milestone_payload(protocol_version: u8) -> MilestonePayload {
let essence = MilestoneEssence::new(
rand_milestone_index(),
rand_number(),
protocol_version,
rand_milestone_id(),
rand_parents(),
rand_merkle_root(),
rand_merkle_root(),
rand_bytes(32),
MilestoneOptions::new(vec![]).unwrap(),
)
.unwrap();
let signatures = vec![Signature::from(Ed25519Signature::new(
rand_bytes_array(),
rand_bytes_array(),
))];
MilestonePayload::new(essence, signatures).unwrap()
}
pub fn rand_payload_for_block() -> Payload {
rand_tagged_data_payload().into()
}