UNPKG

lilybird

Version:
149 lines 8.73 kB
import type { CacheManagerStructure } from "./cache-manager.js"; import type { CachingManager } from "../cache/manager.js"; import type { DispatchFunction } from "../ws/manager.js"; import type { Application } from "./application.js"; import type { Awaitable } from "./utils.js"; import type { CachingDelegationType, TransformerReturnType, CacheExecutionPolicy, DebugIdentifier } from "#enums"; import type { ApplicationCommandPermissionsUpdate, AutoModerationActionExecution, GuildScheduledEventUserRemove, GuildScheduledEventUserAdd, MessageReactionRemoveEmoji, GuildScheduledEventCreate, GuildScheduledEventDelete, GuildScheduledEventUpdate, AutoModerationRuleCreate, AutoModerationRuleDelete, AutoModerationRuleUpdate, GuildAuditLogEntryCreate, MessageReactionRemoveAll, UpdatePresenceStructure, GuildIntegrationsUpdate, MessageReactionRemove, MessagePollVoteRemove, GuildStickersUpdate, StageInstanceCreate, StageInstanceUpdate, ThreadMembersUpdate, MessageReactionAdd, MessagePollVoteAdd, ThreadMemberUpdate, MessageDeleteBulk, IntegrationCreate, IntegrationDelete, IntegrationUpdate, InteractionCreate, VoiceServerUpdate, ChannelPinsUpdate, GuildMemberRemove, GuildEmojisUpdate, GuildMemberUpdate, GuildMembersChunk, VoiceStateUpdate, GuildRoleCreate, GuildRoleUpdate, PresenceUpdate, ThreadListSync, GuildRoleDelete, GuildMemberAdd, GuildBanRemove, MessageCreate, MessageDelete, ChannelCreate, ChannelDelete, ChannelUpdate, MessageUpdate, WebhookUpdate, InviteCreate, InviteDelete, ThreadCreate, ThreadDelete, ThreadUpdate, GuildBanAdd, GuildCreate, GuildDelete, GuildUpdate, TypingStart, UserUpdate, Ready } from "./gateway-events.js"; export type Listeners<C, T extends Transformers<C>> = { [K in keyof T]?: T[K] extends { handler: unknown; } ? (T[K] & {})["handler"] extends ((...args: any) => infer R) ? R extends [unknown, ...Array<unknown>] ? ((...arg: R) => Awaitable<unknown>) : ((arg: R) => Awaitable<unknown>) : never : (T[K] & { handler: unknown; })["handler"] extends ((...args: infer U) => unknown) ? ((...args: U) => Awaitable<unknown>) : never; }; export type Transformer<C, T> = { return: TransformerReturnType; handler: (...args: [client: C, payload: T]) => unknown; }; export interface Transformers<C> { setup?: Transformer<C, Ready["d"]>; ready?: Transformer<C, Ready["d"]>; resumed?: Transformer<C, undefined>; applicationCommandPermissionsUpdate?: Transformer<C, ApplicationCommandPermissionsUpdate["d"]>; autoModerationRuleCreate?: Transformer<C, AutoModerationRuleCreate["d"]>; autoModerationRuleUpdate?: Transformer<C, AutoModerationRuleUpdate["d"]>; autoModerationRuleDelete?: Transformer<C, AutoModerationRuleDelete["d"]>; autoModerationActionExecution?: Transformer<C, AutoModerationActionExecution["d"]>; channelCreate?: Transformer<C, ChannelCreate["d"]>; channelUpdate?: Transformer<C, ChannelUpdate["d"]>; channelDelete?: Transformer<C, ChannelDelete["d"]>; channelPinsUpdate?: Transformer<C, ChannelPinsUpdate["d"]>; threadCreate?: Transformer<C, ThreadCreate["d"]>; threadUpdate?: Transformer<C, ThreadUpdate["d"]>; threadDelete?: Transformer<C, ThreadDelete["d"]>; threadListSync?: Transformer<C, ThreadListSync["d"]>; threadMemberUpdate?: Transformer<C, ThreadMemberUpdate["d"]>; threadMembersUpdate?: Transformer<C, ThreadMembersUpdate["d"]>; guildCreate?: Transformer<C, GuildCreate["d"]>; guildUpdate?: Transformer<C, GuildUpdate["d"]>; guildDelete?: Transformer<C, GuildDelete["d"]>; guildAuditLogEntryCreate?: Transformer<C, GuildAuditLogEntryCreate["d"]>; guildBanAdd?: Transformer<C, GuildBanAdd["d"]>; guildBanRemove?: Transformer<C, GuildBanRemove["d"]>; guildEmojisUpdate?: Transformer<C, GuildEmojisUpdate["d"]>; guildStickersUpdate?: Transformer<C, GuildStickersUpdate["d"]>; guildIntegrationsUpdate?: Transformer<C, GuildIntegrationsUpdate["d"]>; guildMemberAdd?: Transformer<C, GuildMemberAdd["d"]>; guildMemberRemove?: Transformer<C, GuildMemberRemove["d"]>; guildMemberUpdate?: Transformer<C, GuildMemberUpdate["d"]>; guildMembersChunk?: Transformer<C, GuildMembersChunk["d"]>; guildRoleCreate?: Transformer<C, GuildRoleCreate["d"]>; guildRoleUpdate?: Transformer<C, GuildRoleUpdate["d"]>; guildRoleDelete?: Transformer<C, GuildRoleDelete["d"]>; guildScheduledEventCreate?: Transformer<C, GuildScheduledEventCreate["d"]>; guildScheduledEventUpdate?: Transformer<C, GuildScheduledEventUpdate["d"]>; guildScheduledEventDelete?: Transformer<C, GuildScheduledEventDelete["d"]>; guildScheduledEventUserAdd?: Transformer<C, GuildScheduledEventUserAdd["d"]>; guildScheduledEventUserRemove?: Transformer<C, GuildScheduledEventUserRemove["d"]>; integrationCreate?: Transformer<C, IntegrationCreate["d"]>; integrationUpdate?: Transformer<C, IntegrationUpdate["d"]>; integrationDelete?: Transformer<C, IntegrationDelete["d"]>; interactionCreate?: Transformer<C, InteractionCreate["d"]>; inviteCreate?: Transformer<C, InviteCreate["d"]>; inviteDelete?: Transformer<C, InviteDelete["d"]>; messageCreate?: Transformer<C, MessageCreate["d"]>; messageUpdate?: Transformer<C, MessageUpdate["d"]>; messageDelete?: Transformer<C, MessageDelete["d"]>; messageDeleteBulk?: Transformer<C, MessageDeleteBulk["d"]>; messageReactionAdd?: Transformer<C, MessageReactionAdd["d"]>; messageReactionRemove?: Transformer<C, MessageReactionRemove["d"]>; messageReactionRemoveAll?: Transformer<C, MessageReactionRemoveAll["d"]>; messageReactionRemoveEmoji?: Transformer<C, MessageReactionRemoveEmoji["d"]>; presenceUpdate?: Transformer<C, PresenceUpdate["d"]>; stageInstanceCreate?: Transformer<C, StageInstanceCreate["d"]>; stageInstanceUpdate?: Transformer<C, StageInstanceUpdate["d"]>; stageInstanceDelete?: Transformer<C, StageInstanceCreate["d"]>; typingStart?: Transformer<C, TypingStart["d"]>; userUpdate?: Transformer<C, UserUpdate["d"]>; voiceStateUpdate?: Transformer<C, VoiceStateUpdate["d"]>; voiceServerUpdate?: Transformer<C, VoiceServerUpdate["d"]>; webhookUpdate?: Transformer<C, WebhookUpdate["d"]>; messagePollVoteAdd?: Transformer<C, MessagePollVoteAdd["d"]>; messagePollVoteRemove?: Transformer<C, MessagePollVoteRemove["d"]>; } export interface SelectiveCache { create?: CacheExecutionPolicy; update?: CacheExecutionPolicy; delete?: CacheExecutionPolicy; } interface CacheWithoutTransformers { applyTransformers?: false; } interface CacheWithTransformers { applyTransformers: true; transformerTypes: { guild: unknown; channel: unknown; voiceState: unknown; }; } type ApplyTransformers = CacheWithTransformers | CacheWithoutTransformers; export interface BaseCachingStructure { delegate: CachingDelegationType; manager?: CacheManagerStructure; enabled: { self?: CacheExecutionPolicy; guild?: boolean | SelectiveCache; channel?: boolean | (SelectiveCache & { threads?: boolean | SelectiveCache; }); voiceState?: CacheExecutionPolicy; }; customKeys?: { guild_voice_states?: string; voice_state_user_id?: string; voice_state_channel_id?: string; }; } export interface ExternalCache extends BaseCachingStructure { delegate: CachingDelegationType.EXTERNAL; manager: CacheManagerStructure; safeToTransform?: boolean; } export interface TransformersCache extends BaseCachingStructure { delegate: CachingDelegationType.TRANSFORMERS; } export interface DefaultCache extends BaseCachingStructure { delegate: CachingDelegationType.DEFAULT; } export type ParseCachingManager<T extends CachingOptions> = T extends {} ? T["applyTransformers"] extends true ? T extends { transformerTypes: (infer U extends CacheWithTransformers["transformerTypes"]); } ? CachingManager<U["guild"], U["channel"], U["voiceState"]> : never : T["delegate"] extends CachingDelegationType.EXTERNAL ? T["manager"] & {} : CachingManager : never; export type DebugFunction = (identifier: DebugIdentifier, payload?: unknown) => any; export interface ClientOptions { intents: number; dispatch?: DispatchFunction; presence?: UpdatePresenceStructure; useDebugRest?: boolean; cachingManager?: CacheManagerStructure; } export type CachingOptions = (DefaultCache | ExternalCache | TransformersCache) & ApplyTransformers; export interface MockClient { readonly user: any; readonly sessionId: string; readonly application: Application.Structure; readonly cache: CacheManagerStructure; } export {}; //# sourceMappingURL=client.d.ts.map