import { details, search } from '@qite/tide-client';
import { BookingPackage, BookingPackageDetailsRequest, BookingPackageRequest, BookingPackageSearchRequest, TideResponse } from '@qite/tide-client/build/types';
import { ApiSettingsState } from '../../shared/types';
import { buildTideClientConfig } from '../../shared/utils/tide-api-utils';

const fetchDetails = async (
  request: BookingPackageRequest<BookingPackageDetailsRequest>,
  signal: AbortSignal,
  languageCode?: string,
  apiSettings?: ApiSettingsState
): Promise<TideResponse<BookingPackage>> => {
  const tideClientConfig = buildTideClientConfig(apiSettings);
  return await details(tideClientConfig, request, signal, languageCode);
};

const fetchSearch = async (request: BookingPackageRequest<BookingPackageSearchRequest>, signal: AbortSignal, apiSettings?: ApiSettingsState) => {
  const tideClientConfig = buildTideClientConfig(apiSettings);
  return await search(tideClientConfig, request, signal);
};

const packageApi = {
  fetchDetails,
  fetchSearch
};

export default packageApi;
