/**
 * Fulfillment API
 *  - alpha: Currently developed API version. Subject to major changes. - beta: A semi-stable early access version. New features can be added. Breaking changes are possible. - stable: The API is recommended for use in production.  [Changelog](https://fulfillment-api.steve.niceshops.com/v2/docs/changelog.html)  All data is transferred in UTF-8 encoding.\\ The API uses stateless HTTP. No cookies have to be kept.\\ Authentication via OAuth2 client credentials flow.  [Privacy Policy](https://www.niceshops.com/en/dienstleistungen/data-privacy-policy)  [Fulfillment API PHP client @Packagist](https://packagist.org/packages/datenkraft/bb-fulfillment-api-php-client)
 *
 * The version of the OpenAPI document: v2.beta
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import type { Configuration } from '../configuration';
import type { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios';
import { RequestArgs, BaseAPI } from '../base';
import { PatchProduct } from '../models';
import { Product } from '../models';
import { ProductCollection } from '../models';
import { ProductJournalCollection } from '../models';
import { ProductStockReferenceCollection } from '../models';
/**
 * ProductApi - axios parameter creator
 * @export
 */
export declare const ProductApiAxiosParamCreator: (configuration?: Configuration) => {
    /**
     * Get a product by product number.
     * @summary Get a product by product number.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getProduct: (productNumber: string, shopCode?: string, options?: AxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Get a list of products.
     * @summary Get a list of products.
     * @param {number} [page] The page to read. Default is the first page.
     * @param {number} [pageSize] The maximum size per page is 100. Default is 100.
     * @param {'default' | 'totalCount'} [paginationMode] The paginationMode to use: - default: The total number of items in the collection will not be calculated. - totalCount: The total number of items in the collection will be calculated. This can mean loss of performance.
     * @param {string} [sortBy] Sort the results by one or more comma-separated sort criteria, with the criterion specified first having priority.  Available sort orders: - asc: ascending order - desc: descending order  Available fields for sorting: - productNumber - stocked - reserved - available - incoming - locked  The default sort order is stocked:desc.
     * @param {string} [filterShopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {string} [filterSearch] Filter for product search. \\ Usage: - Provide one or multiple search terms (min. 2 characters) to filter results. - Multiple search terms are separated by spaces. - The search is not case sensitive. - The search is enabled for the fields productTitle, productNumber and ean. - Each search term filters the response for products where at least one of the fields contains the search term. - For example, filter[search]&#x3D;\&#39;term1 term2\&#39; will filter the result for products where \&#39;term1\&#39; is found in any field and \&#39;term2\&#39; is also found in any field. If only \&#39;term1\&#39; or \&#39;term2\&#39; is found in the fields, the product is not included in the results.
     * @param {'self' | 'nice' | 'bundle'} [filterSource] Filter for product source.
     * @param {string} [filterProductNumber] Filter for product number(s) (comma-separated, max. 100).
     * @param {'_availableOrInStock' | '_notAvailableAndOutOfStock'} [filterProductAvailabilityStatus] Filter for productAvailabilityStatus \\ By default, all products are returned. \\ Use \&#39;_availableOrInStock\&#39; to only return products that are available or in stock. \\ Use \&#39;_notAvailableAndOutOfStock\&#39; to only return products that are not available and out of stock.
     * @param {'standard' | 'sample' | 'sellable_sample' | 'tester' | 'packing_material' | 'booking_seminar' | 'booking_appointment' | 'promo_material' | 'raw_material' | 'working_material' | 'service_principal' | 'service_ancillary' | 'inquiry_testdrive' | 'inquiry_raffle' | 'chilled_product' | 'limited_edition' | 'voucher_print' | 'voucher_digital' | 'bundle' | 'print_greetingcard' | 'personalized' | 'other_services'} [filterProductType] Filter for product type.
     * @param {boolean} [filterHasProductImage] A filter to only return products where a product image is present.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getProductCollection: (page?: number, pageSize?: number, paginationMode?: 'default' | 'totalCount', sortBy?: string, filterShopCode?: string, filterSearch?: string, filterSource?: 'self' | 'nice' | 'bundle', filterProductNumber?: string, filterProductAvailabilityStatus?: '_availableOrInStock' | '_notAvailableAndOutOfStock', filterProductType?: 'standard' | 'sample' | 'sellable_sample' | 'tester' | 'packing_material' | 'booking_seminar' | 'booking_appointment' | 'promo_material' | 'raw_material' | 'working_material' | 'service_principal' | 'service_ancillary' | 'inquiry_testdrive' | 'inquiry_raffle' | 'chilled_product' | 'limited_edition' | 'voucher_print' | 'voucher_digital' | 'bundle' | 'print_greetingcard' | 'personalized' | 'other_services', filterHasProductImage?: boolean, options?: AxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Read a journal collection for a specific product showing the history of stock changes. _Only products with the source \'self\' can be queried._
     * @summary Read a journal collection for a specific product showing the history of stock changes.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {number} [page] The page to read. Default is the first page.
     * @param {number} [pageSize] The maximum size per page is 100. Default is 100.
     * @param {'default' | 'totalCount'} [paginationMode] The paginationMode to use:\\ - default: The total number of items in the collection will not be calculated.\\ - totalCount: The total number of items in the collection will be calculated. This can mean loss of performance.
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients.\\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {string} [filterDateFrom] The start date (inclusive) in format Y-m-d (timezone CET/CEST) for which product journal entries should be returned.
     * @param {string} [filterDateTo] The end date (inclusive) in format Y-m-d (timezone CET/CEST) for which product journal entries should be returned.
     * @param {string} [filterReason] Filter journal entries for one or more reasons - expired: Taking an expired product off the books - damaged: Taking a damaged product off the books - own_withdrawl: Product taken for own use - correction: Manual correction - niceshops_order: Product sold via a shop from niceshops - inbound: Restocking the product - fulfillment: steve fulfilled an order - return: A customer sent the product back to our warehouse
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getProductJournalCollection: (productNumber: string, page?: number, pageSize?: number, paginationMode?: 'default' | 'totalCount', shopCode?: string, filterDateFrom?: string, filterDateTo?: string, filterReason?: string, options?: AxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Get a list of product stock references.
     * @summary Get a list of product stock references.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {number} [page] The page to read. Default is the first page.
     * @param {number} [pageSize] The maximum size per page is 100. Default is 100.
     * @param {'default' | 'totalCount'} [paginationMode] The paginationMode to use: - default: The total number of items in the collection will not be calculated. - totalCount: The total number of items in the collection will be calculated. This can mean loss of performance.
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {'reserved' | 'incoming'} [filterTypeCode] Filter for a specific stock reference type.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getProductStockReferenceCollection: (productNumber: string, page?: number, pageSize?: number, paginationMode?: 'default' | 'totalCount', shopCode?: string, filterTypeCode?: 'reserved' | 'incoming', options?: AxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Patch a product. \\ All fields in the request body are optional. Only provided fields will be updated.
     * @summary Patch a product.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {PatchProduct} patchProduct
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    patchProduct: (productNumber: string, patchProduct: PatchProduct, shopCode?: string, options?: AxiosRequestConfig) => Promise<RequestArgs>;
};
/**
 * ProductApi - functional programming interface
 * @export
 */
export declare const ProductApiFp: (configuration?: Configuration) => {
    /**
     * Get a product by product number.
     * @summary Get a product by product number.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getProduct(productNumber: string, shopCode?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Product>>;
    /**
     * Get a list of products.
     * @summary Get a list of products.
     * @param {number} [page] The page to read. Default is the first page.
     * @param {number} [pageSize] The maximum size per page is 100. Default is 100.
     * @param {'default' | 'totalCount'} [paginationMode] The paginationMode to use: - default: The total number of items in the collection will not be calculated. - totalCount: The total number of items in the collection will be calculated. This can mean loss of performance.
     * @param {string} [sortBy] Sort the results by one or more comma-separated sort criteria, with the criterion specified first having priority.  Available sort orders: - asc: ascending order - desc: descending order  Available fields for sorting: - productNumber - stocked - reserved - available - incoming - locked  The default sort order is stocked:desc.
     * @param {string} [filterShopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {string} [filterSearch] Filter for product search. \\ Usage: - Provide one or multiple search terms (min. 2 characters) to filter results. - Multiple search terms are separated by spaces. - The search is not case sensitive. - The search is enabled for the fields productTitle, productNumber and ean. - Each search term filters the response for products where at least one of the fields contains the search term. - For example, filter[search]&#x3D;\&#39;term1 term2\&#39; will filter the result for products where \&#39;term1\&#39; is found in any field and \&#39;term2\&#39; is also found in any field. If only \&#39;term1\&#39; or \&#39;term2\&#39; is found in the fields, the product is not included in the results.
     * @param {'self' | 'nice' | 'bundle'} [filterSource] Filter for product source.
     * @param {string} [filterProductNumber] Filter for product number(s) (comma-separated, max. 100).
     * @param {'_availableOrInStock' | '_notAvailableAndOutOfStock'} [filterProductAvailabilityStatus] Filter for productAvailabilityStatus \\ By default, all products are returned. \\ Use \&#39;_availableOrInStock\&#39; to only return products that are available or in stock. \\ Use \&#39;_notAvailableAndOutOfStock\&#39; to only return products that are not available and out of stock.
     * @param {'standard' | 'sample' | 'sellable_sample' | 'tester' | 'packing_material' | 'booking_seminar' | 'booking_appointment' | 'promo_material' | 'raw_material' | 'working_material' | 'service_principal' | 'service_ancillary' | 'inquiry_testdrive' | 'inquiry_raffle' | 'chilled_product' | 'limited_edition' | 'voucher_print' | 'voucher_digital' | 'bundle' | 'print_greetingcard' | 'personalized' | 'other_services'} [filterProductType] Filter for product type.
     * @param {boolean} [filterHasProductImage] A filter to only return products where a product image is present.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getProductCollection(page?: number, pageSize?: number, paginationMode?: 'default' | 'totalCount', sortBy?: string, filterShopCode?: string, filterSearch?: string, filterSource?: 'self' | 'nice' | 'bundle', filterProductNumber?: string, filterProductAvailabilityStatus?: '_availableOrInStock' | '_notAvailableAndOutOfStock', filterProductType?: 'standard' | 'sample' | 'sellable_sample' | 'tester' | 'packing_material' | 'booking_seminar' | 'booking_appointment' | 'promo_material' | 'raw_material' | 'working_material' | 'service_principal' | 'service_ancillary' | 'inquiry_testdrive' | 'inquiry_raffle' | 'chilled_product' | 'limited_edition' | 'voucher_print' | 'voucher_digital' | 'bundle' | 'print_greetingcard' | 'personalized' | 'other_services', filterHasProductImage?: boolean, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ProductCollection>>;
    /**
     * Read a journal collection for a specific product showing the history of stock changes. _Only products with the source \'self\' can be queried._
     * @summary Read a journal collection for a specific product showing the history of stock changes.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {number} [page] The page to read. Default is the first page.
     * @param {number} [pageSize] The maximum size per page is 100. Default is 100.
     * @param {'default' | 'totalCount'} [paginationMode] The paginationMode to use:\\ - default: The total number of items in the collection will not be calculated.\\ - totalCount: The total number of items in the collection will be calculated. This can mean loss of performance.
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients.\\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {string} [filterDateFrom] The start date (inclusive) in format Y-m-d (timezone CET/CEST) for which product journal entries should be returned.
     * @param {string} [filterDateTo] The end date (inclusive) in format Y-m-d (timezone CET/CEST) for which product journal entries should be returned.
     * @param {string} [filterReason] Filter journal entries for one or more reasons - expired: Taking an expired product off the books - damaged: Taking a damaged product off the books - own_withdrawl: Product taken for own use - correction: Manual correction - niceshops_order: Product sold via a shop from niceshops - inbound: Restocking the product - fulfillment: steve fulfilled an order - return: A customer sent the product back to our warehouse
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getProductJournalCollection(productNumber: string, page?: number, pageSize?: number, paginationMode?: 'default' | 'totalCount', shopCode?: string, filterDateFrom?: string, filterDateTo?: string, filterReason?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ProductJournalCollection>>;
    /**
     * Get a list of product stock references.
     * @summary Get a list of product stock references.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {number} [page] The page to read. Default is the first page.
     * @param {number} [pageSize] The maximum size per page is 100. Default is 100.
     * @param {'default' | 'totalCount'} [paginationMode] The paginationMode to use: - default: The total number of items in the collection will not be calculated. - totalCount: The total number of items in the collection will be calculated. This can mean loss of performance.
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {'reserved' | 'incoming'} [filterTypeCode] Filter for a specific stock reference type.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getProductStockReferenceCollection(productNumber: string, page?: number, pageSize?: number, paginationMode?: 'default' | 'totalCount', shopCode?: string, filterTypeCode?: 'reserved' | 'incoming', options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ProductStockReferenceCollection>>;
    /**
     * Patch a product. \\ All fields in the request body are optional. Only provided fields will be updated.
     * @summary Patch a product.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {PatchProduct} patchProduct
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    patchProduct(productNumber: string, patchProduct: PatchProduct, shopCode?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Product>>;
};
/**
 * ProductApi - factory interface
 * @export
 */
export declare const ProductApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
    /**
     * Get a product by product number.
     * @summary Get a product by product number.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getProduct(productNumber: string, shopCode?: string, options?: any): AxiosPromise<Product>;
    /**
     * Get a list of products.
     * @summary Get a list of products.
     * @param {number} [page] The page to read. Default is the first page.
     * @param {number} [pageSize] The maximum size per page is 100. Default is 100.
     * @param {'default' | 'totalCount'} [paginationMode] The paginationMode to use: - default: The total number of items in the collection will not be calculated. - totalCount: The total number of items in the collection will be calculated. This can mean loss of performance.
     * @param {string} [sortBy] Sort the results by one or more comma-separated sort criteria, with the criterion specified first having priority.  Available sort orders: - asc: ascending order - desc: descending order  Available fields for sorting: - productNumber - stocked - reserved - available - incoming - locked  The default sort order is stocked:desc.
     * @param {string} [filterShopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {string} [filterSearch] Filter for product search. \\ Usage: - Provide one or multiple search terms (min. 2 characters) to filter results. - Multiple search terms are separated by spaces. - The search is not case sensitive. - The search is enabled for the fields productTitle, productNumber and ean. - Each search term filters the response for products where at least one of the fields contains the search term. - For example, filter[search]&#x3D;\&#39;term1 term2\&#39; will filter the result for products where \&#39;term1\&#39; is found in any field and \&#39;term2\&#39; is also found in any field. If only \&#39;term1\&#39; or \&#39;term2\&#39; is found in the fields, the product is not included in the results.
     * @param {'self' | 'nice' | 'bundle'} [filterSource] Filter for product source.
     * @param {string} [filterProductNumber] Filter for product number(s) (comma-separated, max. 100).
     * @param {'_availableOrInStock' | '_notAvailableAndOutOfStock'} [filterProductAvailabilityStatus] Filter for productAvailabilityStatus \\ By default, all products are returned. \\ Use \&#39;_availableOrInStock\&#39; to only return products that are available or in stock. \\ Use \&#39;_notAvailableAndOutOfStock\&#39; to only return products that are not available and out of stock.
     * @param {'standard' | 'sample' | 'sellable_sample' | 'tester' | 'packing_material' | 'booking_seminar' | 'booking_appointment' | 'promo_material' | 'raw_material' | 'working_material' | 'service_principal' | 'service_ancillary' | 'inquiry_testdrive' | 'inquiry_raffle' | 'chilled_product' | 'limited_edition' | 'voucher_print' | 'voucher_digital' | 'bundle' | 'print_greetingcard' | 'personalized' | 'other_services'} [filterProductType] Filter for product type.
     * @param {boolean} [filterHasProductImage] A filter to only return products where a product image is present.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getProductCollection(page?: number, pageSize?: number, paginationMode?: 'default' | 'totalCount', sortBy?: string, filterShopCode?: string, filterSearch?: string, filterSource?: 'self' | 'nice' | 'bundle', filterProductNumber?: string, filterProductAvailabilityStatus?: '_availableOrInStock' | '_notAvailableAndOutOfStock', filterProductType?: 'standard' | 'sample' | 'sellable_sample' | 'tester' | 'packing_material' | 'booking_seminar' | 'booking_appointment' | 'promo_material' | 'raw_material' | 'working_material' | 'service_principal' | 'service_ancillary' | 'inquiry_testdrive' | 'inquiry_raffle' | 'chilled_product' | 'limited_edition' | 'voucher_print' | 'voucher_digital' | 'bundle' | 'print_greetingcard' | 'personalized' | 'other_services', filterHasProductImage?: boolean, options?: any): AxiosPromise<ProductCollection>;
    /**
     * Read a journal collection for a specific product showing the history of stock changes. _Only products with the source \'self\' can be queried._
     * @summary Read a journal collection for a specific product showing the history of stock changes.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {number} [page] The page to read. Default is the first page.
     * @param {number} [pageSize] The maximum size per page is 100. Default is 100.
     * @param {'default' | 'totalCount'} [paginationMode] The paginationMode to use:\\ - default: The total number of items in the collection will not be calculated.\\ - totalCount: The total number of items in the collection will be calculated. This can mean loss of performance.
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients.\\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {string} [filterDateFrom] The start date (inclusive) in format Y-m-d (timezone CET/CEST) for which product journal entries should be returned.
     * @param {string} [filterDateTo] The end date (inclusive) in format Y-m-d (timezone CET/CEST) for which product journal entries should be returned.
     * @param {string} [filterReason] Filter journal entries for one or more reasons - expired: Taking an expired product off the books - damaged: Taking a damaged product off the books - own_withdrawl: Product taken for own use - correction: Manual correction - niceshops_order: Product sold via a shop from niceshops - inbound: Restocking the product - fulfillment: steve fulfilled an order - return: A customer sent the product back to our warehouse
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getProductJournalCollection(productNumber: string, page?: number, pageSize?: number, paginationMode?: 'default' | 'totalCount', shopCode?: string, filterDateFrom?: string, filterDateTo?: string, filterReason?: string, options?: any): AxiosPromise<ProductJournalCollection>;
    /**
     * Get a list of product stock references.
     * @summary Get a list of product stock references.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {number} [page] The page to read. Default is the first page.
     * @param {number} [pageSize] The maximum size per page is 100. Default is 100.
     * @param {'default' | 'totalCount'} [paginationMode] The paginationMode to use: - default: The total number of items in the collection will not be calculated. - totalCount: The total number of items in the collection will be calculated. This can mean loss of performance.
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {'reserved' | 'incoming'} [filterTypeCode] Filter for a specific stock reference type.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getProductStockReferenceCollection(productNumber: string, page?: number, pageSize?: number, paginationMode?: 'default' | 'totalCount', shopCode?: string, filterTypeCode?: 'reserved' | 'incoming', options?: any): AxiosPromise<ProductStockReferenceCollection>;
    /**
     * Patch a product. \\ All fields in the request body are optional. Only provided fields will be updated.
     * @summary Patch a product.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {PatchProduct} patchProduct
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    patchProduct(productNumber: string, patchProduct: PatchProduct, shopCode?: string, options?: any): AxiosPromise<Product>;
};
/**
 * ProductApi - interface
 * @export
 * @interface ProductApi
 */
export interface ProductApiInterface {
    /**
     * Get a product by product number.
     * @summary Get a product by product number.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ProductApiInterface
     */
    getProduct(productNumber: string, shopCode?: string, options?: AxiosRequestConfig): AxiosPromise<Product>;
    /**
     * Get a list of products.
     * @summary Get a list of products.
     * @param {number} [page] The page to read. Default is the first page.
     * @param {number} [pageSize] The maximum size per page is 100. Default is 100.
     * @param {'default' | 'totalCount'} [paginationMode] The paginationMode to use: - default: The total number of items in the collection will not be calculated. - totalCount: The total number of items in the collection will be calculated. This can mean loss of performance.
     * @param {string} [sortBy] Sort the results by one or more comma-separated sort criteria, with the criterion specified first having priority.  Available sort orders: - asc: ascending order - desc: descending order  Available fields for sorting: - productNumber - stocked - reserved - available - incoming - locked  The default sort order is stocked:desc.
     * @param {string} [filterShopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {string} [filterSearch] Filter for product search. \\ Usage: - Provide one or multiple search terms (min. 2 characters) to filter results. - Multiple search terms are separated by spaces. - The search is not case sensitive. - The search is enabled for the fields productTitle, productNumber and ean. - Each search term filters the response for products where at least one of the fields contains the search term. - For example, filter[search]&#x3D;\&#39;term1 term2\&#39; will filter the result for products where \&#39;term1\&#39; is found in any field and \&#39;term2\&#39; is also found in any field. If only \&#39;term1\&#39; or \&#39;term2\&#39; is found in the fields, the product is not included in the results.
     * @param {'self' | 'nice' | 'bundle'} [filterSource] Filter for product source.
     * @param {string} [filterProductNumber] Filter for product number(s) (comma-separated, max. 100).
     * @param {'_availableOrInStock' | '_notAvailableAndOutOfStock'} [filterProductAvailabilityStatus] Filter for productAvailabilityStatus \\ By default, all products are returned. \\ Use \&#39;_availableOrInStock\&#39; to only return products that are available or in stock. \\ Use \&#39;_notAvailableAndOutOfStock\&#39; to only return products that are not available and out of stock.
     * @param {'standard' | 'sample' | 'sellable_sample' | 'tester' | 'packing_material' | 'booking_seminar' | 'booking_appointment' | 'promo_material' | 'raw_material' | 'working_material' | 'service_principal' | 'service_ancillary' | 'inquiry_testdrive' | 'inquiry_raffle' | 'chilled_product' | 'limited_edition' | 'voucher_print' | 'voucher_digital' | 'bundle' | 'print_greetingcard' | 'personalized' | 'other_services'} [filterProductType] Filter for product type.
     * @param {boolean} [filterHasProductImage] A filter to only return products where a product image is present.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ProductApiInterface
     */
    getProductCollection(page?: number, pageSize?: number, paginationMode?: 'default' | 'totalCount', sortBy?: string, filterShopCode?: string, filterSearch?: string, filterSource?: 'self' | 'nice' | 'bundle', filterProductNumber?: string, filterProductAvailabilityStatus?: '_availableOrInStock' | '_notAvailableAndOutOfStock', filterProductType?: 'standard' | 'sample' | 'sellable_sample' | 'tester' | 'packing_material' | 'booking_seminar' | 'booking_appointment' | 'promo_material' | 'raw_material' | 'working_material' | 'service_principal' | 'service_ancillary' | 'inquiry_testdrive' | 'inquiry_raffle' | 'chilled_product' | 'limited_edition' | 'voucher_print' | 'voucher_digital' | 'bundle' | 'print_greetingcard' | 'personalized' | 'other_services', filterHasProductImage?: boolean, options?: AxiosRequestConfig): AxiosPromise<ProductCollection>;
    /**
     * Read a journal collection for a specific product showing the history of stock changes. _Only products with the source \'self\' can be queried._
     * @summary Read a journal collection for a specific product showing the history of stock changes.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {number} [page] The page to read. Default is the first page.
     * @param {number} [pageSize] The maximum size per page is 100. Default is 100.
     * @param {'default' | 'totalCount'} [paginationMode] The paginationMode to use:\\ - default: The total number of items in the collection will not be calculated.\\ - totalCount: The total number of items in the collection will be calculated. This can mean loss of performance.
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients.\\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {string} [filterDateFrom] The start date (inclusive) in format Y-m-d (timezone CET/CEST) for which product journal entries should be returned.
     * @param {string} [filterDateTo] The end date (inclusive) in format Y-m-d (timezone CET/CEST) for which product journal entries should be returned.
     * @param {string} [filterReason] Filter journal entries for one or more reasons - expired: Taking an expired product off the books - damaged: Taking a damaged product off the books - own_withdrawl: Product taken for own use - correction: Manual correction - niceshops_order: Product sold via a shop from niceshops - inbound: Restocking the product - fulfillment: steve fulfilled an order - return: A customer sent the product back to our warehouse
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ProductApiInterface
     */
    getProductJournalCollection(productNumber: string, page?: number, pageSize?: number, paginationMode?: 'default' | 'totalCount', shopCode?: string, filterDateFrom?: string, filterDateTo?: string, filterReason?: string, options?: AxiosRequestConfig): AxiosPromise<ProductJournalCollection>;
    /**
     * Get a list of product stock references.
     * @summary Get a list of product stock references.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {number} [page] The page to read. Default is the first page.
     * @param {number} [pageSize] The maximum size per page is 100. Default is 100.
     * @param {'default' | 'totalCount'} [paginationMode] The paginationMode to use: - default: The total number of items in the collection will not be calculated. - totalCount: The total number of items in the collection will be calculated. This can mean loss of performance.
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {'reserved' | 'incoming'} [filterTypeCode] Filter for a specific stock reference type.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ProductApiInterface
     */
    getProductStockReferenceCollection(productNumber: string, page?: number, pageSize?: number, paginationMode?: 'default' | 'totalCount', shopCode?: string, filterTypeCode?: 'reserved' | 'incoming', options?: AxiosRequestConfig): AxiosPromise<ProductStockReferenceCollection>;
    /**
     * Patch a product. \\ All fields in the request body are optional. Only provided fields will be updated.
     * @summary Patch a product.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {PatchProduct} patchProduct
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ProductApiInterface
     */
    patchProduct(productNumber: string, patchProduct: PatchProduct, shopCode?: string, options?: AxiosRequestConfig): AxiosPromise<Product>;
}
/**
 * ProductApi - object-oriented interface
 * @export
 * @class ProductApi
 * @extends {BaseAPI}
 */
export declare class ProductApi extends BaseAPI implements ProductApiInterface {
    /**
     * Get a product by product number.
     * @summary Get a product by product number.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ProductApi
     */
    getProduct(productNumber: string, shopCode?: string, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<Product, any>>;
    /**
     * Get a list of products.
     * @summary Get a list of products.
     * @param {number} [page] The page to read. Default is the first page.
     * @param {number} [pageSize] The maximum size per page is 100. Default is 100.
     * @param {'default' | 'totalCount'} [paginationMode] The paginationMode to use: - default: The total number of items in the collection will not be calculated. - totalCount: The total number of items in the collection will be calculated. This can mean loss of performance.
     * @param {string} [sortBy] Sort the results by one or more comma-separated sort criteria, with the criterion specified first having priority.  Available sort orders: - asc: ascending order - desc: descending order  Available fields for sorting: - productNumber - stocked - reserved - available - incoming - locked  The default sort order is stocked:desc.
     * @param {string} [filterShopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {string} [filterSearch] Filter for product search. \\ Usage: - Provide one or multiple search terms (min. 2 characters) to filter results. - Multiple search terms are separated by spaces. - The search is not case sensitive. - The search is enabled for the fields productTitle, productNumber and ean. - Each search term filters the response for products where at least one of the fields contains the search term. - For example, filter[search]&#x3D;\&#39;term1 term2\&#39; will filter the result for products where \&#39;term1\&#39; is found in any field and \&#39;term2\&#39; is also found in any field. If only \&#39;term1\&#39; or \&#39;term2\&#39; is found in the fields, the product is not included in the results.
     * @param {'self' | 'nice' | 'bundle'} [filterSource] Filter for product source.
     * @param {string} [filterProductNumber] Filter for product number(s) (comma-separated, max. 100).
     * @param {'_availableOrInStock' | '_notAvailableAndOutOfStock'} [filterProductAvailabilityStatus] Filter for productAvailabilityStatus \\ By default, all products are returned. \\ Use \&#39;_availableOrInStock\&#39; to only return products that are available or in stock. \\ Use \&#39;_notAvailableAndOutOfStock\&#39; to only return products that are not available and out of stock.
     * @param {'standard' | 'sample' | 'sellable_sample' | 'tester' | 'packing_material' | 'booking_seminar' | 'booking_appointment' | 'promo_material' | 'raw_material' | 'working_material' | 'service_principal' | 'service_ancillary' | 'inquiry_testdrive' | 'inquiry_raffle' | 'chilled_product' | 'limited_edition' | 'voucher_print' | 'voucher_digital' | 'bundle' | 'print_greetingcard' | 'personalized' | 'other_services'} [filterProductType] Filter for product type.
     * @param {boolean} [filterHasProductImage] A filter to only return products where a product image is present.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ProductApi
     */
    getProductCollection(page?: number, pageSize?: number, paginationMode?: 'default' | 'totalCount', sortBy?: string, filterShopCode?: string, filterSearch?: string, filterSource?: 'self' | 'nice' | 'bundle', filterProductNumber?: string, filterProductAvailabilityStatus?: '_availableOrInStock' | '_notAvailableAndOutOfStock', filterProductType?: 'standard' | 'sample' | 'sellable_sample' | 'tester' | 'packing_material' | 'booking_seminar' | 'booking_appointment' | 'promo_material' | 'raw_material' | 'working_material' | 'service_principal' | 'service_ancillary' | 'inquiry_testdrive' | 'inquiry_raffle' | 'chilled_product' | 'limited_edition' | 'voucher_print' | 'voucher_digital' | 'bundle' | 'print_greetingcard' | 'personalized' | 'other_services', filterHasProductImage?: boolean, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<ProductCollection, any>>;
    /**
     * Read a journal collection for a specific product showing the history of stock changes. _Only products with the source \'self\' can be queried._
     * @summary Read a journal collection for a specific product showing the history of stock changes.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {number} [page] The page to read. Default is the first page.
     * @param {number} [pageSize] The maximum size per page is 100. Default is 100.
     * @param {'default' | 'totalCount'} [paginationMode] The paginationMode to use:\\ - default: The total number of items in the collection will not be calculated.\\ - totalCount: The total number of items in the collection will be calculated. This can mean loss of performance.
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients.\\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {string} [filterDateFrom] The start date (inclusive) in format Y-m-d (timezone CET/CEST) for which product journal entries should be returned.
     * @param {string} [filterDateTo] The end date (inclusive) in format Y-m-d (timezone CET/CEST) for which product journal entries should be returned.
     * @param {string} [filterReason] Filter journal entries for one or more reasons - expired: Taking an expired product off the books - damaged: Taking a damaged product off the books - own_withdrawl: Product taken for own use - correction: Manual correction - niceshops_order: Product sold via a shop from niceshops - inbound: Restocking the product - fulfillment: steve fulfilled an order - return: A customer sent the product back to our warehouse
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ProductApi
     */
    getProductJournalCollection(productNumber: string, page?: number, pageSize?: number, paginationMode?: 'default' | 'totalCount', shopCode?: string, filterDateFrom?: string, filterDateTo?: string, filterReason?: string, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<ProductJournalCollection, any>>;
    /**
     * Get a list of product stock references.
     * @summary Get a list of product stock references.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {number} [page] The page to read. Default is the first page.
     * @param {number} [pageSize] The maximum size per page is 100. Default is 100.
     * @param {'default' | 'totalCount'} [paginationMode] The paginationMode to use: - default: The total number of items in the collection will not be calculated. - totalCount: The total number of items in the collection will be calculated. This can mean loss of performance.
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {'reserved' | 'incoming'} [filterTypeCode] Filter for a specific stock reference type.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ProductApi
     */
    getProductStockReferenceCollection(productNumber: string, page?: number, pageSize?: number, paginationMode?: 'default' | 'totalCount', shopCode?: string, filterTypeCode?: 'reserved' | 'incoming', options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<ProductStockReferenceCollection, any>>;
    /**
     * Patch a product. \\ All fields in the request body are optional. Only provided fields will be updated.
     * @summary Patch a product.
     * @param {string} productNumber The product number as defined during the creation of the product.
     * @param {PatchProduct} patchProduct
     * @param {string} [shopCode] The shopCode used internally to distinguish between clients. \\ _This code is optional, if your identity is assigned to only one shop. Otherwise the response would be a 422 HTTP Error._
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ProductApi
     */
    patchProduct(productNumber: string, patchProduct: PatchProduct, shopCode?: string, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<Product, any>>;
}
