use std::sync::Arc;
use axum::{
routing::{delete, get, post, put},
Router,
};
use crate::app_state::AppState;
mod clone_relayer;
mod create_relayer;
mod delete_relayer;
mod get_allowlist_addresses;
mod get_relayer;
mod get_relayers;
mod pause_relayer;
mod unpause_relayer;
mod update_relay_eip1559_status;
mod update_relay_max_gas_price;
pub use clone_relayer::CloneRelayerRequest;
pub use create_relayer::{CreateRelayerRequest, CreateRelayerResult};
pub use get_relayer::GetRelayerResult;
pub use get_relayers::GetRelayersQuery;
use clone_relayer::clone_relayer;
use create_relayer::create_relayer;
use delete_relayer::delete_relayer;
use get_allowlist_addresses::get_allowlist_addresses;
use get_relayer::get_relayer_api;
use get_relayers::get_relayers;
use pause_relayer::pause_relayer;
use unpause_relayer::unpause_relayer;
use update_relay_eip1559_status::update_relay_eip1559_status;
use update_relay_max_gas_price::update_relay_max_gas_price;
pub fn create_relayer_routes() -> Router<Arc<AppState>> {
Router::new()
.route("/:chain_id/new", post(create_relayer))
.route("/", get(get_relayers))
.route("/:relayer_id", get(get_relayer_api))
.route("/:relayer_id", delete(delete_relayer))
.route("/:relayer_id/pause", put(pause_relayer))
.route("/:relayer_id/unpause", put(unpause_relayer))
.route("/:relayer_id/gas/max/:cap", put(update_relay_max_gas_price))
.route("/:relayer_id/clone", post(clone_relayer))
.route("/:relayer_id/allowlists", get(get_allowlist_addresses))
.route("/:relayer_id/gas/eip1559/:enabled", put(update_relay_eip1559_status))
}