import { SlackAccessor } from '../../accessor/slack.ts';
import type { PathSpec } from '../../types.ts';
export declare const PAGE_SIZE = 100;
export declare const MAX_PAGES = 10;
export declare function searchMessages(accessor: SlackAccessor, query: string, count?: number, page?: number): Promise<Uint8Array>;
export declare function searchFiles(accessor: SlackAccessor, query: string, count?: number, page?: number): Promise<Uint8Array>;
/**
 * The channel and DM days under `under` Slack search names.
 *
 * Slack matches whole words of message text, of file names and titles
 * (`search.files`) and of reaction names (`has::name:`), so each hit names
 * the UTC day its message was posted, or each day a file was shared. The
 * root, `channels`, `dms` and a DM are searched across the workspace, a
 * channel with `in:#name` (`on:` would read the day in the searcher's time
 * zone); hits map to dirnames through the channel and DM ids the listing
 * holds. A scope with no day in it adds nothing, and a day is cheaper to
 * read than to search. null when a channel or DM in scope is one search does
 * not cover (`searchedChannels`), when `text` could match the JSON around those fields
 * (`recordQueries`), a user's name or the workspace's domain (`searchFacts`),
 * on an API or connection error, past `MAX_PAGES` pages, or with no hit at
 * all, since Slack indexes a message some time after it is posted. Mirrors
 * Python's `files_containing`.
 */
export declare function filesContaining(accessor: SlackAccessor, text: string, under: readonly PathSpec[]): Promise<PathSpec[] | null>;
//# sourceMappingURL=search.d.ts.map