/**
 * 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 { AcquisitionMethod } from '../model/models';
import { CloudData } from '../model/models';
import { CommonResult } from '../model/models';
import { ContentTypeEntry } from '../model/models';
import { ContextEntry } from '../model/models';
import { DifficultyLevel } from '../model/models';
import { InstructionMethod } from '../model/models';
import { PatternType } from '../model/models';
import { PossessionState } from '../model/models';
import { ReliabilityLevel } from '../model/models';
import { RiskLevel } from '../model/models';
import { SkillLevel } from '../model/models';
import { Sport } from '../model/models';
import { TacticalPhase } from '../model/models';
import { TacticalPitchPosition } from '../model/models';
import { TargetIndexEmailPayload } from '../model/models';
import { TechniqueApplication } from '../model/models';
import { TechniqueApplicationRequest } from '../model/models';
import { TechniqueApplicationUpdate } from '../model/models';
import { TechniqueAutoComplete } from '../model/models';
import { TechniqueClass } from '../model/models';
import { TechniqueClassSection } from '../model/models';
import { TechniqueDashboard } from '../model/models';
import { TechniqueDetailed } from '../model/models';
import { TechniqueForUpdate } from '../model/models';
import { TechniqueListCurrentPosition } from '../model/models';
import { TechniquePhase } from '../model/models';
import { TechniquePhaseUpdate } from '../model/models';
import { TechniqueSearchInput } from '../model/models';
import { TechniqueSeriesNavigationDetail } from '../model/models';
import { TechniqueShort } from '../model/models';
import { TechniqueStatus } from '../model/models';
import { TechniqueType } from '../model/models';
import { Configuration } from '../configuration';
export interface TechniquesServiceInterface {
    defaultHeaders: HttpHeaders;
    configuration: Configuration;
    /**
     * Get Acquisition Methods
     *
     */
    acquisitionMethods(extraHttpRequestParams?: any): Observable<Array<AcquisitionMethod>>;
    /**
     * Get Content Types
     *
     */
    contentTypes(extraHttpRequestParams?: any): Observable<Array<ContentTypeEntry>>;
    /**
     * Get Difficulty Levels
     *
     */
    difficultyLevels(extraHttpRequestParams?: any): Observable<Array<DifficultyLevel>>;
    /**
     * Test whether database calls are working.  Should return an lengthy environment string.
     *
     */
    getDatabaseTest(extraHttpRequestParams?: any): Observable<string>;
    /**
     * Test whether valid API data is coming back. Should return \&quot;1|OK\&quot; as a string.
     *
     */
    getTechniquesTest(extraHttpRequestParams?: any): Observable<string>;
    /**
     * Get Instruction Methods
     *
     */
    instructionMethods(extraHttpRequestParams?: any): Observable<Array<InstructionMethod>>;
    /**
     * Get Pattern Types
     *
     */
    patternTypes(extraHttpRequestParams?: any): Observable<Array<PatternType>>;
    /**
     * Get the Possession States
     *
     */
    possessionStateSelectAll(extraHttpRequestParams?: any): Observable<Array<PossessionState>>;
    /**
     * Get reliability Levels
     *
     */
    reliabilityLevels(extraHttpRequestParams?: any): Observable<Array<ReliabilityLevel>>;
    /**
     * Get Risk Levels
     *
     */
    riskLevels(extraHttpRequestParams?: any): Observable<Array<RiskLevel>>;
    /**
     * Select all the entries for a given context (\&quot;TECHNIQUE\&quot;,etc.)  This might have a lot of entries and might not perform well. Might need to be paged.
     *
     * @param Context
     */
    selectTechniqueContextEntriesForContext(Context?: string, extraHttpRequestParams?: any): Observable<Array<ContextEntry>>;
    /**
     * Select all the context types.
     *
     */
    selectTechniqueContextTypes(extraHttpRequestParams?: any): Observable<Array<string>>;
    /**
     *
     *
     * @param TargetIndexEmailPayload
     */
    sendTechniqueEmailAsync(TargetIndexEmailPayload?: TargetIndexEmailPayload, extraHttpRequestParams?: any): Observable<{}>;
    /**
     * Get Skill Levels
     *
     */
    skillLevels(extraHttpRequestParams?: any): Observable<Array<SkillLevel>>;
    /**
     * Get Sports
     *
     * @param IncludeChildren
     * @param IncludeAny
     */
    sportsSelectAll(IncludeChildren?: boolean, IncludeAny?: boolean, extraHttpRequestParams?: any): Observable<Array<Sport>>;
    /**
     * Get a sport.
     *
     * @param SportID
     */
    sportsSelectItem(SportID?: number, extraHttpRequestParams?: any): Observable<Sport>;
    /**
     *
     *
     */
    tacticalPhasesSelectAll(extraHttpRequestParams?: any): Observable<Array<TacticalPhase>>;
    /**
     *
     *
     * @param SportID
     */
    tacticalPitchPositionSelectAll(SportID?: number, extraHttpRequestParams?: any): Observable<Array<TacticalPitchPosition>>;
    /**
     *
     *
     * @param body
     */
    techniqueApplicationDeleteByApplication(body?: number, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param body
     */
    techniqueApplicationDeleteByUsage(body?: number, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     * Delete Technique Application for a Technique
     *
     * @param body
     */
    techniqueApplicationDeleteTechnique(body?: number, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     * Get list of Technique Application for a Technique
     *
     * @param TechniqueID
     */
    techniqueApplicationSelectList(TechniqueID?: number, extraHttpRequestParams?: any): Observable<Array<TechniqueApplication>>;
    /**
     *
     *
     * @param TechniqueTypeID
     * @param TSID
     */
    techniqueApplicationSeriesTechniques(TechniqueTypeID?: number, TSID?: number, extraHttpRequestParams?: any): Observable<Array<TechniqueDetailed>>;
    /**
     *
     *
     * @param TAID
     * @param Direction
     * @param TheEnd
     */
    techniqueApplicationSeriesTechniquesMove(TAID?: number, Direction?: boolean, TheEnd?: boolean, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     * Update Technique Application (Bulk)
     *
     * @param TechniqueApplicationUpdate
     */
    techniqueApplicationUpdate(TechniqueApplicationUpdate?: Array<TechniqueApplicationUpdate>, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     * Change the sort order for an item. Move it up or down.
     *
     * @param TAID
     * @param KeyTechnique
     */
    techniqueApplicationUpdateKeyTechnique(TAID?: number, KeyTechnique?: boolean, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     * Change the sort order for an item. Move it up or down.
     *
     * @param TAID
     * @param Direction
     */
    techniqueApplicationUpdateSortOrder(TAID?: number, Direction?: number, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     * Spot move a Technique Application
     *
     * @param TAIDSrc
     * @param TAIDTgt
     * @param TSID
     * @param Direction
     * @param Debug
     */
    techniqueApplicationUpdateSpotMove(TAIDSrc?: number, TAIDTgt?: number, TSID?: number, Direction?: number, Debug?: boolean, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param SportID
     * @param IncludeAny
     * @param SearchText
     */
    techniqueChipAutoCompleteDefaultsForSport(SportID?: number, IncludeAny?: boolean, SearchText?: string, extraHttpRequestParams?: any): Observable<Array<string>>;
    /**
     *
     *
     * @param SportID
     */
    techniqueClassesForSportPositions(SportID?: number, extraHttpRequestParams?: any): Observable<Array<TechniqueClass>>;
    /**
     * Get all Technique Classes (probably needs sports filter, defaults to 1)
     *
     */
    techniqueClassesSelectAll(extraHttpRequestParams?: any): Observable<Array<TechniqueClass>>;
    /**
     * Get a Technique Class
     *
     * @param TechniqueClassID
     */
    techniqueClassesSelectItem(TechniqueClassID?: number, extraHttpRequestParams?: any): Observable<TechniqueClass>;
    /**
     * Select all Technique Classes for a Sport
     *
     * @param SportID
     */
    techniqueClassesSelectSport(SportID?: number, extraHttpRequestParams?: any): Observable<Array<TechniqueClass>>;
    /**
     * Copy a technique including all it\&#39;s application references. Not the whole thing, but enough for it to show up in all the same places.
     *
     * @param body
     */
    techniqueCopy(body?: number, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     * Delete the Technique including all it\&#39;s satellite/foreign key reference data. This smokes the whole thing.
     *
     * @param body
     */
    techniqueDelete(body?: number, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     * Create a new Technique. Returns a result object where the ApplicableKey is the new TechniqueID.
     *
     * @param TechniqueForUpdate
     */
    techniqueInsert(TechniqueForUpdate?: TechniqueForUpdate, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param TechniquePhaseUpdate
     */
    techniquePhaseBulkInsertUpdate(TechniquePhaseUpdate?: Array<TechniquePhaseUpdate>, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param TechniqueID
     */
    techniquePhaseDeleteForTechnique(TechniqueID?: number, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param TPID
     */
    techniquePhaseDeleteItem(TPID?: number, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param TechniqueID
     */
    techniquePhasesSelectItem(TechniqueID?: number, extraHttpRequestParams?: any): Observable<Array<TechniquePhase>>;
    /**
     * Get Technique Status values
     *
     */
    techniqueStatusList(extraHttpRequestParams?: any): Observable<Array<TechniqueStatus>>;
    /**
     *
     *
     * @param TechniqueTypeID
     * @param TSID
     */
    techniqueTagCloudForApplication(TechniqueTypeID?: number, TSID?: number, extraHttpRequestParams?: any): Observable<Array<CloudData>>;
    /**
     *
     *
     */
    techniqueTagCloudForSite(extraHttpRequestParams?: any): Observable<Array<CloudData>>;
    /**
     *
     *
     * @param SportID
     * @param IncludeAny
     * @param SearchText
     */
    techniqueTagCloudForSport(SportID?: number, IncludeAny?: boolean, SearchText?: string, extraHttpRequestParams?: any): Observable<Array<CloudData>>;
    /**
     * Get Active Technique Classes
     *
     * @param TechniqueClassID
     */
    techniqueTypesForClassSectionedActive(TechniqueClassID?: number, extraHttpRequestParams?: any): Observable<Array<TechniqueClassSection>>;
    /**
     * Get Active Technique Classes
     *
     * @param TechniqueClassID
     */
    techniqueTypesSelectActive(TechniqueClassID?: number, extraHttpRequestParams?: any): Observable<Array<TechniqueType>>;
    /**
     *
     *
     */
    techniqueTypesSelectAll(extraHttpRequestParams?: any): Observable<Array<TechniqueType>>;
    /**
     * Get all TechniqueTypes of the In-Process Status. (I have no idea what tha is...)
     *
     * @param TechniqueClassID
     */
    techniqueTypesSelectInProcess(TechniqueClassID?: number, extraHttpRequestParams?: any): Observable<Array<TechniqueType>>;
    /**
     * Get active TechniqueTypes for TechniqueClass.
     *
     * @param TechniqueClassID
     */
    techniqueTypesSelectInactive(TechniqueClassID?: number, extraHttpRequestParams?: any): Observable<Array<TechniqueType>>;
    /**
     * Get a Technique Type.
     *
     * @param TechniqueTypeID
     */
    techniqueTypesSelectItem(TechniqueTypeID?: number, extraHttpRequestParams?: any): Observable<TechniqueType>;
    /**
     * Get all TechniqueTypes of the Ready-To-Promote Status. (I have no idea what tha is...)
     *
     * @param TechniqueClassID
     */
    techniqueTypesSelectReadyToPromote(TechniqueClassID?: number, extraHttpRequestParams?: any): Observable<Array<TechniqueType>>;
    /**
     * Update the Technique.
     *
     * @param TechniqueForUpdate
     */
    techniqueUpdate(TechniqueForUpdate?: TechniqueForUpdate, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     * When using the editor, get the FIRST item by ID (should be 1, Cruyff Turn).
     *
     * @param TechniqueID
     */
    techniquesByIDSelectFirst(TechniqueID?: number, extraHttpRequestParams?: any): Observable<TechniqueDetailed>;
    /**
     * When using the editor, get the LAST item by ID.
     *
     * @param TechniqueID
     */
    techniquesByIDSelectLast(TechniqueID?: number, extraHttpRequestParams?: any): Observable<TechniqueDetailed>;
    /**
     * When using the editor, get the next item by ID.
     *
     * @param TechniqueID
     */
    techniquesByIDSelectNext(TechniqueID?: number, extraHttpRequestParams?: any): Observable<TechniqueDetailed>;
    /**
     * When using the editor, get the PREV item by ID.
     *
     * @param TechniqueID
     */
    techniquesByIDSelectPrev(TechniqueID?: number, extraHttpRequestParams?: any): Observable<TechniqueDetailed>;
    /**
     * Get Technique Dashboard information.
     *
     */
    techniquesDashboard(extraHttpRequestParams?: any): Observable<TechniqueDashboard>;
    /**
     * Search for a technique.
     *
     * @param TechniqueSearchInput
     */
    techniquesSearch(TechniqueSearchInput?: TechniqueSearchInput, extraHttpRequestParams?: any): Observable<Array<TechniqueDetailed>>;
    /**
     * Search for a technique by it\&#39;s ID.
     *
     * @param TechniqueTypeID
     * @param TechniqueID
     */
    techniquesSearchAutoCompleteByDot(TechniqueTypeID?: number, TechniqueID?: number, extraHttpRequestParams?: any): Observable<Array<TechniqueAutoComplete>>;
    /**
     * Search for a technique with auto-complete.
     *
     * @param SearchText
     */
    techniquesSearchAutoCompleteByName(SearchText?: string, extraHttpRequestParams?: any): Observable<Array<TechniqueAutoComplete>>;
    /**
     *
     *
     * @param TechniqueTypeID
     * @param TSID
     * @param MuscleGroupID
     * @param ExerciseClassID
     */
    techniquesSelectActive(TechniqueTypeID?: number, TSID?: number, MuscleGroupID?: number, ExerciseClassID?: number, extraHttpRequestParams?: any): Observable<Array<TechniqueShort>>;
    /**
     * Select all Techniques. This is a monster. Don\&#39;t use. Probably should be set to return nothing or eliminated as a method entirely.,
     *
     */
    techniquesSelectAll(extraHttpRequestParams?: any): Observable<Array<TechniqueShort>>;
    /**
     *
     *
     * @param SportID
     * @param TechniqueTypeID
     * @param TSID
     * @param TechniqueID
     */
    techniquesSelectAllForTechniqueTypeAttached(SportID?: number, TechniqueTypeID?: number, TSID?: number, TechniqueID?: number, extraHttpRequestParams?: any): Observable<Array<TechniqueShort>>;
    /**
     *
     *
     * @param SportID
     * @param TechniqueTypeID
     * @param TSID
     * @param TechniqueID
     */
    techniquesSelectAllForTechniqueTypeUnattached(SportID?: number, TechniqueTypeID?: number, TSID?: number, TechniqueID?: number, extraHttpRequestParams?: any): Observable<Array<TechniqueShort>>;
    /**
     * Select all Techniques that apply to an application as specified(limited to Technique Type, Series, Muscle Group, Exercise Class)
     *
     * @param TechniqueTypeID
     * @param TSID
     * @param MuscleGroupID
     * @param ExerciseClassID
     */
    techniquesSelectAllForType(TechniqueTypeID?: number, TSID?: number, MuscleGroupID?: number, ExerciseClassID?: number, extraHttpRequestParams?: any): Observable<Array<TechniqueShort>>;
    /**
     *
     *
     * @param TechniqueTypeID
     * @param MuscleGroupID
     * @param ExerciseClassID
     * @param TSID
     */
    techniquesSelectAllForTypeSeries(TechniqueTypeID?: number, MuscleGroupID?: number, ExerciseClassID?: number, TSID?: number, extraHttpRequestParams?: any): Observable<Array<TechniqueShort>>;
    /**
     *
     *
     * @param SportID
     * @param TechniqueClassID
     * @param TechniqueTypeID
     * @param TechniqueStatusID
     * @param PatternTypeID
     * @param ContentTypeID
     * @param TSID
     */
    techniquesSelectFilteredInner(SportID?: number, TechniqueClassID?: number, TechniqueTypeID?: number, TechniqueStatusID?: number, PatternTypeID?: number, ContentTypeID?: number, TSID?: number, extraHttpRequestParams?: any): Observable<Array<TechniqueShort>>;
    /**
     *
     *
     * @param SportID
     * @param TechniqueClassID
     * @param TechniqueTypeID
     * @param TechniqueStatusID
     * @param PatternTypeID
     * @param ContentTypeID
     * @param TSID
     */
    techniquesSelectFilteredOuter(SportID?: number, TechniqueClassID?: number, TechniqueTypeID?: number, TechniqueStatusID?: number, PatternTypeID?: number, ContentTypeID?: number, TSID?: number, extraHttpRequestParams?: any): Observable<Array<TechniqueShort>>;
    /**
     * Get the data to move to the FIRST position given where we are now.
     *
     * @param TechniqueTypeID
     * @param TechniqueID
     * @param TSID
     * @param MuscleGroupID
     * @param ExerciseClassID
     */
    techniquesSelectFirst(TechniqueTypeID?: number, TechniqueID?: number, TSID?: number, MuscleGroupID?: number, ExerciseClassID?: number, extraHttpRequestParams?: any): Observable<TechniqueDetailed>;
    /**
     * Select a Technique for edit. More details.
     *
     * @param TechniqueID
     */
    techniquesSelectForEdit(TechniqueID?: number, extraHttpRequestParams?: any): Observable<TechniqueDetailed>;
    /**
     * Select a Technique.
     *
     * @param TechniqueID
     */
    techniquesSelectItem(TechniqueID?: number, extraHttpRequestParams?: any): Observable<TechniqueDetailed>;
    /**
     * Select a Technique for a given application series.
     *
     * @param TechniqueTypeID
     * @param TSID
     * @param TechniqueID
     * @param MuscleGroupID
     * @param ExerciseClassID
     */
    techniquesSelectItemForApplicationSeries(TechniqueTypeID?: number, TSID?: number, TechniqueID?: number, MuscleGroupID?: number, ExerciseClassID?: number, extraHttpRequestParams?: any): Observable<TechniqueDetailed>;
    /**
     * Select the item (Technique) of the day.
     *
     * @param TechniqueTypeID
     * @param TSID
     * @param MuscleGroupID
     * @param ExerciseClassID
     */
    techniquesSelectItemOfTheDay(TechniqueTypeID?: number, TSID?: number, MuscleGroupID?: number, ExerciseClassID?: number, extraHttpRequestParams?: any): Observable<TechniqueDetailed>;
    /**
     * Select a random Technique.
     *
     * @param request_body
     */
    techniquesSelectItemRandom(request_body?: Array<number>, extraHttpRequestParams?: any): Observable<TechniqueDetailed>;
    /**
     * Get the data to move to the LAST position given where we are now.
     *
     * @param TechniqueTypeID
     * @param TechniqueID
     * @param TSID
     * @param MuscleGroupID
     * @param ExerciseClassID
     */
    techniquesSelectLast(TechniqueTypeID?: number, TechniqueID?: number, TSID?: number, MuscleGroupID?: number, ExerciseClassID?: number, extraHttpRequestParams?: any): Observable<TechniqueDetailed>;
    /**
     * Get a list of techniques as specified.
     *
     * @param TechniqueApplicationRequest
     */
    techniquesSelectListAsRequested(TechniqueApplicationRequest?: Array<TechniqueApplicationRequest>, extraHttpRequestParams?: any): Observable<Array<TechniqueDetailed>>;
    /**
     * Get the data to move to the NEXT position given where we are now.
     *
     * @param TechniqueTypeID
     * @param TechniqueID
     * @param TSID
     * @param MuscleGroupID
     * @param ExerciseClassID
     */
    techniquesSelectNext(TechniqueTypeID?: number, TechniqueID?: number, TSID?: number, MuscleGroupID?: number, ExerciseClassID?: number, extraHttpRequestParams?: any): Observable<TechniqueDetailed>;
    /**
     * Get the current position information given where we are now (are we at last, are we at first, how many are there, etc.)
     *
     * @param TechniqueTypeID
     * @param TechniqueID
     * @param TSID
     * @param MuscleGroupID
     * @param ExerciseClassID
     */
    techniquesSelectOrderedPosition(TechniqueTypeID?: number, TechniqueID?: number, TSID?: number, MuscleGroupID?: number, ExerciseClassID?: number, extraHttpRequestParams?: any): Observable<TechniqueListCurrentPosition>;
    /**
     * Get the data to move to the PREVIOUS position given where we are now.
     *
     * @param TechniqueTypeID
     * @param TechniqueID
     * @param TSID
     * @param MuscleGroupID
     * @param ExerciseClassID
     */
    techniquesSelectPrev(TechniqueTypeID?: number, TechniqueID?: number, TSID?: number, MuscleGroupID?: number, ExerciseClassID?: number, extraHttpRequestParams?: any): Observable<TechniqueDetailed>;
    /**
     * Get Technique Navigation information.
     *
     * @param TechniqueTypeID
     * @param TSID
     */
    techniquesTypeNavigation(TechniqueTypeID?: number, TSID?: number, extraHttpRequestParams?: any): Observable<TechniqueSeriesNavigationDetail>;
}
