import { AddEntitiesOptions, EntityService, EntityState, EntityStore, getEntityType, getIDType } from '@datorama/akita';
import { Observable } from 'rxjs';
import { HttpConfig, Msg, NgEntityServiceParams } from './types';
import { HttpMethod } from './ng-entity-service-notifier';
import { NgEntityServiceLoader } from './ng-entity-service.loader';
export declare const mapResponse: (config: HttpConfig<any>) => import("rxjs").OperatorFunction<{}, any>;
export declare class NgEntityService<S extends EntityState = any> extends EntityService<S> {
    protected store: EntityStore<S>;
    private config;
    baseUrl: string;
    loader: NgEntityServiceLoader;
    private http;
    private notifier;
    private globalConfig;
    private mergedConfig;
    private dispatchSuccess;
    private dispatchError;
    constructor(store: EntityStore<S>, config?: NgEntityServiceParams);
    readonly api: string;
    readonly resourceName: any;
    setBaseUrl(api: string): void;
    /**
     *
     * Get all or one entity - Creates a GET request
     *
     * service.get().subscribe()
     * service.get({ headers, params, url })
     *
     * service.get(id)
     * service.get(id, { headers, params, url })
     *
     */
    get<T>(id?: getIDType<S>, config?: HttpConfig & {
        append?: boolean;
    } & Msg): Observable<T>;
    get<T>(config?: HttpConfig & {
        append?: boolean;
    } & Msg): Observable<T>;
    /**
     *
     * Add a new entity - Creates a POST request
     *
     * service.add(entity)
     * service.add(entity, config)
     *
     */
    add<T>(entity: getEntityType<S>, config?: HttpConfig & Pick<AddEntitiesOptions, 'prepend'> & Msg): Observable<T>;
    /**
     *
     * Update an entity - Creates a PUT/PATCH request
     *
     * service.update(id, entity)
     * service.update(id, entity, config)
     *
     */
    update<T>(id: getIDType<S>, entity: Partial<getEntityType<S>>, config?: HttpConfig & {
        method: HttpMethod.PUT | HttpMethod.PATCH;
    } & Msg): Observable<T>;
    /**
     *
     * Delete an entity - Creates a DELETE request
     *
     * service.delete(id)
     * service.delete(id, config)
     *
     */
    delete<T>(id: getIDType<S>, config?: HttpConfig & Msg): Observable<T>;
    private getHttpMethod;
    private getConfigValue;
    private resolveUrl;
    private handleError;
}
