1use derive_more::{Deref, DerefMut, Display, 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#[derive(Clone, Copy, Debug, Deref, DerefMut, Display, From, Into, Deserialize, Serialize)]
18#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
19#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
20#[cfg_attr(feature = "typescript", ts(export))]
21pub struct CreateRemoteWorldResponse(pub WorldId);
22
23#[derive(Clone, Copy, Debug, Deref, DerefMut, Display, From, Into, Deserialize, Serialize)]
24#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
25#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
26#[cfg_attr(feature = "typescript", ts(export))]
27pub struct GetRemoteWorldLimitResponse(pub u16);
28
29#[derive(Clone, Copy, Debug, Deref, DerefMut, Display, From, Into, Deserialize, Serialize)]
30#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
31#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
32#[cfg_attr(feature = "typescript", ts(export))]
33pub struct GetRemoteWorldLimitPerUserResponse(pub u16);
34
35#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
36#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
37#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
38#[cfg_attr(feature = "typescript", ts(export))]
39pub struct GetRemoteWorldResponse(pub RemoteWorld);
40
41#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
42#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
43#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
44#[cfg_attr(feature = "typescript", ts(export))]
45pub struct GetRemoteWorldsResponse(pub Vec<RemoteWorld>);
46
47#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
48#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
49#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
50#[cfg_attr(feature = "typescript", ts(export))]
51pub struct GetWorldBotsResponse(pub Vec<BotId>);
52
53#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
54#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
55#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
56#[cfg_attr(feature = "typescript", ts(export))]
57pub struct GetWorldConfigResponse(pub WorldConfig);
58
59#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
60#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
61#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
62#[cfg_attr(feature = "typescript", ts(export))]
63pub struct GetWorldPersonnelResponse(pub ArmyPersonnel);
64
65#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
66#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
67#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
68#[cfg_attr(feature = "typescript", ts(export))]
69pub struct GetWorldPlayersResponse(pub Vec<PlayerId>);
70
71#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
72#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
73#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
74#[cfg_attr(feature = "typescript", ts(export))]
75pub struct GetWorldPrecursorsResponse(pub Vec<PrecursorId>);
76
77#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
78#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
79#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
80#[cfg_attr(feature = "typescript", ts(export))]
81pub struct GetWorldStatsResponse(pub WorldStats);