import { Injector } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Router } from '@angular/router';
import { Observable } from 'rxjs';
import { HttpCollectionService } from './http-collection.service';
import { CollectionResponse } from './collection-response';
import { CollectionQueryParams } from './collection-query-params';
import * as i0 from "@angular/core";
export declare abstract class BaseRestService {
    protected apiUrl: string | undefined;
    /**
     * Collection Path
     *
     * Ruta relativa de la lista de recursos.
     *
     * Ejemplo: api/users
     *
     */
    protected collectionPath: string;
    protected collectionUrl: string;
    /**
     * Usa estrictamene la url señalada.
     */
    strictApiUrl: string;
    protected http: HttpClient;
    protected httpList: HttpCollectionService;
    protected router: Router;
    constructor(injector: Injector);
    abstract getApiUrl(): string;
    protected getCollectionUrl(): string;
    /**
     * GET List
     */
    list<T>(options?: CollectionQueryParams): Observable<CollectionResponse<T[]>>;
    /**
     * GET
     * @param id The resource ID
     */
    get(id: number | string): Observable<any>;
    /**
     * POST
     */
    create<T>(model: T): Observable<T>;
    /**
     * PUT
     */
    update<T>(model: any, id?: string | number): Observable<T>;
    save<T>(model: any, id?: string | number): Observable<T>;
    /**
     * DELETE
     */
    delete(id: number | string): Observable<Object>;
    buildUrl(segments: any[], baseUrl?: string): string;
    getBlob(url: string): Observable<Blob | null>;
    getFile(url: string): Observable<{
        file: Blob;
        fileName: string;
    } | null | undefined>;
    getCollectionPath(): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<BaseRestService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<BaseRestService>;
}
