import { CurrencyClient, HotelRoomOfferApiResponse, HotelRoomOffersApiResponse, HotelRoomOffersCreateApi, Locale } from '../models/index.ts';
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.ts';
export interface HotelRoomOffersListPayload {
    currency: CurrencyClient;
    hotelRoomOfferRequestId: string;
    lang?: Locale;
    limit?: number | null;
}
export interface HotelRoomOffersCreatePayload {
    hotelRoomOffersCreateApi?: HotelRoomOffersCreateApi;
}
/**
 * HotelRoomOffers - interface
 *
 * @export
 * @interface HotelRoomOffersInterface
 */
export interface HotelRoomOffersInterface {
    /**
     * You\'ll make a call to the **Hotel Room Offers** endpoint in order to get a list of **Hotel Room Offers** resulting from your **Hotel Room Offer Request** parameters. We\'ll send your rate check request to the specific hotel matching the hotel ID you provided previously and the **Hotel Room Offers** endpoint will return the available rates at this specific hotel. An **Hotel Room Offer** describes hotel rooms: prices, remaining count available (when applicable), details about the room itself (e.g., beds, etc) and other information you\'ll find below.   ⚠️ **Cancellation Policies** attached to each **Hotel Room Offer** returned by this endpoint will most likely be **<span style=\"color:red\">cached data</span>** and should not be considered as accurate, although in most case they will reflect the actual/live ones.  In order to retrieve accurate and live **Cancellation Policies** for a specific **Hotel Room Offer** you need to make a call to the **[Create Booking Policies endpoint](/v1/documentation#operation/postV1Booking_policies)**. However, we do not recommend to systematically call **[Create Booking Policies endpoint](/v1/documentation#operation/postV1Booking_policies)** for each **Hotel Room Offer** retrieved as it will most likely trigger rate limiting on your API calls. Rather we recommend to do this as an explicit two-step process: first you check **Hotel Room Offers**, then, once your customer shows interest in a specific **Hotel Room Offer**, you make the call to the **[Create Booking Policies endpoint](/v1/documentation#operation/postV1Booking_policies)** on behalf of your customer.    This endpoint requires ⚛️ **[Polling](/v1/documentation#tag/Polling)**.
     * @summary ⚛️ Retrieve Hotel Room Offers
     * @param {CurrencyClient} currency ISO 4217 currency code.
     * @param {string} hotelRoomOfferRequestId id of the **Hotel Room Offer Request** previously created via [Create Hotel Room Offer Request](/v1/documentation#operation/postV1Hotel_room_offer_requests).
     * @param {Locale} [lang] Set the language for the returned content using a valid language code.
     * @param {number} [limit] Limit the number of **Hotel Room Offers** returned, sorted by increasing price.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof HotelRoomOffersInterface
     */
    listRaw(requestParameters: HotelRoomOffersListPayload, initOverrides?: RequestInit & {
        minCallCount?: number;
        maxCallCount?: number;
    }): Promise<runtime.ApiResponse<HotelRoomOffersApiResponse>>;
    /**
     * You\'ll make a call to the **Hotel Room Offers** endpoint in order to get a list of **Hotel Room Offers** resulting from your **Hotel Room Offer Request** parameters. We\'ll send your rate check request to the specific hotel matching the hotel ID you provided previously and the **Hotel Room Offers** endpoint will return the available rates at this specific hotel. An **Hotel Room Offer** describes hotel rooms: prices, remaining count available (when applicable), details about the room itself (e.g., beds, etc) and other information you\'ll find below.   ⚠️ **Cancellation Policies** attached to each **Hotel Room Offer** returned by this endpoint will most likely be **<span style=\"color:red\">cached data</span>** and should not be considered as accurate, although in most case they will reflect the actual/live ones.  In order to retrieve accurate and live **Cancellation Policies** for a specific **Hotel Room Offer** you need to make a call to the **[Create Booking Policies endpoint](/v1/documentation#operation/postV1Booking_policies)**. However, we do not recommend to systematically call **[Create Booking Policies endpoint](/v1/documentation#operation/postV1Booking_policies)** for each **Hotel Room Offer** retrieved as it will most likely trigger rate limiting on your API calls. Rather we recommend to do this as an explicit two-step process: first you check **Hotel Room Offers**, then, once your customer shows interest in a specific **Hotel Room Offer**, you make the call to the **[Create Booking Policies endpoint](/v1/documentation#operation/postV1Booking_policies)** on behalf of your customer.    This endpoint requires ⚛️ **[Polling](/v1/documentation#tag/Polling)**.
     * ⚛️ Retrieve Hotel Room Offers
     */
    list(requestParameters: HotelRoomOffersListPayload, pollerCallback?: TPollerCallback<HotelRoomOffersApiResponse>, initOverrides?: RequestInit & {
        minCallCount?: number;
        maxCallCount?: number;
    }): Promise<HotelRoomOffersApiResponse>;
    /**
     * This enpoint creates a new **Hotel Room Offer** based on previously fetched **Hotel Room Offer(s)** and may be used for the following purposes:  - Check a specific **Hotel Room Offer** live availability  - Create a new **Hotel Room Offer** with **type = \"PACKAGE\"** based on multiple **Hotel Room Offers** where **type = \"HOTEL_ROOM\"** and be able to call **[Create Booking Policies endpoint](/v1/documentation#operation/postV1Booking_policies)** with it  - Update an existing **Hotel Room Offer** with **type = \"PACKAGE\"** in order to include extra option(s) like breakfast in the returned price.   We strongly recommend to make use of this endpoint if you want to offer some kind of Shopping Cart experience to your customer when **[Retrieve HotelRoom Offers endpoint](/v1/documentation#operation/getV1Hotel_room_offers)** returns multiple **Hotel Room Offers** with **type = \"HOTEL_ROOM\"**.
     * @summary Create Hotel Room Offer
     * @param {HotelRoomOffersCreateApi} [hotelRoomOffersCreateApi] Create Hotel Room Offer
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof HotelRoomOffersInterface
     */
    createRaw(requestParameters: HotelRoomOffersCreatePayload, initOverrides?: RequestInit & {
        minCallCount?: number;
        maxCallCount?: number;
    }): Promise<runtime.ApiResponse<HotelRoomOfferApiResponse>>;
    /**
     * This enpoint creates a new **Hotel Room Offer** based on previously fetched **Hotel Room Offer(s)** and may be used for the following purposes:  - Check a specific **Hotel Room Offer** live availability  - Create a new **Hotel Room Offer** with **type = \"PACKAGE\"** based on multiple **Hotel Room Offers** where **type = \"HOTEL_ROOM\"** and be able to call **[Create Booking Policies endpoint](/v1/documentation#operation/postV1Booking_policies)** with it  - Update an existing **Hotel Room Offer** with **type = \"PACKAGE\"** in order to include extra option(s) like breakfast in the returned price.   We strongly recommend to make use of this endpoint if you want to offer some kind of Shopping Cart experience to your customer when **[Retrieve HotelRoom Offers endpoint](/v1/documentation#operation/getV1Hotel_room_offers)** returns multiple **Hotel Room Offers** with **type = \"HOTEL_ROOM\"**.
     * Create Hotel Room Offer
     */
    create(requestParameters: HotelRoomOffersCreatePayload, initOverrides?: RequestInit & {
        minCallCount?: number;
        maxCallCount?: number;
    }): Promise<HotelRoomOfferApiResponse>;
}
/**
 *
 */
export declare class HotelRoomOffers extends runtime.BaseAPI implements HotelRoomOffersInterface {
    /**
     * You\'ll make a call to the **Hotel Room Offers** endpoint in order to get a list of **Hotel Room Offers** resulting from your **Hotel Room Offer Request** parameters. We\'ll send your rate check request to the specific hotel matching the hotel ID you provided previously and the **Hotel Room Offers** endpoint will return the available rates at this specific hotel. An **Hotel Room Offer** describes hotel rooms: prices, remaining count available (when applicable), details about the room itself (e.g., beds, etc) and other information you\'ll find below.   ⚠️ **Cancellation Policies** attached to each **Hotel Room Offer** returned by this endpoint will most likely be **<span style=\"color:red\">cached data</span>** and should not be considered as accurate, although in most case they will reflect the actual/live ones.  In order to retrieve accurate and live **Cancellation Policies** for a specific **Hotel Room Offer** you need to make a call to the **[Create Booking Policies endpoint](/v1/documentation#operation/postV1Booking_policies)**. However, we do not recommend to systematically call **[Create Booking Policies endpoint](/v1/documentation#operation/postV1Booking_policies)** for each **Hotel Room Offer** retrieved as it will most likely trigger rate limiting on your API calls. Rather we recommend to do this as an explicit two-step process: first you check **Hotel Room Offers**, then, once your customer shows interest in a specific **Hotel Room Offer**, you make the call to the **[Create Booking Policies endpoint](/v1/documentation#operation/postV1Booking_policies)** on behalf of your customer.    This endpoint requires ⚛️ **[Polling](/v1/documentation#tag/Polling)**.
     * ⚛️ Retrieve Hotel Room Offers
     */
    listRaw(requestParameters: HotelRoomOffersListPayload, initOverrides?: RequestInit & {
        minCallCount?: number;
        maxCallCount?: number;
    }): Promise<runtime.ApiResponse<HotelRoomOffersApiResponse>>;
    /**
     * You\'ll make a call to the **Hotel Room Offers** endpoint in order to get a list of **Hotel Room Offers** resulting from your **Hotel Room Offer Request** parameters. We\'ll send your rate check request to the specific hotel matching the hotel ID you provided previously and the **Hotel Room Offers** endpoint will return the available rates at this specific hotel. An **Hotel Room Offer** describes hotel rooms: prices, remaining count available (when applicable), details about the room itself (e.g., beds, etc) and other information you\'ll find below.   ⚠️ **Cancellation Policies** attached to each **Hotel Room Offer** returned by this endpoint will most likely be **<span style=\"color:red\">cached data</span>** and should not be considered as accurate, although in most case they will reflect the actual/live ones.  In order to retrieve accurate and live **Cancellation Policies** for a specific **Hotel Room Offer** you need to make a call to the **[Create Booking Policies endpoint](/v1/documentation#operation/postV1Booking_policies)**. However, we do not recommend to systematically call **[Create Booking Policies endpoint](/v1/documentation#operation/postV1Booking_policies)** for each **Hotel Room Offer** retrieved as it will most likely trigger rate limiting on your API calls. Rather we recommend to do this as an explicit two-step process: first you check **Hotel Room Offers**, then, once your customer shows interest in a specific **Hotel Room Offer**, you make the call to the **[Create Booking Policies endpoint](/v1/documentation#operation/postV1Booking_policies)** on behalf of your customer.    This endpoint requires ⚛️ **[Polling](/v1/documentation#tag/Polling)**.
     * ⚛️ Retrieve Hotel Room Offers
     */
    list(requestParameters: HotelRoomOffersListPayload, pollerCallback?: TPollerCallback<HotelRoomOffersApiResponse>, initOverrides?: RequestInit & {
        minCallCount?: number;
        maxCallCount?: number;
    }): Promise<HotelRoomOffersApiResponse>;
    /**
     * This enpoint creates a new **Hotel Room Offer** based on previously fetched **Hotel Room Offer(s)** and may be used for the following purposes:  - Check a specific **Hotel Room Offer** live availability  - Create a new **Hotel Room Offer** with **type = \"PACKAGE\"** based on multiple **Hotel Room Offers** where **type = \"HOTEL_ROOM\"** and be able to call **[Create Booking Policies endpoint](/v1/documentation#operation/postV1Booking_policies)** with it  - Update an existing **Hotel Room Offer** with **type = \"PACKAGE\"** in order to include extra option(s) like breakfast in the returned price.   We strongly recommend to make use of this endpoint if you want to offer some kind of Shopping Cart experience to your customer when **[Retrieve HotelRoom Offers endpoint](/v1/documentation#operation/getV1Hotel_room_offers)** returns multiple **Hotel Room Offers** with **type = \"HOTEL_ROOM\"**.
     * Create Hotel Room Offer
     */
    createRaw(requestParameters: HotelRoomOffersCreatePayload, initOverrides?: RequestInit & {
        minCallCount?: number;
        maxCallCount?: number;
    }): Promise<runtime.ApiResponse<HotelRoomOfferApiResponse>>;
    /**
     * This enpoint creates a new **Hotel Room Offer** based on previously fetched **Hotel Room Offer(s)** and may be used for the following purposes:  - Check a specific **Hotel Room Offer** live availability  - Create a new **Hotel Room Offer** with **type = \"PACKAGE\"** based on multiple **Hotel Room Offers** where **type = \"HOTEL_ROOM\"** and be able to call **[Create Booking Policies endpoint](/v1/documentation#operation/postV1Booking_policies)** with it  - Update an existing **Hotel Room Offer** with **type = \"PACKAGE\"** in order to include extra option(s) like breakfast in the returned price.   We strongly recommend to make use of this endpoint if you want to offer some kind of Shopping Cart experience to your customer when **[Retrieve HotelRoom Offers endpoint](/v1/documentation#operation/getV1Hotel_room_offers)** returns multiple **Hotel Room Offers** with **type = \"HOTEL_ROOM\"**.
     * Create Hotel Room Offer
     */
    create(requestParameters?: HotelRoomOffersCreatePayload, initOverrides?: RequestInit): Promise<HotelRoomOfferApiResponse>;
}
