import { Configuration } from './configuration';
import { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios';
import { RequestArgs, BaseAPI } from './base';
export interface ChoiceDtoV1 {
    'correctOptions': Array<OptionDtoV1>;
    'incorrectOptions'?: Array<OptionDtoV1>;
}
export interface CreateExerciseDtoV1 {
    'description': string;
    'languageCode': LanguageCode;
    'type': ExerciseType;
    'exercise': PronunciationDtoV1 | ChoiceDtoV1 | WordCloudDtoV1;
    'customProperties'?: object;
}
export interface ExerciseDescriptorDtoV1 {
    'id': string;
    'description': string;
    'languageCode': ExerciseDescriptorDtoV1LanguageCodeEnum;
    'type': ExerciseDescriptorDtoV1TypeEnum;
}
export declare const ExerciseDescriptorDtoV1LanguageCodeEnum: {
    readonly ar_idn: "ar-idn";
    readonly en: "en";
    readonly nl: "nl";
    readonly zh: "zh";
    readonly fr: "fr";
    readonly de: "de";
    readonly es: "es";
};
export declare type ExerciseDescriptorDtoV1LanguageCodeEnum = typeof ExerciseDescriptorDtoV1LanguageCodeEnum[keyof typeof ExerciseDescriptorDtoV1LanguageCodeEnum];
export declare const ExerciseDescriptorDtoV1TypeEnum: {
    readonly choice: "choice";
    readonly pronunciation: "pronunciation";
    readonly word_cloud: "word-cloud";
};
export declare type ExerciseDescriptorDtoV1TypeEnum = typeof ExerciseDescriptorDtoV1TypeEnum[keyof typeof ExerciseDescriptorDtoV1TypeEnum];
export interface ExerciseResponseDtoV1 {
    'id'?: string;
    'description': string;
    'languageCode': LanguageCode;
    'type': ExerciseType;
    'exercise': PronunciationDtoV1 | ChoiceDtoV1 | WordCloudDtoV1;
    'customProperties'?: object;
}
export declare const ExerciseType: {
    readonly choice: "choice";
    readonly pronunciation: "pronunciation";
    readonly word_cloud: "word-cloud";
};
export declare type ExerciseType = typeof ExerciseType[keyof typeof ExerciseType];
export declare const LanguageCode: {
    readonly ar_idn: "ar-idn";
    readonly en: "en";
    readonly nl: "nl";
    readonly zh: "zh";
    readonly fr: "fr";
    readonly de: "de";
    readonly es: "es";
};
export declare type LanguageCode = typeof LanguageCode[keyof typeof LanguageCode];
export interface OptionDtoV1 {
    'label': string;
    'words': Array<OptionWordDtoV1>;
}
export interface OptionWordDtoV1 {
    'label': string;
    'pronunciations': Array<PhonemeListDtoV1>;
}
export interface PhonemeEnableFeedbackDtoV1 {
    'phoneme': string;
    'evaluate'?: boolean;
}
export interface PhonemeListDtoV1 {
    'phonemes': Array<PhonemeEnableFeedbackDtoV1>;
}
export interface PronunciationDtoV1 {
    'words': Array<WordDtoV1>;
}
export interface ReplaceExerciseDtoV1 {
    'description': string;
    'languageCode': LanguageCode;
    'type': ExerciseType;
    'exercise': PronunciationDtoV1 | ChoiceDtoV1 | WordCloudDtoV1;
    'customProperties'?: object;
}
export interface WordCloudDtoV1 {
    'pronunciations': Array<PronunciationDtoV1>;
}
export interface WordDtoV1 {
    'label': string;
    'correctPronunciations': Array<PhonemeListDtoV1>;
    'incorrectPronunciations': Array<PhonemeListDtoV1>;
    'liaisonPhoneme'?: string;
    'evaluate'?: boolean;
}
export declare const ExercisesApiAxiosParamCreator: (configuration?: Configuration) => {
    createExercise: (createExerciseDtoV1: CreateExerciseDtoV1, options?: AxiosRequestConfig) => Promise<RequestArgs>;
    deleteExercise: (id: string, options?: AxiosRequestConfig) => Promise<RequestArgs>;
    getExercise: (id: string, options?: AxiosRequestConfig) => Promise<RequestArgs>;
    getExerciseList: (custom?: string, exerciseType?: 'choice' | 'pronunciation' | 'word-cloud', languageCode?: 'ar-idn' | 'en' | 'nl' | 'zh' | 'fr' | 'de' | 'es', options?: AxiosRequestConfig) => Promise<RequestArgs>;
    replaceExercise: (id: string, replaceExerciseDtoV1: ReplaceExerciseDtoV1, options?: AxiosRequestConfig) => Promise<RequestArgs>;
};
export declare const ExercisesApiFp: (configuration?: Configuration) => {
    createExercise(createExerciseDtoV1: CreateExerciseDtoV1, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ExerciseResponseDtoV1>>;
    deleteExercise(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
    getExercise(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ExerciseResponseDtoV1>>;
    getExerciseList(custom?: string, exerciseType?: 'choice' | 'pronunciation' | 'word-cloud', languageCode?: 'ar-idn' | 'en' | 'nl' | 'zh' | 'fr' | 'de' | 'es', options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<ExerciseDescriptorDtoV1>>>;
    replaceExercise(id: string, replaceExerciseDtoV1: ReplaceExerciseDtoV1, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ExerciseResponseDtoV1>>;
};
export declare const ExercisesApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
    createExercise(createExerciseDtoV1: CreateExerciseDtoV1, options?: any): AxiosPromise<ExerciseResponseDtoV1>;
    deleteExercise(id: string, options?: any): AxiosPromise<void>;
    getExercise(id: string, options?: any): AxiosPromise<ExerciseResponseDtoV1>;
    getExerciseList(custom?: string, exerciseType?: 'choice' | 'pronunciation' | 'word-cloud', languageCode?: 'ar-idn' | 'en' | 'nl' | 'zh' | 'fr' | 'de' | 'es', options?: any): AxiosPromise<Array<ExerciseDescriptorDtoV1>>;
    replaceExercise(id: string, replaceExerciseDtoV1: ReplaceExerciseDtoV1, options?: any): AxiosPromise<ExerciseResponseDtoV1>;
};
export declare class ExercisesApi extends BaseAPI {
    createExercise(createExerciseDtoV1: CreateExerciseDtoV1, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<ExerciseResponseDtoV1, any>>;
    deleteExercise(id: string, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any>>;
    getExercise(id: string, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<ExerciseResponseDtoV1, any>>;
    getExerciseList(custom?: string, exerciseType?: 'choice' | 'pronunciation' | 'word-cloud', languageCode?: 'ar-idn' | 'en' | 'nl' | 'zh' | 'fr' | 'de' | 'es', options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<ExerciseDescriptorDtoV1[], any>>;
    replaceExercise(id: string, replaceExerciseDtoV1: ReplaceExerciseDtoV1, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<ExerciseResponseDtoV1, any>>;
}
