#!/usr/bin/env node
/**
 * Compact result formatter. Default (lean) form is single-line / minimal — NO
 * pretty-print — so it doesn't bloat the context window. Pass { verbose: true } for
 * the fuller, indented form when a human actually needs to read every field.
 *
 * Accepts an already-prepared `data` value. Callers are expected to have already
 * trimmed to the fields that matter for the lean case (see the READ tools), but this
 * function is also safe to hand a full object for the verbose path.
 */
export declare function leanResult(data: unknown, opts?: {
    verbose?: boolean;
}): string;
export declare function isFlatObject(v: unknown): v is Record<string, unknown>;
interface RenderTableColumn {
    key: string;
    label?: string;
    align?: "left" | "right";
    maxWidth?: number;
}
/**
 * Render tabular data as a clean, column-aligned monospace ASCII table using
 * box-drawing characters. The output is meant to be dropped inside a Slack code
 * block (```) so it renders with a fixed-width font and column alignment survives.
 *
 * Accepts any of:
 *   - array of flat objects  → columns inferred from keys (or pass `columns`)
 *   - 2D array (string[][])  → first row treated as header
 *   - a markdown table string (| a | b |\n|---|---|\n| 1 | 2 |)
 *
 * Long cells are truncated with an ellipsis past a per-column max width (default 40).
 * Numeric-looking columns are right-aligned automatically unless overridden.
 */
export declare function renderTable(rows: Record<string, unknown>[] | unknown[][] | string, columns?: RenderTableColumn[]): string;
export declare function cellToString(v: unknown): string;
export declare function parseMarkdownTable(md: string): {
    headers: string[];
    body: string[][];
};
/**
 * Render a unicode progress bar, e.g. renderProgressBar(40) => "▰▰▰▰▱▱▱▱▱▱ 40%".
 */
export declare function renderProgressBar(pct: number, width?: number): string;
interface CardSection {
    text?: string;
    fields?: {
        label?: string;
        value: string;
    }[];
}
interface BuildCardOpts {
    header: string;
    sections?: CardSection[];
    context?: string;
    color?: string;
}
/**
 * Build a Slack Block Kit blocks[] array: a header block, section blocks (each with
 * optional two-column fields), dividers between sections, and an optional context
 * footer. Used by slack_send_card and the task-lifecycle summary cards.
 *
 * Returns { blocks } always, plus { attachments } when a color bar is requested
 * (Slack only supports the colored left-bar via the legacy attachments wrapper).
 */
export declare function buildCard(opts: BuildCardOpts): {
    blocks: any[];
    attachments?: any[];
};
export declare function truncatePlain(s: string, max: number): string;
export declare class SlackerV3Server {
    private server;
    private accountState;
    private readonly CACHE_TTL_MS;
    private usersCache;
    private channelsCache;
    private taskRegistry;
    private browser;
    private browserIdleTimer;
    private readonly BROWSER_IDLE_MS;
    private static readonly NO_TOKEN_MESSAGE;
    constructor();
    private loadAccountFromEnv;
    private getActiveClient;
    private getActiveUserClient;
    private ensureWorkspaceInfo;
    private currentAccountKey;
    private getAllUsersCached;
    private getAllChannelsCached;
    private describeActiveAccount;
    private getActiveAccount;
    private listAccounts;
    private slackListChannels;
    private convertMarkdownToSlackMrkdwn;
    private processExplicitMentions;
    private resolveRecipient;
    private slackSendMessage;
    private slackSendTable;
    private taskKey;
    private identityOverrides;
    private swapReaction;
    private slackSendCard;
    private slackStartTask;
    private slackUpdateTask;
    private slackCompleteTask;
    private static readonly NATO_CALL_SIGNS;
    private legateStateDir;
    private sanitizeCallSign;
    private loadLegateState;
    private saveLegateState;
    private tsGreater;
    private mentionsToken;
    private classifyAddressing;
    private looksSelfAuthored;
    private slackPoll;
    private laneKey;
    private parseLaneClaim;
    private slackClaimLane;
    private slackCheckin;
    private slackGetChannelHistory;
    private moreFooter;
    private slackAddReaction;
    private slackListUsers;
    private slackGetUserByName;
    private slackGetUserInfo;
    private slackSearchFiles;
    private slackSearchMessages;
    private searchFooter;
    private slackSearchByUser;
    private slackSearchByDateRange;
    private slackPinMessage;
    private slackUnpinMessage;
    private slackCreateChannel;
    private slackInviteUsers;
    private slackArchiveChannel;
    private slackRenameChannel;
    private slackSetChannelTopic;
    private slackDeleteMessage;
    private slackEditMessage;
    private slackScheduleMessage;
    private slackGetUserStatus;
    private slackGetUserProfile;
    private slackCreateReminder;
    private slackListReminders;
    private slackGetCustomEmoji;
    private slackSendFormattedMessage;
    private slackAuditUserActivity;
    private slackBulkReactMessages;
    private slackForwardMessage;
    private slackBulkForwardMessages;
    private slackGetThreadReplies;
    private slackGetWorkspaceStats;
    private slackUploadFile;
    private slackSendDiagram;
    private getBrowser;
    private scheduleBrowserIdleClose;
    private closeBrowser;
    private renderHtmlToPng;
    private setupHandlers;
    run(): Promise<void>;
}
export {};
//# sourceMappingURL=index.d.ts.map