lilybird
Version:
A bun-first discord api wrapper written in TS
149 lines • 8.73 kB
TypeScript
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