/**
 * soccr.io API
 * An ASP.NET Core Web API for managing Soccer items
 *
 * The version of the OpenAPI document: v1
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import { HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { CommonResult } from '../model/models';
import { PracticePlanApplication } from '../model/models';
import { PracticePlanApplicationTreeSport } from '../model/models';
import { PracticePlanAssignmentUpdate } from '../model/models';
import { PracticePlanCourseware } from '../model/models';
import { PracticePlanCurrentPosition } from '../model/models';
import { PracticePlanDetail } from '../model/models';
import { PracticePlanFlatApplication } from '../model/models';
import { PracticePlanRequest } from '../model/models';
import { PracticePlanStatus } from '../model/models';
import { PracticePlanTechniqueDetail } from '../model/models';
import { PracticePlanType } from '../model/models';
import { TeamGroupMemberTreeNode } from '../model/models';
import { TechniqueDetailed } from '../model/models';
import { Configuration } from '../configuration';
export interface PracticePlanServiceInterface {
    defaultHeaders: HttpHeaders;
    configuration: Configuration;
    /**
     *
     *
     */
    emptyPracticePlanRequest(extraHttpRequestParams?: any): Observable<PracticePlanRequest>;
    /**
     *
     *
     * @param PPTID
     */
    planApplicationDeleteItem(PPTID?: number, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param PracticePlanID
     */
    planApplicationDeletePlan(PracticePlanID?: number, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param PracticePlanID
     */
    planApplicationDetails(PracticePlanID?: number, extraHttpRequestParams?: any): Observable<Array<PracticePlanApplicationTreeSport>>;
    /**
     *
     *
     * @param PracticePlanID
     */
    planApplicationDetailsFlat(PracticePlanID?: number, extraHttpRequestParams?: any): Observable<Array<PracticePlanFlatApplication>>;
    /**
     *
     *
     * @param PracticePlanTechniqueDetail
     */
    planApplicationInsert(PracticePlanTechniqueDetail?: PracticePlanTechniqueDetail, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param PracticePlanRequest
     */
    planApplicationOptionsFlat(PracticePlanRequest?: PracticePlanRequest, extraHttpRequestParams?: any): Observable<Array<PracticePlanFlatApplication>>;
    /**
     *
     *
     * @param PracticePlanRequest
     */
    planApplicationOptionsTree(PracticePlanRequest?: PracticePlanRequest, extraHttpRequestParams?: any): Observable<Array<PracticePlanApplicationTreeSport>>;
    /**
     *
     *
     * @param PracticePlanID
     * @param SearchText
     */
    planApplicationSearch(PracticePlanID?: number, SearchText?: string, extraHttpRequestParams?: any): Observable<Array<PracticePlanTechniqueDetail>>;
    /**
     *
     *
     * @param PracticePlanID
     * @param TechniqueTypeID
     * @param TechniqueID
     * @param TSID
     * @param MuscleGroupID
     * @param ExerciseClassID
     */
    planApplicationSelectFirst(PracticePlanID?: number, TechniqueTypeID?: number, TechniqueID?: number, TSID?: number, MuscleGroupID?: number, ExerciseClassID?: number, extraHttpRequestParams?: any): Observable<TechniqueDetailed>;
    /**
     *
     *
     * @param PracticePlanID
     * @param TechniqueTypeID
     * @param TechniqueID
     * @param TSID
     * @param MuscleGroupID
     * @param ExerciseClassID
     */
    planApplicationSelectLast(PracticePlanID?: number, TechniqueTypeID?: number, TechniqueID?: number, TSID?: number, MuscleGroupID?: number, ExerciseClassID?: number, extraHttpRequestParams?: any): Observable<TechniqueDetailed>;
    /**
     *
     *
     * @param PracticePlanID
     */
    planApplicationSelectList(PracticePlanID?: number, extraHttpRequestParams?: any): Observable<Array<PracticePlanTechniqueDetail>>;
    /**
     *
     *
     * @param PracticePlanID
     * @param TechniqueTypeID
     * @param TechniqueID
     * @param TSID
     * @param MuscleGroupID
     * @param ExerciseClassID
     */
    planApplicationSelectNext(PracticePlanID?: number, TechniqueTypeID?: number, TechniqueID?: number, TSID?: number, MuscleGroupID?: number, ExerciseClassID?: number, extraHttpRequestParams?: any): Observable<TechniqueDetailed>;
    /**
     *
     *
     * @param PracticePlanID
     * @param TechniqueTypeID
     * @param TechniqueID
     * @param TSID
     * @param MuscleGroupID
     * @param ExerciseClassID
     */
    planApplicationSelectOrderedPosition(PracticePlanID?: number, TechniqueTypeID?: number, TechniqueID?: number, TSID?: number, MuscleGroupID?: number, ExerciseClassID?: number, extraHttpRequestParams?: any): Observable<PracticePlanCurrentPosition>;
    /**
     *
     *
     * @param PracticePlanID
     * @param TechniqueTypeID
     * @param TechniqueID
     * @param TSID
     * @param MuscleGroupID
     * @param ExerciseClassID
     */
    planApplicationSelectPrev(PracticePlanID?: number, TechniqueTypeID?: number, TechniqueID?: number, TSID?: number, MuscleGroupID?: number, ExerciseClassID?: number, extraHttpRequestParams?: any): Observable<TechniqueDetailed>;
    /**
     *
     *
     * @param PracticePlanTechniqueDetail
     */
    planApplicationUpdate(PracticePlanTechniqueDetail?: PracticePlanTechniqueDetail, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param PracticePlanApplication
     */
    planApplicationUpdateBulk(PracticePlanApplication?: Array<PracticePlanApplication>, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param PracticePlanID
     */
    planAssignmentClear(PracticePlanID?: number, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param PracticePlanAssignmentUpdate
     */
    planAssignmentUpdateBulk(PracticePlanAssignmentUpdate?: Array<PracticePlanAssignmentUpdate>, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param UserID
     * @param PracticePlanID
     */
    planAssignmentUserPlanOptionsFlat(UserID?: number, PracticePlanID?: number, extraHttpRequestParams?: any): Observable<Array<TeamGroupMemberTreeNode>>;
    /**
     *
     *
     * @param UserID
     * @param PracticePlanID
     */
    planAssignmentUserPlanOptionsTree(UserID?: number, PracticePlanID?: number, extraHttpRequestParams?: any): Observable<Array<TeamGroupMemberTreeNode>>;
    /**
     *
     *
     * @param UserID
     * @param TeamID
     * @param PracticePlanID
     */
    planAssignmentUserTeamPlanOptionsFlat(UserID?: number, TeamID?: number, PracticePlanID?: number, extraHttpRequestParams?: any): Observable<Array<TeamGroupMemberTreeNode>>;
    /**
     *
     *
     * @param UserID
     * @param TeamID
     * @param PracticePlanID
     */
    planAssignmentUserTeamPlanOptionsTree(UserID?: number, TeamID?: number, PracticePlanID?: number, extraHttpRequestParams?: any): Observable<Array<TeamGroupMemberTreeNode>>;
    /**
     *
     *
     * @param PracticePlanID
     * @param OneTimeKey
     */
    plansCheckLogin(PracticePlanID?: number, OneTimeKey?: string, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param PracticePlanID
     */
    plansDelete(PracticePlanID?: number, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param PracticePlanID
     * @param OneTimeKey
     */
    plansDeleteByKey(PracticePlanID?: number, OneTimeKey?: string, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param PracticePlanDetail
     */
    plansInsert(PracticePlanDetail?: PracticePlanDetail, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param SearchText
     */
    plansSearchByAuthor(SearchText?: string, extraHttpRequestParams?: any): Observable<Array<PracticePlanDetail>>;
    /**
     *
     *
     * @param PracticePlanID
     */
    plansSearchByID(PracticePlanID?: string, extraHttpRequestParams?: any): Observable<Array<PracticePlanDetail>>;
    /**
     *
     *
     * @param UserID
     */
    plansSelectActiveForUser(UserID?: number, extraHttpRequestParams?: any): Observable<Array<PracticePlanDetail>>;
    /**
     *
     *
     */
    plansSelectAll(extraHttpRequestParams?: any): Observable<Array<PracticePlanDetail>>;
    /**
     *
     *
     * @param UserID
     */
    plansSelectAllForUser(UserID?: number, extraHttpRequestParams?: any): Observable<Array<PracticePlanDetail>>;
    /**
     *
     *
     * @param UserID
     * @param OwnershipFilter
     * @param StatusFilter
     */
    plansSelectAllForUserFilter(UserID?: number, OwnershipFilter?: number, StatusFilter?: number, extraHttpRequestParams?: any): Observable<Array<PracticePlanDetail>>;
    /**
     *
     *
     * @param SportID
     * @param TeamMemberID
     * @param UserID
     * @param IncludeUnreleased
     */
    plansSelectCourseWare(SportID?: number, TeamMemberID?: number, UserID?: number, IncludeUnreleased?: boolean, extraHttpRequestParams?: any): Observable<Array<PracticePlanCourseware>>;
    /**
     *
     *
     * @param PracticePlanID
     */
    plansSelectItem(PracticePlanID?: number, extraHttpRequestParams?: any): Observable<PracticePlanDetail>;
    /**
     *
     *
     * @param PracticePlanID
     */
    plansSelectItemPublic(PracticePlanID?: number, extraHttpRequestParams?: any): Observable<PracticePlanDetail>;
    /**
     *
     *
     */
    plansSelectSitePlans(extraHttpRequestParams?: any): Observable<Array<PracticePlanDetail>>;
    /**
     *
     *
     * @param PracticePlanDetail
     */
    plansUpdate(PracticePlanDetail?: PracticePlanDetail, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     */
    practicePlanStatusList(extraHttpRequestParams?: any): Observable<Array<PracticePlanStatus>>;
    /**
     *
     *
     */
    practicePlanTypeList(extraHttpRequestParams?: any): Observable<Array<PracticePlanType>>;
    /**
     *
     *
     * @param TargetIndex
     * @param Subject
     * @param Body
     * @param IsHtml
     */
    sendPracticePlanEmailAsync(TargetIndex?: number, Subject?: string, Body?: string, IsHtml?: boolean, extraHttpRequestParams?: any): Observable<{}>;
}
