import { CurrencyBookingApiClient, HotelOffersApiResponse } from '../models';
import { TPollerCallback } from '@revolugo/common/utils';
/**
 * Revolugo Booking API Reference
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.5.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import * as runtime from '../runtime';
export interface HotelOffersListPayload {
    currency: CurrencyBookingApiClient;
    hotelOfferRequestId: string;
    endingBefore?: string | null;
    filterByPrice?: string;
    filterByReviewRating?: number;
    filterByStar?: string;
    hotelRoomOffersLimit?: number;
    includeHotelContentDetails?: boolean | null;
    lang?: HotelOffersLangEnum;
    limit?: number;
    onlyRecommendedHotelOffers?: boolean | null;
    priceHistogramStepCount?: number;
    sortBy?: HotelOffersSortByEnum;
    sortByOrder?: HotelOffersSortByOrderEnum;
    startingAfter?: string | null;
}
/**
 * HotelOffers - interface
 *
 * @export
 * @interface HotelOffersInterface
 */
export interface HotelOffersInterface {
    /**
     * You\'ll then make a call to the **Hotel Offers** endpoint to retrieve a list of **Hotel Offers** associated with your **Hotel Offer Request**. We\'ll send your search to a pool of hotels matching the search parameters you provided previously. The **Hotel Offers** endpoint will return hotels with available rates as **Hotel Room Offers** objects for each hotel in the list. For a detailed overview of the **Hotel Room Offer** object, see **[Retrieve Hotel Room Offers](/v1/documentation#operation/getV1Hotel_room_offers)** endpoint.  ⚠️ **IMPORTANT**: The **Hotel Room Offers** included in each **Hotel Offer** returned by the **[Retrieve Hotel Offers](/v1/documentation#operation/getV1Hotel_offers)** endpoint might be **<span style=\"color:red\">cached data</span>**. In that case, the returned prices/availability may be slightly different from actual live inventory. In order to retrieve accurate and live **Hotel Room Offers** for a specific hotel you need to make a call to the **[Retrieve Hotel Room Offers](/v1/documentation#operation/getV1Hotel_room_offers)** endpoint. We do not recommend to systematically call **[Retrieve Hotel Room Offers](/v1/documentation#operation/getV1Hotel_room_offers)** for each hotel offer retrieved as it may trigger rate limiting on your API calls. Rather we recommend to do this as an explicit two-step process: first you check **Hotel Offers** around a location, then, once your customer shows interest in a specific **Hotel Offer**, you check **Hotel Room Offers** on that specific hotel.    This endpoint requires ⚛️ **[Polling](/v1/documentation#tag/Polling)**.
     * @summary ⚛️ Retrieve Hotel Offers
     * @param {CurrencyBookingApiClient} currency
     * @param {string} hotelOfferRequestId
     * @param {string} [endingBefore]
     * @param {string} [filterByPrice]
     * @param {number} [filterByReviewRating]
     * @param {string} [filterByStar]
     * @param {number} [hotelRoomOffersLimit]
     * @param {boolean} [includeHotelContentDetails]
     * @param {'de-DE' | 'en-US' | 'es-ES' | 'fr-FR' | 'it-IT' | 'nl-NL' | 'pt-PT'} [lang]
     * @param {number} [limit]
     * @param {boolean} [onlyRecommendedHotelOffers]
     * @param {number} [priceHistogramStepCount]
     * @param {'distance' | 'price' | 'rating' | 'review_rating' | 'top_picks'} [sortBy]
     * @param {'asc' | 'desc'} [sortByOrder]
     * @param {string} [startingAfter]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof HotelOffersInterface
     */
    listRaw(requestParameters: HotelOffersListPayload, initOverrides?: RequestInit & {
        minCallCount?: number;
        maxCallCount?: number;
    }): Promise<runtime.ApiResponse<HotelOffersApiResponse>>;
    /**
     * You\'ll then make a call to the **Hotel Offers** endpoint to retrieve a list of **Hotel Offers** associated with your **Hotel Offer Request**. We\'ll send your search to a pool of hotels matching the search parameters you provided previously. The **Hotel Offers** endpoint will return hotels with available rates as **Hotel Room Offers** objects for each hotel in the list. For a detailed overview of the **Hotel Room Offer** object, see **[Retrieve Hotel Room Offers](/v1/documentation#operation/getV1Hotel_room_offers)** endpoint.  ⚠️ **IMPORTANT**: The **Hotel Room Offers** included in each **Hotel Offer** returned by the **[Retrieve Hotel Offers](/v1/documentation#operation/getV1Hotel_offers)** endpoint might be **<span style=\"color:red\">cached data</span>**. In that case, the returned prices/availability may be slightly different from actual live inventory. In order to retrieve accurate and live **Hotel Room Offers** for a specific hotel you need to make a call to the **[Retrieve Hotel Room Offers](/v1/documentation#operation/getV1Hotel_room_offers)** endpoint. We do not recommend to systematically call **[Retrieve Hotel Room Offers](/v1/documentation#operation/getV1Hotel_room_offers)** for each hotel offer retrieved as it may trigger rate limiting on your API calls. Rather we recommend to do this as an explicit two-step process: first you check **Hotel Offers** around a location, then, once your customer shows interest in a specific **Hotel Offer**, you check **Hotel Room Offers** on that specific hotel.    This endpoint requires ⚛️ **[Polling](/v1/documentation#tag/Polling)**.
     * ⚛️ Retrieve Hotel Offers
     */
    list(requestParameters: HotelOffersListPayload, pollerCallback?: TPollerCallback<HotelOffersApiResponse>, initOverrides?: RequestInit & {
        minCallCount?: number;
        maxCallCount?: number;
    }): Promise<HotelOffersApiResponse>;
}
/**
 *
 */
export declare class HotelOffers extends runtime.BaseAPI implements HotelOffersInterface {
    /**
     * You\'ll then make a call to the **Hotel Offers** endpoint to retrieve a list of **Hotel Offers** associated with your **Hotel Offer Request**. We\'ll send your search to a pool of hotels matching the search parameters you provided previously. The **Hotel Offers** endpoint will return hotels with available rates as **Hotel Room Offers** objects for each hotel in the list. For a detailed overview of the **Hotel Room Offer** object, see **[Retrieve Hotel Room Offers](/v1/documentation#operation/getV1Hotel_room_offers)** endpoint.  ⚠️ **IMPORTANT**: The **Hotel Room Offers** included in each **Hotel Offer** returned by the **[Retrieve Hotel Offers](/v1/documentation#operation/getV1Hotel_offers)** endpoint might be **<span style=\"color:red\">cached data</span>**. In that case, the returned prices/availability may be slightly different from actual live inventory. In order to retrieve accurate and live **Hotel Room Offers** for a specific hotel you need to make a call to the **[Retrieve Hotel Room Offers](/v1/documentation#operation/getV1Hotel_room_offers)** endpoint. We do not recommend to systematically call **[Retrieve Hotel Room Offers](/v1/documentation#operation/getV1Hotel_room_offers)** for each hotel offer retrieved as it may trigger rate limiting on your API calls. Rather we recommend to do this as an explicit two-step process: first you check **Hotel Offers** around a location, then, once your customer shows interest in a specific **Hotel Offer**, you check **Hotel Room Offers** on that specific hotel.    This endpoint requires ⚛️ **[Polling](/v1/documentation#tag/Polling)**.
     * ⚛️ Retrieve Hotel Offers
     */
    listRaw(requestParameters: HotelOffersListPayload, initOverrides?: RequestInit & {
        minCallCount?: number;
        maxCallCount?: number;
    }): Promise<runtime.ApiResponse<HotelOffersApiResponse>>;
    /**
     * You\'ll then make a call to the **Hotel Offers** endpoint to retrieve a list of **Hotel Offers** associated with your **Hotel Offer Request**. We\'ll send your search to a pool of hotels matching the search parameters you provided previously. The **Hotel Offers** endpoint will return hotels with available rates as **Hotel Room Offers** objects for each hotel in the list. For a detailed overview of the **Hotel Room Offer** object, see **[Retrieve Hotel Room Offers](/v1/documentation#operation/getV1Hotel_room_offers)** endpoint.  ⚠️ **IMPORTANT**: The **Hotel Room Offers** included in each **Hotel Offer** returned by the **[Retrieve Hotel Offers](/v1/documentation#operation/getV1Hotel_offers)** endpoint might be **<span style=\"color:red\">cached data</span>**. In that case, the returned prices/availability may be slightly different from actual live inventory. In order to retrieve accurate and live **Hotel Room Offers** for a specific hotel you need to make a call to the **[Retrieve Hotel Room Offers](/v1/documentation#operation/getV1Hotel_room_offers)** endpoint. We do not recommend to systematically call **[Retrieve Hotel Room Offers](/v1/documentation#operation/getV1Hotel_room_offers)** for each hotel offer retrieved as it may trigger rate limiting on your API calls. Rather we recommend to do this as an explicit two-step process: first you check **Hotel Offers** around a location, then, once your customer shows interest in a specific **Hotel Offer**, you check **Hotel Room Offers** on that specific hotel.    This endpoint requires ⚛️ **[Polling](/v1/documentation#tag/Polling)**.
     * ⚛️ Retrieve Hotel Offers
     */
    list(requestParameters: HotelOffersListPayload, pollerCallback?: TPollerCallback<HotelOffersApiResponse>, initOverrides?: RequestInit & {
        minCallCount?: number;
        maxCallCount?: number;
    }): Promise<HotelOffersApiResponse>;
}
/**
* @export
*/
export declare const HotelOffersLangEnum: {
    DeDe: "de-DE";
    EnUs: "en-US";
    EsEs: "es-ES";
    FrFr: "fr-FR";
    ItIt: "it-IT";
    NlNl: "nl-NL";
    PtPt: "pt-PT";
};
export type HotelOffersLangEnum = typeof HotelOffersLangEnum[keyof typeof HotelOffersLangEnum];
/**
* @export
*/
export declare const HotelOffersSortByEnum: {
    Distance: "distance";
    Price: "price";
    Rating: "rating";
    ReviewRating: "review_rating";
    TopPicks: "top_picks";
};
export type HotelOffersSortByEnum = typeof HotelOffersSortByEnum[keyof typeof HotelOffersSortByEnum];
/**
* @export
*/
export declare const HotelOffersSortByOrderEnum: {
    Asc: "asc";
    Desc: "desc";
};
export type HotelOffersSortByOrderEnum = typeof HotelOffersSortByOrderEnum[keyof typeof HotelOffersSortByOrderEnum];
