import type { Adapter } from 'chat'; /** * Slack-specific workaround for tool-approval clicks at the top level of a * conversation (DM root or channel root, not inside a thread). * * The slack adapter's `handleBlockActions` falls back to `messageTs` when the * clicked card has no `thread_ts`, which makes the action's `chatThread.id` * point at a "thread keyed by the card itself" rather than the top-level * conversation the user was actually in. That breaks the `pendingToolApprovals` * metadata lookup because the metadata was persisted against the top-level * thread. * * This helper detects that case (decoded `threadTs === messageId`) and rewrites * the external thread id to the top-level (empty `threadTs`) form so the * approval lookup hits the right mastra thread. * * Returns `null` when the workaround does not apply (non-slack platform, * adapter without the thread-id codec, missing `messageId`, or the click was * inside an actual thread). Callers should fall back to the original * `chatThread.id` in that case. * * Remove this compat layer when the slack adapter is fixed to surface the * top-level thread id directly on `event.thread`. */ export declare function resolveSlackTopLevelThreadId(params: { platform: string; adapter: Adapter; chatThreadId: string; messageId?: string; }): string | null; //# sourceMappingURL=slack.d.ts.map