import { SlackAppEnv } from "../app-env";
import { AssistantEventLazyHandler, AssistantUserMessageEventRequest, EventLazyHandler, AssistantBotMessageEventRequest } from "../handler/handler";
import { AssistantThreadContextChangedEvent, AssistantThreadStartedEvent } from "../request/payload/event";
import { AssistantThreadContextStore } from "./thread-context-store";
export type AssistantThreadStartedHandler<E extends SlackAppEnv> = AssistantEventLazyHandler<AssistantThreadStartedEvent, E>;
export type AssistantThreadContextChangedHandler<E extends SlackAppEnv> = AssistantEventLazyHandler<AssistantThreadContextChangedEvent, E>;
export type AssistantUserMessageHandler<E extends SlackAppEnv> = (req: AssistantUserMessageEventRequest<E>) => Promise<void>;
export type AssistantBotMessageHandler<E extends SlackAppEnv> = (req: AssistantBotMessageEventRequest<E>) => Promise<void>;
export interface AssistantOptions<E extends SlackAppEnv> {
    threadContextStore?: AssistantThreadContextStore;
    threadStarted?: AssistantThreadStartedHandler<E>;
    threadContextChanged?: AssistantThreadContextChangedHandler<E>;
    userMessage?: AssistantUserMessageHandler<E>;
    botMessage?: AssistantBotMessageHandler<E>;
}
export declare class Assistant<E extends SlackAppEnv> {
    threadContextStore?: AssistantThreadContextStore;
    threadStartedHandler: EventLazyHandler<"assistant_thread_started", E>;
    threadContextChangedHandler: EventLazyHandler<"assistant_thread_context_changed", E>;
    userMessageHandler: EventLazyHandler<"message", E>;
    botMessageHandler: EventLazyHandler<"message", E>;
    constructor(options?: AssistantOptions<E>);
    threadStarted(handler: AssistantThreadStartedHandler<E>): void;
    threadContextChanged(handler: AssistantThreadContextChangedHandler<E>): void;
    userMessage(handler: AssistantUserMessageHandler<E>): void;
    botMessage(handler: AssistantBotMessageHandler<E>): void;
}
//# sourceMappingURL=assistant.d.ts.map