pub use crate::alpha::Alpha;
pub use crate::round_numbers::RoundNumbers;
pub use crate::matrix::{mat_mul, square_mat_mul, Matrix, SquareMatrix};
pub use crate::{
arc_matrix::ArcMatrix, arc_matrix::OptimizedArcMatrix, matrix_ops::MatrixOperations,
matrix_ops::SquareMatrixOperations, mds_matrix::MdsMatrix, mds_matrix::OptimizedMdsMatrices,
};
#[derive(Clone, Debug)]
pub struct PoseidonParameters<
const STATE_SIZE: usize,
const STATE_SIZE_MINUS_1: usize,
const NUM_MDS_ELEMENTS: usize,
const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize,
const NUM_ROUND_ROWS: usize,
const NUM_ROUND_COLS: usize,
const NUM_ROUND_ELEMENTS: usize,
const NUM_PARTIAL_ROUNDS: usize,
> {
pub M: usize,
pub alpha: Alpha,
pub rounds: RoundNumbers,
pub mds: MdsMatrix<
STATE_SIZE,
STATE_SIZE_MINUS_1,
NUM_MDS_ELEMENTS,
NUM_STATE_SIZE_MINUS_1_ELEMENTS,
>,
pub arc: ArcMatrix<NUM_ROUND_ROWS, NUM_ROUND_COLS, NUM_ROUND_ELEMENTS>,
pub optimized_arc: OptimizedArcMatrix<NUM_ROUND_ROWS, NUM_ROUND_COLS, NUM_ROUND_ELEMENTS>,
pub optimized_mds: OptimizedMdsMatrices<
NUM_ROUND_ROWS,
NUM_PARTIAL_ROUNDS,
STATE_SIZE,
STATE_SIZE_MINUS_1,
NUM_MDS_ELEMENTS,
NUM_STATE_SIZE_MINUS_1_ELEMENTS,
>,
}