import { ErrorHandler } from "@angular/core";
import { HttpClient, HttpParams } from "@angular/common/http";
import { InjectionToken } from "@angular/core";
import { PageableResponse } from "cadlearning.dto";
import * as i0 from "@angular/core";
export declare let CLIENT_CONFIG: InjectionToken<IClientService>;
export declare class BaseClient {
    private clientService;
    private http;
    constructor(clientService: IClientService, http: HttpClient);
    GetFile(url: string, fileType: string, progressEvent?: (percentComplete: number) => void): Promise<Blob>;
    protected GetData<T>(url: string, params: HttpParams, data?: any | null, willHandleError?: boolean, withCredentials?: boolean): Promise<T>;
    ListData<T>(url: string, params: HttpParams, data?: any | null, willHandleError?: boolean, withCredentials?: boolean): Promise<T[]>;
    ListDataRaw<T>(url: string, params: HttpParams, willHandleError?: boolean, withCredentials?: boolean): Promise<IBaseResponse<T[]>>;
    protected PutMany<T>(url: string, data: any, params: HttpParams, willHandleError?: boolean, withCredentials?: boolean): Promise<T[]>;
    protected PutOne<T>(url: string, data: any, params: HttpParams, willHandleError?: boolean, withCredentials?: boolean): Promise<T>;
    protected PostMany<T>(url: string, data: any, params: HttpParams, willHandleError?: boolean, withCredentials?: boolean): Promise<T[]>;
    protected PostPageable<T>(url: string, data: any, params: HttpParams, willHandleError?: boolean): Promise<PageableResponse<T>>;
    protected PostOne<T>(url: string, data: any, params: HttpParams, willHandleError?: boolean, withCredentials?: boolean): Promise<T>;
    protected static FormFromData(data: any): FormData;
    protected DeleteAny(url: string, params: HttpParams, willHandleError?: boolean): Promise<void>;
    /**
     * Creates a new `HttpParams` with the correct codec
     */
    protected newParams(): HttpParams;
    private parseResponse;
    private dateReviver;
    private processError;
    static ɵfac: i0.ɵɵFactoryDeclaration<BaseClient, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<BaseClient>;
}
export interface IProblemDetails {
    detail: string | null;
    instance: string | null;
    status: number;
    title: string;
    type: string | null;
}
export interface IClientService {
    ServiceUrl: string;
    ClientId: string;
    ErrorService: ErrorHandler;
}
export interface IBaseResponse<T> {
    Result?: T;
    TotalCount?: number;
}
//# sourceMappingURL=base.d.ts.map