use zisk_common::ComponentBuilder;
use zisk_core::{
ARITH_EQ_384_OP_TYPE_ID, ARITH_EQ_OP_TYPE_ID, BIG_INT_OP_TYPE_ID, BLAKE2_OP_TYPE_ID,
KECCAK_OP_TYPE_ID, POSEIDON_OP_TYPE_ID, SHA256_OP_TYPE_ID,
};
use zisk_pil::{
ADD_256_AIR_IDS, ARITH_EQ_384_AIR_IDS, BLAKE_2_BR_AIR_IDS, KECCAKF_AIR_IDS, POSEIDON_AIR_IDS,
SHA_256_F_AIR_IDS,
};
use zisk_precomp_arith_eq::{
ArithEqCollector, ArithEqCounterInputGen, ArithEqInstance, ArithEqManager,
ARITH_EQ_CONFIG_AIR_IDS,
};
use zisk_precomp_arith_eq_384::{
ArithEq384Collector, ArithEq384CounterInputGen, ArithEq384Instance, ArithEq384Manager,
};
use zisk_precomp_big_int::{Add256Collector, Add256CounterInputGen, Add256Instance, Add256Manager};
use zisk_precomp_blake2::{Blake2Collector, Blake2CounterInputGen, Blake2Instance, Blake2Manager};
use zisk_precomp_keccakf::{
KeccakfCollector, KeccakfCounterInputGen, KeccakfInstance, KeccakfManager,
};
use zisk_precomp_poseidon::{
PoseidonCollector, PoseidonCounterInputGen, PoseidonInstance, PoseidonManager,
};
use zisk_precomp_sha256f::{
Sha256fCollector, Sha256fCounterInputGen, Sha256fInstance, Sha256fManager,
};
crate::register_precompiles! {
Keccakf [
op: KECCAK_OP_TYPE_ID,
air: KECCAKF_AIR_IDS,
rank_assign: true,
] => KeccakfManager<F>,
Sha256f [
op: SHA256_OP_TYPE_ID,
air: SHA_256_F_AIR_IDS,
rank_assign: false,
] => Sha256fManager<F>,
Poseidon [
op: POSEIDON_OP_TYPE_ID,
air: POSEIDON_AIR_IDS,
rank_assign: false,
] => PoseidonManager<F>,
Blake2 [
op: BLAKE2_OP_TYPE_ID,
air: BLAKE_2_BR_AIR_IDS,
rank_assign: false,
] => Blake2Manager<F>,
ArithEq [
op: ARITH_EQ_OP_TYPE_ID,
air: ARITH_EQ_CONFIG_AIR_IDS,
rank_assign: false,
] => ArithEqManager<F>,
ArithEq384 [
op: ARITH_EQ_384_OP_TYPE_ID,
air: ARITH_EQ_384_AIR_IDS,
rank_assign: false,
] => ArithEq384Manager<F>,
Add256 [
op: BIG_INT_OP_TYPE_ID,
air: ADD_256_AIR_IDS,
rank_assign: false,
] => Add256Manager<F>,
}