grammy-guard
Version:
Guard middlewares for grammY
23 lines (22 loc) • 1.13 kB
TypeScript
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 {};