import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/map';
import { Goal } from '@documment/mmp.core';
import { GoalMeta } from '@documment/mmp.core';
import { Persona } from '@documment/mmp.core';
import { GoalCreateRequest } from '@documment/mmp.core';
import { GoalUpdateRequest } from '@documment/mmp.core';
import { S3FileResponse } from '@documment/mmp.core';
import { HttpRequester } from '../http/http-requester';
import { HttpQueryBuilder } from '../http/http-query-builder';
import { GoalMapper } from '../mappers/goal.mapper';
import { GoalsMapper } from '../mappers/goals.mapper';
import { GoalMetaMapper } from '../mappers/goal-meta.mapper';
import { S3FileMapper } from '../mappers/s3-file.mapper';
import { ApiOptions } from '../models/api-options.model';
import { GoalQueryRequest } from '../requests/goal-query.request';
import { ServiceResponder } from '../services/responders/service.responder';
import { GoalPublisher } from '../../pubsub/publishers/data/goal.publisher';
import { GoalsPublisher } from '../../pubsub/publishers/data/goals.publisher';
export declare class GoalService {
    private httpRequester;
    private queryBuilder;
    private goalMapper;
    private goalsMapper;
    private goalMetaMapper;
    private s3FileMapper;
    private goalPublisher;
    private goalsPublisher;
    private serviceResponder;
    constructor(httpRequester: HttpRequester, queryBuilder: HttpQueryBuilder, goalMapper: GoalMapper, goalsMapper: GoalsMapper, goalMetaMapper: GoalMetaMapper, s3FileMapper: S3FileMapper, goalPublisher: GoalPublisher, goalsPublisher: GoalsPublisher, serviceResponder: ServiceResponder);
    accessPdf(goalId: number, options?: ApiOptions): Observable<S3FileResponse>;
    create(params: GoalCreateRequest, options?: ApiOptions): Observable<Goal>;
    createPersona(goalId: number, params: Persona, options?: ApiOptions): Observable<Goal>;
    delete(goalId: number, options?: ApiOptions): Observable<void>;
    findByInstitution(institutionId: number, goalQueryRequest: GoalQueryRequest, options?: ApiOptions): Observable<Goal[]>;
    findByInstitutions(institutionIds: number[], goalQueryRequest: GoalQueryRequest, options?: ApiOptions): Observable<Goal[]>;
    get(goalId: number, options?: ApiOptions): Observable<Goal>;
    getMetaData(goalUuid: string, options?: ApiOptions): Observable<GoalMeta>;
    submit(goalId: number, options?: ApiOptions): Observable<Goal>;
    update(params: GoalUpdateRequest, options?: ApiOptions): Observable<Goal>;
    updatePersona(goalId: number, params: Persona, options?: ApiOptions): Observable<Goal>;
}
