import { ConversationConfig, ConversationMessage } from "../types";
export declare class ConversationContext {
    protected id: string;
    protected subject: string;
    protected state: 'active' | 'paused' | 'complete' | 'failed';
    protected messages: ConversationMessage[];
    protected config: ConversationConfig;
    protected createdAt: Date;
    protected updatedAt: Date;
    protected turnCount: number;
    constructor(subject: string, config?: Partial<ConversationConfig>);
    /**
     * Retrieves the unique identifier associated with the current instance.
     *
     * @returns {string} The unique identifier as a string.
     */
    getId(): string;
    /**
     * Retrieves the subject associated with the current conversation context.
     *
     * @returns {string} The subject of the conversation.
     */
    getSubject(): string;
    /**
     * Updates the subject of the conversation context and sets the updated timestamp.
     *
     * @param subject - The new subject to set for the conversation context.
     */
    setSubject(subject: string): void;
    /**
     * Retrieves the current state of the conversation context.
     *
     * @returns {'active' | 'paused' | 'complete' | 'failed'} The current state, which can be one of the following:
     * - `'active'`: Indicates the conversation is ongoing.
     * - `'paused'`: Indicates the conversation is temporarily halted.
     * - `'complete'`: Indicates the conversation has successfully concluded.
     * - `'failed'`: Indicates the conversation encountered an error or was unsuccessful.
     */
    getState(): 'active' | 'paused' | 'complete' | 'failed';
    /**
     * Updates the state of the conversation context and sets the updated timestamp.
     *
     * @param state - The new state to set for the conversation context.
     *                Must be one of the following values: 'active', 'paused', 'complete', or 'failed'.
     */
    setState(state: 'active' | 'paused' | 'complete' | 'failed'): void;
    /**
     * Retrieves the list of conversation messages.
     *
     * @returns {ConversationMessage[]} An array of conversation messages.
     */
    getMessages(): ConversationMessage[];
    setMessages(messages: ConversationMessage[] | []): void;
    /**
     * Retrieves the conversation configuration.
     *
     * @returns {ConversationConfig} The current conversation configuration.
     */
    getConfig(): ConversationConfig;
    /**
     * Updates the conversation configuration with the provided settings.
     *
     * @param config - A partial configuration object to update the conversation settings.
     *                This can include properties like maxTurns, keepFullHistory, maxContextSize, and temperature.
     */
    setConfig(config: Partial<ConversationConfig>): void;
    /**
     * Retrieves the creation date of the current context.
     *
     * @returns {Date} The date and time when the context was created.
     */
    getCreatedAt(): Date;
    /**
     * Retrieves the last updated date of the current context.
     *
     * @returns {Date} The date and time when the context was last updated.
     */
    getUpdatedAt(): Date;
    /**
     * Retrieves the current turn count for the conversation.
     *
     * @returns {number} The number of turns that have occurred in the conversation.
     */
    getTurnCount(): number;
    /**
     * Increments the turn count by one.
     * This method is used to track the number of turns in a conversation context.
     */
    incrementTurnCount(): void;
    /**
     * Resets the turn count to zero and updates the timestamp indicating
     * the last modification. This method is typically used to restart
     * the conversation context or initialize the turn count for a new session.
     */
    resetTurnCount(): void;
    /**
     * Add a message to the conversation
     * @param role - The role of the message sender ('user', 'assistant', 'system')
     * @param content - The content of the message
     */
    addMessage(role: 'user' | 'assistant' | 'system', content: string): void;
    /**
     * Adds a user message to the conversation context.
     *
     * @param content - The content of the message to be added.
     */
    addUserMessage(content: string): void;
    /**
     * Adds a message from the assistant to the conversation context.
     *
     * @param content - The content of the assistant's message to be added.
     */
    addAssistantMessage(content: string): void;
    /**
     * Adds a system message to the conversation context.
     *
     * @param content - The content of the system message to be added.
     */
    addSystemMessage(content: string): void;
}
//# sourceMappingURL=conversation-context.d.ts.map