import type { ResponseOf } from '../types/response'; import { AxiosRequestConfig } from 'axios'; /** * Authentication configuration for HttpClient */ export interface HttpClientAuthConfig { /** API key for backend mode - full API access */ apiKey?: string; /** Session token for client mode - limited access */ sessionToken?: string; } /** * Optional configuration for HttpClient * * `headers` is a free-form bag of extra headers merged into every * request. Keys are auto-formatted to `x-kebab-case` to mirror * `videodb-python`'s kwarg-to-header behavior, e.g. `org_id` → `x-org-id`. */ export interface HttpClientOptions { headers?: Record; } /** * Api initialization to make axios config * options available to all child classes * internally. * * Response data is converted from snake_case to camelCase. * Request data must be provided in snake_case format at the call site. * * Supports dual authentication modes: * - API key: Full backend access * - Session token: Limited client access (backend handles distinguishing) */ export declare class HttpClient { #private; /** * Create an HttpClient with auth configuration * @param baseURL - Base URL for the API * @param authConfig - Authentication configuration (apiKey or sessionToken) * @param options - Optional client configuration (custom headers) */ protected constructor(baseURL: string, authConfig: HttpClientAuthConfig, options?: HttpClientOptions); /** * Create an HttpClient with API key (legacy signature) * @param baseURL - Base URL for the API * @param apiKey - API key for authentication * @param options - Optional client configuration (custom headers) * @deprecated Use the object-based constructor instead */ protected constructor(baseURL: string, apiKey: string, options?: HttpClientOptions); get: (urlSeries: string[], options?: AxiosRequestConfig) => Promise>; delete: (urlSeries: string[], options?: AxiosRequestConfig) => Promise>; post: (urlSeries: string[], data?: D, options?: AxiosRequestConfig) => Promise>; put: (urlSeries: string[], data?: D, options?: AxiosRequestConfig) => Promise>; patch: (urlSeries: string[], data?: D, options?: AxiosRequestConfig) => Promise>; }