import { NodeSizeDto } from '../../../src/modules/providers/dto/node-size.dto';
/**
 * HTTP client for Flui API communication
 * Handles authentication, error handling, and request/response formatting
 */
export interface ApiClientConfig {
    baseUrl: string;
    timeout?: number;
    apiKey?: string;
}
export declare class ApiError extends Error {
    statusCode?: number;
    details?: any;
    constructor(message: string, statusCode?: number, details?: any);
}
export declare class ApiClient {
    private readonly client;
    private readonly baseUrl;
    constructor(config: ApiClientConfig);
    /**
     * Normalize Axios errors to ApiError format
     */
    private normalizeError;
    /**
     * GET request
     */
    get<T>(path: string): Promise<T>;
    /**
     * POST request
     */
    post<T>(path: string, data?: any): Promise<T>;
    /**
     * PUT request
     */
    put<T>(path: string, data?: any): Promise<T>;
    /**
     * PATCH request
     */
    patch<T>(path: string, data?: any): Promise<T>;
    /**
     * DELETE request
     */
    delete<T>(path: string, config?: {
        data?: unknown;
    }): Promise<T>;
    /**
     * Get base URL
     */
    getBaseUrl(): string;
    /**
     * Get available node sizes/server types for a provider
     */
    getNodeSizes(provider: string, region?: string, skipCache?: boolean): Promise<NodeSizeDto[]>;
    /**
     * Clear node sizes cache for a provider
     */
    clearNodeSizesCache(provider: string): Promise<void>;
}
