import { Context, Session, h } from 'koishi'; import { MemeImage, MemeInfo, MemeOptionType } from 'meme-generator-rs-api'; import { Config } from '../config'; import { UserInfoGender } from '../utils/user-info'; export interface ResolvedShortcutInfo { rawMessage: h[]; names?: string[]; texts?: string[]; options?: Record; } export interface SessionInternal { inGenerateSubCommand?: boolean; shortcut?: boolean; } declare module 'koishi' { interface Session { memesApi: SessionInternal; } } export interface OptionInfo { names: string[]; argName: string; type: string; description: string; } export type ImageFetchInfo = { src: string; } | { userId: string; }; export interface ResolvedArgs { imageInfos: ImageFetchInfo[]; texts: string[]; names: string[]; } export interface ImagesAndInfos { images: Blob[]; names: string[]; gender: UserInfoGender; } declare module '../index' { interface MemeInternal { resolveArgs(session: Session, args: h[]): Promise; resolveImagesAndInfos: (session: Session, imageInfos: ImageFetchInfo[], existingNames?: string[]) => Promise; checkAndCountToGenerate(session: Session): Promise; uploadImages(images: Blob[]): Promise; uploadImagesAndProcess(meme: MemeInfo, uploadInfo: ImagesAndInfos, options?: Record): Promise; normalizeOptionType(type: MemeOptionType): string; checkOptions(session: Session, options: Record, info: MemeInfo): Promise; uploadImgAndRenderMeme(meme: MemeInfo, texts: string[], uploadInfo: ImagesAndInfos, options: Record): Promise; reRegisterGenerateCommands: () => Promise; } } export declare function apply(ctx: Context, config: Config): Promise;