import { HttpClient, HttpErrorResponse, HttpHeaders, HttpResponse } from '@angular/common/http';
import { Injector } from '@angular/core';
import { Router } from '@angular/router';
import { Observable, Subscriber } from 'rxjs';
import { AppConfig } from '../config/app-config';
import { PaginationContext } from '../interfaces/pagination-context.interface';
import { IServiceResponseAdapter } from '../interfaces/service-response-adapter.interface';
import { ServiceResponse } from '../interfaces/service-response.interface';
import { Config } from '../types/config.type';
import { ServiceRequestParam } from '../types/service-request-param.type';
import { AuthService } from './auth.service';
import { BaseServiceResponse } from './base-service-response.class';
import { LoginStorageService } from './login-storage.service';
import { NameConvention } from './name-convention/name-convention.service';
import { PaginationContextService } from './pagination-context.service';
import { OntimizeServiceResponseParser } from './parser/o-service-response.parser';
import { BaseRequestArgument } from './request-adapter/base-request-argument.adapter';
import * as i0 from "@angular/core";
export declare class BaseService<T extends ServiceResponse> {
    protected injector: Injector;
    protected httpClient: HttpClient;
    protected router: Router;
    protected _urlBase: string;
    protected _appConfig: Config;
    protected _config: AppConfig;
    protected responseParser: OntimizeServiceResponseParser<T>;
    protected authService: AuthService;
    protected adapter: IServiceResponseAdapter<BaseServiceResponse>;
    protected loginStorageService: LoginStorageService;
    nameConvention: NameConvention;
    requestArgumentAdapter: BaseRequestArgument;
    protected paginationContextService: PaginationContextService;
    constructor(injector: Injector);
    configureAdapter(): void;
    configureService(config: any): void;
    getDefaultServiceConfiguration(serviceName?: string): any;
    get urlBase(): string;
    set urlBase(value: string);
    doRequest(param: ServiceRequestParam<T>): Observable<T>;
    protected buildHeaders(): HttpHeaders;
    clientErrorFallback(errorCode: number): void;
    serverErrorFallback(errorCode: number): void;
    protected parseSuccessfulResponse(resp: T, observer: Subscriber<T>): void;
    protected parseSuccessfulQueryResponse(resp: T, observer: Subscriber<T>): void;
    protected parseSuccessfulAdvancedQueryResponse(resp: T, observer: Subscriber<T>): void;
    protected parseSuccessfulInsertResponse(resp: T, observer: Subscriber<T>): void;
    protected parseSuccessfulUpdateResponse(resp: T, observer: Subscriber<T>): void;
    protected parseSuccessfulDeleteResponse(resp: T, observer: Subscriber<T>): void;
    protected parseUnsuccessfulResponse(error: HttpErrorResponse, observer: Subscriber<T>): void;
    protected parseUnsuccessfulQueryResponse(resp: HttpErrorResponse, observer: Subscriber<T>): void;
    protected parseUnsuccessfulAdvancedQueryResponse(resp: HttpErrorResponse, observer: Subscriber<T>): void;
    protected parseUnsuccessfulInsertResponse(resp: HttpErrorResponse, observer: Subscriber<T>): void;
    protected parseUnsuccessfulUpdateResponse(resp: HttpErrorResponse, observer: Subscriber<T>): void;
    protected parseUnsuccessfulDeleteResponse(resp: HttpErrorResponse, observer: Subscriber<T>): void;
    protected refreshAuthToken(res: HttpResponse<any>): void;
    setPaginationContext(context: PaginationContext): void;
    getPaginationContext(): PaginationContext | null;
    reinitializePaginationContext(pageSize?: number): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<BaseService<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<BaseService<any>>;
}
