import type { AnyUpdate, Priority, UpdateHandler } from '@puregram/api'; export type { AnyUpdate, OnOptions, Priority, UpdateHandler } from '@puregram/api'; /** * predicate signature for `tg.onUpdate(predicate, handler, options?)`. type-guard * variant narrows the handler arg; plain-boolean keeps it as `AnyUpdate`. * `Promise` works too — dispatcher awaits before invoking */ export type UpdatePredicate = ((update: AnyUpdate) => update is T) | ((update: AnyUpdate) => boolean) | ((update: AnyUpdate) => Promise); interface KindEntry { type: 'kind'; kind: string; handler: UpdateHandler; priority: Priority; seq: number; } interface PredicateEntry { type: 'predicate'; predicate: (update: AnyUpdate) => boolean | Promise; handler: UpdateHandler; priority: Priority; seq: number; } export type DispatchEntry = KindEntry | PredicateEntry; export type DispatchEntryInput = Omit | Omit; export declare class Dispatcher { private readonly entries; private nextSeq; add(entry: DispatchEntryInput): void; on(kind: string, handler: UpdateHandler, priority?: Priority): void; off(kind: string, handler: UpdateHandler): void; runUserHandlers(update: AnyUpdate): Promise; has(kind: string): boolean; collectAllowedKinds(): { kinds: Set; opaque: boolean; }; } //# sourceMappingURL=on.d.ts.map