import { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpParameterCodec, HttpContext } from '@angular/common/http';
import { Observable } from 'rxjs';
import { AchievementExpectation } from '../model/achievementExpectation';
import { CommonResult } from '../model/commonResult';
import { TechniqueAgeGroupDetail } from '../model/techniqueAgeGroupDetail';
import { TechniqueAgeGroupEdit } from '../model/techniqueAgeGroupEdit';
import { TechniqueClassForGuidance } from '../model/techniqueClassForGuidance';
import { Configuration } from '../configuration';
import { TechniqueAchievementServiceInterface } from './techniqueAchievement.serviceInterface';
import * as i0 from "@angular/core";
export declare class TechniqueAchievementService implements TechniqueAchievementServiceInterface {
    protected httpClient: HttpClient;
    protected basePath: string;
    defaultHeaders: HttpHeaders;
    configuration: Configuration;
    encoder: HttpParameterCodec;
    constructor(httpClient: HttpClient, basePath: string | string[], configuration: Configuration);
    private addToHttpParams;
    private addToHttpParamsRecursive;
    /**
     * Get the Achievement Expectations.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    achievementExpectationsSelectAll(observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<Array<AchievementExpectation>>;
    achievementExpectationsSelectAll(observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<Array<AchievementExpectation>>>;
    achievementExpectationsSelectAll(observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<Array<AchievementExpectation>>>;
    /**
     * Get the achievement guidance for a sport.
     * @param SportID
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    achievementGuidance(SportID?: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<Array<TechniqueClassForGuidance>>;
    achievementGuidance(SportID?: number, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<Array<TechniqueClassForGuidance>>>;
    achievementGuidance(SportID?: number, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<Array<TechniqueClassForGuidance>>>;
    /**
     * Delete all the age group guidance for a technique.
     * @param body
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    techniqueAgeGroupsDeleteTechnique(body?: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<CommonResult>;
    techniqueAgeGroupsDeleteTechnique(body?: number, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<CommonResult>>;
    techniqueAgeGroupsDeleteTechnique(body?: number, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<CommonResult>>;
    /**
     * Get the age group guidiance that has been filled out for a technique. (INNER JOIN)
     * @param TechniqueID
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    techniqueAgeGroupsSelectInner(TechniqueID?: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<Array<TechniqueAgeGroupDetail>>;
    techniqueAgeGroupsSelectInner(TechniqueID?: number, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<Array<TechniqueAgeGroupDetail>>>;
    techniqueAgeGroupsSelectInner(TechniqueID?: number, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<Array<TechniqueAgeGroupDetail>>>;
    /**
     * For a technique, get the age group guidiance regardless of whether it exists or not. (OUTER JOIN)
     * @param TechniqueID
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    techniqueAgeGroupsSelectOuter(TechniqueID?: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<Array<TechniqueAgeGroupDetail>>;
    techniqueAgeGroupsSelectOuter(TechniqueID?: number, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<Array<TechniqueAgeGroupDetail>>>;
    techniqueAgeGroupsSelectOuter(TechniqueID?: number, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<Array<TechniqueAgeGroupDetail>>>;
    /**
     * Update the achievement guidance for a technique.
     * @param TechniqueAgeGroupEdit
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    techniqueAgeGroupsUpdate(TechniqueAgeGroupEdit?: Array<TechniqueAgeGroupEdit>, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<CommonResult>;
    techniqueAgeGroupsUpdate(TechniqueAgeGroupEdit?: Array<TechniqueAgeGroupEdit>, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<CommonResult>>;
    techniqueAgeGroupsUpdate(TechniqueAgeGroupEdit?: Array<TechniqueAgeGroupEdit>, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<CommonResult>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<TechniqueAchievementService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<TechniqueAchievementService>;
}
