import type { ChannelId, ChannelMessageActionName, ChannelThreadingToolContext } from "../../channels/plugins/types.js"; import type { OpenClawConfig } from "../../config/config.js"; export declare function readBooleanParam(params: Record, key: string): boolean | undefined; export declare function resolveSlackAutoThreadId(params: { to: string; toolContext?: ChannelThreadingToolContext; }): string | undefined; /** * Auto-inject Telegram forum topic thread ID when the message tool targets * the same chat the session originated from. Mirrors the Slack auto-threading * pattern so media, buttons, and other tool-sent messages land in the correct * topic instead of the General Topic. * * Unlike Slack, we do not gate on `replyToMode` here: Telegram forum topics * are persistent sub-channels (not ephemeral reply threads), so auto-injection * should always apply when the target chat matches. */ export declare function resolveTelegramAutoThreadId(params: { to: string; toolContext?: ChannelThreadingToolContext; }): string | undefined; export declare function normalizeSandboxMediaParams(params: { args: Record; sandboxRoot?: string; }): Promise; export declare function normalizeSandboxMediaList(params: { values: string[]; sandboxRoot?: string; }): Promise; export declare function hydrateSetGroupIconParams(params: { cfg: OpenClawConfig; channel: ChannelId; accountId?: string | null; args: Record; action: ChannelMessageActionName; dryRun?: boolean; }): Promise; export declare function hydrateSendAttachmentParams(params: { cfg: OpenClawConfig; channel: ChannelId; accountId?: string | null; args: Record; action: ChannelMessageActionName; dryRun?: boolean; }): Promise; export declare function parseButtonsParam(params: Record): void; export declare function parseCardParam(params: Record): void; export declare function parseComponentsParam(params: Record): void;