{"version":3,"file":"script/bundle-19.bfacfa52e8.js","mappings":"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","sources":["webpack://touchweb/./src/constants/cookies.ts","webpack://touchweb/./src/constants/hosts.ts","webpack://touchweb/./src/constants/time.ts","webpack://touchweb/./src/lang/translate.tsx","webpack://touchweb/./src/legacy/static/utils/modules.js","webpack://touchweb/./src/services/global-socket.js","webpack://touchweb/./src/services/boot-site-wide-notifications.js","webpack://touchweb/./src/apps/tradera/configure-dayjs.js","webpack://touchweb/./src/legacy/static/app.js","webpack://touchweb/./src/legacy/static/packages/init-data.js","webpack://touchweb/./src/localization/countrycode.js","webpack://touchweb/./src/localization/format-price.ts","webpack://touchweb/./src/localization/languagecode.js","webpack://touchweb/./src/localization/use-localized-price-formatter.ts","webpack://touchweb/./src/services/socket-io-channel.js","webpack://touchweb/./src/services/toasts.tsx","webpack://touchweb/./src/state/environment/selectors.ts","webpack://touchweb/./src/state/language/selectors.ts","webpack://touchweb/./src/state/member/selectors.ts","webpack://touchweb/./src/state/multi-currency/reducer.ts","webpack://touchweb/./src/state/multi-currency/selectors.ts","webpack://touchweb/./src/state/services/types/webapi-member-generated.ts","webpack://touchweb/./src/state/shipping-region/selectors.ts","webpack://touchweb/./src/utils/api.ts","webpack://touchweb/./src/utils/cookie-helpers.ts","webpack://touchweb/./src/utils/date.js","webpack://touchweb/./src/utils/format.js","webpack://touchweb/./src/utils/http.ts","webpack://touchweb/./src/utils/object.ts","webpack://touchweb/./src/utils/scheduler.ts","webpack://touchweb/./src/utils/time-api.js","webpack://touchweb/./src/utils/server-date.js","webpack://touchweb/./src/utils/url.ts","webpack://touchweb/./src/lang/constants.mjs"],"sourcesContent":["import { PAGE_LIST_TYPES } from 'tradera/apps/my-tradera/app/constants/list-types';\n\n/**\n * @returns {object} list of default cookies that could be set in Touchweb\n * @desc\n * key: Cookie Name\n * default: Default Value if not set\n * length: Time to be stored (months)\n */\nexport const DEFAULT_COOKIES = {\n ITEM_LAYOUT: {\n key: 'Srp_Item_Layout',\n default: 'layout-grid',\n length: 365\n },\n SITE_LAYOUT: {\n key: 'Srp_Site_Layout',\n default: 'site-width-default',\n length: 365\n }\n};\n\nexport const MYTRADERA_DEFAULT_COOKIES = {\n LIST_VIEW_TYPE: {\n key: 'MyTradera_ListViewType',\n default: 'Basic',\n length: 14\n },\n ITEMS_PER_PAGE: {\n key: 'MyTradera_ItemsPerPage',\n default: '15',\n length: 14\n },\n SHOW_FILTERS: {\n key: 'MyTradera_ShowFiltersToolbar',\n default: 'hidden',\n length: 14\n },\n LIST_VIEW_TYPE_BUYER_ACTIVE_ITEMS: {\n key: 'MyTradera_ListViewType_' + PAGE_LIST_TYPES.BUYER_ACTIVE_ITEMS,\n default: 'Basic',\n length: 14\n },\n LIST_VIEW_TYPE_BUYER_PURCHASES: {\n key: 'MyTradera_ListViewType_' + PAGE_LIST_TYPES.BUYER_PURCHASES,\n default: 'Normal',\n length: 14\n },\n LIST_VIEW_TYPE_BUYER_ITEMS_LOST: {\n key: 'MyTradera_ListViewType_' + PAGE_LIST_TYPES.BUYER_ITEMS_LOST,\n default: 'Basic',\n length: 14\n },\n LIST_VIEW_TYPE_SELLER_ACTIVE: {\n key: 'MyTradera_ListViewType_' + PAGE_LIST_TYPES.SELLER_ACTIVE,\n default: 'Basic',\n length: 14\n },\n LIST_VIEW_TYPE_SELLER_SOLD: {\n key: 'MyTradera_ListViewType_' + PAGE_LIST_TYPES.SELLER_SOLD,\n default: 'Normal',\n length: 14\n },\n LIST_VIEW_TYPE_SELLER_NOT_SOLD: {\n key: 'MyTradera_ListViewType_' + PAGE_LIST_TYPES.SELLER_NOT_SOLD,\n default: 'Basic',\n length: 14\n }\n};\n\nexport const APP_DOWNLOAD_MODAL_DISMISSED = 'app_download_modal_dismissed';\nexport const GDPR_CONSENT_COOKIE = 'gdpr_consent_v1';\nexport const FORCE_GEO_DEV = 'force-geo-dev';\nexport const ITEMS_PER_PAGE = 'ITEMS_PER_PAGE';\nexport const LIST_VIEW_TYPE = 'LIST_VIEW_TYPE';\nexport const MOBILE_OPT_IN_TAGS = 'mobile-opt-in-tags';\nexport const NATIVE_APP_ENVIRONMENT = 'native-app-environment';\nexport const PREFERRED_CURRENCY = 'preferred_currency';\nexport const REGION_PICKER_DISMISSED = 'region_picker_dismissed_session';\nexport const S = 's';\nexport const SHIPPING_COUNTRY = 'shipping_country';\nexport const SHOW_FILTERS = 'SHOW_FILTERS';\nexport const SIGNUP_REFERRAL_PATH = 'signup_referral_path';\nexport const SOLD_VIEW_PICKLIST = 'sold_view_picklist';\nexport const TEST = 'test';\nexport const SAVE_SEARCH_MODAL_DISMISSED = 'save_search_modal_dismissed';\nexport const USERPREFERENCES = 'UserPreferences';\nexport const CART_ID = 'cartId';\nexport const VIEWPORT_WIDTH = 'viewport-width';\nexport const SHIP_TO_SWEDEN_DISCLAIMER_DISMISSED =\n 'ship-to-sweden-disclaimer-dismissed';\nexport const HAS_LOGGED_IN = 'has-logged-in';\nexport const EXPERIMENT_BUCKET = 'experiment_bucket';\nexport const PRODUCT_COMMUNICATION_DISMISSED =\n 'product_communication_dismissed';\nexport const WISH_LIST_NOTIFICATION_DISPLAY_COUNT =\n 'wish-list-nudge-notification-display-count';\nexport const WISH_LIST_NOTIFICATION_HIDDEN =\n 'wish-list-nudge-notification-hidden';\nexport const RECENTLY_VIEWED_ITEM_IDS = 'recently-viewed-items';\nexport const RECENT_SEARCHES = 'recent-searches';\nexport const SAVED_SEARCHES = 'saved-searches';\n\n// Social login cookies -->\nexport const APPLE_ATTEMPTED_ID = 'apple_attempted_id';\nexport const APPLE_ATTEMPTED_TOKEN = 'apple_attempted_token';\n\nexport const FACEBOOK_ATTEMPTED_ID = 'fb_attempted_id';\nexport const FACEBOOK_ATTEMPTED_TOKEN = 'fb_attempted_token';\n\nexport const GOOGLE_ATTEMPTED_ID = 'google_attempted_id';\nexport const GOOGLE_ATTEMPTED_TOKEN = 'google_attempted_token';\n\nexport const KLARNA_ATTEMPTED_ID = 'klarna_attempted_id';\nexport const KLARNA_ATTEMPTED_TOKEN = 'klarna_attempted_token';\nexport const KLARNA_ATTEMPTED_REFRESH_TOKEN = 'klarna_attempted_refresh_token';\n// <-- Social login cookies\n\nexport const COOKIE_CATEGORIES = {\n Essential: 1,\n Performance: 2,\n Functional: 3,\n Marketing: 4\n};\n\nexport const COLLECT_SSN_MODAL_DISMISSED = 'collect-ssn-modal-dismissed';\nexport const TRADERA_PAY_CONSENT_MODAL_DISMISSED =\n 'tradera-pay-consent-modal-dismissed';\nexport const HAS_SEEN_COMBINEDSHIPPING_MODAL =\n 'has-seen-combined-shipping-modal';\n\n/**\n * all cookies that are used by tradera must be categorized in the array below.\n */\nexport const CATEGORIZED_COOKIES = {\n [GDPR_CONSENT_COOKIE]: COOKIE_CATEGORIES.Essential,\n [NATIVE_APP_ENVIRONMENT]: COOKIE_CATEGORIES.Essential,\n [TEST]: COOKIE_CATEGORIES.Essential, // Unit test cookie\n\n [EXPERIMENT_BUCKET]: COOKIE_CATEGORIES.Performance,\n\n [APP_DOWNLOAD_MODAL_DISMISSED]: COOKIE_CATEGORIES.Functional,\n [DEFAULT_COOKIES.ITEM_LAYOUT.key]: COOKIE_CATEGORIES.Functional,\n [DEFAULT_COOKIES.SITE_LAYOUT.key]: COOKIE_CATEGORIES.Functional,\n [FORCE_GEO_DEV]: COOKIE_CATEGORIES.Functional,\n [HAS_LOGGED_IN]: COOKIE_CATEGORIES.Functional,\n [ITEMS_PER_PAGE]: COOKIE_CATEGORIES.Functional,\n [LIST_VIEW_TYPE]: COOKIE_CATEGORIES.Functional,\n [MOBILE_OPT_IN_TAGS]: COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.ITEMS_PER_PAGE.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.SHOW_FILTERS.key]: COOKIE_CATEGORIES.Functional,\n [PREFERRED_CURRENCY]: COOKIE_CATEGORIES.Functional,\n [REGION_PICKER_DISMISSED]: COOKIE_CATEGORIES.Functional,\n [S]: COOKIE_CATEGORIES.Functional, // saved search\n [SHIPPING_COUNTRY]: COOKIE_CATEGORIES.Essential,\n [SHOW_FILTERS]: COOKIE_CATEGORIES.Functional,\n [SIGNUP_REFERRAL_PATH]: COOKIE_CATEGORIES.Functional,\n [SOLD_VIEW_PICKLIST]: COOKIE_CATEGORIES.Functional,\n [USERPREFERENCES]: COOKIE_CATEGORIES.Functional,\n [SAVE_SEARCH_MODAL_DISMISSED]: COOKIE_CATEGORIES.Functional,\n [CART_ID]: COOKIE_CATEGORIES.Functional,\n [VIEWPORT_WIDTH]: COOKIE_CATEGORIES.Functional,\n [SHIP_TO_SWEDEN_DISCLAIMER_DISMISSED]: COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE_BUYER_ACTIVE_ITEMS.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE_BUYER_ITEMS_LOST.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE_BUYER_PURCHASES.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE_SELLER_ACTIVE.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE_SELLER_NOT_SOLD.key]:\n COOKIE_CATEGORIES.Functional,\n [MYTRADERA_DEFAULT_COOKIES.LIST_VIEW_TYPE_SELLER_SOLD.key]:\n COOKIE_CATEGORIES.Functional,\n [PRODUCT_COMMUNICATION_DISMISSED]: COOKIE_CATEGORIES.Functional,\n [WISH_LIST_NOTIFICATION_DISPLAY_COUNT]: COOKIE_CATEGORIES.Functional,\n [WISH_LIST_NOTIFICATION_HIDDEN]: COOKIE_CATEGORIES.Functional,\n [COLLECT_SSN_MODAL_DISMISSED]: COOKIE_CATEGORIES.Functional,\n [TRADERA_PAY_CONSENT_MODAL_DISMISSED]: COOKIE_CATEGORIES.Functional,\n [HAS_SEEN_COMBINEDSHIPPING_MODAL]: COOKIE_CATEGORIES.Functional,\n [RECENTLY_VIEWED_ITEM_IDS]: COOKIE_CATEGORIES.Functional,\n [RECENT_SEARCHES]: COOKIE_CATEGORIES.Functional,\n [APPLE_ATTEMPTED_ID]: COOKIE_CATEGORIES.Essential,\n [APPLE_ATTEMPTED_TOKEN]: COOKIE_CATEGORIES.Essential,\n [FACEBOOK_ATTEMPTED_ID]: COOKIE_CATEGORIES.Essential,\n [FACEBOOK_ATTEMPTED_TOKEN]: COOKIE_CATEGORIES.Essential,\n [GOOGLE_ATTEMPTED_ID]: COOKIE_CATEGORIES.Essential,\n [GOOGLE_ATTEMPTED_TOKEN]: COOKIE_CATEGORIES.Essential,\n [KLARNA_ATTEMPTED_ID]: COOKIE_CATEGORIES.Essential,\n [KLARNA_ATTEMPTED_TOKEN]: COOKIE_CATEGORIES.Essential,\n [KLARNA_ATTEMPTED_REFRESH_TOKEN]: COOKIE_CATEGORIES.Essential,\n [SAVED_SEARCHES]: COOKIE_CATEGORIES.Functional\n};\n\nexport const COOKIE_DEFAULT_CATEGORY = COOKIE_CATEGORIES.Functional;\n\n/**\n * List of cookies which are OK for any JavaScript to access. Never add cookies\n * that would be a security risk if exposed to third party scripts.\n */\nexport const COOKIES_REQUIRED_FOR_SSR_EXPOSED_TO_JS_IN_BROWSER = [\n CART_ID,\n EXPERIMENT_BUCKET,\n FORCE_GEO_DEV,\n GDPR_CONSENT_COOKIE,\n REGION_PICKER_DISMISSED,\n PRODUCT_COMMUNICATION_DISMISSED,\n SHIPPING_COUNTRY,\n RECENTLY_VIEWED_ITEM_IDS,\n RECENT_SEARCHES,\n DEFAULT_COOKIES.SITE_LAYOUT.key,\n DEFAULT_COOKIES.ITEM_LAYOUT.key,\n SAVED_SEARCHES\n];\n","export default {\n TRADERA: 'https://www.tradera.com'\n};\n","export const DAY_IN_SECONDS = 24 * 60 * 60;\nexport const HOUR_IN_SECONDS = 60 * 60;\nexport const MINUTE_IN_SECONDS = 60;\n\nexport const DAY_IN_MILLISECONDS = DAY_IN_SECONDS * 1000;\nexport const HOUR_IN_MILLISECONDS = HOUR_IN_SECONDS * 1000;\nexport const MINUTE_IN_MILLISECONDS = MINUTE_IN_SECONDS * 1000;\nexport const SECOND_IN_MILLISECONDS = 1000;\n","import React, { useRef } from 'react';\nimport { toLocalizedUrl } from 'tradera/utils/url';\nimport {\n NS_TOUCHWEB,\n I18N_FRONTEND_NAMESPACES,\n TRANS_SUFFIX\n} from './constants.mjs';\nimport { isServer } from 'tradera/utils/nextjs';\nimport { useAppSelector as useSelector } from 'tradera/state/hooks';\n\n// eslint-disable-next-line no-restricted-imports\nimport {\n type TFunction,\n type TranslationProps,\n useTranslation,\n Trans as TransComponent,\n I18nextProvider as NextI18nextProvider\n} from 'react-i18next';\nimport type { i18n } from 'i18next';\nimport type { RootState } from 'tradera/state/configure-store';\nimport { selectPreferredLanguageCode } from 'tradera/state/language/selectors';\nimport type { AddTranslation } from 'tradera/lang/translations-context';\nimport { useAddTranslation } from 'tradera/lang/translations-context';\nimport { useQuery } from 'tradera/hooks/use-query';\n\nexport type TranslationFunction = TFunction;\n\nexport const I18nextProvider = NextI18nextProvider;\n\nconst createWrappedT =\n (\n i18nObject: i18n,\n t: TranslationFunction,\n addTranslation: AddTranslation,\n language: string,\n hasLoadedAllTranslations: boolean,\n throwOnTransSuffix?: boolean,\n isShowingTranslationKeysEnabled?: boolean\n ) =>\n (\n i18nKey: string,\n options?: TranslationProps | string,\n ...args: object[]\n ) => {\n if (\n typeof i18nKey === 'string' &&\n i18nKey.endsWith(TRANS_SUFFIX) &&\n throwOnTransSuffix\n ) {\n throw new Error(\n `t function keys should not have \"Trans\" suffix, got key \"${i18nKey}\". Use Trans component instead.`\n );\n }\n const translation = t(\n i18nKey,\n // @ts-ignore: TS2698 because I have no idea how these types from/using i18n work\n { ...options, lng: language, hasLoadedAllTranslations },\n // @ts-ignore: TS2345 because I have no idea how these types from/using i18n work\n ...args\n );\n if (isServer) {\n addTranslationForHydration(\n i18nKey,\n options,\n language,\n i18nObject,\n addTranslation\n );\n }\n return isShowingTranslationKeysEnabled ? i18nKey : translation;\n };\n\nconst isQueryToggleEnabled = (query: string | null) => {\n if (query === null) return false;\n return ['1', 'true', ''].includes(query);\n};\n\n/**\n * i18next translation wrappers for translating static text in react components\n * When to use what?\n * -----\n * 1. For functional components use `useTranslator()` hook\n * 2. For class components use `withTranslator()` HOC\n */\n\n/**\n * Translation hook, wrapper for react-i18next\n */\nexport const useTranslator = () => {\n const addTranslation = useAddTranslation();\n const [isShowingTranslationKeysEnabledQuery] = useQuery('translation-keys');\n const isShowingTranslationKeysEnabled = isQueryToggleEnabled(\n isShowingTranslationKeysEnabledQuery\n );\n const language = useSelector(selectPreferredLanguageCode);\n const loadedLanguages =\n useSelector((state: RootState) => state.status?.loadedLanguages) || [];\n const hasLoadedAllTranslations = loadedLanguages.includes(language);\n const { t, ready, i18n } = useTranslation(I18N_FRONTEND_NAMESPACES);\n const wrappedT: TranslationFunction = React.useMemo(\n () =>\n createWrappedT(\n i18n,\n t,\n addTranslation,\n language,\n hasLoadedAllTranslations,\n true,\n isShowingTranslationKeysEnabled\n ),\n [\n hasLoadedAllTranslations,\n i18n,\n t,\n addTranslation,\n language,\n isShowingTranslationKeysEnabled\n ]\n );\n return { t: ready ? wrappedT : () => '...', i18n };\n};\n\nconst addTranslationForHydration = (\n i18nKey: string,\n options = {},\n language: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n i18n: any,\n addTranslation: AddTranslation\n) => {\n const { key, namespaces } = i18n.translator.extractFromKey(\n i18nKey,\n options\n );\n const namespace = namespaces[namespaces.length - 1];\n const { res, exactUsedKey } = i18n.translator.resolve(key, {\n ...options,\n lng: language,\n ns: namespace\n });\n const pluralizedKey = exactUsedKey || i18nKey;\n\n addTranslation(namespace, pluralizedKey, res);\n};\n\nexport type WithTranslatorProps = ReturnType['t'];\n\n/**\n * Translation HOC, wrapper for react-i18next\n */\nexport function withTranslator<\n TComponent extends WithTranslatorProps = WithTranslatorProps\n>(\n WrappedComponent: React.ComponentType\n): React.ComponentType {\n function WithTranslator(\n props: Omit\n ) {\n const { t } = useTranslator();\n return ;\n }\n\n WithTranslator.displayName = `withTranslator(${\n WrappedComponent.displayName || WrappedComponent.name\n }`;\n return WithTranslator;\n}\n\nexport type WithUrlLocalizerProps = ReturnType<\n typeof useUrlLocalizer\n>['toLocalizedUrl'];\n\n/**\n * Localization HOC, wrapper for URL-localizer\n * @param {Component} WrappedComponent\n */\nexport function withUrlLocalizer<\n TComponent extends WithUrlLocalizerProps = WithUrlLocalizerProps\n>(WrappedComponent: React.ComponentType) {\n function WithUrlLocalizer(\n props: Omit\n ) {\n const { toLocalizedUrl } = useUrlLocalizer();\n return ;\n }\n\n WithUrlLocalizer.displayName = `withUrlLocalizer(${\n WrappedComponent.displayName || WrappedComponent.name\n }`;\n\n return WithUrlLocalizer;\n}\n\n/**\n * Current language hook, wrapper for react-i18next\n */\nexport const useCurrentLanguage = () => {\n const preferredLanguage = useSelector(selectPreferredLanguageCode);\n // Using language from Redux instead of i18n.language since that\n // will always be 'sv' if we don't clone the instance.\n return {\n language: preferredLanguage\n };\n};\n\n/**\n * Returns function to append language prefix to link\n */\nexport const useUrlLocalizer = () => {\n const preferredLanguage = useSelector(selectPreferredLanguageCode);\n const urlLocalizer = useRef(function toLocalizedUrlWrapper(\n url: T\n ): T | string {\n return toLocalizedUrl(url, preferredLanguage);\n });\n return {\n toLocalizedUrl: urlLocalizer.current\n };\n};\n\nexport type TransProps = Omit<\n React.ComponentProps,\n 'i18nKey'\n> & {\n i18nKey: string;\n};\n\nexport const Trans = (props: TransProps) => {\n const addTranslation = useAddTranslation();\n const language = useSelector(selectPreferredLanguageCode);\n const [isShowingTranslationKeysEnabledQuery] = useQuery('translation-keys');\n const isShowingTranslationKeysEnabled = isQueryToggleEnabled(\n isShowingTranslationKeysEnabledQuery\n );\n const loadedLanguages =\n useSelector((state: RootState) => state.status?.loadedLanguages) || [];\n const hasLoadedAllTranslations = loadedLanguages.includes(language);\n const { t, ready, i18n } = useTranslation(I18N_FRONTEND_NAMESPACES);\n const { i18nKey, children, defaults } = props;\n const wrappedT = React.useMemo(\n () =>\n createWrappedT(\n i18n,\n t,\n addTranslation,\n language,\n hasLoadedAllTranslations,\n false,\n isShowingTranslationKeysEnabled\n ),\n [\n hasLoadedAllTranslations,\n i18n,\n t,\n addTranslation,\n language,\n isShowingTranslationKeysEnabled\n ]\n );\n\n // TODO: since we don't have TS everywhere we still need to check these things, when we have TS we can use TS to enforce most of it instead instead\n\n if (!i18nKey) {\n throw new Error('Trans component key must have a i18nKey property');\n }\n if (!i18nKey.endsWith(TRANS_SUFFIX)) {\n throw new Error(\n `Trans component key must have the \"Trans\" suffix, got key \"${i18nKey}\"`\n );\n }\n if (children) {\n throw new Error(\n `Trans component must not have children, use components or t('${i18nKey}') function instead`\n );\n }\n if (defaults) {\n throw new Error(\n 'Trans components must not have defaults, use lokalise instead.'\n );\n }\n if (!ready) {\n return <>...;\n }\n return ;\n};\n","import { logger } from 'packages/logger';\n\nfunction isSpaModule(module, initData) {\n const { isSinglePageApp } = initData;\n switch (module) {\n case 'endless-recommendation':\n case 'favourite-sellers':\n case 'landing':\n case 'report-item':\n case 'verify-bankid':\n case 'tradera-shop':\n return true;\n\n default:\n return isSinglePageApp;\n }\n}\n\nasync function loadSpaModule(initData) {\n const module = await import(\n /* webpackChunkName: \"tradera\" */ '../../../apps/tradera/'\n );\n return module.default(initData);\n}\n\nasync function loadModule(module) {\n switch (module) {\n // Fallback modules for when SPA is toggled off\n // TODO: Remove when fully incorporated in SPA\n case 'order-checkout':\n case 'verify-bankid':\n case 'landing':\n case 'cart':\n case 'upi':\n case 'inr':\n return await import(\n /* webpackChunkName: \"tradera\" */ '../../../apps/tradera/'\n );\n\n // Non-SPA modules\n case 'basic':\n return await import(\n /* webpackChunkName: \"basic\" */ '../app/pages/basic'\n );\n case 'messages':\n return await import(\n /* webpackChunkName: \"messages\" */ '../app/pages/messages'\n );\n default:\n return await import(\n /* webpackChunkName: \"basic\" */ '../app/pages/basic'\n );\n }\n}\n\nfunction runModule(module, initData = {}) {\n if (!module.default) {\n console.error(`Cannot run module \"${module}\" without exported default`);\n }\n return module.default(initData);\n}\n\nconst handleModuleError = (error) => logger(error);\n\nexport { isSpaModule, loadSpaModule, loadModule, runModule, handleModuleError };\n","import { SocketIoChannel } from 'tradera/services/socket-io-channel';\nimport { isServer } from 'tradera/utils/nextjs';\n\nlet globalSocket = null;\n\nexport const getGlobalSocket = (socketUrl) => {\n if (isServer) {\n throw new Error('Must not be used on server.');\n }\n if (!globalSocket) {\n // eslint-disable-next-line better-mutation/no-mutation\n globalSocket = new SocketIoChannel(socketUrl, true);\n }\n return globalSocket;\n};\n","import {\n showItemFirstBidToast,\n showItemOutbiddedToast,\n showItemPaidToast,\n showItemSoldToast,\n showItemWishListReminderToast,\n showItemWonToast\n} from './toasts';\nimport { getGlobalSocket } from './global-socket';\nimport { touchWebClient } from 'tradera/utils/http';\n\nconst refreshLoginState = async (socket) => {\n try {\n const response = await touchWebClient.get('login/state');\n\n if (!response.data?.isLoggedIn) {\n return;\n }\n\n socket.disconnect();\n socket.connect();\n } catch {\n // Could not get token.\n }\n};\n\nexport const bootSiteWideNotifications = ({ socketUrl, joinMemberRoom }) => {\n if (!joinMemberRoom) {\n return;\n }\n\n const socket = getGlobalSocket(socketUrl);\n let isRetry = false;\n socket.on('JoinMemberRoom', async ({ success }) => {\n // To avoid infinite loop\n if (success || isRetry) {\n // eslint-disable-next-line better-mutation/no-mutation\n isRetry = false;\n return;\n }\n\n // eslint-disable-next-line better-mutation/no-mutation\n isRetry = true;\n await refreshLoginState(socket);\n });\n socket.addEventListener('MemberItemOutbidded', (data) =>\n showItemOutbiddedToast(data.ItemId, data.NewLeadingBidAmount)\n );\n socket.addEventListener('MemberItemFirstBid', (data) =>\n showItemFirstBidToast(data.ItemId)\n );\n socket.addEventListener('MemberItemSold', (data) =>\n showItemSoldToast(data.ItemId, data.Price)\n );\n socket.addEventListener('MemberItemWon', (data) =>\n showItemWonToast(data.ItemId, data.Price)\n );\n socket.addEventListener('MemberItemPaid', (data) =>\n showItemPaidToast(data.ItemId)\n );\n socket.addEventListener('MemberItemWishListReminder', (data) =>\n showItemWishListReminderToast(data.ItemId, data.TimeLeftMinutes)\n );\n socket.join('member');\n};\n","import dayjs from 'dayjs';\nimport isBetween from 'dayjs/plugin/isBetween';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\n\nexport const configureDayjs = (preferredLanguageCode) => {\n dayjs.locale(preferredLanguageCode);\n dayjs.extend(isBetween);\n dayjs.extend(isSameOrAfter);\n};\n","import 'core-js/modules/es.promise.finally';\nimport 'core-js/modules/es.array.iterator';\nimport 'intersection-observer';\nimport 'custom-event-polyfill';\nimport 'whatwg-fetch';\n\nimport initData from 'init-data';\nimport {\n handleModuleError,\n isSpaModule,\n loadModule,\n loadSpaModule,\n runModule\n} from 'utils/modules';\nimport { bootLanguages } from 'tradera/lang/boot-languages';\nimport { GtmService as gtm } from 'tradera/services/google-tagmanager/google-tagmanager-service';\nimport { bootSiteWideNotifications } from 'tradera/services/boot-site-wide-notifications';\nimport { syncServerTime } from 'tradera/utils/server-date';\nimport { configureDayjs } from 'tradera/apps/tradera/configure-dayjs';\nimport { isServer } from 'tradera/utils/nextjs';\nimport 'tradera/styles/global.scss';\n\nconst bootInit = () => {\n bootLanguages();\n gtm.loadGtmScript();\n\n if (initData) {\n configureDayjs(initData.languageCodeIso2);\n syncServerTime();\n\n if (initData.featureSwitches['site-wide-notifications']) {\n bootSiteWideNotifications({\n socketUrl: initData.webLiveUrl,\n joinMemberRoom: !!initData.memberId\n });\n }\n\n const module = initData.module.split('/')[4];\n let moduleLoader;\n if (isSpaModule(module, initData)) {\n moduleLoader = loadSpaModule(initData);\n } else {\n moduleLoader = import('./init-module')\n .then((initModule) => initModule.default(initData))\n .then(() => loadModule(module, initData))\n .then((loadedModule) => runModule(loadedModule, initData));\n }\n moduleLoader\n .then(() => {\n window.document.body.setAttribute('data-module-loaded', 'true');\n return;\n })\n .catch(handleModuleError);\n }\n};\n\nif (!isServer) {\n bootInit();\n}\n","/**\n * @returns initData as JSON;\n * Default\n */\nconst initData = function () {\n if (typeof window === 'undefined') {\n return {};\n } else if (!window.initData) {\n const initDataEL = document.getElementById('init-data');\n if (initDataEL) {\n const data = initDataEL.getAttribute('data-init-data');\n const parsed = JSON.parse(data);\n return parsed;\n } else {\n return null;\n }\n } else {\n return window.initData;\n }\n};\n\nexport const getInitData = initData;\nexport default new initData();\n","export const isSwedenCountryCodeOrUndefined = (countryCodeIso2) =>\n countryCodeIso2 === undefined ||\n countryCodeIso2 === null ||\n countryCodeIso2.toLowerCase() === 'se';\n\nexport const isSwedenCountryNameOrUndefined = (countryName) =>\n countryName === undefined ||\n countryName === null ||\n countryName.toLowerCase() === 'sweden';\n\nexport const isDenmarkCountryCode = (countryCodeIso2) =>\n !isSwedenCountryCodeOrUndefined(countryCodeIso2) &&\n countryCodeIso2.toLowerCase() === 'dk';\n\nexport const isNetherlandsCountryCode = (countryCodeIso2) =>\n !isSwedenCountryCodeOrUndefined(countryCodeIso2) &&\n countryCodeIso2.toLowerCase() === 'nl';\n\nexport const areCountryCodesIso2Equal = (first, second) =>\n (first || 'SE').toUpperCase() === (second || 'SE').toUpperCase();\n","import { formatNumberWithSeparators } from 'tradera/utils/format';\n\nexport type Price = string | number;\n\ntype FormatPriceOptions = {\n currency: string;\n preferredCurrency: string;\n style: 'decimal' | 'currency' | 'percent' | 'unit';\n currencyDisplay: 'code' | 'symbol' | 'narrowSymbol' | 'name';\n useGrouping: boolean;\n roundUp: boolean;\n minimumFractionDigits: number;\n maximumFractionDigits: number;\n};\n\nexport type OverrideFormatPriceOptions = Partial;\n\nexport const formatPrice = (\n price: Price,\n inputLocale: string | null,\n overrideOptions: OverrideFormatPriceOptions = {}\n): string => {\n const locale = inputLocale || 'sv-SE';\n const defaultOptions: FormatPriceOptions = {\n style: 'currency',\n currency: 'SEK',\n preferredCurrency: 'SEK',\n currencyDisplay:\n locale.startsWith('sv') &&\n (overrideOptions.currency || 'SEK') === 'SEK' &&\n (overrideOptions.preferredCurrency || 'SEK') === 'SEK'\n ? 'symbol'\n : 'code',\n useGrouping: false,\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n roundUp: false\n };\n const options = {\n ...defaultOptions,\n ...overrideOptions\n };\n let priceAsNumber = typeof price !== 'number' ? parseInt(price) : price;\n\n if (options.roundUp) {\n const decimalFactorForRounding = Math.pow(\n 10,\n options.maximumFractionDigits\n );\n priceAsNumber =\n Math.ceil(priceAsNumber * decimalFactorForRounding) /\n decimalFactorForRounding;\n }\n\n if (!isLocaleFormattingSupportedInBrowser) {\n const suffix =\n options.currencyDisplay === 'code' && options.currency === 'SEK'\n ? 'kr'\n : options.currency;\n return `${priceAsNumber} ${suffix}`;\n }\n\n const formattedPrice = priceAsNumber.toLocaleString(locale, options);\n return formatNumberWithSeparators(formattedPrice);\n};\n\n// https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString\nfunction toLocaleStringSupportsLocales() {\n try {\n Number(0).toLocaleString('i');\n } catch (e: unknown) {\n return (\n e !== null &&\n typeof e === 'object' &&\n 'name' in e &&\n e.name === 'RangeError'\n );\n }\n return false;\n}\n\n// https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString\nfunction toLocaleStringSupportsOptions() {\n return !!(\n typeof Intl === 'object' &&\n Intl &&\n typeof Intl.NumberFormat === 'function'\n );\n}\n\nconst isLocaleFormattingSupportedInBrowser =\n toLocaleStringSupportsLocales() && toLocaleStringSupportsOptions();\n","export const isSwedishOrUndefined = (languageCodeIso2) =>\n languageCodeIso2 === undefined || languageCodeIso2.toLowerCase() === 'sv';\n\nexport const getLanguageFromCountryCode = (countryCodeIso2) => {\n const key = countryCodeIso2?.toLowerCase() || 'se';\n const languageMap = {\n se: 'sv',\n dk: 'da',\n de: 'de',\n fr: 'fr',\n nl: 'nl'\n };\n return languageMap[key] || 'en';\n};\n\nexport const getCountryCodeForFlagFromLanguage = (languageCode) => {\n const key = languageCode?.toLowerCase() || 'sv';\n const countryMap = {\n en: 'gb', // We default to GB which isn't strictly correct\n da: 'dk',\n de: 'de',\n fr: 'fr',\n nl: 'nl'\n };\n return countryMap[key] || 'se';\n};\n\nexport const getCountryCodeFromLanguage = (languageCode) => {\n const key = languageCode?.toLowerCase() || 'sv';\n const countryMap = {\n da: 'dk',\n de: 'de',\n fr: 'fr',\n nl: 'nl'\n };\n return countryMap[key] || 'se';\n};\n\nexport const areLanguageCodesIso2Equal = (first, second) =>\n (first || 'SV').toUpperCase() === (second || 'SV').toUpperCase();\n","import { useCallback } from 'react';\nimport { useCurrentLanguage } from 'tradera/lang/translate';\nimport { useAppSelector } from 'tradera/state/hooks';\nimport { selectPreferredCurrency } from 'tradera/state/multi-currency/selectors';\nimport type {\n OverrideFormatPriceOptions,\n Price\n} from 'tradera/localization/format-price';\nimport { formatPrice } from 'tradera/localization/format-price';\n\n/**\n * Formats a price in the current language and currency.\n */\nexport const useLocalizedPriceFormatter = () => _useLocalizedPriceFormatter();\n\n/**\n * Same as useLocalizedPriceFormatter but it always rounds up. Needed for fixed prices,\n * so we never display a price that is lower than what the user will pay in the end.\n */\nexport const useLocalizedPriceFormatterRoundingUp = () =>\n _useLocalizedPriceFormatter({ roundUp: true });\n\n/**\n * Does not convert anything. If you for some reason are working with the local currency\n * it could be used but avoid it. Example of usage: in the bid-modal we want to display\n * the exact amount that was input\n */\nexport const useLocalizedPriceFormatterNoConversion = () =>\n _useLocalizedPriceFormatter({ conversion: false });\n\n/**\n * Makes the conversion but leaves the symbol. Used to compare local amounts to make a\n * decision in the code.\n */\nexport const useLocalizedPriceFormatterNoSymbol = () =>\n _useLocalizedPriceFormatter({ style: 'decimal' });\n\n/**\n * Formats a price in the current language and currency but forces the value to be\n * rendered using up to two decimals, even for currencies which are normally without\n * decimals.\n */\nexport const useLocalizedPriceFormatterAllowFractions = () =>\n _useLocalizedPriceFormatter({ allowFractions: true });\n\ntype LocalizedPriceFormatterOptions = {\n allowFractions?: boolean;\n conversion?: boolean;\n roundUp?: OverrideFormatPriceOptions['roundUp'];\n style?: OverrideFormatPriceOptions['style'];\n};\n\n/**\n * Internal to this module, needed to limit the scope of the API.\n */\nconst _useLocalizedPriceFormatter = ({\n conversion = true,\n style,\n roundUp,\n allowFractions\n}: LocalizedPriceFormatterOptions = {}) => {\n const { language } = useCurrentLanguage();\n const preferredCurrency = useAppSelector(selectPreferredCurrency);\n\n return useCallback(\n (price: Price) =>\n formatPrice(\n conversion ? preferredCurrency.rate * Number(price) : price,\n language,\n {\n currency: preferredCurrency.code,\n minimumFractionDigits: preferredCurrency.decimals,\n maximumFractionDigits: allowFractions\n ? 2\n : preferredCurrency.decimals,\n ...(style ? { style } : {}),\n ...(roundUp ? { roundUp } : {})\n }\n ),\n [\n conversion,\n language,\n preferredCurrency,\n roundUp,\n style,\n allowFractions\n ]\n );\n};\n","import io from 'socket.io-client';\nimport { logger } from 'packages/logger';\nimport { isServer } from 'tradera/utils/nextjs';\n\nexport class MissingSocketIoServerUrl extends ReferenceError {}\nexport class MissingRoomId extends ReferenceError {}\n\nconst isAllowedToConnect = !isServer;\n\n/**\n * Connect to a socket.io channel & add callbacks for events it broadcasts\n * @param {string} socketIoServerUrl\n */\nexport class SocketIoChannel {\n constructor(socketIoServerUrl, autoConnect = false) {\n if (!socketIoServerUrl) {\n throw new MissingSocketIoServerUrl();\n }\n this.socket = io(socketIoServerUrl, {\n autoConnect: isAllowedToConnect && autoConnect\n });\n this.events = {};\n this.rooms = new Set();\n\n this.socket.on('connect', () => {\n // Rejoin room on reconnect if network connection is lost\n this.rooms.forEach((room) => this.join(room));\n });\n\n this.socket.on('clientEvent', (payload) => {\n if (!payload.Type) {\n logger('socket.io missing clientEvent Type', {\n contexts: {\n socketIo: {\n payload\n }\n }\n });\n return;\n }\n const callback = this.events[payload.Type];\n if (callback) {\n callback(payload.Event, this);\n } else {\n logger(`socket.io unknown clientEvent type`, {\n contexts: {\n socketIo: {\n type: payload.Type\n }\n }\n });\n }\n });\n }\n\n connect() {\n if (isAllowedToConnect && !this.isConnected()) this.socket.connect();\n }\n\n join(room) {\n if (!room) {\n throw new MissingRoomId();\n }\n if (this.isConnected()) {\n this.socket.emit('join', room);\n }\n if (!this.rooms.has(room)) {\n // Queue join until connect\n this.rooms.add(room);\n }\n }\n\n leave(room, rejoinOnConnect = false) {\n if (!room) {\n throw new MissingRoomId();\n }\n if (this.isConnected() && this.rooms.has(room)) {\n this.socket.emit('leave', room);\n }\n if (!rejoinOnConnect) {\n this.rooms.delete(room);\n }\n }\n\n addEventListener(event, callback) {\n this.events[event] = callback;\n }\n\n removeEventListener(event) {\n delete this.events[event];\n }\n\n on(event, callback) {\n this.socket.on(event, callback);\n }\n\n off(event, callback) {\n this.socket.off(event, callback);\n }\n\n isConnected() {\n return this.socket?.connected;\n }\n\n disconnect() {\n if (!this || !this.isConnected()) return;\n this.rooms.forEach((room) => this.leave(room, true));\n this.socket.disconnect();\n }\n}\n","import { createElement } from 'react';\nimport { toast } from 'react-toastify';\n\nimport { ItemToast } from 'tradera/components/toasts/item-toast';\nimport { MessageToast } from 'tradera/components/toasts/message-toast';\nimport { isServer } from 'tradera/utils/nextjs';\nimport { webApiClient } from '../utils/http';\nimport { createQueue } from './toast-queue';\nimport type { ItemBasicInfoApiResponse } from 'tradera/state/services/types/webapi-browse-generated';\n\nconst queuedToasts = createQueue();\n\nconst openNextToast = async () => {\n if (isServer) {\n return;\n }\n if (queuedToasts.isInProgress()) {\n return;\n }\n const nextItem = queuedToasts.next();\n if (nextItem) {\n try {\n const queueLength = queuedToasts.getLength();\n const toastOptions = {\n autoClose: Math.max(2, 5 - queueLength) * 1000,\n onClose: () => {\n queuedToasts.notifyDone();\n openNextToast();\n }\n };\n if (nextItem.eventData.itemId) {\n const response =\n await webApiClient.get(\n `/browse/item-basic-info/${nextItem.eventData.itemId}`\n );\n const { imageUrl, itemUrl, shortDescription } =\n response.data.item || {};\n toast(\n // TODO: convert to JSX when we have a proper story for this\n createElement(ItemToast, {\n imageUrl,\n itemUrl,\n shortDescription,\n type: nextItem.type,\n eventData: nextItem.eventData\n }),\n toastOptions\n );\n } else if (nextItem.eventData.message) {\n const { message, header, messageData, headerData } =\n nextItem.eventData;\n toast(\n ,\n { ...toastOptions, type: nextItem.eventData.type }\n );\n }\n } catch (e) {\n queuedToasts.notifyDone();\n openNextToast();\n throw e;\n }\n }\n};\n\nconst handleNotification = async (\n type: string,\n eventData:\n | {\n message: string;\n header?: string | null;\n messageData: unknown;\n headerData: unknown;\n type: (typeof toast.TYPE)[keyof typeof toast.TYPE] | string;\n }\n | {\n itemId: number;\n newLeadingBidAmount?: number;\n price?: number;\n timeLeftMinutes?: number;\n },\n ttlInMinutes = 10\n) => {\n if (document.visibilityState !== 'visible') {\n // We don't want to show messages if page is not visible. If we do they will queue up!\n return;\n }\n queuedToasts.add({ type, eventData }, ttlInMinutes);\n openNextToast();\n};\n\nexport const showItemOutbiddedToast = (\n itemId: number,\n newLeadingBidAmount: number\n) =>\n handleNotification('ItemOutbidded', {\n itemId,\n newLeadingBidAmount\n });\n\nexport const showItemFirstBidToast = (itemId: number) =>\n handleNotification('ItemFirstBid', { itemId });\n\nexport const showItemSoldToast = (itemId: number, price: number) =>\n handleNotification('ItemSold', { itemId, price });\n\nexport const showItemWonToast = (itemId: number, price: number) =>\n handleNotification('ItemWon', { itemId, price });\n\nexport const showItemPaidToast = (itemId: number) =>\n handleNotification('ItemPaid', { itemId });\n\nexport const showItemWishListReminderToast = (\n itemId: number,\n timeLeftMinutes: number\n) =>\n handleNotification(\n 'ItemWishListReminder',\n { itemId, timeLeftMinutes },\n timeLeftMinutes > 10 ? 10 : 2\n );\n\n/**\n *\n * @param message The message translation key\n * @param header The header translation key\n * @param messageData Any data that's needed for the message translation key\n * @param headerData Any data that's needed for the header translation key\n */\nexport const showSuccessToast = (\n message: string,\n header?: string,\n messageData: unknown = null,\n headerData: unknown = null\n) => {\n handleNotification('Message', {\n message,\n header,\n messageData,\n headerData,\n type: toast.TYPE.SUCCESS\n });\n};\n\nexport const showErrorToast = (\n message: string,\n header?: string | null,\n messageData: unknown = null,\n headerData: unknown = null\n) => {\n handleNotification('Message', {\n header,\n message,\n messageData,\n headerData,\n type: toast.TYPE.ERROR\n });\n};\n\nexport const showInfoToast = (\n message: string,\n header?: string,\n messageData = null,\n headerData = null\n) => {\n handleNotification('Message', {\n message,\n header,\n messageData,\n headerData,\n type: toast.TYPE.INFO\n });\n};\n\n// export const ToastTestButton = () => (\n// {\n// e.preventDefault();\n// showItemWishListReminderToast(85391643, 3);\n// showItemOutbiddedToast(85391639, 99);\n// showItemFirstBidToast(85391639);\n// showItemSoldToast(85391639, 1234);\n// showItemWonToast(85391639, 1234);\n// showItemPaidToast(85391639);\n// }}>\n// Test\n// \n// );\n","import type { RootState } from '../configure-store';\n\nexport const selectEnvironment = (state: RootState) => state.environment;\n\nexport const selectFeatureSwitches = (state: RootState) =>\n state?.environment?.featureSwitches;\nexport const selectIsFeatureEnabled =\n (featureName: string) => (state: RootState) =>\n selectFeatureSwitches(state)?.[featureName] === true;\n\nexport const selectEnvVariables = (state: RootState) =>\n state.environment.variables;\n\nexport const selectWebLiveUrl = (state: RootState) =>\n state.environment.variables.PUBLIC_WEB_LIVE_URL;\n\nexport const selectBrowserName = (state: RootState) =>\n state?.environment?.browserName;\n\nexport const selectIsNativeApp = (state: RootState) =>\n !!state?.environment?.isNativeAppContext;\n\nexport const selectNativeAppLanguage = (state: RootState) =>\n state?.environment?.appLanguage;\n","import { DEFAULT_LANGUAGE } from 'tradera/lang/constants.mjs';\nimport type { RootState } from '../configure-store';\nimport { createSelector } from '@reduxjs/toolkit';\n\nexport const selectAvailableLanguages = (state: RootState) =>\n state.language.available;\n\nexport const selectAvailableLanguageCodesIso2 = createSelector(\n selectAvailableLanguages,\n (available) => available?.map((x) => x.languageCodeIso2)\n);\n\nexport const selectPreferredLanguage = (state: RootState) =>\n state.language.preferred;\n\nexport const selectPreferredLanguageCode = (state: RootState) =>\n state?.language?.preferred?.languageCodeIso2 || DEFAULT_LANGUAGE;\n\nexport const selectLocale = (state: RootState) => {\n const language = selectPreferredLanguageCode(state);\n const country = state.language.memberCountryCodeIso2 || 'SE';\n\n return `${language}-${country}`;\n};\n\nexport const selectIsForeignLanguageActivated = (state: RootState) =>\n selectPreferredLanguage(state)?.languageCodeIso2 !== DEFAULT_LANGUAGE;\n\nexport const selectAutomaticTranslationPreferred = (\n state: RootState\n): boolean => state.language.automaticTranslationPreferred ?? true;\n","import { selectShippingRegionCountryCodeIso2 } from 'tradera/state/shipping-region/selectors';\nimport { areCountryCodesIso2Equal } from 'tradera/localization/countrycode';\nimport type { RootState } from '../configure-store';\nimport { RequirementTypeApi } from '../services/types/webapi-member-generated';\n\nexport const selectMember = (state: RootState) => state.member;\n\nexport const selectIsLoggedIn = (state: RootState) => state.member?.isLoggedIn;\n\nexport const selectGeolocation = (state: RootState) =>\n state.member?.geolocation;\n\nexport const selectMemberId = (state: RootState) => state?.member?.memberId;\n\nexport const selectMemberAlias = (state: RootState) =>\n state.member?.memberAlias;\n\nexport const selectMemberEmail = (state: RootState) =>\n state.member?.memberEmail;\n\nexport const selectMemberFirstName = (state: RootState) =>\n state.member?.memberFirstName;\n\nexport const selectMemberLastName = (state: RootState) =>\n state.member?.memberLastName;\n\nexport const selectMemberBirthdate = (state: RootState) =>\n state.member?.memberBirthdate;\n\nexport const selectCurrencyCode = (state: RootState) =>\n state.member?.currencyCode;\n\n// Prefer using selectShippingRegionCountryCodeIso2 to be safe for all users, non-logged in and logged in.\nexport const selectMemberCountryCodeIso2 = (state: RootState) =>\n state.member?.memberCountryCodeIso2;\n\nexport const selectIsOutsideSweden = (state: RootState) =>\n state.member?.geolocation?.isoCode &&\n state.member?.geolocation?.isoCode.toLowerCase() !== 'se';\n\nexport const showDanishFromCountry = (state: RootState) => {\n const fromCountry = selectShippingRegionCountryCodeIso2(state);\n return areCountryCodesIso2Equal(fromCountry, 'DK');\n};\n\nexport const selectMemberTown = (state: RootState) => state.member?.memberTown;\n\nexport const selectMemberPermissions = (state: RootState) =>\n state.member.permissions;\n\nexport const selectIsUnderage = (state: RootState) => {\n const permissions = selectMemberPermissions(state);\n return (\n permissions?.sellPermission?.isPermitted === false &&\n permissions?.sellPermission?.requirementsNotMet?.includes(\n RequirementTypeApi.IsOverMinimumAge\n )\n );\n};\n\nexport const selectIsCompany = (state: RootState) => state.member?.isCompany;\n\nexport const selectIsImpersonationSession = (state: RootState) =>\n state.member?.isImpersonationSession;\n\nexport const selectMemberState = (state: RootState) =>\n state.member?.memberState;\n\nexport const selectIsTrustedMember = (state: RootState) =>\n state.member?.isTrustedMember;\n","import { type PayloadAction, createSlice } from '@reduxjs/toolkit';\n\nexport type Currency = {\n code: string;\n rate: number;\n valueDate: string;\n updatedDate: string;\n symbolSuffix: string;\n shortName: string;\n longName: string;\n decimals: number;\n};\n\nexport const defaultCurrency: Currency = {\n code: 'SEK',\n rate: 1,\n valueDate: '0000-01-01',\n updatedDate: '0000-01-01T00:00:00.0000000Z',\n symbolSuffix: 'kr',\n shortName: 'SEK',\n longName: 'Svensk krona',\n decimals: 0\n};\n\ntype MultiCurrencyState = {\n enabled: boolean;\n currencies: Currency[];\n preferredCurrency: Currency | null;\n};\n\nconst initialState: MultiCurrencyState = {\n enabled: false,\n currencies: [],\n preferredCurrency: null\n};\n\nconst resolveCurrency = (\n enabled: boolean,\n currencyCode: string | undefined,\n currencies: Currency[]\n) => {\n if (!enabled || !currencyCode) {\n return null;\n }\n return (\n currencies.find((currency) => currency.code === currencyCode) || null\n );\n};\n\nconst multiCurrencySlice = createSlice({\n name: 'multiCurrency',\n initialState,\n reducers: {\n initialize: (\n state,\n action: PayloadAction<{\n enabled: boolean;\n preferredCurrency: string;\n currencies?: Currency[];\n }>\n ) => {\n const {\n currencies = [],\n enabled,\n preferredCurrency\n } = action.payload;\n\n return {\n ...state,\n enabled,\n currencies,\n preferredCurrency: resolveCurrency(\n enabled,\n preferredCurrency,\n currencies\n )\n };\n },\n setPreferredCurrency: (\n state,\n { payload }: PayloadAction<{ currencyCode: string }>\n ) => {\n const { enabled, currencies } = state;\n\n return {\n ...state,\n preferredCurrency: resolveCurrency(\n enabled,\n payload.currencyCode,\n currencies\n )\n };\n }\n }\n});\n\nexport const { initialize, setPreferredCurrency } = multiCurrencySlice.actions;\nexport default multiCurrencySlice.reducer;\n","import type { RootState } from '../configure-store';\nimport { defaultCurrency } from './reducer';\n\nexport const selectCurrencies = (state: RootState) =>\n state.multiCurrency.currencies;\n\nexport const selectPreferredCurrency = (state: RootState) =>\n state.multiCurrency.preferredCurrency ||\n state.multiCurrency.currencies.find((c) => c.code === 'SEK') ||\n defaultCurrency;\n\nexport const selectIsPreferredCurrencySEK = (state: RootState) =>\n selectPreferredCurrency(state)?.code === 'SEK';\n\nexport const selectShowCurrencySelection = (state: RootState) =>\n !!(\n state.multiCurrency.enabled &&\n state.multiCurrency.preferredCurrency &&\n state.multiCurrency.currencies &&\n state.multiCurrency.currencies.length > 0\n );\n","/* eslint-disable */\n/* tslint:disable */\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nexport interface ActivesummaryRequest {\n request?: MemberActiveItemsSummaryApiRequest;\n}\n\nexport interface AutoShipmentCheckoutEnabledUpdateParams {\n request?: SetAutoShipmentCheckoutMemberEnabledApiRequest;\n}\n\nexport interface BankIdPasswordRecoveryCancelCreateParams {\n request?: BankIdPasswordRecoveryCancelApiRequest;\n}\n\nexport interface BankIdProgressWithIdRequest {\n bankIdOrderRef?: string;\n /** @format int32 */\n memberid?: number;\n}\n\nexport interface BankIdRecoveryWithIdCreateParams {\n request?: BankIdBeginWithIdApiRequest;\n}\n\nexport interface BankaccountCreateParams {\n request?: SetBankAccountPayoutTransferMethodApiRequest;\n}\n\nexport interface BankaccountDeleteParams {\n request?: RemoveBankAccountPayoutTransferMethodApiRequest;\n}\n\nexport interface BankidVerificationRequest {\n /** @format int32 */\n fixedPrice?: number;\n}\n\nexport interface BlockedMembersCreateParams {\n request?: BlockMemberApiRequest;\n}\n\nexport interface BlockedMembersDeleteParams {\n request?: UnblockMemberApiRequest;\n}\n\nexport interface BlockedMembersRequest {\n request?: GetBlockedMembersApiRequest;\n}\n\nexport interface BlueshiftCredentialsRequest {\n request?: GetBlueshiftEventApiCredentialsApiRequest;\n}\n\nexport interface BraintreeOnboardingDetailsRequest {\n request?: GetBraintreeOnboardingDetailsApiRequest;\n}\n\nexport interface BuyerCreateParams {\n request?: SaveFeedbackAsBuyerApiRequest;\n}\n\nexport interface BuyerRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface BuyerTransactionVisibilityCreateParams {\n request?: SetBuyerTransactionVisibilityApiRequest;\n}\n\nexport interface ChangeStatusToAppealedCreateParams {\n request?: ChangeDisputeStatusToAppealedApiRequest;\n}\n\nexport interface ChangealiasCreateParams {\n request?: ChangeAliasApiRequest;\n}\n\nexport interface ChangeemailCreateParams {\n request?: ChangeEmailWithIdApiRequest;\n memberId: string;\n}\n\nexport interface ChangepasswordCreate2Params {\n request?: ChangePasswordWithIdApiRequest;\n memberId: string;\n}\n\nexport interface ChangepasswordCreateParams {\n request?: ChangePasswordApiRequest;\n}\n\nexport interface CombinedShippingDaysUpdateParams {\n request?: SetCombinedShippingMemberDaysApiRequest;\n}\n\nexport interface CombinedShippingEnabledUpdateParams {\n request?: SetCombinedShippingMemberEnabledApiRequest;\n}\n\nexport interface CommentCreateParams {\n request?: CommentFeedbackApiRequest;\n}\n\nexport interface CommitonpaymentEnabledUpdateParams {\n request?: SetCommitOnPaymentMemberEnabledApiRequest;\n}\n\nexport interface CompanyContactSsnRequest {\n request?: MemberHasCompanyContactSsnApiRequest;\n}\n\nexport interface CompanyContactSsnUpdateParams {\n request?: UpdateMemberCompanyContactSsnApiRequest;\n}\n\nexport interface CompanyDac7StatusRequest {\n request?: GetMemberCompanyDac7StatusApiRequest;\n}\n\nexport interface CompanyMoneyTransferLicenseStatusRequest {\n request?: GetMemberCompanyMoneyTransferLicenseStatusApiRequest;\n}\n\nexport interface CompleteQuestionnaireCreateParams {\n request?: CompleteQuestionnaireApiRequest;\n}\n\nexport interface CompletehyperwallettransfermethodCreateParams {\n request?: CompleteHyperwalletTransferMethodApiRequest;\n}\n\nexport interface ConfirmCreateParams {\n request?: ConfirmMutualFeedbackRemovalApiRequest;\n}\n\nexport interface ConfirmationValidationRequest {\n /** @format int32 */\n id?: number;\n}\n\nexport interface ConsentCreateParams {\n request?: SetMemberConsentApiRequest;\n}\n\nexport interface ContactSellerCreateParams {\n request?: ContactSellerApiRequest;\n}\n\nexport interface CreateCreateParams {\n request?: CreateFeedbackRemovalApiRequest;\n}\n\nexport interface CreateVerificationCodeCreateParams {\n request?: CreateVerificationCodeApiRequest;\n}\n\nexport interface CreateVerificationCodeWithMemberIdCreateParams {\n request?: CreateVerificationCodeWithMemberIdApiRequest;\n}\n\nexport interface CreationValidationRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface CurrencyUpdateParams {\n request?: UpdateMemberCurrencyApiRequest;\n}\n\nexport interface DeactivateaccountCreateParams {\n request?: DeactivateMemberAccountPermanentlyApiRequest;\n}\n\nexport interface DeactivateaccountRequest {\n request?: GetAccountDeactivationSettingsApiRequest;\n}\n\nexport interface DeactivateaccounttemporarilyCreateParams {\n request?: DeactivateMemberAccountTemporarilyApiRequest;\n}\n\nexport interface DenyCreateParams {\n request?: DenyMutualFeedbackRemovalApiRequest;\n}\n\nexport interface DetailsRequest {\n request?: MemberContactDetailsApiRequest;\n}\n\nexport interface DetailsUpdateParams {\n request?: UpdateMemberContactDetailsApiRequest;\n}\n\nexport interface DisputeCreateParams {\n request?: CreateDisputeApiRequest;\n}\n\nexport interface DisputeRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface DisputeMessageCreateParams {\n request?: AddDisputeMessageApiRequest;\n}\n\nexport interface DisputesRequest {\n transactionIds?: number[];\n}\n\nexport interface EmailSettingsRequest {\n request?: MemberEmailSettingsApiRequest;\n}\n\nexport interface EmailSettingsUpdateParams {\n request?: UpdateMemberEmailSettingsApiRequest;\n}\n\nexport interface EmailnotifyRequest {\n /** @format int32 */\n memberId?: number;\n}\n\nexport interface EmailnotifyUpdateParams {\n request?: SetMessagingEmailNotifyApiRequest;\n}\n\nexport interface EndingtodaycountRequest {\n request?: GetWishlistItemsEndingTodayCountApiRequest;\n}\n\nexport interface FeatureSummaryByIdsRequest {\n itemIds?: number[];\n}\n\nexport interface FeedbackRequest {\n /** @format int32 */\n memberId?: number;\n feedbackRoleFilter?: FeedbackRoleFilter;\n feedbackRatingFilter?: FeedbackRatingFilter;\n /** @format int32 */\n skip?: number;\n /** @format int32 */\n take?: number;\n}\n\nexport interface FeedbackRemovalDetailsRequest {\n /** @format int32 */\n feedbackRemovalRequestId?: number;\n}\n\nexport interface FeedbackRemovalsCreateParams {\n request?: FeedbackRemovalsApiRequest;\n}\n\nexport interface FeedbacksRequest {\n /** @format int32 */\n transactionId?: number;\n showDeleted?: boolean;\n}\n\nexport interface FindRequest {\n query?: string;\n /** @format int32 */\n page?: number;\n /** @format int32 */\n pageSize?: number;\n}\n\nexport interface GetGeoParams {\n request?: GetMemberGeoDataApiRequest;\n}\n\nexport interface GetSsnParams {\n request?: MemberHasSsnApiRequest;\n}\n\nexport interface GetavailablecountriesforshippingRequest {\n request?: GetAvailableCountriesForShippingApiRequest;\n}\n\nexport interface GetcreditmemobyencryptedidRequest {\n encryptedId?: string;\n}\n\nexport interface GetcreditmemopdfRequest {\n /** @format int64 */\n invoiceId?: number;\n creditMemoDocumentId?: string;\n}\n\nexport interface GetcreditmemopdfbyidRequest {\n /** @format int64 */\n creditMemoId?: number;\n}\n\nexport interface GethyperwalletmemberdetailsRequest {\n request?: GetHyperwalletMemberDetailsApiRequest;\n}\n\nexport interface GetinvoicecsvRequest {\n /** @format int64 */\n invoiceId?: number;\n}\n\nexport interface GetinvoicepdfRequest {\n /** @format int64 */\n invoiceId?: number;\n}\n\nexport interface GetinvoicepdfbyencryptedidRequest {\n encryptedId?: string;\n}\n\nexport interface GetinvoicesRequest {\n /** @format int32 */\n pageIndex?: number;\n /** @format int32 */\n itemsPerPage?: number;\n}\n\nexport interface GetiscombinedshippingenabledRequest {\n request?: GetIsCombinedShippingEnabledApiRequest;\n}\n\nexport interface GetistraderapayenabledRequest {\n request?: GetIsTraderaPayEnabledApiRequest;\n}\n\nexport interface GetshippinginvoicememberRequest {\n request?: GetShippingInvoiceMemberApiRequest;\n}\n\nexport interface GettraderapayonboardingdetailsRequest {\n request?: GetTraderaPayOnboardingDetailsApiRequest;\n}\n\nexport interface GradeTransactionsRequest {\n gradeIds?: number[];\n}\n\nexport interface HasTinRequest {\n request?: GetMemberHasTaxIdentificationNumberApiRequest;\n}\n\nexport interface HyperwalletauthenticationtokenRequest {\n request?: GetHyperwalletAuthenticationTokenApiRequest;\n}\n\nexport interface HyperwallettransfermethodviewmodelRequest {\n request?: GetHyperwalletTransferMethodViewModelApiRequest;\n}\n\nexport interface ImageUploadUrlRequest {\n contentType?: string;\n}\n\nexport interface InitializeQuestionnaireCreateParams {\n request?: InitializeQuestionnaireApiRequest;\n}\n\nexport interface ItemIdsRequest {\n request?: GetWishListItemIdsApiRequest;\n}\n\nexport interface ItemShippedCreateParams {\n request?: SetItemShippedApiRequest;\n}\n\nexport interface ItemShippingBookedCreateParams {\n request?: SetItemShippingBookedApiRequest;\n}\n\nexport interface ItemVisibilityCreateParams {\n request?: SetItemVisibilityApiRequest;\n}\n\nexport interface ItemsRequest {\n /** @format int32 */\n memberId?: number;\n role?: FeedbackRoleFilter;\n rating?: FeedbackRatingFilter;\n /** @format int32 */\n skip?: number;\n /** @format int32 */\n take?: number;\n}\n\nexport interface LanguageUpdateParams {\n request?: UpdateMemberLanguageApiRequest;\n}\n\nexport interface LastnotifiedCreateParams {\n request?: SetLastNotifiedApiRequest;\n}\n\nexport interface ListingFeeRequest {\n request?: MemberListingFeeApiRequest;\n}\n\nexport interface MakeAnOfferEnabledUpdateParams {\n request?: SetMakeAnOfferMemberEnabledApiRequest;\n}\n\nexport interface MarkAsEscalatedCreateParams {\n request?: MarkDisputeAsEscalatedApiRequest;\n}\n\nexport interface MarkAsSolvedCreateParams {\n request?: MarkDisputeAsSolvedApiRequest;\n}\n\nexport interface MarkedAsPaidBySellerCreateParams {\n request?: MarkAsPaidBySellerApiRequest;\n}\n\nexport interface MatchbankCreateParams {\n request?: MatchBankApiRequest;\n}\n\nexport interface McpStrikeConfirmCreateParams {\n request?: ConfirmMutualCancelOfPurchaseStrikeApiRequest;\n}\n\nexport interface McpStrikeCreateParams {\n request?: AddMutualCancelOfPurchaseStrikeApiRequest;\n}\n\nexport interface McpStrikeRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n}\n\nexport interface MemberLocalizationRequest {\n request?: GetMemberLocalizationApiRequest;\n}\n\nexport interface MemberconsentRequest {\n request?: GetMemberConsentApiRequest;\n}\n\nexport interface MemberemailnotificationssettingsviewmodelRequest {\n request?: GetMemberEmailNotificationsSettingsViewModelApiRequest;\n}\n\nexport interface MemberprofilesettingsviewmodelRequest {\n request?: GetMemberProfileSettingsViewModelApiRequest;\n}\n\nexport interface MembersecuritysettingsviewmodelRequest {\n request?: GetMemberSecuritySettingsViewModelApiRequest;\n}\n\nexport interface MembersellersettingsviewmodelRequest {\n request?: GetMemberSellerSettingsViewModelApiRequest;\n}\n\nexport interface MessagingConfigurationRequest {\n request?: GetMessagingConfigurationApiRequest;\n}\n\nexport interface MoneyTransferLicenseAgreementRequest {\n /** @format date-time */\n asOf?: string;\n}\n\nexport interface NewDisputeItemSelectorPageRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n}\n\nexport interface NewDisputePageRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n /** @deprecated */\n itemIds?: number[];\n transactionIds?: number[];\n}\n\nexport interface NotificationsRequest {\n /** @format int32 */\n take?: number;\n /** @format int32 */\n skip?: number;\n}\n\nexport interface OpenSupportThreadCreateParams {\n request?: CreateDisputeSupportMessagingThreadApiRequest;\n}\n\nexport interface PagedTransactionsRequest {\n /** @format int32 */\n skip?: number;\n /** @format int32 */\n take?: number;\n}\n\nexport interface PaymentproviderDeleteParams {\n request?: RemovePayoutTransferMethodApiRequest;\n}\n\nexport interface PayoutfrequencyRequest {\n request?: GetPayoutFrequencyApiRequest;\n}\n\nexport interface PayoutfrequencyoptionsRequest {\n request?: GetPayoutFrequencyOptionsApiRequest;\n}\n\nexport interface PayoutsettingsmodalviewmodelRequest {\n tinkRedirectPath?: string;\n}\n\nexport interface PayoutsettingsviewmodelRequest {\n request?: GetPayoutSettingsViewModelApiRequest;\n}\n\nexport interface PaypalCreateParams {\n request?: SetPayPalPayoutTransferMethodApiRequest;\n}\n\nexport interface PaypalDeleteParams {\n request?: RemovePayPalPayoutTransferMethodApiRequest;\n}\n\nexport interface PendingActionsRequest {\n request?: GetKycPendingActionsApiRequest;\n}\n\nexport interface PicklistRequest {\n /** @format int32 */\n pageIndex?: number;\n /** @format int32 */\n itemsPerPage?: number;\n retrieveHidden?: boolean;\n paidStatus?: PickListFilterPaidStatus;\n shippedStatus?: PickListFilterShippedStatus;\n /** @format date-time */\n from?: string;\n /** @format date-time */\n to?: string;\n}\n\nexport interface PicklistV2Request {\n /** @format int32 */\n skip?: number;\n /** @format int32 */\n take?: number;\n retrieveHidden?: boolean;\n paidStatus?: PickListFilterPaidStatus;\n shippedStatus?: PickListFilterShippedStatus;\n /** @format date-time */\n fromDate?: string;\n /** @format date-time */\n toDate?: string;\n}\n\nexport interface PonrStrikeCreateParams {\n request?: AddPurchaseOrderNotReceivedStrikeApiRequest;\n}\n\nexport interface PonrStrikeRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n}\n\nexport interface ProfileHomepageThemeRequest {\n request?: GetHomepageThemeSettingApiRequest;\n}\n\nexport interface ProfileHomepageThemeUpdateParams {\n request?: UpdateHomepageThemeApiRequest;\n}\n\nexport interface ProfilePageRequest {\n /** @format int32 */\n memberId?: number;\n languageCodeIso2?: string;\n}\n\nexport interface PublicProfileHeroImageDeleteParams {\n request?: RemoveMemberPublicProfileHeroImageApiRequest;\n}\n\nexport interface PublicProfileHeroImageUpdateParams {\n request?: UpdateMemberPublicProfileHeroImageApiRequest;\n}\n\nexport interface PublicProfileInformationUpdateParams {\n request?: UpdateMemberPublicProfileInformationApiRequest;\n}\n\nexport interface PublicprofileRequest {\n /** @format int32 */\n memberId?: number;\n toLanguageCodeIso2?: string;\n}\n\nexport interface PurchaseRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface PurchaseOrderStrikeCreateParams {\n request?: AddPurchaseOrderStrikeApiRequest;\n}\n\nexport interface PurchaseOrderStrikesRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n}\n\nexport interface PurchaseorderRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n}\n\nexport interface PurchaseorderitemRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n}\n\nexport interface PutSsnParams {\n request?: UpdateMemberSsnApiRequest;\n}\n\nexport interface PutTinParams {\n request?: UpdateMemberTaxIdentificationNumberApiRequest;\n}\n\nexport interface QuestionnaireRequest {\n actionType?: string;\n languageCodeIso2?: string;\n}\n\nexport interface ReferralCodeCreateParams {\n request?: GenerateMemberReferralCodeApiRequest;\n}\n\nexport interface RemovetraderapaypayoutdestinationCreateParams {\n request?: RemoveTraderaPayPayoutDestinationApiRequest;\n}\n\nexport interface ResendverificationCreateParams {\n request?: ResendPayoutTransferMethodVerificationCodeApiRequest;\n}\n\nexport interface RestartItemsSummaryRequest {\n itemIds?: number[];\n}\n\nexport interface SelectedDescriptionLanguageUpdateParams {\n request?: UpdateMemberSelectedDescriptionLanguageApiRequest;\n}\n\nexport interface SellerAutoFeedbackRequest {\n request?: SellerAutoFeedbackApiRequest;\n}\n\nexport interface SellerAutoFeedbackUpdateParams {\n request?: SaveSellerAutoFeedbackSettingsApiRequest;\n}\n\nexport interface SellerAutoPaymentReminderRequest {\n request?: SellerAutoPaymentReminderApiRequest;\n}\n\nexport interface SellerAutoPaymentReminderUpdateParams {\n request?: SaveSellerAutoPaymentReminderSettingsApiRequest;\n}\n\nexport interface SellerCreateParams {\n request?: SaveFeedbackAsSellerApiRequest;\n}\n\nexport interface SellerRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface SellerMagicalSyiEnabledRequest {\n request?: GetMagicalSyiEnabledApiRequest;\n}\n\nexport interface SellerMagicalSyiEnabledUpdateParams {\n request?: SetMagicalSyiEnabledApiRequest;\n}\n\nexport interface SelloprofileRequest {\n request?: MemberSelloProfileApiRequest;\n}\n\nexport interface ServerStorageRequest {\n request?: MemberServerStorageListApiRequest;\n}\n\nexport interface ServerStorageUpdateParams {\n request?: MemberServerStoragePutApiRequest;\n}\n\nexport interface SessionDataRequest {\n request?: MemberSessionDataApiRequest;\n}\n\nexport interface SethyperwalletpayeeverificationassubmittedCreateParams {\n request?: SetHyperwalletPayeeVerificationAsSubmittedApiRequest;\n}\n\nexport interface SetpayoutfrequencyCreateParams {\n request?: SetPayoutFrequencyApiRequest;\n}\n\nexport interface ShippingFeeRuleFreeShippingCostLimitUpdateParams {\n request?: SetShippingFeeRuleFreeShippingCostLimitApiRequest;\n}\n\nexport interface ShippingFeeRuleShippingOptionUpdateParams {\n request?: SetShippingFeeRuleShippingOptionApiRequest;\n}\n\nexport interface ShippingFromCountryUpdateParams {\n request?: UpdateMemberShippingFromCountryApiRequest;\n}\n\nexport interface ShopDetailsRequest {\n /** @format int32 */\n memberId?: number;\n}\n\nexport interface ShopitemOrderhistoryRequest {\n /** @format int32 */\n itemId?: number;\n}\n\nexport interface ShouldCollectTinRequest {\n request?: GetMemberShouldCollectTaxIdentificationNumberApiRequest;\n}\n\nexport interface SilentRequest {\n request?: GetMessagingSilentApiRequest;\n}\n\nexport interface SilentUpdateParams {\n request?: SetMessagingSilentApiRequest;\n}\n\nexport interface SmsCheckCreateParams {\n request?: SmsCheckApiRequest;\n}\n\nexport interface SmsVerificationCreateParams {\n request?: SendVerificationSmsApiRequest;\n}\n\nexport interface SmsVerificationRequest {\n action?: string;\n}\n\nexport interface SmsVerificationWithIdCreateParams {\n request?: SendVerificationSmsWithIdApiRequest;\n}\n\nexport interface SolditemsRequest {\n soldItemStateFilter?: string;\n soldItemOrderBy?: string;\n retrieveHidden?: boolean;\n /** @format int32 */\n take?: number;\n /** @format int32 */\n skip?: number;\n}\n\nexport interface SoldsummaryRequest {\n request?: MemberSoldItemsSummaryApiRequest;\n}\n\nexport interface StatsRequest {\n request?: GetMessagingStatsApiRequest;\n}\n\nexport interface StatsThisMonthRequest {\n request?: MemberStatsThisMonthApiRequest;\n}\n\nexport interface SummaryRequest {\n /** @format int32 */\n memberId?: number;\n}\n\nexport interface SuspendedUntilRequest {\n request?: GetMemberSuspendedUntilApiRequest;\n}\n\nexport interface SwishCreateParams {\n request?: SetSwishPayoutTransferMethodApiRequest;\n}\n\nexport interface SystemMessagesRequest {\n request?: GetSystemMessagesApiRequest;\n}\n\nexport interface TinImageUploadUrlCreateParams {\n request?: CreateTaxIdentificationImageUploadUrlApiRequest;\n}\n\nexport interface TinkBankaccountsRequest {\n code?: string;\n}\n\nexport interface TinkaccountCreateParams {\n request?: SetPayoutTransferMethodUsingTinkApiRequest;\n}\n\nexport interface ResponseError {\n errorCode?: string | null;\n fieldName?: string | null;\n message?: string | null;\n}\n\nexport interface ResponseError2 {\n transactionIds?: number[];\n}\n\nexport interface ResponseError5 {\n request?: WebChangeEmailWithIdApiRequest;\n}\n\nexport interface ResponseError8 {\n /** @format int32 */\n skip?: number;\n /** @format int32 */\n take?: number;\n}\n\nexport interface ResponseStatus {\n errorCode?: string | null;\n errors?: ResponseError[] | null;\n message?: string | null;\n stackTrace?: string | null;\n}\n\nexport interface BankIdAuthenticationBeginApiResponse {\n autoStartToken?: string | null;\n bankIdOrderRef?: string | null;\n qrData?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface BankIdAuthenticationCancelApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface BankIdAuthenticationProgressApiResponse {\n isCompleted: boolean;\n progress?: string | null;\n qrData?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ItemImageUrls {\n medium?: string | null;\n normal?: string | null;\n}\n\nexport enum ItemTransactionTypeApiDto {\n Auction = 'Auction',\n Bin = 'Bin',\n Cart = 'Cart',\n PurchaseOfferOnActive = 'PurchaseOfferOnActive',\n PurchaseOfferOnEnded = 'PurchaseOfferOnEnded'\n}\n\nexport enum ItemTypeApiDto {\n Auction = 'Auction',\n AuctionBin = 'AuctionBin',\n PureBin = 'PureBin',\n ShopItem = 'ShopItem'\n}\n\nexport interface BlockMemberApiRequest {\n aliasToBlock?: string | null;\n}\n\nexport interface BlockMemberApiResponse {\n /** @format int32 */\n blockedMemberId: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface AddDisputeMessageApiRequest {\n attachments?: string[] | null;\n message?: string | null;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface AddDisputeMessageApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ChangeDisputeStatusToAppealedApiRequest {\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface ChangeDisputeStatusToAppealedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CreateDisputeApiRequest {\n message?: string | null;\n /** @format int32 */\n reason: number;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface CreateDisputeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetDisputeApiResponse {\n dispute?: DisputeApiDto | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetDisputesApiResponse {\n disputes?: DisputeApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MarkDisputeAsEscalatedApiRequest {\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface MarkDisputeAsEscalatedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MarkDisputeAsSolvedApiRequest {\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface MarkDisputeAsSolvedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CreateDisputeImageUploadUrlApiRequest {\n contentType?: string | null;\n}\n\nexport interface CreateDisputeImageUploadUrlApiResponse {\n objectName?: string | null;\n responseStatus?: ResponseStatus | null;\n uploadUrl?: string | null;\n}\n\nexport interface CreateDisputeSupportMessagingThreadApiRequest {\n /** @format int32 */\n disputeId: number;\n}\n\nexport interface CreateDisputeSupportMessagingThreadApiResponse {\n responseStatus?: ResponseStatus | null;\n threadId?: string | null;\n}\n\nexport interface DisputeV2FormData {\n comment?: string | null;\n images?: DisputeV2Image[] | null;\n itemIds?: number[] | null;\n /** @format uuid */\n purchaseOrderId: string;\n reason?: string | null;\n status?: string | null;\n suggestedSolution?: string | null;\n transactionIds?: number[] | null;\n}\n\nexport interface DisputeV2Image {\n fileName?: string | null;\n objectName?: string | null;\n}\n\nexport interface DisputeV2ItemData {\n imageUrl?: string | null;\n /** @format int32 */\n itemId: number;\n itemUrl?: string | null;\n /** @format double */\n price: number;\n title?: string | null;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface DisputeV2MemberData {\n alias?: string | null;\n /** @format int32 */\n memberId: number;\n}\n\nexport interface DisputeV2PurchaseOrderData {\n buyerMember?: DisputeV2MemberData | null;\n /** @format double */\n buyerProtectionCost: number;\n /** @format date-time */\n createdDate: string;\n /** @format int32 */\n orderNumber: number;\n /** @format uuid */\n purchaseOrderId: string;\n /** @format double */\n selectedShippingCostAfterRefunds: number;\n sellerMember?: DisputeV2MemberData | null;\n shipping?: DisputeV2Shipping | null;\n /** @format double */\n totalOrderAmount: number;\n}\n\nexport interface DisputeV2PurchaseOrderItemData {\n hasReportedDispute: boolean;\n imageUrl?: string | null;\n /** @format int32 */\n itemId: number;\n itemUrl?: string | null;\n /** @format double */\n price: number;\n title?: string | null;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface DisputeV2Shipping {\n isSoldByTradera: boolean;\n /** @format uuid */\n shipmentId: string;\n /** @format double */\n shippingCost: number;\n shippingProvider?: string | null;\n}\n\nexport interface EscalateDisputeV2ApiRequest {\n /** @format int32 */\n disputeId: number;\n}\n\nexport interface EscalateDisputeV2ApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetDisputeDataV2ApiResponse {\n /** @format date-time */\n createdDate: string;\n /** @format int32 */\n disputeId: number;\n formData?: DisputeV2FormData | null;\n items?: DisputeV2ItemData[] | null;\n purchaseOrder?: DisputeV2PurchaseOrderData | null;\n responseStatus?: ResponseStatus | null;\n /** @format date-time */\n updatedDate: string;\n}\n\nexport interface MarkDisputeAsSolvedV2ApiRequest {\n /** @format int32 */\n disputeId: number;\n}\n\nexport interface MarkDisputeAsSolvedV2ApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SaveDisputeDataV2ApiRequest {\n formData?: DisputeV2FormData | null;\n}\n\nexport interface SaveDisputeDataV2ApiResponse {\n /** @format int32 */\n disputeId: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface DisputeApiDto {\n /** @format int32 */\n buyerMemberId: number;\n isHandledByExternalPart: boolean;\n /** @format int32 */\n itemId: number;\n message?: string | null;\n messages?: DisputeMessageDto[] | null;\n /** @format int32 */\n sellerMemberId: number;\n status: DisputeStatus;\n /** @format date-time */\n timeStamp: string;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface DisputeMessageDto {\n attachments?: string[] | null;\n /** @format date-time */\n created: string;\n /** @format uuid */\n id: string;\n sentBy: MessageSentBy;\n text?: string | null;\n}\n\nexport enum ContactBuyerQuestionAnswer {\n BuyerAndSellerAreInAgreement = 'BuyerAndSellerAreInAgreement',\n BuyerIsNotResponding = 'BuyerIsNotResponding',\n BuyerRefusesPayment = 'BuyerRefusesPayment',\n SellerHasNotContactedBuyer = 'SellerHasNotContactedBuyer'\n}\n\nexport enum DisputeStatus {\n New = 'New',\n WaitingForSeller = 'WaitingForSeller',\n TraderaIsInvestigating = 'TraderaIsInvestigating',\n ToBeClosed = 'ToBeClosed',\n WaitingForBuyer = 'WaitingForBuyer',\n BuyerWonDispute = 'BuyerWonDispute',\n SellerWonDispute = 'SellerWonDispute',\n WaitingForReturn = 'WaitingForReturn',\n Appealed = 'Appealed',\n AvslutadUnder120Kr = 'AvslutadUnder120Kr',\n NotEscalated = 'NotEscalated',\n BuyerMarkedAsSolved = 'BuyerMarkedAsSolved',\n AvailableForPickupTradera = 'AvailableForPickupTradera',\n AvailableForPickupSeller = 'AvailableForPickupSeller',\n WaitingForKlarnaOrPayPal = 'WaitingForKlarnaOrPayPal',\n TheOffice = 'TheOffice',\n Other = 'Other'\n}\n\nexport enum MessageSentBy {\n CsAgent = 'CsAgent',\n Buyer = 'Buyer',\n Seller = 'Seller'\n}\n\nexport enum PurchaseOrderCancellationItemActions {\n RestartItems = 'RestartItems',\n MakeItemsAvailableForPurchaseOffer = 'MakeItemsAvailableForPurchaseOffer',\n DoNothing = 'DoNothing'\n}\n\nexport enum StrikeType {\n None = 'None',\n ItemNotReceived = 'ItemNotReceived',\n UnpaidItem = 'UnpaidItem',\n MutualCancelOfPurchase = 'MutualCancelOfPurchase',\n UnpaidItemAfterGracePeriod = 'UnpaidItemAfterGracePeriod'\n}\n\nexport interface ItemStrikeSubmission {\n strikeSubmitted: boolean;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface AddPurchaseOrderNotReceivedStrikeApiRequest {\n comment?: string | null;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport interface AddPurchaseOrderNotReceivedStrikeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface PurchaseOrderNotReceivedStrikeApiResponse {\n items?: ItemStrikeSubmission[] | null;\n responseStatus?: ResponseStatus | null;\n strikeSubmitted: boolean;\n}\n\nexport interface AddMutualCancelOfPurchaseStrikeApiRequest {\n comment?: string | null;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport interface AddMutualCancelOfPurchaseStrikeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ConfirmMutualCancelOfPurchaseStrikeApiRequest {\n approved: boolean;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport interface ConfirmMutualCancelOfPurchaseStrikeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MutualCancelOfPurchaseStrikeApiResponse {\n items?: StrikeItem[] | null;\n /** @format uuid */\n purchaseOrderId: string;\n responseStatus?: ResponseStatus | null;\n strikeConfirmed: boolean;\n strikeSubmitted: boolean;\n}\n\nexport interface StrikeItem {\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface AddPurchaseOrderStrikeApiRequest {\n comment?: string | null;\n contactBuyerQuestionAnswer: ContactBuyerQuestionAnswer;\n itemAction: PurchaseOrderCancellationItemActions;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport interface AddPurchaseOrderStrikeApiResponse {\n itemAction: PurchaseOrderCancellationItemActions;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetPurchaseOrderStrikeItemsApiResponse {\n responseStatus?: ResponseStatus | null;\n strikes?: Strike[] | null;\n}\n\nexport interface Strike {\n strikeType: StrikeType;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface AddUnpaidPurchaseOrderStrikeApiRequest {\n comment?: string | null;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport interface AddUnpaidPurchaseOrderStrikeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UnpaidItemStrikeApiResponse {\n responseStatus?: ResponseStatus | null;\n strikeSubmitted: boolean;\n}\n\nexport interface UnpaidPurchaseOrderStrikeApiResponse {\n items?: ItemStrikeSubmission[] | null;\n responseStatus?: ResponseStatus | null;\n strikeSubmitted: boolean;\n}\n\nexport interface CommentFeedbackApiRequest {\n comment?: string | null;\n /** @format int32 */\n gradeId: number;\n /** @format int32 */\n memberId: number;\n}\n\nexport interface CommentFeedbackApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ContactSellerApiRequest {\n /** @format int32 */\n itemId: number;\n message?: string | null;\n sendCopytoSender: boolean;\n}\n\nexport interface ContactSellerApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface Country {\n countryCodeIso2?: string | null;\n countryNameEng?: string | null;\n countryNameSwe?: string | null;\n}\n\nexport interface BlockedMemberDto {\n alias?: string | null;\n /** @format date-time */\n createdDate: string;\n /** @format int32 */\n memberId: number;\n}\n\nexport interface BookedShipping {\n hasProviderBookingFailed: boolean;\n hasShipmentLabel: boolean;\n hasShipmentReceipt: boolean;\n /** @format uuid */\n shipmentCheckoutId: string;\n /** @format uuid */\n shipmentId: string;\n shippingType?: string | null;\n trackingId?: string | null;\n trackingLink?: string | null;\n}\n\nexport interface BuyerPaidDataDto {\n /** @format int32 */\n numberOfItems: number;\n /** @format uuid */\n purchaseOrderId: string;\n shipmentBookingType?: string | null;\n}\n\nexport interface BuyerProtectionApiDto {\n /** @format double */\n buyerProtectionCost: number;\n}\n\nexport interface ContactDetailsApiDto {\n countryCodeIso2?: string | null;\n alias?: string | null;\n companyName?: string | null;\n country?: string | null;\n email?: string | null;\n firstName?: string | null;\n fullName?: string | null;\n isCompany: boolean;\n lastName?: string | null;\n /** @format int32 */\n memberId: number;\n organizationNumber?: string | null;\n phoneNumber?: string | null;\n streetName?: string | null;\n town?: string | null;\n zipCode?: string | null;\n}\n\nexport interface CreditSafeLookupResult {\n firstName?: string | null;\n givenName?: string | null;\n lastName?: string | null;\n socialSecurityNumber?: string | null;\n}\n\nexport interface CreditSafeNameVerificationResult {\n lookupResult?: CreditSafeLookupResult | null;\n status: CreditSafeNameVerificationStatus;\n}\n\nexport enum CreditSafeNameVerificationStatus {\n Valid = 'Valid',\n Invalid = 'Invalid',\n SSNFail = 'SSNFail',\n NotFound = 'NotFound',\n Error = 'Error'\n}\n\nexport interface DetailedSellerRatingApiDto {\n /** @format double */\n averageRating: number;\n category?: string | null;\n /** @format int32 */\n categoryCount: number;\n}\n\nexport interface DetailedSellerRatingSummaryForMemberApiDto {\n communication?: DetailedSellerRatingApiDto | null;\n deliveryTime?: DetailedSellerRatingApiDto | null;\n /** @format double */\n detailedSellerRatingAverage: number;\n itemDescription?: DetailedSellerRatingApiDto | null;\n /** @format int32 */\n memberId: number;\n shippingCost?: DetailedSellerRatingApiDto | null;\n}\n\nexport interface DiscountDto {\n /** @format double */\n amount: number;\n /** @format date-time */\n created: string;\n type?: string | null;\n}\n\nexport interface FeatureSummaryApiDto {\n /** @format int32 */\n cost: number;\n /** @format int32 */\n count: number;\n name?: string | null;\n}\n\nexport interface FeedbackItemApiDto {\n feedbackMemberCountryCodeIso2?: string | null;\n /** @format date-time */\n created: string;\n feedbackMemberAlias?: string | null;\n /** @format int32 */\n feedbackMemberId: number;\n feedbackMemberRole: FeedbackRoleApiDto;\n /** @format int32 */\n gradeId: number;\n /** @format int32 */\n itemCategoryId: number;\n /** @format date-time */\n itemEndDate: string;\n /** @format int32 */\n itemId: number;\n /** @format int32 */\n itemMaxBid: number;\n itemShortDescription?: string | null;\n mutualFeedbackRemovalItem?: MutualFeedbackRemovalItemApiDto | null;\n rating: FeedbackRatingApiDto;\n reply?: string | null;\n text?: string | null;\n /** @format int32 */\n totalRating: number;\n}\n\nexport enum FeedbackRatingApiDto {\n None = 'None',\n Negative = 'Negative',\n Positive = 'Positive'\n}\n\nexport enum FeedbackRatingFilter {\n All = 'All',\n Positive = 'Positive',\n Negative = 'Negative'\n}\n\nexport interface FeedbackReminderDataDto {\n isSeller: boolean;\n}\n\nexport enum FeedbackRoleApiDto {\n Buyer = 'Buyer',\n Seller = 'Seller'\n}\n\nexport enum FeedbackRoleFilter {\n All = 'All',\n Seller = 'Seller',\n Buyer = 'Buyer',\n LeftBy = 'LeftBy'\n}\n\nexport interface FeedbackSummaryItemApiDto {\n /** @format int32 */\n totalNegative: number;\n /** @format int32 */\n totalPositive: number;\n}\n\nexport enum HomepageTheme {\n Default = 'Default',\n Fashion = 'Fashion'\n}\n\nexport interface ItemTransactionApiDto {\n /** @format int32 */\n bidCount?: number | null;\n /** @format int32 */\n buyItNowPrice?: number | null;\n /** @format int32 */\n buyerMemberId: number;\n discounts?: DiscountDto[] | null;\n hasBuyerLeftFeedback: boolean;\n hasSellerLeftFeedback: boolean;\n hasTraderaAsMerchantOfRecord: boolean;\n imageUrl?: string | null;\n imageUrlTemplate?: string | null;\n isHidden: boolean;\n isPaid: boolean;\n isPaynovaPayment: boolean;\n /** @format int32 */\n itemCategoryId: number;\n /** @format int32 */\n itemId: number;\n /** @format int32 */\n itemPrice?: number | null;\n itemResellPublished: boolean;\n itemTitle?: string | null;\n itemTransactionType: ItemTransactionTypeApiDto;\n /** @format int32 */\n openingBid?: number | null;\n /** @format int32 */\n orderNumber: number;\n paidStatus?: string | null;\n /** @format uuid */\n purchaseOrderId: string;\n selectedShipping?: ShippingApiDto | null;\n sellerAlias?: string | null;\n /** @format int32 */\n sellerMemberId: number;\n /** @format int32 */\n sellerRating: number;\n trackingLink?: string | null;\n /** @format date-time */\n transactionDate: string;\n /** @format int32 */\n transactionId: number;\n}\n\nexport enum MemberAccountState {\n None = 'None',\n Active = 'Active',\n TemporarySuspended = 'TemporarySuspended',\n PermanentlySuspended = 'PermanentlySuspended',\n Deregistered = 'Deregistered'\n}\n\nexport interface MemberActiveItemsSummaryApiDto {\n /** @format int32 */\n auctionCount: number;\n /** @format int32 */\n bidCount: number;\n /** @format int32 */\n bidSum: number;\n /** @format int32 */\n buyItNowCount: number;\n /** @format int32 */\n itemCount: number;\n /** @format int32 */\n shopItemCount: number;\n /** @format int32 */\n sumOpeningBids: number;\n}\n\nexport interface MemberContactDetailsApiDto {\n countryCodeIso2?: string | null;\n alias?: string | null;\n country?: string | null;\n email?: string | null;\n firstName?: string | null;\n fullName?: string | null;\n lastName?: string | null;\n /** @format int32 */\n memberId: number;\n phoneNumber?: string | null;\n ssn?: string | null;\n streetName?: string | null;\n town?: string | null;\n zipCode?: string | null;\n}\n\nexport interface MemberLoginDetailDto {\n accountState: MemberAccountState;\n alias?: string | null;\n hasTraderMessage: boolean;\n heroImageUrl?: string | null;\n isCompanyUser: boolean;\n /** @format int32 */\n memberId: number;\n /** @format date-time */\n memberSince: string;\n /** @format int32 */\n totalRating: number;\n}\n\nexport interface MemberPermissionsApiDto {\n apiRegistrationPermission?: PermissionApiDto | null;\n sellPermission?: PermissionApiDto | null;\n}\n\nexport interface MemberSoldItemApiDto {\n /** @format int32 */\n bidCount?: number | null;\n bookedShipping?: BookedShipping | null;\n buyerContactDetails?: MemberContactDetailsApiDto | null;\n buyerMemberAlias?: string | null;\n /** @format int32 */\n buyerMemberId: number;\n /** @format int32 */\n buyerTotalRating: number;\n /** @format int32 */\n categoryId: number;\n discounts?: DiscountDto[] | null;\n /** @format int32 */\n fixedPrice?: number | null;\n hasBuyerLeftFeedback: boolean;\n hasSellerLeftFeedback: boolean;\n hiddenBySeller: boolean;\n isDiscountAfterPaymentSupported: boolean;\n isDiscountBeforePaymentSupported: boolean;\n isMarkedAsPaidByBuyer: boolean;\n isMarkedAsPaidBySeller: boolean;\n isMarkedAsShipped: boolean;\n /** @deprecated */\n isPaidWithIntegratedPaymentOption: boolean;\n isShippingBooked: boolean;\n /** @format int32 */\n itemId: number;\n itemTitle?: string | null;\n itemTransactionType: ItemTransactionTypeApiDto;\n /** @format int32 */\n leadingBid?: number | null;\n mainImage?: ItemImageUrls | null;\n mainImageTemplate?: string | null;\n offeredShippingOptions?: ShippingApiDto[] | null;\n /** @format int32 */\n openingBid?: number | null;\n paidStatus?: string | null;\n /** @deprecated */\n paymentProvider?: string | null;\n /** @format int32 */\n price: number;\n /** @format uuid */\n purchaseOrderId: string;\n /** @format int32 */\n reservedPrice?: number | null;\n selectedShipping?: ShippingApiDto | null;\n shippingDiscount?: ShippingDiscount | null;\n soldItemState?: string | null;\n /** @deprecated */\n trackingLink?: string | null;\n /** @format date-time */\n transactionDate: string;\n /** @format int32 */\n transactionId: number;\n userReference?: string | null;\n}\n\nexport interface MemberSoldItemsSummaryApiDto {\n /** @format int32 */\n auctionCount: number;\n /** @format int32 */\n bidCount: number;\n /** @format int32 */\n bidSum: number;\n /** @format int32 */\n buyItNowCount: number;\n /** @format int32 */\n itemCount: number;\n /** @format int32 */\n shopItemCount: number;\n /** @format int32 */\n sumOpeningBids: number;\n /** @format int32 */\n totalPrice: number;\n}\n\nexport interface MutualFeedbackRemovalItemApiDto {\n /** @format int32 */\n feedbackRemovalRequestId?: number | null;\n status: MutualFeedbackRemovalStatus;\n /** @deprecated */\n statusText?: string | null;\n /** @format int32 */\n transactionId: number;\n}\n\nexport enum MutualFeedbackRemovalStatus {\n Available = 'Available',\n Unavailable = 'Unavailable',\n Requested = 'Requested',\n Received = 'Received',\n Denied = 'Denied'\n}\n\nexport interface NotificationApiDto {\n /** @format int32 */\n amount: number;\n buyerPaidData?: BuyerPaidDataDto | null;\n feedbackReminderData?: FeedbackReminderDataDto | null;\n isRead: boolean;\n /** @format int32 */\n itemId: number;\n mainImage?: ItemImageUrls | null;\n mainImageTemplate?: string | null;\n /** @format int32 */\n memberId: number;\n purchaseOrderUnpaidData?: PurchaseOrderUnpaidDataDto | null;\n shipmentSentData?: ShipmentSentDataDto | null;\n /** @format date-time */\n timeStamp: string;\n title?: string | null;\n type?: string | null;\n wishListItemsEndingTodayData?: WishListItemsEndingTodayDataDto | null;\n wishlistItemPriceLoweredData?: WishlistItemPriceLoweredDataDto | null;\n}\n\nexport interface OfferedShippingOption {\n /** @format int32 */\n cost: number;\n type?: string | null;\n}\n\nexport interface PaymentOptionApiDto {\n displayName?: string | null;\n paymentType?: string | null;\n}\n\nexport interface PermissionApiDto {\n isPermitted: boolean;\n requirementsNotMet?: RequirementTypeApi[] | null;\n}\n\nexport interface PickListBuyerApiDto {\n buyerContactDetails?: MemberContactDetailsApiDto | null;\n buyerMemberAlias?: string | null;\n /** @format int32 */\n buyerMemberId: number;\n /** @format int32 */\n feedbackCount: number;\n items?: MemberSoldItemApiDto[] | null;\n}\n\nexport interface PickListBuyerV2ApiDto {\n buyerContactDetails?: ContactDetailsApiDto | null;\n buyerMemberAlias?: string | null;\n /** @format int32 */\n buyerMemberId: number;\n items?: PickListItemApiDto[] | null;\n}\n\nexport interface PickListItemApiDto {\n hasSellerLeftFeedback: boolean;\n hiddenBySeller: boolean;\n isMarkedAsPaidBySeller: boolean;\n isMarkedAsShipped: boolean;\n /** @format int32 */\n itemId: number;\n itemTitle?: string | null;\n itemUrl?: string | null;\n mainImage?: ItemImageUrls | null;\n mainImageTemplate?: string | null;\n offeredShippingOptions?: OfferedShippingOption[] | null;\n /** @format int32 */\n price: number;\n /** @format uuid */\n purchaseOrderId: string;\n selectedShipping?: SelectedShippingOption | null;\n temporaryShippingAddress?: Address | null;\n /** @format double */\n totalDiscountAmount: number;\n /** @format date-time */\n transactionDate: string;\n /** @format int32 */\n transactionId: number;\n userReference?: string | null;\n}\n\nexport interface PublicProfileApiDto {\n alias?: string | null;\n city?: string | null;\n country?: string | null;\n /** @format double */\n detailedSellerRating?: number | null;\n hasShop: boolean;\n isCompanyUser: boolean;\n /** @format int32 */\n memberId: number;\n /** @format int32 */\n totalRating: number;\n zipCode?: string | null;\n}\n\nexport interface PurchaseOrderUnpaidDataDto {\n /** @format int32 */\n numberOfItems: number;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport enum RequirementTypeApi {\n Unknown = 'Unknown',\n IsOverMinimumAge = 'IsOverMinimumAge'\n}\n\nexport interface SelectedShippingOption {\n /** @format int32 */\n cost: number;\n type?: string | null;\n}\n\nexport enum SellerAutoFeedbackCriteria {\n Manual = 'Manual',\n PositiveFeedback = 'PositiveFeedback',\n Paid = 'Paid'\n}\n\nexport interface ShipmentSentDataDto {\n /** @format int32 */\n numberOfItems: number;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport interface ShippingApiDto {\n fromCountryCodeIso2?: string | null;\n toCountryCodeIso2?: string | null;\n /** @format double */\n cost: number;\n isFreeShipping: boolean;\n isTakeaway: boolean;\n name?: string | null;\n partnerProvider?: string | null;\n /** @format int32 */\n productId?: number | null;\n type?: string | null;\n /** @format int32 */\n weight?: number | null;\n}\n\nexport interface TotalFeedbackSummaryForMemberApiDto {\n lastMonth?: FeedbackSummaryItemApiDto | null;\n lastSixMonths?: FeedbackSummaryItemApiDto | null;\n lastTwelveMonths?: FeedbackSummaryItemApiDto | null;\n /** @format int32 */\n memberId: number;\n sinceRegistration?: FeedbackSummaryItemApiDto | null;\n unique?: FeedbackSummaryItemApiDto | null;\n}\n\nexport interface TranslatedFeedbackItemApiDto {\n /** @format int32 */\n gradeId: number;\n reply?: string | null;\n text?: string | null;\n}\n\nexport interface WishListItemsEndingTodayDataDto {\n /** @format int32 */\n numberOfItems: number;\n}\n\nexport enum WishListStatusFilter {\n All = 'All',\n Active = 'Active',\n Ended = 'Ended'\n}\n\nexport interface WishlistItemPriceLoweredDataDto {\n currencyCode?: string | null;\n /** @format int32 */\n newPrice: number;\n}\n\nexport interface GetNotificationsApiResponse {\n items?: NotificationApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n /** @format int64 */\n unreadCount: number;\n}\n\nexport type GetUnreadNotificationsCountApiRequest = object;\n\nexport interface GetUnreadNotificationsCountApiResponse {\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n unreadCount: number;\n}\n\nexport type SetLastNotifiedApiRequest = object;\n\nexport interface SetLastNotifiedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CreditMemoByEncryptedIdApiResponse {\n /** @format byte */\n pdfFileContent?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CreditMemoDto {\n creditMemoDocumentId?: string | null;\n /** @format int64 */\n invoiceId: number;\n}\n\nexport interface GetBraintreeInvoicePaymentApiResponse {\n /** @format double */\n amount: number;\n /** @format int64 */\n invoiceId: number;\n orderId?: string | null;\n responseStatus?: ResponseStatus | null;\n status?: string | null;\n}\n\nexport interface GetCreditMemoPdfApiResponse {\n /** @format byte */\n pdfFileContent?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetInvoiceCsvApiResponse {\n /** @format byte */\n csvFileContent?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetInvoicePdfApiResponse {\n /** @format byte */\n pdfFileContent?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetInvoicesApiResponse {\n invoices?: InvoiceDto[] | null;\n isBillingUnderMaintenance: boolean;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport interface InvoiceDto {\n /** @format double */\n amountOwed: number;\n creditMemos?: CreditMemoDto[] | null;\n csvGenerated: boolean;\n /** @format date-time */\n dueDate: string;\n /** @format double */\n invoiceAmount: number;\n /** @format date-time */\n invoiceDate: string;\n /** @format int64 */\n invoiceId: number;\n /** @format int64 */\n ocr: number;\n paymentStatus?: string | null;\n}\n\nexport interface FindMembersApiResponse {\n members?: MemberLoginDetailDto[] | null;\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n totalCount: number;\n}\n\nexport interface GetAllItemsForLeaveFeedbackAsBuyerApiResponse {\n items?: ItemTransactionApiDto[] | null;\n /** @format int64 */\n itemsLeft: number;\n /** @format int64 */\n paidTotalCount: number;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport interface GetAllItemsForLeaveFeedbackAsSellerApiResponse {\n items?: MemberSoldItemApiDto[] | null;\n /** @format int64 */\n itemsLeft: number;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport type GetAvailableCountriesForShippingApiRequest = object;\n\nexport interface GetAvailableCountriesForShippingApiResponse {\n availableCountries?: Country[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetBlockedMembersApiRequest = object;\n\nexport interface GetBlockedMembersApiResponse {\n blockedMembers?: BlockedMemberDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetBlueshiftEventApiCredentialsApiRequest = object;\n\nexport interface GetBlueshiftEventApiCredentialsApiResponse {\n eventApiKey?: string | null;\n eventSignature?: string | null;\n responseStatus?: ResponseStatus | null;\n verificationKey?: string | null;\n}\n\nexport interface GetImageUploadUrlApiResponse {\n responseStatus?: ResponseStatus | null;\n signedUrl?: string | null;\n}\n\nexport type GetIsCombinedShippingEnabledApiRequest = object;\n\nexport interface GetIsCombinedShippingEnabledApiResponse {\n isEnabled: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetItemsForLeaveFeedbackAsBuyerApiResponse {\n responseStatus?: ResponseStatus | null;\n transactions?: ItemTransactionApiDto[] | null;\n}\n\nexport interface GetItemsForLeaveFeedbackAsSellerApiResponse {\n items?: MemberSoldItemApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberGeoDataApiRequest = object;\n\nexport interface GetMemberGeoDataApiResponse {\n /** @format double */\n latitude: number;\n /** @format double */\n longitude: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberSuspendedUntilApiRequest = object;\n\nexport interface GetMemberSuspendedUntilApiResponse {\n responseStatus?: ResponseStatus | null;\n /** @format date-time */\n suspendedUntil?: string | null;\n}\n\nexport type GetMemberVatDetailsApiRequest = object;\n\nexport interface GetMemberVatDetailsApiResponse {\n memberIsSubjectToVat: boolean;\n responseStatus?: ResponseStatus | null;\n /** @format byte */\n selectableVatValues?: string | null;\n}\n\nexport interface GetMemberWithAliasApiResponse {\n alias?: string | null;\n hasShopAccount: boolean;\n isCompanyUser: boolean;\n /** @format int32 */\n memberId: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetSystemMessagesApiRequest = object;\n\nexport interface GetSystemMessagesApiResponse {\n items?: SystemMessage[] | null;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport interface GetTransactionFeedbacksApiResponse {\n feedbacks?: TransactionFeedbackApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GradeTransactionsApiResponse {\n gradesTransactions?: Record;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CompleteQuestionnaireApiRequest {\n languageCodeIso2?: string | null;\n fieldValues?: Record;\n /** @format int32 */\n questionnaireId: number;\n}\n\nexport interface CompleteQuestionnaireApiResponse {\n alias?: string | null;\n isValid: boolean;\n responseStatus?: ResponseStatus | null;\n ruleViolations?: Record;\n}\n\nexport type GetKycPendingActionsApiRequest = object;\n\nexport interface GetKycPendingActionsApiResponse {\n /** @format int32 */\n memberId: number;\n pendingActionActionTypes?: string[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetKycQuestionnairePageDefinitionApiResponse {\n alias?: string | null;\n /** @format int32 */\n memberId: number;\n pageDefinition?: any;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface InitializeQuestionnaireApiRequest {\n alias?: string | null;\n}\n\nexport interface InitializeQuestionnaireApiResponse {\n /** @format int32 */\n questionnaireId: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface LeaveFeedbackAsBuyerApiResponse {\n responseStatus?: ResponseStatus | null;\n transaction?: ItemTransactionApiDto | null;\n}\n\nexport interface LeaveFeedbackAsSellerApiResponse {\n responseStatus?: ResponseStatus | null;\n transaction?: ItemTransactionApiDto | null;\n}\n\nexport type MemberContactDetailsApiRequest = object;\n\nexport interface MemberContactDetailsApiResponse {\n countryCodeIso2?: string | null;\n alias?: string | null;\n country?: string | null;\n email?: string | null;\n firstName?: string | null;\n fullName?: string | null;\n lastName?: string | null;\n /** @format int32 */\n memberId: number;\n phoneNumber?: string | null;\n responseStatus?: ResponseStatus | null;\n ssn?: string | null;\n streetName?: string | null;\n town?: string | null;\n zipCode?: string | null;\n}\n\nexport type MemberEmailSettingsApiRequest = object;\n\nexport interface MemberEmailSettingsApiResponse {\n acceptsNewsLetter: boolean;\n acceptsOfferEmails: boolean;\n acceptsUnknownDeviceOrIpEmails: boolean;\n acceptsUpiInfoEmails: boolean;\n /** @format int32 */\n memberId: number;\n notifyBeforeWishListItemEnds: boolean;\n notifyOnFirstWinningBid: boolean;\n notifyWhenItemBecomesUnsold: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MemberFeedbackApiResponse {\n accountState: MemberAccountState;\n detailedSellerRatingSummaryForMember?: DetailedSellerRatingSummaryForMemberApiDto | null;\n items?: FeedbackItemApiDto[] | null;\n /** @format date-time */\n memberSince: string;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n totalFeedbackSummary?: TotalFeedbackSummaryForMemberApiDto | null;\n}\n\nexport interface MemberFeedbackItemsApiResponse {\n items?: FeedbackItemApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport interface MemberFeedbackSummaryApiResponse {\n accountState: MemberAccountState;\n detailedSellerRatingSummary?: DetailedSellerRatingSummaryForMemberApiDto | null;\n /** @format date-time */\n memberSince: string;\n responseStatus?: ResponseStatus | null;\n totalFeedbackSummary?: TotalFeedbackSummaryForMemberApiDto | null;\n}\n\nexport interface MemberPurchaseApiResponse {\n buyer?: MemberContactDetailsApiDto | null;\n item?: ItemTransactionApiDto | null;\n responseStatus?: ResponseStatus | null;\n seller?: MemberContactDetailsApiDto | null;\n}\n\nexport interface MemberPurchaseOrderApiResponse {\n buyer?: ContactDetailsApiDto | null;\n isAutomaticSellerReimbursementAllowed: boolean;\n items?: ItemTransactionApiDto[] | null;\n paymentMethod?: string | null;\n responseStatus?: ResponseStatus | null;\n seller?: ContactDetailsApiDto | null;\n}\n\nexport interface MemberPurchaseOrderItemApiResponse {\n items?: ItemTransactionApiDto[] | null;\n paymentMethod?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type MemberSelloProfileApiRequest = object;\n\nexport interface MemberSelloProfileApiResponse {\n accountState: MemberAccountState;\n alias?: string | null;\n city?: string | null;\n /** @format int32 */\n combinedShippingDays: number;\n /** @format float */\n detailedSellerRatingAverage?: number | null;\n email?: string | null;\n firstName?: string | null;\n hasShop: boolean;\n isCompanyUser: boolean;\n isSwedishUser: boolean;\n /** @format int32 */\n memberId: number;\n /** @format date-time */\n memberSince: string;\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n totalRating: number;\n}\n\nexport type MemberServerStorageListApiRequest = object;\n\nexport interface MemberServerStorageListApiResponse {\n responseStatus?: ResponseStatus | null;\n rows?: Row[] | null;\n}\n\nexport interface MemberServerStoragePutApiRequest {\n key?: string | null;\n value?: string | null;\n}\n\nexport interface MemberServerStoragePutApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type MemberSessionDataApiRequest = object;\n\nexport interface MemberSessionDataApiResponse {\n countryCodeIso2?: string | null;\n languageCodeIso2?: string | null;\n /** @format int32 */\n age?: number | null;\n alias?: string | null;\n aliasSlug?: string | null;\n appleId?: string | null;\n automaticTranslationPreferred: boolean;\n birthDate?: string | null;\n blueshiftEventSignature?: string | null;\n city?: string | null;\n country?: string | null;\n currencyCode?: string | null;\n /** @format float */\n detailedSellerRating?: number | null;\n email?: string | null;\n facebookId?: string | null;\n firstName?: string | null;\n gender?: string | null;\n googleId?: string | null;\n hasTraderaPay: boolean;\n heroImageUrl?: string | null;\n isBuyer: boolean;\n isSeller: boolean;\n isTrustedMember: boolean;\n klarnaId?: string | null;\n lastName?: string | null;\n /** @format int32 */\n memberId: number;\n memberIdHash?: string | null;\n /** @format int32 */\n memberState: number;\n permissions?: MemberPermissionsApiDto | null;\n /** @format date-time */\n registrationDate: string;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MemberShopDetailsApiResponse {\n alias?: string | null;\n companyInfo?: string | null;\n contactInfo?: string | null;\n hasLogo: boolean;\n logoFormat?: string | null;\n /** @format int32 */\n memberId: number;\n purchaseTerms?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface FirebaseConfiguration {\n apiKey?: string | null;\n authDomain?: string | null;\n databaseUrl?: string | null;\n functionsEmulatorUrl?: string | null;\n projectId?: string | null;\n region?: string | null;\n storageBucket?: string | null;\n}\n\nexport type GetMessagingConfigurationApiRequest = object;\n\nexport interface GetMessagingConfigurationApiResponse {\n firebaseConfiguration?: FirebaseConfiguration | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetMessagingEmailNotifyApiResponse {\n emailNotify: MessagingEmailNotification;\n /** @format int32 */\n memberId: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetMessagingItemApiResponse {\n /** @format int32 */\n price: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMessagingSilentApiRequest = object;\n\nexport interface GetMessagingSilentApiResponse {\n enabled: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMessagingStatsApiRequest = object;\n\nexport interface GetMessagingStatsApiResponse {\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n threads: number;\n /** @format int32 */\n threadsUnread: number;\n}\n\nexport enum MessagingEmailNotification {\n All = 'All',\n Unread = 'Unread',\n None = 'None'\n}\n\nexport interface SetMessagingEmailNotifyApiRequest {\n emailNotify: MessagingEmailNotification;\n}\n\nexport interface SetMessagingEmailNotifyApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetMessagingSilentApiRequest {\n enabled: boolean;\n}\n\nexport interface SetMessagingSilentApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ConfirmMutualFeedbackRemovalApiRequest {\n /** @format int32 */\n feedbackRemovalRequestId: number;\n}\n\nexport interface ConfirmMutualFeedbackRemovalApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum ConfirmationStatus {\n ConfirmationAllowed = 'ConfirmationAllowed',\n RequestIsOlderThen30Days = 'RequestIsOlderThen30Days',\n RequestedBySubmitter = 'RequestedBySubmitter'\n}\n\nexport interface CreateFeedbackRemovalApiRequest {\n comment?: string | null;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface CreateFeedbackRemovalApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum CreationStatus {\n CreationAllowed = 'CreationAllowed',\n CreatedBySubmitter = 'CreatedBySubmitter',\n CanBeAcceptedByReceiver = 'CanBeAcceptedByReceiver'\n}\n\nexport interface DenyMutualFeedbackRemovalApiRequest {\n /** @format int32 */\n feedbackRemovalRequestId: number;\n}\n\nexport interface DenyMututalFeedbackRemovalApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum FeedbackRemovalFlowStatus {\n CanBeStarted = 'CanBeStarted',\n CanBeAccepted = 'CanBeAccepted',\n SubmittedAlready = 'SubmittedAlready',\n NotApplicable = 'NotApplicable'\n}\n\nexport enum FeedbackRemovalState {\n Pending = 'Pending',\n Accepted = 'Accepted',\n Rejected = 'Rejected'\n}\n\nexport interface FlowStatusRequest {\n /** @format int32 */\n feedbackMemberId: number;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface FlowStatusResponse {\n feedbacksRemovalRequest?: MutualFeedbackRemovalApiDto | null;\n flowStatus: FeedbackRemovalFlowStatus;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface MemberDetails {\n alias?: string | null;\n /** @format int32 */\n id: number;\n}\n\nexport interface MutualFeedbackRemovalApiDto {\n comment?: string | null;\n /** @format date-time */\n completed?: string | null;\n /** @format date-time */\n created: string;\n fromMember?: MemberDetails | null;\n /** @format int32 */\n id: number;\n isCompleted: boolean;\n /** @format int32 */\n itemId: number;\n status?: FeedbackRemovalState | null;\n toMember?: MemberDetails | null;\n /** @format int32 */\n transactionBuyerMemberId: number;\n /** @format int32 */\n transactionId: number;\n /** @format int32 */\n transactionSellerMemberId: number;\n}\n\nexport interface TransactionFeedbackApiDto {\n /** @format date-time */\n created: string;\n fromMemberAlias?: string | null;\n /** @format int32 */\n fromMemberId: number;\n memberRole: TransactionFeedbackRole;\n rating: TransactionFeedbackRating;\n text?: string | null;\n toMemberAlias?: string | null;\n /** @format int32 */\n toMemberId: number;\n}\n\nexport enum TransactionFeedbackRating {\n None = 'None',\n Negative = 'Negative',\n Positive = 'Positive'\n}\n\nexport enum TransactionFeedbackRole {\n Buyer = 'Buyer',\n Seller = 'Seller'\n}\n\nexport interface FeedbackRemovalApiResponse {\n feedbackRemovalRequest?: MutualFeedbackRemovalApiDto | null;\n feedbacks?: TransactionFeedbackApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface FeedbackRemovalsApiRequest {\n feedbacks?: FlowStatusRequest[] | null;\n}\n\nexport interface FeedbackRemovalsApiResponse {\n feedbacksRemovalRequests?: FlowStatusResponse[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ValidateConfirmationApiResponse {\n confirmationStatus: ConfirmationStatus;\n feedbackRemovalRequest?: MutualFeedbackRemovalApiDto | null;\n feedbacks?: TransactionFeedbackApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ValidateCreationApiResponse {\n creationStatus: CreationStatus;\n feedbackRemovalRequest?: MutualFeedbackRemovalApiDto | null;\n feedbacks?: TransactionFeedbackApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum AvailablePayoutOption {\n SwedishBankAccount = 'SwedishBankAccount',\n InternationalBankAccount = 'InternationalBankAccount',\n PayPal = 'PayPal',\n Swish = 'Swish',\n Tink = 'Tink',\n Unknown = 'Unknown'\n}\n\nexport interface CompleteHyperwalletTransferMethodApiRequest {\n transferMethodToken?: string | null;\n transferMethodType?: string | null;\n}\n\nexport interface CompleteHyperwalletTransferMethodApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetHyperwalletAuthenticationTokenApiRequest = object;\n\nexport interface GetHyperwalletAuthenticationTokenApiResponse {\n authenticationToken?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetHyperwalletMemberDetailsApiRequest = object;\n\nexport interface GetHyperwalletMemberDetailsApiResponse {\n payeeVerificationStatus?: string | null;\n responseStatus?: ResponseStatus | null;\n userToken?: string | null;\n}\n\nexport type GetHyperwalletTransferMethodViewModelApiRequest = object;\n\nexport interface GetHyperwalletTransferMethodViewModelApiResponse {\n responseStatus?: ResponseStatus | null;\n userToken?: string | null;\n widgetBaseUrl?: string | null;\n}\n\nexport type GetIsTraderaPayEnabledApiRequest = object;\n\nexport interface GetIsTraderaPayEnabledApiResponse {\n isEnabled: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetPayoutSettingsModalViewModelApiResponse {\n availablePayoutOptions?: AvailablePayoutOption[] | null;\n hyperwallet?: PayoutSettingsModalHyperwallet | null;\n member?: PayoutSettingsModalMember | null;\n payoutFrequencyOption?: string | null;\n responseStatus?: ResponseStatus | null;\n tink?: PayoutSettingsModalTink | null;\n}\n\nexport type GetPayoutSettingsViewModelApiRequest = object;\n\nexport interface GetPayoutSettingsViewModelApiResponse {\n hyperwalletOnboardingProblems?: HyperwalletOnboardingProblem[] | null;\n hyperwalletPayeeVerificationStatus?: string | null;\n payoutDestination?: string | null;\n payoutDestinationType?: string | null;\n payoutFrequencyOption?: string | null;\n payoutFrequencyOptions?: string[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetPayoutTransferMethodUpdateStatusApiResponse {\n errorCode?: string | null;\n responseStatus?: ResponseStatus | null;\n status?: string | null;\n}\n\nexport interface HyperwalletOnboardingProblem {\n details?: string | null;\n type?: string | null;\n}\n\nexport interface MatchBankApiRequest {\n bankAccountNumber?: string | null;\n clearingNumber?: string | null;\n}\n\nexport interface MatchBankApiResponse {\n bankFound: boolean;\n /** @deprecated */\n bankName?: string | null;\n ok: boolean;\n /** @deprecated */\n requireBankIdVerification: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface PayoutSettingsModalHyperwallet {\n userToken?: string | null;\n widgetBaseUrl?: string | null;\n}\n\nexport interface PayoutSettingsModalMember {\n emailAddress?: string | null;\n isCompany: boolean;\n /** @format int32 */\n memberId: number;\n phoneNumber?: string | null;\n requireBankIdVerification: boolean;\n}\n\nexport interface PayoutSettingsModalTink {\n tinkLinkUrl?: string | null;\n}\n\nexport type RemoveBankAccountPayoutTransferMethodApiRequest = object;\n\nexport interface RemoveBankAccountPayoutTransferMethodApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type RemovePayPalPayoutTransferMethodApiRequest = object;\n\nexport interface RemovePayPalPayoutTransferMethodApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type RemovePayoutTransferMethodApiRequest = object;\n\nexport interface RemovePayoutTransferMethodApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ResendPayoutTransferMethodVerificationCodeApiRequest {\n /** @format uuid */\n processCorrelationId: string;\n swishNumber?: string | null;\n}\n\nexport interface ResendPayoutTransferMethodVerificationCodeApiResponse {\n errorCode?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetBankAccountPayoutTransferMethodApiRequest {\n bankAccountNumber?: string | null;\n bankIdOrderRef?: string | null;\n clearingNumber?: string | null;\n}\n\nexport interface SetBankAccountPayoutTransferMethodApiResponse {\n errorCode?: string | null;\n /** @format uuid */\n processCorrelationId: string;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type SetHyperwalletPayeeVerificationAsSubmittedApiRequest = object;\n\nexport interface SetHyperwalletPayeeVerificationAsSubmittedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetPayPalPayoutTransferMethodApiRequest {\n bankIdOrderRef?: string | null;\n emailAddress?: string | null;\n}\n\nexport interface SetPayPalPayoutTransferMethodApiResponse {\n errorCode?: string | null;\n /** @format uuid */\n processCorrelationId: string;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetPayoutTransferMethodUsingTinkApiRequest {\n accountNumber?: string | null;\n bankIdOrderRef?: string | null;\n}\n\nexport interface SetPayoutTransferMethodUsingTinkApiResponse {\n errorCode?: string | null;\n /** @format uuid */\n processCorrelationId: string;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetSwishPayoutTransferMethodApiRequest {\n bankIdOrderRef?: string | null;\n swishNumber?: string | null;\n}\n\nexport interface SetSwishPayoutTransferMethodApiResponse {\n errorCode?: string | null;\n /** @format uuid */\n processCorrelationId: string;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface VerifyPayoutTransferMethodApiRequest {\n /** @format uuid */\n processCorrelationId: string;\n verificationCode?: string | null;\n}\n\nexport interface VerifyPayoutTransferMethodApiResponse {\n errorCode?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface BankIdBeginWithIdApiRequest {\n /** @format int32 */\n memberId: number;\n}\n\nexport interface BankIdPasswordRecoveryCancelApiRequest {\n bankIdOrderRef?: string | null;\n /** @format int32 */\n memberid: number;\n}\n\nexport interface ChangeAliasApiRequest {\n browser?: string | null;\n ipAddress?: string | null;\n location?: string | null;\n newAlias?: string | null;\n operatingSystem?: string | null;\n}\n\nexport interface ChangeAliasApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ChangeEmailWithIdApiRequest {\n bankIdOrderRef?: string | null;\n email?: string | null;\n /** @format int32 */\n memberId: number;\n userIpAddress?: string | null;\n}\n\nexport interface ChangeEmailWithIdApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ChangePasswordApiRequest {\n password?: string | null;\n}\n\nexport interface ChangePasswordApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ChangePasswordWithIdApiRequest {\n /** @format int32 */\n memberId: number;\n password?: string | null;\n}\n\nexport interface CreateTaxIdentificationImageUploadUrlApiRequest {\n contentType?: string | null;\n}\n\nexport interface CreateTaxIdentificationImageUploadUrlApiResponse {\n objectName?: string | null;\n responseStatus?: ResponseStatus | null;\n uploadUrl?: string | null;\n}\n\nexport type CreateVerificationCodeApiRequest = object;\n\nexport interface CreateVerificationCodeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CreateVerificationCodeWithMemberIdApiRequest {\n /** @format int32 */\n memberId: number;\n recoveryFlowType: RecoveryFlowType;\n}\n\nexport interface CreateVerificationCodeWithMemberIdApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type DeactivateMemberAccountPermanentlyApiRequest = object;\n\nexport interface DeactivateMemberAccountPermanentlyApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface DeactivateMemberAccountTemporarilyApiRequest {\n comment?: string | null;\n}\n\nexport interface DeactivateMemberAccountTemporarilyApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GenerateMemberReferralCodeApiRequest = object;\n\nexport interface GenerateMemberReferralCodeApiResponse {\n /** @format double */\n amount: number;\n referralCode?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetAccountDeactivationSettingsApiRequest = object;\n\nexport interface GetAccountDeactivationSettingsApiResponse {\n isAccountDeactivationAllowed: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetBraintreeOnboardingDetailsApiRequest = object;\n\nexport interface GetBraintreeOnboardingDetailsApiResponse {\n isAccountDetailsSupplied: boolean;\n maskedBankAccount?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetHomepageThemeSettingApiRequest = object;\n\nexport interface GetHomepageThemeSettingApiResponse {\n isChangeAllowed: boolean;\n responseStatus?: ResponseStatus | null;\n theme: HomepageTheme;\n}\n\nexport type GetMagicalSyiEnabledApiRequest = object;\n\nexport interface GetMagicalSyiEnabledApiResponse {\n enabled: boolean;\n isChangeAllowed: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetMemberBankIdVerificationApiResponse {\n bankIdFormattedPersonalNumber?: string | null;\n /** @format date-time */\n lastVerifiedDate: string;\n /** @format date-time */\n manualIdentityVerificationValidTo: string;\n needInitialVerification: boolean;\n needsVerification: boolean;\n responseStatus?: ResponseStatus | null;\n supportsVerification: boolean;\n verificationReason: VerificationReason;\n}\n\nexport type GetMemberCompanyDac7StatusApiRequest = object;\n\nexport interface GetMemberCompanyDac7StatusApiResponse {\n isUnderDac7Requirements: boolean;\n hasRegisteredTaxIdentificationNumber: boolean;\n hasRegisteredVatNumber: boolean;\n responseStatus?: ResponseStatus | null;\n shouldProvideTaxBasis: boolean;\n /** @deprecated */\n shouldProvideVatNumber: boolean;\n}\n\nexport type GetMemberCompanyMoneyTransferLicenseStatusApiRequest = object;\n\nexport interface GetMemberCompanyMoneyTransferLicenseStatusApiResponse {\n hasApprovedMoneyTransferLicenseAgreement: boolean;\n hasCompanyContactSsn: boolean;\n /** @deprecated */\n isCompanyContactSignatory: boolean;\n isEligibleToSignMoneyTransferLicenseAgreement: boolean;\n /** @deprecated */\n isUnderLicense: boolean;\n moneyTransferLicenseAgreementName?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberConsentApiRequest = object;\n\nexport interface GetMemberConsentApiResponse {\n hasTraderaPayConsent: boolean;\n isEligibleToSignMoneyTransferLicenseAgreement: boolean;\n /** @deprecated */\n isUnderLicense: boolean;\n needsConsentOfTraderaPayAgreement?: string | null;\n responseStatus?: ResponseStatus | null;\n signatoryVerificationRequired: boolean;\n}\n\nexport type GetMemberEmailNotificationsSettingsViewModelApiRequest = object;\n\nexport interface GetMemberEmailNotificationsSettingsViewModelApiResponse {\n email?: MemberEmailNotificationsSettingsEmailApiDto | null;\n /** @format int32 */\n memberId: number;\n messaging?: MemberEmailNotificationsSettingsMessagingApiDto | null;\n responseStatus?: ResponseStatus | null;\n silentMessaging?: MemberSilentMessagingSettingApiDto | null;\n}\n\nexport type GetMemberHasTaxIdentificationNumberApiRequest = object;\n\nexport interface GetMemberHasTaxIdentificationNumberApiResponse {\n hasTaxIdentificationNumber: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberLocalizationApiRequest = object;\n\nexport interface GetMemberLocalizationApiResponse {\n languageCodeIso2?: string | null;\n automaticTranslationPreferred: boolean;\n currencyCode?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberProfileSettingsViewModelApiRequest = object;\n\nexport interface GetMemberProfileSettingsViewModelApiResponse {\n accountInformation?: MemberProfileSettingsAccountInformationApiDto | null;\n /** @format int32 */\n memberId: number;\n personalData?: MemberProfileSettingsPersonalDataApiDto | null;\n presentation?: MemberProfileSettingsPresentationApiDto | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberSecuritySettingsViewModelApiRequest = object;\n\nexport interface GetMemberSecuritySettingsViewModelApiResponse {\n accountDeactivation?: MemberSecuritySettingsAccountDeactivationApiDto | null;\n memberBlocking?: MemberSecuritySettingsMemberBlockingApiDto | null;\n /** @format int32 */\n memberId: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberSellerSettingsViewModelApiRequest = object;\n\nexport interface GetMemberSellerSettingsViewModelApiResponse {\n autoFeedback?: MemberSellerSettingsAutoFeedbackApiDto | null;\n autoShipmentCheckout?: MemberSellerSettingsAutoShipmentCheckoutApiDto | null;\n combinedShipping?: MemberSellerSettingsCombinedShippingApiDto | null;\n commitOnPayment?: MemberSellerSettingsCommitOnPaymentApiDto | null;\n itemLocalization?: MemberSellerSettingsItemLocalizationApiDto | null;\n magicalSyi?: MemberSellerSettingsMagicalSyiApiDto | null;\n makeAnOffer?: MemberSellerSettingsMakeAnOfferApiDto | null;\n /** @format int32 */\n memberId: number;\n responseStatus?: ResponseStatus | null;\n shippingFeeRule?: MemberSellerSettingsShippingFeeRuleApiDto | null;\n}\n\nexport type GetMemberShouldCollectTaxIdentificationNumberApiRequest = object;\n\nexport interface GetMemberShouldCollectTaxIdentificationNumberApiResponse {\n responseStatus?: ResponseStatus | null;\n shouldCollectBirthDate: boolean;\n shouldCollectTaxIdentificationNumber: boolean;\n}\n\nexport type GetMemberVerificationStatusApiRequest = object;\n\nexport interface GetMemberVerificationStatusApiResponse {\n hasAnyActiveTraderaPayConsent: boolean;\n hasCompanyContactSsn: boolean;\n hasSsn: boolean;\n isEligibleToSignMoneyTransferLicenseAgreement: boolean;\n /** @deprecated */\n isUnderLicense: boolean;\n needsBankIdVerification: boolean;\n needsConsentOfTraderaPayAgreement?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetMoneyTransferLicenseAgreementApiResponse {\n agreementName?: string | null;\n /** @format date-time */\n inEffectAsOf: string;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetPayoutFrequencyApiRequest = object;\n\nexport type GetPayoutFrequencyOptionsApiRequest = object;\n\nexport type GetShippingInvoiceMemberApiRequest = object;\n\nexport interface GetShippingInvoiceMemberApiResponse {\n enabled: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetTraderaPayOnboardingDetailsApiRequest = object;\n\nexport interface GetTraderaPayOnboardingDetailsApiResponse {\n isBankAccountDetailsSupplied: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetTranslatedMemberFeedbackApiResponse {\n isTranslationOnDemandDisabled: boolean;\n items?: TranslatedFeedbackItemApiDto[] | null;\n providerName?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface HeroImageUrlApiDto {\n max?: string | null;\n med?: string | null;\n min?: string | null;\n}\n\nexport interface MemberEmailNotificationsSettingsEmailApiDto {\n acceptsNewsLetter: boolean;\n acceptsOfferEmails: boolean;\n acceptsUnknownDeviceOrIpEmails: boolean;\n acceptsUpiInfoEmails: boolean;\n notifyBeforeWishListItemEnds: boolean;\n notifyOnFirstWinningBid: boolean;\n notifyWhenItemBecomesUnsold: boolean;\n}\n\nexport interface MemberEmailNotificationsSettingsMessagingApiDto {\n emailNotifyAll: boolean;\n isAllowedToSetParticipation: boolean;\n participates: boolean;\n}\n\nexport type MemberHasCompanyContactSsnApiRequest = object;\n\nexport interface MemberHasCompanyContactSsnApiResponse {\n hasCompanyContactSsn: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type MemberHasSsnApiRequest = object;\n\nexport interface MemberHasSsnApiResponse {\n hasSsn: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MemberProfileSettingsAccountInformationApiDto {\n alias?: string | null;\n emailAddress?: string | null;\n}\n\nexport interface MemberProfileSettingsPersonalDataApiDto {\n countryCodeIso2?: string | null;\n city?: string | null;\n country?: string | null;\n firstName?: string | null;\n isNameChangeAllowed: boolean;\n lastName?: string | null;\n phoneNumber?: string | null;\n phoneNumberUnvalidated?: string | null;\n streetName?: string | null;\n zipCode?: string | null;\n}\n\nexport interface MemberProfileSettingsPresentationApiDto {\n heroImageUrls?: HeroImageUrlApiDto | null;\n information?: string | null;\n}\n\nexport interface MemberSecuritySettingsAccountDeactivationApiDto {\n isAccountDeactivationAllowed: boolean;\n}\n\nexport interface MemberSecuritySettingsBlockedMemberApiDto {\n alias?: string | null;\n /** @format int32 */\n memberId: number;\n}\n\nexport interface MemberSecuritySettingsMemberBlockingApiDto {\n blockedMembers?: MemberSecuritySettingsBlockedMemberApiDto[] | null;\n}\n\nexport interface MemberSellerSettingsAutoFeedbackApiDto {\n enabled: boolean;\n message?: string | null;\n type: SellerAutoFeedbackType;\n}\n\nexport interface MemberSellerSettingsAutoShipmentCheckoutApiDto {\n enabled: boolean;\n isChangeAllowed: boolean;\n}\n\nexport interface MemberSellerSettingsCombinedShippingApiDto {\n /** @format int32 */\n days: number;\n enabled: boolean;\n isChangeAllowed: boolean;\n}\n\nexport interface MemberSellerSettingsCommitOnPaymentApiDto {\n enabled: boolean;\n isChangeAllowed: boolean;\n}\n\nexport interface MemberSellerSettingsItemLocalizationApiDto {\n selectedDescriptionLanguageCodeIso2?: string | null;\n shippingFromCountryCodeIso2?: string | null;\n}\n\nexport interface MemberSellerSettingsMagicalSyiApiDto {\n enabled: boolean;\n isChangeAllowed: boolean;\n}\n\nexport interface MemberSellerSettingsMakeAnOfferApiDto {\n enabled: boolean;\n isChangeAllowed: boolean;\n}\n\nexport interface MemberSellerSettingsShippingFeeRuleApiDto {\n /** @format int32 */\n freeShippingCostLimit: number;\n shippingOption?: string | null;\n useFreeShippingCostLimit: boolean;\n}\n\nexport interface MemberSilentMessagingSettingApiDto {\n enabled: boolean;\n isChangeAllowed: boolean;\n}\n\nexport interface PayoutFrequencyApiResponse {\n payoutFrequencyOption?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface PayoutFrequencyOptionsApiResponse {\n options?: string[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum RecoveryFlowType {\n Email = 'Email',\n Sms = 'Sms'\n}\n\nexport interface RemoveMemberPublicProfileHeroImageApiRequest {\n userIpAddress?: string | null;\n}\n\nexport interface RemoveMemberPublicProfileHeroImageApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type RemoveTraderaPayPayoutDestinationApiRequest = object;\n\nexport interface RemoveTraderaPayPayoutDestinationApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SaveSellerAutoFeedbackSettingsApiRequest {\n criteria: SellerAutoFeedbackCriteria;\n message?: string | null;\n}\n\nexport interface SaveSellerAutoFeedbackSettingsApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SaveSellerAutoPaymentReminderSettingsApiRequest {\n enabled: boolean;\n}\n\nexport interface SaveSellerAutoPaymentReminderSettingsApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SaveWinnerEmailApiRequest {\n winnerEmail?: string | null;\n}\n\nexport interface SaveWinnerEmailApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum SellerAutoFeedbackType {\n Manual = 'Manual',\n PositiveFeedback = 'PositiveFeedback',\n Paid = 'Paid'\n}\n\nexport interface SendVerificationSmsApiRequest {\n cellphoneNumber?: string | null;\n countryCode?: string | null;\n}\n\nexport interface SendVerificationSmsApiResponse {\n errorMessage?: string | null;\n responseStatus?: ResponseStatus | null;\n sentToCountryCode?: string | null;\n sentToTelephoneNumber?: string | null;\n smsSid?: string | null;\n successful: boolean;\n}\n\nexport interface SendVerificationSmsWithIdApiRequest {\n cellphoneNumber?: string | null;\n countryCode?: string | null;\n /** @format int32 */\n memberId: number;\n recoveryFlowType: RecoveryFlowType;\n}\n\nexport interface SetAutoShipmentCheckoutMemberEnabledApiRequest {\n enabled: boolean;\n}\n\nexport interface SetAutoShipmentCheckoutMemberEnabledApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetCombinedShippingMemberDaysApiRequest {\n /** @format int32 */\n days: number;\n}\n\nexport interface SetCombinedShippingMemberDaysApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetCombinedShippingMemberEnabledApiRequest {\n enabled: boolean;\n}\n\nexport interface SetCombinedShippingMemberEnabledApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetCommitOnPaymentMemberEnabledApiRequest {\n enabled: boolean;\n}\n\nexport interface SetCommitOnPaymentMemberEnabledApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetMagicalSyiEnabledApiRequest {\n enabled: boolean;\n}\n\nexport interface SetMagicalSyiEnabledApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetMakeAnOfferMemberEnabledApiRequest {\n enabled: boolean;\n}\n\nexport interface SetMakeAnOfferMemberEnabledApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetMemberConsentApiRequest {\n agreementName?: string | null;\n}\n\nexport interface SetMemberConsentApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetPayoutFrequencyApiRequest {\n payoutFrequencyOption?: string | null;\n}\n\nexport interface SetPayoutFrequencyApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetShippingFeeRuleFreeShippingCostLimitApiRequest {\n /** @format int32 */\n freeShippingCostLimit: number;\n useFreeShippingCostLimit: boolean;\n}\n\nexport interface SetShippingFeeRuleFreeShippingCostLimitApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetShippingFeeRuleShippingOptionApiRequest {\n shippingOption?: string | null;\n}\n\nexport interface SetShippingFeeRuleShippingOptionApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SmsCheckApiRequest {\n smsSid?: string | null;\n}\n\nexport interface SmsCheckApiResponse {\n responseStatus?: ResponseStatus | null;\n successful: boolean;\n}\n\nexport interface SmsVerificationDTO {\n action?: string | null;\n cellphoneNumber?: string | null;\n /** @format date-time */\n timestamp: string;\n}\n\nexport interface SmsVerificationsApiResponse {\n responseStatus?: ResponseStatus | null;\n verifications?: SmsVerificationDTO[] | null;\n}\n\nexport interface TaxIdentificationNumberImage {\n filename?: string | null;\n objectName?: string | null;\n}\n\nexport interface TinkBankAccountDto {\n accountNumber?: string | null;\n icon?: string | null;\n name?: string | null;\n}\n\nexport interface TinkGetBankAccountsApiResponse {\n accounts?: TinkBankAccountDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateHomepageThemeApiRequest {\n theme: HomepageTheme;\n}\n\nexport interface UpdateHomepageThemeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberCompanyContactSsnApiRequest {\n companyContactSsn?: string | null;\n}\n\nexport interface UpdateMemberCompanyContactSsnApiResponse {\n isValid: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberContactDetailsApiRequest {\n alias?: string | null;\n country?: string | null;\n email?: string | null;\n firstName?: string | null;\n fullName?: string | null;\n lastName?: string | null;\n phoneNumber?: string | null;\n streetName?: string | null;\n town?: string | null;\n userIpAddress?: string | null;\n zipCode?: string | null;\n}\n\nexport interface UpdateMemberContactDetailsApiResponse {\n creditSafeVerificationResult?: CreditSafeNameVerificationResult | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberCurrencyApiRequest {\n currencyCode?: string | null;\n}\n\nexport interface UpdateMemberCurrencyApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberEmailSettingsApiRequest {\n acceptsNewsLetter: boolean;\n acceptsOfferEmails: boolean;\n acceptsUnknownDeviceOrIpEmails?: boolean | null;\n acceptsUpiInfoEmails: boolean;\n notifyBeforeWishListItemEnds: boolean;\n notifyOnFirstWinningBid: boolean;\n notifyWhenItemBecomesUnsold: boolean;\n}\n\nexport interface UpdateMemberEmailSettingsApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberLanguageApiRequest {\n languageCodeIso2?: string | null;\n userIpAddress?: string | null;\n}\n\nexport interface UpdateMemberLanguageApiResponse {\n isValid: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberPublicProfileHeroImageApiRequest {\n heroImageUrl?: string | null;\n userIpAddress?: string | null;\n}\n\nexport interface UpdateMemberPublicProfileHeroImageApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberPublicProfileInformationApiRequest {\n information?: string | null;\n userIpAddress?: string | null;\n}\n\nexport interface UpdateMemberPublicProfileInformationApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberSelectedDescriptionLanguageApiRequest {\n languageCodeIso2?: string | null;\n}\n\nexport interface UpdateMemberSelectedDescriptionLanguageApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberShippingFromCountryApiRequest {\n countryCodeIso2?: string | null;\n}\n\nexport interface UpdateMemberShippingFromCountryApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberSsnApiRequest {\n ssn?: string | null;\n}\n\nexport interface UpdateMemberSsnApiResponse {\n isValid: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberTaxIdentificationNumberApiRequest {\n birthDate?: string | null;\n images?: TaxIdentificationNumberImage[] | null;\n taxIdentificationNumber?: string | null;\n}\n\nexport interface UpdateMemberTaxIdentificationNumberApiResponse {\n isValid: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberTranslationPreferredApiRequest {\n isAutomaticTranslationPreferred: boolean;\n}\n\nexport interface UpdateMemberTranslationPreferredApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberVatNumberApiRequest {\n vatNumber?: string | null;\n}\n\nexport interface UpdateMemberVatNumberApiResponse {\n isValid: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ValidateExistingPasswordForMemberApiRequest {\n existingPassword?: string | null;\n}\n\nexport interface ValidateExistingPasswordForMemberApiResponse {\n isValid: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum VerificationReason {\n VerificationNotNeeded = 'VerificationNotNeeded',\n NeedInitialVerification = 'NeedInitialVerification',\n NeedsVerificationFixedPriceLimitTwoMonthValidation = 'NeedsVerificationFixedPriceLimitTwoMonthValidation',\n NeedsVerificationFixedPriceLimitExpensive = 'NeedsVerificationFixedPriceLimitExpensive'\n}\n\nexport interface VerifyNonMobilePincodeApiRequest {\n pincode?: string | null;\n}\n\nexport interface VerifyNonMobilePincodeWithIdApiRequest {\n /** @format int32 */\n memberId: number;\n pincode?: string | null;\n recoveryFlowType: RecoveryFlowType;\n}\n\nexport interface VerifyPincodeApiRequest {\n pincode?: string | null;\n}\n\nexport interface VerifyPincodeApiResponse {\n hasActiveVerificationCode: boolean;\n responseStatus?: ResponseStatus | null;\n success: boolean;\n /** @format int32 */\n verificationAttempts: number;\n}\n\nexport interface VerifyPincodeWithIdApiRequest {\n /** @format int32 */\n memberId: number;\n pincode?: string | null;\n recoveryFlowType: RecoveryFlowType;\n}\n\nexport interface PublicProfileApiResponse {\n selectedDescriptionLanguageCodeIso2?: string | null;\n shippingFromCountryCodeIso2?: string | null;\n accountState: MemberAccountState;\n alias?: string | null;\n city?: string | null;\n /** @format int32 */\n combinedShippingDays: number;\n /** @format float */\n detailedSellerRatingAverage?: number | null;\n firstName?: string | null;\n hasShop: boolean;\n heroImage?: string | null;\n information?: string | null;\n isCompanyUser: boolean;\n isSwedishUser: boolean;\n /** @format int32 */\n memberId: number;\n /** @format date-time */\n memberSince: string;\n responseStatus?: ResponseStatus | null;\n shopLogoUrl?: string | null;\n /** @format int32 */\n totalRating: number;\n translatedInformation?: string | null;\n}\n\nexport interface Row {\n /** @format date-time */\n createdDate: string;\n key?: string | null;\n /** @format date-time */\n updatedDate: string;\n value?: string | null;\n}\n\nexport interface SaveFeedbackAsBuyerApiRequest {\n /** @format int32 */\n commResponsiveness?: number | null;\n comment?: string | null;\n isPositive: boolean;\n /** @format int32 */\n itemAsDescribed?: number | null;\n /**\n * @deprecated\n * @format int32\n */\n itemId: number;\n reportInr: boolean;\n /**\n * @deprecated\n * @format int32\n */\n sellerMemberId: number;\n /** @format int32 */\n shippingHandlingCharges?: number | null;\n /** @format int32 */\n shippingTime?: number | null;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface SaveFeedbackAsBuyerApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SaveFeedbackAsSellerApiRequest {\n /**\n * @deprecated\n * @format int32\n */\n buyerMemberId: number;\n comment?: string | null;\n isPositive: boolean;\n /**\n * @deprecated\n * @format int32\n */\n itemId: number;\n /** @format int32 */\n paymentTime?: number | null;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface SaveFeedbackAsSellerApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type SellerAutoFeedbackApiRequest = object;\n\nexport interface SellerAutoFeedbackApiResponse {\n /** @format date-time */\n created: string;\n criteria: SellerAutoFeedbackCriteria;\n message?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type SellerAutoPaymentReminderApiRequest = object;\n\nexport interface SellerAutoPaymentReminderApiResponse {\n enabled: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CampaignCodeItem {\n auctionId?: number[] | null;\n campaignCode?: string | null;\n /** @format int32 */\n campaignCodeId: number;\n}\n\nexport interface CommissionFeeSummaryDto {\n /** @format double */\n maxFee: number;\n /** @format double */\n maxPercentage: number;\n /** @format double */\n minFee: number;\n /** @format double */\n minPercentage: number;\n}\n\nexport interface FeatureSummaryByIdsApiResponse {\n campaignCodes?: CampaignCodeItem[] | null;\n featureSummaryList?: FeatureSummaryApiDto[] | null;\n isCompanyUser: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface FeatureSummaryDto {\n /** @format int32 */\n count: number;\n name?: string | null;\n /** @format int32 */\n price: number;\n}\n\nexport interface ItemApiDto {\n /** @format int32 */\n id: number;\n mainImageUrl?: ItemImageUrls | null;\n mainImageUrlTemplate?: string | null;\n /** @format int32 */\n price: number;\n /** @deprecated */\n selectedShipping?: SelectedShipping | null;\n shortDescription?: string | null;\n}\n\nexport interface MarkAsPaidBySellerApiRequest {\n paidConfirmed: boolean;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport interface MarkAsPaidBySellerApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type MemberActiveItemsSummaryApiRequest = object;\n\nexport interface MemberActiveItemsSummaryApiResponse {\n responseStatus?: ResponseStatus | null;\n summary?: MemberActiveItemsSummaryApiDto | null;\n}\n\nexport type MemberListingFeeApiRequest = object;\n\nexport interface MemberListingFeeApiResponse {\n /** @format int32 */\n maxFreeListingsPerMonth: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MemberPickListApiResponse {\n /** @format int32 */\n hiddenCount: number;\n items?: PickListBuyerApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport interface MemberPickListV2ApiResponse {\n /** @format int64 */\n filterHitCount: number;\n /** @format int32 */\n hiddenCount: number;\n items?: PickListBuyerV2ApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport interface MemberSoldItemBuyerInfoApiResponse {\n buyerContactDetails?: ContactDetailsApiDto | null;\n buyerProfile?: PublicProfileApiDto | null;\n items?: MemberSoldItemApiDto[] | null;\n paidStatus?: string | null;\n paymentMethod?: string | null;\n paymentOptions?: PaymentOptionApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n sellerContactDetails?: ContactDetailsApiDto | null;\n /** @format double */\n totalOrderPrice: number;\n /** @format double */\n totalOrderPriceWithoutShipping: number;\n /** @format double */\n vatPercent?: number | null;\n}\n\nexport interface MemberSoldItemByTransactionIdApiResponse {\n item?: MemberSoldItemApiDto | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MemberSoldItemShippingInfoV2ApiResponse {\n buyerContactDetails?: ContactDetailsApiDto | null;\n isQuickFlowPossible: boolean;\n /** @deprecated */\n item?: ItemApiDto | null;\n items?: ItemApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n selectedShipping?: SelectedShipping | null;\n /** @format uuid */\n shipmentCheckoutId: string;\n}\n\nexport interface MemberSoldItemsApiResponse {\n /** @format int32 */\n hiddenCount: number;\n items?: MemberSoldItemApiDto[] | null;\n /** @format int32 */\n notPaidCount: number;\n /** @format int32 */\n paidCount: number;\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n shippedCount: number;\n /** @format int64 */\n totalCount: number;\n}\n\nexport interface MemberSoldItemsByPurchaseOrderIdApiResponse {\n items?: MemberSoldItemApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type MemberSoldItemsSummaryApiRequest = object;\n\nexport interface MemberSoldItemsSummaryApiResponse {\n responseStatus?: ResponseStatus | null;\n summary?: MemberSoldItemsSummaryApiDto | null;\n}\n\nexport type MemberStatsThisMonthApiRequest = object;\n\nexport interface MemberStatsThisMonthApiResponse {\n /** @format int32 */\n activeThisMonthCount: number;\n /** @format int32 */\n listedThisMonthCount: number;\n /** @format int32 */\n maxFreeListingsPerMonth: number;\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n soldThisMonthCount: number;\n /** @format int32 */\n unsoldThisMonthCount: number;\n}\n\nexport interface OrderInfoApiResponse {\n bookedShipping?: BookedShipping | null;\n buyerProtection?: BuyerProtectionApiDto | null;\n /** @format double */\n discountCodeAmount?: number | null;\n discounts?: DiscountDto[] | null;\n isFeedbackLeftByBuyer: boolean;\n isMarkedAsShipped: boolean;\n items?: OrderItem[] | null;\n offeredShippingOptions?: ShippingApiDto[] | null;\n paidStatus?: string | null;\n paymentMethod?: string | null;\n /** @format double */\n paymentMethodAmount?: number | null;\n paymentOptions?: PaymentOptionApiDto[] | null;\n /** @format uuid */\n purchaseOrderId: string;\n responseStatus?: ResponseStatus | null;\n selectedShipping?: ShippingApiDto | null;\n sellerContactDetails?: ContactDetailsApiDto | null;\n sellerProfile?: PublicProfileApiDto | null;\n shippingDiscount?: ShippingDiscount | null;\n /** @format double */\n totalOrderPrice: number;\n /** @format double */\n totalOrderPriceWithoutShipping: number;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface OrderItem {\n imageUrl?: string | null;\n imageUrlTemplate?: string | null;\n /** @format int32 */\n itemId: number;\n /** @format double */\n price: number;\n shortDescription?: string | null;\n /** @format date-time */\n transactionDate: string;\n}\n\nexport interface RestartItemsSummaryApiResponse {\n commission?: CommissionFeeSummaryDto | null;\n features?: FeatureSummaryDto[] | null;\n isCompany: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SelectedShipping {\n /** @format int32 */\n productId?: number | null;\n providerId?: string | null;\n}\n\nexport interface SetItemShippedApiRequest {\n /** @format uuid */\n purchaseOrderId: string;\n shipped: boolean;\n}\n\nexport interface SetItemShippedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetItemShippingBookedApiRequest {\n booked: boolean;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport interface SetItemShippingBookedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetTransactionItemShippedApiRequest {\n shipped: boolean;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface SetTransactionItemShippedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ShopItemPurchaseHistoryApiResponse {\n /** @format int32 */\n categoryId: number;\n /** @format date-time */\n endDate: string;\n imageUrl?: string | null;\n imageUrlTemplate?: string | null;\n /** @format int32 */\n itemId: number;\n purchases?: ShopItemPurchase[] | null;\n responseStatus?: ResponseStatus | null;\n shortDescription?: string | null;\n userReference?: string | null;\n}\n\nexport interface SetBuyerTransactionVisibilityApiRequest {\n hidden: boolean;\n transactionIdList?: number[] | null;\n}\n\nexport interface SetBuyerTransactionVisibilityApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetItemVisibilityApiRequest {\n hidden: boolean;\n itemIds?: number[] | null;\n}\n\nexport interface SetItemVisibilityApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetTransactionVisibilityApiRequest {\n hidden: boolean;\n /** @format uuid */\n purchaseOrderId: string;\n}\n\nexport interface SetTransactionVisibilityApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SystemMessage {\n severity: SystemMessageSeverity;\n type: SystemMessageType;\n}\n\nexport enum SystemMessageSeverity {\n Warning = 'Warning',\n Info = 'Info'\n}\n\nexport enum SystemMessageType {\n InvoiceOverdue = 'InvoiceOverdue',\n InvoiceUnpaid = 'InvoiceUnpaid',\n PayoutFailed = 'PayoutFailed',\n PayoutReadyBankAccountMissing = 'PayoutReadyBankAccountMissing',\n BankAccountMissing = 'BankAccountMissing',\n HyperwalletPayeeVerificationRequired = 'HyperwalletPayeeVerificationRequired',\n HyperwalletPayeeVerificationUnderReview = 'HyperwalletPayeeVerificationUnderReview',\n PayoutProviderOnboardingFailed = 'PayoutProviderOnboardingFailed',\n KycQuestionnaire = 'KycQuestionnaire',\n PayoutReadyVerificationRequired = 'PayoutReadyVerificationRequired',\n OutstandingTraderaPayLicense = 'OutstandingTraderaPayLicense',\n PayoutReadyOutstandingTraderaPayLicense = 'PayoutReadyOutstandingTraderaPayLicense',\n CollectVatNumber = 'CollectVatNumber',\n CollectTin = 'CollectTin'\n}\n\nexport interface UnblockMemberApiRequest {\n /** @format int32 */\n memberIdToUnblock: number;\n}\n\nexport interface UnblockMemberApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface NewDisputeItemSelectorPageApiResponse {\n items?: DisputeV2PurchaseOrderItemData[] | null;\n purchaseOrder?: DisputeV2PurchaseOrderData | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface NewDisputePageApiResponse {\n items?: DisputeV2ItemData[] | null;\n purchaseOrder?: DisputeV2PurchaseOrderData | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ProfilePageApiResponse {\n accountState?: string | null;\n alias?: string | null;\n city?: string | null;\n cleanedAlias?: string | null;\n /** @format int32 */\n combinedShippingDays: number;\n /** @format float */\n detailedSellerRatingAverage?: number | null;\n existsInFavouriteSellers: boolean;\n hasShop: boolean;\n heroImageUrl?: string | null;\n inFavouriteSellers: boolean;\n intro?: string | null;\n isCompany: boolean;\n isCompanyUser: boolean;\n /** @format int32 */\n memberId: number;\n /** @format date-time */\n memberSince: string;\n /** @format int32 */\n profileMemberId: number;\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n totalRating?: number | null;\n translatedIntro?: string | null;\n}\n\nexport interface WebChangeEmailWithIdApiRequest {\n bankIdOrderRef?: string | null;\n email?: string | null;\n /** @format int32 */\n memberId: number;\n}\n\nexport enum ItemState {\n BidderAuctionRemoved = 'BidderAuctionRemoved',\n BidderBidRemoved = 'BidderBidRemoved',\n BidderEndedWon = 'BidderEndedWon',\n BidderEndedReservedPriceNotReached = 'BidderEndedReservedPriceNotReached',\n BidderEndedNotWon = 'BidderEndedNotWon',\n BidderActiveLeading = 'BidderActiveLeading',\n BidderActiveReservedPriceNotReached = 'BidderActiveReservedPriceNotReached',\n BidderActiveOverbidden = 'BidderActiveOverbidden',\n GeneralActive = 'GeneralActive',\n GeneralEnded = 'GeneralEnded',\n PurchasedNotPaid = 'PurchasedNotPaid',\n PurchasedPaid = 'PurchasedPaid',\n PurchasedDone = 'PurchasedDone',\n ShopItemActive = 'ShopItemActive',\n ShopItemEnded = 'ShopItemEnded',\n ShopItemEndedWon = 'ShopItemEndedWon',\n BuyItNowEndedWon = 'BuyItNowEndedWon',\n BuyItNowEnded = 'BuyItNowEnded',\n BuyItNowActive = 'BuyItNowActive',\n SellerActiveBids = 'SellerActiveBids',\n SellerActiveNoBids = 'SellerActiveNoBids',\n SellerReservedPriceNotReached = 'SellerReservedPriceNotReached',\n SellerSoldNotPaid = 'SellerSoldNotPaid',\n SellerSoldDone = 'SellerSoldDone',\n SellerSoldShipped = 'SellerSoldShipped',\n SellerSoldPaid = 'SellerSoldPaid',\n SellerSoldShippingBooked = 'SellerSoldShippingBooked'\n}\n\nexport interface WishListApiResponse {\n items: WishListItemCardViewModel[];\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n totalCount: number;\n}\n\nexport interface WishListItemCardViewModel {\n /** @format int32 */\n buyNowPrice: number;\n displayHighlighted: boolean;\n /** @format date-time */\n endDate: string;\n hasFreeShipping: boolean;\n imageSecondaryUrl: string;\n imageUrl: string;\n isActive: boolean;\n isLeading: boolean;\n isOverbidden: boolean;\n isWinner: boolean;\n /** @format int32 */\n itemId: number;\n itemState: ItemState;\n itemType: string;\n itemUrl: string;\n /** @format int32 */\n maxBidAmount: number;\n preferredShipping: WishListItemShippingOptionViewModel;\n /** @format int32 */\n price: number;\n sellerAlias: string;\n /** @format int32 */\n sellerMemberId: number;\n shortDescription: string;\n /** @format int32 */\n totalBids: number;\n}\n\nexport interface WishListItemShippingOptionViewModel {\n /** @format double */\n cost: number;\n type: string;\n}\n\nexport interface AddItemToWishListApiRequest {\n /** @format int32 */\n itemId: number;\n}\n\nexport interface AddItemToWishListApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetWishListApiResponse {\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n totalCount: number;\n wishListItems?: WishListItemDto[] | null;\n}\n\nexport type GetWishListItemIdsApiRequest = object;\n\nexport interface GetWishListItemIdsApiResponse {\n responseStatus?: ResponseStatus | null;\n wishListItemsIds?: number[] | null;\n}\n\nexport type GetWishlistItemsEndingTodayCountApiRequest = object;\n\nexport interface GetWishlistItemsEndingTodayCountApiResponse {\n /** @format int32 */\n numberOfItems: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MemberBidInfo {\n auctionRemoved: boolean;\n bidRemoved: boolean;\n /** @format int32 */\n maxBidAmount: number;\n /** @format int32 */\n memberId: number;\n reservePriceReached: boolean;\n}\n\nexport interface RemoveItemFromWishListApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface RemoveItemsFromWishListApiRequest {\n itemIds?: number[] | null;\n}\n\nexport interface WishListItemDto {\n /** @format date-time */\n addedToWishList: string;\n /** @format int32 */\n bidCount: number;\n boughtByCurrentMember: boolean;\n /** @format int32 */\n categoryId: number;\n /** @format int32 */\n currentBidAmount: number;\n displayHighlighted: boolean;\n /** @format date-time */\n endDate: string;\n /** @format int32 */\n fixedPrice: number;\n hasCommitUpFront: boolean;\n hasEnded: boolean;\n hasReservePrice: boolean;\n isAuthenticated: boolean;\n isAvailableForOffers?: boolean | null;\n isBuyItNow: boolean;\n isPaid?: boolean | null;\n isShopItem: boolean;\n /** @format int32 */\n itemId: number;\n /** @format int32 */\n itemPrice?: number | null;\n /** @format int32 */\n leadingBidMemberId?: number | null;\n mainImage?: ItemImageUrls | null;\n mainImageTemplate?: string | null;\n memberBid?: MemberBidInfo | null;\n /** @format int32 */\n nextValidBidAmount?: number | null;\n /** @format int32 */\n openingBid?: number | null;\n preferredShipping?: ShippingApiDto | null;\n reservePriceReached: boolean;\n secondaryImage?: ItemImageUrls | null;\n secondaryImageTemplate?: string | null;\n sellerAlias?: string | null;\n /** @format int32 */\n sellerMemberId: number;\n /** @format int32 */\n sellerTotalRating: number;\n title?: string | null;\n /** @format date-time */\n transactionDate?: string | null;\n /** @format int32 */\n transactionType?: number | null;\n type: ItemTypeApiDto;\n}\n\nexport interface Address {\n countryCodeIso2?: string | null;\n city?: string | null;\n country?: string | null;\n street?: string | null;\n zipCode?: string | null;\n}\n\nexport interface ShippingDiscount {\n partnerProvider?: string | null;\n /** @format int32 */\n price: number;\n /** @format int32 */\n shippingProductId?: number | null;\n shippingProvider?: string | null;\n}\n\nexport enum PickListFilterPaidStatus {\n All = 'All',\n Paid = 'Paid',\n Unpaid = 'Unpaid'\n}\n\nexport enum PickListFilterShippedStatus {\n All = 'All',\n Shipped = 'Shipped',\n NotShipped = 'NotShipped'\n}\n\nexport interface ShopItemPurchase {\n buyerMemberAlias?: string | null;\n /** @format int32 */\n buyerMemberId: number;\n /** @format int32 */\n buyerTotalRating: number;\n /** @format int32 */\n categoryId: number;\n /** @format int32 */\n price: number;\n /** @format date-time */\n transactionDate: string;\n}\n\nexport interface TransactionFeedbackRemovalRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface TransactionItemShippedCreateParams {\n request?: SetTransactionItemShippedApiRequest;\n}\n\nexport interface TransactionVisibilityCreateParams {\n request?: SetTransactionVisibilityApiRequest;\n}\n\nexport interface TransactionsRequest {\n transactionIds?: number[];\n}\n\nexport interface TranslatedRequest {\n toLanguageCodeIso2?: string;\n feedbackIds?: number[];\n}\n\nexport interface TranslationPreferredUpdateParams {\n request?: UpdateMemberTranslationPreferredApiRequest;\n}\n\nexport interface UnreadNotificationsCountRequest {\n request?: GetUnreadNotificationsCountApiRequest;\n}\n\nexport interface UpiStrikeRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface UppoStrikeCreateParams {\n request?: AddUnpaidPurchaseOrderStrikeApiRequest;\n}\n\nexport interface UppoStrikeRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n}\n\nexport interface V2EscalateCreateParams {\n request?: EscalateDisputeV2ApiRequest;\n}\n\nexport interface V2GetDataRequest {\n /** @format int32 */\n disputeId?: number;\n}\n\nexport interface V2ImageUploadUrlCreateParams {\n request?: CreateDisputeImageUploadUrlApiRequest;\n}\n\nexport interface V2MarkAsSolvedCreateParams {\n request?: MarkDisputeAsSolvedV2ApiRequest;\n}\n\nexport interface V2SaveDataCreateParams {\n request?: SaveDisputeDataV2ApiRequest;\n}\n\nexport interface ValidateExistingPasswordCreateParams {\n request?: ValidateExistingPasswordForMemberApiRequest;\n}\n\nexport interface VatNumberUpdateParams {\n request?: UpdateMemberVatNumberApiRequest;\n}\n\nexport interface VatdetailsRequest {\n request?: GetMemberVatDetailsApiRequest;\n}\n\nexport interface VerificationStatusRequest {\n request?: GetMemberVerificationStatusApiRequest;\n}\n\nexport interface VerifyCreateParams {\n request?: VerifyPayoutTransferMethodApiRequest;\n}\n\nexport interface VerifyNonmobilePincodeCreateParams {\n request?: VerifyNonMobilePincodeApiRequest;\n}\n\nexport interface VerifyNonmobilePincodeWithIdCreateParams {\n request?: VerifyNonMobilePincodeWithIdApiRequest;\n}\n\nexport interface VerifyPincodeCreateParams {\n request?: VerifyPincodeApiRequest;\n}\n\nexport interface VerifyPincodeWithIdCreateParams {\n request?: VerifyPincodeWithIdApiRequest;\n}\n\nexport interface WinnerEmailUpdateParams {\n request?: SaveWinnerEmailApiRequest;\n}\n\nexport interface WishListRequest {\n shippingCountryCodeIso2?: string;\n languageCodeIso2?: string;\n automaticTranslationPreferred?: boolean;\n statusFilter?: string;\n /** @format int32 */\n pageSize?: number;\n /** @format int32 */\n page?: number;\n}\n\nexport interface WishlistCreateParams {\n request?: AddItemToWishListApiRequest;\n}\n\nexport interface WishlistDeleteParams {\n request?: RemoveItemsFromWishListApiRequest;\n}\n\nexport interface WishlistRequest {\n statusFilter?: WishListStatusFilter;\n /** @format int32 */\n take?: number;\n /** @format int32 */\n skip?: number;\n languageCodeIso2?: string;\n}\n\nexport interface WithAliasRequest {\n alias?: string;\n}\n","import {\n selectGeolocation,\n selectIsLoggedIn,\n selectIsOutsideSweden\n} from 'tradera/state/member/selectors';\nimport { selectPreferredLanguage } from 'tradera/state/language/selectors';\nimport { getLanguageFromCountryCode } from 'tradera/localization/languagecode';\nimport {\n isDenmarkCountryCode,\n isNetherlandsCountryCode,\n isSwedenCountryCodeOrUndefined\n} from 'tradera/localization/countrycode';\nimport type { RootState } from '../configure-store';\n\nexport const selectShowRegionSelection = (state: RootState) =>\n !selectIsLoggedIn(state) && selectIsOutsideSweden(state);\nexport const selectAvailableShippingCountryCodes = (state: RootState) =>\n state.shippingRegion.availableShippingCountryCodes;\nexport const selectAvailableShippingCountries = (state: RootState) =>\n state.shippingRegion.availableShippingCountries;\nexport const selectShippingCountry = (state: RootState) =>\n state.shippingRegion.shippingCountry;\nexport const selectIsLoadingAvailableShippingCountries = (state: RootState) =>\n state.shippingRegion.isLoadingAvailableShippingCountries;\nexport const selectHasLoadedAvailableShippingCountries = (state: RootState) =>\n state.shippingRegion.hasLoadedAvailableShippingCountries;\nexport const selectShippingRegionCountryCodeIso2 = (state: RootState) =>\n state.shippingRegion.shippingCountry?.countryCodeIso2;\nexport const selectIsSwedishVisitor = (state: RootState) =>\n isSwedenCountryCodeOrUndefined(selectShippingRegionCountryCodeIso2(state));\nexport const selectIsDanishVisitor = (state: RootState) =>\n isDenmarkCountryCode(selectShippingRegionCountryCodeIso2(state));\nexport const selectIsDutchVisitor = (state: RootState) =>\n isNetherlandsCountryCode(selectShippingRegionCountryCodeIso2(state));\n\nconst gpsMatchesLanguage = (state: RootState) => {\n const geoLocation = selectGeolocation(state);\n if (!geoLocation) {\n return true;\n }\n const country = geoLocation?.isoCode?.toLowerCase();\n const expectedLang = getLanguageFromCountryCode(country);\n const language =\n selectPreferredLanguage(state)?.languageCodeIso2?.toLowerCase() || 'sv';\n return expectedLang === language;\n};\n\nexport const selectShowLocalizationRegionPicker = (state: RootState) =>\n !selectIsLoggedIn(state) &&\n !state.shippingRegion.regionPickerDismissed &&\n !state.shippingRegion.shippingCountryCookieValue &&\n !gpsMatchesLanguage(state);\n","import axios, {\n type AxiosError,\n type AxiosInstance,\n type AxiosResponse,\n type CancelTokenSource\n} from 'axios';\n\nimport { logger } from 'packages/logger';\nimport { isServer } from 'tradera/utils/nextjs';\nimport { getLanguage } from 'tradera/utils/language';\nimport { toLocalizedUrl } from 'tradera/utils/url';\n\n/**\n * Standardized api error codes\n */\nexport const API_ERRORS = {\n IGNORE_ME: 'IGNORE_ME',\n ABORTED: 'ABORTED',\n CANCELLED: 'CANCELLED',\n NETWORK: 'NETWORK',\n TIMEOUT: 'TIMEOUT',\n VERSION_MISMATCH: 'VERSION_MISMATCH',\n LOGGED_OUT: 'LOGGED_OUT'\n};\n\nexport const defaultJsonRequestHeaders = {\n // Force json response\n Accept: 'application/json',\n // For WebAPI and RequiresAuthorization to handle ajax request\n 'X-Requested-With': 'XMLHttpRequest'\n};\n\n/**\n * Standard Axios configs\n */\nexport const axiosConfigs = {\n // Requests to endpoints with authentication\n authenticated: {\n // Send auth cookies\n withCredentials: true,\n headers: defaultJsonRequestHeaders\n },\n notAuthenticated: {\n // Dont send auth cookies\n withCredentials: false,\n headers: defaultJsonRequestHeaders\n }\n};\n\nconst isMissingAuthToken = (responseString: string) => {\n try {\n const responseObject = JSON.parse(responseString);\n const isMissing =\n responseObject.responseStatus.errorCode === 'MissingAuthToken';\n return isMissing;\n } catch {\n return false;\n }\n};\n\nconst isUnauthorized = (statusCode: number) => statusCode === 401;\n\nexport const addAntiCacheParam = (url?: string) => {\n const antiCacheRegExp = /([?&]_=)[^&]*/;\n return antiCacheRegExp.test(url || '')\n ? url?.replace(antiCacheRegExp, '$1' + new Date().getTime())\n : url +\n (/\\?/.test(url || '') ? '&' : '?') +\n '_=' +\n new Date().getTime();\n};\n\nconst submitOriginalRequest = async (error: AxiosError) =>\n axios({\n ...error.config,\n url: addAntiCacheParam(error.config.url)\n });\n\nconst handleMissingAuthToken = async (error: AxiosError) => {\n const refreshAccessToken = async () =>\n axios.get(toLocalizedUrl('/login/state', getLanguage()));\n const handleErrorAfterRefresh = async (\n errorAfterRefreshToken: AxiosError\n ) => {\n if (isUnauthorized(errorAfterRefreshToken.request?.status)) {\n // eslint-disable-next-line better-mutation/no-mutation\n error.message = API_ERRORS.LOGGED_OUT;\n }\n return Promise.reject(error);\n };\n return refreshAccessToken()\n .then(() => submitOriginalRequest(error))\n .catch(handleErrorAfterRefresh);\n};\n\nconst handleUnauthorized = async (error: AxiosError) => {\n const checkLoginState = async () =>\n axios.get(toLocalizedUrl('/login/state', getLanguage()));\n return checkLoginState().then((response) => {\n const isLoggedIn = response.data?.isLoggedIn;\n if (isLoggedIn) {\n return submitOriginalRequest(error);\n }\n // eslint-disable-next-line better-mutation/no-mutation\n error.message = API_ERRORS.LOGGED_OUT;\n // eslint-disable-next-line promise/no-return-wrap\n return Promise.reject(error);\n });\n};\n\nexport const errorResponseInterceptor = (error: AxiosError) => {\n if (isMissingAuthToken(error.request?.response)) {\n return handleMissingAuthToken(error);\n } else if (isUnauthorized(error.request?.status)) {\n return handleUnauthorized(error);\n }\n return Promise.reject(error);\n};\n\n/**\n * Create Axios instance or decorate existing instance with interceptor for expired token responses\n *\n */\nexport const axiosWithTokenRefresh = (axiosInstance?: AxiosInstance) => {\n let instance;\n if (axiosInstance === undefined) {\n instance = axios.create();\n } else {\n instance = axiosInstance;\n }\n instance.interceptors.response.use(\n (response) => response,\n errorResponseInterceptor\n );\n return instance;\n};\n\nconst cancelTokens: Record = {};\n\n/**\n * Create new or return existing cancellation function\n *\n * Usage:\n * const { cancel, cancelToken } = utilizeCancelToken('tokenId')\n * if (cancel) cancel();\n * axios.get('http://api.com/...', { cancelToken });\n *\n * @param {string} tokenId - A string ID shared between requests that cancel together\n */\nexport const utilizeCancelToken = (tokenId: string) => {\n if (isServer) {\n throw new Error(\n 'This implementation is not compatible with SSR as global properties like cancelTokens here are shared between server instances'\n );\n }\n let cancel;\n if (tokenId in cancelTokens) {\n cancel = cancelTokens[tokenId].cancel;\n }\n // eslint-disable-next-line better-mutation/no-mutation\n cancelTokens[tokenId] = axios.CancelToken.source();\n return {\n cancel,\n cancelToken: cancelTokens[tokenId].token\n };\n};\n\n/**\n * Check response version and throw error if different from current\n *\n */\nexport const checkResponseVersion = (version = '12.0.0') => {\n return (response: AxiosResponse) => {\n if (\n response.headers &&\n response.headers['X-Tradera-Version'] &&\n response.headers['X-Tradera-Version'] !== version\n ) {\n throw new Error(API_ERRORS.VERSION_MISMATCH);\n } else {\n return response;\n }\n };\n};\n\n/**\n * Checks redirect response for logged out user\n * This is an old solution. New solutions return a 401 response instead (see handleError).\n * Requires Axios config to include { withCredentials: true }\n *\n */\nexport const checkResponseLoggedOut = () => {\n return (response: AxiosResponse) => {\n if (\n response.data &&\n typeof response.data === 'string' &&\n response.data.includes('Logga in')\n ) {\n throw new Error(API_ERRORS.LOGGED_OUT);\n } else {\n return response;\n }\n };\n};\n\n/**\n * Final standardized formatting of an api response\n *\n */\nexport const finalizeResponse = () => {\n return (response: AxiosResponse) => {\n const { data, status } = response;\n return {\n data,\n status\n };\n };\n};\n\ntype StatusHandlers = Record;\n\n/**\n * Common network request error handling\n */\nexport const handleError = (statusHandlers: StatusHandlers = {}) => {\n return (error: AxiosError) => {\n const status = error.response && error.response.status;\n const message = error.message ? error.message : error.toString();\n /* eslint-disable better-mutation/no-mutation */\n if (axios.isCancel(error)) {\n error.message = API_ERRORS.CANCELLED;\n } else if (message.includes('timeout') || status === 408) {\n error.message = API_ERRORS.TIMEOUT;\n } else if (message.includes('Network')) {\n error.message = API_ERRORS.NETWORK;\n } else if (message.includes('Request aborted')) {\n error.message = API_ERRORS.ABORTED;\n } else if (status === 401) {\n error.message = API_ERRORS.LOGGED_OUT;\n } else if (status && status in statusHandlers) {\n error.message = statusHandlers[status];\n }\n throw error;\n };\n};\n\nexport const reloadOnUnauthorized = (error: AxiosError) => {\n switch (error.message) {\n case API_ERRORS.LOGGED_OUT:\n window.location.reload();\n break;\n default:\n throw error;\n }\n};\n\nexport const isClientNetworkError = (error: AxiosError) => {\n switch (error.message) {\n case API_ERRORS.IGNORE_ME:\n case API_ERRORS.CANCELLED:\n case API_ERRORS.ABORTED:\n case API_ERRORS.NETWORK:\n case API_ERRORS.TIMEOUT:\n return true;\n default:\n return false;\n }\n};\n\nexport const logError = (error: AxiosError, scope?: object) => {\n if (!isClientNetworkError(error)) {\n logger(error, scope);\n }\n};\n","import cookie from 'cookie';\n\nexport const getCookieFromString = (cookieString: string, key: string) =>\n cookie.parse(cookieString)[key] || null;\n\n/**\n * Helper function for cookie and GDPR utilities do NOT use this directly. Use the cookie\n * utility instead as that is GDPR compliant.\n * @returns\n */\nexport const getCookieFromBrowser = (key: string) =>\n getCookieFromString(window.document.cookie, key);\n\n/**\n * Helper function for cookie and GDPR utilities do NOT use this directly. Use the cookie\n * utility instead as that is GDPR compliant.\n * @returns\n */\nexport const setCookieToBrowser = (s: string) => {\n window.document.cookie = s;\n};\n","import plainDayjs from 'dayjs';\nimport isBetween from 'dayjs/plugin/isBetween';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\nimport localizedFormat from 'dayjs/plugin/localizedFormat';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport localeData from 'dayjs/plugin/localeData';\nimport {\n DAY_IN_SECONDS,\n HOUR_IN_SECONDS,\n MINUTE_IN_SECONDS\n} from 'tradera/constants/time';\nimport 'dayjs/locale/sv';\nimport 'dayjs/locale/da';\nimport 'dayjs/locale/de';\nimport 'dayjs/locale/fr';\nimport 'dayjs/locale/nl';\n\nplainDayjs.extend(isBetween);\nplainDayjs.extend(isSameOrAfter);\nplainDayjs.extend(utc);\nplainDayjs.extend(timezone);\nplainDayjs.extend(localizedFormat);\nplainDayjs.extend(relativeTime);\nplainDayjs.extend(localeData);\n\nexport const dayjs = plainDayjs;\n\nexport const localizedDayjs =\n (locale) =>\n (...args) =>\n dayjs(...args).locale(locale);\n\nconst swedishTimeZone = 'Europe/Stockholm';\n\nexport const swedishTimeZoneDate = (date, localizedDayjsFn) => {\n // This is a workaround for locale being lost when using .tz() in Nextweb\n const locale = localizedDayjsFn().locale();\n return localizedDayjsFn(date).tz(swedishTimeZone).locale(locale);\n};\n\nexport const formatUtcDateAsSwedishTimeZoneDate = (\n date,\n localizedDayjsFn,\n options = {}\n) => {\n const formatArray = [\n options.includeWeekday && 'ddd', // tor\n 'D MMM', // 19 okt\n options.includeYear && 'YYYY', // 2023\n !options.excludeTime && 'HH:mm' // 09:50\n ];\n const format = formatArray.filter(Boolean).join(' ');\n\n return swedishTimeZoneDate(date, localizedDayjsFn).format(format);\n};\n\nexport const getCurrentSwedishTimeZoneDate = () =>\n dayjs().tz(swedishTimeZone).format('YYYYMMDD');\n\n/**\n * Format a number of seconds to an object of time units\n *\n * @param {number} seconds\n * @param {object} [options]\n * @param {string} [options.startUnit] - Time part to start counting from, empty for all parts\n * @param {string} [options.endUnit] - Time part to stop counting on, empty for all parts\n * @returns {{string: integer}}\n */\nexport const getTimeSpanParts = (seconds, options = {}) => {\n const optionsWithDefaults = {\n startUnit: '',\n endUnit: '',\n ...options\n };\n const parts = {};\n let remaining = seconds;\n let started = !optionsWithDefaults.startUnit;\n for (const [part, length] of Object.entries(TIME_SPAN_UNIT_LENGTHS)) {\n if (!started && part === optionsWithDefaults.startUnit) started = true;\n if (started) {\n if (remaining >= length) {\n parts[part] = Math.floor(remaining / length);\n }\n // eslint-disable-next-line better-mutation/no-mutation\n remaining %= length;\n if (remaining === 0 || optionsWithDefaults.endUnit === part) break;\n }\n }\n return parts;\n};\n\nexport const TIME_SPAN_UNITS = {\n DAYS: 'days',\n HOURS: 'hours',\n MINUTES: 'minutes',\n SECONDS: 'seconds'\n};\n\nconst TIME_SPAN_UNIT_LENGTHS = {\n [TIME_SPAN_UNITS.DAYS]: DAY_IN_SECONDS,\n [TIME_SPAN_UNITS.HOURS]: HOUR_IN_SECONDS,\n [TIME_SPAN_UNITS.MINUTES]: MINUTE_IN_SECONDS,\n [TIME_SPAN_UNITS.SECONDS]: 1\n};\n\n/**\n *\n * @param string locale\n */\nexport const getMonths = (locale) => {\n dayjs.locale(locale);\n return dayjs.months();\n};\n","import { swedishTimeZoneDate } from 'tradera/utils/date';\n\n/**\n * NOTE: there's a hook useFormatEndDate in src/hooks/use-format-end-date.ts\n * that will help out with dayjs and translation func\n */\nexport const formatEndDate = (endDateInput, t, nowDateInput, dayjs) => {\n if (!endDateInput || !nowDateInput) return '';\n\n const endDate = swedishTimeZoneDate(endDateInput, dayjs);\n const now = swedishTimeZoneDate(nowDateInput, dayjs);\n if (endDate.isSameOrAfter(now.add(1, 'week'), 'day')) {\n return endDate.format('D MMM HH:mm');\n }\n if (endDate.isSameOrAfter(now.add(2, 'day'), 'day')) {\n return endDate.format('ddd HH:mm');\n }\n if (endDate.isSameOrAfter(now.add(1, 'day'))) {\n return `${t('vip_tomorrow')} ${endDate.format('HH:mm')}`;\n }\n if (endDate.isSameOrAfter(now.add(1, 'minute'))) {\n const hours = endDate.diff(now, 'hour');\n const minutes = endDate.diff(now, 'minute') % 60;\n const timeParts = [];\n if (hours > 0) {\n timeParts.push(t('vip_hours', { count: hours }));\n }\n if (minutes > 0) {\n timeParts.push(t('vip_minutes', { count: minutes }));\n }\n return timeParts.join(' ');\n }\n if (endDate.isAfter(now)) {\n return t('vip_less_than_1_min_left');\n }\n return t('vip_ended');\n};\n\nexport const formatNumberWithSeparators = (number, separator = '\\u2006') => {\n return number\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1' + separator);\n};\n\n// https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString\nfunction toLocaleStringSupportsLocales() {\n try {\n Number(0).toLocaleString('i');\n } catch (e) {\n return e.name === 'RangeError';\n }\n return false;\n}\n\n// https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString\nfunction toLocaleStringSupportsOptions() {\n return !!(\n typeof Intl === 'object' &&\n Intl &&\n typeof Intl.NumberFormat === 'function'\n );\n}\n\nconst isLocaleFormattingSupportedInBrowser =\n toLocaleStringSupportsLocales() && toLocaleStringSupportsOptions();\n\nexport const formatSellerDsrAverage = (value, locale = 'sv-SE') => {\n return value?.toLocaleString(locale, {\n minimumFractionDigits: 1,\n maximumFractionDigits: 1\n });\n};\n\nexport const getCurrencySymbol = (locale, overrideOptions = {}) => {\n const defaultOptions = {\n style: 'currency',\n currency: 'SEK',\n currencyDisplay:\n locale.startsWith('sv') &&\n (overrideOptions.currency || 'SEK') === 'SEK' &&\n (overrideOptions.preferredCurrency || 'SEK') === 'SEK'\n ? 'symbol'\n : 'code',\n useGrouping: false,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0\n };\n return (0)\n .toLocaleString(locale, {\n ...defaultOptions,\n ...overrideOptions\n })\n .replace(/\\d/g, '')\n .trim();\n};\n\nexport const formatDateWithDayOfWeek = (dateString, locale) => {\n if (!isLocaleFormattingSupportedInBrowser) {\n return dateString;\n }\n\n const options = {\n weekday: 'long',\n year: undefined,\n month: 'long',\n day: 'numeric'\n };\n return new Intl.DateTimeFormat(locale, options).format(\n Date.parse(dateString)\n );\n};\n\nexport const formatItemId = (itemId) => {\n if (!itemId || !Number.isInteger(itemId)) return undefined;\n\n return itemId.toLocaleString('sv-SE'); // Groupings of 3 separated by spaces\n};\n\nexport const formatOrderNumber = (orderNr) =>\n formatItemId(Number.parseInt(orderNr));\n","import ENDPOINTS from 'tradera/constants/endpoints';\nimport {\n axiosWithTokenRefresh,\n checkResponseVersion,\n finalizeResponse,\n handleError,\n utilizeCancelToken,\n axiosConfigs\n} from 'tradera/utils/api';\nimport initData from 'tradera/legacy/static/packages/init-data';\nimport { toLocalizedUrl } from 'tradera/utils/url';\nimport { getLanguage } from 'tradera/utils/language';\nimport { isServer } from 'tradera/utils/nextjs';\nimport type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\n\ntype HttpClientConfig = AxiosRequestConfig & { cancelTokenId?: string };\n\nconst ensureClientOnly = () => {\n // Cancel tokens would be shared per server instance so ensure we are not on server.\n if (isServer) {\n throw new Error('This HTTP client is only safe to use on frontend');\n }\n};\n\n// Prevents URL:s that begins with // when that was not intended.\nconst getSafeUrl = (baseUrl: string, url?: string) => {\n if (baseUrl.endsWith('/') && url?.startsWith('/')) {\n return baseUrl + url.substring(1);\n }\n return baseUrl + url;\n};\n\nconst httpClient = (baseUrl: string, shouldLocalizeUrl?: boolean) => {\n const axiosWrapper = (\n url: string | undefined,\n httpClientConfig: HttpClientConfig,\n axiosCaller: (\n axios: AxiosInstance,\n url: string,\n config: AxiosRequestConfig\n ) => Promise>\n ) => {\n const { cancelTokenId, ...axiosConfig } = httpClientConfig;\n const version = initData.version;\n if (cancelTokenId) {\n const { cancel, cancelToken } = utilizeCancelToken(cancelTokenId);\n // eslint-disable-next-line better-mutation/no-mutation\n axiosConfig.cancelToken = cancelToken;\n if (cancel) {\n cancel();\n }\n }\n const safeUrl = getSafeUrl(baseUrl, url);\n const localizedUrl = shouldLocalizeUrl\n ? toLocalizedUrl(safeUrl, getLanguage())\n : safeUrl;\n return axiosCaller(axiosWithTokenRefresh(), localizedUrl, axiosConfig)\n .then(\n version ? checkResponseVersion(version) : (response) => response\n )\n .then(finalizeResponse())\n .catch(handleError());\n };\n\n return {\n get: (\n url: string,\n httpClientConfig: HttpClientConfig = axiosConfigs.authenticated\n ) => {\n ensureClientOnly();\n return axiosWrapper(url, httpClientConfig, (axios, url, config) =>\n axios.get(url, config)\n );\n },\n post: (\n url: string,\n payload: TRequest,\n httpClientConfig: HttpClientConfig = axiosConfigs.authenticated\n ) => {\n ensureClientOnly();\n return axiosWrapper(url, httpClientConfig, (axios, url, config) =>\n axios.post, TRequest>(\n url,\n payload,\n config\n )\n );\n },\n put: (\n url: string,\n payload: TRequest,\n httpClientConfig: HttpClientConfig = axiosConfigs.authenticated\n ) => {\n ensureClientOnly();\n return axiosWrapper(url, httpClientConfig, (axios, url, config) =>\n axios.put, TRequest>(\n url,\n payload,\n config\n )\n );\n },\n delete: (\n url: string,\n httpClientConfig: HttpClientConfig = axiosConfigs.authenticated\n ) => {\n ensureClientOnly();\n return axiosWrapper(url, httpClientConfig, (axios, url, config) =>\n axios.delete(url, config)\n );\n },\n request: (\n config: AxiosRequestConfig,\n httpClientConfig: HttpClientConfig = axiosConfigs.authenticated\n ) => {\n ensureClientOnly();\n return axiosWrapper(\n config.url,\n httpClientConfig,\n (axios, url, enhancedConfig) => {\n return axios.request({ ...config, ...enhancedConfig, url });\n }\n );\n }\n };\n};\n\nconst trpcClient = (endpoint: string) => {\n const client = httpClient(`/api/${endpoint}`, false);\n function unpackResponse(response: { data: TResponse }) {\n return response.data;\n }\n return {\n command: (\n commandName: string,\n payload: TRequest,\n httpClientConfig?: HttpClientConfig\n ): Promise =>\n client\n .post<\n TResponse,\n TRequest\n >(`/commands/${commandName}`, payload, httpClientConfig)\n .then(unpackResponse),\n query: (\n queryName: string,\n httpClientConfig?: HttpClientConfig\n ) =>\n client\n .get(`/queries/${queryName}`, httpClientConfig)\n .then(unpackResponse)\n };\n};\n\nexport const defaultClient = httpClient('');\nexport const touchWebClient = httpClient('/', true);\nexport const nextwebClient = httpClient('/api');\nexport const webApiClient = httpClient(ENDPOINTS.WEB_API, false);\nexport const cmsApiClient = httpClient('/api/cms');\nexport const marketingApiClient = httpClient(ENDPOINTS.MARKETING_PUBLIC_API);\nexport const memberIdentificationClient = trpcClient('member-identification');\nexport const translationDynamicApiClient = trpcClient(\n 'translation-dynamic-api'\n);\nexport const shippingRecommendationsClient = trpcClient(\n 'shipping-recommendations'\n);\n","import omitBy from 'lodash/omitBy';\nimport mapObject from 'lodash/mapValues';\n\nexport const nullifyUndefinedProperties = (obj: Record) =>\n mapObject(obj, (value) => (typeof value === 'undefined' ? null : value));\n\ntype NonNullableProperties = {\n [K in keyof T]: Exclude;\n};\n\nexport function removePropertiesWithoutValue>(\n obj: T,\n removeEmptyString?: boolean\n): NonNullableProperties {\n return omitBy(\n obj,\n (value) =>\n value === null ||\n value === undefined ||\n (removeEmptyString && value === '')\n ) as NonNullableProperties;\n}\n","import { logger } from 'tradera/legacy/static/packages/logger';\nimport { isServer } from 'tradera/utils/nextjs';\nimport type { TaskPriority } from 'src/types/scheduler-polyfill.d.ts';\n\ntype isInputPendingOptions = { includeContinuous: boolean };\ntype PostTaskCallback = () => unknown;\n\ndeclare global {\n interface Navigator {\n scheduling: {\n isInputPending: (options?: isInputPendingOptions) => boolean;\n };\n }\n\n interface Window {\n scheduler: Scheduler;\n }\n}\n\nconst LONG_RUNNING_TASK_DURATION = 50; // ms\n\nconst polyfillScheduler = () => {\n if (isServer) {\n return Promise.reject();\n }\n\n if (typeof window.scheduler !== 'undefined') {\n return Promise.resolve();\n }\n\n return import('scheduler-polyfill');\n};\n\nconst schedulerPolyfill = polyfillScheduler();\n\nexport const isInputPending = (): boolean =>\n Boolean(navigator.scheduling?.isInputPending({ includeContinuous: true }));\n\n/**\n * Pauses a synchronous task to allow other main thread tasks on the event loop to run (good for INP)\n * Note that nested setTimeout can cause an up to a 15ms delay in loops\n * (https://chromestatus.com/feature/5710690097561600), so use sparingly and with `isInputPending`:\n * if (isInputPending()) {\n * await yieldToMain();\n * }\n * Docs: https://web.dev/articles/optimize-long-tasks#use_asyncawait_to_create_yield_points\n */\nexport const yieldToMain = (): Promise =>\n new Promise((resolve) => {\n setTimeout(resolve, 0);\n });\n\n/**\n * Loop through an array (or other iterable object) of as a background task\n *\n * For each iteration this will pause if there is a user interaction event that needs\n * to be handled on the main thread or if it has exceeded the limit of a long running task (>=50ms);\n */\nexport const forEachYield = async (\n array: Array,\n callback: (\n element: ArrayType,\n index: number,\n array: Array\n ) => void\n): Promise => {\n let deadline = performance.now() + LONG_RUNNING_TASK_DURATION;\n let index = 0;\n\n for (const element of array) {\n if (isInputPending() || performance.now() >= deadline) {\n // There's a pending user input. Yield here:\n await yieldToMain();\n deadline = performance.now() + LONG_RUNNING_TASK_DURATION;\n }\n callback(element, index, array);\n index += 1;\n }\n};\n\nconst postTask = async (\n taskCallback: PostTaskCallback,\n priority: TaskPriority\n) => {\n try {\n await schedulerPolyfill;\n } catch (error) {\n if (isServer) {\n logger('scheduler-polyfill does not support a node environment');\n }\n // Fallback to ensure taskCallback() is always called\n await yieldToMain();\n return taskCallback();\n }\n\n return await scheduler.postTask(taskCallback, { priority });\n};\n\nexport const queueUserBlockingTask = (taskCallback: PostTaskCallback) =>\n postTask(taskCallback, 'user-blocking');\n\nexport const queueUserVisibleTask = (taskCallback: PostTaskCallback) =>\n postTask(taskCallback, 'user-visible');\n\nexport const queueBackgroundTask = (taskCallback: PostTaskCallback) =>\n postTask(taskCallback, 'background');\n","import { webApiClient } from 'tradera/utils/http';\n\nconst timeDiffInMs = (start) => {\n return Date.now() - start;\n};\n\nconst queryServerTime = async (retryCount) => {\n const latencyLimit = 2000;\n const maxRetries = 2;\n const requestStart = Date.now();\n const {\n data: { currentTime }\n } = await webApiClient.get('/discover/server-time');\n const latency = timeDiffInMs(requestStart);\n\n if (latency < latencyLimit) {\n return { currentTime: Date.parse(currentTime), latency };\n } else if (retryCount < maxRetries) {\n return queryServerTime(retryCount + 1);\n } else {\n return null;\n }\n};\n\n/**\n * Requests server time and returns\n * { currentTime, latency }\n */\nexport const getServerTime = async () => {\n return await queryServerTime(0);\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { getServerTime } from 'tradera/utils/time-api';\nimport { isServer } from 'tradera/utils/nextjs';\n\nlet _minServerCheckInterval = 1000 * 60 * 5;\nlet _serverDiff = 0;\nlet _didGetServerResponse = false;\nlet _lastCheckAtMs = null;\n\nconst updateServerDiff = async () => {\n _lastCheckAtMs = Date.now();\n const serverTimeObject = await getServerTime();\n if (serverTimeObject) {\n _didGetServerResponse = true;\n // We add the whole latency even though it may give a later\n // time than in reality since a later time gives less time\n // left until auctions expire. This is better than showing\n // too much time left.\n const timeNowOnServer = new Date(\n serverTimeObject.currentTime + serverTimeObject.latency\n );\n _serverDiff = timeNowOnServer.getTime() - Date.now();\n }\n};\n\nconst shouldCheckServer = () =>\n _lastCheckAtMs === null ||\n Date.now() - _lastCheckAtMs >= _minServerCheckInterval;\n\nlet _initialPromise = null;\n\n/**\n * Gets the date on the server and shall be used for calculating auction time left.\n * @returns The date or null if server did not respond at least once.\n */\nexport const syncServerTime = async () => {\n if (isServer) {\n throw new Error('Never call this on server');\n }\n if (shouldCheckServer()) {\n const promise = updateServerDiff();\n if (!_didGetServerResponse) {\n _initialPromise = promise;\n }\n }\n\n if (_initialPromise) {\n try {\n await _initialPromise;\n } catch {\n // Don't throw any errors.\n }\n _initialPromise = null;\n }\n\n return _didGetServerResponse ? new Date(Date.now() + _serverDiff) : null;\n};\n\nexport const resetForTesting = () => {\n _minServerCheckInterval = 0;\n _didGetServerResponse = null;\n};\n","import qs from 'qs';\nimport HOSTS from 'tradera/constants/hosts';\nimport initData from 'tradera/legacy/static/packages/init-data';\nimport { formatNextPathnameInfo } from 'next/dist/shared/lib/router/utils/format-next-pathname-info';\nimport { getNextPathnameInfo } from 'next/dist/shared/lib/router/utils/get-next-pathname-info';\n\nimport { logger } from 'packages/logger';\nimport {\n URL_LANGUAGES,\n DEFAULT_LANGUAGE,\n SUPPORTED_LANGUAGES\n} from 'tradera/lang/constants.mjs';\nimport { removePropertiesWithoutValue } from 'tradera/utils/object';\n\n// List of SPA paths for the regex match, without initial slash\nconst SPA_REGEX_PATHS = [\n 'search',\n 'campaign',\n 'charity',\n 'categories',\n 'profile\\\\/items',\n 'brand\\\\/.+',\n // Category\n '[a-z]+[\\\\w\\\\-]+[\\\\-|_]\\\\d+'\n];\nconst SPA_PATH_REGEX = new RegExp(\n `^(/(${URL_LANGUAGES.join('|')}))?/(${SPA_REGEX_PATHS.join('|')})`\n);\n\n/**\n * Removes priceRange from query params if fromPrice or toPrice is present.\n */\nconst prunePriceRange = (queryParams: Record) => {\n if (queryParams.fromPrice || queryParams.toPrice) {\n const { priceRange, ...result } = queryParams;\n return result;\n }\n return queryParams;\n};\n\ntype FormatQueryParamsQueryParams = Record & {\n category?: string;\n categoryId?: string;\n};\n/**\n * Format query params parsed from query string\n */\nexport const formatQueryParams = (\n queryParams: FormatQueryParamsQueryParams\n) => {\n const {\n category: queryCategory,\n categoryId: queryCategoryId,\n ...rest\n } = removePropertiesWithoutValue(queryParams);\n const formattedQueryParams = prunePriceRange(rest);\n const categoryId = parseInt(queryCategory || queryCategoryId || '0', 10);\n if (categoryId > 0) {\n formattedQueryParams.categoryId = categoryId;\n }\n return formattedQueryParams;\n};\n\n/**\n * Check if url is absolute\n */\nexport const isAbsoluteUrl = (url: string): boolean =>\n new RegExp('^(?:[a-z]+:)?//', 'i').test(url);\n\n/**\n * Tests if a given url or path is an SPA link or not\n */\nexport function isSpaLink(urlOrPath: string): boolean {\n let pathname;\n if (/(^http)s?:\\/\\//i.test(urlOrPath)) {\n try {\n pathname = new URL(urlOrPath).pathname;\n } catch {\n return false;\n }\n } else {\n pathname = urlOrPath;\n }\n return SPA_PATH_REGEX.test(pathname);\n}\n\n/**\n * Takes an object and returns a new object without route parameters\n */\nexport const stripRouteParametersFromQueryParameters = (\n queryParams: Record,\n params: Record | undefined\n) => {\n if (!params) return queryParams;\n\n const excludeKeys = new Set(Object.keys(params));\n\n const filteredPairs = Object.entries(queryParams).filter(\n ([key]) => !excludeKeys.has(key)\n );\n return Object.fromEntries(filteredPairs);\n};\n\n/**\n * Takes an object and returns a new object without pagination properties\n */\nexport function stripCategoryIdFromQueryParameters<\n T extends Record\n>(queryParams: T): Omit {\n // Using object spread to exclude listed variables from 'rest'\n const { categoryId, ...rest } = queryParams;\n return rest;\n}\n\n/**\n * Removes tradera base from a url, leaving path and query\n */\nexport const stripHost = (url: string): string =>\n typeof url === 'string' && url.startsWith('http')\n ? url.replace(HOSTS.TRADERA, '')\n : url;\n\n/**\n * Takes an object and returns a new object without itm properties\n * Itm tags should no longer be used, so this method will then be obsolete\n */\nexport function stripItmFromQueryParameters>(\n queryParams: T\n): Omit {\n // Using object spread to exclude listed variables from 'rest'\n const { itm_source, itm_medium, ...rest } = queryParams;\n return rest;\n}\n\n/**\n * Takes an object and returns a new object without pagination properties\n */\nexport function stripPaginationFromQueryParameters<\n T extends Record\n>(queryParams: T): Omit {\n // Using object spread to exclude listed variables from 'rest'\n // The parameters \"spage\", \"page\" and possible \"fe\" are deprecated and should no longer be used.\n // However, it may still be useful to remove them from the query parameters here,\n // in case they are used in old links.\n const { spage, paging, page, fe, ...rest } = queryParams;\n return rest;\n}\n\n/**\n * Takes an object and returns a new object without savedQueryName properties\n */\nexport function stripSavedQueryNameFromQueryParameters<\n T extends Record\n>(queryParams: T): Omit {\n // Using object spread to exclude listed variables from 'rest'\n const { savedQueryName, ...rest } = queryParams;\n return rest;\n}\n\n/**\n * Takes an object and returns a new object without saveSearch properties\n */\nexport function stripSaveSearchNameFromQueryParameters<\n T extends Record\n>(queryParams: T): Omit {\n // Using object spread to exclude listed variables from 'rest'\n const { saveSearch, ...rest } = queryParams;\n return rest;\n}\n\n/**\n * Takes an url and adds tradera base url if it is not already an absolute url\n */\nexport const toAbsoluteUrl = (relativeUrl: string): string =>\n relativeUrl.startsWith('http')\n ? relativeUrl\n : `${HOSTS.TRADERA}${\n relativeUrl.startsWith('/') ? relativeUrl : '/' + relativeUrl\n }`;\n\n// Help TS understand that the parameter is a string\nconst isString = (str: unknown): str is string => {\n if (str === null || str === undefined || str === '' || str === false)\n return false;\n\n return true;\n};\n\n/**\n * From URL to URL with language prefix\n */\nexport function toLocalizedUrl(\n url: T,\n languageCodeIso2?: string\n): T | string {\n if (!isString(url)) {\n return url;\n }\n\n const ignoredUrls = [initData.webApiUrl, '/api/webapi/', '/support/'];\n const isIgnoredUrl = ignoredUrls.find(\n (domain) => url.indexOf(domain) !== -1\n );\n if (isIgnoredUrl) {\n return url;\n }\n\n if (!languageCodeIso2) {\n logger(`Missing language code for URL ${url}`);\n return url;\n }\n\n if (url.startsWith('//')) {\n throw new Error(\n `Attempt to localize protocol relative url: ${url}. This is not supported at the moment`\n );\n }\n\n const RELATIVE_DOMAIN = 'https://example.com';\n const urlObject = new URL(url, RELATIVE_DOMAIN);\n // eslint-disable-next-line better-mutation/no-mutation\n urlObject.pathname = setLanguagePrefix(\n urlObject.pathname,\n languageCodeIso2\n );\n return urlObject.toString().replace(RELATIVE_DOMAIN, '');\n}\n\n/**\n * Creates query parameters object from search string\n */\nexport const toQueryParameters = (search: string) =>\n qs.parse(search, { ignoreQueryPrefix: true });\n\ntype ToSearchStringOptions = {\n addQueryPrefix?: boolean;\n encode?: boolean;\n skipNulls?: boolean;\n arrayFormat?: 'indices' | 'brackets' | 'repeat' | 'comma';\n};\n\n/**\n * Creates search string from all properties in object\n */\nexport const toSearchString = (\n queryParams: object,\n {\n addQueryPrefix = true,\n encode = true,\n skipNulls = true,\n arrayFormat = 'repeat' //qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }) ==> 'a=b&a=c'\n }: ToSearchStringOptions = {}\n): string =>\n qs.stringify(queryParams, {\n addQueryPrefix: addQueryPrefix,\n encode: encode,\n skipNulls: skipNulls,\n arrayFormat: arrayFormat\n });\n\nconst setLanguagePrefix = (path: string, languageCodeIso2: string) => {\n // Inspired by `next/src/server/web/next-url.ts`\n const nextConfig = {\n i18n: {\n defaultLocale: DEFAULT_LANGUAGE,\n locales: SUPPORTED_LANGUAGES\n }\n };\n const pathnameInfo = getNextPathnameInfo(path, {\n nextConfig,\n parseData: true\n });\n const localizedPathname = formatNextPathnameInfo({\n ...pathnameInfo,\n defaultLocale: DEFAULT_LANGUAGE,\n locale: languageCodeIso2\n });\n return localizedPathname;\n};\n\nexport const getBackToHereRedirectUrl = () => {\n // Add random query parameter to force reload when redirecting to this url\n // and only the hash differs\n const queryParams = {\n ...qs.parse(location.search, { ignoreQueryPrefix: true }),\n forceRedirect: Math.round(Math.random() * 100000)\n };\n return (\n location.protocol +\n '//' +\n location.host +\n location.pathname +\n qs.stringify(queryParams, { addQueryPrefix: true })\n );\n};\n\nexport const replacePartInPath = (\n path: string,\n oldPart: string,\n newPart: string\n) => {\n if (path.indexOf('?') > -1) {\n throw new Error('? is not valid in argument.');\n }\n return path\n .split('/')\n .map((part) => (part === oldPart ? newPart : part))\n .join('/');\n};\n\n/**\n * Converts an API request to URLSearchParams for use in a GET request\n */\nexport const convertApiRequestToURLParams = (\n apiRequest: Record\n): URLSearchParams => {\n return Object.entries(apiRequest).reduce((acc, [key, value]) => {\n if (value !== null && value !== undefined) {\n acc.append(key, value.toString());\n }\n return acc;\n }, new URLSearchParams());\n};\n\nexport const getHeroImageUrl = (\n heroImageUrl: string,\n version: 'small' | 'medium' | 'large' = 'medium'\n) => {\n if (heroImageUrl) {\n return `https://img.tradera.net/heroimages/${version}-square/${heroImageUrl}`;\n }\n return undefined;\n};\n","export const DEFAULT_PAGE_TITLE_TRANSLATION_KEY = 'pageTitle_startPage';\n\nexport const NS_TOUCHWEB = 'touchWeb';\nexport const NS_ATTRIBUTES = 'attributes';\nexport const NS_CATEGORIES = 'categories';\nexport const NS_BACKEND = 'backend';\n\nexport const DEFAULT_LANGUAGE = 'sv';\nexport const URL_LANGUAGES = ['en', 'de', 'da', 'fr', 'nl'];\n\nexport const DEFAULT_LOCALE = 'sv-SE';\nexport const LANGUAGE_LOCALE = {\n sv: 'sv-SE',\n en: 'en-US',\n da: 'da-DK',\n de: 'de-DE',\n fr: 'fr-FR',\n nl: 'nl-NL'\n};\n\nexport const I18N_FRONTEND_NAMESPACES = [NS_TOUCHWEB, NS_ATTRIBUTES];\nexport const I18N_BACKEND_NAMESPACES = [NS_CATEGORIES, NS_BACKEND];\nexport const I18N_NAMESPACES = [\n ...I18N_FRONTEND_NAMESPACES,\n ...I18N_BACKEND_NAMESPACES\n];\nexport const NAMESPACE_PROJECTID = {\n [NS_TOUCHWEB]: '414441505e1db31fcaa776.55234720',\n [NS_ATTRIBUTES]: '9959867960be20fdc7d187.66761514',\n [NS_CATEGORIES]: '894792985d6665b8f079e1.31726015',\n [NS_BACKEND]: '916557165cc061c54ae7c8.44409330'\n};\n\nexport const SUPPORTED_LANGUAGES = [DEFAULT_LANGUAGE, ...URL_LANGUAGES];\nexport const SUPPORTED_CURRENCIES = [\n 'DKK',\n 'GBP',\n 'JPY',\n 'NOK',\n 'SEK',\n 'USD',\n 'EUR'\n];\n\nexport const TRANS_SUFFIX = 'Trans';\n\nexport const I18N_CACHE_MS = 2 * 60 * 1000;\n"],"names":["DEFAULT_COOKIES","ITEM_LAYOUT","key","default","length","SITE_LAYOUT","MYTRADERA_DEFAULT_COOKIES","LIST_VIEW_TYPE","ITEMS_PER_PAGE","SHOW_FILTERS","LIST_VIEW_TYPE_BUYER_ACTIVE_ITEMS","PAGE_LIST_TYPES","BUYER_ACTIVE_ITEMS","LIST_VIEW_TYPE_BUYER_PURCHASES","BUYER_PURCHASES","LIST_VIEW_TYPE_BUYER_ITEMS_LOST","BUYER_ITEMS_LOST","LIST_VIEW_TYPE_SELLER_ACTIVE","SELLER_ACTIVE","LIST_VIEW_TYPE_SELLER_SOLD","SELLER_SOLD","LIST_VIEW_TYPE_SELLER_NOT_SOLD","SELLER_NOT_SOLD","APP_DOWNLOAD_MODAL_DISMISSED","GDPR_CONSENT_COOKIE","FORCE_GEO_DEV","NATIVE_APP_ENVIRONMENT","REGION_PICKER_DISMISSED","SHIPPING_COUNTRY","SAVE_SEARCH_MODAL_DISMISSED","CART_ID","VIEWPORT_WIDTH","SHIP_TO_SWEDEN_DISCLAIMER_DISMISSED","EXPERIMENT_BUCKET","PRODUCT_COMMUNICATION_DISMISSED","WISH_LIST_NOTIFICATION_DISPLAY_COUNT","WISH_LIST_NOTIFICATION_HIDDEN","RECENTLY_VIEWED_ITEM_IDS","RECENT_SEARCHES","SAVED_SEARCHES","COOKIE_CATEGORIES","Essential","Performance","Functional","Marketing","COLLECT_SSN_MODAL_DISMISSED","TRADERA_PAY_CONSENT_MODAL_DISMISSED","CATEGORIZED_COOKIES","COOKIE_DEFAULT_CATEGORY","TRADERA","DAY_IN_SECONDS","HOUR_IN_SECONDS","MINUTE_IN_SECONDS","MINUTE_IN_MILLISECONDS","SECOND_IN_MILLISECONDS","createWrappedT","i18nObject","t","addTranslation","language","hasLoadedAllTranslations","throwOnTransSuffix","isShowingTranslationKeysEnabled","i18nKey","options","endsWith","TRANS_SUFFIX","Error","_len","arguments","args","Array","_key","translation","_objectSpread","lng","isServer","addTranslationForHydration","isQueryToggleEnabled","query","includes","useTranslator","useAddTranslation","isShowingTranslationKeysEnabledQuery","_slicedToArray","useQuery","useSelector","selectPreferredLanguageCode","state","_state$status","status","loadedLanguages","_useTranslation","useTranslation","I18N_FRONTEND_NAMESPACES","ready","i18n","wrappedT","React","undefined","_i18n$translator$extr","translator","extractFromKey","namespaces","namespace","_i18n$translator$reso","resolve","ns","res","exactUsedKey","withTranslator","WrappedComponent","WithTranslator","props","_jsx","displayName","name","useCurrentLanguage","useUrlLocalizer","preferredLanguage","toLocalizedUrl","useRef","url","current","Trans","_state$status2","_useTranslation2","children","defaults","TransComponent","NS_TOUCHWEB","_Fragment","handleModuleError","error","logger","globalSocket","bootSiteWideNotifications","_ref","socketUrl","joinMemberRoom","socket","SocketIoChannel","getGlobalSocket","isRetry","on","async","_ref2","success","_response$data","touchWebClient","get","data","isLoggedIn","disconnect","connect","refreshLoginState","addEventListener","showItemOutbiddedToast","ItemId","NewLeadingBidAmount","showItemFirstBidToast","showItemSoldToast","Price","showItemWonToast","showItemPaidToast","showItemWishListReminderToast","TimeLeftMinutes","join","bootInit","bootLanguages","gtm","loadGtmScript","initData","preferredLanguageCode","languageCodeIso2","dayjs","isBetween","isSameOrAfter","syncServerTime","featureSwitches","webLiveUrl","memberId","module","split","moduleLoader","isSinglePageApp","isSpaModule","loadSpaModule","then","initModule","loadModule","loadedModule","console","runModule","window","document","body","setAttribute","catch","initDataEL","getElementById","getAttribute","JSON","parse","isSwedenCountryCodeOrUndefined","countryCodeIso2","toLowerCase","isDenmarkCountryCode","isNetherlandsCountryCode","areCountryCodesIso2Equal","first","second","toUpperCase","formatPrice","price","inputLocale","overrideOptions","locale","style","currency","preferredCurrency","currencyDisplay","startsWith","useGrouping","minimumFractionDigits","maximumFractionDigits","roundUp","priceAsNumber","parseInt","decimalFactorForRounding","Math","pow","ceil","isLocaleFormattingSupportedInBrowser","formattedPrice","toLocaleString","formatNumberWithSeparators","Number","e","toLocaleStringSupportsLocales","Intl","NumberFormat","isSwedishOrUndefined","getLanguageFromCountryCode","se","dk","de","fr","nl","getCountryCodeForFlagFromLanguage","languageCode","en","da","getCountryCodeFromLanguage","areLanguageCodesIso2Equal","useLocalizedPriceFormatter","_useLocalizedPriceFormatter","useLocalizedPriceFormatterRoundingUp","useLocalizedPriceFormatterNoSymbol","_ref$conversion","conversion","allowFractions","useAppSelector","selectPreferredCurrency","useCallback","rate","code","decimals","MissingSocketIoServerUrl","ReferenceError","MissingRoomId","isAllowedToConnect","constructor","socketIoServerUrl","autoConnect","this","io","events","rooms","Set","forEach","room","payload","Type","contexts","socketIo","callback","Event","type","isConnected","emit","has","add","leave","rejoinOnConnect","delete","event","removeEventListener","off","_this$socket","connected","queuedToasts","createQueue","openNextToast","isInProgress","nextItem","next","queueLength","getLength","toastOptions","autoClose","max","onClose","notifyDone","eventData","itemId","webApiClient","item","imageUrl","itemUrl","shortDescription","toast","createElement","ItemToast","message","_nextItem$eventData","header","messageData","headerData","MessageToast","handleNotification","ttlInMinutes","visibilityState","newLeadingBidAmount","timeLeftMinutes","showSuccessToast","TYPE","SUCCESS","showErrorToast","ERROR","showInfoToast","INFO","selectEnvironment","environment","selectFeatureSwitches","_state$environment","selectIsFeatureEnabled","featureName","_selectFeatureSwitche","selectWebLiveUrl","variables","PUBLIC_WEB_LIVE_URL","selectIsNativeApp","_state$environment3","isNativeAppContext","selectAvailableLanguages","available","selectAvailableLanguageCodesIso2","createSelector","map","x","selectPreferredLanguage","preferred","_state$language","_state$language$prefe","DEFAULT_LANGUAGE","selectIsForeignLanguageActivated","_selectPreferredLangu","selectAutomaticTranslationPreferred","_state$language$autom","automaticTranslationPreferred","selectMember","member","selectIsLoggedIn","_state$member","selectGeolocation","_state$member2","geolocation","selectMemberId","_state$member3","selectMemberAlias","_state$member4","memberAlias","selectMemberBirthdate","_state$member8","memberBirthdate","selectIsOutsideSweden","_state$member11","_state$member11$geolo","_state$member12","_state$member12$geolo","isoCode","selectMemberTown","_state$member13","memberTown","selectIsUnderage","_permissions$sellPerm","_permissions$sellPerm2","_permissions$sellPerm3","permissions","selectMemberPermissions","sellPermission","isPermitted","requirementsNotMet","RequirementTypeApi","IsOverMinimumAge","selectIsCompany","_state$member14","isCompany","selectMemberState","_state$member16","memberState","defaultCurrency","valueDate","updatedDate","symbolSuffix","shortName","longName","resolveCurrency","enabled","currencyCode","currencies","find","multiCurrencySlice","createSlice","initialState","reducers","initialize","action","_action$payload","_action$payload$curre","setPreferredCurrency","_multiCurrencySlice$a","actions","selectCurrencies","multiCurrency","c","selectIsPreferredCurrencySEK","_selectPreferredCurre","selectShowCurrencySelection","HomepageTheme","MessagingEmailNotification","SystemMessageSeverity","selectShowRegionSelection","selectAvailableShippingCountryCodes","shippingRegion","availableShippingCountryCodes","selectAvailableShippingCountries","availableShippingCountries","selectShippingCountry","shippingCountry","selectIsLoadingAvailableShippingCountries","isLoadingAvailableShippingCountries","selectHasLoadedAvailableShippingCountries","hasLoadedAvailableShippingCountries","selectShippingRegionCountryCodeIso2","_state$shippingRegion","selectIsSwedishVisitor","selectIsDanishVisitor","selectIsDutchVisitor","selectShowLocalizationRegionPicker","regionPickerDismissed","shippingCountryCookieValue","_geoLocation$isoCode","_selectPreferredLangu2","geoLocation","country","gpsMatchesLanguage","API_ERRORS","IGNORE_ME","ABORTED","CANCELLED","NETWORK","TIMEOUT","VERSION_MISMATCH","LOGGED_OUT","defaultJsonRequestHeaders","Accept","axiosConfigs","authenticated","withCredentials","headers","notAuthenticated","isUnauthorized","statusCode","addAntiCacheParam","antiCacheRegExp","test","replace","Date","getTime","submitOriginalRequest","axios","config","errorResponseInterceptor","_error$request","_error$request2","responseString","responseStatus","errorCode","isMissingAuthToken","request","response","getLanguage","refreshAccessToken","_errorAfterRefreshTok","errorAfterRefreshToken","Promise","reject","handleMissingAuthToken","checkLoginState","handleUnauthorized","axiosWithTokenRefresh","axiosInstance","instance","interceptors","use","cancelTokens","utilizeCancelToken","tokenId","cancel","source","cancelToken","token","checkResponseVersion","version","checkResponseLoggedOut","finalizeResponse","handleError","statusHandlers","toString","reloadOnUnauthorized","location","reload","isClientNetworkError","logError","scope","getCookieFromBrowser","getCookieFromString","cookieString","cookie","setCookieToBrowser","s","plainDayjs","utc","timezone","localizedFormat","relativeTime","localeData","localizedDayjs","swedishTimeZone","swedishTimeZoneDate","date","localizedDayjsFn","tz","formatUtcDateAsSwedishTimeZoneDate","format","includeWeekday","includeYear","excludeTime","filter","Boolean","getCurrentSwedishTimeZoneDate","getTimeSpanParts","seconds","optionsWithDefaults","startUnit","endUnit","parts","remaining","started","Object","entries","TIME_SPAN_UNIT_LENGTHS","part","floor","TIME_SPAN_UNITS","DAYS","HOURS","MINUTES","SECONDS","formatEndDate","endDateInput","nowDateInput","endDate","now","hours","diff","minutes","timeParts","push","count","isAfter","number","separator","formatSellerDsrAverage","value","getCurrencySymbol","defaultOptions","trim","ensureClientOnly","httpClient","baseUrl","shouldLocalizeUrl","axiosWrapper","httpClientConfig","axiosCaller","cancelTokenId","axiosConfig","_objectWithoutProperties","_excluded","_utilizeCancelToken","safeUrl","getSafeUrl","substring","localizedUrl","post","put","enhancedConfig","trpcClient","endpoint","client","unpackResponse","command","commandName","queryName","defaultClient","ENDPOINTS","WEB_API","marketingApiClient","MARKETING_PUBLIC_API","memberIdentificationClient","translationDynamicApiClient","shippingRecommendationsClient","nullifyUndefinedProperties","obj","mapObject","removePropertiesWithoutValue","removeEmptyString","omitBy","schedulerPolyfill","scheduler","yieldToMain","setTimeout","forEachYield","array","deadline","performance","index","element","_navigator$scheduling","navigator","scheduling","isInputPending","includeContinuous","postTask","taskCallback","priority","queueUserBlockingTask","queueBackgroundTask","queryServerTime","requestStart","currentTime","latency","start","retryCount","_minServerCheckInterval","_serverDiff","_didGetServerResponse","_lastCheckAtMs","updateServerDiff","serverTimeObject","getServerTime","timeNowOnServer","_initialPromise","promise","RegExp","URL_LANGUAGES","formatQueryParams","queryParams","_removePropertiesWith","queryCategory","category","queryCategoryId","categoryId","formattedQueryParams","fromPrice","toPrice","priceRange","prunePriceRange","_excluded2","stripCategoryIdFromQueryParameters","_excluded3","stripItmFromQueryParameters","itm_source","itm_medium","_excluded4","stripPaginationFromQueryParameters","spage","paging","page","fe","_excluded5","stripSavedQueryNameFromQueryParameters","savedQueryName","_excluded6","stripSaveSearchNameFromQueryParameters","saveSearch","_excluded7","toAbsoluteUrl","relativeUrl","HOSTS","isString","str","webApiUrl","domain","indexOf","RELATIVE_DOMAIN","urlObject","URL","pathname","setLanguagePrefix","toQueryParameters","search","qs","ignoreQueryPrefix","toSearchString","_ref3","_ref3$addQueryPrefix","addQueryPrefix","_ref3$encode","encode","_ref3$skipNulls","skipNulls","_ref3$arrayFormat","arrayFormat","path","nextConfig","defaultLocale","locales","SUPPORTED_LANGUAGES","pathnameInfo","getNextPathnameInfo","parseData","formatNextPathnameInfo","getBackToHereRedirectUrl","forceRedirect","round","random","protocol","host","replacePartInPath","oldPart","newPart","NS_ATTRIBUTES","NS_CATEGORIES","NS_BACKEND","I18N_BACKEND_NAMESPACES"],"sourceRoot":""}