1use bon::Builder;
5use nil_core::world::WorldOptions;
6use nil_core::world::config::WorldId;
7use nil_crypto::password::Password;
8use nil_server_types::round::RoundDuration;
9use serde::{Deserialize, Serialize};
10use std::path::PathBuf;
11
12#[derive(Builder, Clone, Debug, Deserialize, Serialize)]
13#[serde(rename_all = "camelCase")]
14#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
15#[cfg_attr(feature = "typescript", ts(export, optional_fields = nullable))]
16pub struct CreateRemoteWorldRequest {
17 pub options: WorldOptions,
18 #[serde(default)]
19 #[builder(into)]
20 pub description: Option<String>,
21 #[serde(default)]
22 #[builder(into)]
23 pub password: Option<Password>,
24 #[serde(default)]
25 #[builder(into)]
26 pub round_duration: Option<RoundDuration>,
27}
28
29#[derive(Builder, Clone, Debug, Deserialize, Serialize)]
30#[serde(rename_all = "camelCase")]
31#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
32#[cfg_attr(feature = "typescript", ts(export))]
33pub struct DeleteRemoteWorldRequest {
34 #[builder(start_fn, into)]
35 pub world: WorldId,
36}
37
38#[derive(Builder, Clone, Debug, Deserialize, Serialize)]
39#[serde(rename_all = "camelCase")]
40#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
41#[cfg_attr(feature = "typescript", ts(export))]
42pub struct GetRemoteWorldRequest {
43 #[builder(start_fn, into)]
44 pub world: WorldId,
45}
46
47#[derive(Builder, Clone, Debug, Deserialize, Serialize)]
48#[serde(rename_all = "camelCase")]
49#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
50#[cfg_attr(feature = "typescript", ts(export))]
51pub struct GetWorldBotsRequest {
52 #[builder(start_fn, into)]
53 pub world: WorldId,
54}
55
56#[derive(Builder, Clone, Debug, Deserialize, Serialize)]
57#[serde(rename_all = "camelCase")]
58#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
59#[cfg_attr(feature = "typescript", ts(export))]
60pub struct GetWorldConfigRequest {
61 #[builder(start_fn, into)]
62 pub world: WorldId,
63}
64
65#[derive(Builder, Clone, Debug, Deserialize, Serialize)]
66#[serde(rename_all = "camelCase")]
67#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
68#[cfg_attr(feature = "typescript", ts(export))]
69pub struct GetWorldPersonnelRequest {
70 #[builder(start_fn, into)]
71 pub world: WorldId,
72}
73
74#[derive(Builder, Clone, Debug, Deserialize, Serialize)]
75#[serde(rename_all = "camelCase")]
76#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
77#[cfg_attr(feature = "typescript", ts(export))]
78pub struct GetWorldPlayersRequest {
79 #[builder(start_fn, into)]
80 pub world: WorldId,
81}
82
83#[derive(Builder, Clone, Debug, Deserialize, Serialize)]
84#[serde(rename_all = "camelCase")]
85#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
86#[cfg_attr(feature = "typescript", ts(export))]
87pub struct GetWorldPrecursorsRequest {
88 #[builder(start_fn, into)]
89 pub world: WorldId,
90}
91
92#[derive(Builder, Clone, Debug, Deserialize, Serialize)]
93#[serde(rename_all = "camelCase")]
94#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
95#[cfg_attr(feature = "typescript", ts(export))]
96pub struct GetWorldStatsRequest {
97 #[builder(start_fn, into)]
98 pub world: WorldId,
99}
100
101#[derive(Builder, Clone, Debug, Deserialize, Serialize)]
102#[serde(rename_all = "camelCase")]
103#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
104#[cfg_attr(feature = "typescript", ts(export))]
105pub struct LeaveRequest {
106 #[builder(start_fn, into)]
107 pub world: WorldId,
108}
109
110#[derive(Builder, Clone, Debug, Deserialize, Serialize)]
111#[serde(rename_all = "camelCase")]
112#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
113#[cfg_attr(feature = "typescript", ts(export))]
114pub struct SaveLocalWorldRequest {
115 #[builder(start_fn, into)]
116 pub world: WorldId,
117 #[builder(into)]
118 pub path: PathBuf,
119}