import { AgentPreviewInterface, type AgentPreviewSendResponse, type BotMetadata, type BotVersionMetadata, PlannerResponse, PreviewMetadata, ProductionAgentOptions } from '../types';
import { TranscriptEntry } from '../utils';
import { AgentBase } from './agentBase';
export declare class ProductionAgent extends AgentBase {
    private options;
    preview: AgentPreviewInterface;
    private botMetadata;
    private id;
    private apiName;
    private readonly apiBase;
    constructor(options: ProductionAgentOptions);
    getBotMetadata(): Promise<BotMetadata>;
    /**
     * Returns the latest bot version metadata.
     *
     * @returns the latest bot version metadata
     */
    getLatestBotVersionMetadata(): Promise<BotVersionMetadata>;
    /**
     * Gets a bot version by its version number, or latest if omitted.
     * Searches for a version with matching VersionNumber property.
     *
     * @param {number} version - The VersionNumber to find (e.g., 0, 1, 2, 31), or undefined for latest
     * @returns {Promise<BotVersionMetadata>}
     */
    getBotVersionMetadata(version?: number): Promise<BotVersionMetadata>;
    getTrace(planId: string): Promise<PlannerResponse | undefined>;
    getHistoryFromDisc(sessionId?: string): Promise<{
        metadata: PreviewMetadata | null;
        transcript: TranscriptEntry[];
        traces: PlannerResponse[];
    }>;
    /**
     * Returns the ID for this agent.
     *
     * @returns The ID of the agent (The `Bot` ID).
     */
    getId(): Promise<string>;
    /**
     * Activates the agent.
     *
     * @param version - The VersionNumber to activate (e.g., 0, 1, 2, 31), or undefined for latest
     * @returns The activated bot version metadata
     */
    activate(version?: number): Promise<BotVersionMetadata>;
    /**
     * Deactivates the currently active agent version.
     * Only one version can be active at a time, so this automatically finds and deactivates it.
     *
     * @returns The deactivated bot version metadata
     */
    deactivate(): Promise<BotVersionMetadata>;
    getAgentIdForStorage(): string;
    protected canApexDebug(): boolean;
    protected handleApexDebuggingSetup(): Promise<void>;
    protected sendMessage(message: string): Promise<AgentPreviewSendResponse>;
    private setAgentStatus;
    private startPreview;
    /**
     * Ends an interactive session with the agent.
     *
     * @param sessionId A session ID provided by first calling `agentPreview.start()`.
     * @param reason A reason why the interactive session was ended.
     * @returns `AgentPreviewEndResponse`
     */
    private endSession;
}
