1use derive_more::{Deref, DerefMut, From, Into};
5use nil_core::military::army::personnel::ArmyPersonnel;
6use nil_core::npc::bot::BotId;
7use nil_core::npc::precursor::PrecursorId;
8use nil_core::player::PlayerId;
9use nil_core::world::config::{WorldConfig, WorldId};
10use nil_core::world::stats::WorldStats;
11use nil_server_types::world::RemoteWorld;
12use serde::{Deserialize, Serialize};
13
14#[cfg(feature = "axum")]
15use nil_payload_macros::IntoJsonResponse;
16
17#[cfg(feature = "typescript")]
18use ts_rs::TS;
19
20#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
21#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
22#[cfg_attr(feature = "typescript", derive(TS))]
23#[cfg_attr(feature = "typescript", ts(export))]
24pub struct CreateRemoteWorldResponse(pub WorldId);
25
26#[derive(Clone, Copy, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
27#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
28#[cfg_attr(feature = "typescript", derive(TS))]
29#[cfg_attr(feature = "typescript", ts(export))]
30pub struct GetRemoteWorldLimitResponse(pub u16);
31
32#[derive(Clone, Copy, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
33#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
34#[cfg_attr(feature = "typescript", derive(TS))]
35#[cfg_attr(feature = "typescript", ts(export))]
36pub struct GetRemoteWorldLimitPerUserResponse(pub u16);
37
38#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
39#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
40#[cfg_attr(feature = "typescript", derive(TS))]
41#[cfg_attr(feature = "typescript", ts(export))]
42pub struct GetRemoteWorldResponse(pub RemoteWorld);
43
44#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
45#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
46#[cfg_attr(feature = "typescript", derive(TS))]
47#[cfg_attr(feature = "typescript", ts(export))]
48pub struct GetRemoteWorldsResponse(pub Vec<RemoteWorld>);
49
50#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
51#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
52#[cfg_attr(feature = "typescript", derive(TS))]
53#[cfg_attr(feature = "typescript", ts(export))]
54pub struct GetWorldBotsResponse(pub Vec<BotId>);
55
56#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
57#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
58#[cfg_attr(feature = "typescript", derive(TS))]
59#[cfg_attr(feature = "typescript", ts(export))]
60pub struct GetWorldConfigResponse(pub WorldConfig);
61
62#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
63#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
64#[cfg_attr(feature = "typescript", derive(TS))]
65#[cfg_attr(feature = "typescript", ts(export))]
66pub struct GetWorldPersonnelResponse(pub ArmyPersonnel);
67
68#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
69#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
70#[cfg_attr(feature = "typescript", derive(TS))]
71#[cfg_attr(feature = "typescript", ts(export))]
72pub struct GetWorldPlayersResponse(pub Vec<PlayerId>);
73
74#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
75#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
76#[cfg_attr(feature = "typescript", derive(TS))]
77#[cfg_attr(feature = "typescript", ts(export))]
78pub struct GetWorldPrecursorsResponse(pub Vec<PrecursorId>);
79
80#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
81#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
82#[cfg_attr(feature = "typescript", derive(TS))]
83#[cfg_attr(feature = "typescript", ts(export))]
84pub struct GetWorldStatsResponse(pub WorldStats);