import type { Conversation as BotpressConversation, Message } from '@botpress/client';
import { BotClient } from '@botpress/sdk/dist/bot';
import { ConversationDefinitions } from '../_types/conversations';
import { Merge } from '@botpress/sdk/dist/utils/type-utils';
type Channels = keyof ConversationDefinitions;
/**
 * Base class for conversation instances at runtime.
 * Unlike the Conversation definition, this represents a specific active conversation
 * bound to a single channel.
 */
export declare class BaseConversationInstance<TChannel extends Channels = Channels> {
    readonly id: string;
    readonly channel: TChannel;
    readonly integration: string;
    readonly conversation: BotpressConversation;
    constructor(conversation: BotpressConversation, client: BotClient<any>);
    get tags(): ConversationDefinitions[TChannel]['tags'];
    set tags(value: ConversationDefinitions[TChannel]['tags']);
    /**
     * Send a message to this conversation
     */
    send<M extends keyof ConversationDefinitions[TChannel]['messages']>(message: {
        type: M;
        payload: ConversationDefinitions[TChannel]['messages'][M];
    }): Promise<Merge<Message, {
        type: M;
        payload: ConversationDefinitions[TChannel]['messages'][M];
    }>>;
    /**
     * Start typing indicator
     */
    startTyping(): Promise<void>;
    /**
     * Stop typing indicator
     */
    stopTyping(): Promise<void>;
    /**
     * Subscribe to a trigger
     */
    subscribeToTrigger(triggerName: string, key?: string): Promise<void>;
    /**
     * Unsubscribe from a trigger
     */
    unsubscribeFromTrigger(triggerName: string, key?: string): Promise<void>;
}
export {};
//# sourceMappingURL=conversation-instance.d.ts.map