/** * @yaebal/filters — composable, type-narrowing update filters (the mtcute idea, * made two-phase) for the core `composer.filter(...)` method. * * a filter is a predicate — sync or async — that may *stage* data in a bag * (e.g. `regex` stages `ctx.match`); the bag is committed onto the context only * after the whole filter tree matches, so a failing `and` branch or a matching * filter inside `not` can never leak or corrupt anything. `Add` types flow * through `and` (intersection) and `or` (union) for any number of filters. * * bot.filter(and(isPrivate, command("buy")), (ctx) => ctx.args); * bot.filter(regex(/^\d+$/), (ctx) => ctx.match[0]); * bot.filter(or(photo, video), (ctx) => ctx.message); * bot.filter(deeplink(/^ref_(\d+)$/), (ctx) => ctx.match[1]); * * any bare `(ctx) => boolean` predicate is already a filter; author typed * data-staging ones with `defineFilter`. */ export { type CommandAdd, type CommandOptions, command, deeplink, start, startGroup, } from "./command.js"; export { and, not, or } from "./logic.js"; export { animation, audio, contact, dice, document, type ForwardOriginType, forward, forwardOrigin, game, hasEntity, invoice, leftChatMember, location, type MediaKind, type MessageWith, media, mediaType, newChatMembers, paidMedia, photo, pinnedMessage, poll, reply, service, sticker, story, successfulPayment, venue, viaBot, video, videoNote, voice, } from "./message.js"; export { chatId, chatType, fromBot, fromUser, isChannel, isForum, isGroup, isPremium, isPrivate, } from "./peer.js"; export { contains, endsWith, equals, regex, startsWith, type TextMatchOptions, text, } from "./text.js"; export type { AddOf, AndAdd, BaseOf, CombinedBase, OrAdd } from "./types.js"; export { defineFilter } from "./types.js"; export { type ChatMemberChange, type ChatMemberStatus, callbackData, chatMemberStatus, edited, inlineQuery, } from "./update.js"; import { command, deeplink } from "./command.js"; import { and, not, or } from "./logic.js"; import { forwardOrigin, hasEntity, mediaType, viaBot } from "./message.js"; import { chatId, chatType, fromUser } from "./peer.js"; import { contains, endsWith, equals, regex, startsWith } from "./text.js"; import { defineFilter } from "./types.js"; import { callbackData, chatMemberStatus, inlineQuery } from "./update.js"; /** everything under one namespace, mtcute-style: `filters.command(...)`, `filters.and(...)`. */ export declare const filters: { readonly and: typeof and; readonly or: typeof or; readonly not: typeof not; readonly defineFilter: typeof defineFilter; readonly text: import("@yaebal/core").Filter; readonly equals: typeof equals; readonly contains: typeof contains; readonly startsWith: typeof startsWith; readonly endsWith: typeof endsWith; readonly regex: typeof regex; readonly command: typeof command; readonly start: import("@yaebal/core").Filter; readonly startGroup: import("@yaebal/core").Filter; readonly deeplink: typeof deeplink; readonly chatType: typeof chatType; readonly isPrivate: import("@yaebal/core").Filter; readonly isGroup: import("@yaebal/core").Filter; readonly isChannel: import("@yaebal/core").Filter; readonly isForum: import("@yaebal/core").Filter; readonly chatId: typeof chatId; readonly fromUser: typeof fromUser; readonly fromBot: import("@yaebal/core").Filter; readonly isPremium: import("@yaebal/core").Filter; readonly media: import("@yaebal/core").Filter; readonly mediaType: typeof mediaType; readonly photo: import("@yaebal/core").Filter>; readonly video: import("@yaebal/core").Filter>; readonly audio: import("@yaebal/core").Filter>; readonly voice: import("@yaebal/core").Filter>; readonly sticker: import("@yaebal/core").Filter>; readonly document: import("@yaebal/core").Filter>; readonly animation: import("@yaebal/core").Filter>; readonly videoNote: import("@yaebal/core").Filter>; readonly paidMedia: import("@yaebal/core").Filter>; readonly story: import("@yaebal/core").Filter>; readonly location: import("@yaebal/core").Filter>; readonly contact: import("@yaebal/core").Filter>; readonly venue: import("@yaebal/core").Filter>; readonly poll: import("@yaebal/core").Filter>; readonly dice: import("@yaebal/core").Filter>; readonly game: import("@yaebal/core").Filter>; readonly invoice: import("@yaebal/core").Filter>; readonly successfulPayment: import("@yaebal/core").Filter>; readonly reply: import("@yaebal/core").Filter>; readonly forward: import("@yaebal/core").Filter>; readonly forwardOrigin: typeof forwardOrigin; readonly viaBot: typeof viaBot; readonly hasEntity: typeof hasEntity; readonly service: import("@yaebal/core").Filter; readonly newChatMembers: import("@yaebal/core").Filter>; readonly leftChatMember: import("@yaebal/core").Filter>; readonly pinnedMessage: import("@yaebal/core").Filter>; readonly callbackData: typeof callbackData; readonly inlineQuery: typeof inlineQuery; readonly edited: import("@yaebal/core").Filter; readonly chatMemberStatus: typeof chatMemberStatus; }; //# sourceMappingURL=index.d.ts.map