UNPKG

koishi-plugin-hhs-huatu

Version:
63 lines (62 loc) 2.17 kB
import { Context, Dict, Session } from 'koishi'; import { Config } from './config'; import { MembershipSystem } from './membershipSystem'; export interface TaskQueueItem { session: Session<'authority', never, Context>; options: any; input: string; resolve: (value: any) => void; reject: (reason: any) => void; isRedraw?: boolean; } export declare class QueueSystem { private ctx; private config; private generateImageFn; taskQueue: TaskQueueItem[]; processingTasks: number; userTasks: Dict<number>; userCooldowns: Dict<number>; userLastTask: Dict<{ session: Session<'authority'>; options: any; input: string; pointsCost?: number; }>; private lastRedrawTime; private usedTokenIndices; private redrawLock; private redrawWaitQueue; maxConcurrentTasks: number; private membershipSystem; private tokenPool; constructor(ctx: Context, config: Config, generateImageFn: (session: Session<'authority'>, options: any, input: string) => Promise<any>, membershipSystem?: MembershipSystem, initialTokenUsage?: Dict<boolean>); acquireRedrawLock(): Promise<void>; releaseRedrawLock(): void; getUniqueTokenIndex(currentIndex: number, tokenCount: number): number; private acquireTokenIndex; private releaseTokenIndex; borrowTokenIndex(): number | null; returnTokenIndex(index: number): void; processQueue(): Promise<void>; addTask(task: TaskQueueItem): Promise<any>; getQueueStatus(userId: string): { totalWaiting: number; userQueue: number; }; canAddTask(userId: string): { canAdd: boolean; message?: string; }; incrementUserTask(userId: string, count?: number): void; resetUserQueue(userId: string): void; saveLastTask(userId: string, session: Session<'authority'>, options: any, input: string, pointsCost?: number): void; getLastTask(userId: string): { session: Session<'authority'>; options: any; input: string; pointsCost?: number; } | undefined; getLastRedrawTime(): number; setLastRedrawTime(time: number): void; }