import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import { IBaseModule } from '../../models/_modules/base-module/base-module.interface';
import { BaseModule } from '../../models/_modules/base-module/base-module.model';
import { Activity } from '../../models/activity.model';
import { IAttachable } from './_interfaces/attachable.interface';
import { BaseHttpService } from './base-http.service';
import { CacheService } from '../../services/cache/cache.service';
import { Environment } from '../../interfaces/environment.interface';
export declare class ModulesHttpService extends BaseHttpService implements IAttachable {
    protected http: HttpClient;
    protected environment: Environment;
    constructor(http: HttpClient, cache: CacheService, environment: Environment);
    byActivity(activity: Activity): Observable<BaseModule[]>;
    attach(module: IBaseModule, modelToAttach: Activity, position?: number): Observable<IBaseModule>;
    /**
     * Detach a module from an activity using the link property
     */
    detach(module: IBaseModule, modelToDetach: Activity): Observable<IBaseModule>;
    mark(module: BaseModule, completed: boolean, userId: number, countryId: number, classId: number, disciplineId: number, chapterId: number, notionId: number, activityId: number): Observable<any>;
    /**
     * Resolve model for implements IBaseModel  instancies
     */
    protected resolveModelClass(json: any, overriddenModelClass?: any): IBaseModule;
    private resolveRelation(model, foreignModel);
}
