oceanic.js 1.11.3-dev.20ea410 → 1.11.3-dev.49235c6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +0 -1
  2. package/dist/lib/Client.js +3 -1
  3. package/dist/lib/Constants.d.ts +47 -6
  4. package/dist/lib/Constants.js +57 -4
  5. package/dist/lib/gateway/Shard.d.ts +4 -1
  6. package/dist/lib/gateway/Shard.js +27 -7
  7. package/dist/lib/gateway/ShardManager.js +2 -2
  8. package/dist/lib/gateway/compression/base.d.ts +1 -0
  9. package/dist/lib/gateway/compression/pako.d.ts +1 -0
  10. package/dist/lib/gateway/compression/zlib-sync.d.ts +1 -0
  11. package/dist/lib/gateway/compression/zstd.d.ts +2 -5
  12. package/dist/lib/gateway/compression/zstd.js +5 -18
  13. package/dist/lib/gateway/events.d.ts +5 -0
  14. package/dist/lib/gateway/events.js +47 -4
  15. package/dist/lib/index.d.ts +1 -0
  16. package/dist/lib/index.js +4 -2
  17. package/dist/lib/rest/RequestHandler.js +4 -2
  18. package/dist/lib/routes/Applications.d.ts +20 -1
  19. package/dist/lib/routes/Applications.js +66 -4
  20. package/dist/lib/routes/Channels.d.ts +9 -1
  21. package/dist/lib/routes/Channels.js +17 -3
  22. package/dist/lib/routes/Guilds.d.ts +43 -1
  23. package/dist/lib/routes/Guilds.js +91 -2
  24. package/dist/lib/routes/Interactions.d.ts +5 -3
  25. package/dist/lib/routes/Interactions.js +26 -13
  26. package/dist/lib/routes/Miscellaneous.d.ts +6 -0
  27. package/dist/lib/routes/Miscellaneous.js +12 -1
  28. package/dist/lib/routes/Webhooks.js +11 -2
  29. package/dist/lib/structures/Application.d.ts +7 -1
  30. package/dist/lib/structures/Application.js +10 -1
  31. package/dist/lib/structures/ApplicationCommand.d.ts +3 -1
  32. package/dist/lib/structures/ApplicationCommand.js +5 -1
  33. package/dist/lib/structures/Attachment.d.ts +8 -0
  34. package/dist/lib/structures/Attachment.js +11 -1
  35. package/dist/lib/structures/AutocompleteInteraction.d.ts +2 -2
  36. package/dist/lib/structures/AutocompleteInteraction.js +2 -2
  37. package/dist/lib/structures/ClientApplication.d.ts +6 -1
  38. package/dist/lib/structures/ClientApplication.js +8 -1
  39. package/dist/lib/structures/CommandInteraction.d.ts +14 -11
  40. package/dist/lib/structures/CommandInteraction.js +26 -23
  41. package/dist/lib/structures/ComponentInteraction.d.ts +14 -13
  42. package/dist/lib/structures/ComponentInteraction.js +24 -22
  43. package/dist/lib/structures/Entitlement.d.ts +2 -2
  44. package/dist/lib/structures/Entitlement.js +5 -5
  45. package/dist/lib/structures/Guild.d.ts +32 -2
  46. package/dist/lib/structures/Guild.js +41 -1
  47. package/dist/lib/structures/Message.d.ts +2 -2
  48. package/dist/lib/structures/Message.js +25 -16
  49. package/dist/lib/structures/ModalSubmitInteraction.d.ts +13 -12
  50. package/dist/lib/structures/ModalSubmitInteraction.js +22 -18
  51. package/dist/lib/structures/PingInteraction.d.ts +2 -2
  52. package/dist/lib/structures/PingInteraction.js +2 -2
  53. package/dist/lib/structures/Soundboard.d.ts +42 -0
  54. package/dist/lib/structures/Soundboard.js +73 -0
  55. package/dist/lib/structures/Subscription.d.ts +25 -0
  56. package/dist/lib/structures/Subscription.js +38 -0
  57. package/dist/lib/types/applications.d.ts +89 -8
  58. package/dist/lib/types/channels.d.ts +71 -15
  59. package/dist/lib/types/client.d.ts +9 -3
  60. package/dist/lib/types/events.d.ts +15 -3
  61. package/dist/lib/types/gateway-raw.d.ts +37 -2
  62. package/dist/lib/types/gateway.d.ts +11 -3
  63. package/dist/lib/types/guilds.d.ts +28 -0
  64. package/dist/lib/types/interactions.d.ts +61 -3
  65. package/dist/lib/types/json.d.ts +20 -3
  66. package/dist/lib/types/webhooks.d.ts +5 -2
  67. package/dist/lib/util/Errors.d.ts +6 -1
  68. package/dist/lib/util/Errors.js +12 -3
  69. package/dist/lib/util/Routes.d.ts +7 -0
  70. package/dist/lib/util/Routes.js +18 -5
  71. package/dist/lib/util/Util.d.ts +4 -0
  72. package/dist/lib/util/Util.js +41 -4
  73. package/dist/lib/util/interactions/MessageInteractionResponse.d.ts +5 -2
  74. package/dist/lib/util/interactions/MessageInteractionResponse.js +9 -7
  75. package/dist/package.json +21 -21
  76. package/esm.mjs +2 -0
  77. package/package.json +20 -21
  78. package/patches/typedoc-plugin-merge-modules@5.1.0.patch +1 -1
@@ -1,6 +1,6 @@
1
1
  /** @module Types/Channels */
2
2
  import type { NullablePartialEmoji, PartialEmoji, RawInviteGuild, RawMember } from "./guilds";
3
- import type { RawApplication, RawPartialApplication } from "./applications";
3
+ import type { RESTApplication, RawApplication, RawPartialApplication } from "./applications";
4
4
  import type { RawUser, RawUserWithMember } from "./users";
5
5
  import type { File } from "./request-handler";
6
6
  import type { RawScheduledEvent } from "./scheduled-events";
@@ -307,7 +307,7 @@ export interface CreateMessageOptions {
307
307
  enforceNonce?: boolean;
308
308
  /** The files to send. */
309
309
  files?: Array<File>;
310
- /** The [flags](https://discord.com/developers/docs/resources/channel#message-object-message-flags) to send with the message. */
310
+ /** The {@link Constants.MessageFlags | Message Flags} to send with the message. */
311
311
  flags?: number;
312
312
  /** Reply to a message. */
313
313
  messageReference?: MessageReference;
@@ -355,6 +355,8 @@ export interface EmbedBase extends EmbedOptionsBase {
355
355
  export interface RawEmbed extends EmbedBase {
356
356
  author?: RawEmbedAuthor;
357
357
  fields?: Array<EmbedField>;
358
+ /** The {@link Constants.EmbedFlags | Embed Flags} for the embed. */
359
+ flags?: number;
358
360
  footer?: RawEmbedFooter;
359
361
  image?: RawEmbedImage;
360
362
  provider?: EmbedProvider;
@@ -365,6 +367,8 @@ export interface RawEmbed extends EmbedBase {
365
367
  export interface Embed extends EmbedBase {
366
368
  author?: EmbedAuthor;
367
369
  fields?: Array<EmbedField>;
370
+ /** The {@link Constants.EmbedFlags | Embed Flags} for the embed. */
371
+ flags?: number;
368
372
  footer?: EmbedFooter;
369
373
  image?: EmbedImage;
370
374
  provider?: EmbedProvider;
@@ -384,36 +388,41 @@ export interface RawEmbedAuthor extends EmbedAuthorBase {
384
388
  proxy_icon_url?: string;
385
389
  }
386
390
 
387
- export interface EmbedAuthorOptions extends EmbedAuthorBase {
391
+ export interface EmbedAuthor extends EmbedAuthorOptions {
388
392
  iconURL?: string;
393
+ proxyIconURL?: string;
389
394
  }
390
395
 
391
396
  export interface RawEmbedAuthorOptions extends EmbedAuthorBase {
392
397
  icon_url?: string;
393
398
  }
394
399
 
395
- export interface EmbedAuthor extends EmbedAuthorOptions {
400
+ export interface EmbedAuthorOptions extends EmbedAuthorBase {
396
401
  iconURL?: string;
397
- proxyIconURL?: string;
398
402
  }
403
+
399
404
  export interface EmbedFooterBase {
400
405
  text: string;
401
406
  }
402
407
 
403
- export interface EmbedFooterOptions extends EmbedFooterBase {
404
- iconURL?: string;
405
- }
406
-
407
408
  export interface RawEmbedFooterOptions extends EmbedFooterBase {
408
409
  icon_url?: string;
409
410
  }
410
411
 
412
+ export interface EmbedFooterOptions extends EmbedFooterBase {
413
+ iconURL?: string;
414
+ }
415
+
411
416
  export interface RawEmbedFooter extends EmbedFooterBase {
417
+ /** The {@link Constants.EmbedMediaFlags | Embed Media Flags} for the media. */
418
+ flags?: number;
412
419
  icon_url?: string;
413
420
  proxy_icon_url?: string;
414
421
  }
415
422
 
416
423
  export interface EmbedFooter extends EmbedFooterOptions {
424
+ /** The {@link Constants.EmbedMediaFlags | Embed Media Flags} for the media. */
425
+ flags?: number;
417
426
  iconURL?: string;
418
427
  proxyIconURL?: string;
419
428
  }
@@ -424,17 +433,21 @@ export interface EmbedImageBase {
424
433
  }
425
434
 
426
435
  export interface RawEmbedImage extends EmbedImageBase, EmbedImageOptions {
436
+ /** The {@link Constants.EmbedMediaFlags | Embed Media Flags} for the media. */
437
+ flags?: number;
427
438
  proxy_url?: string;
428
439
  }
429
440
 
430
- export interface EmbedImageOptions {
431
- url: string;
432
- }
433
-
434
441
  export interface EmbedImage extends EmbedImageBase, EmbedImageOptions {
442
+ /** The {@link Constants.EmbedMediaFlags | Embed Media Flags} for the media. */
443
+ flags?: number;
435
444
  proxyURL?: string;
436
445
  }
437
446
 
447
+ export interface EmbedImageOptions {
448
+ url: string;
449
+ }
450
+
438
451
  export interface EmbedField {
439
452
  inline?: boolean;
440
453
  name: string;
@@ -653,6 +666,9 @@ export interface TextInput {
653
666
  }
654
667
 
655
668
  export interface RawAttachment {
669
+ application?: RESTApplication;
670
+ clip_created_at?: string;
671
+ clip_participants?: Array<RawUser>;
656
672
  content_type?: string;
657
673
  description?: string;
658
674
  duration_secs?: number;
@@ -722,6 +738,17 @@ export interface RawMessage {
722
738
  webhook_id?: string;
723
739
  }
724
740
 
741
+ export interface RawSoundboard {
742
+ available: boolean;
743
+ emoji_id: string | null;
744
+ emoji_name: string | null;
745
+ guild_id?: string;
746
+ name: string;
747
+ sound_id: string;
748
+ user?: RawUser;
749
+ volume: number;
750
+ }
751
+
725
752
  export interface RawCall {
726
753
  ended_timestamp?: string | null;
727
754
  participants: Array<string>;
@@ -798,6 +825,8 @@ export interface RawMessageInteractionMetadata {
798
825
  interacted_message_id?: string;
799
826
  name?: string;
800
827
  original_response_message_id?: string;
828
+ target_message_id?: string;
829
+ target_user?: RawUser;
801
830
  triggering_interaction_metadata?: Omit<RawMessageInteractionMetadata, "triggering_interaction_metadata">;
802
831
  type: InteractionTypes;
803
832
  user: RawUser;
@@ -807,18 +836,38 @@ export interface MessageInteractionMetadata {
807
836
  /** Details about the authorizing user or server for the installation(s) relevant to the interaction. See [Discord's docs](https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-authorizing-integration-owners-object) for more information. */
808
837
  authorizingIntegrationOwners: AuthorizingIntegrationOwners;
809
838
  id: string;
810
- /** The ID of the message that contained interactive component, present only on messages created from component interactions */
839
+ /** The ID of the message that contained interactive component, present only on messages created from component interactions. */
811
840
  interactedMessageID?: string;
812
- /** Name of the command, including subcommands and subcommand groups, present only on application command interactions. */
841
+ /** Name of the command, including subcommands and subcommand groups, present only on messages created from application command interactions. */
813
842
  name?: string;
814
843
  /** The ID of the original response message, present only on follow-up messages. */
815
844
  originalResponseMessageID?: string;
845
+ /** The message the command was run on, present only on messages created from application command interactions. */
846
+ targetMessageID?: string;
847
+ /** The user the command was run on, present only on messages created from application command interactions. */
848
+ targetUser?: User;
816
849
  /** Metadata for the interaction that was used to open the modal, present only on modal submit interactions. */
817
850
  triggeringInteractionMetadata?: Omit<MessageInteractionMetadata, "triggeringInteractionMetadata" | "name">;
818
851
  type: InteractionTypes;
852
+ /** The user that triggered the reaction. */
819
853
  user: User;
820
854
  }
821
855
 
856
+ export interface ApplicationCommandMessageInteractionMetadata extends Omit<MessageInteractionMetadata, "triggeringInteractionMetadata" | "name" | "interactedMessageID" | "type">, Required<Pick<MessageInteractionMetadata, "name">> {
857
+ type: InteractionTypes.APPLICATION_COMMAND;
858
+ }
859
+
860
+ export interface ComponentMessageInteractionMetadata extends Omit<MessageInteractionMetadata, "triggeringInteractionMetadata" | "name" | "interactedMessageID" | "targetMessageID" | "targetUser" | "type">, Required<Pick<MessageInteractionMetadata, "interactedMessageID">> {
861
+ type: InteractionTypes.MESSAGE_COMPONENT;
862
+ }
863
+
864
+ export interface ModalSubmitMessageInteractionMetadata extends Omit<MessageInteractionMetadata, "triggeringInteractionMetadata" | "name" | "interactedMessageID" | "targetMessageID" | "targetUser" | "type"> {
865
+ triggeringInteractionMetadata: ApplicationCommandMessageInteractionMetadata | ComponentMessageInteractionMetadata;
866
+ type: InteractionTypes.MODAL_SUBMIT;
867
+ }
868
+
869
+ export type AnyMessageInteractionMetadata = ApplicationCommandMessageInteractionMetadata | ComponentMessageInteractionMetadata | ModalSubmitMessageInteractionMetadata;
870
+
822
871
 
823
872
  export interface StickerItem {
824
873
  format_type: StickerFormatTypes;
@@ -920,6 +969,13 @@ export interface GetReactionsOptions {
920
969
  type?: ReactionType;
921
970
  }
922
971
 
972
+ export interface SendSoundboardSoundOptions {
973
+ /** The ID of the soundboard sound to send. */
974
+ soundID: string;
975
+ /** The ID of the guild the soundboard sound is from. */
976
+ sourceGuildID?: string;
977
+ }
978
+
923
979
  export interface EditMessageOptions extends Nullable<Pick<CreateMessageOptions, "content" | "embeds" | "allowedMentions" | "components" | "attachments" | "files" | "flags">> {}
924
980
 
925
981
  export interface EditPermissionOptions {
@@ -2,7 +2,7 @@
2
2
  import type { AllowedMentions } from "./channels";
3
3
  import type { GatewayOptions } from "./gateway";
4
4
  import type { ImageFormat } from "../Constants";
5
- import type { Agent } from "undici-types";
5
+ import type { Dispatcher } from "undici-types";
6
6
 
7
7
  export interface ClientOptions {
8
8
  /**
@@ -51,7 +51,7 @@ export interface RESTOptions {
51
51
  * The agent to use for requests.
52
52
  * @defaultValue null
53
53
  */
54
- agent?: Agent | null;
54
+ agent?: Dispatcher | null;
55
55
  /**
56
56
  * The base URL to use for requests - must be a fully qualified url.
57
57
  * @defaultValue https://discordapp.com/api/v\{REST_VERSION\}
@@ -78,7 +78,7 @@ export interface RESTOptions {
78
78
  */
79
79
  latencyThreshold?: number;
80
80
  /**
81
- * In milliseconds, the maximum ratelimit delay (in seconds) the lib will internally wait for to retry the request. If a ratelimit resets after this window, an error will be thrown instead.
81
+ * In milliseconds, the maximum ratelimit delay (in milliseconds) the lib will internally wait for to retry the request. If a ratelimit resets after this window, an error will be thrown instead.
82
82
  * @note This currently defaults to Infinity for backwards compatibility, but this will be changed in 1.12.0.
83
83
  * @defaultValue Infinity
84
84
  */
@@ -201,6 +201,12 @@ export interface CollectionLimitsOptions {
201
201
  * @defaultValue Infinity
202
202
  */
203
203
  scheduledEvents?: number | Record<string, number>;
204
+ /**
205
+ * The maximum number of soundboard sounds to cache.
206
+ * @dictionaryKey guild id
207
+ * @defaultValue Infinity
208
+ */
209
+ soundboardSounds?: number | Record<string, number>;
204
210
  /**
205
211
  * The maximum number of stage instances to cache.
206
212
  * @dictionaryKey guild id
@@ -35,7 +35,8 @@ import type {
35
35
  JSONUser,
36
36
  JSONVoiceState,
37
37
  JSONEntitlement,
38
- JSONTestEntitlement
38
+ JSONTestEntitlement,
39
+ JSONSoundboard
39
40
  } from "./json";
40
41
  import type { GuildApplicationCommandPermissions } from "./applications";
41
42
  import type {
@@ -68,6 +69,7 @@ import type GroupChannel from "../structures/GroupChannel";
68
69
  import type Entitlement from "../structures/Entitlement";
69
70
  import type TestEntitlement from "../structures/TestEntitlement";
70
71
  import type { JSONChannelTypeMap } from "../Constants";
72
+ import type Soundboard from "../structures/Soundboard";
71
73
 
72
74
 
73
75
  export interface ClientEvents {
@@ -115,7 +117,7 @@ export interface ClientEvents {
115
117
  guildCreate: [guild: Guild];
116
118
  /** @event Emitted when the client leaves a guild. Requires the `GUILDS` intent. */
117
119
  guildDelete: [guild: Guild | Uncached];
118
- /** @event Emitted when a guild's emojis are updated. Requires the `GUILD_EMOJIS_AND_STICKERS` intent. */
120
+ /** @event Emitted when a guild's emojis are updated. Requires the `GUILD_EXPRESSIONS` intent. */
119
121
  guildEmojisUpdate: [guild: Guild | Uncached, emojis: Array<GuildEmoji>, oldEmojis: Array<GuildEmoji> | null];
120
122
  /** @event Emitted when a guild's integrations are updated. Requires the `GUILD_INTEGRATIONS` intent. */
121
123
  guildIntegrationsUpdate: [guild: Guild | Uncached];
@@ -143,7 +145,15 @@ export interface ClientEvents {
143
145
  guildScheduledEventUserAdd: [event: GuildScheduledEvent | Uncached, user: User | Uncached];
144
146
  /** @event Emitted when a user unsubscribes from a scheduled event. Requires the `GUILD_SCHEDULED_EVENTS` intent. */
145
147
  guildScheduledEventUserRemove: [event: GuildScheduledEvent | Uncached, user: User | Uncached];
146
- /** @event Emitted when a guild's stickers are updated. Requires the `GUILD_EMOJIS_AND_STICKERS` intent. */
148
+ /** @event Emitted when a guild's soundboard sound is created. Requires the `GUILD_EXPRESSIONS` intent. */
149
+ guildSoundboardSoundCreate: [soundboardSound: Soundboard];
150
+ /** @event Emitted when a guild's soundboard sound is deleted. Requires the `GUILD_EXPRESSIONS` intent. */
151
+ guildSoundboardSoundDelete: [soundboardSound: Soundboard | Uncached];
152
+ /** @event Emitted when a guild's soundboard sound is updated. Requires the `GUILD_EXPRESSIONS` intent. */
153
+ guildSoundboardSoundUpdate: [soundboardSound: Soundboard, oldSoundboardSound: JSONSoundboard | null];
154
+ /** @event Emitted when multiple guild's soundboard sounds are updated. Requires the `GUILD_EXPRESSIONS` intent. */
155
+ guildSoundboardSoundsUpdate: [soundboardSounds: Array<Soundboard>, oldSoundboardSounds: Array<JSONSoundboard | null>, guildID: string];
156
+ /** @event Emitted when a guild's stickers are updated. Requires the `GUILD_EXPRESSIONS` intent. */
147
157
  guildStickersUpdate: [guild: Guild | Uncached, stickers: Array<Sticker>, oldStickers: Array<Sticker> | null];
148
158
  /** @event Emitted when a guild becomes unavailable. Requires the `GUILDS` intent. */
149
159
  guildUnavailable: [guild: UnavailableGuild];
@@ -199,6 +209,8 @@ export interface ClientEvents {
199
209
  shardReady: [id: number];
200
210
  /** @event Emitted when a shard resumes a connection. */
201
211
  shardResume: [id: number];
212
+ /** @event Emitted when a shard receives the SOUNDBOARD_SOUNDS packet. */
213
+ soundboardSounds: [guildID: string, soundboardSounds: Array<Soundboard>];
202
214
  /** @event Emitted when a stage instance is created. */
203
215
  stageInstanceCreate: [instance: StageInstance];
204
216
  /** @event Emitted when a stage instance is deleted. */
@@ -30,6 +30,7 @@ import type {
30
30
  RawGroupChannel,
31
31
  RawGuildChannel,
32
32
  RawMessage,
33
+ RawSoundboard,
33
34
  RawThreadChannel,
34
35
  RawThreadMember
35
36
  } from "./channels";
@@ -345,6 +346,32 @@ export interface GuildScheduledEventUserRemovePacket extends BaseDispatchPacket
345
346
  t: "GUILD_SCHEDULED_EVENT_USER_REMOVE";
346
347
  }
347
348
 
349
+ export interface GuildSoundboardSoundCreatePacket extends BaseDispatchPacket {
350
+ d: RawSoundboard & { guild_id: string; };
351
+ t: "GUILD_SOUNDBOARD_SOUND_CREATE";
352
+ }
353
+
354
+ export interface GuildSoundboardSoundDeletePacket extends BaseDispatchPacket {
355
+ d: {
356
+ guild_id: string;
357
+ sound_id: string;
358
+ };
359
+ t: "GUILD_SOUNDBOARD_SOUND_DELETE";
360
+ }
361
+
362
+ export interface GuildSoundboardSoundUpdatePacket extends BaseDispatchPacket {
363
+ d: RawSoundboard & { guild_id: string; };
364
+ t: "GUILD_SOUNDBOARD_SOUND_UPDATE";
365
+ }
366
+
367
+ export interface GuildSoundboardSoundsUpdatePacket extends BaseDispatchPacket {
368
+ d: {
369
+ guild_id: string;
370
+ soundboard_sounds: Array<RawSoundboard & { guild_id: string; }>;
371
+ };
372
+ t: "GUILD_SOUNDBOARD_SOUNDS_UPDATE";
373
+ }
374
+
348
375
  export interface IntegrationCreatePacket extends BaseDispatchPacket {
349
376
  d: RawIntegration & { guild_id: string; };
350
377
  t: "INTEGRATION_CREATE";
@@ -515,6 +542,14 @@ export interface InteractionCreatePacket extends BaseDispatchPacket {
515
542
  t: "INTERACTION_CREATE";
516
543
  }
517
544
 
545
+ export interface SoundboardSoundsPacket extends BaseDispatchPacket {
546
+ d: {
547
+ guild_id: string;
548
+ soundboard_sounds: Array<RawSoundboard>;
549
+ };
550
+ t: "SOUNDBOARD_SOUNDS";
551
+ }
552
+
518
553
  export interface StageInstanceCreatePacket extends BaseDispatchPacket {
519
554
  d: RawStageInstance;
520
555
  t: "STAGE_INSTANCE_CREATE";
@@ -578,10 +613,10 @@ ThreadCreatePacket | ThreadDeletePacket | ThreadUpdatePacket | ThreadListSyncPac
578
613
  GuildBanAddPacket | GuildBanRemovePacket | GuildEmojisUpdatePacket | GuildStickersUpdatePacket | GuildIntegrationsUpdatePacket |
579
614
  GuildMemberAddPacket | GuildMemberRemovePacket | GuildMemberUpdatePacket | GuildMembersChunkPacket |
580
615
  GuildRoleCreatePacket | GuildRoleDeletePacket | GuildRoleUpdatePacket |
581
- GuildScheduledEventCreatePacket | GuildScheduledEventDeletePacket | GuildScheduledEventUpdatePacket | GuildScheduledEventUserAddPacket | GuildScheduledEventUserRemovePacket |
616
+ GuildScheduledEventCreatePacket | GuildScheduledEventDeletePacket | GuildScheduledEventUpdatePacket | GuildScheduledEventUserAddPacket | GuildScheduledEventUserRemovePacket | GuildSoundboardSoundCreatePacket | GuildSoundboardSoundDeletePacket | GuildSoundboardSoundUpdatePacket | GuildSoundboardSoundsUpdatePacket |
582
617
  IntegrationCreatePacket | IntegrationDeletePacket | IntegrationUpdatePacket |
583
618
  InviteCreatePacket | InviteDeletePacket |
584
619
  MessageCreatePacket | MessageDeletePacket | MessageDeleteBulkPacket | MessageUpdatePacket | MessageReactionAddPacket | MessageReactionRemovePacket | MessageReactionRemoveAllPacket | MessageReactionRemoveEmojiPacket |
585
- TypingStartPacket | UserUpdatePacket | VoiceStateUpdatePacket | VoiceChannelEffectSendPacket | VoiceChannelStatusUpdatePacket | VoiceServerUpdatePacket | WebhooksUpdatePacket | InteractionCreatePacket | StageInstanceCreatePacket | StageInstanceDeletePacket | StageInstanceUpdatePacket |
620
+ TypingStartPacket | UserUpdatePacket | VoiceStateUpdatePacket | VoiceChannelEffectSendPacket | VoiceChannelStatusUpdatePacket | VoiceServerUpdatePacket | WebhooksUpdatePacket | InteractionCreatePacket | SoundboardSoundsPacket | StageInstanceCreatePacket | StageInstanceDeletePacket | StageInstanceUpdatePacket |
586
621
  EntitlementCreatePacket | EntitlementUpdatePacket | EntitlementDeletePacket |
587
622
  MessagePollVoteAdd | MessagePollVoteRemove;
@@ -29,7 +29,7 @@ interface GatewayOptions {
29
29
  * @note `true` is the same as `zlib-stream`. This behavior is deprecated.
30
30
  * @defaultValue false
31
31
  */
32
- compress?: boolean | "zlib-stream" | "zstd-stream";
32
+ compress?: boolean | "zlib-stream"; // | "zstd-stream";
33
33
  /**
34
34
  * The concurrency for shard connections. If you don't know what this is, don't mess with it. Only bots in >150,000 servers can use any non-default value.
35
35
  * @defaultValue 1
@@ -166,7 +166,7 @@ export interface OverrideOptions {
166
166
  }
167
167
 
168
168
  export interface ShardManagerInstanceOptions extends Required<Omit<GatewayOptions, "concurrency" | "connectionProperties" | "intents" | "maxShards" | "presence" | "dispatcher" | "compress">> {
169
- compress: false | "zlib-stream" | "zstd-stream";
169
+ compress: false | "zlib-stream"; // | "zstd-stream";
170
170
  concurrency: number;
171
171
  connectionProperties: Required<GatewayOptions["connectionProperties"]>;
172
172
  dispatcher: DispatcherInstanceOptions;
@@ -236,6 +236,14 @@ export interface RequestGuildMembersOptions {
236
236
  userIDs?: Array<string>;
237
237
  }
238
238
 
239
+ export interface RequestSoundboardSoundsOptions {
240
+ /**
241
+ * The maximum amount of time in milliseconds to wait.
242
+ * @defaultValue `client.rest.options.requestTimeout`
243
+ */
244
+ timeout?: number;
245
+ }
246
+
239
247
  export type MutualStatuses = "online" | "dnd" | "idle";
240
248
  export type SendStatuses = MutualStatuses | "invisible";
241
249
  export type ReceiveStatuses = MutualStatuses | "offline";
@@ -280,7 +288,7 @@ export interface BotCustomActivity {
280
288
  }
281
289
  export interface BotOtherActivity {
282
290
  name: string;
283
- type: ActivityTypes.GAME | ActivityTypes.LISTENING | ActivityTypes.WATCHING;
291
+ type: ActivityTypes.GAME | ActivityTypes.LISTENING | ActivityTypes.WATCHING | ActivityTypes.COMPETING;
284
292
  }
285
293
 
286
294
  export type BotActivity = BotStreamingActivity | BotCustomActivity | BotOtherActivity;
@@ -683,6 +683,34 @@ export interface EditMFALevelOptions {
683
683
  reason?: string;
684
684
  }
685
685
 
686
+ export interface CreateSoundboardSoundOptions {
687
+ /** The ID of the emoji of the soundboard sound. */
688
+ emojiID?: string;
689
+ /** The name of the emoji of the soundboard sound. */
690
+ emojiName?: string;
691
+ /** The name of the soundboard sound. */
692
+ name: string;
693
+ /** The reason for creating the soundboard sound. */
694
+ reason?: string;
695
+ /** The mp3 or ogg sound data. */
696
+ sound: Buffer | string;
697
+ /** The volume of the soundboard sound. */
698
+ volume?: number;
699
+ }
700
+
701
+ export interface EditSoundboardSoundOptions {
702
+ /** The ID of the emoji of the soundboard sound. */
703
+ emojiID?: string;
704
+ /** The name of the emoji of the soundboard sound. */
705
+ emojiName?: string;
706
+ /** The name of the soundboard sound. */
707
+ name?: string;
708
+ /** The reason for editing the soundboard sound. */
709
+ reason?: string;
710
+ /** The volume of the soundboard sound. */
711
+ volume?: number;
712
+ }
713
+
686
714
  export interface CreateStickerOptions {
687
715
  /** The description of the sticker. */
688
716
  description: string;
@@ -46,10 +46,10 @@ import type Permission from "../structures/Permission";
46
46
  import type ModalSubmitInteractionComponentsWrapper from "../util/interactions/ModalSubmitInteractionComponentsWrapper";
47
47
 
48
48
  export interface InteractionContent extends Pick<ExecuteWebhookOptions, "tts" | "content" | "embeds" | "allowedMentions" | "flags" | "components" | "attachments" | "files" | "poll"> {}
49
- export interface EditInteractionContent extends Pick<EditWebhookMessageOptions, "content" | "embeds" | "allowedMentions" | "components" | "attachments" | "files"> {}
49
+ export interface EditInteractionContent extends Pick<EditWebhookMessageOptions, "content" | "embeds" | "allowedMentions" | "components" | "attachments" | "files" | "poll"> {}
50
50
  export interface InitialInteractionContent extends Omit<InteractionContent, "attachments" | "files"> {}
51
51
 
52
- export type InteractionResponse = PingInteractionResponse | MessageInteractionResponse | DeferredInteractionResponse | AutocompleteInteractionResponse | ModalSubmitInteractionResponse | PremiumRequiredResponse;
52
+ export type InteractionResponse = PingInteractionResponse | MessageInteractionResponse | DeferredInteractionResponse | AutocompleteInteractionResponse | ModalSubmitInteractionResponse | PremiumRequiredResponse | LaunchActivityResponse;
53
53
  export interface PingInteractionResponse {
54
54
  type: InteractionResponseTypes.PONG;
55
55
  }
@@ -79,10 +79,13 @@ export interface ModalSubmitInteractionResponse {
79
79
  }
80
80
 
81
81
  export interface PremiumRequiredResponse {
82
- data: Record<string, never>;
83
82
  type: InteractionResponseTypes.PREMIUM_REQUIRED;
84
83
  }
85
84
 
85
+ export interface LaunchActivityResponse {
86
+ type: InteractionResponseTypes.LAUNCH_ACTIVITY;
87
+ }
88
+
86
89
 
87
90
  export interface ModalData {
88
91
  /** The components of the modal. Each component needs its own row. `snake_case` keys should be converted to `camelCase`, or passed through {@link Util.rawModalComponents | Util#rawModalComponents}. */
@@ -375,3 +378,58 @@ export type ModalSubmitComponents = ModalSubmitTextInputComponent;
375
378
  export interface ModalSubmitTextInputComponent extends ModalSubmitComponentsStringValue<ComponentTypes.TEXT_INPUT> {}
376
379
 
377
380
  export type ApplicationCommandTypesWithTarget = ApplicationCommandTypes.USER | ApplicationCommandTypes.MESSAGE;
381
+
382
+ export interface RawInteractionCallbackResponse {
383
+ interaction: RawInteractionCallback;
384
+ resource?: RawInteractionCallbackResource;
385
+ }
386
+
387
+ export interface RawInteractionCallback {
388
+ activity_instance_id?: string;
389
+ id: string;
390
+ response_message_ephemeral?: boolean;
391
+ response_message_id?: string;
392
+ response_message_loading?: boolean;
393
+ type: InteractionTypes;
394
+ }
395
+
396
+ export interface RawInteractionCallbackResource {
397
+ activity_instance?: Array<InteractionCallbackActivityInstance>;
398
+ message?: RawMessage;
399
+ type: InteractionResponseTypes;
400
+ }
401
+
402
+ export interface InteractionCallbackActivityInstance {
403
+ /** Instance ID of the Activity if one was launched or joined. */
404
+ id: string;
405
+ }
406
+
407
+ export interface InteractionCallbackResponse<CH extends AnyInteractionChannel | Uncached = AnyInteractionChannel | Uncached> {
408
+ /** The interaction object associated with the interaction response. */
409
+ interaction: InteractionCallback;
410
+ /** The resource that was created by the interaction response. */
411
+ resource?: InteractionCallbackResource<CH>;
412
+ }
413
+
414
+ export interface InteractionCallback {
415
+ /** Instance ID of the Activity if one was launched or joined. */
416
+ activityInstanceID?: string;
417
+ /** ID of the interaction. */
418
+ id: string;
419
+ /** Whether or not the response message was ephemeral. */
420
+ responseMessageEphemeral?: boolean;
421
+ /** ID of the message that was created by the interaction. */
422
+ responseMessageID?: string;
423
+ /** Whether or not the message is in a loading state. */
424
+ responseMessageLoading?: boolean;
425
+ /** Interaction type. */
426
+ type: InteractionTypes;
427
+ }
428
+
429
+ export interface InteractionCallbackResource<CH extends AnyInteractionChannel | Uncached = AnyInteractionChannel | Uncached> {
430
+ /** Represents the Activity launched by this interaction. Only present if type is `LAUNCH_ACTIVITY`. */
431
+ activityInstance?: Array<InteractionCallbackActivityInstance>;
432
+ /** Message created by the interaction. Only present if type is either `CHANNEL_MESSAGE_WITH_SOURCE` or `UPDATE_MESSAGE`. */
433
+ message?: Message<CH>;
434
+ type: InteractionResponseTypes;
435
+ }
@@ -84,7 +84,8 @@ import type {
84
84
  ApplicationMonetizationState,
85
85
  RPCApplicationState,
86
86
  StoreApplicationState,
87
- ApplicationVerificationState
87
+ ApplicationVerificationState,
88
+ EntryPointCommandHandlerTypes
88
89
  } from "../Constants";
89
90
 
90
91
  export interface JSONAnnouncementChannel extends JSONThreadableChannel {
@@ -143,6 +144,7 @@ export interface JSONApplicationCommand extends JSONBase {
143
144
  descriptionLocalizations?: LocaleMap | null;
144
145
  dmPermission?: boolean;
145
146
  guildID?: string;
147
+ handler?: EntryPointCommandHandlerTypes;
146
148
  integrationTypes: Array<ApplicationIntegrationTypes>;
147
149
  name: string;
148
150
  nameLocalizations?: LocaleMap | null;
@@ -256,8 +258,8 @@ export interface JSONComponentInteraction extends JSONInteraction {
256
258
  user: JSONUser;
257
259
  }
258
260
  export interface JSONEntitlement extends JSONBaseEntitlement {
259
- endsAt: number;
260
- startsAt: number;
261
+ endsAt: number | null;
262
+ startsAt: number | null;
261
263
  subscriptionID: string;
262
264
  }
263
265
  export interface JSONDiscordHTTPError {
@@ -468,6 +470,7 @@ export interface JSONMessage extends JSONBase {
468
470
  embeds: Array<Embed>;
469
471
  flags?: number;
470
472
  guildID?: string;
473
+ /** @deprecated Use {@link JSON/JSONMessage#interactionMetadata | JSONMessage#interactionMetadata } instead. */
471
474
  interaction?: {
472
475
  id: string;
473
476
  member?: JSONMember;
@@ -481,11 +484,15 @@ export interface JSONMessage extends JSONBase {
481
484
  interactedMessageID?: string;
482
485
  name?: string;
483
486
  originalResponseMessageID?: string;
487
+ targetMessageID?: string;
488
+ targetUser?: JSONUser;
484
489
  triggeringInteractionMetadata?: {
485
490
  authorizingIntegrationOwners: AuthorizingIntegrationOwners;
486
491
  id: string;
487
492
  interactedMessageID?: string;
488
493
  originalResponseMessageID?: string;
494
+ targetMessageID?: string;
495
+ targetUser?: JSONUser;
489
496
  type: InteractionTypes;
490
497
  user: JSONUser;
491
498
  };
@@ -651,6 +658,16 @@ export interface JSONScheduledEvent extends JSONBase {
651
658
  status: GuildScheduledEventStatuses;
652
659
  userCount?: number;
653
660
  }
661
+ export interface JSONSoundboard extends JSONBase {
662
+ available: boolean;
663
+ emojiID: string | null;
664
+ emojiName: string | null;
665
+ guildID?: string;
666
+ name: string;
667
+ soundID: string;
668
+ user?: JSONUser;
669
+ volume: number;
670
+ }
654
671
  export interface JSONStageChannel extends JSONTextableVoiceChannel {
655
672
  type: ChannelTypes.GUILD_STAGE_VOICE;
656
673
  }
@@ -1,5 +1,5 @@
1
1
  /** @module Types/Webhooks */
2
- import type { CreateMessageOptions, RawChannel } from "./channels";
2
+ import type { CreateMessageOptions, MessagePollOptions, RawChannel } from "./channels";
3
3
  import type { RawGuild } from "./guilds";
4
4
  import type { RawUser } from "./users";
5
5
  import type { Nullable } from "./misc";
@@ -66,7 +66,10 @@ export interface GetWebhookMessageOptions {
66
66
  threadID?: string;
67
67
  }
68
68
 
69
- export interface EditWebhookMessageOptions extends Nullable<Pick<ExecuteWebhookOptions, "content" | "embeds" | "allowedMentions" | "components" | "attachments" | "threadID" | "files">> {}
69
+ export interface EditWebhookMessageOptions extends Nullable<Pick<ExecuteWebhookOptions, "content" | "embeds" | "allowedMentions" | "components" | "attachments" | "threadID" | "files">> {
70
+ /** Polls can only be added when editing a deferred interaction response. */
71
+ poll?: MessagePollOptions;
72
+ }
70
73
 
71
74
  export interface DeleteWebhookMessageOptions {
72
75
  /** The id of the thread the message is in. */
@@ -28,6 +28,11 @@ export declare class GatewayError extends Error {
28
28
  constructor(message: string, code: number);
29
29
  }
30
30
  export declare class RateLimitedError extends Error {
31
+ delay: number;
31
32
  name: string;
32
- constructor(message: string);
33
+ constructor(message: string, delay: number);
34
+ }
35
+ export declare class NotImplementedError extends Error {
36
+ name: string;
37
+ constructor(message?: string);
33
38
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  /** @module Errors */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.RateLimitedError = exports.GatewayError = exports.DependencyError = exports.WrapperError = exports.UncachedError = exports.UncaughtError = void 0;
4
+ exports.NotImplementedError = exports.RateLimitedError = exports.GatewayError = exports.DependencyError = exports.WrapperError = exports.UncachedError = exports.UncaughtError = void 0;
5
5
  /** An error that is thrown when we encounter an error, and no `error` listeners are present. */
6
6
  class UncaughtError extends Error {
7
7
  name = "UncaughtError";
@@ -54,10 +54,19 @@ class GatewayError extends Error {
54
54
  }
55
55
  exports.GatewayError = GatewayError;
56
56
  class RateLimitedError extends Error {
57
+ delay;
57
58
  name = "RateLimitedError";
58
- constructor(message) {
59
+ constructor(message, delay) {
59
60
  super(message);
61
+ this.delay = delay;
60
62
  }
61
63
  }
62
64
  exports.RateLimitedError = RateLimitedError;
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3V0aWwvRXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBcUI7OztBQU1yQixnR0FBZ0c7QUFDaEcsTUFBYSxhQUFjLFNBQVEsS0FBSztJQUMzQixJQUFJLEdBQUcsZUFBZSxDQUFDO0lBQ2hDLFlBQVksS0FBcUI7UUFDN0IsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNKO0FBTEQsc0NBS0M7QUFFRCxzRUFBc0U7QUFDdEUsTUFBYSxhQUFjLFNBQVEsS0FBSztJQUMzQixJQUFJLEdBQUcsZUFBZSxDQUFDO0lBQ2hDLDRGQUE0RjtJQUM1RixZQUFZLEdBQUcsSUFBaUc7UUFDNUcsSUFBSSxPQUFlLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BCLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztZQUMvQyxPQUFPLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLFFBQVEsK0JBQStCLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksUUFBUSx5Q0FBeUMsTUFBTSxVQUFVLENBQUM7UUFDeE4sQ0FBQztRQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixDQUFDO0NBQ0o7QUFkRCxzQ0FjQztBQUVELDZKQUE2SjtBQUM3SixNQUFhLFlBQWEsU0FBUSxLQUFLO0lBQzFCLElBQUksR0FBRyxjQUFjLENBQUM7SUFDL0IsWUFBWSxPQUFlO1FBQ3ZCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixDQUFDO0NBQ0o7QUFMRCxvQ0FLQztBQUVELGdFQUFnRTtBQUNoRSxNQUFhLGVBQWdCLFNBQVEsS0FBSztJQUM3QixJQUFJLEdBQUcsaUJBQWlCLENBQUM7SUFDbEMsWUFBWSxPQUFlO1FBQ3ZCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixDQUFDO0NBQ0o7QUFMRCwwQ0FLQztBQUdELHVCQUF1QjtBQUN2QixNQUFhLFlBQWEsU0FBUSxLQUFLO0lBQ25DLElBQUksQ0FBUztJQUNKLElBQUksR0FBRyxjQUFjLENBQUM7SUFDL0IsWUFBWSxPQUFlLEVBQUUsSUFBWTtRQUNyQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0NBQ0o7QUFQRCxvQ0FPQztBQUVELE1BQWEsZ0JBQWlCLFNBQVEsS0FBSztJQUM5QixJQUFJLEdBQUcsa0JBQWtCLENBQUM7SUFDbkMsWUFBWSxPQUFlO1FBQ3ZCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixDQUFDO0NBQ0o7QUFMRCw0Q0FLQyJ9
65
+ class NotImplementedError extends Error {
66
+ name = "NotImplementedError";
67
+ constructor(message = "Not implemented") {
68
+ super(message);
69
+ }
70
+ }
71
+ exports.NotImplementedError = NotImplementedError;
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3V0aWwvRXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBcUI7OztBQU1yQixnR0FBZ0c7QUFDaEcsTUFBYSxhQUFjLFNBQVEsS0FBSztJQUMzQixJQUFJLEdBQUcsZUFBZSxDQUFDO0lBQ2hDLFlBQVksS0FBcUI7UUFDN0IsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNKO0FBTEQsc0NBS0M7QUFFRCxzRUFBc0U7QUFDdEUsTUFBYSxhQUFjLFNBQVEsS0FBSztJQUMzQixJQUFJLEdBQUcsZUFBZSxDQUFDO0lBQ2hDLDRGQUE0RjtJQUM1RixZQUFZLEdBQUcsSUFBaUc7UUFDNUcsSUFBSSxPQUFlLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BCLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztZQUMvQyxPQUFPLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLFFBQVEsK0JBQStCLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksUUFBUSx5Q0FBeUMsTUFBTSxVQUFVLENBQUM7UUFDeE4sQ0FBQztRQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixDQUFDO0NBQ0o7QUFkRCxzQ0FjQztBQUVELDZKQUE2SjtBQUM3SixNQUFhLFlBQWEsU0FBUSxLQUFLO0lBQzFCLElBQUksR0FBRyxjQUFjLENBQUM7SUFDL0IsWUFBWSxPQUFlO1FBQ3ZCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixDQUFDO0NBQ0o7QUFMRCxvQ0FLQztBQUVELGdFQUFnRTtBQUNoRSxNQUFhLGVBQWdCLFNBQVEsS0FBSztJQUM3QixJQUFJLEdBQUcsaUJBQWlCLENBQUM7SUFDbEMsWUFBWSxPQUFlO1FBQ3ZCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixDQUFDO0NBQ0o7QUFMRCwwQ0FLQztBQUdELHVCQUF1QjtBQUN2QixNQUFhLFlBQWEsU0FBUSxLQUFLO0lBQ25DLElBQUksQ0FBUztJQUNKLElBQUksR0FBRyxjQUFjLENBQUM7SUFDL0IsWUFBWSxPQUFlLEVBQUUsSUFBWTtRQUNyQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0NBQ0o7QUFQRCxvQ0FPQztBQUVELE1BQWEsZ0JBQWlCLFNBQVEsS0FBSztJQUN2QyxLQUFLLENBQVM7SUFDTCxJQUFJLEdBQUcsa0JBQWtCLENBQUM7SUFDbkMsWUFBWSxPQUFlLEVBQUUsS0FBYTtRQUN0QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0NBQ0o7QUFQRCw0Q0FPQztBQUVELE1BQWEsbUJBQW9CLFNBQVEsS0FBSztJQUNqQyxJQUFJLEdBQUcscUJBQXFCLENBQUM7SUFDdEMsWUFBWSxPQUFPLEdBQUcsaUJBQWlCO1FBQ25DLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixDQUFDO0NBQ0o7QUFMRCxrREFLQyJ9