import { RegisteredAgent, ActiveConnection, ConnectionRequestInfo, IStateManager, AgentPersistenceOptions } from './state-types';
/**
 * Implementation of the IStateManager interface for the OpenConvai system.
 * Manages agent state and connection information with thread safety and
 * proper timestamp tracking.
 */
export declare class OpenConvaiState implements IStateManager {
    private currentAgent;
    private activeConnections;
    private connectionMessageTimestamps;
    private connectionRequests;
    private defaultEnvFilePath?;
    private defaultPrefix;
    /**
     * Creates a new OpenConvaiState instance
     * @param options - Options for environment variable persistence
     */
    constructor(options?: {
        defaultEnvFilePath?: string;
        defaultPrefix?: string;
    });
    /**
     * Sets the current active agent and clears any previous connection data.
     * This should be called when switching between agents.
     */
    setCurrentAgent(agent: RegisteredAgent | null): void;
    /**
     * Returns the currently active agent or null if none is set.
     */
    getCurrentAgent(): RegisteredAgent | null;
    /**
     * Adds a new connection to the active connections list.
     * Ensures no duplicates are added based on connectionTopicId.
     * Initializes timestamp tracking for the connection.
     */
    addActiveConnection(connection: ActiveConnection): void;
    /**
     * Updates an existing connection or adds it if not found.
     * Preserves existing properties when updating by merging objects.
     */
    updateOrAddConnection(connection: ActiveConnection): void;
    /**
     * Returns a copy of all active connections.
     */
    listConnections(): ActiveConnection[];
    /**
     * Finds a connection by its identifier, which can be:
     * - A 1-based index as displayed in the connection list
     * - A target account ID string
     * - A connection topic ID string
     */
    getConnectionByIdentifier(identifier: string): ActiveConnection | undefined;
    /**
     * Gets the last processed message timestamp for a connection.
     * Returns 0 if no timestamp has been recorded.
     */
    getLastTimestamp(connectionTopicId: string): number;
    /**
     * Updates the last processed message timestamp for a connection,
     * but only if the new timestamp is more recent than the existing one.
     */
    updateTimestamp(connectionTopicId: string, timestampNanos: number): void;
    /**
     * Helper method to find a connection's index by its topic ID.
     * Returns -1 if not found.
     */
    private findConnectionIndex;
    /**
     * Helper method to initialize timestamp tracking for a connection
     * if it doesn't already exist.
     */
    private initializeTimestampIfNeeded;
    addConnectionRequest(request: ConnectionRequestInfo): void;
    listConnectionRequests(): ConnectionRequestInfo[];
    getConnectionRequestById(requestId: number): ConnectionRequestInfo | undefined;
    removeConnectionRequest(requestId: number): void;
    clearConnectionRequests(): void;
    /**
     * Persists agent data to environment variables
     * @param agent - The agent data to persist
     * @param options - Environment file persistence options
     */
    persistAgentData(agent: RegisteredAgent, options?: AgentPersistenceOptions): Promise<void>;
}
