import type { AdmittedChatSession, PublishResult, RosterView } from "./session.js"; import { type ChatState, type Recipient, type SlashCommand } from "./view.js"; export declare function publish(session: AdmittedChatSession, to: Recipient, text: string): Promise; export declare const rosterLines: (state: ChatState) => (v: RosterView) => string[]; /** * Run one slash command and fold its result. `/quit` closes the session. `/history` reads the * current channel recipient; with no channel recipient it refuses locally with a usage hint. * `ack` lists delivery keys the caller acknowledges with `session.surfaced` after it has painted * the returned state; drained inbox items stay unacknowledged until then. */ export declare function runSlash(session: AdmittedChatSession, state: ChatState, command: SlashCommand): Promise<{ state: ChatState; ack: readonly string[]; }>; /** Close the session for a `leave` intent or `/quit`, and fold the report. A throw from close is an * unknown retirement outcome, never a success. */ export declare function closeSession(session: AdmittedChatSession, state: ChatState): Promise; /** Run a publish intent and fold its result. Never retried here. */ export declare function runPublish(session: AdmittedChatSession, state: ChatState, to: Recipient, text: string): Promise; //# sourceMappingURL=controller.d.ts.map