import { IBaseModel } from '../models/_interfaces/base.model.interface';
import { Observable } from 'rxjs/Observable';
import { Activity } from '../models/activity.model';
import { Chapter } from '../models/chapter.model';
import { Class_ } from '../models/class_.model';
import { Comment } from '../models/comment.model';
import { Discipline } from '../models/discipline.model';
import { Meta } from '../models/meta.model';
import { Notion } from '../models/notion.model';
import { Quote } from '../models/quote.model';
import { User } from '../models/user.model';
import { IBaseModule } from '../models/_modules/base-module/base-module.interface';
import { BearerResponse } from './_http/_responses/bearer/bearer.response';
import { NotionRecursive } from '../../';
export declare class BaseHttpServiceStub {
    private modelInstance;
    constructor(modelInstance_: any);
    get(id: number): Observable<IBaseModel>;
    getBySlug(slug: string): Observable<IBaseModel>;
    edit(model: IBaseModel): Observable<IBaseModel>;
    delete_(model: IBaseModel): Observable<any>;
    by(): Observable<IBaseModel[]>;
}
export declare class ActivitiesHttpServiceStub extends BaseHttpServiceStub {
    constructor();
    favorites(): Observable<Meta[]>;
    markAsFavorite(activity: Activity, userId: number, countryId: number, classId: number, disciplineId: number, chapterId: number, notionId: number): Observable<any>;
    markAsNotFavorite(activity: Activity): Observable<any>;
    markAsToRevise(activity: Activity): Observable<any>;
    markAsNotToRevise(activity: Activity): Observable<any>;
    markAsCompleted(activity: Activity): Observable<any>;
    markAsNotCompleted(activity: Activity): Observable<any>;
    attach(activity: Activity, modelToDetach: IBaseModule | Notion, position: number): Observable<Activity>;
    detach(activity: Activity, modelToDetach: IBaseModule | Notion): Observable<Activity>;
}
export declare class BlogPostHttpServiceStub extends BaseHttpServiceStub {
    constructor();
}
export declare class CategoriesHttpServiceStub extends BaseHttpServiceStub {
    constructor();
}
export declare class ChaptersHttpServiceStub extends BaseHttpServiceStub {
    constructor();
    byClassAndDiscipline(class_: Class_, discipline: Discipline): Observable<Chapter[]>;
    recursiveToModule(chapter: Chapter): Observable<NotionRecursive>;
    attach(chapter: Chapter, modelToAttach: Notion, position?: number): Observable<Chapter>;
    detach(chapter: Chapter, modelToDetach: Notion): Observable<Chapter>;
}
export declare class ClassesHttpServiceStub extends BaseHttpServiceStub {
    constructor();
    byCountry(): Observable<Class_[]>;
}
export declare class CommentsHttpServiceStub extends BaseHttpServiceStub {
    constructor();
    type(commentableType: string, commentableId: number, page?: number, perPage?: number): Observable<Comment[]>;
    latest(page: number, perPage: number): Observable<Comment[]>;
    byNotion(notion: Notion): Observable<Comment[]>;
}
export declare class CountriesHttpServiceStub extends BaseHttpServiceStub {
    constructor();
}
export declare class DisciplinesHttpServiceStub extends BaseHttpServiceStub {
    constructor();
    byClass(class_: Class_): Observable<Discipline[]>;
    attach(discipline: Discipline, modelToAttach: Class_, position?: number): Observable<Discipline>;
    detach(discipline: Discipline, modelToDetach: Class_): Observable<Discipline>;
}
export declare class LessonsHttpServiceStub extends BaseHttpServiceStub {
    constructor();
}
export declare class LevelsHttpServiceStub extends BaseHttpServiceStub {
    constructor();
}
export declare class MetasHttpServiceStub extends BaseHttpServiceStub {
    constructor();
}
export declare class ModulesHttpServiceStub extends BaseHttpServiceStub {
    constructor();
    attach(module: IBaseModule, modelToAttach: Activity, position?: number): Observable<IBaseModule>;
    detach(module: IBaseModule, modelToDetach: Activity): Observable<IBaseModule>;
}
export declare class NotionsHttpServiceStub extends BaseHttpServiceStub {
    constructor();
    byChapter(chapter: Chapter): Observable<Notion[]>;
    attach(notion: Notion, modelToAttach: Chapter | Activity, position?: number): Observable<Notion>;
    detach(notion: Notion, modelToDetach: Chapter | Activity): Observable<Notion>;
}
export declare class QuotesHttpServiceStub extends BaseHttpServiceStub {
    constructor();
    random(count: number): Observable<Quote[]>;
}
export declare class ReportsHttpServiceStub extends BaseHttpServiceStub {
    constructor();
}
export declare class SearchHttpServiceStub {
    searchContent(query: string, page?: number, perPage?: number): Observable<{
        videos: any;
        chapters: any;
        notions: any;
    }>;
}
export declare class SectionsHttpServiceStub extends BaseHttpServiceStub {
    constructor();
}
export declare class TrainingsHttpServiceStub extends BaseHttpServiceStub {
    constructor();
}
export declare class UsersHttpServiceStub extends BaseHttpServiceStub {
    constructor();
    login(email: string, password: string): Observable<BearerResponse>;
    register(email: string, password: string, class_id?: number): Observable<User>;
    profile(): Observable<User>;
    search(params: any, page?: number, perPage?: number): Observable<any>;
    emailExists(email: string): Observable<{
        exists: boolean;
    }>;
    points(points: number, loggableType: 'module', loggableId: number, userId?: number): void;
    forgotPassword(email: string): Observable<any>;
    resetPassword(token: string, password: string): Observable<any>;
}
