import { LoginRequest, LoginResponse } from '../../models/IAM';
/**
 * Authenticate a user with credentials or token
 *
 * @param data - Login credentials (either handle+password or token)
 * @param baseUrl - Base URL for the API (defaults to production IAM URL)
 * @returns Login response with tokens
 * @throws {Error} If both credential and token authentication are provided
 * @throws {Error} If neither authentication method is provided
 * @throws {Error} If handle is provided without password or vice versa
 * @throws {Error} If server returns unexpected status code (expects 201 for success, 401 for failure)
 *
 * @remarks
 * Expected status codes:
 * - 201: Login succeeded
 * - 401: Login failed (invalid credentials)
 */
export declare const login: (data: LoginRequest, baseUrl?: string) => Promise<LoginResponse>;
/**
 * Log out the current user
 * @param token - Authentication token
 * @param baseUrl - Base URL for the API (defaults to production IAM URL)
 * @returns Void response
 */
export declare const logout: (token: string, baseUrl?: string) => Promise<void>;
/**
 * Check authentication status
 *
 * @param token - Authentication token (required)
 * @param baseUrl - Base URL for the API (defaults to production IAM URL)
 * @returns Promise that resolves if authenticated (200), rejects if unauthorized (401)
 * @throws {Error} If authentication token is missing or invalid
 *
 * @remarks
 * This endpoint checks authentication status, useful for reverse proxy validation.
 *
 * Expected status codes:
 * - 200: Authenticated successfully
 * - 401: Unauthorized - invalid or missing credentials
 */
export declare const checkAuth: (token: string, baseUrl?: string) => Promise<void>;
