import { Result } from './tools/utils.mjs';
import 'zod';
import './resources/metadata.mjs';

type HTTPClientConfig = {
    baseUrl: string;
    headers: Record<string, string>;
    retryOptions: {
        max: number;
        baseDelay: number;
        debug: boolean;
    };
};
declare class HTTPClient {
    private config;
    constructor(config: HTTPClientConfig);
    private errorHandler;
    private getFullUrl;
    private getRequestOptions;
    private retryErrorHandler;
    private withRetry;
    private request;
    get: <T>(endpoint: string, options?: Omit<RequestInit, "method">) => Promise<Result<T>>;
    post: <T>(endpoint: string, options?: Omit<RequestInit, "method">) => Promise<Result<T>>;
    delete: <T>(endpoint: string, options?: Omit<RequestInit, "method">) => Promise<Result<T>>;
    put: <T>(endpoint: string, options?: Omit<RequestInit, "method">) => Promise<Result<T>>;
    patch: <T>(endpoint: string, options?: Omit<RequestInit, "method">) => Promise<Result<T>>;
}

export { HTTPClient, type HTTPClientConfig };
