oceanic.js 1.10.3-dev.c6c9f52 → 1.10.3-dev.ca8b6e8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/dist/lib/Client.d.ts +99 -0
  2. package/dist/lib/Client.js +263 -0
  3. package/dist/lib/Constants.d.ts +1215 -0
  4. package/dist/lib/Constants.js +1513 -0
  5. package/dist/lib/gateway/Shard.d.ts +83 -0
  6. package/dist/lib/gateway/Shard.js +1621 -0
  7. package/dist/lib/gateway/ShardManager.d.ts +29 -0
  8. package/dist/lib/gateway/ShardManager.js +300 -0
  9. package/dist/lib/index.d.ts +84 -0
  10. package/dist/lib/index.js +168 -0
  11. package/dist/lib/rest/Bucket.d.ts +33 -0
  12. package/dist/lib/rest/Bucket.js +78 -0
  13. package/dist/lib/rest/DiscordHTTPError.d.ts +16 -0
  14. package/dist/lib/rest/DiscordHTTPError.js +65 -0
  15. package/dist/lib/rest/DiscordRESTError.d.ts +19 -0
  16. package/dist/lib/rest/DiscordRESTError.js +89 -0
  17. package/dist/lib/rest/OAuthHelper.d.ts +62 -0
  18. package/dist/lib/rest/OAuthHelper.js +183 -0
  19. package/dist/lib/rest/RESTManager.d.ts +42 -0
  20. package/dist/lib/rest/RESTManager.js +82 -0
  21. package/dist/lib/rest/RequestHandler.d.ts +28 -0
  22. package/dist/lib/rest/RequestHandler.js +313 -0
  23. package/dist/lib/rest/SequentialBucket.d.ts +25 -0
  24. package/dist/lib/rest/SequentialBucket.js +76 -0
  25. package/dist/lib/routes/Applications.d.ts +171 -0
  26. package/dist/lib/routes/Applications.js +447 -0
  27. package/dist/lib/routes/Channels.d.ts +408 -0
  28. package/dist/lib/routes/Channels.js +1160 -0
  29. package/dist/lib/routes/Guilds.d.ts +606 -0
  30. package/dist/lib/routes/Guilds.js +1669 -0
  31. package/dist/lib/routes/Interactions.d.ts +74 -0
  32. package/dist/lib/routes/Interactions.js +141 -0
  33. package/dist/lib/routes/Miscellaneous.d.ts +31 -0
  34. package/dist/lib/routes/Miscellaneous.js +69 -0
  35. package/dist/lib/routes/OAuth.d.ts +108 -0
  36. package/dist/lib/routes/OAuth.js +312 -0
  37. package/dist/lib/routes/Users.d.ts +32 -0
  38. package/dist/lib/routes/Users.js +59 -0
  39. package/dist/lib/routes/Webhooks.d.ts +128 -0
  40. package/dist/lib/routes/Webhooks.js +265 -0
  41. package/dist/lib/structures/AnnouncementChannel.d.ts +36 -0
  42. package/dist/lib/structures/AnnouncementChannel.js +47 -0
  43. package/dist/lib/structures/AnnouncementThreadChannel.d.ts +18 -0
  44. package/dist/lib/structures/AnnouncementThreadChannel.js +27 -0
  45. package/dist/lib/structures/Application.d.ts +102 -0
  46. package/dist/lib/structures/Application.js +189 -0
  47. package/dist/lib/structures/ApplicationCommand.d.ts +74 -0
  48. package/dist/lib/structures/ApplicationCommand.js +141 -0
  49. package/dist/lib/structures/Attachment.d.ts +34 -0
  50. package/dist/lib/structures/Attachment.js +64 -0
  51. package/dist/lib/structures/AuditLogEntry.d.ts +25 -0
  52. package/dist/lib/structures/AuditLogEntry.js +53 -0
  53. package/dist/lib/structures/AutoModerationRule.d.ts +49 -0
  54. package/dist/lib/structures/AutoModerationRule.js +139 -0
  55. package/dist/lib/structures/AutocompleteInteraction.d.ts +62 -0
  56. package/dist/lib/structures/AutocompleteInteraction.js +115 -0
  57. package/dist/lib/structures/Base.d.ts +20 -0
  58. package/dist/lib/structures/Base.js +58 -0
  59. package/dist/lib/structures/BaseEntitlement.d.ts +19 -0
  60. package/dist/lib/structures/BaseEntitlement.js +44 -0
  61. package/dist/lib/structures/CategoryChannel.d.ts +41 -0
  62. package/dist/lib/structures/CategoryChannel.js +105 -0
  63. package/dist/lib/structures/Channel.d.ts +20 -0
  64. package/dist/lib/structures/Channel.js +91 -0
  65. package/dist/lib/structures/ClientApplication.d.ts +153 -0
  66. package/dist/lib/structures/ClientApplication.js +220 -0
  67. package/dist/lib/structures/CommandInteraction.d.ts +127 -0
  68. package/dist/lib/structures/CommandInteraction.js +297 -0
  69. package/dist/lib/structures/ComponentInteraction.d.ts +137 -0
  70. package/dist/lib/structures/ComponentInteraction.js +311 -0
  71. package/dist/lib/structures/Entitlement.d.ts +12 -0
  72. package/dist/lib/structures/Entitlement.js +26 -0
  73. package/dist/lib/structures/ExtendedUser.d.ts +26 -0
  74. package/dist/lib/structures/ExtendedUser.js +57 -0
  75. package/dist/lib/structures/ForumChannel.d.ts +11 -0
  76. package/dist/lib/structures/ForumChannel.js +19 -0
  77. package/dist/lib/structures/GroupChannel.d.ts +62 -0
  78. package/dist/lib/structures/GroupChannel.js +133 -0
  79. package/dist/lib/structures/Guild.d.ts +654 -0
  80. package/dist/lib/structures/Guild.js +1319 -0
  81. package/dist/lib/structures/GuildChannel.d.ts +34 -0
  82. package/dist/lib/structures/GuildChannel.js +75 -0
  83. package/dist/lib/structures/GuildPreview.d.ts +50 -0
  84. package/dist/lib/structures/GuildPreview.js +119 -0
  85. package/dist/lib/structures/GuildScheduledEvent.d.ts +60 -0
  86. package/dist/lib/structures/GuildScheduledEvent.js +154 -0
  87. package/dist/lib/structures/GuildTemplate.d.ts +55 -0
  88. package/dist/lib/structures/GuildTemplate.js +126 -0
  89. package/dist/lib/structures/Integration.d.ts +54 -0
  90. package/dist/lib/structures/Integration.js +156 -0
  91. package/dist/lib/structures/Interaction.d.ts +40 -0
  92. package/dist/lib/structures/Interaction.js +90 -0
  93. package/dist/lib/structures/InteractionResolvedChannel.d.ts +28 -0
  94. package/dist/lib/structures/InteractionResolvedChannel.js +45 -0
  95. package/dist/lib/structures/Invite.d.ts +64 -0
  96. package/dist/lib/structures/Invite.js +193 -0
  97. package/dist/lib/structures/InviteGuild.d.ts +52 -0
  98. package/dist/lib/structures/InviteGuild.js +88 -0
  99. package/dist/lib/structures/MediaChannel.d.ts +11 -0
  100. package/dist/lib/structures/MediaChannel.js +19 -0
  101. package/dist/lib/structures/Member.d.ts +122 -0
  102. package/dist/lib/structures/Member.js +255 -0
  103. package/dist/lib/structures/Message.d.ts +194 -0
  104. package/dist/lib/structures/Message.js +477 -0
  105. package/dist/lib/structures/ModalSubmitInteraction.d.ts +128 -0
  106. package/dist/lib/structures/ModalSubmitInteraction.js +240 -0
  107. package/dist/lib/structures/OAuthApplication.d.ts +79 -0
  108. package/dist/lib/structures/OAuthApplication.js +210 -0
  109. package/dist/lib/structures/OAuthGuild.d.ts +35 -0
  110. package/dist/lib/structures/OAuthGuild.js +61 -0
  111. package/dist/lib/structures/PartialApplication.d.ts +30 -0
  112. package/dist/lib/structures/PartialApplication.js +67 -0
  113. package/dist/lib/structures/Permission.d.ts +21 -0
  114. package/dist/lib/structures/Permission.js +68 -0
  115. package/dist/lib/structures/PermissionOverwrite.d.ts +26 -0
  116. package/dist/lib/structures/PermissionOverwrite.js +49 -0
  117. package/dist/lib/structures/PingInteraction.d.ts +16 -0
  118. package/dist/lib/structures/PingInteraction.js +26 -0
  119. package/dist/lib/structures/Poll.d.ts +28 -0
  120. package/dist/lib/structures/Poll.js +78 -0
  121. package/dist/lib/structures/PrivateChannel.d.ts +90 -0
  122. package/dist/lib/structures/PrivateChannel.js +131 -0
  123. package/dist/lib/structures/PrivateThreadChannel.d.ts +18 -0
  124. package/dist/lib/structures/PrivateThreadChannel.js +27 -0
  125. package/dist/lib/structures/PublicThreadChannel.d.ts +21 -0
  126. package/dist/lib/structures/PublicThreadChannel.js +37 -0
  127. package/dist/lib/structures/Role.d.ts +52 -0
  128. package/dist/lib/structures/Role.js +137 -0
  129. package/dist/lib/structures/SKU.d.ts +32 -0
  130. package/dist/lib/structures/SKU.js +53 -0
  131. package/dist/lib/structures/StageChannel.d.ts +33 -0
  132. package/dist/lib/structures/StageChannel.js +44 -0
  133. package/dist/lib/structures/StageInstance.d.ts +36 -0
  134. package/dist/lib/structures/StageInstance.js +94 -0
  135. package/dist/lib/structures/Team.d.ts +22 -0
  136. package/dist/lib/structures/Team.js +67 -0
  137. package/dist/lib/structures/TestEntitlement.d.ts +10 -0
  138. package/dist/lib/structures/TestEntitlement.js +21 -0
  139. package/dist/lib/structures/TextChannel.d.ts +34 -0
  140. package/dist/lib/structures/TextChannel.js +46 -0
  141. package/dist/lib/structures/TextableChannel.d.ts +158 -0
  142. package/dist/lib/structures/TextableChannel.js +276 -0
  143. package/dist/lib/structures/TextableVoiceChannel.d.ts +39 -0
  144. package/dist/lib/structures/TextableVoiceChannel.js +81 -0
  145. package/dist/lib/structures/ThreadChannel.d.ts +159 -0
  146. package/dist/lib/structures/ThreadChannel.js +295 -0
  147. package/dist/lib/structures/ThreadOnlyChannel.d.ts +99 -0
  148. package/dist/lib/structures/ThreadOnlyChannel.js +233 -0
  149. package/dist/lib/structures/ThreadableChannel.d.ts +36 -0
  150. package/dist/lib/structures/ThreadableChannel.js +58 -0
  151. package/dist/lib/structures/UnavailableGuild.d.ts +11 -0
  152. package/dist/lib/structures/UnavailableGuild.js +21 -0
  153. package/dist/lib/structures/User.d.ts +82 -0
  154. package/dist/lib/structures/User.js +168 -0
  155. package/dist/lib/structures/VoiceChannel.d.ts +20 -0
  156. package/dist/lib/structures/VoiceChannel.js +35 -0
  157. package/dist/lib/structures/VoiceState.d.ts +51 -0
  158. package/dist/lib/structures/VoiceState.js +140 -0
  159. package/dist/lib/structures/Webhook.d.ts +129 -0
  160. package/dist/lib/structures/Webhook.js +206 -0
  161. package/dist/lib/types/applications.d.ts +466 -0
  162. package/dist/lib/types/audit-log.d.ts +122 -0
  163. package/dist/lib/types/auto-moderation.d.ts +99 -0
  164. package/dist/lib/types/channels.d.ts +1244 -0
  165. package/dist/lib/types/client.d.ts +228 -0
  166. package/dist/lib/types/events.d.ts +265 -0
  167. package/dist/lib/types/gateway-raw.d.ts +584 -0
  168. package/dist/lib/types/gateway.d.ts +351 -0
  169. package/dist/lib/types/guild-template.d.ts +33 -0
  170. package/dist/lib/types/guilds.d.ts +855 -0
  171. package/dist/lib/types/index.d.ts +18 -0
  172. package/dist/lib/types/interactions.d.ts +377 -0
  173. package/dist/lib/types/json.d.ts +742 -0
  174. package/dist/lib/types/misc.d.ts +28 -0
  175. package/dist/lib/types/oauth.d.ts +201 -0
  176. package/dist/lib/types/request-handler.d.ts +52 -0
  177. package/dist/lib/types/scheduled-events.d.ts +88 -0
  178. package/dist/lib/types/shared.d.ts +9 -0
  179. package/dist/lib/types/users.d.ts +45 -0
  180. package/dist/lib/types/voice.d.ts +45 -0
  181. package/dist/lib/types/webhooks.d.ts +74 -0
  182. package/dist/lib/util/Collection.d.ts +47 -0
  183. package/dist/lib/util/Collection.js +78 -0
  184. package/dist/lib/util/Errors.d.ts +29 -0
  185. package/dist/lib/util/Errors.js +56 -0
  186. package/dist/lib/util/Routes.d.ts +127 -0
  187. package/dist/lib/util/Routes.js +248 -0
  188. package/dist/lib/util/SimpleCollection.d.ts +12 -0
  189. package/dist/lib/util/SimpleCollection.js +81 -0
  190. package/dist/lib/util/TypedCollection.d.ts +24 -0
  191. package/dist/lib/util/TypedCollection.js +76 -0
  192. package/dist/lib/util/TypedEmitter.d.ts +19 -0
  193. package/dist/lib/util/TypedEmitter.js +19 -0
  194. package/dist/lib/util/Util.d.ts +58 -0
  195. package/dist/lib/util/Util.js +535 -0
  196. package/dist/lib/util/interactions/InteractionOptionsWrapper.d.ts +170 -0
  197. package/dist/lib/util/interactions/InteractionOptionsWrapper.js +213 -0
  198. package/dist/lib/util/interactions/MessageInteractionResponse.d.ts +24 -0
  199. package/dist/lib/util/interactions/MessageInteractionResponse.js +28 -0
  200. package/dist/lib/util/interactions/ModalSubmitInteractionComponentsWrapper.d.ts +24 -0
  201. package/dist/lib/util/interactions/ModalSubmitInteractionComponentsWrapper.js +34 -0
  202. package/dist/lib/util/interactions/SelectMenuValuesWrapper.d.ts +60 -0
  203. package/dist/lib/util/interactions/SelectMenuValuesWrapper.js +124 -0
  204. package/dist/package.json +1 -1
  205. package/package.json +1 -1
@@ -0,0 +1,477 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ /** @module Message */
5
+ const Base_1 = tslib_1.__importDefault(require("./Base"));
6
+ const Attachment_1 = tslib_1.__importDefault(require("./Attachment"));
7
+ const User_1 = tslib_1.__importDefault(require("./User"));
8
+ const PartialApplication_1 = tslib_1.__importDefault(require("./PartialApplication"));
9
+ const GuildChannel_1 = tslib_1.__importDefault(require("./GuildChannel"));
10
+ const Poll_1 = tslib_1.__importDefault(require("./Poll"));
11
+ const TypedCollection_1 = tslib_1.__importDefault(require("../util/TypedCollection"));
12
+ const Constants_1 = require("../Constants");
13
+ const Routes = tslib_1.__importStar(require("../util/Routes"));
14
+ const Errors_1 = require("../util/Errors");
15
+ /** Represents a message. */
16
+ class Message extends Base_1.default {
17
+ _cachedChannel;
18
+ _cachedGuild;
19
+ /** The [activity](https://discord.com/developers/docs/resources/channel#message-object-message-activity-structure) associated with this message. */
20
+ activity;
21
+ /**
22
+ * The application associated with this message. This can be present in two scenarios:
23
+ * * If the message was from an interaction or application owned webhook ({@link ClientApplication} if any shard has reached READY, {@link PartialApplication} otherwise).
24
+ * * If the message has a rich presence embed ({@link PartialApplication})
25
+ */
26
+ application;
27
+ /**
28
+ * The ID of the application associated with this message. This can be present in two scenarios:
29
+ * * If the message was from an interaction or application owned webhook ({@link ClientApplication} if any shard has reached READY, {@link PartialApplication} otherwise).
30
+ * * If the message has a rich presence embed ({@link PartialApplication})
31
+ */
32
+ applicationID;
33
+ /** The attachments on this message. */
34
+ attachments;
35
+ /** The author of this message. */
36
+ author;
37
+ /** The ID of the channel this message was created in. */
38
+ channelID;
39
+ /** The components on this message. */
40
+ components;
41
+ /** The content of this message. */
42
+ content;
43
+ /** The timestamp at which this message was last edited. */
44
+ editedTimestamp;
45
+ /** The embeds on this message. */
46
+ embeds;
47
+ /** The [flags](https://discord.com/developers/docs/resources/channel#message-object-message-flags) on this message. */
48
+ flags;
49
+ /** The ID of the guild this message is in. */
50
+ guildID;
51
+ /**
52
+ * The interaction info, if this message was the result of an interaction.
53
+ * @deprecated Use {@link Message#interactionMetadata | Message#interactionMetadata } instead.
54
+ */
55
+ interaction;
56
+ /** The interaction info, if this message was the result of an interaction. */
57
+ interactionMetadata;
58
+ /** The member that created this message, if this message is in a guild. */
59
+ member;
60
+ /** Channels mentioned in a `CROSSPOSTED` channel follower message. See [Discord's docs](https://discord.com/developers/docs/resources/channel#channel-mention-object) for more information. */
61
+ mentionChannels;
62
+ /** The mentions in this message. */
63
+ mentions;
64
+ /** If this message is a `REPLY` or `THREAD_STARTER_MESSAGE`, some info about the referenced message. */
65
+ messageReference;
66
+ /** A nonce for ensuring a message was sent. */
67
+ nonce;
68
+ /** If this message is pinned. */
69
+ pinned;
70
+ /** The poll on this message, if any. */
71
+ poll;
72
+ /** This message's relative position, if in a thread. */
73
+ position;
74
+ /** The reactions on this message. */
75
+ reactions;
76
+ /** If this message is a `REPLY` or `THREAD_STARTER_MESSAGE`, this will be the message that's referenced. */
77
+ referencedMessage;
78
+ /** The data of the role subscription purchase or renewal that prompted this message. */
79
+ roleSubscriptionData;
80
+ // stickers exists, but is deprecated
81
+ /** The sticker items on this message. */
82
+ stickerItems;
83
+ /** The thread associated with this message, if any. */
84
+ thread;
85
+ /** The timestamp at which this message was sent. */
86
+ timestamp;
87
+ /** If this message was read aloud. */
88
+ tts;
89
+ /** The [type](https://discord.com/developers/docs/resources/channel#message-object-message-types) of this message. */
90
+ type;
91
+ /** The webhook associated with this message, if sent via a webhook. This only has an `id` property. */
92
+ webhookID;
93
+ constructor(data, client) {
94
+ super(data.id, client);
95
+ this.attachments = new TypedCollection_1.default(Attachment_1.default, client);
96
+ this.channelID = data.channel_id;
97
+ this.components = [];
98
+ this.content = data.content ?? "";
99
+ this.editedTimestamp = null;
100
+ this.embeds = [];
101
+ this.flags = 0;
102
+ this.guildID = (data.guild_id === undefined ? null : data.guild_id);
103
+ this.member = (data.member === undefined ? undefined : this.client.util.updateMember(data.guild_id, data.author.id, { ...data.member, user: data.author }));
104
+ this.mentions = {
105
+ channels: [],
106
+ everyone: false,
107
+ members: [],
108
+ roles: [],
109
+ users: []
110
+ };
111
+ this.pinned = !!data.pinned;
112
+ this.poll = data.poll ? new Poll_1.default(data.poll, client, this) : undefined;
113
+ this.reactions = [];
114
+ // message updates can be missing a timestamp
115
+ this.timestamp = data.timestamp === undefined ? Base_1.default.getCreatedAt(this.id) : new Date(data.timestamp);
116
+ this.tts = !!data.tts;
117
+ this.type = data.type;
118
+ this.webhookID = data.webhook_id;
119
+ this.update(data);
120
+ // don't add webhook users to the cache
121
+ this.author = data.webhook_id === undefined ? client.users.update(data.author) : new User_1.default(data.author, client);
122
+ if (data.application_id === undefined) {
123
+ this.applicationID = null;
124
+ }
125
+ else {
126
+ if (client["_application"] && client.application.id === data.application_id) {
127
+ if (data.application) {
128
+ client.application["update"](data.application);
129
+ }
130
+ this.application = client.application;
131
+ }
132
+ else {
133
+ this.application = data.application ? new PartialApplication_1.default(data.application, client) : undefined;
134
+ }
135
+ this.applicationID = data.application_id;
136
+ }
137
+ }
138
+ update(data) {
139
+ if (data.mention_everyone !== undefined) {
140
+ this.mentions.everyone = data.mention_everyone;
141
+ }
142
+ if (data.mention_roles !== undefined) {
143
+ this.mentions.roles = data.mention_roles;
144
+ }
145
+ if (data.mentions !== undefined) {
146
+ const members = [];
147
+ this.mentions.users = data.mentions.map(user => {
148
+ if (this.channel && "guildID" in this.channel && user.member) {
149
+ members.push(this.client.util.updateMember(this.channel.guildID, user.id, { ...user.member, user }));
150
+ }
151
+ return this.client.users.update(user);
152
+ });
153
+ this.mentions.members = members;
154
+ }
155
+ if (data.activity !== undefined) {
156
+ this.activity = data.activity;
157
+ }
158
+ if (data.attachments !== undefined) {
159
+ if (this.attachments.size !== 0) {
160
+ for (const id of this.attachments.keys()) {
161
+ if (!data.attachments.some(attachment => attachment.id === id)) {
162
+ this.attachments.delete(id);
163
+ }
164
+ }
165
+ }
166
+ for (const attachment of data.attachments) {
167
+ this.attachments.update(attachment);
168
+ }
169
+ }
170
+ if (data.components !== undefined) {
171
+ this.components = this.client.util.componentsToParsed(data.components);
172
+ }
173
+ if (data.content !== undefined) {
174
+ this.content = data.content;
175
+ this.mentions.channels = (data.content.match(/<#\d{17,21}>/g) ?? []).map(mention => mention.slice(2, -1));
176
+ }
177
+ if (data.edited_timestamp !== undefined) {
178
+ this.editedTimestamp = data.edited_timestamp ? new Date(data.edited_timestamp) : null;
179
+ }
180
+ if (data.embeds !== undefined) {
181
+ this.embeds = this.client.util.embedsToParsed(data.embeds);
182
+ }
183
+ if (data.flags !== undefined) {
184
+ this.flags = data.flags;
185
+ }
186
+ if (data.interaction !== undefined) {
187
+ let member;
188
+ if (data.interaction.member) {
189
+ member = {
190
+ ...data.interaction.member,
191
+ user: data.interaction.user
192
+ };
193
+ }
194
+ this.interaction = {
195
+ id: data.interaction.id,
196
+ member: member ? this.client.util.updateMember(data.guild_id, member.user.id, member) : undefined,
197
+ name: data.interaction.name,
198
+ type: data.interaction.type,
199
+ user: this.client.users.update(data.interaction.user)
200
+ };
201
+ }
202
+ if (data.interaction_metadata !== undefined) {
203
+ this.interactionMetadata = {
204
+ authorizingIntegrationOwners: data.interaction_metadata.authorizing_integration_owners,
205
+ id: data.interaction_metadata.id,
206
+ interactedMessageID: data.interaction_metadata.interacted_message_id,
207
+ name: data.interaction_metadata.name,
208
+ originalResponseMessageID: data.interaction_metadata.original_response_message_id,
209
+ type: data.interaction_metadata.type,
210
+ user: this.client.users.update(data.interaction_metadata.user),
211
+ triggeringInteractionMetadata: data.interaction_metadata.triggering_interaction_metadata === undefined ? undefined : {
212
+ authorizingIntegrationOwners: data.interaction_metadata.triggering_interaction_metadata.authorizing_integration_owners,
213
+ id: data.interaction_metadata.triggering_interaction_metadata.id,
214
+ interactedMessageID: data.interaction_metadata.triggering_interaction_metadata.interacted_message_id,
215
+ originalResponseMessageID: data.interaction_metadata.triggering_interaction_metadata.original_response_message_id,
216
+ type: data.interaction_metadata.triggering_interaction_metadata.type,
217
+ user: this.client.users.update(data.interaction_metadata.triggering_interaction_metadata.user)
218
+ }
219
+ };
220
+ }
221
+ if (data.message_reference) {
222
+ this.messageReference = {
223
+ channelID: data.message_reference.channel_id,
224
+ failIfNotExists: data.message_reference.fail_if_not_exists,
225
+ guildID: data.message_reference.guild_id,
226
+ messageID: data.message_reference.message_id
227
+ };
228
+ }
229
+ if (data.nonce !== undefined) {
230
+ this.nonce = data.nonce;
231
+ }
232
+ if (data.pinned !== undefined) {
233
+ this.pinned = data.pinned;
234
+ }
235
+ if (data.position !== undefined) {
236
+ this.position = data.position;
237
+ }
238
+ if (data.reactions) {
239
+ this.reactions = data.reactions.map(r => ({
240
+ burstColors: r.burst_colors,
241
+ count: r.count,
242
+ countDetails: r.count_details,
243
+ emoji: r.emoji,
244
+ me: r.me,
245
+ meBurst: r.me_burst
246
+ }));
247
+ }
248
+ if (data.referenced_message !== undefined) {
249
+ if (data.referenced_message === null) {
250
+ this.referencedMessage = null;
251
+ }
252
+ else {
253
+ this.referencedMessage = this.channel ? this.channel.messages?.update(data.referenced_message) : new Message(data.referenced_message, this.client);
254
+ }
255
+ }
256
+ if (data.role_subscription_data !== undefined) {
257
+ this.roleSubscriptionData = {
258
+ isRenewal: data.role_subscription_data.is_renewal,
259
+ roleSubscriptionListingID: data.role_subscription_data.role_subscription_listing_id,
260
+ tierName: data.role_subscription_data.tier_name,
261
+ totalMonthsSubscribed: data.role_subscription_data.total_months_subscribed
262
+ };
263
+ }
264
+ if (data.sticker_items !== undefined) {
265
+ this.stickerItems = data.sticker_items;
266
+ }
267
+ if (data.thread !== undefined) {
268
+ this.thread = this.client.util.updateThread(data.thread);
269
+ }
270
+ }
271
+ /** The channel this message was created in. */
272
+ get channel() {
273
+ return this._cachedChannel ??= this.client.getChannel(this.channelID);
274
+ }
275
+ /** The guild this message is in. This will throw an error if the guild is not cached. */
276
+ get guild() {
277
+ if (this.guildID !== null && this._cachedGuild !== null) {
278
+ this._cachedGuild ??= this.client.guilds.get(this.guildID);
279
+ if (!this._cachedGuild) {
280
+ if (this.client.options.restMode) {
281
+ throw new Errors_1.UncachedError(`${this.constructor.name}#guild is not present when rest mode is enabled.`);
282
+ }
283
+ if (!this.client.shards.connected) {
284
+ throw new Errors_1.UncachedError(`${this.constructor.name}#guild is not present without a gateway connection.`);
285
+ }
286
+ throw new Errors_1.UncachedError(`${this.constructor.name}#guild is not present.`);
287
+ }
288
+ return this._cachedGuild;
289
+ }
290
+ return this._cachedGuild === null ? this._cachedGuild : (this._cachedGuild = null);
291
+ }
292
+ /** A link to this message. */
293
+ get jumpLink() {
294
+ return `${Constants_1.BASE_URL}${Routes.MESSAGE_LINK(this.guildID ?? "@me", this.channelID, this.id)}`;
295
+ }
296
+ /**
297
+ * Add a reaction to this message.
298
+ * @param emoji The reaction to add to the message. `name:id` for custom emojis, and the unicode codepoint for default emojis.
299
+ */
300
+ async createReaction(emoji) {
301
+ return this.client.rest.channels.createReaction(this.channelID, this.id, emoji);
302
+ }
303
+ /**
304
+ * Crosspost this message in an announcement channel.
305
+ */
306
+ async crosspost() {
307
+ return this.client.rest.channels.crosspostMessage(this.channelID, this.id);
308
+ }
309
+ /**
310
+ * Delete this message.
311
+ * @param reason The reason for deleting the message.
312
+ */
313
+ async delete(reason) {
314
+ return this.client.rest.channels.deleteMessage(this.channelID, this.id, reason);
315
+ }
316
+ /**
317
+ * Remove a reaction from this message.
318
+ * @param emoji The reaction to remove from the message. `name:id` for custom emojis, and the unicode codepoint for default emojis.
319
+ * @param user The user to remove the reaction from, `@me` for the current user (default).
320
+ */
321
+ async deleteReaction(emoji, user = "@me") {
322
+ return this.client.rest.channels.deleteReaction(this.channelID, this.id, emoji, user);
323
+ }
324
+ /**
325
+ * Remove all, or a specific emoji's reactions from this message.
326
+ * @param emoji The reaction to remove from the message. `name:id` for custom emojis, and the unicode codepoint for default emojis. Omit to remove all reactions.
327
+ */
328
+ async deleteReactions(emoji) {
329
+ return this.client.rest.channels.deleteReactions(this.channelID, this.id, emoji);
330
+ }
331
+ /**
332
+ * Delete this message as a webhook.
333
+ * @param token The token of the webhook.
334
+ * @param options Options for deleting the message.
335
+ */
336
+ async deleteWebhook(token, options) {
337
+ if (!this.webhookID) {
338
+ throw new TypeError("This message is not a webhook message.");
339
+ }
340
+ return this.client.rest.webhooks.deleteMessage(this.webhookID, token, this.id, options);
341
+ }
342
+ /**
343
+ * Edit this message.
344
+ * @param options The options for editing the message.
345
+ */
346
+ async edit(options) {
347
+ return this.client.rest.channels.editMessage(this.channelID, this.id, options);
348
+ }
349
+ /**
350
+ * Edit this message as a webhook.
351
+ * @param token The token of the webhook.
352
+ * @param options The options for editing the message.
353
+ */
354
+ async editWebhook(token, options) {
355
+ if (!this.webhookID) {
356
+ throw new TypeError("This message is not a webhook message.");
357
+ }
358
+ return this.client.rest.webhooks.editMessage(this.webhookID, token, this.id, options);
359
+ }
360
+ /** End this The poll on this message now. */
361
+ async expire() {
362
+ if (this.poll === undefined) {
363
+ throw new TypeError("Message does not have a poll.");
364
+ }
365
+ await this.poll.expire();
366
+ }
367
+ /**
368
+ * Get the users that voted on a poll answer.
369
+ * @param answerID The ID of the poll answer to get voters for.
370
+ * @param options The options for getting the voters.
371
+ */
372
+ async getPollAnswerUsers(answerID, options) {
373
+ if (this.poll === undefined) {
374
+ throw new TypeError("Message does not have a poll.");
375
+ }
376
+ return this.poll.getAnswerUsers(answerID, options);
377
+ }
378
+ /**
379
+ * Get the users who reacted with a specific emoji on this message.
380
+ * @param emoji The reaction to remove from the message. `name:id` for custom emojis, and the unicode codepoint for default emojis.
381
+ * @param options The options for getting the reactions.
382
+ */
383
+ async getReactions(emoji, options) {
384
+ return this.client.rest.channels.getReactions(this.channelID, this.id, emoji, options);
385
+ }
386
+ /** Whether this message belongs to a cached guild channel. The only difference on using this method over a simple if statement is to easily update all the message properties typing definitions based on the channel it belongs to. */
387
+ inCachedGuildChannel() {
388
+ return this.channel instanceof GuildChannel_1.default;
389
+ }
390
+ /** Whether this message belongs to a direct message channel (PrivateChannel or uncached). The only difference on using this method over a simple if statement is to easily update all the message properties typing definitions based on the channel it belongs to. */
391
+ inDirectMessageChannel() {
392
+ return this.guildID === null;
393
+ }
394
+ /**
395
+ * Pin this message.
396
+ * @param reason The reason for pinning the message.
397
+ */
398
+ async pin(reason) {
399
+ return this.client.rest.channels.pinMessage(this.channelID, this.id, reason);
400
+ }
401
+ /**
402
+ * Create a thread from this message.
403
+ * @param options The options for creating the thread.
404
+ */
405
+ async startThread(options) {
406
+ return this.client.rest.channels.startThreadFromMessage(this.channelID, this.id, options);
407
+ }
408
+ toJSON() {
409
+ return {
410
+ ...super.toJSON(),
411
+ activity: this.activity,
412
+ applicationID: this.applicationID ?? undefined,
413
+ attachments: this.attachments.map(attachment => attachment.toJSON()),
414
+ author: this.author.toJSON(),
415
+ channelID: this.channelID,
416
+ components: this.components,
417
+ content: this.content,
418
+ editedTimestamp: this.editedTimestamp?.getTime() ?? null,
419
+ embeds: this.embeds,
420
+ flags: this.flags,
421
+ guildID: this.guildID ?? undefined,
422
+ interaction: this.interaction === undefined ? undefined : {
423
+ id: this.interaction.id,
424
+ member: this.interaction.member?.toJSON(),
425
+ name: this.interaction.name,
426
+ type: this.interaction.type,
427
+ user: this.interaction.user.toJSON()
428
+ },
429
+ interactionMetadata: this.interactionMetadata === undefined ? undefined : {
430
+ id: this.interactionMetadata.id,
431
+ interactedMessageID: this.interactionMetadata.interactedMessageID,
432
+ name: this.interactionMetadata.name,
433
+ originalResponseMessageID: this.interactionMetadata.originalResponseMessageID,
434
+ type: this.interactionMetadata.type,
435
+ user: this.interactionMetadata.user instanceof User_1.default ? this.interactionMetadata.user.toJSON() : this.interactionMetadata.user,
436
+ authorizingIntegrationOwners: this.interactionMetadata.authorizingIntegrationOwners,
437
+ triggeringInteractionMetadata: this.interactionMetadata.triggeringInteractionMetadata === undefined ? undefined : {
438
+ id: this.interactionMetadata.triggeringInteractionMetadata.id,
439
+ interactedMessageID: this.interactionMetadata.triggeringInteractionMetadata.interactedMessageID,
440
+ originalResponseMessageID: this.interactionMetadata.triggeringInteractionMetadata.originalResponseMessageID,
441
+ type: this.interactionMetadata.triggeringInteractionMetadata.type,
442
+ user: this.interactionMetadata.triggeringInteractionMetadata.user instanceof User_1.default ? this.interactionMetadata.triggeringInteractionMetadata.user.toJSON() : this.interactionMetadata.triggeringInteractionMetadata.user,
443
+ authorizingIntegrationOwners: this.interactionMetadata.triggeringInteractionMetadata.authorizingIntegrationOwners
444
+ }
445
+ },
446
+ mentionChannels: this.mentionChannels,
447
+ mentions: {
448
+ channels: this.mentions.channels,
449
+ everyone: this.mentions.everyone,
450
+ members: this.mentions.members.map(member => member.toJSON()),
451
+ roles: this.mentions.roles,
452
+ users: this.mentions.users.map(user => user.toJSON())
453
+ },
454
+ messageReference: this.messageReference,
455
+ nonce: this.nonce,
456
+ pinned: this.pinned,
457
+ position: this.position,
458
+ reactions: this.reactions,
459
+ referencedMessage: this.referencedMessage?.toJSON(),
460
+ stickerItems: this.stickerItems,
461
+ thread: this.thread?.toJSON(),
462
+ timestamp: this.timestamp.getTime(),
463
+ tts: this.tts,
464
+ type: this.type,
465
+ webhook: this.webhookID
466
+ };
467
+ }
468
+ /**
469
+ * Unpin this message.
470
+ * @param reason The reason for unpinning the message.
471
+ */
472
+ async unpin(reason) {
473
+ return this.client.rest.channels.unpinMessage(this.channelID, this.id, reason);
474
+ }
475
+ }
476
+ exports.default = Message;
477
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdHJ1Y3R1cmVzL01lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0JBQXNCO0FBQ3RCLDBEQUEwQjtBQUMxQixzRUFBc0M7QUFDdEMsMERBQTBCO0FBRzFCLHNGQUFzRDtBQU10RCwwRUFBMEM7QUFFMUMsMERBQTBCO0FBRTFCLHNGQUFzRDtBQUN0RCw0Q0FBMkQ7QUEwQjNELCtEQUF5QztBQUN6QywyQ0FBK0M7QUFFL0MsNEJBQTRCO0FBQzVCLE1BQXFCLE9BQWlGLFNBQVEsY0FBSTtJQUN0RyxjQUFjLENBQWdEO0lBQzlELFlBQVksQ0FBNEQ7SUFDaEYsb0pBQW9KO0lBQ3BKLFFBQVEsQ0FBbUI7SUFDM0I7Ozs7T0FJRztJQUNILFdBQVcsQ0FBMEM7SUFDckQ7Ozs7T0FJRztJQUNILGFBQWEsQ0FBZ0I7SUFDN0IsdUNBQXVDO0lBQ3ZDLFdBQVcsQ0FBNkM7SUFDeEQsa0NBQWtDO0lBQ2xDLE1BQU0sQ0FBTztJQUNiLHlEQUF5RDtJQUN6RCxTQUFTLENBQVM7SUFDbEIsc0NBQXNDO0lBQ3RDLFVBQVUsQ0FBMEI7SUFDcEMsbUNBQW1DO0lBQ25DLE9BQU8sQ0FBUztJQUNoQiwyREFBMkQ7SUFDM0QsZUFBZSxDQUFjO0lBQzdCLGtDQUFrQztJQUNsQyxNQUFNLENBQWU7SUFDckIsdUhBQXVIO0lBQ3ZILEtBQUssQ0FBUztJQUNkLDhDQUE4QztJQUM5QyxPQUFPLENBQTZEO0lBQ3BFOzs7T0FHRztJQUNILFdBQVcsQ0FBc0I7SUFDakMsOEVBQThFO0lBQzlFLG1CQUFtQixDQUE4QjtJQUNqRCwyRUFBMkU7SUFDM0UsTUFBTSxDQUFrRTtJQUN4RSwrTEFBK0w7SUFDL0wsZUFBZSxDQUF5QjtJQUN4QyxvQ0FBb0M7SUFDcEMsUUFBUSxDQVdOO0lBQ0Ysd0dBQXdHO0lBQ3hHLGdCQUFnQixDQUFvQjtJQUNwQywrQ0FBK0M7SUFDL0MsS0FBSyxDQUFtQjtJQUN4QixpQ0FBaUM7SUFDakMsTUFBTSxDQUFVO0lBQ2hCLHdDQUF3QztJQUN4QyxJQUFJLENBQVE7SUFDWix3REFBd0Q7SUFDeEQsUUFBUSxDQUFVO0lBQ2xCLHFDQUFxQztJQUNyQyxTQUFTLENBQXlCO0lBQ2xDLDRHQUE0RztJQUM1RyxpQkFBaUIsQ0FBa0I7SUFDbkMsd0ZBQXdGO0lBQ3hGLG9CQUFvQixDQUF3QjtJQUM1QyxxQ0FBcUM7SUFDckMseUNBQXlDO0lBQ3pDLFlBQVksQ0FBc0I7SUFDbEMsdURBQXVEO0lBQ3ZELE1BQU0sQ0FBb0I7SUFDMUIsb0RBQW9EO0lBQ3BELFNBQVMsQ0FBTztJQUNoQixzQ0FBc0M7SUFDdEMsR0FBRyxDQUFVO0lBQ2Isc0hBQXNIO0lBQ3RILElBQUksQ0FBZTtJQUNuQix1R0FBdUc7SUFDdkcsU0FBUyxDQUFVO0lBQ25CLFlBQVksSUFBZ0IsRUFBRSxNQUFjO1FBQ3hDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx5QkFBZSxDQUFDLG9CQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBK0QsQ0FBQztRQUNsSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFvRSxDQUFDO1FBQ2hPLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDWixRQUFRLEVBQUUsRUFBRTtZQUNaLFFBQVEsRUFBRSxLQUFLO1lBQ2YsT0FBTyxFQUFHLEVBQUU7WUFDWixLQUFLLEVBQUssRUFBRTtZQUNaLEtBQUssRUFBSyxFQUFFO1NBQ2YsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLGNBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLDZDQUE2QztRQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxjQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLHVDQUF1QztRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksY0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0csSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUMxRSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDbkIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ25ELENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1lBQzFDLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksNEJBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3ZHLENBQUM7WUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDN0MsQ0FBQztJQUNMLENBQUM7SUFFa0IsTUFBTSxDQUFDLElBQXlCO1FBQy9DLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDN0MsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM5QixNQUFNLE9BQU8sR0FBa0IsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMzQyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksU0FBUyxJQUFLLElBQUksQ0FBQyxPQUFhLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNsRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBRSxJQUFJLENBQUMsT0FBbUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RJLENBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDcEMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDbEMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNqQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM5QixLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO3dCQUM3RCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDaEMsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztZQUVELEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDMUYsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDNUIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNqQyxJQUFJLE1BQTZCLENBQUM7WUFDbEMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMxQixNQUFNLEdBQUc7b0JBQ0wsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU07b0JBQzFCLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7aUJBQzlCLENBQUM7WUFDTixDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRztnQkFDZixFQUFFLEVBQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUMzQixNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVMsRUFBRSxNQUFNLENBQUMsSUFBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDbkcsSUFBSSxFQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtnQkFDN0IsSUFBSSxFQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtnQkFDN0IsSUFBSSxFQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQzthQUMxRCxDQUFDO1FBQ04sQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLG9CQUFvQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRztnQkFDdkIsNEJBQTRCLEVBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLDhCQUE4QjtnQkFDdkYsRUFBRSxFQUE2QixJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRTtnQkFDM0QsbUJBQW1CLEVBQVksSUFBSSxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQjtnQkFDOUUsSUFBSSxFQUEyQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSTtnQkFDN0QseUJBQXlCLEVBQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLDRCQUE0QjtnQkFDckYsSUFBSSxFQUEyQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSTtnQkFDN0QsSUFBSSxFQUEyQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQztnQkFDdkYsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLCtCQUErQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztvQkFDakgsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLCtCQUErQixDQUFDLDhCQUE4QjtvQkFDdEgsRUFBRSxFQUE0QixJQUFJLENBQUMsb0JBQW9CLENBQUMsK0JBQStCLENBQUMsRUFBRTtvQkFDMUYsbUJBQW1CLEVBQVcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLCtCQUErQixDQUFDLHFCQUFxQjtvQkFDN0cseUJBQXlCLEVBQUssSUFBSSxDQUFDLG9CQUFvQixDQUFDLCtCQUErQixDQUFDLDRCQUE0QjtvQkFDcEgsSUFBSSxFQUEwQixJQUFJLENBQUMsb0JBQW9CLENBQUMsK0JBQStCLENBQUMsSUFBSTtvQkFDNUYsSUFBSSxFQUEwQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQztpQkFDekg7YUFDSixDQUFDO1FBQ04sQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGdCQUFnQixHQUFHO2dCQUNwQixTQUFTLEVBQVEsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVU7Z0JBQ2xELGVBQWUsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCO2dCQUMxRCxPQUFPLEVBQVUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVE7Z0JBQ2hELFNBQVMsRUFBUSxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVTthQUNyRCxDQUFDO1FBQ04sQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDNUIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDOUIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDbEMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN0QyxXQUFXLEVBQUcsQ0FBQyxDQUFDLFlBQVk7Z0JBQzVCLEtBQUssRUFBUyxDQUFDLENBQUMsS0FBSztnQkFDckIsWUFBWSxFQUFFLENBQUMsQ0FBQyxhQUFhO2dCQUM3QixLQUFLLEVBQVMsQ0FBQyxDQUFDLEtBQUs7Z0JBQ3JCLEVBQUUsRUFBWSxDQUFDLENBQUMsRUFBRTtnQkFDbEIsT0FBTyxFQUFPLENBQUMsQ0FBQyxRQUFRO2FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ1IsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGtCQUFrQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hDLElBQUksSUFBSSxDQUFDLGtCQUFrQixLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQ2xDLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZKLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHO2dCQUN4QixTQUFTLEVBQWtCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVO2dCQUNqRSx5QkFBeUIsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsNEJBQTRCO2dCQUNuRixRQUFRLEVBQW1CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTO2dCQUNoRSxxQkFBcUIsRUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsdUJBQXVCO2FBQ2pGLENBQUM7UUFDTixDQUFDO1FBR0QsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU3RCxDQUFDO0lBQ0wsQ0FBQztJQUVELCtDQUErQztJQUMvQyxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBaUQsQ0FBQztJQUMxSCxDQUFDO0lBRUQseUZBQXlGO0lBQ3pGLElBQUksS0FBSztRQUNMLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDL0IsTUFBTSxJQUFJLHNCQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksa0RBQWtELENBQUMsQ0FBQztnQkFDeEcsQ0FBQztnQkFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2hDLE1BQU0sSUFBSSxzQkFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLHFEQUFxRCxDQUFDLENBQUM7Z0JBQzNHLENBQUM7Z0JBRUQsTUFBTSxJQUFJLHNCQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksd0JBQXdCLENBQUMsQ0FBQztZQUM5RSxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzdCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBZ0UsQ0FBQyxDQUFDO0lBQ25KLENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsSUFBSSxRQUFRO1FBQ1IsT0FBTyxHQUFHLG9CQUFRLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQy9GLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQWE7UUFDOUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBYSxFQUFFLElBQUksR0FBRyxLQUFLO1FBQzVDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLEtBQWM7UUFDaEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBYSxFQUFFLE9BQW9DO1FBQ25FLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEIsTUFBTSxJQUFJLFNBQVMsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUEyQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFhLEVBQUUsT0FBa0M7UUFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksU0FBUyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBUSxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRCw2Q0FBNkM7SUFDN0MsS0FBSyxDQUFDLE1BQU07UUFDUixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLFNBQVMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFFRCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsa0JBQWtCLENBQUMsUUFBZ0IsRUFBRSxPQUFtQztRQUMxRSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLFNBQVMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBYSxFQUFFLE9BQTZCO1FBQzNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCx3T0FBd087SUFDeE8sb0JBQW9CO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sWUFBWSxzQkFBWSxDQUFDO0lBQ2hELENBQUM7SUFFRCx1UUFBdVE7SUFDdlEsc0JBQXNCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBZTtRQUNyQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFHRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQXNDO1FBQ3BELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFrSCxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL00sQ0FBQztJQUNRLE1BQU07UUFDWCxPQUFPO1lBQ0gsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2pCLFFBQVEsRUFBUyxJQUFJLENBQUMsUUFBUTtZQUM5QixhQUFhLEVBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxTQUFTO1lBQ2hELFdBQVcsRUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4RSxNQUFNLEVBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDckMsU0FBUyxFQUFRLElBQUksQ0FBQyxTQUFTO1lBQy9CLFVBQVUsRUFBTyxJQUFJLENBQUMsVUFBVTtZQUNoQyxPQUFPLEVBQVUsSUFBSSxDQUFDLE9BQU87WUFDN0IsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLElBQUksSUFBSTtZQUN4RCxNQUFNLEVBQVcsSUFBSSxDQUFDLE1BQU07WUFDNUIsS0FBSyxFQUFZLElBQUksQ0FBQyxLQUFLO1lBQzNCLE9BQU8sRUFBVSxJQUFJLENBQUMsT0FBTyxJQUFJLFNBQVM7WUFDMUMsV0FBVyxFQUFNLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUMxRCxFQUFFLEVBQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUMzQixNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO2dCQUN6QyxJQUFJLEVBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO2dCQUM3QixJQUFJLEVBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO2dCQUM3QixJQUFJLEVBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO2FBQ3pDO1lBQ0QsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDdEUsRUFBRSxFQUE2QixJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRTtnQkFDMUQsbUJBQW1CLEVBQVksSUFBSSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQjtnQkFDM0UsSUFBSSxFQUEyQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSTtnQkFDNUQseUJBQXlCLEVBQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLHlCQUF5QjtnQkFDakYsSUFBSSxFQUEyQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSTtnQkFDNUQsSUFBSSxFQUEyQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxZQUFZLGNBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUk7Z0JBQ3JKLDRCQUE0QixFQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyw0QkFBNEI7Z0JBQ3BGLDZCQUE2QixFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyw2QkFBNkIsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7b0JBQzlHLEVBQUUsRUFBNEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLDZCQUE2QixDQUFDLEVBQUU7b0JBQ3ZGLG1CQUFtQixFQUFXLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyw2QkFBNkIsQ0FBQyxtQkFBbUI7b0JBQ3hHLHlCQUF5QixFQUFLLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyw2QkFBNkIsQ0FBQyx5QkFBeUI7b0JBQzlHLElBQUksRUFBMEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLDZCQUE2QixDQUFDLElBQUk7b0JBQ3pGLElBQUksRUFBMEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLDZCQUE2QixDQUFDLElBQUksWUFBWSxjQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJO29CQUM5Tyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsNkJBQTZCLENBQUMsNEJBQTRCO2lCQUNwSDthQUNKO1lBQ0QsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3JDLFFBQVEsRUFBUztnQkFDYixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRO2dCQUNoQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRO2dCQUNoQyxPQUFPLEVBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM5RCxLQUFLLEVBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLO2dCQUM3QixLQUFLLEVBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQzNEO1lBQ0QsZ0JBQWdCLEVBQUcsSUFBSSxDQUFDLGdCQUFnQjtZQUN4QyxLQUFLLEVBQWMsSUFBSSxDQUFDLEtBQUs7WUFDN0IsTUFBTSxFQUFhLElBQUksQ0FBQyxNQUFNO1lBQzlCLFFBQVEsRUFBVyxJQUFJLENBQUMsUUFBUTtZQUNoQyxTQUFTLEVBQVUsSUFBSSxDQUFDLFNBQVM7WUFDakMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sRUFBRTtZQUNuRCxZQUFZLEVBQU8sSUFBSSxDQUFDLFlBQVk7WUFDcEMsTUFBTSxFQUFhLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO1lBQ3hDLFNBQVMsRUFBVSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUMzQyxHQUFHLEVBQWdCLElBQUksQ0FBQyxHQUFHO1lBQzNCLElBQUksRUFBZSxJQUFJLENBQUMsSUFBSTtZQUM1QixPQUFPLEVBQVksSUFBSSxDQUFDLFNBQVM7U0FDcEMsQ0FBQztJQUNOLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQWU7UUFDdkIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRixDQUFDO0NBQ0o7QUFyZkQsMEJBcWZDIn0=
@@ -0,0 +1,128 @@
1
+ /** @module ModalSubmitInteraction */
2
+ import Interaction from "./Interaction";
3
+ import type Member from "./Member";
4
+ import type User from "./User";
5
+ import type Guild from "./Guild";
6
+ import Permission from "./Permission";
7
+ import Message from "./Message";
8
+ import type PrivateChannel from "./PrivateChannel";
9
+ import type Entitlement from "./Entitlement";
10
+ import type TestEntitlement from "./TestEntitlement";
11
+ import { type InteractionTypes, type InteractionContextTypes } from "../Constants";
12
+ import type { AuthorizingIntegrationOwners, EditInteractionContent, InitialInteractionContent, InteractionContent, InteractionGuild, ModalSubmitInteractionData, RawModalSubmitInteraction } from "../types/interactions";
13
+ import type Client from "../Client";
14
+ import type { AnyTextableGuildChannel, AnyInteractionChannel } from "../types/channels";
15
+ import type { JSONModalSubmitInteraction } from "../types/json";
16
+ import type { Uncached } from "../types/shared";
17
+ import MessageInteractionResponse, { type FollowupMessageInteractionResponse, type InitialMessagedInteractionResponse } from "../util/interactions/MessageInteractionResponse";
18
+ /** Represents a modal submit interaction. */
19
+ export default class ModalSubmitInteraction<T extends AnyInteractionChannel | Uncached = AnyInteractionChannel | Uncached> extends Interaction {
20
+ private _cachedChannel;
21
+ private _cachedGuild?;
22
+ /** The permissions the bot has in the channel this interaction was sent from. If in a dm/group dm, this will contain `ATTACH_FILES`, `EMBED_LINKS`, and `MENTION_EVERYONE`. In addition, `USE_EXTERNAL_EMOJIS` will be included for DMs with the app's bot user. */
23
+ appPermissions: Permission;
24
+ /** Details about the authorizing user or server for the installation(s) relevant to the interaction. See [Discord's docs](https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-authorizing-integration-owners-object) for more information. */
25
+ authorizingIntegrationOwners: AuthorizingIntegrationOwners;
26
+ /** The ID of the channel this interaction was sent from. */
27
+ channelID: string;
28
+ /** The context this interaction was sent from. */
29
+ context?: InteractionContextTypes;
30
+ /** The data associated with the interaction. */
31
+ data: ModalSubmitInteractionData;
32
+ /** The entitlements for the user that created this interaction, and the guild it was created in. */
33
+ entitlements: Array<Entitlement | TestEntitlement>;
34
+ /** The id of the guild this interaction was sent from, if applicable. */
35
+ guildID: T extends AnyTextableGuildChannel ? string : string | null;
36
+ /** The preferred [locale](https://discord.com/developers/docs/reference#locales) of the guild this interaction was sent from, if applicable. */
37
+ guildLocale: T extends AnyTextableGuildChannel ? string : string | undefined;
38
+ /** The partial guild this interaction was sent from, if applicable. */
39
+ guildPartial?: T extends AnyTextableGuildChannel ? InteractionGuild : InteractionGuild | undefined;
40
+ /** The [locale](https://discord.com/developers/docs/reference#locales) of the invoking user. */
41
+ locale: string;
42
+ /** The member associated with the invoking user, if this interaction is sent from a guild. */
43
+ member: T extends AnyTextableGuildChannel ? Member : Member | null;
44
+ /** The permissions of the member associated with the invoking user, if this interaction is sent from a guild. */
45
+ memberPermissions: T extends AnyTextableGuildChannel ? Permission : Permission | null;
46
+ /** The message this interaction is from, if the modal was triggered from a component interaction. */
47
+ message?: Message<T>;
48
+ type: InteractionTypes.MODAL_SUBMIT;
49
+ /** The user that invoked this interaction. */
50
+ user: User;
51
+ constructor(data: RawModalSubmitInteraction, client: Client);
52
+ /** The channel this interaction was sent from. */
53
+ get channel(): T extends AnyInteractionChannel ? T : undefined;
54
+ /** The guild this interaction was sent from, if applicable. This will throw an error if the guild is not cached. */
55
+ get guild(): T extends AnyTextableGuildChannel ? Guild : Guild | null;
56
+ /**
57
+ * Create a followup message. Note that the returned class is not a message. The message is located in the property {@link MessageInteractionResponse#message | message}.
58
+ * @param options The options for creating the followup message.
59
+ */
60
+ createFollowup(options: InteractionContent): Promise<FollowupMessageInteractionResponse<this>>;
61
+ /**
62
+ * Create a message through this interaction. This is an initial response, and more than one initial response cannot be used. Use {@link ModalSubmitInteraction#createFollowup | createFollowup}.
63
+ * Note that the returned class is not a message. This initial response does not return a message. You will need to call {@link MessageInteractionResponse#getMessage | MessageInteractionResponse#getMessage} on the returned class,
64
+ * or {@link ModalSubmitInteraction#getOriginal | getOriginal}.
65
+ * @note You cannot attach files in an initial response. Defer the interaction, then use {@link ModalSubmitInteraction#createFollowup | createFollowup}.
66
+ * @param options The options for the message.
67
+ */
68
+ createMessage(options: InitialInteractionContent): Promise<InitialMessagedInteractionResponse<this>>;
69
+ /**
70
+ * Defer this interaction. This is an initial response, and more than one initial response cannot be used.
71
+ * @param flags The [flags](https://discord.com/developers/docs/resources/channel#message-object-message-flags) to respond with.
72
+ */
73
+ defer(flags?: number): Promise<void>;
74
+ /**
75
+ * Defer this interaction with a `DEFERRED_UPDATE_MESSAGE` response. This is an initial response, and more than one initial response cannot be used.
76
+ * @param flags The [flags](https://discord.com/developers/docs/resources/channel#message-object-message-flags) to respond with.
77
+ */
78
+ deferUpdate(flags?: number): Promise<void>;
79
+ /**
80
+ * Delete a follow-up message.
81
+ * @param messageID The ID of the message.
82
+ */
83
+ deleteFollowup(messageID: string): Promise<void>;
84
+ /**
85
+ * Delete the original interaction response.
86
+ */
87
+ deleteOriginal(): Promise<void>;
88
+ /**
89
+ * Edit a followup message.
90
+ * @param messageID The ID of the message.
91
+ * @param options The options for editing the followup message.
92
+ */
93
+ editFollowup(messageID: string, options: EditInteractionContent): Promise<Message<T>>;
94
+ /**
95
+ * Edit the original interaction response.
96
+ * @param options The options for editing the original message.
97
+ */
98
+ editOriginal(options: EditInteractionContent): Promise<Message<T>>;
99
+ /**
100
+ * Edit the message this interaction is from. If this interaction has already been acknowledged, use `createFollowup`.
101
+ * @param options The options for editing the message.
102
+ */
103
+ editParent(options: InteractionContent): Promise<void>;
104
+ /**
105
+ * Get a followup message.
106
+ * @param messageID The ID of the message.
107
+ */
108
+ getFollowup(messageID: string): Promise<Message<T>>;
109
+ /**
110
+ * Get the original interaction response.
111
+ */
112
+ getOriginal(): Promise<Message<T>>;
113
+ /** Whether this interaction belongs to a cached guild channel. The only difference on using this method over a simple if statement is to easily update all the interaction properties typing definitions based on the channel it belongs to. */
114
+ inCachedGuildChannel(): this is ModalSubmitInteraction<AnyTextableGuildChannel>;
115
+ /** Whether this interaction belongs to a private channel (PrivateChannel or uncached). The only difference on using this method over a simple if statement is to easily update all the interaction properties typing definitions based on the channel it belongs to. */
116
+ inPrivateChannel(): this is ModalSubmitInteraction<PrivateChannel | Uncached>;
117
+ /** Show a "premium required" response to the user. This is an initial response, and more than one initial response cannot be used. */
118
+ premiumRequired(): Promise<void>;
119
+ /**
120
+ * Reply to this interaction. If the interaction hasn't been acknowledged, {@link ModalSubmitInteraction#createMessage | createMessage} is used. Else, {@link ModalSubmitInteraction#createFollowup | createFollowup} is used.
121
+ * Note the returned class is not a message. Depending on which method was used, the returned class may or may not have the sent message. {@link MessageInteractionResponse#hasMessage | hasMessage} can be used for type narrowing
122
+ * to check if {@link MessageInteractionResponse#message | message} is present. If it is not, the {@link MessageInteractionResponse#getMessage | getMessage} can be used.
123
+ * @note Due to atachments not being able to be sent in initial responses, attachments will cause a deferred response, if the interaction has not been acknowledged.
124
+ * @param options The options for the message.
125
+ */
126
+ reply(options: InteractionContent): Promise<MessageInteractionResponse<this>>;
127
+ toJSON(): JSONModalSubmitInteraction;
128
+ }