import type { WebClient } from '@slack/web-api'; import type { AgentOwner } from '../../shared/agent-config.js'; import type { ChoiceResponseInboxItem } from '../../shared/inbox.js'; import { type ActivityService } from '../activities/activity.service.js'; import { WakeQueueService } from '../inbox/wake-queue.service.js'; import { type SlackUserInfo } from '../slack/workspace-directory.service.js'; import { InteractiveAskStore, type InteractiveAskOption, type InteractiveAskRecord } from '../storage/schema/interactive-ask.store.js'; export declare const INTERACTIVE_ASK_ACTION_ID = "anima.ask.answer"; export interface InteractiveAskAnswerInput { askId: string; client: WebClient; optionId: string; userId: string; } export interface InteractiveAskAnswerResult { ask?: InteractiveAskRecord; outcome: 'answered' | 'already_answered' | 'forbidden' | 'not_found' | 'invalid_option'; queued?: boolean; } export declare class InteractiveAskService { private readonly store; private readonly queue; private readonly activity; constructor(agentId: string, store?: InteractiveAskStore, queue?: WakeQueueService, activity?: ActivityService); saveAsk(record: InteractiveAskRecord): Promise; getAsk(askId: string): Promise; answerAsk(input: InteractiveAskAnswerInput): Promise; replaceAnsweredMessage(input: { ask: InteractiveAskRecord; client: WebClient; }): Promise; notifyForbiddenClick(input: { ask: InteractiveAskRecord; client: WebClient; userId: string; }): Promise; private canUserAnswer; private answeringUser; private recordAnswerActivity; private pruneOldAnswered; } export declare function interactiveAskServiceForAgent(agentId: string): InteractiveAskService; export declare function choiceResponseInboxItem(ask: InteractiveAskRecord, option: InteractiveAskOption, answeredBy: NonNullable): ChoiceResponseInboxItem; export declare function slackAnswerUser(user: SlackUserInfo | undefined, fallback: string): { displayName?: string; handle?: string; slackUserId: string; }; export declare function ownerAllowedUser(owner: AgentOwner): { displayName?: string; handle?: string; slackUserId: string; }; //# sourceMappingURL=interactive-ask.service.d.ts.map