UNPKG

@jadl/cmd

Version:
40 lines (39 loc) 2.49 kB
import { Symbols } from '../Symbols'; import type { APIApplicationCommandOption, RESTPostAPIApplicationCommandsJSONBody } from 'discord-api-types/v9'; import { CommandInteraction } from '../types'; import { CommandHandler } from '../handler/CommandHandler'; import { WorkerInject } from '../structures/WorkerInject'; export interface CommandMeta { canRun: Array<RunningFunction<boolean>>; onRun: Array<RunningFunction<void>>; name: string | symbol; params: ParamResolver[]; interactionOptions?: APIApplicationCommandOption[]; indexToOption: { [key: number]: string; }; method: string; } export declare type ParamResolver = (int: CommandInteraction, handler: CommandHandler) => any; export declare type RunningFunction<R extends any> = (interaction: CommandInteraction, handler: CommandHandler) => R | Promise<R>; declare const baseSymbols: { [Symbols.commandName]: string; [Symbols.aliases]: string[]; [Symbols.interaction]: RESTPostAPIApplicationCommandsJSONBody; [Symbols.guild]: string | undefined; [Symbols.commands]: CommandMeta[]; [Symbols.injections]: WorkerInject<import("jadl").Worker<{}>>[]; }; export declare type BaseSymbols = typeof baseSymbols; export declare type baseDecorator<O extends any> = (options: O, command: BaseSymbols) => void | Promise<void>; export declare type commandDecorator<O extends any> = (options: O, command: CommandMeta, base: BaseSymbols, descriptor: TypedPropertyDescriptor<Function>) => void | Promise<void>; export declare type parameterDecorator<O extends any, R extends any = ParamResolver> = (options: O, command: CommandMeta, base: BaseSymbols, index: number) => R; export declare const Decorators: { createBaseDecorator: <O extends any[] = undefined[]>(handler: baseDecorator<O>) => (...options: O) => ClassDecorator; setupCommandMeta: (target: BaseSymbols) => void; getCommandMeta(target: BaseSymbols, method: string): CommandMeta; createCommandDecorator: <O_1 extends any[] = undefined[]>(running: commandDecorator<O_1>, extension?: MethodDecorator) => (...options: O_1) => MethodDecorator; createParameterDecorator: <O_2 extends any[] = undefined[]>(paramHandler: parameterDecorator<O_2, ParamResolver>) => (...options: O_2) => ParameterDecorator; createParameterAddition: <O_3 extends any[] = undefined[]>(paramHandler: parameterDecorator<O_3, void>) => (...options: O_3) => ParameterDecorator; }; export {};