import type { CacheProvider, ClientToolDefinition, ClientServices } from '@mondaydotcomorg/atp-protocol';
export interface ClientSession {
    clientId: string;
    createdAt: number;
    expiresAt: number;
    clientInfo?: {
        name?: string;
        version?: string;
        [key: string]: unknown;
    };
    guidance?: string;
    /** Client-provided tool definitions */
    tools?: ClientToolDefinition[];
    /** Client-provided services (LLM, approval, embedding) */
    services?: ClientServices;
}
export interface ClientInitRequest {
    clientInfo?: {
        name?: string;
        version?: string;
        [key: string]: unknown;
    };
    guidance?: string;
    /** Client tool definitions to register */
    tools?: ClientToolDefinition[];
    /** Client-provided services (LLM, approval, embedding) */
    services?: ClientServices;
}
export interface ClientInitResponse {
    clientId: string;
    token: string;
    expiresAt: number;
    tokenRotateAt?: number;
}
/**
 * Client session manager with JWT-based authentication
 */
export declare class ClientSessionManager {
    private cache?;
    private inMemorySessions;
    private cleanupTimers;
    private tokenTTL;
    private jwtSecret;
    constructor(options: {
        cache?: CacheProvider;
        tokenTTL: number;
        tokenRotation: number;
    });
    /**
     * Initialize a new client session
     */
    initClient(request: ClientInitRequest): Promise<ClientInitResponse>;
    /**
     * Verify client token (JWT-based, stateless)
     */
    verifyClient(clientId: string, token: string): Promise<boolean>;
    /**
     * Get client session
     */
    getSession(clientId: string): Promise<ClientSession | null>;
    /**
     * Revoke client session
     */
    revokeClient(clientId: string): Promise<void>;
    /**
     * Generate cryptographically secure client ID
     */
    private generateClientId;
    /**
     * Generate JWT token for client
     */
    generateToken(clientId: string): string;
    /**
     * Schedule cleanup of expired in-memory session
     */
    private scheduleCleanup;
    /**
     * Manually cleanup a session (useful for tests and explicit cleanup)
     */
    cleanup(clientId: string): Promise<void>;
    /**
     * Cleanup all sessions (useful for shutdown)
     */
    cleanupAll(): Promise<void>;
}
//# sourceMappingURL=client-sessions.d.ts.map