@discordjs/structures 0.2.0-dev.1764331308-444e55a09 → 0.2.0-dev.1764547345-ec7047572

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.
package/dist/index.d.mts CHANGED
@@ -1,4 +1,5 @@
1
- import { ChannelFlags, PermissionFlagsBits, GuildChannelType, ChannelType, ThreadChannelType, GuildTextChannelType, TextChannelType, APIChannel, APIPartialChannel, APIGuildForumTag, APIOverwrite, APIThreadMetadata, APINewsChannel, APIAnnouncementThreadChannel, APIGuildCategoryChannel, APIDMChannel, APIGuildForumChannel, APIGroupDMChannel, APIGuildMediaChannel, APIPrivateThreadChannel, APIPublicThreadChannel, APIGuildStageVoiceChannel, APITextChannel, APIGuildVoiceChannel, APIInvite, APIExtendedInvite, APIAvatarDecorationData, APIUser, APIConnection } from 'discord-api-types/v10';
1
+ import * as discord_api_types_v10 from 'discord-api-types/v10';
2
+ import { AttachmentFlags, ChannelFlags, MessageFlags, PermissionFlagsBits, GuildChannelType, ChannelType, ThreadChannelType, GuildTextChannelType, TextChannelType, APIChannel, APIPartialChannel, APIGuildForumTag, APIOverwrite, APIThreadMetadata, APINewsChannel, APIAnnouncementThreadChannel, APIGuildCategoryChannel, APIDMChannel, APIGuildForumChannel, APIGroupDMChannel, APIGuildMediaChannel, APIPrivateThreadChannel, APIPublicThreadChannel, APIGuildStageVoiceChannel, APITextChannel, APIGuildVoiceChannel, APIInteractionDataResolved, APIInvite, APIExtendedInvite, APIMessageComponent, APIModalComponent, ComponentType, APIBaseComponent, APIComponentInActionRow, APIActionRowComponent, ButtonStyle, APIButtonComponentWithCustomId, APIButtonComponent, APISelectMenuComponent, APIChannelSelectComponent, APIContainerComponent, APIFileComponent, APIFileUploadComponent, APIButtonComponentWithURL, APIMediaGalleryComponent, APIMentionableSelectComponent, APIButtonComponentWithSKUId, APIRoleSelectComponent, APISectionComponent, APISeparatorComponent, APIStringSelectComponent, APITextDisplayComponent, APITextInputComponent, APIThumbnailComponent, APIUserSelectComponent, APIMessageComponentEmoji, APIMediaGalleryItem, SelectMenuDefaultValueType, APISelectMenuDefaultValue, APISelectMenuOption, APIUnfurledMediaItem, APIEmbed, APIEmbedAuthor, APIEmbedField, APIEmbedFooter, APIEmbedImage, APIEmbedProvider, APIEmbedThumbnail, APIEmbedVideo, InteractionType, APIMessageInteractionMetadata, APIApplicationCommandInteractionMetadata, APIAttachment, APIChannelMention, APIMessage, APIMessageActivity, APIMessageCall, APIMessageComponentInteractionMetadata, APIMessageReference, MessageReferenceType, APIModalSubmitInteractionMetadata, APIReaction, APIReactionCountDetails, APIMessageRoleSubscriptionData, APIPoll, APIPollAnswer, APIPollAnswerCount, APIPollMedia, APIPollResults, APISticker, APIAvatarDecorationData, APIUser, APIConnection } from 'discord-api-types/v10';
2
3
 
3
4
  type ReplaceOmittedWithUnknown<Omitted extends keyof Data | '', Data> = {
4
5
  [Key in keyof Data]: Key extends Omitted ? unknown : Data[Key];
@@ -125,6 +126,17 @@ declare abstract class BitField<Flags extends string> {
125
126
  static resolve<Flags extends string = string>(bit: BitFieldResolvable<Flags>): bigint;
126
127
  }
127
128
 
129
+ /**
130
+ * Data structure that makes it easy to interact with a {@link Attachment#flags} bitfield.
131
+ */
132
+ declare class AttachmentFlagsBitField extends BitField<keyof AttachmentFlags> {
133
+ /**
134
+ * Numeric attachment flags.
135
+ */
136
+ static readonly Flags: typeof AttachmentFlags;
137
+ toJSON(): string | number;
138
+ }
139
+
128
140
  /**
129
141
  * Data structure that makes it easy to interact with a {@link (Channel:class).flags} bitfield.
130
142
  */
@@ -136,6 +148,17 @@ declare class ChannelFlagsBitField extends BitField<keyof ChannelFlags> {
136
148
  toJSON(): string | number;
137
149
  }
138
150
 
151
+ /**
152
+ * Data structure that makes it easy to interact with a {@link Message#flags} bitfield.
153
+ */
154
+ declare class MessageFlagsBitField extends BitField<keyof MessageFlags> {
155
+ /**
156
+ * Numeric message flags.
157
+ */
158
+ static readonly Flags: typeof MessageFlags;
159
+ toJSON(): string | number;
160
+ }
161
+
139
162
  /**
140
163
  * Data structure that makes it easy to interact with a permission bit field. All {@link GuildMember}s have a set of
141
164
  * permissions in their guild, and each channel in the guild may also have {@link PermissionOverwrite}s for the member
@@ -248,10 +271,13 @@ declare const kData: unique symbol;
248
271
  declare const kClone: unique symbol;
249
272
  declare const kPatch: unique symbol;
250
273
  declare const kExpiresTimestamp: unique symbol;
274
+ declare const kEndedTimestamp: unique symbol;
251
275
  declare const kCreatedTimestamp: unique symbol;
276
+ declare const kEditedTimestamp: unique symbol;
252
277
  declare const kArchiveTimestamp: unique symbol;
253
278
  declare const kAllow: unique symbol;
254
279
  declare const kDeny: unique symbol;
280
+ declare const kBurstColors: unique symbol;
255
281
  declare const kLastPinTimestamp: unique symbol;
256
282
  declare const kMixinConstruct: unique symbol;
257
283
  declare const kMixinToJSON: unique symbol;
@@ -538,12 +564,6 @@ declare class Channel<Type extends ChannelType | 'unknown' = ChannelType, Omitte
538
564
  * @param data - The raw data received from the API for the channel
539
565
  */
540
566
  constructor(data: Partialize<ChannelDataType<Type>, Omitted>);
541
- /**
542
- * {@inheritDoc Structure.[kPatch]}
543
- *
544
- * @internal
545
- */
546
- [kPatch](data: Partial<ChannelDataType<Type>>): this;
547
567
  /**
548
568
  * The id of the channel
549
569
  */
@@ -1083,6 +1103,19 @@ declare class VoiceChannel<Omitted extends keyof APIGuildVoiceChannel | '' = ''>
1083
1103
  constructor(data: Partialize<APIGuildVoiceChannel, Omitted>);
1084
1104
  }
1085
1105
 
1106
+ /**
1107
+ * Represents data for users, members, channels, and roles in the message's auto-populated select menus.
1108
+ *
1109
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1110
+ * @remarks has substructures `User`, `Channel`, `Role`, `Message`, `GuildMember`, `Attachment`, which need to be instantiated and stored by an extending class using it
1111
+ */
1112
+ declare abstract class ResolvedInteractionData<Omitted extends keyof APIInteractionDataResolved | '' = ''> extends Structure<APIInteractionDataResolved, Omitted> {
1113
+ /**
1114
+ * @param data - The raw data received from the API for the connection
1115
+ */
1116
+ constructor(data: Partialize<APIInteractionDataResolved, Omitted>);
1117
+ }
1118
+
1086
1119
  interface APIActualInvite extends APIInvite, Partial<Omit<APIExtendedInvite, keyof APIInvite>> {
1087
1120
  }
1088
1121
  /**
@@ -1114,12 +1147,6 @@ declare class Invite<Omitted extends keyof APIActualInvite | '' = 'created_at' |
1114
1147
  * @param data - The raw data received from the API for the invite
1115
1148
  */
1116
1149
  constructor(data: Partialize<APIActualInvite, Omitted>);
1117
- /**
1118
- * {@inheritDoc Structure.[kPatch]}
1119
- *
1120
- * @internal
1121
- */
1122
- [kPatch](data: Partial<APIActualInvite>): this;
1123
1150
  /**
1124
1151
  * {@inheritDoc Structure.optimizeData}
1125
1152
  *
@@ -1203,198 +1230,1717 @@ declare class Invite<Omitted extends keyof APIActualInvite | '' = 'created_at' |
1203
1230
  }
1204
1231
 
1205
1232
  /**
1206
- * Represents metadata of an avatar decoration of a User.
1233
+ * The data stored by a {@link Component} structure based on its {@link (Component:class)."type"} property.
1234
+ */
1235
+ type ComponentDataType<Type extends ComponentType | 'unknown'> = Type extends ComponentType ? Extract<APIMessageComponent | APIModalComponent, {
1236
+ type: Type;
1237
+ }> : APIBaseComponent<ComponentType>;
1238
+ declare abstract class Component<Type extends APIMessageComponent | APIModalComponent, Omitted extends keyof Type | '' = ''> extends Structure<Type, Omitted> {
1239
+ /**
1240
+ * @param data - The raw data received from the API for the component
1241
+ */
1242
+ constructor(data: Partialize<Type, Omitted>);
1243
+ /**
1244
+ * 32 bit integer used as an optional identifier for component
1245
+ */
1246
+ get id(): ReplaceOmittedWithUnknown<Omitted, Type>["id"] | undefined;
1247
+ /**
1248
+ * The type of the component
1249
+ */
1250
+ get type(): ReplaceOmittedWithUnknown<Omitted, Type>["type"];
1251
+ }
1252
+
1253
+ /**
1254
+ * Represents an action row component on a message or modal.
1207
1255
  *
1208
1256
  * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1257
+ * @remarks has `Component`s as substructures which need to be instantiated and stored by an extending class using it
1209
1258
  */
1210
- declare class AvatarDecorationData<Omitted extends keyof APIAvatarDecorationData | '' = ''> extends Structure<APIAvatarDecorationData, Omitted> {
1259
+ declare class ActionRowComponent<Type extends APIComponentInActionRow, Omitted extends keyof APIActionRowComponent<Type> | '' = ''> extends Component<ComponentDataType<ComponentType.ActionRow>, Omitted> {
1211
1260
  /**
1212
- * The template used for removing data from the raw data stored for each Connection
1261
+ * The template used for removing data from the raw data stored for each ActionRowComponent.
1213
1262
  */
1214
- static readonly DataTemplate: Partial<APIAvatarDecorationData>;
1263
+ static readonly DataTemplate: Partial<ComponentDataType<ComponentType.ActionRow>>;
1215
1264
  /**
1216
- * @param data - The raw data received from the API for the connection
1265
+ * @param data - The raw data received from the API for the action row
1217
1266
  */
1218
- constructor(data: Partialize<APIAvatarDecorationData, Omitted>);
1267
+ constructor(data: Partialize<ComponentDataType<ComponentType.ActionRow>, Omitted>);
1268
+ }
1269
+
1270
+ /**
1271
+ * The data stored by a {@link ButtonComponent} structure based on its {@link (ButtonComponent:class)."style"} property.
1272
+ */
1273
+ type ButtonDataType<Style extends ButtonStyle> = Style extends ButtonStyle.Danger | ButtonStyle.Primary | ButtonStyle.Secondary | ButtonStyle.Success ? APIButtonComponentWithCustomId : Extract<APIButtonComponent, {
1274
+ style: Style;
1275
+ }>;
1276
+ declare abstract class ButtonComponent<Style extends ButtonStyle, Omitted extends keyof ButtonDataType<Style> | '' = ''> extends Component<ButtonDataType<Style>, Omitted> {
1219
1277
  /**
1220
- * The id of the SKU this avatar decoration is part of.
1278
+ * @param data - The raw data received from the API for the button
1221
1279
  */
1222
- get skuId(): "sku_id" extends infer T ? T extends "sku_id" ? T extends Omitted ? unknown : APIAvatarDecorationData[T] : never : never;
1280
+ constructor(data: Partialize<ButtonDataType<Style>, Omitted>);
1223
1281
  /**
1224
- * The asset of this avatar decoration.
1282
+ * The style of the button
1225
1283
  */
1226
- get asset(): "asset" extends infer T ? T extends "asset" ? T extends Omitted ? unknown : APIAvatarDecorationData[T] : never : never;
1284
+ get style(): ReplaceOmittedWithUnknown<Omitted, ButtonDataType<Style>>["style"];
1285
+ /**
1286
+ * The status of the button
1287
+ */
1288
+ get disabled(): (ReplaceOmittedWithUnknown<Omitted, ButtonDataType<Style>>["disabled"] & boolean) | null;
1289
+ }
1290
+
1291
+ declare abstract class SelectMenuComponent<Type extends APISelectMenuComponent, Omitted extends keyof Type | '' = ''> extends Component<Type, Omitted> {
1292
+ /**
1293
+ * @param data - The raw data received from the API for the select menu
1294
+ */
1295
+ constructor(data: Partialize<Type, Omitted>);
1296
+ /**
1297
+ * The customId to be sent in the interaction when a selection is made
1298
+ */
1299
+ get customId(): ReplaceOmittedWithUnknown<Omitted, Type>["custom_id"];
1300
+ /**
1301
+ * Whether the select menu is disabled
1302
+ */
1303
+ get disabled(): ReplaceOmittedWithUnknown<Omitted, Type>["disabled"] | undefined;
1304
+ /**
1305
+ * The maximum number of items that can be chosen
1306
+ */
1307
+ get maxValues(): ReplaceOmittedWithUnknown<Omitted, Type>["max_values"] | undefined;
1308
+ /**
1309
+ * The minimum number of items that must be chosen
1310
+ */
1311
+ get minValues(): ReplaceOmittedWithUnknown<Omitted, Type>["min_values"] | undefined;
1312
+ /**
1313
+ * Custom placeholder text if nothing is selected
1314
+ */
1315
+ get placeholder(): ReplaceOmittedWithUnknown<Omitted, Type>["placeholder"] | undefined;
1316
+ /**
1317
+ * Whether a selection is required
1318
+ */
1319
+ get required(): ReplaceOmittedWithUnknown<Omitted, Type>["required"] | undefined;
1227
1320
  }
1228
1321
 
1229
1322
  /**
1230
- * Represents any user on Discord.
1323
+ * Represents a channel select menu component.
1231
1324
  *
1232
1325
  * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1233
- * @remarks has a substructure `AvatarDecorationData`, which needs to be instantiated and stored by an extending class using it
1326
+ * @remarks has `SelectMenuDefaultValue`s as substructures which need to be instantiated and stored by an extending class using it
1234
1327
  */
1235
- declare class User<Omitted extends keyof APIUser | '' = ''> extends Structure<APIUser, Omitted> {
1328
+ declare class ChannelSelectMenuComponent<Omitted extends keyof APIChannelSelectComponent | '' = ''> extends SelectMenuComponent<APIChannelSelectComponent, Omitted> {
1236
1329
  /**
1237
- * The template used for removing data from the raw data stored for each User
1330
+ * The template used for removing data from the raw data stored for each ChannelSelectMenuComponent.
1238
1331
  */
1239
- static readonly DataTemplate: Partial<APIUser>;
1332
+ static readonly DataTemplate: Partial<APIChannelSelectComponent>;
1240
1333
  /**
1241
- * @param data - The raw data received from the API for the user
1334
+ * @param data - The raw data received from the API for the channel select menu
1242
1335
  */
1243
- constructor(data: Partialize<APIUser, Omitted>);
1336
+ constructor(data: Partialize<APIChannelSelectComponent, Omitted>);
1244
1337
  /**
1245
- * {@inheritDoc Structure.[kPatch]}
1246
- *
1247
- * @internal
1338
+ * The list of channel types to include in the channel select component
1248
1339
  */
1249
- [kPatch](data: Partial<APIUser>): this;
1340
+ get channelTypes(): readonly ChannelType[] | null;
1341
+ }
1342
+
1343
+ /**
1344
+ * Represents a container component on a message.
1345
+ *
1346
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1347
+ * @remarks has `Component`s as substructures which need to be instantiated and stored by an extending class using it
1348
+ */
1349
+ declare class ContainerComponent<Omitted extends keyof APIContainerComponent | '' = ''> extends Component<APIContainerComponent, Omitted> {
1250
1350
  /**
1251
- * The user's id
1351
+ * The template used for removing data from the raw data stored for each ContainerComponent.
1252
1352
  */
1253
- get id(): "id" extends infer T ? T extends "id" ? T extends Omitted ? unknown : APIUser[T] : never : never;
1353
+ static readonly DataTemplate: Partial<APIContainerComponent>;
1254
1354
  /**
1255
- * The username of the user
1355
+ * @param data - The raw data received from the API for the container
1256
1356
  */
1257
- get username(): "username" extends infer T ? T extends "username" ? T extends Omitted ? unknown : APIUser[T] : never : never;
1357
+ constructor(data: Partialize<APIContainerComponent, Omitted>);
1258
1358
  /**
1259
- * The user's 4 digit tag, if a bot
1359
+ * Color for the accent on the container as RGB
1260
1360
  */
1261
- get discriminator(): "discriminator" extends infer T ? T extends "discriminator" ? T extends Omitted ? unknown : APIUser[T] : never : never;
1361
+ get accentColor(): ("accent_color" extends infer T ? T extends "accent_color" ? T extends Omitted ? unknown : APIContainerComponent[T] : never : never) | undefined;
1262
1362
  /**
1263
- * The user's display name, the application name for bots
1363
+ * The hexadecimal version of the accent color, with a leading hash
1264
1364
  */
1265
- get globalName(): "global_name" extends infer T ? T extends "global_name" ? T extends Omitted ? unknown : APIUser[T] : never : never;
1365
+ get hexAccentColor(): string | ("accent_color" extends infer T ? T extends "accent_color" ? T extends Omitted ? unknown : APIContainerComponent[T] : never : never) | undefined;
1266
1366
  /**
1267
- * The name displayed in the client for this user when no nickname is set
1367
+ * Whether the container should be a spoiler (or blurred out)
1268
1368
  */
1269
- get displayName(): ("username" extends infer T ? T extends "username" ? T extends Omitted ? unknown : APIUser[T] : never : never) | NonNullable<"global_name" extends infer T_1 ? T_1 extends "global_name" ? T_1 extends Omitted ? unknown : APIUser[T_1] : never : never>;
1369
+ get spoiler(): ("spoiler" extends infer T ? T extends "spoiler" ? T extends Omitted ? unknown : APIContainerComponent[T] : never : never) | undefined;
1370
+ }
1371
+
1372
+ /**
1373
+ * Represents a file component on a message.
1374
+ *
1375
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1376
+ * @remarks has a substructure `UnfurledMediaItem` which needs to be instantiated and stored by an extending class using it
1377
+ */
1378
+ declare class FileComponent<Omitted extends keyof APIFileComponent | '' = ''> extends Component<APIFileComponent, Omitted> {
1270
1379
  /**
1271
- * The user avatar's hash
1380
+ * The template used for removing data from the raw data stored for each FileComponent.
1272
1381
  */
1273
- get avatar(): "avatar" extends infer T ? T extends "avatar" ? T extends Omitted ? unknown : APIUser[T] : never : never;
1382
+ static readonly DataTemplate: Partial<APIFileComponent>;
1274
1383
  /**
1275
- * Whether the user is a bot
1384
+ * @param data - The raw data received from the API for the file component
1276
1385
  */
1277
- get bot(): false | NonNullable<"bot" extends infer T ? T extends "bot" ? T extends Omitted ? unknown : APIUser[T] : never : never>;
1386
+ constructor(data: Partialize<APIFileComponent, Omitted>);
1278
1387
  /**
1279
- * Whether the user is an Official Discord System user
1388
+ * Whether the media should be a spoiler (or blurred out)
1280
1389
  */
1281
- get system(): false | NonNullable<"system" extends infer T ? T extends "system" ? T extends Omitted ? unknown : APIUser[T] : never : never>;
1390
+ get spoiler(): ("spoiler" extends infer T ? T extends "spoiler" ? T extends Omitted ? unknown : APIFileComponent[T] : never : never) | undefined;
1282
1391
  /**
1283
- * Whether the user has mfa enabled
1284
- *
1285
- * @remarks This property is only set when the user was fetched with an OAuth2 token and the `identify` scope
1392
+ * The name of the file
1286
1393
  */
1287
- get mfaEnabled(): ("mfa_enabled" extends infer T ? T extends "mfa_enabled" ? T extends Omitted ? unknown : APIUser[T] : never : never) | undefined;
1394
+ get name(): ("name" extends infer T ? T extends "name" ? T extends Omitted ? unknown : APIFileComponent[T] : never : never) | undefined;
1288
1395
  /**
1289
- * The user's banner hash
1290
- *
1291
- * @remarks This property is only set when the user was manually fetched
1396
+ * The size of the file in bytes
1292
1397
  */
1293
- get banner(): ("banner" extends infer T ? T extends "banner" ? T extends Omitted ? unknown : APIUser[T] : never : never) | undefined;
1398
+ get size(): ("size" extends infer T ? T extends "size" ? T extends Omitted ? unknown : APIFileComponent[T] : never : never) | undefined;
1399
+ }
1400
+
1401
+ /**
1402
+ * Represents a file upload component on a modal.
1403
+ *
1404
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1405
+ */
1406
+ declare class FileUploadComponent<Omitted extends keyof APIFileUploadComponent | '' = ''> extends Component<APIFileUploadComponent, Omitted> {
1294
1407
  /**
1295
- * The base 10 accent color of the user's banner
1296
- *
1297
- * @remarks This property is only set when the user was manually fetched
1408
+ * The template used for removing data from the raw data stored for each FileUploadComponent.
1298
1409
  */
1299
- get accentColor(): ("accent_color" extends infer T ? T extends "accent_color" ? T extends Omitted ? unknown : APIUser[T] : never : never) | undefined;
1410
+ static readonly DataTemplate: Partial<APIFileUploadComponent>;
1300
1411
  /**
1301
- * The user's primary Discord language
1302
- *
1303
- * @remarks This property is only set when the user was fetched with an Oauth2 token and the `identify` scope
1412
+ * @param data - The raw data received from the API for the file upload component
1304
1413
  */
1305
- get locale(): ("locale" extends infer T ? T extends "locale" ? T extends Omitted ? unknown : APIUser[T] : never : never) | undefined;
1414
+ constructor(data: Partialize<APIFileUploadComponent, Omitted>);
1306
1415
  /**
1307
- * Whether the email on the user's account has been verified
1308
- *
1309
- * @remarks This property is only set when the user was fetched with an OAuth2 token and the `email` scope
1416
+ * The custom id to be sent in the interaction when the modal gets submitted
1310
1417
  */
1311
- get verified(): ("verified" extends infer T ? T extends "verified" ? T extends Omitted ? unknown : APIUser[T] : never : never) | undefined;
1418
+ get customId(): "custom_id" extends infer T ? T extends "custom_id" ? T extends Omitted ? unknown : APIFileUploadComponent[T] : never : never;
1312
1419
  /**
1313
- * The user's email
1314
- *
1315
- * @remarks This property is only set when the user was fetched with an OAuth2 token and the `email` scope
1420
+ * The maximum number of items that can be uploaded
1316
1421
  */
1317
- get email(): ("email" extends infer T ? T extends "email" ? T extends Omitted ? unknown : APIUser[T] : never : never) | undefined;
1422
+ get maxValues(): ("max_values" extends infer T ? T extends "max_values" ? T extends Omitted ? unknown : APIFileUploadComponent[T] : never : never) | undefined;
1318
1423
  /**
1319
- * The type of nitro subscription on the user's account
1320
- *
1321
- * @remarks This property is only set when the user was fetched with an OAuth2 token and the `identify` scope
1424
+ * The minimum number of items that must be uploaded
1322
1425
  */
1323
- get premiumType(): ("premium_type" extends infer T ? T extends "premium_type" ? T extends Omitted ? unknown : APIUser[T] : never : never) | undefined;
1426
+ get minValues(): ("min_values" extends infer T ? T extends "min_values" ? T extends Omitted ? unknown : APIFileUploadComponent[T] : never : never) | undefined;
1324
1427
  /**
1325
- * The timestamp the user was created at
1428
+ * Whether the file upload requires files to be uploaded before submitting the modal
1326
1429
  */
1327
- get createdTimestamp(): number | null;
1430
+ get required(): ("required" extends infer T ? T extends "required" ? T extends Omitted ? unknown : APIFileUploadComponent[T] : never : never) | undefined;
1431
+ }
1432
+
1433
+ /**
1434
+ * Base class for all buttons that can have a label on a message.
1435
+ *
1436
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1437
+ * @remarks has a substructure `ComponentEmoji` which needs to be instantiated and stored by an extending class using it
1438
+ */
1439
+ declare abstract class LabeledButtonComponent<Style extends Exclude<ButtonStyle, ButtonStyle.Premium>, Omitted extends keyof ButtonDataType<Style> | '' = ''> extends ButtonComponent<Style, Omitted> {
1328
1440
  /**
1329
- * The time the user was created at
1441
+ * @param data - The raw data received from the API for the button
1330
1442
  */
1331
- get createdAt(): Date | null;
1443
+ constructor(data: Partialize<ButtonDataType<Style>, Omitted>);
1332
1444
  /**
1333
- * The hexadecimal version of the user accent color, with a leading hash
1334
- *
1335
- * @remarks This property is only set when the user was manually fetched
1445
+ * The label to be displayed on the button
1336
1446
  */
1337
- get hexAccentColor(): string | ("accent_color" extends infer T ? T extends "accent_color" ? T extends Omitted ? unknown : APIUser[T] : never : never) | undefined;
1447
+ get label(): ReplaceOmittedWithUnknown<Omitted, ButtonDataType<Style>>["label"] | undefined;
1338
1448
  }
1339
1449
 
1340
1450
  /**
1341
- * Represents a user's connection on Discord.
1451
+ * Represents a button causing a message component interaction on a message.
1342
1452
  *
1343
1453
  * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1344
1454
  */
1345
- declare class Connection<Omitted extends keyof APIConnection | '' = ''> extends Structure<APIConnection, Omitted> {
1455
+ declare class InteractiveButtonComponent<Style extends ButtonStyle.Danger | ButtonStyle.Primary | ButtonStyle.Secondary | ButtonStyle.Success, Omitted extends keyof APIButtonComponentWithCustomId | '' = ''> extends LabeledButtonComponent<Style, Omitted> {
1346
1456
  /**
1347
- * The template used for removing data from the raw data stored for each Connection
1457
+ * The template used for removing data from the raw data stored for each InteractiveButtonComponent.
1348
1458
  */
1349
- static readonly DataTemplate: Partial<APIConnection>;
1459
+ static readonly DataTemplate: Partial<APIButtonComponentWithCustomId>;
1350
1460
  /**
1351
- * @param data - The raw data received from the API for the connection
1461
+ * @param data - The raw data received from the API for the interactive button
1352
1462
  */
1353
- constructor(data: Partialize<APIConnection, Omitted>);
1463
+ constructor(data: Partialize<APIButtonComponentWithCustomId, Omitted>);
1354
1464
  /**
1355
- * {@inheritDoc Structure.[kPatch]}
1356
- *
1357
- * @internal
1465
+ * The custom id to be sent in the interaction when clicked
1358
1466
  */
1359
- [kPatch](data: Partial<APIConnection>): this;
1467
+ get customId(): ReplaceOmittedWithUnknown<Omitted, ButtonDataType<Style>>["custom_id"];
1468
+ }
1469
+
1470
+ /**
1471
+ * Represents a button linking to an URL on a message.
1472
+ *
1473
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1474
+ */
1475
+ declare class LinkButtonComponent<Omitted extends keyof APIButtonComponentWithURL | '' = ''> extends LabeledButtonComponent<ButtonStyle.Link, Omitted> {
1360
1476
  /**
1361
- * The id of the connection account
1477
+ * The template used for removing data from the raw data stored for each LinkButtonComponent.
1362
1478
  */
1363
- get id(): "id" extends infer T ? T extends "id" ? T extends Omitted ? unknown : APIConnection[T] : never : never;
1479
+ static readonly DataTemplate: Partial<APIButtonComponentWithURL>;
1364
1480
  /**
1365
- * The username of the connection account
1481
+ * @param data - The raw data received from the API for the link button
1366
1482
  */
1367
- get name(): "name" extends infer T ? T extends "name" ? T extends Omitted ? unknown : APIConnection[T] : never : never;
1483
+ constructor(data: Partialize<APIButtonComponentWithURL, Omitted>);
1368
1484
  /**
1369
- * The type of service this connection is for
1485
+ * The URL to direct users to when clicked
1370
1486
  */
1371
- get type(): "type" extends infer T ? T extends "type" ? T extends Omitted ? unknown : APIConnection[T] : never : never;
1487
+ get url(): "url" extends infer T ? T extends "url" ? T extends Omitted ? unknown : APIButtonComponentWithURL[T] : never : never;
1488
+ }
1489
+
1490
+ /**
1491
+ * Represents a media gallery component on a message.
1492
+ *
1493
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1494
+ * @remarks has `MediaGalleryItem`s as substructures which need to be instantiated and stored by an extending class using it
1495
+ */
1496
+ declare class MediaGalleryComponent<Omitted extends keyof APIMediaGalleryComponent | '' = ''> extends Component<APIMediaGalleryComponent, Omitted> {
1372
1497
  /**
1373
- * Whether the connection is revoked
1498
+ * The template used for removing data from the raw data stored for each MediaGalleryComponent.
1374
1499
  */
1375
- get revoked(): false | NonNullable<"revoked" extends infer T ? T extends "revoked" ? T extends Omitted ? unknown : APIConnection[T] : never : never>;
1500
+ static readonly DataTemplate: Partial<APIMediaGalleryComponent>;
1376
1501
  /**
1377
- * Whether the connection is verified
1502
+ * @param data - The raw data received from the API for the media gallery
1378
1503
  */
1379
- get verified(): "verified" extends infer T ? T extends "verified" ? T extends Omitted ? unknown : APIConnection[T] : never : never;
1504
+ constructor(data: Partialize<APIMediaGalleryComponent, Omitted>);
1505
+ }
1506
+
1507
+ /**
1508
+ * Represents a mentionable select menu component.
1509
+ *
1510
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1511
+ * @remarks has `SelectMenuDefaultValue`s as substructures which need to be instantiated and stored by an extending class using it
1512
+ */
1513
+ declare class MentionableSelectMenuComponent<Omitted extends keyof APIMentionableSelectComponent | '' = ''> extends SelectMenuComponent<APIMentionableSelectComponent, Omitted> {
1380
1514
  /**
1381
- * Whether friend sync is enabled for this connection
1515
+ * The template used for removing data from the raw data stored for each MentionableSelectMenuComponent.
1382
1516
  */
1383
- get friendSync(): "friend_sync" extends infer T ? T extends "friend_sync" ? T extends Omitted ? unknown : APIConnection[T] : never : never;
1517
+ static readonly DataTemplate: Partial<APIMentionableSelectComponent>;
1384
1518
  /**
1385
- * Whether activities related to this connection are shown in the users presence
1519
+ * @param data - The raw data received from the API for the mentionable select menu
1386
1520
  */
1387
- get showActivity(): "show_activity" extends infer T ? T extends "show_activity" ? T extends Omitted ? unknown : APIConnection[T] : never : never;
1521
+ constructor(data: Partialize<APIMentionableSelectComponent, Omitted>);
1522
+ }
1523
+
1524
+ /**
1525
+ * Represents a button used to buy an SKU from a message.
1526
+ *
1527
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1528
+ */
1529
+ declare class PremiumButtonComponent<Omitted extends keyof APIButtonComponentWithSKUId | '' = ''> extends ButtonComponent<ButtonStyle.Premium, Omitted> {
1388
1530
  /**
1389
- * Whether this connection has an Oauth2 token for console voice transfer
1531
+ * The template used for removing data from the raw data stored for each PremiumButtonComponent.
1390
1532
  */
1391
- get twoWayLink(): "two_way_link" extends infer T ? T extends "two_way_link" ? T extends Omitted ? unknown : APIConnection[T] : never : never;
1533
+ static readonly DataTemplate: Partial<APIButtonComponentWithSKUId>;
1392
1534
  /**
1393
- * The visibility state for this connection
1535
+ * @param data - The raw data received from the API for the premium button
1394
1536
  */
1395
- get visibility(): "visibility" extends infer T ? T extends "visibility" ? T extends Omitted ? unknown : APIConnection[T] : never : never;
1537
+ constructor(data: Partialize<APIButtonComponentWithSKUId, Omitted>);
1538
+ /**
1539
+ * The id for a purchasable SKU
1540
+ */
1541
+ get skuId(): "sku_id" extends infer T ? T extends "sku_id" ? T extends Omitted ? unknown : APIButtonComponentWithSKUId[T] : never : never;
1396
1542
  }
1397
1543
 
1398
- declare function extendTemplate<SuperTemplate extends Record<string, unknown>>(superTemplate: SuperTemplate, additions: Record<string, unknown>): Record<string, unknown> & SuperTemplate;
1544
+ /**
1545
+ * Represents a role select menu component.
1546
+ *
1547
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1548
+ * @remarks has `SelectMenuDefaultValue`s as substructures which need to be instantiated and stored by an extending class using it
1549
+ */
1550
+ declare class RoleSelectMenuComponent<Omitted extends keyof APIRoleSelectComponent | '' = ''> extends SelectMenuComponent<APIRoleSelectComponent, Omitted> {
1551
+ /**
1552
+ * The template used for removing data from the raw data stored for each RoleSelectMenuComponent.
1553
+ */
1554
+ static readonly DataTemplate: Partial<APIRoleSelectComponent>;
1555
+ /**
1556
+ * @param data - The raw data received from the API for the role select menu
1557
+ */
1558
+ constructor(data: Partialize<APIRoleSelectComponent, Omitted>);
1559
+ }
1560
+
1561
+ /**
1562
+ * Represents a section component on a message.
1563
+ *
1564
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1565
+ * @remarks has `Component`s as substructures which need to be instantiated and stored by an extending class using it
1566
+ */
1567
+ declare class SectionComponent<Omitted extends keyof APISectionComponent | '' = ''> extends Component<APISectionComponent, Omitted> {
1568
+ /**
1569
+ * The template used for removing data from the raw data stored for each SectionComponent.
1570
+ */
1571
+ static readonly DataTemplate: Partial<APISectionComponent>;
1572
+ /**
1573
+ * @param data - The raw data received from the API for the section
1574
+ */
1575
+ constructor(data: Partialize<APISectionComponent, Omitted>);
1576
+ }
1577
+
1578
+ /**
1579
+ * Represents a separator component on a message.
1580
+ *
1581
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1582
+ */
1583
+ declare class SeparatorComponent<Omitted extends keyof APISeparatorComponent | '' = ''> extends Component<APISeparatorComponent, Omitted> {
1584
+ /**
1585
+ * The template used for removing data from the raw data stored for each SeparatorComponent.
1586
+ */
1587
+ static readonly DataTemplate: Partial<APISeparatorComponent>;
1588
+ /**
1589
+ * @param data - The raw data received from the API for the separator
1590
+ */
1591
+ constructor(data: Partialize<APISeparatorComponent, Omitted>);
1592
+ /**
1593
+ * Whether a visual divider should be displayed in the component
1594
+ */
1595
+ get divider(): ("divider" extends infer T ? T extends "divider" ? T extends Omitted ? unknown : APISeparatorComponent[T] : never : never) | undefined;
1596
+ /**
1597
+ * The size of the separator padding
1598
+ */
1599
+ get spacing(): ("spacing" extends infer T ? T extends "spacing" ? T extends Omitted ? unknown : APISeparatorComponent[T] : never : never) | undefined;
1600
+ }
1601
+
1602
+ /**
1603
+ * Represents a string select menu component.
1604
+ *
1605
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1606
+ * @remarks has `StringSelectMenuOption`s as substructures which need to be instantiated and stored by an extending class using it
1607
+ */
1608
+ declare class StringSelectMenuComponent<Omitted extends keyof APIStringSelectComponent | '' = ''> extends SelectMenuComponent<APIStringSelectComponent, Omitted> {
1609
+ /**
1610
+ * The template used for removing data from the raw data stored for each StringSelectMenuComponent.
1611
+ */
1612
+ static readonly DataTemplate: Partial<APIStringSelectComponent>;
1613
+ /**
1614
+ * @param data - The raw data received from the API for the string select menu
1615
+ */
1616
+ constructor(data: Partialize<APIStringSelectComponent, Omitted>);
1617
+ }
1618
+
1619
+ /**
1620
+ * Represents a text display component on a message.
1621
+ *
1622
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1623
+ */
1624
+ declare class TextDisplayComponent<Omitted extends keyof APITextDisplayComponent | '' = ''> extends Component<APITextDisplayComponent, Omitted> {
1625
+ /**
1626
+ * The template used for removing data from the raw data stored for each TextDisplayComponent.
1627
+ */
1628
+ static readonly DataTemplate: Partial<APITextDisplayComponent>;
1629
+ /**
1630
+ * @param data - The raw data received from the API for the text display
1631
+ */
1632
+ constructor(data: Partialize<APITextDisplayComponent, Omitted>);
1633
+ /**
1634
+ * Text that will be displayed similar to a message
1635
+ */
1636
+ get content(): "content" extends infer T ? T extends "content" ? T extends Omitted ? unknown : APITextDisplayComponent[T] : never : never;
1637
+ }
1638
+
1639
+ /**
1640
+ * Represents a text input component on a message.
1641
+ *
1642
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1643
+ */
1644
+ declare class TextInputComponent<Omitted extends keyof APITextInputComponent | '' = ''> extends Component<APITextInputComponent, Omitted> {
1645
+ /**
1646
+ * The template used for removing data from the raw data stored for each TextInputComponent.
1647
+ */
1648
+ static readonly DataTemplate: Partial<APITextInputComponent>;
1649
+ /**
1650
+ * @param data - The raw data received from the API for the text input
1651
+ */
1652
+ constructor(data: Partialize<APITextInputComponent, Omitted>);
1653
+ /**
1654
+ * The custom id for the text input
1655
+ */
1656
+ get customId(): "custom_id" extends infer T ? T extends "custom_id" ? T extends Omitted ? unknown : APITextInputComponent[T] : never : never;
1657
+ /**
1658
+ * Text that appears on top of the text input field
1659
+ */
1660
+ get label(): ("label" extends infer T ? T extends "label" ? T extends Omitted ? unknown : APITextInputComponent[T] : never : never) | undefined;
1661
+ /**
1662
+ * The maximal length of text input
1663
+ */
1664
+ get maxLength(): ("max_length" extends infer T ? T extends "max_length" ? T extends Omitted ? unknown : APITextInputComponent[T] : never : never) | undefined;
1665
+ /**
1666
+ * The minimal length of text input
1667
+ */
1668
+ get minLength(): ("min_length" extends infer T ? T extends "min_length" ? T extends Omitted ? unknown : APITextInputComponent[T] : never : never) | undefined;
1669
+ /**
1670
+ * The placeholder for the text input
1671
+ */
1672
+ get placeholder(): ("placeholder" extends infer T ? T extends "placeholder" ? T extends Omitted ? unknown : APITextInputComponent[T] : never : never) | undefined;
1673
+ /**
1674
+ * Whether this text input is required
1675
+ */
1676
+ get required(): ("required" extends infer T ? T extends "required" ? T extends Omitted ? unknown : APITextInputComponent[T] : never : never) | undefined;
1677
+ /**
1678
+ * One of text input styles
1679
+ */
1680
+ get style(): "style" extends infer T ? T extends "style" ? T extends Omitted ? unknown : APITextInputComponent[T] : never : never;
1681
+ /**
1682
+ * The pre-filled text in the text input
1683
+ */
1684
+ get value(): ("value" extends infer T ? T extends "value" ? T extends Omitted ? unknown : APITextInputComponent[T] : never : never) | undefined;
1685
+ }
1686
+
1687
+ /**
1688
+ * Represents a thumbnail component on a message.
1689
+ *
1690
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1691
+ * @remarks has a substructure `UnfurledMediaItem` which needs to be instantiated and stored by an extending class using it
1692
+ */
1693
+ declare class ThumbnailComponent<Omitted extends keyof APIThumbnailComponent | '' = ''> extends Component<APIThumbnailComponent, Omitted> {
1694
+ /**
1695
+ * The template used for removing data from the raw data stored for each ThumbnailComponent.
1696
+ */
1697
+ static readonly DataTemplate: Partial<APIThumbnailComponent>;
1698
+ /**
1699
+ * @param data - The raw data received from the API for the thumbnail
1700
+ */
1701
+ constructor(data: Partialize<APIThumbnailComponent, Omitted>);
1702
+ /**
1703
+ * Alt text for the media
1704
+ */
1705
+ get description(): ("description" extends infer T ? T extends "description" ? T extends Omitted ? unknown : APIThumbnailComponent[T] : never : never) | undefined;
1706
+ /**
1707
+ * Whether the thumbnail should be a spoiler (or blurred out)
1708
+ */
1709
+ get spoiler(): ("spoiler" extends infer T ? T extends "spoiler" ? T extends Omitted ? unknown : APIThumbnailComponent[T] : never : never) | undefined;
1710
+ }
1711
+
1712
+ /**
1713
+ * Represents a user select menu component.
1714
+ *
1715
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1716
+ * @remarks has `SelectMenuDefaultValue`s as substructures which need to be instantiated and stored by an extending class using it
1717
+ */
1718
+ declare class UserSelectMenuComponent<Omitted extends keyof APIUserSelectComponent | '' = ''> extends SelectMenuComponent<APIUserSelectComponent, Omitted> {
1719
+ /**
1720
+ * The template used for removing data from the raw data stored for each UserSelectMenuComponent.
1721
+ */
1722
+ static readonly DataTemplate: Partial<APIUserSelectComponent>;
1723
+ /**
1724
+ * @param data - The raw data received from the API for the user select menu
1725
+ */
1726
+ constructor(data: Partialize<APIUserSelectComponent, Omitted>);
1727
+ }
1728
+
1729
+ declare class ComponentEmoji<Omitted extends keyof APIMessageComponentEmoji | '' = ''> extends Structure<APIMessageComponentEmoji, Omitted> {
1730
+ /**
1731
+ * The template used for removing data from the raw data stored for each ComponentEmoji.
1732
+ */
1733
+ static readonly DataTemplate: Partial<APIMessageComponentEmoji>;
1734
+ /**
1735
+ * @param data - The raw data received from the API for the component emoji
1736
+ */
1737
+ constructor(data: Partialize<APIMessageComponentEmoji, Omitted>);
1738
+ /**
1739
+ * The id of the emoji
1740
+ */
1741
+ get id(): ("id" extends infer T ? T extends "id" ? T extends Omitted ? unknown : APIMessageComponentEmoji[T] : never : never) | undefined;
1742
+ /**
1743
+ * The name of the emoji
1744
+ */
1745
+ get name(): ("name" extends infer T ? T extends "name" ? T extends Omitted ? unknown : APIMessageComponentEmoji[T] : never : never) | undefined;
1746
+ /**
1747
+ * Whether this emoji is animated
1748
+ */
1749
+ get animated(): ("animated" extends infer T ? T extends "animated" ? T extends Omitted ? unknown : APIMessageComponentEmoji[T] : never : never) | undefined;
1750
+ }
1751
+
1752
+ /**
1753
+ * Represents an item in a media gallery on a message.
1754
+ *
1755
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1756
+ * @remarks has a substructure `UnfurledMediaItem` which needs to be instantiated and stored by an extending class using it
1757
+ */
1758
+ declare class MediaGalleryItem<Omitted extends keyof APIMediaGalleryItem | '' = ''> extends Structure<APIMediaGalleryItem, Omitted> {
1759
+ /**
1760
+ * The template used for removing data from the raw data stored for each MediaGalleryItem.
1761
+ */
1762
+ static readonly DataTemplate: Partial<APIMediaGalleryItem>;
1763
+ /**
1764
+ * @param data - The raw data received from the API for the media gallery item
1765
+ */
1766
+ constructor(data: Partialize<APIMediaGalleryItem, Omitted>);
1767
+ /**
1768
+ * Alt text for the media
1769
+ */
1770
+ get description(): ("description" extends infer T ? T extends "description" ? T extends Omitted ? unknown : APIMediaGalleryItem[T] : never : never) | undefined;
1771
+ /**
1772
+ * Whether the media should be a spoiler (or blurred out)
1773
+ */
1774
+ get spoiler(): ("spoiler" extends infer T ? T extends "spoiler" ? T extends Omitted ? unknown : APIMediaGalleryItem[T] : never : never) | undefined;
1775
+ }
1776
+
1777
+ declare class SelectMenuDefaultValue<Type extends SelectMenuDefaultValueType, Omitted extends keyof APISelectMenuDefaultValue<Type> | '' = ''> extends Structure<APISelectMenuDefaultValue<Type>, Omitted> {
1778
+ /**
1779
+ * The template used for removing data from the raw data stored for each SelectMenuDefaultValue.
1780
+ */
1781
+ static readonly DataTemplate: Partial<APISelectMenuDefaultValue<SelectMenuDefaultValueType>>;
1782
+ /**
1783
+ * @param data - The raw data received from the API for the select menu default value
1784
+ */
1785
+ constructor(data: Partialize<APISelectMenuDefaultValue<Type>, Omitted>);
1786
+ get id(): "id" extends infer T ? T extends "id" ? T extends Omitted ? unknown : APISelectMenuDefaultValue<Type>[T] : never : never;
1787
+ get type(): "type" extends infer T ? T extends "type" ? T extends Omitted ? unknown : APISelectMenuDefaultValue<Type>[T] : never : never;
1788
+ }
1789
+
1790
+ /**
1791
+ * Represents an option in a string select menu component.
1792
+ *
1793
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1794
+ * @remarks has a substructure `ComponentEmoji` which needs to be instantiated and stored by an extending class using it
1795
+ */
1796
+ declare class StringSelectMenuOption<Omitted extends keyof APISelectMenuOption | '' = ''> extends Structure<APISelectMenuOption, Omitted> {
1797
+ /**
1798
+ * The template used for removing data from the raw data stored for each StringSelectMenuOption.
1799
+ */
1800
+ static readonly DataTemplate: Partial<APISelectMenuOption>;
1801
+ /**
1802
+ * @param data - The raw data received from the API for the string select menu option
1803
+ */
1804
+ constructor(data: Partialize<APISelectMenuOption, Omitted>);
1805
+ /**
1806
+ * Whether this option should be already-selected by default
1807
+ */
1808
+ get default(): ("default" extends infer T ? T extends "default" ? T extends Omitted ? unknown : APISelectMenuOption[T] : never : never) | undefined;
1809
+ /**
1810
+ * An additional description of the option
1811
+ */
1812
+ get description(): ("description" extends infer T ? T extends "description" ? T extends Omitted ? unknown : APISelectMenuOption[T] : never : never) | undefined;
1813
+ /**
1814
+ * The user-facing name of the option
1815
+ */
1816
+ get label(): "label" extends infer T ? T extends "label" ? T extends Omitted ? unknown : APISelectMenuOption[T] : never : never;
1817
+ /**
1818
+ * The dev-defined value of the option
1819
+ */
1820
+ get value(): "value" extends infer T ? T extends "value" ? T extends Omitted ? unknown : APISelectMenuOption[T] : never : never;
1821
+ }
1822
+
1823
+ /**
1824
+ * Represents a media item in a component on a message.
1825
+ *
1826
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1827
+ */
1828
+ declare class UnfurledMediaItem<Omitted extends keyof APIUnfurledMediaItem | '' = ''> extends Structure<APIUnfurledMediaItem, Omitted> {
1829
+ /**
1830
+ * The template used for removing data from the raw data stored for each UnfurledMediaItem.
1831
+ */
1832
+ static readonly DataTemplate: Partial<APIUnfurledMediaItem>;
1833
+ /**
1834
+ * @param data - The raw data received from the API for the unfurled media item
1835
+ */
1836
+ constructor(data: Partialize<APIUnfurledMediaItem, Omitted>);
1837
+ /**
1838
+ * The id of the uploaded attachment
1839
+ */
1840
+ get attachmentId(): ("attachment_id" extends infer T ? T extends "attachment_id" ? T extends Omitted ? unknown : APIUnfurledMediaItem[T] : never : never) | undefined;
1841
+ /**
1842
+ * The media type of the content
1843
+ */
1844
+ get contentType(): ("content_type" extends infer T ? T extends "content_type" ? T extends Omitted ? unknown : APIUnfurledMediaItem[T] : never : never) | undefined;
1845
+ /**
1846
+ * The height of the media item (if image)
1847
+ */
1848
+ get height(): ("height" extends infer T ? T extends "height" ? T extends Omitted ? unknown : APIUnfurledMediaItem[T] : never : never) | undefined;
1849
+ /**
1850
+ * The proxied URL of the media item
1851
+ */
1852
+ get proxyURL(): ("proxy_url" extends infer T ? T extends "proxy_url" ? T extends Omitted ? unknown : APIUnfurledMediaItem[T] : never : never) | undefined;
1853
+ /**
1854
+ * Supports arbitrary URLs and attachment:// references
1855
+ */
1856
+ get url(): "url" extends infer T ? T extends "url" ? T extends Omitted ? unknown : APIUnfurledMediaItem[T] : never : never;
1857
+ /**
1858
+ * The width of the media item (if image)
1859
+ */
1860
+ get width(): ("width" extends infer T ? T extends "width" ? T extends Omitted ? unknown : APIUnfurledMediaItem[T] : never : never) | undefined;
1861
+ }
1862
+
1863
+ /**
1864
+ * Represents an embed on a message.
1865
+ *
1866
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1867
+ * @remarks has substructures `EmbedAuthor`, `EmbedFooter`, `EmbedField`, `EmbedImage`, `EmbedThumbnail`, `EmbedProvider`, `EmbedVideo` which need to be instantiated and stored by an extending class using it
1868
+ */
1869
+ declare class Embed<Omitted extends keyof APIEmbed | '' = ''> extends Structure<APIEmbed, Omitted> {
1870
+ /**
1871
+ * The template used for removing data from the raw data stored for each Embed.
1872
+ */
1873
+ static readonly DataTemplate: Partial<APIEmbed>;
1874
+ protected [kCreatedTimestamp]: number | null;
1875
+ /**
1876
+ * @param data - The raw data received from the API for the connection
1877
+ */
1878
+ constructor(data: Partialize<APIEmbed, Omitted>);
1879
+ /**
1880
+ * {@inheritDoc Structure.optimizeData}
1881
+ *
1882
+ * @internal
1883
+ */
1884
+ protected optimizeData(data: Partial<APIEmbed>): void;
1885
+ /**
1886
+ * The color code of the embed
1887
+ */
1888
+ get color(): ("color" extends infer T ? T extends "color" ? T extends Omitted ? unknown : APIEmbed[T] : never : never) | undefined;
1889
+ /**
1890
+ * The hexadecimal version of the embed color, with a leading hash
1891
+ */
1892
+ get hexColor(): string | ("color" extends infer T ? T extends "color" ? T extends Omitted ? unknown : APIEmbed[T] : never : never) | undefined;
1893
+ /**
1894
+ * The description of the embed
1895
+ */
1896
+ get description(): ("description" extends infer T ? T extends "description" ? T extends Omitted ? unknown : APIEmbed[T] : never : never) | undefined;
1897
+ /**
1898
+ * THe title of the embed
1899
+ */
1900
+ get title(): ("title" extends infer T ? T extends "title" ? T extends Omitted ? unknown : APIEmbed[T] : never : never) | undefined;
1901
+ /**
1902
+ * The timestamp of the embed content
1903
+ */
1904
+ get timestamp(): number | null;
1905
+ /**
1906
+ * The type of embed (always "rich" for webhook embeds)
1907
+ */
1908
+ get type(): ("type" extends infer T ? T extends "type" ? T extends Omitted ? unknown : APIEmbed[T] : never : never) | undefined;
1909
+ /**
1910
+ * The URL of the embed
1911
+ */
1912
+ get url(): ("url" extends infer T ? T extends "url" ? T extends Omitted ? unknown : APIEmbed[T] : never : never) | undefined;
1913
+ /**
1914
+ * {@inheritDoc Structure.toJSON}
1915
+ */
1916
+ toJSON(): APIEmbed;
1917
+ }
1918
+
1919
+ /**
1920
+ * Represents author data in an embed on a message.
1921
+ *
1922
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1923
+ */
1924
+ declare class EmbedAuthor<Omitted extends keyof APIEmbedAuthor | '' = ''> extends Structure<APIEmbedAuthor, Omitted> {
1925
+ /**
1926
+ * @param data - The raw data received from the API for the connection
1927
+ */
1928
+ constructor(data: Partialize<APIEmbedAuthor, Omitted>);
1929
+ /**
1930
+ * The name of the author
1931
+ */
1932
+ get name(): "name" extends infer T ? T extends "name" ? T extends Omitted ? unknown : APIEmbedAuthor[T] : never : never;
1933
+ /**
1934
+ * The URL of author icon
1935
+ */
1936
+ get iconURL(): ("icon_url" extends infer T ? T extends "icon_url" ? T extends Omitted ? unknown : APIEmbedAuthor[T] : never : never) | undefined;
1937
+ /**
1938
+ * A proxied URL of author icon
1939
+ */
1940
+ get proxyIconURL(): ("proxy_icon_url" extends infer T ? T extends "proxy_icon_url" ? T extends Omitted ? unknown : APIEmbedAuthor[T] : never : never) | undefined;
1941
+ /**
1942
+ * The URL of the author
1943
+ */
1944
+ get url(): ("url" extends infer T ? T extends "url" ? T extends Omitted ? unknown : APIEmbedAuthor[T] : never : never) | undefined;
1945
+ }
1946
+
1947
+ /**
1948
+ * Represents a field's data in an embed on a message.
1949
+ *
1950
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1951
+ */
1952
+ declare class EmbedField<Omitted extends keyof APIEmbedField | '' = ''> extends Structure<APIEmbedField, Omitted> {
1953
+ /**
1954
+ * @param data - The raw data received from the API for the connection
1955
+ */
1956
+ constructor(data: Partialize<APIEmbedField, Omitted>);
1957
+ /**
1958
+ * The name of the field
1959
+ */
1960
+ get name(): "name" extends infer T ? T extends "name" ? T extends Omitted ? unknown : APIEmbedField[T] : never : never;
1961
+ /**
1962
+ * The value of the field
1963
+ */
1964
+ get value(): "value" extends infer T ? T extends "value" ? T extends Omitted ? unknown : APIEmbedField[T] : never : never;
1965
+ /**
1966
+ * Whether this field should display inline
1967
+ */
1968
+ get inline(): ("inline" extends infer T ? T extends "inline" ? T extends Omitted ? unknown : APIEmbedField[T] : never : never) | undefined;
1969
+ }
1970
+
1971
+ /**
1972
+ * Represents footer data in an embed on a message.
1973
+ *
1974
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1975
+ */
1976
+ declare class EmbedFooter<Omitted extends keyof APIEmbedFooter | '' = ''> extends Structure<APIEmbedFooter, Omitted> {
1977
+ /**
1978
+ * @param data - The raw data received from the API for the connection
1979
+ */
1980
+ constructor(data: Partialize<APIEmbedFooter, Omitted>);
1981
+ /**
1982
+ * The footer text
1983
+ */
1984
+ get text(): "text" extends infer T ? T extends "text" ? T extends Omitted ? unknown : APIEmbedFooter[T] : never : never;
1985
+ /**
1986
+ * The URL of the footer icon
1987
+ */
1988
+ get iconURL(): ("icon_url" extends infer T ? T extends "icon_url" ? T extends Omitted ? unknown : APIEmbedFooter[T] : never : never) | undefined;
1989
+ /**
1990
+ * A proxied URL of the footer icon
1991
+ */
1992
+ get proxyIconURL(): ("proxy_icon_url" extends infer T ? T extends "proxy_icon_url" ? T extends Omitted ? unknown : APIEmbedFooter[T] : never : never) | undefined;
1993
+ }
1994
+
1995
+ /**
1996
+ * Represents image data in an embed on a message.
1997
+ *
1998
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
1999
+ */
2000
+ declare class EmbedImage<Omitted extends keyof APIEmbedImage | '' = ''> extends Structure<APIEmbedImage, Omitted> {
2001
+ /**
2002
+ * @param data - The raw data received from the API for the connection
2003
+ */
2004
+ constructor(data: Partialize<APIEmbedImage, Omitted>);
2005
+ /**
2006
+ * The height of the image
2007
+ */
2008
+ get height(): ("height" extends infer T ? T extends "height" ? T extends Omitted ? unknown : APIEmbedImage[T] : never : never) | undefined;
2009
+ /**
2010
+ * The width of the image
2011
+ */
2012
+ get width(): ("width" extends infer T ? T extends "width" ? T extends Omitted ? unknown : APIEmbedImage[T] : never : never) | undefined;
2013
+ /**
2014
+ * A proxied URL of the image
2015
+ */
2016
+ get proxyURL(): ("proxy_url" extends infer T ? T extends "proxy_url" ? T extends Omitted ? unknown : APIEmbedImage[T] : never : never) | undefined;
2017
+ /**
2018
+ * Source URL of the image
2019
+ */
2020
+ get url(): "url" extends infer T ? T extends "url" ? T extends Omitted ? unknown : APIEmbedImage[T] : never : never;
2021
+ }
2022
+
2023
+ /**
2024
+ * Represents provider data in an embed on a message.
2025
+ *
2026
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2027
+ */
2028
+ declare class EmbedProvider<Omitted extends keyof APIEmbedProvider | '' = ''> extends Structure<APIEmbedProvider, Omitted> {
2029
+ /**
2030
+ * @param data - The raw data received from the API for the connection
2031
+ */
2032
+ constructor(data: Partialize<APIEmbedProvider, Omitted>);
2033
+ /**
2034
+ * The name of the provider
2035
+ */
2036
+ get name(): ("name" extends infer T ? T extends "name" ? T extends Omitted ? unknown : APIEmbedProvider[T] : never : never) | undefined;
2037
+ /**
2038
+ * The URL of the provider
2039
+ */
2040
+ get url(): ("url" extends infer T ? T extends "url" ? T extends Omitted ? unknown : APIEmbedProvider[T] : never : never) | undefined;
2041
+ }
2042
+
2043
+ /**
2044
+ * Represents thumbnail data in an embed on a message.
2045
+ *
2046
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2047
+ */
2048
+ declare class EmbedThumbnail<Omitted extends keyof APIEmbedThumbnail | '' = ''> extends Structure<APIEmbedThumbnail, Omitted> {
2049
+ /**
2050
+ * @param data - The raw data received from the API for the connection
2051
+ */
2052
+ constructor(data: Partialize<APIEmbedThumbnail, Omitted>);
2053
+ /**
2054
+ * The height of the thumbnail
2055
+ */
2056
+ get height(): ("height" extends infer T ? T extends "height" ? T extends Omitted ? unknown : APIEmbedThumbnail[T] : never : never) | undefined;
2057
+ /**
2058
+ * The width of the thumbnail
2059
+ */
2060
+ get width(): ("width" extends infer T ? T extends "width" ? T extends Omitted ? unknown : APIEmbedThumbnail[T] : never : never) | undefined;
2061
+ /**
2062
+ * A proxied URL of the thumbnail
2063
+ */
2064
+ get proxyURL(): ("proxy_url" extends infer T ? T extends "proxy_url" ? T extends Omitted ? unknown : APIEmbedThumbnail[T] : never : never) | undefined;
2065
+ /**
2066
+ * The source URL of the thumbnail
2067
+ */
2068
+ get url(): "url" extends infer T ? T extends "url" ? T extends Omitted ? unknown : APIEmbedThumbnail[T] : never : never;
2069
+ }
2070
+
2071
+ /**
2072
+ * Represents video data in an embed on a message.
2073
+ *
2074
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2075
+ */
2076
+ declare class EmbedVideo<Omitted extends keyof APIEmbedVideo | '' = ''> extends Structure<APIEmbedVideo, Omitted> {
2077
+ /**
2078
+ * @param data - The raw data received from the API for the connection
2079
+ */
2080
+ constructor(data: Partialize<APIEmbedVideo, Omitted>);
2081
+ /**
2082
+ * The height of the video
2083
+ */
2084
+ get height(): ("height" extends infer T ? T extends "height" ? T extends Omitted ? unknown : APIEmbedVideo[T] : never : never) | undefined;
2085
+ /**
2086
+ * The width of the video
2087
+ */
2088
+ get width(): ("width" extends infer T ? T extends "width" ? T extends Omitted ? unknown : APIEmbedVideo[T] : never : never) | undefined;
2089
+ /**
2090
+ * A proxied URL of the video
2091
+ */
2092
+ get proxyURL(): ("proxy_url" extends infer T ? T extends "proxy_url" ? T extends Omitted ? unknown : APIEmbedVideo[T] : never : never) | undefined;
2093
+ /**
2094
+ * The source URL of the video
2095
+ */
2096
+ get url(): ("url" extends infer T ? T extends "url" ? T extends Omitted ? unknown : APIEmbedVideo[T] : never : never) | undefined;
2097
+ }
2098
+
2099
+ type InteractionMetadataType<Type extends InteractionType> = Extract<APIMessageInteractionMetadata, {
2100
+ type: Type;
2101
+ }>;
2102
+ /**
2103
+ * Represents metadata about the interaction causing a message.
2104
+ *
2105
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2106
+ * @remarks has a substructure `User` which needs to be instantiated and stored by an extending class using it
2107
+ */
2108
+ declare abstract class InteractionMetadata<Type extends InteractionType, Omitted extends keyof InteractionMetadataType<Type> | '' = ''> extends Structure<InteractionMetadataType<Type>, Omitted> {
2109
+ /**
2110
+ * @param data - The raw data received from the API for the connection
2111
+ */
2112
+ constructor(data: Partialize<InteractionMetadataType<Type>, Omitted>);
2113
+ /**
2114
+ * The id of the interaction
2115
+ */
2116
+ get id(): ReplaceOmittedWithUnknown<Omitted, Extract<discord_api_types_v10.APIApplicationCommandInteractionMetadata, {
2117
+ type: Type;
2118
+ }>>["id"] | ReplaceOmittedWithUnknown<Omitted, Extract<discord_api_types_v10.APIMessageComponentInteractionMetadata, {
2119
+ type: Type;
2120
+ }>>["id"] | ReplaceOmittedWithUnknown<Omitted, Extract<discord_api_types_v10.APIModalSubmitInteractionMetadata, {
2121
+ type: Type;
2122
+ }>>["id"];
2123
+ /**
2124
+ * The id of the original response message, present only on follow-up messages
2125
+ */
2126
+ get originalResponseMessageId(): ReplaceOmittedWithUnknown<Omitted, Extract<discord_api_types_v10.APIApplicationCommandInteractionMetadata, {
2127
+ type: Type;
2128
+ }>>["original_response_message_id"] | ReplaceOmittedWithUnknown<Omitted, Extract<discord_api_types_v10.APIMessageComponentInteractionMetadata, {
2129
+ type: Type;
2130
+ }>>["original_response_message_id"] | ReplaceOmittedWithUnknown<Omitted, Extract<discord_api_types_v10.APIModalSubmitInteractionMetadata, {
2131
+ type: Type;
2132
+ }>>["original_response_message_id"] | undefined;
2133
+ /**
2134
+ * The type of interaction
2135
+ */
2136
+ get type(): ReplaceOmittedWithUnknown<Omitted, Extract<discord_api_types_v10.APIApplicationCommandInteractionMetadata, {
2137
+ type: Type;
2138
+ }>>["type"] | ReplaceOmittedWithUnknown<Omitted, Extract<discord_api_types_v10.APIMessageComponentInteractionMetadata, {
2139
+ type: Type;
2140
+ }>>["type"] | ReplaceOmittedWithUnknown<Omitted, Extract<discord_api_types_v10.APIModalSubmitInteractionMetadata, {
2141
+ type: Type;
2142
+ }>>["type"];
2143
+ }
2144
+
2145
+ /**
2146
+ * Represents metadata about the application command interaction causing a message.
2147
+ *
2148
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2149
+ * @remarks has a substructure `User` which needs to be instantiated and stored by an extending class using it
2150
+ */
2151
+ declare class ApplicationCommandInteractionMetadata<Omitted extends keyof APIApplicationCommandInteractionMetadata | '' = ''> extends InteractionMetadata<InteractionType.ApplicationCommand, Omitted> {
2152
+ /**
2153
+ * The template used for removing data from the raw data stored for each ApplicationCommandInteractionMetadata.
2154
+ */
2155
+ static readonly DataTemplate: Partial<APIApplicationCommandInteractionMetadata>;
2156
+ /**
2157
+ * @param data - The raw data received from the API for the connection
2158
+ */
2159
+ constructor(data: Partialize<APIApplicationCommandInteractionMetadata, Omitted>);
2160
+ /**
2161
+ * The id of the message the command was run on
2162
+ */
2163
+ get targetMessageId(): ("target_message_id" extends infer T ? T extends "target_message_id" ? T extends Omitted ? unknown : APIApplicationCommandInteractionMetadata[T] : never : never) | undefined;
2164
+ }
2165
+
2166
+ declare class Attachment<Omitted extends keyof APIAttachment | '' = ''> extends Structure<APIAttachment, Omitted> {
2167
+ /**
2168
+ * The template used for removing data from the raw data stored for each Attachment.
2169
+ */
2170
+ static readonly DataTemplate: Partial<APIAttachment>;
2171
+ /**
2172
+ * @param data - The raw data received from the API for the connection
2173
+ */
2174
+ constructor(data: Partialize<APIAttachment, Omitted>);
2175
+ /**
2176
+ * The id of the attachment
2177
+ */
2178
+ get id(): "id" extends infer T ? T extends "id" ? T extends Omitted ? unknown : APIAttachment[T] : never : never;
2179
+ /**
2180
+ * The name of the attached file
2181
+ */
2182
+ get filename(): "filename" extends infer T ? T extends "filename" ? T extends Omitted ? unknown : APIAttachment[T] : never : never;
2183
+ /**
2184
+ * The title of the file
2185
+ */
2186
+ get title(): ("title" extends infer T ? T extends "title" ? T extends Omitted ? unknown : APIAttachment[T] : never : never) | undefined;
2187
+ /**
2188
+ * The description for the file
2189
+ */
2190
+ get description(): ("description" extends infer T ? T extends "description" ? T extends Omitted ? unknown : APIAttachment[T] : never : never) | undefined;
2191
+ /**
2192
+ * The attachment's media type
2193
+ */
2194
+ get contentType(): ("content_type" extends infer T ? T extends "content_type" ? T extends Omitted ? unknown : APIAttachment[T] : never : never) | undefined;
2195
+ /**
2196
+ * The size of the file in bytes
2197
+ */
2198
+ get size(): "size" extends infer T ? T extends "size" ? T extends Omitted ? unknown : APIAttachment[T] : never : never;
2199
+ /**
2200
+ * The source URL of the file
2201
+ */
2202
+ get url(): "url" extends infer T ? T extends "url" ? T extends Omitted ? unknown : APIAttachment[T] : never : never;
2203
+ /**
2204
+ * A proxied URL of the file
2205
+ */
2206
+ get proxyURL(): "proxy_url" extends infer T ? T extends "proxy_url" ? T extends Omitted ? unknown : APIAttachment[T] : never : never;
2207
+ /**
2208
+ * The height of the file (if image)
2209
+ */
2210
+ get height(): ("height" extends infer T ? T extends "height" ? T extends Omitted ? unknown : APIAttachment[T] : never : never) | undefined;
2211
+ /**
2212
+ * The width of the file (if image)
2213
+ */
2214
+ get width(): ("width" extends infer T ? T extends "width" ? T extends Omitted ? unknown : APIAttachment[T] : never : never) | undefined;
2215
+ /**
2216
+ * Whether this attachment is ephemeral
2217
+ */
2218
+ get ephemeral(): ("ephemeral" extends infer T ? T extends "ephemeral" ? T extends Omitted ? unknown : APIAttachment[T] : never : never) | undefined;
2219
+ /**
2220
+ * The duration of the audio file
2221
+ */
2222
+ get durationSecs(): ("duration_secs" extends infer T ? T extends "duration_secs" ? T extends Omitted ? unknown : APIAttachment[T] : never : never) | undefined;
2223
+ /**
2224
+ * Base64 encoded bytearray representing a sampled waveform
2225
+ */
2226
+ get waveform(): ("waveform" extends infer T ? T extends "waveform" ? T extends Omitted ? unknown : APIAttachment[T] : never : never) | undefined;
2227
+ /**
2228
+ * Attachment flags combined as a bitfield
2229
+ */
2230
+ get flags(): AttachmentFlagsBitField | null;
2231
+ }
2232
+
2233
+ /**
2234
+ * Represents the mention of a channel on a message on Discord.
2235
+ *
2236
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2237
+ */
2238
+ declare class ChannelMention<Omitted extends keyof APIChannelMention | '' = ''> extends Structure<APIChannelMention, Omitted> {
2239
+ /**
2240
+ * The template used for removing data from the raw data stored for each ChannelMention.
2241
+ */
2242
+ static DataTemplate: Partial<APIChannelMention>;
2243
+ /**
2244
+ * @param data - The raw data received from the API for the channel mention
2245
+ */
2246
+ constructor(data: Partialize<APIChannelMention, Omitted>);
2247
+ /**
2248
+ * The type of the mentioned channel
2249
+ */
2250
+ get type(): "type" extends infer T ? T extends "type" ? T extends Omitted ? unknown : APIChannelMention[T] : never : never;
2251
+ /**
2252
+ * The name of the mentioned channel
2253
+ */
2254
+ get name(): "name" extends infer T ? T extends "name" ? T extends Omitted ? unknown : APIChannelMention[T] : never : never;
2255
+ /**
2256
+ * The id of the mentioned channel
2257
+ */
2258
+ get id(): "id" extends infer T ? T extends "id" ? T extends Omitted ? unknown : APIChannelMention[T] : never : never;
2259
+ /**
2260
+ * The id of the guild the mentioned channel is in
2261
+ */
2262
+ get guildId(): "guild_id" extends infer T ? T extends "guild_id" ? T extends Omitted ? unknown : APIChannelMention[T] : never : never;
2263
+ }
2264
+
2265
+ /**
2266
+ * Represents a message on Discord.
2267
+ *
2268
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2269
+ * @remarks has substructures `Message`, `Channel`, `MessageActivity`, `MessageCall`, `MessageReference`, `Attachment`, `Application`, `ChannelMention`, `Reaction`, `Poll`, `ResolvedInteractionData`, `RoleSubscriptionData`, `Sticker`, all the different `Component`s, ... which need to be instantiated and stored by an extending class using it
2270
+ */
2271
+ declare class Message<Omitted extends keyof APIMessage | '' = 'edited_timestamp' | 'timestamp'> extends Structure<APIMessage, Omitted> {
2272
+ /**
2273
+ * The template used for removing data from the raw data stored for each Message
2274
+ */
2275
+ static DataTemplate: Partial<APIMessage>;
2276
+ protected [kEditedTimestamp]: number | null;
2277
+ /**
2278
+ * @param data - The raw data received from the API for the message
2279
+ */
2280
+ constructor(data: Partialize<APIMessage, Omitted>);
2281
+ /**
2282
+ * {@inheritDoc Structure.optimizeData}
2283
+ *
2284
+ * @internal
2285
+ */
2286
+ protected optimizeData(data: Partial<APIMessage>): void;
2287
+ /**
2288
+ * The message's id
2289
+ */
2290
+ get id(): "id" extends infer T ? T extends "id" ? T extends Omitted ? unknown : APIMessage[T] : never : never;
2291
+ /**
2292
+ * The id of the interaction's application, if this message is a reply to an interaction
2293
+ */
2294
+ get applicationId(): ("application_id" extends infer T ? T extends "application_id" ? T extends Omitted ? unknown : APIMessage[T] : never : never) | undefined;
2295
+ /**
2296
+ * The channel's id this message was sent in
2297
+ */
2298
+ get channelId(): "channel_id" extends infer T ? T extends "channel_id" ? T extends Omitted ? unknown : APIMessage[T] : never : never;
2299
+ /**
2300
+ * The timestamp this message was created at
2301
+ */
2302
+ get createdTimestamp(): number | null;
2303
+ /**
2304
+ * The time the message was created at
2305
+ */
2306
+ get createdAt(): Date | null;
2307
+ /**
2308
+ * The content of the message
2309
+ */
2310
+ get content(): "content" extends infer T ? T extends "content" ? T extends Omitted ? unknown : APIMessage[T] : never : never;
2311
+ /**
2312
+ * The timestamp this message was last edited at, or `null` if it never was edited
2313
+ */
2314
+ get editedTimestamp(): number | null;
2315
+ /**
2316
+ * The time the message was last edited at, or `null` if it never was edited
2317
+ */
2318
+ get editedAt(): Date | null;
2319
+ /**
2320
+ * The flags of this message as a bit field
2321
+ */
2322
+ get flags(): MessageFlagsBitField | null;
2323
+ /**
2324
+ * The nonce used when sending this message.
2325
+ *
2326
+ * @remarks This is only present in MESSAGE_CREATE event, if a nonce was provided when sending
2327
+ */
2328
+ get nonce(): ("nonce" extends infer T ? T extends "nonce" ? T extends Omitted ? unknown : APIMessage[T] : never : never) | undefined;
2329
+ /**
2330
+ * Whether this message is pinned in its channel
2331
+ */
2332
+ get pinned(): "pinned" extends infer T ? T extends "pinned" ? T extends Omitted ? unknown : APIMessage[T] : never : never;
2333
+ /**
2334
+ * A generally increasing integer (there may be gaps or duplicates) that represents the approximate position of the message in a thread
2335
+ * It can be used to estimate the relative position of the message in a thread in company with `totalMessageSent` on parent thread
2336
+ */
2337
+ get position(): ("position" extends infer T ? T extends "position" ? T extends Omitted ? unknown : APIMessage[T] : never : never) | undefined;
2338
+ /**
2339
+ * Whether this message was a TTS message
2340
+ */
2341
+ get tts(): "tts" extends infer T ? T extends "tts" ? T extends Omitted ? unknown : APIMessage[T] : never : never;
2342
+ /**
2343
+ * The type of message
2344
+ */
2345
+ get type(): "type" extends infer T ? T extends "type" ? T extends Omitted ? unknown : APIMessage[T] : never : never;
2346
+ /**
2347
+ * If the message is generated by a webhook, this is the webhook's id
2348
+ */
2349
+ get webhookId(): ("webhook_id" extends infer T ? T extends "webhook_id" ? T extends Omitted ? unknown : APIMessage[T] : never : never) | undefined;
2350
+ /**
2351
+ * {@inheritDoc Structure.toJSON}
2352
+ */
2353
+ toJSON(): APIMessage;
2354
+ }
2355
+
2356
+ declare class MessageActivity<Omitted extends keyof APIMessageActivity | '' = ''> extends Structure<APIMessageActivity, Omitted> {
2357
+ /**
2358
+ * The template used for removing data from the raw data stored for each MessageActivity.
2359
+ */
2360
+ static readonly DataTemplate: Partial<APIMessageActivity>;
2361
+ /**
2362
+ * @param data - The raw data received from the API for the connection
2363
+ */
2364
+ constructor(data: Partialize<APIMessageActivity, Omitted>);
2365
+ /**
2366
+ * The party id from a Rich Presence event
2367
+ */
2368
+ get partyId(): ("party_id" extends infer T ? T extends "party_id" ? T extends Omitted ? unknown : APIMessageActivity[T] : never : never) | undefined;
2369
+ /**
2370
+ * The type of message activity
2371
+ */
2372
+ get type(): "type" extends infer T ? T extends "type" ? T extends Omitted ? unknown : APIMessageActivity[T] : never : never;
2373
+ }
2374
+
2375
+ declare class MessageCall<Omitted extends keyof APIMessageCall | '' = 'ended_timestamp'> extends Structure<APIMessageCall, Omitted> {
2376
+ /**
2377
+ * The template used for removing data from the raw data stored for each MessageCall
2378
+ */
2379
+ static DataTemplate: Partial<APIMessageCall>;
2380
+ protected [kEndedTimestamp]: number | null;
2381
+ /**
2382
+ * @param data - The raw data received from the API for the message call
2383
+ */
2384
+ constructor(data: Partialize<APIMessageCall, Omitted>);
2385
+ /**
2386
+ * {@inheritDoc Structure.optimizeData}
2387
+ *
2388
+ * @internal
2389
+ */
2390
+ protected optimizeData(data: Partial<APIMessageCall>): void;
2391
+ /**
2392
+ * The timestamp this call ended at, or `null` if it didn't end yet
2393
+ */
2394
+ get endedTimestamp(): number | null;
2395
+ /**
2396
+ * The time the call ended at, or `null` if it didn't end yet
2397
+ */
2398
+ get endedAt(): Date | null;
2399
+ /**
2400
+ * {@inheritDoc Structure.toJSON}
2401
+ */
2402
+ toJSON(): APIMessageCall;
2403
+ }
2404
+
2405
+ /**
2406
+ * Represents metadata about the message component interaction causing a message.
2407
+ *
2408
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2409
+ */
2410
+ declare class MessageComponentInteractionMetadata<Omitted extends keyof APIMessageComponentInteractionMetadata | '' = ''> extends InteractionMetadata<InteractionType.MessageComponent, Omitted> {
2411
+ /**
2412
+ * The template used for removing data from the raw data stored for each MessageComponentInteractionMetadata.
2413
+ */
2414
+ static readonly DataTemplate: Partial<APIMessageComponentInteractionMetadata>;
2415
+ /**
2416
+ * @param data - The raw data received from the API for the connection
2417
+ */
2418
+ constructor(data: Partialize<APIMessageComponentInteractionMetadata, Omitted>);
2419
+ /**
2420
+ * The id of the message that contained the interactive component
2421
+ */
2422
+ get interactedMessageId(): "interacted_message_id" extends infer T ? T extends "interacted_message_id" ? T extends Omitted ? unknown : APIMessageComponentInteractionMetadata[T] : never : never;
2423
+ }
2424
+
2425
+ /**
2426
+ * Represents the reference to another message on a message on Discord.
2427
+ *
2428
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2429
+ */
2430
+ declare class MessageReference<Omitted extends keyof APIMessageReference | '' = ''> extends Structure<APIMessageReference, Omitted> {
2431
+ /**
2432
+ * The template used for removing data from the raw data stored for each MessageReference.
2433
+ */
2434
+ static DataTemplate: Partial<APIMessageReference>;
2435
+ /**
2436
+ * @param data - The raw data received from the API for the message reference
2437
+ */
2438
+ constructor(data: Partialize<APIMessageReference, Omitted>);
2439
+ /**
2440
+ * The type of this reference
2441
+ */
2442
+ get type(): MessageReferenceType;
2443
+ /**
2444
+ * The id of the referenced message
2445
+ */
2446
+ get messageId(): ("message_id" extends infer T ? T extends "message_id" ? T extends Omitted ? unknown : APIMessageReference[T] : never : never) | undefined;
2447
+ /**
2448
+ * The id of the channel the referenced message was sent in
2449
+ */
2450
+ get channelId(): "channel_id" extends infer T ? T extends "channel_id" ? T extends Omitted ? unknown : APIMessageReference[T] : never : never;
2451
+ /**
2452
+ * The id of the guild the referenced message was sent in
2453
+ */
2454
+ get guildId(): ("guild_id" extends infer T ? T extends "guild_id" ? T extends Omitted ? unknown : APIMessageReference[T] : never : never) | undefined;
2455
+ }
2456
+
2457
+ /**
2458
+ * Represents metadata about the modal submit interaction causing a message.
2459
+ *
2460
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2461
+ * @remarks has a substructure `InteractionMetadata` which needs to be instantiated and stored by an extending class using it
2462
+ */
2463
+ declare class ModalSubmitInteractionMetadata<Omitted extends keyof APIModalSubmitInteractionMetadata | '' = ''> extends InteractionMetadata<InteractionType.ModalSubmit, Omitted> {
2464
+ /**
2465
+ * The template used for removing data from the raw data stored for each ModalSubmitInteractionMetadata.
2466
+ */
2467
+ static readonly DataTemplate: Partial<APIModalSubmitInteractionMetadata>;
2468
+ /**
2469
+ * @param data - The raw data received from the API for the connection
2470
+ */
2471
+ constructor(data: Partialize<APIModalSubmitInteractionMetadata, Omitted>);
2472
+ }
2473
+
2474
+ /**
2475
+ * Represents a reaction on a message on Discord.
2476
+ *
2477
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2478
+ * @remarks has substructures `Emoji`, `ReactionCountDetails` which need to be instantiated and stored by an extending class using it
2479
+ */
2480
+ declare class Reaction<Omitted extends keyof APIReaction | '' = ''> extends Structure<APIReaction, Omitted> {
2481
+ /**
2482
+ * The template used for removing data from the raw data stored for each Reaction.
2483
+ */
2484
+ static DataTemplate: Partial<APIReaction>;
2485
+ protected [kBurstColors]: number[] | null;
2486
+ /**
2487
+ * @param data - The raw data received from the API for the reaction
2488
+ */
2489
+ constructor(data: Partialize<APIReaction, Omitted>);
2490
+ /**
2491
+ * {@inheritDoc Structure.optimizeData}
2492
+ *
2493
+ * @internal
2494
+ */
2495
+ protected optimizeData(data: Partial<APIReaction>): void;
2496
+ /**
2497
+ * The amount how often this emoji has been used to react (including super reacts)
2498
+ */
2499
+ get count(): "count" extends infer T ? T extends "count" ? T extends Omitted ? unknown : APIReaction[T] : never : never;
2500
+ /**
2501
+ * Whether the current user has reacted using this emoji
2502
+ */
2503
+ get me(): "me" extends infer T ? T extends "me" ? T extends Omitted ? unknown : APIReaction[T] : never : never;
2504
+ /**
2505
+ * Whether the current user has super-reacted using this emoji
2506
+ */
2507
+ get meBurst(): "me_burst" extends infer T ? T extends "me_burst" ? T extends Omitted ? unknown : APIReaction[T] : never : never;
2508
+ /**
2509
+ * The colors used for super reaction
2510
+ */
2511
+ get burstColors(): number[] | null;
2512
+ /**
2513
+ * {@inheritDoc Structure.toJSON}
2514
+ */
2515
+ toJSON(): APIReaction;
2516
+ }
2517
+
2518
+ /**
2519
+ * Represents the usage count of a reaction on a message on Discord.
2520
+ *
2521
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2522
+ */
2523
+ declare class ReactionCountDetails<Omitted extends keyof APIReactionCountDetails | '' = ''> extends Structure<APIReactionCountDetails, Omitted> {
2524
+ /**
2525
+ * The template used for removing data from the raw data stored for each ReactionCountDetails.
2526
+ */
2527
+ static DataTemplate: Partial<APIReactionCountDetails>;
2528
+ /**
2529
+ * @param data - The raw data received from the API for the reaction count details
2530
+ */
2531
+ constructor(data: Partialize<APIReactionCountDetails, Omitted>);
2532
+ /**
2533
+ * The amount how often this emoji has been used to react (excluding super reacts)
2534
+ */
2535
+ get normal(): "normal" extends infer T ? T extends "normal" ? T extends Omitted ? unknown : APIReactionCountDetails[T] : never : never;
2536
+ /**
2537
+ * The amount how often this emoji has been used to super-react
2538
+ */
2539
+ get burst(): "burst" extends infer T ? T extends "burst" ? T extends Omitted ? unknown : APIReactionCountDetails[T] : never : never;
2540
+ }
2541
+
2542
+ /**
2543
+ * Represents metadata about the role subscription causing a message.
2544
+ *
2545
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2546
+ */
2547
+ declare abstract class RoleSubscriptionData<Omitted extends keyof APIMessageRoleSubscriptionData | '' = ''> extends Structure<APIMessageRoleSubscriptionData, Omitted> {
2548
+ /**
2549
+ * @param data - The raw data received from the API for the connection
2550
+ */
2551
+ constructor(data: Partialize<APIMessageRoleSubscriptionData, Omitted>);
2552
+ /**
2553
+ * The id of the SKU and listing the user is subscribed to
2554
+ */
2555
+ get roleSubscriptionListingId(): "role_subscription_listing_id" extends infer T ? T extends "role_subscription_listing_id" ? T extends Omitted ? unknown : APIMessageRoleSubscriptionData[T] : never : never;
2556
+ /**
2557
+ * The name of the tier the user is subscribed to
2558
+ */
2559
+ get tierName(): "tier_name" extends infer T ? T extends "tier_name" ? T extends Omitted ? unknown : APIMessageRoleSubscriptionData[T] : never : never;
2560
+ /**
2561
+ * The number of months the user has been subscribed for
2562
+ */
2563
+ get totalMonthsSubscribed(): "total_months_subscribed" extends infer T ? T extends "total_months_subscribed" ? T extends Omitted ? unknown : APIMessageRoleSubscriptionData[T] : never : never;
2564
+ /**
2565
+ * Whether this notification is for a renewal
2566
+ */
2567
+ get isRenewal(): "is_renewal" extends infer T ? T extends "is_renewal" ? T extends Omitted ? unknown : APIMessageRoleSubscriptionData[T] : never : never;
2568
+ }
2569
+
2570
+ /**
2571
+ * Represents a poll on a message on Discord.
2572
+ *
2573
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2574
+ * @remarks has substructures `PollMedia`, `PollAnswer`, `PollResults` which need to be instantiated and stored by an extending class using it
2575
+ */
2576
+ declare class Poll<Omitted extends keyof APIPoll | '' = ''> extends Structure<APIPoll, Omitted> {
2577
+ /**
2578
+ * The template used for removing data from the raw data stored for each Poll.
2579
+ */
2580
+ static DataTemplate: Partial<APIPoll>;
2581
+ /**
2582
+ * Optimized storage of {@link discord-api-types/v10#(APIPoll:interface).expiry}
2583
+ *
2584
+ * @internal
2585
+ */
2586
+ protected [kExpiresTimestamp]: number | null;
2587
+ /**
2588
+ * @param data - The raw data received from the API for the poll
2589
+ */
2590
+ constructor(data: Partialize<APIPoll, Omitted>);
2591
+ /**
2592
+ * {@inheritDoc Structure.optimizeData}
2593
+ *
2594
+ * @internal
2595
+ */
2596
+ protected optimizeData(data: Partial<APIPoll>): void;
2597
+ /**
2598
+ * Whether a user can select multiple answers
2599
+ */
2600
+ get allowMultiselect(): "allow_multiselect" extends infer T ? T extends "allow_multiselect" ? T extends Omitted ? unknown : APIPoll[T] : never : never;
2601
+ /**
2602
+ * The layout type of the poll
2603
+ */
2604
+ get layoutType(): "layout_type" extends infer T ? T extends "layout_type" ? T extends Omitted ? unknown : APIPoll[T] : never : never;
2605
+ /**
2606
+ * The timestamp this poll will expire at
2607
+ */
2608
+ get expiresTimestamp(): number | null;
2609
+ /**
2610
+ * The time the poll will expire at
2611
+ */
2612
+ get expiresAt(): Date | null;
2613
+ /**
2614
+ * {@inheritDoc Structure.toJSON}
2615
+ */
2616
+ toJSON(): APIPoll;
2617
+ }
2618
+
2619
+ /**
2620
+ * Represents an answer to a poll on a message on Discord.
2621
+ *
2622
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2623
+ * @remarks has a substructure `PollMedia` which need to be instantiated and stored by an extending class using it
2624
+ */
2625
+ declare class PollAnswer<Omitted extends keyof APIPollAnswer | '' = ''> extends Structure<APIPollAnswer, Omitted> {
2626
+ /**
2627
+ * The template used for removing data from the raw data stored for each PollAnswer.
2628
+ */
2629
+ static DataTemplate: Partial<APIPollAnswer>;
2630
+ /**
2631
+ * @param data - The raw data received from the API for the poll answer
2632
+ */
2633
+ constructor(data: Partialize<APIPollAnswer, Omitted>);
2634
+ /**
2635
+ * The id of the poll answer
2636
+ */
2637
+ get answerId(): "answer_id" extends infer T ? T extends "answer_id" ? T extends Omitted ? unknown : APIPollAnswer[T] : never : never;
2638
+ }
2639
+
2640
+ /**
2641
+ * Represents the counts of answers to a poll on a message on Discord.
2642
+ *
2643
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2644
+ */
2645
+ declare class PollAnswerCount<Omitted extends keyof APIPollAnswerCount | '' = ''> extends Structure<APIPollAnswerCount, Omitted> {
2646
+ /**
2647
+ * The template used for removing data from the raw data stored for each PollAnswerCount.
2648
+ */
2649
+ static DataTemplate: Partial<APIPollAnswerCount>;
2650
+ /**
2651
+ * @param data - The raw data received from the API for the poll answer count
2652
+ */
2653
+ constructor(data: Partialize<APIPollAnswerCount, Omitted>);
2654
+ /**
2655
+ * The id of the poll answer
2656
+ */
2657
+ get id(): "id" extends infer T ? T extends "id" ? T extends Omitted ? unknown : APIPollAnswerCount[T] : never : never;
2658
+ /**
2659
+ * The number of votes for this answer
2660
+ */
2661
+ get count(): "count" extends infer T ? T extends "count" ? T extends Omitted ? unknown : APIPollAnswerCount[T] : never : never;
2662
+ /**
2663
+ * Whether the current user voted for this answer
2664
+ */
2665
+ get meVoted(): "me_voted" extends infer T ? T extends "me_voted" ? T extends Omitted ? unknown : APIPollAnswerCount[T] : never : never;
2666
+ }
2667
+
2668
+ /**
2669
+ * Represents a field of a poll on a message on Discord.
2670
+ *
2671
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2672
+ * @remarks has a substructure `Emoji` which need to be instantiated and stored by an extending class using it
2673
+ */
2674
+ declare class PollMedia<Omitted extends keyof APIPollMedia | '' = ''> extends Structure<APIPollMedia, Omitted> {
2675
+ /**
2676
+ * The template used for removing data from the raw data stored for each PollMedia.
2677
+ */
2678
+ static DataTemplate: Partial<APIPollMedia>;
2679
+ /**
2680
+ * @param data - The raw data received from the API for the poll media
2681
+ */
2682
+ constructor(data: Partialize<APIPollMedia, Omitted>);
2683
+ /**
2684
+ * The text of the poll field
2685
+ */
2686
+ get text(): ("text" extends infer T ? T extends "text" ? T extends Omitted ? unknown : APIPollMedia[T] : never : never) | undefined;
2687
+ }
2688
+
2689
+ /**
2690
+ * Represents the results of a poll on a message on Discord.
2691
+ *
2692
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2693
+ * @remarks has a substructure `PollAnswerCount` which need to be instantiated and stored by an extending class using it
2694
+ */
2695
+ declare class PollResults<Omitted extends keyof APIPollResults | '' = ''> extends Structure<APIPollResults, Omitted> {
2696
+ /**
2697
+ * The template used for removing data from the raw data stored for each PollResults.
2698
+ */
2699
+ static DataTemplate: Partial<APIPollResults>;
2700
+ /**
2701
+ * @param data - The raw data received from the API for the poll results
2702
+ */
2703
+ constructor(data: Partialize<APIPollResults, Omitted>);
2704
+ /**
2705
+ * Whether the votes have been precisely counted
2706
+ */
2707
+ get isFinalized(): "is_finalized" extends infer T ? T extends "is_finalized" ? T extends Omitted ? unknown : APIPollResults[T] : never : never;
2708
+ }
2709
+
2710
+ /**
2711
+ * Represents a sticker on Discord.
2712
+ *
2713
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2714
+ */
2715
+ declare class Sticker<Omitted extends keyof APISticker | '' = ''> extends Structure<APISticker, Omitted> {
2716
+ /**
2717
+ * The template used for removing data from the raw data stored for each SitckerItem.
2718
+ */
2719
+ static DataTemplate: Partial<APISticker>;
2720
+ /**
2721
+ * @param data - The raw data received from the API for the sticker item
2722
+ */
2723
+ constructor(data: Partialize<APISticker, Omitted>);
2724
+ /**
2725
+ * The id of the sticker
2726
+ */
2727
+ get id(): "id" extends infer T ? T extends "id" ? T extends Omitted ? unknown : APISticker[T] : never : never;
2728
+ /**
2729
+ * The name of the sticker
2730
+ */
2731
+ get name(): "name" extends infer T ? T extends "name" ? T extends Omitted ? unknown : APISticker[T] : never : never;
2732
+ /**
2733
+ * The format type of the sticker
2734
+ */
2735
+ get formatType(): "format_type" extends infer T ? T extends "format_type" ? T extends Omitted ? unknown : APISticker[T] : never : never;
2736
+ /**
2737
+ * Whether this guild sticker can be used, may be false due to loss of Server Boosts
2738
+ */
2739
+ get available(): ("available" extends infer T ? T extends "available" ? T extends Omitted ? unknown : APISticker[T] : never : never) | undefined;
2740
+ /**
2741
+ * The description of the sticker
2742
+ */
2743
+ get description(): "description" extends infer T ? T extends "description" ? T extends Omitted ? unknown : APISticker[T] : never : never;
2744
+ /**
2745
+ * The autocomplete/suggestion tags for the sticker
2746
+ */
2747
+ get tags(): "tags" extends infer T ? T extends "tags" ? T extends Omitted ? unknown : APISticker[T] : never : never;
2748
+ /**
2749
+ * The type of this sticker
2750
+ */
2751
+ get type(): "type" extends infer T ? T extends "type" ? T extends Omitted ? unknown : APISticker[T] : never : never;
2752
+ }
2753
+
2754
+ /**
2755
+ * Represents metadata of an avatar decoration of a User.
2756
+ *
2757
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2758
+ */
2759
+ declare class AvatarDecorationData<Omitted extends keyof APIAvatarDecorationData | '' = ''> extends Structure<APIAvatarDecorationData, Omitted> {
2760
+ /**
2761
+ * The template used for removing data from the raw data stored for each Connection
2762
+ */
2763
+ static readonly DataTemplate: Partial<APIAvatarDecorationData>;
2764
+ /**
2765
+ * @param data - The raw data received from the API for the connection
2766
+ */
2767
+ constructor(data: Partialize<APIAvatarDecorationData, Omitted>);
2768
+ /**
2769
+ * The id of the SKU this avatar decoration is part of.
2770
+ */
2771
+ get skuId(): "sku_id" extends infer T ? T extends "sku_id" ? T extends Omitted ? unknown : APIAvatarDecorationData[T] : never : never;
2772
+ /**
2773
+ * The asset of this avatar decoration.
2774
+ */
2775
+ get asset(): "asset" extends infer T ? T extends "asset" ? T extends Omitted ? unknown : APIAvatarDecorationData[T] : never : never;
2776
+ }
2777
+
2778
+ /**
2779
+ * Represents any user on Discord.
2780
+ *
2781
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2782
+ * @remarks has a substructure `AvatarDecorationData`, which needs to be instantiated and stored by an extending class using it
2783
+ */
2784
+ declare class User<Omitted extends keyof APIUser | '' = ''> extends Structure<APIUser, Omitted> {
2785
+ /**
2786
+ * The template used for removing data from the raw data stored for each User
2787
+ */
2788
+ static readonly DataTemplate: Partial<APIUser>;
2789
+ /**
2790
+ * @param data - The raw data received from the API for the user
2791
+ */
2792
+ constructor(data: Partialize<APIUser, Omitted>);
2793
+ /**
2794
+ * The user's id
2795
+ */
2796
+ get id(): "id" extends infer T ? T extends "id" ? T extends Omitted ? unknown : APIUser[T] : never : never;
2797
+ /**
2798
+ * The username of the user
2799
+ */
2800
+ get username(): "username" extends infer T ? T extends "username" ? T extends Omitted ? unknown : APIUser[T] : never : never;
2801
+ /**
2802
+ * The user's 4 digit tag, if a bot
2803
+ */
2804
+ get discriminator(): "discriminator" extends infer T ? T extends "discriminator" ? T extends Omitted ? unknown : APIUser[T] : never : never;
2805
+ /**
2806
+ * The user's display name, the application name for bots
2807
+ */
2808
+ get globalName(): "global_name" extends infer T ? T extends "global_name" ? T extends Omitted ? unknown : APIUser[T] : never : never;
2809
+ /**
2810
+ * The name displayed in the client for this user when no nickname is set
2811
+ */
2812
+ get displayName(): ("username" extends infer T ? T extends "username" ? T extends Omitted ? unknown : APIUser[T] : never : never) | NonNullable<"global_name" extends infer T_1 ? T_1 extends "global_name" ? T_1 extends Omitted ? unknown : APIUser[T_1] : never : never>;
2813
+ /**
2814
+ * The user avatar's hash
2815
+ */
2816
+ get avatar(): "avatar" extends infer T ? T extends "avatar" ? T extends Omitted ? unknown : APIUser[T] : never : never;
2817
+ /**
2818
+ * Whether the user is a bot
2819
+ */
2820
+ get bot(): false | NonNullable<"bot" extends infer T ? T extends "bot" ? T extends Omitted ? unknown : APIUser[T] : never : never>;
2821
+ /**
2822
+ * Whether the user is an Official Discord System user
2823
+ */
2824
+ get system(): false | NonNullable<"system" extends infer T ? T extends "system" ? T extends Omitted ? unknown : APIUser[T] : never : never>;
2825
+ /**
2826
+ * Whether the user has mfa enabled
2827
+ *
2828
+ * @remarks This property is only set when the user was fetched with an OAuth2 token and the `identify` scope
2829
+ */
2830
+ get mfaEnabled(): ("mfa_enabled" extends infer T ? T extends "mfa_enabled" ? T extends Omitted ? unknown : APIUser[T] : never : never) | undefined;
2831
+ /**
2832
+ * The user's banner hash
2833
+ *
2834
+ * @remarks This property is only set when the user was manually fetched
2835
+ */
2836
+ get banner(): ("banner" extends infer T ? T extends "banner" ? T extends Omitted ? unknown : APIUser[T] : never : never) | undefined;
2837
+ /**
2838
+ * The base 10 accent color of the user's banner
2839
+ *
2840
+ * @remarks This property is only set when the user was manually fetched
2841
+ */
2842
+ get accentColor(): ("accent_color" extends infer T ? T extends "accent_color" ? T extends Omitted ? unknown : APIUser[T] : never : never) | undefined;
2843
+ /**
2844
+ * The user's primary Discord language
2845
+ *
2846
+ * @remarks This property is only set when the user was fetched with an Oauth2 token and the `identify` scope
2847
+ */
2848
+ get locale(): ("locale" extends infer T ? T extends "locale" ? T extends Omitted ? unknown : APIUser[T] : never : never) | undefined;
2849
+ /**
2850
+ * Whether the email on the user's account has been verified
2851
+ *
2852
+ * @remarks This property is only set when the user was fetched with an OAuth2 token and the `email` scope
2853
+ */
2854
+ get verified(): ("verified" extends infer T ? T extends "verified" ? T extends Omitted ? unknown : APIUser[T] : never : never) | undefined;
2855
+ /**
2856
+ * The user's email
2857
+ *
2858
+ * @remarks This property is only set when the user was fetched with an OAuth2 token and the `email` scope
2859
+ */
2860
+ get email(): ("email" extends infer T ? T extends "email" ? T extends Omitted ? unknown : APIUser[T] : never : never) | undefined;
2861
+ /**
2862
+ * The type of nitro subscription on the user's account
2863
+ *
2864
+ * @remarks This property is only set when the user was fetched with an OAuth2 token and the `identify` scope
2865
+ */
2866
+ get premiumType(): ("premium_type" extends infer T ? T extends "premium_type" ? T extends Omitted ? unknown : APIUser[T] : never : never) | undefined;
2867
+ /**
2868
+ * The timestamp the user was created at
2869
+ */
2870
+ get createdTimestamp(): number | null;
2871
+ /**
2872
+ * The time the user was created at
2873
+ */
2874
+ get createdAt(): Date | null;
2875
+ /**
2876
+ * The hexadecimal version of the user accent color, with a leading hash
2877
+ *
2878
+ * @remarks This property is only set when the user was manually fetched
2879
+ */
2880
+ get hexAccentColor(): string | ("accent_color" extends infer T ? T extends "accent_color" ? T extends Omitted ? unknown : APIUser[T] : never : never) | undefined;
2881
+ }
2882
+
2883
+ /**
2884
+ * Represents a user's connection on Discord.
2885
+ *
2886
+ * @typeParam Omitted - Specify the properties that will not be stored in the raw data field as a union, implement via `DataTemplate`
2887
+ */
2888
+ declare class Connection<Omitted extends keyof APIConnection | '' = ''> extends Structure<APIConnection, Omitted> {
2889
+ /**
2890
+ * The template used for removing data from the raw data stored for each Connection
2891
+ */
2892
+ static readonly DataTemplate: Partial<APIConnection>;
2893
+ /**
2894
+ * @param data - The raw data received from the API for the connection
2895
+ */
2896
+ constructor(data: Partialize<APIConnection, Omitted>);
2897
+ /**
2898
+ * The id of the connection account
2899
+ */
2900
+ get id(): "id" extends infer T ? T extends "id" ? T extends Omitted ? unknown : APIConnection[T] : never : never;
2901
+ /**
2902
+ * The username of the connection account
2903
+ */
2904
+ get name(): "name" extends infer T ? T extends "name" ? T extends Omitted ? unknown : APIConnection[T] : never : never;
2905
+ /**
2906
+ * The type of service this connection is for
2907
+ */
2908
+ get type(): "type" extends infer T ? T extends "type" ? T extends Omitted ? unknown : APIConnection[T] : never : never;
2909
+ /**
2910
+ * Whether the connection is revoked
2911
+ */
2912
+ get revoked(): false | NonNullable<"revoked" extends infer T ? T extends "revoked" ? T extends Omitted ? unknown : APIConnection[T] : never : never>;
2913
+ /**
2914
+ * Whether the connection is verified
2915
+ */
2916
+ get verified(): "verified" extends infer T ? T extends "verified" ? T extends Omitted ? unknown : APIConnection[T] : never : never;
2917
+ /**
2918
+ * Whether friend sync is enabled for this connection
2919
+ */
2920
+ get friendSync(): "friend_sync" extends infer T ? T extends "friend_sync" ? T extends Omitted ? unknown : APIConnection[T] : never : never;
2921
+ /**
2922
+ * Whether activities related to this connection are shown in the users presence
2923
+ */
2924
+ get showActivity(): "show_activity" extends infer T ? T extends "show_activity" ? T extends Omitted ? unknown : APIConnection[T] : never : never;
2925
+ /**
2926
+ * Whether this connection has an Oauth2 token for console voice transfer
2927
+ */
2928
+ get twoWayLink(): "two_way_link" extends infer T ? T extends "two_way_link" ? T extends Omitted ? unknown : APIConnection[T] : never : never;
2929
+ /**
2930
+ * The visibility state for this connection
2931
+ */
2932
+ get visibility(): "visibility" extends infer T ? T extends "visibility" ? T extends Omitted ? unknown : APIConnection[T] : never : never;
2933
+ }
2934
+
2935
+ declare function extendTemplate<SuperTemplate extends Record<string, unknown>>(superTemplate: SuperTemplate, additions: Record<string, unknown>): Record<string, unknown> & SuperTemplate;
2936
+ /**
2937
+ * Turns a JavaScript Date object into the timestamp format used by Discord in payloads.
2938
+ * E.g. `2025-11-16T14:09:25.239000+00:00`
2939
+ *
2940
+ * @private
2941
+ * @param date a Date instance
2942
+ * @returns an ISO8601 timestamp with microseconds precision and explicit +00:00 timezone
2943
+ */
2944
+ declare function dateToDiscordISOTimestamp(date: Date): string;
1399
2945
 
1400
- export { type APIActualInvite, AnnouncementChannel, AnnouncementThreadChannel, AppliedTagsMixin, AvatarDecorationData, BitField, type BitFieldResolvable, CategoryChannel, Channel, type ChannelDataType, ChannelFlagsBitField, ChannelOwnerMixin, ChannelParentMixin, ChannelPermissionMixin, ChannelPinMixin, ChannelSlowmodeMixin, ChannelTopicMixin, ChannelWebhookMixin, type CollapseUnion, Connection, DMChannel, DMChannelMixin, DataTemplatePropertyName, type EnumLike, ForumChannel, ForumTag, GroupDMChannel, GroupDMMixin, GuildChannelMixin, type If, Invite, MediaChannel, type MergePrototype, type MergePrototypes, Mixin, type MixinBase, type MixinTypes, type Mixinable, type NonAbstract, OptimizeDataPropertyName, type OptionalPropertyNames, type PartialChannel, type Partialize, PermissionOverwrite, PermissionsBitField, PrivateThreadChannel, PublicThreadChannel, type RecursiveReadonlyArray, type ReplaceOmittedWithUnknown, StageChannel, Structure, TextChannel, TextChannelMixin, ThreadChannelMixin, ThreadMetadata, ThreadOnlyChannelMixin, User, VoiceChannel, VoiceChannelMixin, extendTemplate };
2946
+ export { type APIActualInvite, ActionRowComponent, AnnouncementChannel, AnnouncementThreadChannel, ApplicationCommandInteractionMetadata, AppliedTagsMixin, Attachment, AttachmentFlagsBitField, AvatarDecorationData, BitField, type BitFieldResolvable, ButtonComponent, type ButtonDataType, CategoryChannel, Channel, type ChannelDataType, ChannelFlagsBitField, ChannelMention, ChannelOwnerMixin, ChannelParentMixin, ChannelPermissionMixin, ChannelPinMixin, ChannelSelectMenuComponent, ChannelSlowmodeMixin, ChannelTopicMixin, ChannelWebhookMixin, type CollapseUnion, Component, type ComponentDataType, ComponentEmoji, Connection, ContainerComponent, DMChannel, DMChannelMixin, DataTemplatePropertyName, Embed, EmbedAuthor, EmbedField, EmbedFooter, EmbedImage, EmbedProvider, EmbedThumbnail, EmbedVideo, type EnumLike, FileComponent, FileUploadComponent, ForumChannel, ForumTag, GroupDMChannel, GroupDMMixin, GuildChannelMixin, type If, InteractionMetadata, type InteractionMetadataType, InteractiveButtonComponent, Invite, LabeledButtonComponent, LinkButtonComponent, MediaChannel, MediaGalleryComponent, MediaGalleryItem, MentionableSelectMenuComponent, type MergePrototype, type MergePrototypes, Message, MessageActivity, MessageCall, MessageComponentInteractionMetadata, MessageFlagsBitField, MessageReference, Mixin, type MixinBase, type MixinTypes, type Mixinable, ModalSubmitInteractionMetadata, type NonAbstract, OptimizeDataPropertyName, type OptionalPropertyNames, type PartialChannel, type Partialize, PermissionOverwrite, PermissionsBitField, Poll, PollAnswer, PollAnswerCount, PollMedia, PollResults, PremiumButtonComponent, PrivateThreadChannel, PublicThreadChannel, Reaction, ReactionCountDetails, type RecursiveReadonlyArray, type ReplaceOmittedWithUnknown, ResolvedInteractionData, RoleSelectMenuComponent, RoleSubscriptionData, SectionComponent, SelectMenuComponent, SelectMenuDefaultValue, SeparatorComponent, StageChannel, Sticker, StringSelectMenuComponent, StringSelectMenuOption, Structure, TextChannel, TextChannelMixin, TextDisplayComponent, TextInputComponent, ThreadChannelMixin, ThreadMetadata, ThreadOnlyChannelMixin, ThumbnailComponent, UnfurledMediaItem, User, UserSelectMenuComponent, VoiceChannel, VoiceChannelMixin, dateToDiscordISOTimestamp, extendTemplate };