import type { AmigoFetch } from '../core/openapi-client';
import type { components, operations } from '../generated/api-types';
import type { ConversationId, InteractionId, MessageId, OrgId } from '../core/branded-types';
type VoiceData = Blob | Uint8Array | ReadableStream<Uint8Array>;
export type InteractionInput = string | VoiceData;
/** Resource for managing conversations and interactions. */
export declare class ConversationResource {
    private c;
    private orgId;
    constructor(c: AmigoFetch, orgId: OrgId);
    /** Create a new conversation and return an async stream of NDJSON events. */
    createConversation(options: {
        body: components['schemas']['conversation__create_conversation__Request'];
        query: operations['create-conversation']['parameters']['query'];
        headers?: operations['create-conversation']['parameters']['header'];
        signal?: AbortSignal;
    }): Promise<AsyncGenerator<{
        type: "conversation-created";
        conversation_id: string;
    } | {
        type: "interaction-complete";
        message_id: string;
        interaction_id: string;
        full_message: string;
        conversation_completed: boolean;
    } | {
        type: "new-message";
        message: string;
        transcript_alignment: [number, string][] | null;
        stop: boolean;
        sequence_number: number;
        message_id: string;
    } | {
        type: "current-agent-action";
        action: components["schemas"]["src__app__amigo__service__conversation__Action"];
    } | {
        type: "error";
        http_error_code: number;
        error_description: string;
    }, any, any>>;
    /** Send a text or voice interaction and return an async stream of NDJSON events. */
    interactWithConversation(options: {
        conversationId: ConversationId;
        input: InteractionInput;
        query: operations['interact-with-conversation']['parameters']['query'];
        headers?: operations['interact-with-conversation']['parameters']['header'];
        signal?: AbortSignal;
    }): Promise<AsyncGenerator<{
        type: "interaction-complete";
        message_id: string;
        interaction_id: string;
        full_message: string;
        conversation_completed: boolean;
    } | {
        type: "new-message";
        message: string;
        transcript_alignment: [number, string][] | null;
        stop: boolean;
        sequence_number: number;
        message_id: string;
    } | {
        type: "current-agent-action";
        action: components["schemas"]["src__app__amigo__service__conversation__Action"];
    } | {
        type: "error";
        http_error_code: number;
        error_description: string;
    } | {
        type?: "user-message-available";
        message_id: string;
        user_message: string;
    }, any, any>>;
    /** List conversations, optionally filtered by query parameters. */
    getConversations(queryParams?: operations['get-conversations']['parameters']['query'], headers?: operations['get-conversations']['parameters']['header']): Promise<{
        conversations: components["schemas"]["ConversationInstance"][];
        has_more: boolean;
        continuation_token: number | null;
    }>;
    /** Get messages for a conversation. */
    getConversationMessages(options: {
        conversationId: ConversationId;
        query?: operations['get-conversation-messages']['parameters']['query'];
        headers?: operations['get-conversation-messages']['parameters']['header'];
    }): Promise<{
        messages: components["schemas"]["MessageInstance"][];
        has_more: boolean;
        continuation_token: number | null;
    }>;
    /**
     * Finish (close) a conversation.
     * @returns void
     */
    finishConversation(options: {
        conversationId: ConversationId;
        headers?: operations['finish-conversation']['parameters']['header'];
    }): Promise<void>;
    /** Get recommended responses for an interaction. */
    recommendResponsesForInteraction(options: {
        conversationId: ConversationId;
        interactionId: InteractionId;
        body?: {
            context?: string;
        };
        headers?: operations['recommend-responses-for-interaction']['parameters']['header'];
    }): Promise<{
        recommended_responses: string[];
    }>;
    /** Get insights for an interaction. */
    getInteractionInsights(options: {
        conversationId: ConversationId;
        interactionId: InteractionId;
        headers?: operations['get-interaction-insights']['parameters']['header'];
    }): Promise<{
        current_state_name: string;
        current_state_action: string;
        current_state_objective: string;
        state_transition_logs: components["schemas"]["StateTransitionLog"][];
        working_memory: components["schemas"]["WorkingMemory"][];
        reflections: string[];
        triggered_dynamic_behavior_set_version_info: [string, number] | null;
        select_next_action_tool_call_logs: components["schemas"]["ToolCallLog"][][];
        engage_user_tool_call_logs: components["schemas"]["ToolCallLog"][][];
    }>;
    /** Get the audio/media source URL for a message. */
    getMessageSource(options: {
        conversationId: ConversationId;
        messageId: MessageId;
        headers?: operations['retrieve-message-source']['parameters']['header'];
    }): Promise<{}>;
    /** Generate conversation starter suggestions. */
    generateConversationStarters(body: components['schemas']['conversation__generate_conversation_starter__Request'], headers?: operations['generate-conversation-starter']['parameters']['header']): Promise<{
        prompts: components["schemas"]["Prompt"][];
    }>;
    /** Alias for getConversations. */
    list(queryParams?: operations['get-conversations']['parameters']['query'], headers?: operations['get-conversations']['parameters']['header']): Promise<{
        conversations: components["schemas"]["ConversationInstance"][];
        has_more: boolean;
        continuation_token: number | null;
    }>;
    /** Alias for createConversation. */
    create(options: Parameters<ConversationResource['createConversation']>[0]): Promise<AsyncGenerator<{
        type: "conversation-created";
        conversation_id: string;
    } | {
        type: "interaction-complete";
        message_id: string;
        interaction_id: string;
        full_message: string;
        conversation_completed: boolean;
    } | {
        type: "new-message";
        message: string;
        transcript_alignment: [number, string][] | null;
        stop: boolean;
        sequence_number: number;
        message_id: string;
    } | {
        type: "current-agent-action";
        action: components["schemas"]["src__app__amigo__service__conversation__Action"];
    } | {
        type: "error";
        http_error_code: number;
        error_description: string;
    }, any, any>>;
    /** Alias for interactWithConversation. */
    interact(options: Parameters<ConversationResource['interactWithConversation']>[0]): Promise<AsyncGenerator<{
        type: "interaction-complete";
        message_id: string;
        interaction_id: string;
        full_message: string;
        conversation_completed: boolean;
    } | {
        type: "new-message";
        message: string;
        transcript_alignment: [number, string][] | null;
        stop: boolean;
        sequence_number: number;
        message_id: string;
    } | {
        type: "current-agent-action";
        action: components["schemas"]["src__app__amigo__service__conversation__Action"];
    } | {
        type: "error";
        http_error_code: number;
        error_description: string;
    } | {
        type?: "user-message-available";
        message_id: string;
        user_message: string;
    }, any, any>>;
    /** Alias for finishConversation. */
    finish(options: Parameters<ConversationResource['finishConversation']>[0]): Promise<void>;
    /** Alias for getConversationMessages. */
    messages(options: Parameters<ConversationResource['getConversationMessages']>[0]): Promise<{
        messages: components["schemas"]["MessageInstance"][];
        has_more: boolean;
        continuation_token: number | null;
    }>;
}
export {};
