UNPKG

grammy-guard

Version:
23 lines (22 loc) 1.13 kB
import { Context } from "./deps.js"; import { ChatSharedContext, UserSharedContext } from "./types.js"; type Registry = Map<string | number | symbol, number>; type Reason = Parameters<Registry["get"]>[0]; type RequestId = Parameters<Registry["set"]>[1]; declare class UserRequestRegistry<T> { protected registry: Registry; constructor(); getId<R extends keyof T>(reason: R): T[R]; add<R extends Reason>(reason: R, requestId: RequestId): UserRequestRegistry<T & Record<R, RequestId>>; filter<R extends keyof T>(reason: R): <C extends Context>(ctx: C) => ctx is UserSharedContext<C>; } declare class ChatRequestRegistry<T> { protected registry: Registry; constructor(); getId<R extends keyof T>(reason: R): T[R]; add<R extends Reason>(reason: R, requestId: RequestId): ChatRequestRegistry<T & Record<R, RequestId>>; filter<R extends keyof T>(reason: R): <C extends Context>(ctx: C) => ctx is ChatSharedContext<C>; } export declare function createUserRequestRegistry(): UserRequestRegistry<unknown>; export declare function createChatRequestRegistry(): ChatRequestRegistry<unknown>; export {};