1use wasm_bindgen::prelude::*;
2use wasm_bindgen::JsValue;
3
4#[wasm_bindgen(module = "@discord/embedded-app-sdk")]
5extern "C" {
6 #[wasm_bindgen(extends=js_sys::Object)]
7 pub type DiscordSDK;
8
9 #[wasm_bindgen(constructor, catch)]
10 pub fn new(clientId: &str) -> Result<DiscordSDK, JsValue>;
11
12 #[wasm_bindgen(method, getter, js_name = clientId)]
13 pub fn client_id(this: &DiscordSDK) -> String;
14
15 #[wasm_bindgen(method, getter, js_name = instanceId)]
16 pub fn instance_id(this: &DiscordSDK) -> String;
17
18 #[wasm_bindgen(method, getter, js_name = customId)]
19 pub fn custom_id(this: &DiscordSDK) -> Option<String>;
20
21 #[wasm_bindgen(method, getter, js_name = referrerId)]
22 pub fn referrer_id(this: &DiscordSDK) -> Option<String>;
23
24 #[wasm_bindgen(method, getter)]
25 pub fn platform(this: &DiscordSDK) -> String;
26
27 #[wasm_bindgen(method, getter, js_name = guildId)]
28 pub fn guild_id(this: &DiscordSDK) -> Option<String>;
29
30 #[wasm_bindgen(method, getter, js_name = channelId)]
31 pub fn channel_id(this: &DiscordSDK) -> Option<String>;
32
33 #[wasm_bindgen(method, getter, js_name = sourceOrigin)]
34 pub fn source_origin(this: &DiscordSDK) -> Option<String>;
35
36 #[wasm_bindgen(method, getter)]
37 pub fn configuration(this: &DiscordSDK) -> JsValue;
38
39 #[wasm_bindgen(method, getter)]
40 pub fn commands(this: &DiscordSDK) -> DiscordSDKCommands;
41
42 #[wasm_bindgen(method, catch)]
43 pub async fn ready(this: &DiscordSDK) -> Result<(), JsValue>;
44
45 #[wasm_bindgen(method, catch)]
46 pub async fn subscribe(
47 this: &DiscordSDK,
48 event: &str,
49 f: &Closure<dyn FnMut(JsValue) -> Result<(), JsValue>>,
50 args: JsValue,
51 ) -> Result<(), JsValue>;
52
53 #[wasm_bindgen(method, catch)]
54 pub async fn unsubscribe(this: &DiscordSDK, event: &str) -> Result<(), JsValue>;
55
56 #[wasm_bindgen(method, js_name = unsubscribe)]
57 pub fn unsubscribe_nowait(this: &DiscordSDK, event: &str);
58}
59
60#[wasm_bindgen]
61extern "C" {
62 #[wasm_bindgen(extends=js_sys::Object)]
63 pub type DiscordSDKCommands;
64
65 #[wasm_bindgen(method, catch)]
66 pub async fn authorize(this: &DiscordSDKCommands, args: JsValue) -> Result<JsValue, JsValue>;
67
68 #[wasm_bindgen(method, catch)]
69 pub async fn authenticate(this: &DiscordSDKCommands, args: JsValue)
70 -> Result<JsValue, JsValue>;
71
72 #[wasm_bindgen(method, catch, js_name = captureLog)]
73 pub async fn capture_log(this: &DiscordSDKCommands, args: JsValue) -> Result<(), JsValue>;
74
75 #[wasm_bindgen(method, catch, js_name = encourageHardwareAcceleration)]
76 pub async fn encourage_hardware_acceleration(this: &DiscordSDKCommands) -> Result<(), JsValue>;
77
78 #[wasm_bindgen(method, catch, js_name = getChannel)]
79 pub async fn get_channel(this: &DiscordSDKCommands, args: JsValue) -> Result<JsValue, JsValue>;
80
81 #[wasm_bindgen(method, catch, js_name = getChannelPermissions)]
82 pub async fn get_channel_permissions(this: &DiscordSDKCommands) -> Result<JsValue, JsValue>;
83
84 #[wasm_bindgen(method, catch, js_name = getInstanceConnectedParticipants)]
85 pub async fn get_instance_connected_participants(
86 this: &DiscordSDKCommands,
87 ) -> Result<JsValue, JsValue>;
88
89 #[wasm_bindgen(method, catch, js_name = getPlatformBehaviors)]
90 pub async fn get_platform_behaviors(this: &DiscordSDKCommands) -> Result<JsValue, JsValue>;
91
92 #[wasm_bindgen(method, catch, js_name = initiateImageUpload)]
93 pub async fn initiate_image_upload(this: &DiscordSDKCommands) -> Result<JsValue, JsValue>;
94
95 #[wasm_bindgen(method, catch, js_name = openExternalLink)]
96 pub async fn open_external_link(
97 this: &DiscordSDKCommands,
98 args: JsValue,
99 ) -> Result<JsValue, JsValue>;
100
101 #[wasm_bindgen(method, catch, js_name = openInviteDialog)]
102 pub async fn open_invite_dialog(this: &DiscordSDKCommands) -> Result<(), JsValue>;
103
104 #[wasm_bindgen(method, catch, js_name = openShareMomentDialog)]
105 pub async fn open_share_moment_dialog(
106 this: &DiscordSDKCommands,
107 args: JsValue,
108 ) -> Result<(), JsValue>;
109
110 #[wasm_bindgen(method, catch, js_name = setActivity)]
111 pub async fn set_activity(this: &DiscordSDKCommands, args: JsValue) -> Result<(), JsValue>;
112
113 #[wasm_bindgen(method, catch, js_name = setConfig)]
114 pub async fn set_config(this: &DiscordSDKCommands, args: JsValue) -> Result<(), JsValue>;
115
116 #[wasm_bindgen(method, catch, js_name = setOrientationLockState)]
117 pub async fn set_orientation_lock_state(
118 this: &DiscordSDKCommands,
119 args: JsValue,
120 ) -> Result<(), JsValue>;
121
122 #[wasm_bindgen(method, catch, js_name = userSettingsGetLocale)]
123 pub async fn user_settings_get_locale(this: &DiscordSDKCommands) -> Result<JsValue, JsValue>;
124}