import type { AvatarVisualId } from '../../avatars/types/AvatarVisualDefinition';
import type { CallChatModelStreamOptions } from '../../execution/LlmExecutionTools';
import type { ChatPromptResult } from '../../execution/PromptResult';
import type { Prompt } from '../../types/Prompt';
import type { string_agent_hash, string_agent_name } from '../../types/string_agent_name';
import { Agent } from './Agent';
import type { RemoteAgentOptions } from './RemoteAgentOptions';
/**
 * Represents one AI Agent
 *
 * Note: [🦖] There are several different things in Promptbook:
 * - `Agent` - which represents an AI Agent with its source, memories, actions, etc. Agent is a higher-level abstraction which is internally using:
 * - `LlmExecutionTools` - which wraps one or more LLM models and provides an interface to execute them
 * - `AgentLlmExecutionTools` - which is a specific implementation of `LlmExecutionTools` that wraps another LlmExecutionTools and applies agent-specific system prompts and requirements
 * - `OpenAiAssistantExecutionTools` - (Deprecated) which is a specific implementation of `LlmExecutionTools` for OpenAI models with assistant capabilities
 * - `OpenAiAgentKitExecutionTools` - which is a specific implementation of `LlmExecutionTools` backed by OpenAI AgentKit
 * - `RemoteAgent` - which is an `Agent` that connects to a Promptbook Agents Server
 *
 * @public exported from `@promptbook/core`
 */
export declare class RemoteAgent extends Agent {
    static connect(options: RemoteAgentOptions): Promise<RemoteAgent>;
    /**
     * The source of the agent
     */
    private agentUrl;
    private requestHeaders;
    private _remoteAgentName;
    private _remoteAgentHash;
    toolTitles: Record<string, string>;
    private _isVoiceCallingEnabled;
    private _isVoiceTtsSttEnabled;
    isMetaImageExplicit: boolean;
    avatarVisualId: AvatarVisualId | undefined;
    /**
     * Indicates whether the remote server allows text-to-speech and speech-to-text.
     *
     * @public exported from `@promptbook/core`
     */
    get isVoiceTtsSttEnabled(): boolean;
    knowledgeSources: Array<{
        url: string;
        filename: string;
    }>;
    private constructor();
    get agentName(): string_agent_name;
    get agentHash(): string_agent_hash;
    /**
     * Calls the agent on agents remote server
     */
    callChatModel(prompt: Prompt): Promise<ChatPromptResult>;
    /**
     * Calls the agent on agents remote server with voice
     * [✨✷] Only available when voice calling is enabled on the server
     * Returns undefined if voice calling is disabled
     */
    get callVoiceChatModel(): ((audio: Blob, prompt: Prompt) => Promise<{
        text: string;
        audio: Blob;
        userMessage?: string;
        agentMessage?: string;
    }>) | undefined;
    callChatModelStream(prompt: Prompt, onProgress: (chunk: ChatPromptResult) => void, options?: CallChatModelStreamOptions): Promise<ChatPromptResult>;
}
