import { AdminRepository, AuthRepository, ContactsRepository, ContractRepository, HouseRepository, LPRepository, LegalRepository, MarketplaceRepository, MultiInquiryWishlistsRepository, NewsletterEmailsRepository, RequestRepositoryMerged, RequestWishlistsRepository, SearchableTagRepository, TailorRepository, UserRepositoryMerged, WaitingSearchRepositoryV2, automaticProposalsRepository, } from './repositories' export * from './repositories' import { type HttpType, http } from './services/http/client' import { HeadersCustom } from './services/http/headers' import { LocaleCustom, defaultLocalizedString } from './services/http/locale' import { omyHttp } from './services/http/omyClient' export { DocVerifier, GeoCoding, Hubspot, ShareGroop, UserLocation, } from './services' export const buildRepositories = { lc: ({ api, locale, storageClient, httpClientType = 'axios', }: HttpType & { httpClientType?: 'axios' | 'ofetch' }) => { const headers = new HeadersCustom(api.source) const localeCustom = new LocaleCustom() const httpClient = (httpClientType === 'axios' ? http : omyHttp)({ // @ts-expect-error ResT can be instanciated with an unrelated type api, locale, localeCustom, storageClient, headersCustom: headers, }) return { admin: AdminRepository(httpClient), auth: AuthRepository(httpClient), contacts: ContactsRepository(httpClient), contracts: ContractRepository(httpClient), user: UserRepositoryMerged(httpClient), houses: HouseRepository(httpClient), legal: LegalRepository(httpClient), request: RequestRepositoryMerged(httpClient), requestWishlists: RequestWishlistsRepository(httpClient), searchableTag: SearchableTagRepository(httpClient), multiInquiryWishlists: MultiInquiryWishlistsRepository(httpClient), tailor: TailorRepository(httpClient), automaticProposals: automaticProposalsRepository(httpClient), marketplace: MarketplaceRepository(httpClient), newsletterEmails: NewsletterEmailsRepository(httpClient), waitingSearches: WaitingSearchRepositoryV2(httpClient), headers, localeCustom, } }, strapiAdmin: ({ api }: { api: HttpType['api'] }) => { const httpClient = http({ api, unserialized: true }) return { lpDestination: LPRepository(httpClient), } }, } export const buildRepositoriesV2 = { lc: ({ api, locale, storageClient, httpClientType = 'axios', }: HttpType & { httpClientType?: 'axios' | 'ofetch' }) => { const headers = new HeadersCustom(api.source) const localeCustom = new LocaleCustom() const httpClient = (httpClientType === 'axios' ? http : omyHttp)({ // @ts-expect-error ResT can be instanciated with an unrelated type api, locale, localeCustom, storageClient, headersCustom: headers, }) return { httpClient, headers, localeCustom, } }, } export { defaultLocalizedString }