export interface HttpClient {
    get<T, E = any>(url: string, headers?: Headers): Promise<ApiResponse<T, E>>;
    post<T, E = any>(url: string, data?: any, headers?: Headers): Promise<ApiResponse<T, E>>;
    put<T, E = any>(url: string, data?: any, headers?: Headers): Promise<ApiResponse<T, E>>;
    delete<T, E = any>(url: string, headers?: Headers): Promise<ApiResponse<T, E>>;
}
export type ApiResponse<T, E = any> = {
    ok: boolean;
    statusCode: number;
    data?: T;
    error?: E;
};
export type Method = "POST" | "PUT" | "GET" | "DELETE";
export type Headers = {
    [name: string]: string;
};
export declare class NetworkError extends Error {
    constructor(message?: string);
}
export declare class DefaultHttpClient implements HttpClient {
    private baseURL;
    private headers?;
    constructor(baseURL: string, headers?: Headers);
    delete<T, E = any>(url: string, headers?: Headers): Promise<ApiResponse<T, E>>;
    get<T, E = any>(url: string, headers?: Headers): Promise<ApiResponse<T, E>>;
    post<T, E = any>(url: string, data?: any, headers?: Headers): Promise<ApiResponse<T, E>>;
    put<T, E = any>(url: string, data?: any, headers?: Headers): Promise<ApiResponse<T, E>>;
    private request;
}
