import { type SlackAccessCache, type SlackCall, type SlackSuggestedPrompt } from "./slack-access.js"; import type { SinglePlayerThreadInfo } from "./single-player-runtime.js"; export interface SlackRuntimeAccessDeps { slack: SlackCall; getBotToken: () => string; userNames: SlackAccessCache; channelCache: SlackAccessCache; persistState: () => void; isSinglePlayerShuttingDown: () => boolean; getSuggestedPrompts: () => SlackSuggestedPrompt[] | undefined; getAgentName: () => string; getThreads: () => Map; getBrokerRole: () => "broker" | "follower" | null; resolveBrokerThreadChannel?: (threadTs: string) => string | null; resolveFollowerThreadChannel?: (threadTs: string) => Promise; } export interface SlackRuntimeAccess { addReaction: (channel: string, ts: string, emoji: string) => Promise; removeReaction: (channel: string, ts: string, emoji: string) => Promise; resolveUser: (userId: string) => Promise; rememberChannel: (name: string, channelId: string) => void; resolveChannel: (nameOrId: string) => Promise; resolveFollowerReplyChannel: (threadTs: string | undefined) => Promise; clearThreadStatus: (channelId: string, threadTs: string) => Promise; setSuggestedPrompts: (channelId: string, threadTs: string) => Promise; fetchSlackMessageByTs: (channel: string, messageTs: string) => Promise | null>; } export declare function createSlackRuntimeAccess(deps: SlackRuntimeAccessDeps): SlackRuntimeAccess;