use crate::WeightInfo;
use frame_support::weights::Weight;
pub trait OnFinalizeBlockParts {
fn on_finalize_block_fixed() -> Weight;
fn on_finalize_block_per_tx(payload_size: u32) -> Weight;
fn on_finalize_block_per_event(data_len: u32) -> Weight;
}
impl<W: WeightInfo> OnFinalizeBlockParts for W {
fn on_finalize_block_fixed() -> Weight {
W::on_finalize_per_transaction(0)
}
fn on_finalize_block_per_tx(payload_size: u32) -> Weight {
let per_tx_cost =
W::on_finalize_per_transaction(1).saturating_sub(W::on_finalize_per_transaction(0));
let payload_cost = if payload_size > 0 {
let per_byte_cost = W::on_finalize_per_transaction_data(1)
.saturating_sub(W::on_finalize_per_transaction_data(0));
per_byte_cost.saturating_mul(payload_size as u64)
} else {
Weight::zero()
};
per_tx_cost.saturating_add(payload_cost)
}
fn on_finalize_block_per_event(data_len: u32) -> Weight {
let per_event_cost =
W::on_finalize_per_event(1).saturating_sub(W::on_finalize_per_event(0));
let data_cost = if data_len > 0 {
let per_byte_cost = W::on_finalize_per_event_data(data_len)
.saturating_sub(W::on_finalize_per_event_data(0));
per_byte_cost
} else {
Weight::zero()
};
per_event_cost.saturating_add(data_cost)
}
}