import type { CategoryChannelStructure, DirectoryChannelStructure, DMChannelStructure, ForumChannelStructure, MediaChannelStructure, NewsChannelStructure, StageChannelStructure, TextGuildChannelStructure, ThreadChannelStructure, VoiceChannelStructure } from '../../client'; import type { BaseClient } from '../../client/base'; import type { RegisteredPluginContext, RegisteredPluginExtension, SeyfertRegistry } from '../../client/plugins'; import type { IsStrictlyUndefined } from '../../common'; import type { ChannelType } from '../../types'; import type { ResolvedRegisteredMiddlewares } from '../decorators'; export type OKFunction = (value: T) => void; export type StopFunction = (error?: string | null) => void; export type NextFunction = IsStrictlyUndefined extends true ? () => void : (data: T) => void; export type InferWithPrefix = InternalOptions extends { withPrefix: infer P; } ? P : false; export interface GlobalMetadata { } export type DefaultLocale = SeyfertRegistry extends { langs: infer L extends Record; } ? L : {}; export interface ExtendContext extends RegisteredPluginContext { } export interface ExtraProps { } declare const __seyfertClientType: unique symbol; type RegisteredClient = SeyfertRegistry extends { client: infer C; } ? [C] extends [{ readonly [__seyfertClientType]?: infer T; }] ? [T] extends [never] ? BaseClient : unknown extends T ? C extends BaseClient ? C : BaseClient : T & Omit : C extends BaseClient ? C : BaseClient : BaseClient; export type UsingClient = BaseClient & RegisteredPluginExtension & RegisteredClient; export interface CustomWorkerClientEvents { } export interface CustomWorkerManagerEvents { } export interface ExtendedRC { } export interface ExtendedRCLocations { } export type ParseClient = T & { readonly [__seyfertClientType]?: T; }; export type ParseGlobalMiddlewares> = { [K in keyof T]: MetadataMiddleware; }; export interface InternalOptions { } export interface CustomStructures { } export type MiddlewareContext = (context: { context: C; next: NextFunction; stop: StopFunction; }) => any; export type AnyMiddlewareContext = (context: { context: any; next: any; stop: StopFunction; }) => any; export type MetadataMiddleware = T extends (context: infer Payload) => any ? Payload extends { next: (...args: infer Args) => unknown; } ? IsStrictlyUndefined extends true ? never : Args[0] : never : never; type MetadataForMiddleware = ResolvedRegisteredMiddlewares[T] extends infer Middleware extends AnyMiddlewareContext ? MetadataMiddleware : never; type OmitNever = { [key in keyof T as [T[key]] extends [never] ? never : key]: T[key]; }; type MiddlewareMetadata = OmitNever<{ [key in T]: MetadataForMiddleware; }>; type CommandMetadataFromUnion = [T] extends [never] ? {} : MiddlewareMetadata; type CommandMetadataFromTuple = T extends readonly [ infer first, ...infer rest ] ? first extends keyof ResolvedRegisteredMiddlewares ? MiddlewareMetadata & (rest extends readonly (keyof ResolvedRegisteredMiddlewares)[] ? CommandMetadataFromTuple : never) : {} : {}; export type CommandMetadata = [T] extends [never] ? {} : [T] extends [readonly (keyof ResolvedRegisteredMiddlewares)[]] ? CommandMetadataFromTuple : [T] extends [keyof ResolvedRegisteredMiddlewares] ? CommandMetadataFromUnion : {}; export type MessageCommandOptionErrors = ['CHANNEL_TYPES', type: readonly ChannelType[]] | ['STRING_MIN_LENGTH', min: number] | ['STRING_MAX_LENGTH', max: number] | ['STRING_INVALID_CHOICE', choices: readonly { name: string; value: string; }[]] | ['NUMBER_NAN', value: string] | ['NUMBER_MIN_VALUE', min: number] | ['NUMBER_MAX_VALUE', max: number] | ['NUMBER_INVALID_CHOICE', choices: readonly { name: string; value: number; }[]] | ['NUMBER_OUT_OF_BOUNDS', value: number] | ['OPTION_REQUIRED'] | ['UNKNOWN', error: unknown]; export type OnOptionsReturnObject = Record; export declare enum IgnoreCommand { Slash = 0, Message = 1 } export interface SeyfertChannelMap { [ChannelType.GuildText]: TextGuildChannelStructure; [ChannelType.DM]: DMChannelStructure; [ChannelType.GuildVoice]: VoiceChannelStructure; [ChannelType.GroupDM]: DMChannelStructure; [ChannelType.GuildCategory]: CategoryChannelStructure; [ChannelType.GuildAnnouncement]: NewsChannelStructure; [ChannelType.AnnouncementThread]: ThreadChannelStructure; [ChannelType.PublicThread]: ThreadChannelStructure; [ChannelType.PrivateThread]: ThreadChannelStructure; [ChannelType.GuildStageVoice]: StageChannelStructure; [ChannelType.GuildDirectory]: DirectoryChannelStructure; [ChannelType.GuildForum]: ForumChannelStructure; [ChannelType.GuildMedia]: MediaChannelStructure; } export {};