/**
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * Do not edit the class manually.
 *
 * Jellyfin API
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */
import type { Configuration } from '../configuration';
import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios';
import { type RequestArgs, BaseAPI } from '../base';
import type { BaseItemDto } from '../models';
import type { BaseItemDtoQueryResult } from '../models';
import type { BaseItemKind } from '../models';
import type { ImageType } from '../models';
import type { ItemFields } from '../models';
import type { ItemSortBy } from '../models';
import type { SortOrder } from '../models';
/**
 * MusicGenresApi - axios parameter creator
 * @export
 */
export declare const MusicGenresApiAxiosParamCreator: (configuration?: Configuration) => {
    /**
     *
     * @summary Gets a music genre, by name.
     * @param {string} genreName The genre name.
     * @param {string} [userId] Optional. Filter by user id, and attach user data.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getMusicGenre: (genreName: string, userId?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     *
     * @summary Gets all music genres from a given item, folder, or the entire library.
     * @param {number} [startIndex] Optional. The record index to start at. All items with a lower index will be dropped from the results.
     * @param {number} [limit] Optional. The maximum number of records to return.
     * @param {string} [searchTerm] The search term.
     * @param {string} [parentId] Specify this to localize the search to a specific item or folder. Omit to use the root.
     * @param {Array<ItemFields>} [fields] Optional. Specify additional fields of information to return in the output.
     * @param {Array<BaseItemKind>} [excludeItemTypes] Optional. If specified, results will be filtered out based on item type. This allows multiple, comma delimited.
     * @param {Array<BaseItemKind>} [includeItemTypes] Optional. If specified, results will be filtered in based on item type. This allows multiple, comma delimited.
     * @param {boolean} [isFavorite] Optional filter by items that are marked as favorite, or not.
     * @param {number} [imageTypeLimit] Optional, the max number of images to return, per image type.
     * @param {Array<ImageType>} [enableImageTypes] Optional. The image types to include in the output.
     * @param {string} [userId] User id.
     * @param {string} [nameStartsWithOrGreater] Optional filter by items whose name is sorted equally or greater than a given input string.
     * @param {string} [nameStartsWith] Optional filter by items whose name is sorted equally than a given input string.
     * @param {string} [nameLessThan] Optional filter by items whose name is equally or lesser than a given input string.
     * @param {Array<ItemSortBy>} [sortBy] Optional. Specify one or more sort orders, comma delimited.
     * @param {Array<SortOrder>} [sortOrder] Sort Order - Ascending,Descending.
     * @param {boolean} [enableImages] Optional, include image information in output.
     * @param {boolean} [enableTotalRecordCount] Optional. Include total record count.
     * @param {*} [options] Override http request option.
     * @deprecated
     * @throws {RequiredError}
     */
    getMusicGenres: (startIndex?: number, limit?: number, searchTerm?: string, parentId?: string, fields?: Array<ItemFields>, excludeItemTypes?: Array<BaseItemKind>, includeItemTypes?: Array<BaseItemKind>, isFavorite?: boolean, imageTypeLimit?: number, enableImageTypes?: Array<ImageType>, userId?: string, nameStartsWithOrGreater?: string, nameStartsWith?: string, nameLessThan?: string, sortBy?: Array<ItemSortBy>, sortOrder?: Array<SortOrder>, enableImages?: boolean, enableTotalRecordCount?: boolean, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
};
/**
 * MusicGenresApi - functional programming interface
 * @export
 */
export declare const MusicGenresApiFp: (configuration?: Configuration) => {
    /**
     *
     * @summary Gets a music genre, by name.
     * @param {string} genreName The genre name.
     * @param {string} [userId] Optional. Filter by user id, and attach user data.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getMusicGenre(genreName: string, userId?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BaseItemDto>>;
    /**
     *
     * @summary Gets all music genres from a given item, folder, or the entire library.
     * @param {number} [startIndex] Optional. The record index to start at. All items with a lower index will be dropped from the results.
     * @param {number} [limit] Optional. The maximum number of records to return.
     * @param {string} [searchTerm] The search term.
     * @param {string} [parentId] Specify this to localize the search to a specific item or folder. Omit to use the root.
     * @param {Array<ItemFields>} [fields] Optional. Specify additional fields of information to return in the output.
     * @param {Array<BaseItemKind>} [excludeItemTypes] Optional. If specified, results will be filtered out based on item type. This allows multiple, comma delimited.
     * @param {Array<BaseItemKind>} [includeItemTypes] Optional. If specified, results will be filtered in based on item type. This allows multiple, comma delimited.
     * @param {boolean} [isFavorite] Optional filter by items that are marked as favorite, or not.
     * @param {number} [imageTypeLimit] Optional, the max number of images to return, per image type.
     * @param {Array<ImageType>} [enableImageTypes] Optional. The image types to include in the output.
     * @param {string} [userId] User id.
     * @param {string} [nameStartsWithOrGreater] Optional filter by items whose name is sorted equally or greater than a given input string.
     * @param {string} [nameStartsWith] Optional filter by items whose name is sorted equally than a given input string.
     * @param {string} [nameLessThan] Optional filter by items whose name is equally or lesser than a given input string.
     * @param {Array<ItemSortBy>} [sortBy] Optional. Specify one or more sort orders, comma delimited.
     * @param {Array<SortOrder>} [sortOrder] Sort Order - Ascending,Descending.
     * @param {boolean} [enableImages] Optional, include image information in output.
     * @param {boolean} [enableTotalRecordCount] Optional. Include total record count.
     * @param {*} [options] Override http request option.
     * @deprecated
     * @throws {RequiredError}
     */
    getMusicGenres(startIndex?: number, limit?: number, searchTerm?: string, parentId?: string, fields?: Array<ItemFields>, excludeItemTypes?: Array<BaseItemKind>, includeItemTypes?: Array<BaseItemKind>, isFavorite?: boolean, imageTypeLimit?: number, enableImageTypes?: Array<ImageType>, userId?: string, nameStartsWithOrGreater?: string, nameStartsWith?: string, nameLessThan?: string, sortBy?: Array<ItemSortBy>, sortOrder?: Array<SortOrder>, enableImages?: boolean, enableTotalRecordCount?: boolean, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BaseItemDtoQueryResult>>;
};
/**
 * MusicGenresApi - factory interface
 * @export
 */
export declare const MusicGenresApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
    /**
     *
     * @summary Gets a music genre, by name.
     * @param {MusicGenresApiGetMusicGenreRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getMusicGenre(requestParameters: MusicGenresApiGetMusicGenreRequest, options?: RawAxiosRequestConfig): AxiosPromise<BaseItemDto>;
    /**
     *
     * @summary Gets all music genres from a given item, folder, or the entire library.
     * @param {MusicGenresApiGetMusicGenresRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @deprecated
     * @throws {RequiredError}
     */
    getMusicGenres(requestParameters?: MusicGenresApiGetMusicGenresRequest, options?: RawAxiosRequestConfig): AxiosPromise<BaseItemDtoQueryResult>;
};
/**
 * Request parameters for getMusicGenre operation in MusicGenresApi.
 * @export
 * @interface MusicGenresApiGetMusicGenreRequest
 */
export interface MusicGenresApiGetMusicGenreRequest {
    /**
     * The genre name.
     * @type {string}
     * @memberof MusicGenresApiGetMusicGenre
     */
    readonly genreName: string;
    /**
     * Optional. Filter by user id, and attach user data.
     * @type {string}
     * @memberof MusicGenresApiGetMusicGenre
     */
    readonly userId?: string;
}
/**
 * Request parameters for getMusicGenres operation in MusicGenresApi.
 * @export
 * @interface MusicGenresApiGetMusicGenresRequest
 */
export interface MusicGenresApiGetMusicGenresRequest {
    /**
     * Optional. The record index to start at. All items with a lower index will be dropped from the results.
     * @type {number}
     * @memberof MusicGenresApiGetMusicGenres
     */
    readonly startIndex?: number;
    /**
     * Optional. The maximum number of records to return.
     * @type {number}
     * @memberof MusicGenresApiGetMusicGenres
     */
    readonly limit?: number;
    /**
     * The search term.
     * @type {string}
     * @memberof MusicGenresApiGetMusicGenres
     */
    readonly searchTerm?: string;
    /**
     * Specify this to localize the search to a specific item or folder. Omit to use the root.
     * @type {string}
     * @memberof MusicGenresApiGetMusicGenres
     */
    readonly parentId?: string;
    /**
     * Optional. Specify additional fields of information to return in the output.
     * @type {Array<ItemFields>}
     * @memberof MusicGenresApiGetMusicGenres
     */
    readonly fields?: Array<ItemFields>;
    /**
     * Optional. If specified, results will be filtered out based on item type. This allows multiple, comma delimited.
     * @type {Array<BaseItemKind>}
     * @memberof MusicGenresApiGetMusicGenres
     */
    readonly excludeItemTypes?: Array<BaseItemKind>;
    /**
     * Optional. If specified, results will be filtered in based on item type. This allows multiple, comma delimited.
     * @type {Array<BaseItemKind>}
     * @memberof MusicGenresApiGetMusicGenres
     */
    readonly includeItemTypes?: Array<BaseItemKind>;
    /**
     * Optional filter by items that are marked as favorite, or not.
     * @type {boolean}
     * @memberof MusicGenresApiGetMusicGenres
     */
    readonly isFavorite?: boolean;
    /**
     * Optional, the max number of images to return, per image type.
     * @type {number}
     * @memberof MusicGenresApiGetMusicGenres
     */
    readonly imageTypeLimit?: number;
    /**
     * Optional. The image types to include in the output.
     * @type {Array<ImageType>}
     * @memberof MusicGenresApiGetMusicGenres
     */
    readonly enableImageTypes?: Array<ImageType>;
    /**
     * User id.
     * @type {string}
     * @memberof MusicGenresApiGetMusicGenres
     */
    readonly userId?: string;
    /**
     * Optional filter by items whose name is sorted equally or greater than a given input string.
     * @type {string}
     * @memberof MusicGenresApiGetMusicGenres
     */
    readonly nameStartsWithOrGreater?: string;
    /**
     * Optional filter by items whose name is sorted equally than a given input string.
     * @type {string}
     * @memberof MusicGenresApiGetMusicGenres
     */
    readonly nameStartsWith?: string;
    /**
     * Optional filter by items whose name is equally or lesser than a given input string.
     * @type {string}
     * @memberof MusicGenresApiGetMusicGenres
     */
    readonly nameLessThan?: string;
    /**
     * Optional. Specify one or more sort orders, comma delimited.
     * @type {Array<ItemSortBy>}
     * @memberof MusicGenresApiGetMusicGenres
     */
    readonly sortBy?: Array<ItemSortBy>;
    /**
     * Sort Order - Ascending,Descending.
     * @type {Array<SortOrder>}
     * @memberof MusicGenresApiGetMusicGenres
     */
    readonly sortOrder?: Array<SortOrder>;
    /**
     * Optional, include image information in output.
     * @type {boolean}
     * @memberof MusicGenresApiGetMusicGenres
     */
    readonly enableImages?: boolean;
    /**
     * Optional. Include total record count.
     * @type {boolean}
     * @memberof MusicGenresApiGetMusicGenres
     */
    readonly enableTotalRecordCount?: boolean;
}
/**
 * MusicGenresApi - object-oriented interface
 * @export
 * @class MusicGenresApi
 * @extends {BaseAPI}
 */
export declare class MusicGenresApi extends BaseAPI {
    /**
     *
     * @summary Gets a music genre, by name.
     * @param {MusicGenresApiGetMusicGenreRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof MusicGenresApi
     */
    getMusicGenre(requestParameters: MusicGenresApiGetMusicGenreRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<BaseItemDto, any>>;
    /**
     *
     * @summary Gets all music genres from a given item, folder, or the entire library.
     * @param {MusicGenresApiGetMusicGenresRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @deprecated
     * @throws {RequiredError}
     * @memberof MusicGenresApi
     */
    getMusicGenres(requestParameters?: MusicGenresApiGetMusicGenresRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<BaseItemDtoQueryResult, any>>;
}
