import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import { BaseModule } from '../../models/_modules/base-module/base-module.model';
import { Activity } from '../../models/activity.model';
import { Meta } from '../../models/meta.model';
import { Notion } from '../../models/notion.model';
import { IAttachable } from './_interfaces/attachable.interface';
import { BaseHttpService } from './base-http.service';
import { Environment } from '../../interfaces/environment.interface';
import { CacheService } from '../../services/cache/cache.service';
export declare class ActivitiesHttpService extends BaseHttpService implements IAttachable {
    protected environment: Environment;
    constructor(http: HttpClient, cache: CacheService, environment: Environment);
    byNotion(notion: Notion): Observable<Activity[]>;
    /**
     * GET /activities/favorites
     *
     * Get user's favorite activities. Will return a Meta object!
     */
    favorites(): Observable<Meta[]>;
    /**
     * GET /activities/to-revise
     *
     * Get user's To revise activities. Will return a Meta object!
     */
    toRevise(): Observable<Meta[]>;
    /**
     * Mark an activity as favorite
     */
    markAsFavorite(activity: Activity, userId: number, countryId: number, classId: number, disciplineId: number, chapterId: number, notionId: number): Observable<any>;
    /**
     * Mark an activity as no longer favorite
     */
    markAsNotFavorite(activity: Activity, userId: number, countryId: number, classId: number, disciplineId: number, chapterId: number, notionId: number): Observable<any>;
    /**
     * Mark an activity as no longer to revise
     */
    markAsNotToRevise(activity: Activity, userId: number, countryId: number, classId: number, disciplineId: number, chapterId: number, notionId: number): Observable<any>;
    /**
     * Mark an activity as no longer completed
     */
    markAsNotCompleted(activity: Activity, userId: number, countryId: number, classId: number, disciplineId: number, chapterId: number, notionId: number): Observable<any>;
    /**
     * Mark an activity as to revise
     */
    markAsToRevise(activity: Activity, userId: number, countryId: number, classId: number, disciplineId: number, chapterId: number, notionId: number): Observable<any>;
    /**
     * Mark an activity as completed
     */
    markAsCompleted(activity: Activity, userId: number, countryId: number, classId: number, disciplineId: number, chapterId: number, notionId: number): Observable<any>;
    incomplete(): Observable<any>;
    /**
     * Attach a module to an activity using the link property
     */
    attach(activity: Activity, modelToAttach: Notion | BaseModule, position?: number): Observable<Activity>;
    /**
     * Detach a module from an activity using the link property
     */
    detach(activity: Activity, modelToDetach: Notion | BaseModule): Observable<Activity>;
    /**
     * PATCH /activities/{id}/mark
     *
     * Mark an activity with the given params
     */
    private mark(activity, params);
    private resolveRelation(activity, foreignModel);
}
