import { HTTPClient } from './utils/http-client';
import { UserModel } from './models/user';
import { Session } from './session';
import { SessionList } from './models/session';
export declare class User {
    private http;
    private userData;
    userId: string;
    metadata: Record<string, any>;
    createdAt: Date;
    lastActiveAt: Date;
    /**
     * Initialize a user.
     *
     * @param httpClient HTTP client for API communication
     * @param userData User data model with user information
     */
    constructor(httpClient: HTTPClient, userData: UserModel);
    /**
     * Update this user's metadata or ID.
     *
     * @param newMetadata New metadata to associate with the user
     * @param newUserId New ID for the user
     * @returns The updated user object
     * @throws {UserNotFoundError} If the user is not found
     * @throws {UserAlreadyExistsError} If a user with the new_user_id already exists
     */
    update(newMetadata?: Record<string, any>, newUserId?: string): Promise<User>;
    /**
     * Delete this user.
     *
     * @throws {UserNotFoundError} If the user is not found
     */
    delete(): Promise<void>;
    /**
     * Create a new session for this user.
     *
     * @param autoProcessAfterMinutes Minutes to wait before auto-processing (-1 to disable)
     * @returns A Session object to interact with the created session
     * @throws {UserNotFoundError} If the user is not found
     */
    createSession(autoProcessAfterMinutes?: number): Promise<Session>;
    /**
     * Get an existing session for this user.
     *
     * @param sessionId ID of the session to retrieve
     * @returns A Session object to interact with the session
     * @throws {UserNotFoundError} If the user is not found
     * @throws {SessionNotFoundError} If the session is not found
     */
    getSession(sessionId: string): Promise<Session>;
    /**
     * List sessions for this user with pagination.
     *
     * @param offset Number of records to skip
     * @param limit Maximum number of records to return
     * @returns List of sessions with pagination info
     * @throws {UserNotFoundError} If the user is not found
     */
    listSessions(offset?: number, limit?: number): Promise<SessionList>;
}
