) => {\n state.accountsView = action.payload\n },\n\n }\n})\n\nconst { actions, reducer } = slice\n\nexport const { toggleSidebar,\n showSidebar,\n hideSidebar,\n clearNavigation,\n setPageFooter,\n setPageBanner,\n setSimplifiedLevelTwoRootPage,\n setNavigation,\n setAccountsView\n} = actions\nexport default reducer","import React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useDangerousHTML } from '../../utils/hooks'\nexport const Individual = () => {\n const { t } = useTranslation()\n const { p } = useDangerousHTML()\n\n const prefix = 'footer:individual.TMSY'\n return <>\n \n {t(`${prefix}.warning.header`)} \n {t(`${prefix}.warning.text`)}\n
\n \n {t(`${prefix}.0.header`)} \n {t(`${prefix}.0.text1`)}\n
\n {t(`${prefix}.0.text2`)}
\n {t(`${prefix}.0.text3`)}
\n {t(`${prefix}.0.text4`)}
\n \n {t(`${prefix}.1.header`)} \n {t(`${prefix}.1.text`)}\n
\n {p(t(`footer:individual.TMEU.cyprus`))}\n \n {t(`${prefix}.2.header`)} \n {t(`${prefix}.2.text`)}\n
\n \n {t(`${prefix}.3.header`)} \n {t(`${prefix}.3.text`)}\n
\n {/* \n {t(`${prefix}.4.header`)} \n {t(`${prefix}.4.text`)}\n
*/}\n \n {t(`${prefix}.5.header`)} \n {t(`${prefix}.5.text`)}\n
\n >\n}\n","import React, { memo, useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useAccounts, useAppState, useDangerousHTML, useUserApplications } from '../../utils/hooks'\nimport { Country } from '../../utils/types'\nimport Utils from '../../utils/utils'\nimport HttpLink from '../HttpLink'\n\n\ninterface IndividualAUProps {\n userCountry?: Country\n}\n\nconst IndividualAU = memo(({ userCountry }: IndividualAUProps) => {\n const { t } = useTranslation()\n const prefix = 'footer:individual.AU'\n const isAustraliaCountry = Utils.checkIfCountryIsAustralia(userCountry)\n const { tradingAccountToCreate: accountToCreate } = useAppState()\n const { isDemo } = useAccounts()\n const { hasCFDApps } = useUserApplications()\n const { p } = useDangerousHTML()\n\n const showTargetMarketLink = useMemo(() =>\n isDemo || hasCFDApps || (accountToCreate === 'CFD')\n , [accountToCreate, hasCFDApps, isDemo])\n\n return <>\n {p(t(`${prefix}.advice`))}\n \n {t(`${prefix}.warning.header`)} \n {t(`${prefix}.warning.text1`)} \n \n {t(`${prefix}.warning.links.productDisclosure.text`)}\n \n {showTargetMarketLink === true && <>, \n \n {t(`${prefix}.warning.links.targetMarketDetermination.text`)}\n \n >}\n {t(`${prefix}.warning.text2`)} \n \n {t(`${prefix}.warning.links.financialServicesGuide.text`)}\n \n {t(`${prefix}.warning.text3`)}\n
\n {isAustraliaCountry && {t(`${prefix}.warning.text4`)}
}\n \n {t(`${prefix}.company.header`)} \n {t(`${prefix}.company.text1`)}\n
\n {p(t(`${prefix}.company.text3`))}\n \n {t(`${prefix}.company.text2`)}\n
\n {t(`${prefix}.text`)}
\n >\n})\n\nexport { IndividualAU }","import React, { useCallback, useMemo } from 'react'\nimport { renderToString } from 'react-dom/server'\nimport { useTranslation } from 'react-i18next'\nimport { useDangerousHTML, useRenderLink } from '../../utils/hooks'\n\nconst prefix = 'footer:individual.NZ'\nconst links = `${prefix}.links`\n\nexport const IndividualNZ = () => {\n const { t } = useTranslation()\n const { renderLink: render } = useRenderLink()\n\n const renderLink = useCallback((name) => {\n return render(t(`${links}.${name}.link`), t(`${links}.${name}.text`))\n }, [render, t])\n\n const privacyPolicy = useMemo(() => renderLink('privacyPolicy'), [renderLink])\n const complaints = useMemo(() => renderLink('complaints'), [renderLink])\n const productDisclosure = useMemo(() => renderLink('productDisclosure'), [renderLink])\n const insurance = useMemo(() => renderLink('insurance'), [renderLink])\n const mail = useMemo(() =>\n renderToString(\n {t(`${links}.mail.text`)}\n )\n , [t])\n\n const { p } = useDangerousHTML()\n\n return <>\n {p(t(`${prefix}.text1`))}\n {p(t(`${prefix}.text2`, { link: productDisclosure }))}\n {p(t(`${prefix}.text3`, { privacyPolicy, complaints }))}\n {p(t(`${prefix}.text4`, { link: insurance }))}\n {p(t(`${prefix}.text5`, { mail }))}\n {p(t(`${prefix}.text6`))}\n {p(t(`${prefix}.text`))}\n >\n}\n","import { useTranslation } from \"react-i18next\"\nimport { useDangerousHTML, useIsLoyaltyProgramScreen } from \"../../utils/hooks\"\nimport styles from \"./style.module.scss\"\n\nconst LoyaltyProgram = ({ prefix }: { prefix: string }) => {\n const { t } = useTranslation()\n const { s } = useDangerousHTML()\n const isLoyaltyProgramScreen = useIsLoyaltyProgramScreen()\n\n return isLoyaltyProgramScreen ? {t(`${prefix}.termsAndConditions.header`)} \n {s(t(`${prefix}.termsAndConditions.text`), styles.a)}
: null\n\n\n}\n\nexport default LoyaltyProgram","import { useTranslation } from 'react-i18next'\nimport { Country } from '../../utils/types'\nimport Utils from '../../utils/utils'\nimport LoyaltyProgram from './LoayltyProgram'\n\n\ninterface IndividualTFSAProps {\n userCountry?: Country\n}\n\nexport const IndividualTFSA = ({ userCountry }: IndividualTFSAProps) => {\n const { t } = useTranslation()\n const prefix = 'footer:individual.TFSA'\n const isSouthAfricaCountry = Utils.checkIfCountryIsSA(userCountry)\n\n return (\n <>\n \n \n {t(`${prefix}.warning.header`)} \n {t(`${prefix}.warning.text`)}\n
\n {isSouthAfricaCountry && {t(`${prefix}.warning.text1`)}
}\n \n {t(`${prefix}.company.header`)} \n {t(`${prefix}.company.text`)}\n
\n {t(`${prefix}.text`)}
\n >\n )\n}\n","import { useTranslation } from 'react-i18next'\nimport { useDangerousHTML } from '../../utils/hooks'\nimport LoyaltyProgram from './LoayltyProgram'\n\nexport const IndividualTMBM = () => {\n const { t } = useTranslation()\n const { p } = useDangerousHTML()\n const prefix = 'footer:individual.TMBM'\n\n return <>\n \n \n {t(`${prefix}.warning.header`)} \n {t(`${prefix}.warning.text1`)} \n {/* \n {t(`${prefix}.warning.links.productDisclosure.text`)}\n \n {t(`${prefix}.warning.text2`)} \n \n {t(`${prefix}.warning.links.financialServicesGuide.text`)}\n \n {t(`${prefix}.warning.text3`)} */}\n
\n {/* \n {t(`${prefix}.company1.header`)} \n {t(`${prefix}.company1.text`)}\n
\n \n {t(`${prefix}.company2.header`)} \n {t(`${prefix}.company2.text`)}\n
\n */} \n {t(`${prefix}.company3.header`)} \n {t(`${prefix}.company3.text`)}\n
\n {/* {p(t(`${prefix}.company5`))}\n \n {t(`${prefix}.company4.header`)} \n {t(`${prefix}.company4.text`)}\n
\n */} {t(`${prefix}.text`)}
\n >\n}\n","import React, { FC } from 'react'\nimport Sticky from 'react-sticky-el'\nimport styles from './style.module.scss'\n\nconst StickyWarning: FC<{\n disabled?: boolean\n scrollElement?: string\n}> = ({ disabled = false, scrollElement = '#base', children }) => {\n return \n {children}\n \n}\n\n\nexport default StickyWarning","import React, { useMemo, VFC } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport StickyWarning from './StickyWarning'\n\nexport const IndividualTMCY: VFC<{ stickWarning?: boolean }> = ({ stickWarning }) => {\n const { t } = useTranslation()\n const prefix = 'footer:individual.TMCY'\n\n const warning = useMemo(() =>\n \n {t(`${prefix}.retailTraders.header`)} \n \n
, [t])\n\n return <>\n {stickWarning\n ? \n {warning}\n \n : warning}\n \n {t(`${prefix}.profTraders.header`)} \n {t(`${prefix}.profTraders.text`)}\n
\n \n {t(`${prefix}.company.header`)} \n {t(`${prefix}.company.text`)}\n
\n {t(`${prefix}.text`)}
\n >\n}\n","import React, { useMemo, VFC } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useDangerousHTML } from '../../utils/hooks'\nimport StickyWarning from './StickyWarning'\n\nexport const IndividualTMEU: VFC<{ stickWarning?: boolean }> = ({ stickWarning }) => {\n const { t } = useTranslation()\n const prefix = 'footer:individual.TMEU'\n const { p } = useDangerousHTML()\n\n const warning = useMemo(() =>\n \n {t(`${prefix}.retailTraders.header`)} \n {t(`${prefix}.retailTraders.text`)}\n
, [t])\n\n return <>\n {stickWarning\n ? \n {warning}\n \n : warning}\n \n {t(`${prefix}.profTraders.header`)} \n {t(`${prefix}.profTraders.text`)}\n
\n \n {t(`${prefix}.company.header`)} \n {t(`${prefix}.company.text`)}\n
\n {p(t(`${prefix}.cyprus`))}\n {t(`${prefix}.text`)}
\n >\n}\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\nexport const IndividualTMJP = () => {\n const { t } = useTranslation()\n const prefix = 'footer:individual.TMJP'\n return <>\n \n {t(`${prefix}.retailTraders.header`)} \n {t(`${prefix}.retailTraders.text`)}\n
\n \n {t(`${prefix}.profTraders.header`)} \n {t(`${prefix}.profTraders.text`)}\n
\n \n {t(`${prefix}.company.header`)} \n {t(`${prefix}.company.text`)}\n
\n {t(`${prefix}.text`)}
\n >\n}\n","import { useTranslation } from 'react-i18next'\nimport LoyaltyProgram from './LoayltyProgram'\n\nexport const IndividualTMSY = () => {\n const { t } = useTranslation()\n const prefix = 'footer:individual.TMSY'\n\n\n return <>\n \n \n {t(`${prefix}.warning.header`)} \n {t(`${prefix}.warning.text`)}\n
\n \n {t(`${prefix}.0.header`)} \n {t(`${prefix}.0.text1`)}\n
\n {t(`${prefix}.0.text3`)}
\n >\n}\n","import { useTranslation } from 'react-i18next'\n\nimport { useDangerousHTML } from '../../utils/hooks'\n\nconst prefix = 'footer:individual.UAE'\n\nexport const IndividualUAE = () => {\n const { t } = useTranslation()\n const { p } = useDangerousHTML()\n\n return (\n <>\n {p(t(`${prefix}.riskWarningRetailTraders`))}\n {p(t(`${prefix}.riskWarningProfTraders`))}\n {p(t(`${prefix}.company`))}\n {p(t(`${prefix}.regulation`))}\n {p(t(`${prefix}.text`))}\n >\n )\n}\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useDangerousHTML } from '../../utils/hooks'\nexport const IndividualUK = () => {\n const { t } = useTranslation()\n const euPrefix = 'footer:individual.TMEU'\n const { p } = useDangerousHTML()\n const prefix = 'footer:individual.UK'\n return <>\n \n {t(`${prefix}.retailTraders.header`)} \n {t(`${prefix}.retailTraders.text`)}\n
\n \n {t(`${prefix}.profTraders.header`)} \n {t(`${prefix}.profTraders.text`)}\n
\n \n {t(`${prefix}.company.header`)} \n {t(`${prefix}.company.text`)}\n
\n {p(t(`${euPrefix}.cyprus`))}\n {t(`${prefix}.text`)}
\n >\n}\n","import cn from 'classnames'\nimport React, { useMemo, VFC } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { PortalAccountDomain } from '../../utils/enums'\nimport { useAppState } from '../../utils/hooks'\nimport Utils from '../../utils/utils'\nimport version from '../../VERSION.json'\nimport { Individual } from './Individual'\nimport { IndividualAU } from './IndividualAU'\nimport { IndividualNZ } from './IndividualNZ'\nimport { IndividualTFSA } from './IndividualTFSA'\nimport { IndividualTMBM } from './IndividualTMBM'\nimport { IndividualTMCY } from './IndividualTMCY'\nimport { IndividualTMEU } from './IndividualTMEU'\nimport { IndividualTMJP } from './IndividualTMJP'\nimport { IndividualTMSY } from './IndividualTMSY'\nimport { IndividualUAE } from './IndividualUAE'\nimport { IndividualUK } from './IndividualUK'\nimport styles from './style.module.scss'\n\nconst Copyright = () => {\n const { t } = useTranslation()\n return \n
©{` ${new Date().getFullYear()} `}{t(`footer:copyright`)}
\n
\n\n}\n\nconst Version = () => {\n return <>\n
v {version.version}.{version.build}
\n
\n {version.comment && }\n >\n}\ninterface FooterProps {\n isExtended?: boolean\n customFooter?: JSX.Element\n stickWarning?: boolean\n}\n\nconst Footer: VFC = ({ isExtended, customFooter, stickWarning = false }) => {\n\n const { portalAccountDomain, userCountry, onboardingDomain } = useAppState()\n const domain = onboardingDomain || portalAccountDomain\n const text = useMemo(() => {\n switch (domain) {\n case PortalAccountDomain.AU:\n return \n case PortalAccountDomain.TMNZ:\n return \n case PortalAccountDomain.TFSA:\n return \n case PortalAccountDomain.TMBM:\n case PortalAccountDomain.TMLC:\n return \n case PortalAccountDomain.TMSY:\n return \n case PortalAccountDomain.UK:\n return Utils.checkIfCountryIsUAE(userCountry) ? : \n case PortalAccountDomain.TMCY:\n return \n case PortalAccountDomain.TMEU:\n return \n case PortalAccountDomain.TMJP:\n return \n default: return \n }\n }, [domain, stickWarning, userCountry])\n\n return \n
\n {customFooter ? customFooter : (\n <>\n {text}\n \n \n >\n )}\n
\n
\n}\n\nexport default Footer\nexport { Copyright, Version }\n\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"app\":\"style_app__3SIWm\",\"initError\":\"style_initError__PKItk\",\"errorText\":\"style_errorText__1e8HD\",\"error\":\"style_error__361Rh\",\"contact\":\"style_contact__18rMI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"progress\":\"style_progress__SEC92\",\"big\":\"style_big__k8sVm\",\"indicator\":\"style_indicator__2uEGa\",\"background\":\"style_background__3ThVn\",\"move\":\"style_move__1FTU9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navigation\":\"style_navigation__3D__C\",\"inner\":\"style_inner__L2NOC\",\"mobile\":\"style_mobile__2BNj7\",\"active\":\"style_active__2Mq12\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"style_wrapper__28mI6\",\"caption\":\"style_caption___AkVI\",\"outside\":\"style_outside__28A1E\",\"mainArea\":\"style_mainArea__2qbdi\",\"errorText\":\"style_errorText__3RWgf\",\"tip\":\"style_tip__3Ilk8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"value\":\"style_value__fWmGF\",\"multiValue\":\"style_multiValue__Y9ss5\",\"highlight\":\"style_highlight__1MHae\",\"field\":\"style_field__366TV\",\"search-icon\":\"style_search-icon__3cWzl\"};","import React from 'react'\n\nconst scrollRef = React.createRef()\n\nconst setScrollTop = (scrollTop: number) => {\n if (scrollRef.current) {\n scrollRef.current.scrollTop = scrollTop - 50\n }\n}\n\nexport { scrollRef, setScrollTop }","export default __webpack_public_path__ + \"static/media/iphone opt6.605c62cc.gif\";","export default __webpack_public_path__ + \"static/media/japan-iphone.5546a748.gif\";","export default __webpack_public_path__ + \"static/media/mastercard.35c38ecd.svg\";","export default __webpack_public_path__ + \"static/media/visa.47b6590c.svg\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAB+UExURUdwTBZ28xZ28hd39EqV9Rd38xZ28pPA+hh38hh06xZ28xd38xd28xd28hZ18hd38xZ19PH3/xd383yz+P//////////////////916h9v////b29hh38v///xV28hh59xh7+vr8/w1x8lqf9428+TKH8yF886rN+9fo/cXd/GCVVeUAAAAcdFJOUwCmY/r+2jr+Fgl787uSTeoj/sr+iXJYLh/DRRvOCITNAAAD8klEQVRo3rWa67qqIBCGFdNUFE97rX1CBys73P8Nbsx2mQoOml//6nnmDWaYgQHLwijwUxbakZtQShM3t2Pipb71KaUesV0HOHfk5y7gADSXlGC9db81LgTwkUAICWGrGIEXt9a5SiDkQMJ0sXlmO8DnBJCE3iL7JOeCYwQisc0RXuTgzD8QsVlQ+SEFbiRwmYF9lgtuKnBsrLeDkJrblxLIQaQ28GUCGiJWhecKvlQO2LO+Zi7wFRJzBJassi8JkdbVjK60Lwl5uuH/78bgq/37AfsymGxFLKX4+Kn6Go8hnl5fNtJ+dajOTbNr1Uid5RfDMZApQIicn8N5V1yuWdmqzq63y744ngeAxJsKINzfPxe3znhPdTOYJ8hHjvZR+a2qjtdyrGwI4DByQ4iyz4u6xAGGk+RR1PRcyhIHkKvhLVaDCDDzsy/RgEEkMQczgGNtAOCub+jhqrmWJgAIewNABeipNAKI1xBwa7jJzAA9L3gYDxyK0hTwDKQYkySqmxpQTwI4f6wFH5OlD2MX15nMQ6e7ztN5+7GcCWqGdkMXZEXDDw9ND4AnnZtRLq6OQ/vHqVLwLkq6GRJLfFxUiOppdzGE8fFhsApuZwzgnrUJqpAN89AJYb/LqchKOQQcD6gdBkMG6QhQIwEyH6WYIF0MkDsYBhsC2toc8g0BnKaWvSlApqNoWwCz3G0BxEo2Bci6SZF73BFAt/19SQ/odrid3rdEddH7adeoRxBrAHKfVfc0qDZ9HdVjiDU+UG7kRtpVGh+46wFZU2l8kK8HXDUAolnJaMBFXXyAWfF6wF4TiKlF1gMK9aKT+wpvPUC9qtt0ndK1gGx30BUcP4eVAE0QtSXTisVagDqIHKbbtmABN/UMuW1jxFN1QLCAixpw38AHyvPT+Xh6abB7v7x+UWciJ549Hrxy/kldD9Ql30M3EaolFQ3y7ogT5LBNyXyeM8ONAPR/cy1NNgGIOHi2esUGAHBe/RBvvhloDnhrh8yfERZMUb+T7SUfB8B7P2f2LG4MoO8dqdlzjilg1NpkM2dNQ4BwfcOuqSHAIRN9X/gcoDuBGzVOjQCK/rg2JZkAJhu/c24wAVCiuj3TXA+ZAIj6AioSqwHQ7zaOCcr6jAY4sf4STdUCxgKcuas0X+FpHEBQMn/RGAMsBYiEoC6Sp8oPBiAi5LWyl48HMQ8Ax0bfKfvx6D52FiBcYnYhDkYAoLHh24GAuCCQABBOtODdgB/2ERqAoBGxFsknEYcZAMjJWfFAxO9ebsA04PFuY+X7E5/YeSKEGALk9LlR/InXLe04WGjv39ot2W87ZOlHrD8fAP36+f319UPq6/vPz78B1vg/dqUPDmLJeSoAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAADqUExURUdwTEKF9ORQL+Y+MTKmUzWqU0KG9jOpUzSpVEWG6O5YJu5DNe5ENuA5Lv2+BPu8A+1FNOtDNOxCNepCNe1ENcciH+5eKsYhH/C6B8chH+1CNoqxMUGF8v28A+pCNcQiHv2+BP27AzSqU/y9Av2+A0GF9P2+A0KF9DSqUzSoUjSrVLhaTMgiIPu8AJ6cMepDNTSoU0KF9MUiHvy8A/BFNjWpU/2/A+1DNcslITatVfmlDe1YLTGoVECH+ECF9j6I+7krM0p+5o9MeHJgpVtyzKY5UD+qTqm0JMi3F2etPuK6DUOJ+0+rSPFZLbBh41IAAAAvdFJOUwDdFGEuy/6G9BgG5Pcy7obEmYo+uvUi4P+Q1v1cLLOqw0i0Yq7TvdXtU/18wT37VeuiVQAAAzNJREFUaN7tmely2jAYRRVIIBibLRAMISX72tZ4AZEFsrTNRvv+r1NJxo5kS15kmOl0fH8mzD3zHUuORADIkydPnn8mWq9rWd2etoKqwuFJza4dHO8rVP2wM7VQpp2hlrn+rDaxbXsyqdX3vR8Wu6SeILrFbP11Um8TxMHhsr/j9+P0CvL9+3Xb68cIl6Cx/db0q6wm5dsZVY8JJ9jSkO2X11Q4rrH9NnoOChrACkdG0259Euh3R+hNOYBpYyetnp3GLd2vL0c4Bl2LB4DVdJoKxeofD6AzjkCHCzCg2kyhabepwrvbkCECsPgAAzqJNSE9DjR4ADsCYBhOQk1Ij4M+7gJ035IeMwFKMk1Yj+ED0kyQSBPW43447TNwgzQpCfQwAD35BJgQqcnTIz9BpKZPPSGAnngCjBCsJkqPEVhFn6mDx1iAYDXReqIUPT3HAhAhpEnRaD0BgD/Gx14ZzOY/HuMA6EEEVpPC6uFMgCFv79tlYM4ffv6KAxBNu5T+phrsDyvSX3/fY4BpPoQ0hQGGoTY0X0/bgYYAQOl5uR+7AHM+C2jiAKC/6Th6OBO8vY/uRx4ADcFq4k3grSaenvA+QHpGIwowZzXxAWTTkVdzHADrGTEA05zRmgQAPARXTwBA9AQBzGoSAvCziAMs9YQACOFrigAYcQBPDwdgzs2lpgwAXw8P4GuSB3zq4QI8TbIA/fWF7ucBXE2SgI+9MdPPBRBNcoC3d7ZeAEBb4unZcNL2w7vvL8F+EcCcbVxXUxJg/3rrZpQUUNqoaKI3gmCDt7XNdABQaKmJh3CqrQJICxC9lbl68Hs8NQBdrtpJNEH1C/lLJAHAmmIJEOuRBaAbaJwmp+8dmuQAMZo8PRkAkavJ8fRkAYhXE3T69GFJGkAOcTBaTzYAXxOk9WQFcDSFbyaZAMHDHHTaoS80sgFYTVBthc/zWQGUJv79NjPA23Q8PSsCEE1cPasCIE194fV/JQB0MxN+HbYigDg5IAfkgP8ZcF5aJ+CiDAaLNQJuti5B5XyxNsD4qoyKBqXFmgDjq6NN/JvB6aK0DsB42+0HoDI4XQPg4ugyw3+D8uTJk2el+QsdwjKxKX4GkAAAAABJRU5ErkJggg==\"","export default __webpack_public_path__ + \"static/media/line.c7bab290.svg\";","export default __webpack_public_path__ + \"static/media/telegram.25fe2e28.svg\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/trading-view.86403851.png\";","export default __webpack_public_path__ + \"static/media/think-markets-logo-stacked.a3d83953.svg\";","export default __webpack_public_path__ + \"static/media/Logo15Years.ba58c0e7.svg\";","export default __webpack_public_path__ + \"static/media/LogoWhiteScreen15Years.ce7a224f.svg\";","export default __webpack_public_path__ + \"static/media/dMT4.fbd7dcc7.png\";","export default __webpack_public_path__ + \"static/media/dMT5.5167fde0.png\";","export default __webpack_public_path__ + \"static/media/mMT4.090fce76.png\";","export default __webpack_public_path__ + \"static/media/mMT5.5167fde0.png\";","export default __webpack_public_path__ + \"static/media/dTT.2891e975.png\";","export default __webpack_public_path__ + \"static/media/mTT.fb0b332c.png\";","export default __webpack_public_path__ + \"static/media/mt4-laptop.97a62ea5.png\";","export default __webpack_public_path__ + \"static/media/mt5-laptop.f1888e9f.png\";","export default __webpack_public_path__ + \"static/media/pamm-laptop.e44bb9a2.png\";","export default __webpack_public_path__ + \"static/media/security.74c136e2.png\";","export default __webpack_public_path__ + \"static/media/thinkcopy-mobile.613699ad.png\";","export default __webpack_public_path__ + \"static/media/ttweb-laptop.55d74de7.png\";","export default __webpack_public_path__ + \"static/media/ttweb-mobile.4081e7d9.png\";","export default __webpack_public_path__ + \"static/media/think-markets-logo-black.fec58205.png\";","export default __webpack_public_path__ + \"static/media/think-markets-logo-white.3bdda630.png\";","export default __webpack_public_path__ + \"static/media/level-one-approved.58ca2fd2.svg\";","export default __webpack_public_path__ + \"static/media/congrats-laptop.4a8b6acc.svg\";","export default __webpack_public_path__ + \"static/media/congrats-mobile.d17e7d29.svg\";","export default __webpack_public_path__ + \"static/media/forex-vps-net.ae911d40.svg\";","export default __webpack_public_path__ + \"static/media/BeeksFC.c03e901f.png\";","export default __webpack_public_path__ + \"static/media/forex-vps-net-dark.237c60d5.svg\";","import { ComponentProps, VFC } from \"react\"\n\nimport iphone from '../../../resources/images/iphone opt6.gif'\nimport japanIphone from '../../../resources/images/japan-iphone.gif'\n\nimport mastercard from '../../../resources/images/mastercard.svg'\nimport visa from '../../../resources/images/visa.svg'\n\nimport facebook from '../../../resources/images/socials/facebook.png'\nimport gmail from '../../../resources/images/socials/gmail.png'\nimport line from '../../../resources/images/socials/line.svg'\nimport telegram from '../../../resources/images/socials/telegram.svg'\nimport twitter from '../../../resources/images/socials/twitter.png'\nimport tradingView from '../../../resources/images/trading-view.png'\n\nimport tmCondensedLogo from '../../../resources/images/think-markets-logo-stacked.svg'\nimport tmLogo from '../../../resources/images/Logo15Years.svg'\nimport tmLogoLight from '../../../resources/images/LogoWhiteScreen15Years.svg'\n// import tmLogoDark from '../../../resources/images/LogoDarkScreen15Years.svg'\n\nimport dMT4 from '../../../resources/images/platforms/congrats/dMT4.png'\nimport dMT5 from '../../../resources/images/platforms/congrats/dMT5.png'\nimport mMT4 from '../../../resources/images/platforms/congrats/mMT4.png'\nimport mMT5 from '../../../resources/images/platforms/congrats/mMT5.png'\nimport dTT from '../../../resources/images/platforms/congrats/dTT.png'\nimport mTT from '../../../resources/images/platforms/congrats/mTT.png'\n\nimport mt4Laptop from '../../../resources/images/mt4-laptop.png'\nimport mt5Laptop from '../../../resources/images/mt5-laptop.png'\nimport pammLaptop from '../../../resources/images/pamm-laptop.png'\nimport ttWeb from '../../../resources/images/security.png'\nimport thinkcopyMobile from '../../../resources/images/thinkcopy-mobile.png'\nimport ttwebLaptop from '../../../resources/images/ttweb-laptop.png'\nimport ttwebMobile from '../../../resources/images/ttweb-mobile.png'\nimport tmLogonBlack from '../../../resources/images/think-markets-logo-black.png'\nimport tmLogonWhite from '../../../resources/images/think-markets-logo-white.png'\n\nimport levelOneApproved from '../../../resources/images/level-one-approved.svg'\nimport congratsLaptop from '../../../resources/images/congrats-laptop.svg'\nimport congratsMobile from '../../../resources/images/congrats-mobile.svg'\n\nimport forexVPSLogo from '../../Container/Dashboard/Vps/images/forex-vps-net.svg'\nimport beeksFCLogo from '../../Container/Dashboard/Vps/images/BeeksFC.png'\nimport forexVPSDarkLogo from '../../Container/Dashboard/Vps/images/forex-vps-net-dark.svg'\nimport beeksFCDarkLogo from '../../Container/Dashboard/Vps/images/BeeksFCDark.png'\n\n\nimport { useThemes } from \"../../../utils/themes\"\n\n\nexport type ImageName =\n 'iphone' |\n 'japanIphone' |\n 'visa' |\n 'mastercard' |\n 'twitter' |\n 'line' |\n 'facebook' |\n 'telegram' |\n 'gmail' |\n 'mt4Laptop' |\n 'mt5Laptop' |\n 'pammLaptop' |\n 'thinkcopyMobile' |\n 'ttwebLaptop' |\n 'ttwebMobile' |\n 'ttWeb' |\n 'tmLogo' |\n 'tmLogoLight' |\n 'tmCondensedLogo' |\n 'congratsLaptop' |\n 'congratsMobile' |\n 'levelOneApprovedLaptop' |\n 'forexVPSLogo' |\n 'beeksFCLogo' |\n 'tradingView' |\n 'tmLogon' |\n 'dMT4' |\n 'dMT5' |\n 'mMT4' |\n 'mMT5' |\n 'dTT' |\n 'mTT'\n\n\ntype ImageProps = ComponentProps<\"img\"> & {\n name?: ImageName | null\n}\n\nconst Image: VFC = ({ name, ...rest }) => {\n const { theme } = useThemes()\n\n if (!name) return null\n if (name === 'tmLogoLight') return
\n\n let path = ''\n if (theme === 'light') {\n switch (name) {\n case 'iphone': path = iphone; break\n case 'japanIphone': path = japanIphone; break\n case 'ttWeb': path = ttWeb; break\n case 'tmLogo': path = tmLogo; break\n case 'tmCondensedLogo': path = tmCondensedLogo; break\n case 'mt4Laptop': path = mt4Laptop; break\n case 'mt5Laptop': path = mt5Laptop; break\n case 'pammLaptop': path = pammLaptop; break\n case 'thinkcopyMobile': path = thinkcopyMobile; break\n case 'ttwebLaptop': path = ttwebLaptop; break\n case 'ttwebMobile': path = ttwebMobile; break\n case 'visa': path = visa; break\n case 'mastercard': path = mastercard; break\n case 'twitter': path = twitter; break\n case 'line': path = line; break\n case 'facebook': path = facebook; break\n case 'telegram': path = telegram; break\n case 'gmail': path = gmail; break\n case 'congratsLaptop': path = congratsLaptop; break\n case 'congratsMobile': path = congratsMobile; break\n case 'levelOneApprovedLaptop': path = levelOneApproved; break\n case 'forexVPSLogo': path = forexVPSLogo; break\n case 'beeksFCLogo': path = beeksFCLogo; break\n case 'tradingView': path = tradingView; break\n case 'tmLogon': path = tmLogonBlack; break\n case 'dMT4': path = dMT4; break\n case 'dMT5': path = dMT5; break\n case 'mMT4': path = mMT4; break\n case 'mMT5': path = mMT5; break\n case 'dTT': path = dTT; break\n case 'mTT': path = mTT; break\n }\n } else {\n switch (name) {\n case 'iphone': path = iphone; break\n case 'japanIphone': path = japanIphone; break\n case 'ttWeb': path = ttWeb; break\n case 'tmLogo': path = tmLogo; break\n case 'tmCondensedLogo': path = tmCondensedLogo; break\n case 'mt4Laptop': path = mt4Laptop; break\n case 'mt5Laptop': path = mt5Laptop; break\n case 'pammLaptop': path = pammLaptop; break\n case 'thinkcopyMobile': path = thinkcopyMobile; break\n case 'ttwebLaptop': path = ttwebLaptop; break\n case 'ttwebMobile': path = ttwebMobile; break\n case 'visa': path = visa; break\n case 'mastercard': path = mastercard; break\n case 'twitter': path = twitter; break\n case 'line': path = line; break\n case 'facebook': path = facebook; break\n case 'telegram': path = telegram; break\n case 'gmail': path = gmail; break\n case 'congratsLaptop': path = congratsLaptop; break\n case 'congratsMobile': path = congratsMobile; break\n case 'levelOneApprovedLaptop': path = levelOneApproved; break\n case 'forexVPSLogo': path = forexVPSDarkLogo; break\n case 'beeksFCLogo': path = beeksFCDarkLogo; break\n case 'tradingView': path = tradingView; break\n case 'tmLogon': path = tmLogonWhite; break\n case 'dMT4': path = dMT4; break\n case 'dMT5': path = dMT5; break\n case 'mMT4': path = mMT4; break\n case 'mMT5': path = mMT5; break\n case 'dTT': path = dTT; break\n case 'mTT': path = mTT; break\n }\n }\n\n return
\n}\n\nexport default Image","export default \"data:image/png;base64,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\"","import { createAction } from \"@reduxjs/toolkit\"\nimport { AccountStat, AppSubmitedParams, Country, LoginActionParams } from \"../utils/types\"\n\nexport const login = createAction(\"login\")\nexport const logout = createAction(\"logout\")\nexport const getAccounts = createAction(\"getAccounts\")\nexport const getOrganizationSettings = createAction(\"getOrganizationSettings\")\nexport const getNotifications = createAction(\"getNotifications\")\nexport const getNotificationsMap = createAction(\"getNotificationsMap\")\nexport const getBankAccounts = createAction(\"getBankAccounts\")\nexport const getUser = createAction(\"getUser\")\nexport const getAppStatus = createAction(\"getAppStatus\")\nexport const getLoyalityStatus = createAction(\"getLoyalityStatus\")\nexport const sendLastField = createAction(\"sendLastField\")\nexport const reloadAppInfo = createAction(\"reloadAppInfo\")\nexport const startPullAppStatus = createAction(\"startPullAppStatus\")\nexport const stopPullAppStatus = createAction(\"stopPullAppStatus\")\nexport const startCheckActivity = createAction(\"startCheckActivity\")\nexport const stopCheckActivity = createAction(\"stopCheckActivity\")\nexport const startRefreshAccounts = createAction(\"startRefreshAccounts\")\nexport const stopRefreshAccounts = createAction(\"stopRefreshAccounts\")\nexport const getUserApps = createAction(\"getUserApps\")\nexport const appFailed = createAction(\"appFailed\")\nexport const getQuestions = createAction(\"getQuestions\")\nexport const appSubmited = createAction>(\"appSubmited\")\nexport const corporateAppSubmited = createAction>(\"corporateAppSubmited\")\nexport const getMigrationStatus = createAction(\"getMigrationStatus\")\nexport const checkUserTermsAndConditions = createAction(\"checkUserTermsAndConditions\")\nexport const checkDemoExpiration = createAction(\"checkDemoExpiration\")\nexport const checkSubscriptionStatus = createAction(\"checkSubscriptionStatus\")\nexport const checkUserReferrerStatus = createAction(\"checkUserReferrerStatus\")\nexport const fa2checked = createAction(\"fa2checked\")\nexport const logoutTerminatedUserIfNeeded = createAction(\"logoutTerminatedUserIfNeeded\")\nexport const launchAppPreload = createAction(\"launchAppPreload\")\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loader\":\"style_loader__16qWE\",\"mini\":\"style_mini__5cq3u\",\"cover\":\"style_cover__hOjas\",\"full\":\"style_full__bj_N8\",\"progress\":\"style_progress__1NmdP\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"error-modal\":\"style_error-modal__3qFQo\",\"error\":\"style_error__2o2SK\",\"alert\":\"style_alert__2tIYF\",\"success\":\"style_success__3mZ3U\",\"text\":\"style_text__1fp-A\"};","import { apm } from '@elastic/apm-rum'\nimport moment from 'moment'\nimport { Mutex } from 'async-mutex'\nimport { appConfig } from '../config'\nimport * as Enums from \"./enums\"\nimport * as Types from \"./types\"\nimport * as IBTypes from \"../ib/utils/types\"\nimport Utils from \"./utils\"\n\n\nexport enum Authorize { Yes, No };\ntype AuthResponse = Types.AuthResponse & Types.ErrorAuthResponse\ntype RequestParams = {\n payload: {\n module: string\n action: string\n }[]\n session_id?: string\n token?: string\n challengeResponse?: string\n accessToken?: string\n refreshToken?: string\n}\nclass Api {\n private tfboToken: string\n private tfboSession: string\n private accessToken: string\n private refreshToken: string\n private refreshTokenValidUntil: string\n private mutex = new Mutex();\n\n constructor() {\n this.tfboSession = localStorage[Enums.__STORAGE.session]\n this.tfboToken = localStorage[Enums.__STORAGE.token]\n this.accessToken = localStorage[Enums.__STORAGE.accessToken]\n this.refreshToken = localStorage[Enums.__STORAGE.refreshToken]\n this.refreshTokenValidUntil = localStorage[Enums.__STORAGE.validUntil]\n\n }\n _request(url: string,\n method: string,\n auth: Authorize,\n throwStatusError: boolean,\n data?: RequestParams | Object,\n contentType: string = 'application/json') {\n const headers: HeadersInit = { 'Content-Type': contentType }\n\n if (auth === Authorize.Yes && this.accessToken) {\n headers.authorization = `Bearer ${this.accessToken}`\n }\n\n const config: RequestInit = {\n method,\n headers,\n credentials: 'include',\n }\n\n\n // logging into elastic apm\n let transaction: any = undefined\n let processSpan: any = undefined\n let fetchSpan: any = undefined\n if (data) {\n config.body = JSON.stringify(data)\n const body: RequestParams = data as RequestParams\n if (body.payload) {\n const name = body.payload.length > 1\n ? 'Multiple payloads'\n : `${body.payload[0].module} -> ${body.payload[0].action}`\n transaction = apm.startTransaction(name, 'custom.request')\n const labelValue = body.payload.length > 1\n ? body.payload.map((x: any) => `${x.module} -> ${x.action}`).join(', ')\n : `${body.payload[0].module} -> ${body.payload[0].action}`\n transaction && transaction.addLabels({ payload: labelValue })\n fetchSpan = transaction ? transaction.startSpan(name, 'external.http') : undefined\n }\n }\n\n const response = fetch(url, config)\n\n return response\n .then(response => {\n fetchSpan && fetchSpan.end()\n processSpan = transaction\n ? transaction.startSpan('Process response', 'external.process')\n : undefined\n if (throwStatusError && response.status !== 200)\n throw Error('Server is unavailable. Please try later.')\n return response\n })\n .then(response => {\n const contentType = response.headers.get(\"content-type\")\n\n if (contentType) {\n if (contentType.startsWith('application/json'))\n return response.json()\n else if (contentType.startsWith('application/octet-stream'))\n return response.blob()\n else if (contentType.startsWith('image/png'))\n return response.blob()\n }\n\n return response\n })\n .then(response => {\n processSpan && processSpan.end()\n transaction && transaction.end()\n return response as T\n })\n }\n\n _tfbo(data: Partial = {}, auth: Authorize = Authorize.Yes) {\n if (auth === Authorize.Yes) {\n data.session_id = this.tfboSession\n data.token = this.tfboToken\n }\n const request = () => {\n return this._request>(appConfig.API_URL, 'post', auth, true, data)\n }\n\n if (auth === Authorize.Yes) {\n return this.mutex.runExclusive(async () => {\n const response = await request()\n if (response.payload[0].status === 'NOT_AUTHORIZED') {\n if (await this.UpdateTokens())\n return request()\n else {\n window.dispatchEvent(new Event(\"TokenExpired\"))\n return Promise.resolve(response)\n }\n }\n else return Promise.resolve(response)\n })\n }\n else return request()\n }\n\n _auth(url: string, method: string, data?: Object, auth: Authorize = Authorize.Yes) {\n const request = () => {\n return this._request(\n `${appConfig.AUTH_URL}/${url}`,\n method,\n auth,\n false,\n data)\n }\n\n if (auth === Authorize.Yes) {\n return this.mutex.runExclusive(async () => {\n const response = await request()\n if (response.status >= 400) {\n if (await this.UpdateTokens())\n return request()\n else {\n window.dispatchEvent(new Event(\"TokenExpired\"))\n return Promise.resolve(response)\n }\n }\n else {\n return Promise.resolve(response)\n }\n })\n }\n else {\n return request()\n }\n }\n\n downloadClientStatement(urlParams: string) {\n const request = () => {\n return this._request(\n `${appConfig.CLIENT_STATEMENT_URL}/download?${urlParams}`,\n 'GET',\n Authorize.Yes,\n false\n )\n }\n\n return this.mutex.runExclusive(async () => {\n const response = await request()\n if (response.status === 400) {\n if (await this.UpdateTokens())\n return request()\n else {\n window.dispatchEvent(new Event(\"TokenExpired\"))\n return Promise.resolve(response)\n }\n }\n else return Promise.resolve(response)\n })\n }\n\n downloadTradeStatement(urlParams: string) {\n const request = () => {\n return this._request(\n `${appConfig.TRADE_STATEMENT_CSV_URL}/download?${urlParams}`,\n 'GET',\n Authorize.Yes,\n false\n )\n }\n\n return this.mutex.runExclusive(async () => {\n const response = await request()\n if (response.status === 400) {\n if (await this.UpdateTokens())\n return request()\n else {\n window.dispatchEvent(new Event(\"TokenExpired\"))\n return Promise.resolve(response)\n }\n }\n else return Promise.resolve(response)\n })\n }\n\n downloadWithdrawalReceipt(urlParams: string) {\n const request = () => {\n return this._request(\n `${appConfig.WITHDRAWAL_RECEIPT_URL}?${urlParams}`,\n 'GET',\n Authorize.Yes,\n false\n )\n }\n\n return this.mutex.runExclusive(async () => {\n const response = await request()\n if (response.status === 400) {\n if (await this.UpdateTokens())\n return request()\n else {\n window.dispatchEvent(new Event(\"TokenExpired\"))\n return Promise.resolve(response)\n }\n }\n else return Promise.resolve(response)\n })\n }\n\n _createTFBOParams(params: Types.RequestBody, challenge?: string): RequestParams {\n let result: RequestParams = { payload: [params] }\n if (challenge)\n result = { ...result, challengeResponse: challenge }\n return result\n }\n\n /// Authentication ///\n\n registerUser = (data: Types.RegisterUserParams) => {\n const params = this._createTFBOParams(\n {\n module: 'authentication',\n action: 'registerUser',\n parameters: data\n })\n return this._tfbo(params, Authorize.No)\n };\n\n Login = (data: Types.EmailAndPassword) => {\n const params = {\n email: data.email,\n password: data.password,\n recaptchaResponse: data.recaptchaResponse,\n }\n return this._auth\n ('auth/login', 'post', params, Authorize.No)\n };\n\n // set auth info\n setTFBOAuth = (session: string, token: string) => {\n this.tfboSession = session\n this.tfboToken = token\n localStorage[Enums.__STORAGE.session] = session\n localStorage[Enums.__STORAGE.token] = token\n };\n\n setAuthTokens = (tokens?: Partial) => {\n if (tokens) {\n this.accessToken = tokens.accessToken ?? ''\n this.refreshToken = tokens.refreshToken ?? ''\n this.refreshTokenValidUntil = tokens.refreshTokenValidUntil ?? ''\n localStorage[Enums.__STORAGE.accessToken] = tokens.accessToken\n localStorage[Enums.__STORAGE.refreshToken] = tokens.refreshToken\n localStorage[Enums.__STORAGE.validUntil] = tokens.refreshTokenValidUntil\n }\n else {\n this.accessToken = ''\n this.refreshToken = ''\n this.refreshTokenValidUntil = ''\n localStorage.removeItem(Enums.__STORAGE.accessToken)\n localStorage.removeItem(Enums.__STORAGE.refreshToken)\n localStorage.removeItem(Enums.__STORAGE.validUntil)\n }\n };\n\n // logout\n Logout = () => {\n const params = this._createTFBOParams(\n {\n module: 'authentication',\n action: 'logout'\n })\n\n return this._tfbo>(params)\n .then((response) => {\n this.setTFBOAuth('', '')\n this.setAuthTokens(undefined)\n return response\n })\n };\n\n VerifyTokens = () => {\n if (this.accessToken && this.refreshToken) {\n const diff = moment().diff(moment(this.refreshTokenValidUntil), 'minutes')\n if (diff < -1) return true\n else return false\n }\n return false\n };\n\n UpdateTokens = async (): Promise => {\n if (this.accessToken && this.refreshToken) {\n const params = {\n accessToken: this.accessToken,\n refreshToken: this.refreshToken,\n }\n try {\n const tokens = await this._auth(\n 'auth/refresh',\n 'post',\n params,\n Authorize.No\n )\n if (!tokens.code)\n this.setAuthTokens(tokens)\n return tokens.code ? false : true\n } catch (e) {\n return false\n }\n }\n else return false\n }\n\n // verify_password\n verifyPortalPassword = (data: Types.VerifyPasswordParams) => {\n const params = this._createTFBOParams(\n {\n module: \"authentication\",\n action: \"verify_password\",\n parameters: data\n })\n\n return this._tfbo(params)\n }\n\n // change_password\n changePortalPassword = (data: Types.ChangePasswordParams) => {\n const params = this._createTFBOParams(\n {\n module: \"authentication\",\n action: \"change_password\",\n parameters: data\n })\n\n return this._tfbo(params)\n }\n // forgot_password\n resetPasswordStepOne = (data: Pick) => {\n const params = this._createTFBOParams(\n {\n module: \"authentication\",\n action: \"forgot_password_web\",\n parameters: data\n })\n\n return this._tfbo(params, Authorize.No)\n }\n\n resetPasswordStepTwo = (data: Pick) => {\n const params = this._createTFBOParams(\n {\n module: \"authentication\",\n action: \"forgot_password_web\",\n parameters: data\n })\n\n return this._tfbo(params, Authorize.No)\n }\n\n //register\n\n /// Accounts ///\n // getUserAccounts\n getUserAccounts = (data: Types.getUserAccountsRequestParams) => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"getUserAccounts\",\n parameters: data\n }\n )\n\n return this._tfbo(params)\n }\n\n // canCreateAdditionalTradingAccount\n canCreateAdditionalTradingAccount = () => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"canCreateAdditionalTradingAccount\"\n }\n )\n\n return this._tfbo(params)\n }\n // transfer\n transferMoneyStepOne = (data: Types.TransferMoneyStepOne) => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"transfer\",\n parameters: data\n }\n )\n\n return this._tfbo(params)\n }\n\n transferMoneyStepTwo = (data: Types.TransferMoneyStepTwo) => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"transfer\",\n parameters: data\n }\n )\n\n return this._tfbo(params)\n }\n availableInterAccountTransfer = () => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"availableInterAccountTransfer\",\n parameters: {}\n }\n )\n\n return this._tfbo(params)\n }\n\n // getTransferHistory\n getTransferHistory = () => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"getTransferHistory\",\n }\n )\n\n return this._tfbo(params)\n }\n\n // verify\n verifyAccountPassword = (data: Types.VerifyAccountPasswordParams) => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"verify\",\n parameters: data\n }\n )\n\n return this._tfbo(params)\n }\n\n verifyTradingAccount = (data: Required>) => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"verify\",\n parameters: data\n }\n )\n\n return this._tfbo(params)\n }\n\n // update\n updateTradingAccount = (data: Types.UpdateTradingAccountParams) => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"update\",\n parameters: data\n }\n )\n\n return this._tfbo(params)\n }\n\n getTradingAccountTempPassword = (accountNumber: number) => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"getAccountTempInfo\",\n parameters: { accountNumber }\n }\n )\n\n return this._tfbo(params)\n }\n\n // stat\n getAccountStatPayload = (type?: Enums.TradeAccountType): Types.RequestBody => {\n return {\n module: \"account\",\n action: \"stats\",\n parameters: type\n ? {\n accountType: type === Enums.TradeAccountType.Live ? \"LIVE\" : \"DEMO\"\n }\n : {}\n }\n }\n getAccountStat = (type?: Enums.TradeAccountType) => {\n const params = this._createTFBOParams(this.getAccountStatPayload(type))\n return this._tfbo(params)\n }\n\n //add\n createTradingAccount = (data: Partial, challenge?: string) => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"add\",\n parameters: {\n live: data.type === Enums.TradeAccountType.Live,\n currency: data.currency,\n leverage: data.leverage,\n balance: data.balance,\n platformCode: data.platform,\n platformAccountType: data.platformAccountType,\n source: data.source,\n accPassword: data.accPassword ? data.accPassword : undefined,\n //demo contest\n fromContest: data.fromContest,\n username: data.username\n }\n }, challenge\n )\n\n return this._tfbo(params)\n }\n\n createDemoPortalAccount = (data: Partial) => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"adddemo\",\n parameters: data\n })\n\n return this._tfbo(params, Authorize.No)\n }\n\n // profile\n accountProfile = (accountId: number) => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"profile\",\n parameters: {\n accountId\n }\n }\n )\n\n return this._tfbo(params)\n }\n\n /// Profile ///\n // get_popups\n getPopups = () => {\n const params = this._createTFBOParams(\n {\n module: \"profile\",\n action: \"get_popups\",\n }\n )\n return this._tfbo(params)\n }\n // get_user\n getUserPayload = (): Types.RequestBody => {\n return {\n module: \"profile\",\n action: \"get_user\"\n }\n }\n\n getUser = () => {\n const params = this._createTFBOParams(this.getUserPayload())\n return this._tfbo(params)\n }\n\n addAttributeToUserProfile = (data: Partial) => {\n const params = this._createTFBOParams(\n {\n module: \"profile\",\n action: \"addAdditionalAttributeToUser\",\n parameters: { additionalAttributes: data }\n }\n )\n return this._tfbo(params)\n }\n\n // update\n updateUserProfile = (data: Types.UserProfile & { isADemoAccount?: boolean }) => {\n const params = this._createTFBOParams(\n {\n module: \"profile\",\n action: \"update\",\n parameters: data\n }\n )\n\n return this._tfbo(params)\n }\n\n // notifications\n getUserNotifications = (data?: Types.GetNotificationsParams) => {\n const params = this._createTFBOParams(\n {\n module: \"profile\",\n action: \"notifications\",\n parameters: data\n }\n )\n\n return this._tfbo(params)\n }\n getNotificationsMap = () => {\n const params = this._createTFBOParams(this.getNotificationsMapPayload())\n return this._tfbo(params)\n }\n getNotificationsMapPayload = (): Types.RequestBody => {\n return {\n module: \"profile\",\n action: \"getnotification\",\n }\n }\n clearNotifications = () => {\n const params = this._createTFBOParams(\n {\n module: \"profile\",\n action: \"markReadNotification\",\n }\n )\n\n return this._tfbo(params)\n }\n // files\n getUserFiles = () => {\n const params = this._createTFBOParams(\n {\n module: \"profile\",\n action: \"files\"\n }\n )\n\n return this._tfbo(params)\n }\n // claim\n claim = (data: Types.IndividualClaimParams) => {\n const params = this._createTFBOParams(\n {\n \"module\": \"profile\",\n \"action\": \"claim\",\n parameters: data\n }\n )\n\n return this._tfbo(params)\n }\n\n // claim documents. Difference from claim: doesnt check application, doesn't send emails\n claimDocuments = (data: Types.IndividualClaimParams) => {\n const params = this._createTFBOParams(\n {\n \"module\": \"profile\",\n \"action\": \"claim_documents\",\n parameters: data\n }\n )\n\n return this._tfbo(params)\n }\n\n // deleteCreditCard\n deleteCreditCard = (data: Types.DeleteCreditCardParams) => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"deleteCreditCard\",\n parameters: data\n }\n )\n\n return this._tfbo(params)\n }\n\n /// payment ///\n // transactions\n getTransactionsPayload = (data?: Types.GetTransactionsParams): Types.RequestBody => {\n return {\n module: \"payment\",\n action: \"transactions\",\n parameters: data\n }\n }\n getTransactions = (data?: Types.GetTransactionsParams) => {\n const params = this._createTFBOParams(this.getTransactionsPayload(data))\n return this._tfbo(params)\n }\n // getProcessorsByAccount\n getProcessorsByAccount = (accountId: number) => {\n const params = this._createTFBOParams(this.getProcessorsByAccountPayload(accountId))\n return this._tfbo(params)\n }\n\n getProcessorsByAccountPayload = (accountId: number): Types.RequestBody => {\n return {\n module: \"payment\",\n action: \"getProcessorsByAccount\",\n parameters: {\n accountId: accountId,\n // source: \"ThinkPortal\",\n AllowCrypto: true,\n }\n }\n }\n\n getAvailablePraxisGateways = (payload: { locale: string, country?: string }) => {\n const params = this._createTFBOParams(this.getAvailablePraxisGatewaysPayload(payload))\n return this._tfbo(params)\n }\n\n getAvailablePraxisGatewaysPayload = (\n { locale, country }: { locale: string, country?: string }\n ): Types.RequestBody => {\n return {\n module: \"PraxisGateways\",\n action: \"getAvailableGateways\",\n parameters: {\n locale: locale,\n country: country,\n }\n }\n }\n\n getPraxisSession = ({ locale, domain }: { locale: string, domain: string }) => {\n const params = this._createTFBOParams(\n {\n module: \"PraxisGateways\",\n action: \"getPraxisSession\",\n parameters: {\n locale: locale,\n domain: domain,\n }\n }\n )\n return this._tfbo(params)\n }\n\n // getProcessorsByCurrentUser\n getProcessorsByCurrentUser = () => {\n const params = this._createTFBOParams(\n {\n module: \"payment\",\n action: \"processors_by_current_user\",\n }\n )\n return this._tfbo(params)\n }\n // getBitGoAddress\n getBitGoAddress = (data: Types.GetBitGoAddressParams) => {\n const params = this._createTFBOParams(\n {\n module: \"payment\",\n action: \"getBitGoAddress\",\n parameters: data\n },\n )\n return this._tfbo(params)\n }\n // \"parameters\":{\"userId\":10089191,\"cryptoCurrency\":{\"id\": 181,\"code\": \"BTC\",\"name\":\"Bitcoin\"}}}]}\n // initiatePayment\n initiatePayment = (data: Types.InitPaymentParams, challenge?: string) => {\n const params = this._createTFBOParams(\n {\n module: \"payment\",\n action: \"initiatePayment\",\n parameters: data\n }, challenge\n )\n return this._tfbo(params)\n }\n\n // initiate\n initiate = (data: Types.InitiateParams, challenge?: string) => {\n const params = this._createTFBOParams(\n {\n module: \"payment\",\n action: \"initiate\",\n parameters: data\n }, challenge\n )\n return this._tfbo(params)\n }\n\n appleWebPayVerification = (appleUrl: string) => {\n const params = this._createTFBOParams(\n {\n module: \"payment\",\n action: \"appleWebPayVerification\",\n parameters: { appleUrl }\n },\n )\n return this._tfbo(params)\n }\n\n // cardpayLATAMPaymentMethods\n cardpayLATAMPaymentMethods = () => {\n const params = this._createTFBOParams(\n {\n module: \"payment\",\n action: \"cardpayLATAMPaymentMethods\",\n parameters: {}\n },\n )\n return this._tfbo<{ [key: string]: string }>(params)\n }\n\n // generatePayPalToken\n generatePayPalToken = () => {\n const params = this._createTFBOParams(\n {\n module: \"payment\",\n action: \"generatePayPalToken\",\n parameters: {}\n },\n )\n return this._tfbo(params)\n }\n\n // isPayPalSupported\n isPayPalSupported = (countryCode: string) => {\n const params = this._createTFBOParams(\n {\n module: \"payment\",\n action: \"isPayPalSupported\",\n parameters: {\n countryCode,\n }\n },\n )\n return this._tfbo(params)\n }\n\n // getusercreditcards\n getusercreditcards = (parameters: Types.GetUserCreditCardsParams) => {\n const params = this._createTFBOParams(\n {\n module: \"payment\",\n action: \"getusercreditcards\",\n parameters,\n },\n )\n return this._tfbo(params)\n }\n\n // getThunderXPayBanks\n getThunderXPayBanks = () => {\n const params = this._createTFBOParams(\n {\n module: \"payment\",\n action: \"getThunderXPayBanks\",\n parameters: {},\n },\n )\n return this._tfbo(params)\n }\n\n // getThunderXPayBanks\n fetchBankCodes = (isWithdrawal: boolean = false) => {\n const params = this._createTFBOParams(\n {\n module: \"payment\",\n action: \"fetchBankCodes\",\n parameters: {\n isWithdrawal,\n },\n },\n )\n return this._tfbo(params)\n }\n\n subscribe = (parameters: Types.SubscriptionSubscribeParams) => {\n const params = this._createTFBOParams(\n {\n module: \"subscription\",\n action: \"subscribe\",\n parameters: {\n ...parameters,\n },\n },\n )\n return this._tfbo(params)\n }\n\n editBankInfo = (parameters: Types.EditBankInfoParams) => {\n const params = this._createTFBOParams(\n {\n module: \"subscription\",\n action: \"editBankInfo\",\n parameters: {\n ...parameters,\n },\n },\n )\n return this._tfbo(params)\n }\n\n getSubscriptionStatus = (parameters: Types.GetSubscriptionStatusParams) => {\n const params = this._createTFBOParams(\n {\n module: \"subscription\",\n action: \"getSubscriptionStatus\",\n parameters: {\n ...parameters,\n },\n },\n )\n return this._tfbo(params)\n }\n\n changeTier = (parameters: Types.ChangeTierParams) => {\n const params = this._createTFBOParams(\n {\n module: \"subscription\",\n action: \"changeTier\",\n parameters: {\n ...parameters,\n },\n },\n )\n return this._tfbo(params)\n }\n\n stopSubscription = (parameters: Types.StopSubscriptionParams) => {\n const params = this._createTFBOParams(\n {\n module: \"subscription\",\n action: \"stopSubscription\",\n parameters: {\n ...parameters,\n },\n },\n )\n return this._tfbo(params)\n }\n\n getPaymentDetails = (parameters: Types.GetPaymentDetailsParams) => {\n const params = this._createTFBOParams(\n {\n module: \"subscription\",\n action: \"getPaymentDetails\",\n parameters: {\n ...parameters,\n },\n },\n )\n return this._tfbo(params)\n }\n\n getBillingHistory = (parameters: Types.GetBillingHistoryParams) => {\n const params = this._createTFBOParams(\n {\n module: \"subscription\",\n action: \"getBillingHistory\",\n parameters: {\n ...parameters,\n },\n },\n )\n return this._tfbo(params)\n }\n\n checkOpenPositionsTT = (parameters: Types.CheckOpenPositionsTTParams) => {\n const params = this._createTFBOParams(\n {\n module: \"subscription\",\n action: \"checkOpenPositionsTT\",\n parameters: {\n ...parameters,\n },\n },\n )\n return this._tfbo(params)\n }\n\n restartSubscription = (parameters: Types.RestartSubscriptionParams) => {\n const params = this._createTFBOParams(\n {\n module: \"subscription\",\n action: \"restartSubscription\",\n parameters: {\n ...parameters,\n },\n },\n )\n return this._tfbo(params)\n }\n\n cancelSubscription = (parameters: Types.CancelSubscriptionParams) => {\n const params = this._createTFBOParams(\n {\n module: \"subscription\",\n action: \"cancelSubscription\",\n parameters: {\n ...parameters,\n },\n },\n )\n return this._tfbo(params)\n }\n\n // getwithdrawaloptions\n getWithdrawalOptionsPayload = (accountId: number): Types.RequestBody => {\n return {\n module: \"payment\",\n action: \"getwithdrawaloptions\",\n parameters: {\n accountId,\n }\n }\n }\n getWithdrawalOptions = (accountId: number) => {\n const params = this._createTFBOParams(this.getWithdrawalOptionsPayload(accountId))\n return this._tfbo(params)\n }\n\n // getpendingwithdrawalsum\n getPendingWithdrawalSumPayload = (accountId: number): Types.RequestBody => {\n return {\n module: \"account\",\n action: \"getpendingwithdrawalsum\",\n parameters: {\n accountId,\n }\n }\n }\n\n getPendingWithdrawalSum = (accountId: number) => {\n const params = this._createTFBOParams(this.getPendingWithdrawalSumPayload(accountId))\n return this._tfbo(params)\n }\n\n // getFreezeMoney\n getFreezeMoneyPayload = (accountId: number): Types.RequestBody => {\n return {\n module: \"payment\",\n action: \"getFreezeMoney\",\n parameters: {\n accountId,\n }\n }\n }\n\n getFreezeMoney = (accountId: number) => {\n const params = this._createTFBOParams(this.getFreezeMoneyPayload(accountId))\n return this._tfbo(params)\n }\n\n // add_bank_account\n addBankAccount = (data: Types.AddBankAccountParams) => {\n const params = this._createTFBOParams(\n {\n module: \"payment\",\n action: \"add_bank_account\",\n parameters: data\n }\n )\n return this._tfbo<{}>(params)\n }\n // delete_bank_account\n deleteBankAccount = (data: Types.BankAccount) => {\n const params = this._createTFBOParams(\n {\n module: \"payment\",\n action: \"delete_bank_account\",\n parameters: {\n accountNumber: data.accountNumber\n }\n }\n )\n return this._tfbo<{}>(params)\n }\n // get_bank_accounts\n getBankAccounts = () => {\n const params = this._createTFBOParams(\n {\n module: \"payment\",\n action: \"get_bank_accounts\"\n }\n )\n return this._tfbo(params)\n }\n // get_payment_info\n // getUserCreditCards\n getPaymentInfo = (data: Types.getPaymentInfoParams) => {\n const params = this._createTFBOParams(\n {\n module: \"payment\",\n action: \"get_payment_info\",\n parameters: data\n }\n )\n return this._tfbo(params)\n }\n\n getUserCreditCards = (data: Types.GetUserCreditCardsRequestParams) => {\n const params = this._createTFBOParams(\n {\n module: \"payment\",\n action: \"getUserCreditCards\",\n parameters: data\n }\n )\n return this._tfbo(params)\n }\n\n submitWithdrawal = (data: Types.SubmitWithdrawalParams) => {\n const params = this._createTFBOParams(\n {\n module: \"payment\",\n action: \"submitWithdrawal\",\n parameters: data\n }\n )\n return this._tfbo(params)\n }\n\n cancelwithdraw = (transactionID: number) => {\n const params = this._createTFBOParams(\n {\n module: \"payment\",\n action: \"cancelwithdraw\",\n parameters: {\n id: transactionID,\n }\n }\n )\n return this._tfbo(params)\n }\n\n sendPhoneVerificationCode = () => {\n const params = this._createTFBOParams(\n {\n module: 'phoneVerification',\n action: 'sendVerificationCode',\n parameters: {}\n }\n )\n\n return this._tfbo(params)\n }\n\n checkPhoneVerificationCode = (code: string, sid: string) => {\n const params = this._createTFBOParams(\n {\n module: 'phoneVerification',\n action: 'checkVerificationCode',\n parameters: {\n code: code,\n sid: sid,\n }\n }\n )\n\n return this._tfbo(params)\n }\n\n sendTwilioSMS = (data: Types.SendTwilioSmsParams) => {\n const params = this._createTFBOParams(\n {\n module: 'payment',\n action: 'sendVerificationCode',\n parameters: {\n userId: data.userId,\n channel: \"sms\",\n to: data.to\n }\n }\n )\n\n return this._tfbo(params)\n }\n\n checkTwilioSMS = (data: Types.CheckTwilioSmsParams) => {\n const params = this._createTFBOParams(\n {\n module: 'payment',\n action: 'checkVerificationCode',\n parameters: {\n userId: data.userId,\n to: data.to,\n code: data.code,\n sid: data.sid\n }\n }\n )\n\n return this._tfbo(params)\n }\n\n // getAstroPayDirectBanks\n // getPaymentsCount\n\n /// utility ///\n // getOrganizationSettings\n getOrganizationSettingsPayload = (country_id?: number): Types.RequestBody => {\n const parameters: Types.IndexedObject = {\n type: \"LIVE\"\n }\n if (country_id) parameters.country_id = country_id\n return {\n module: \"utility\",\n action: \"getorganizationsettings\",\n parameters\n }\n }\n getOrganizationSettings = (country_id?: number) => {\n const auth = country_id ? Authorize.No : Authorize.Yes\n const params = this._createTFBOParams(this.getOrganizationSettingsPayload(country_id))\n return this._tfbo(params, auth)\n }\n getQuestions = (orgId: number) => {\n const params = this._createTFBOParams(\n {\n module: \"application\",\n action: \"getQuestions\",\n parameters: {\n orgId\n }\n })\n\n return this._tfbo(params, Authorize.No)\n }\n getTrustDockVerificationID = (applicationID: number) => {\n const params = this._createTFBOParams(\n {\n module: \"application\",\n action: \"get_trust_dock_verification_id\",\n parameters: {\n applicationId: applicationID,\n }\n })\n\n return this._tfbo(params)\n }\n\n getSumSubAccessToken = (applicationID: number) => {\n const params = this._createTFBOParams(\n {\n module: \"application\",\n action: \"get_sum_sub_app_token\",\n parameters: {\n applicationId: applicationID,\n }\n })\n\n return this._tfbo(params)\n }\n\n getLastApplicationsInfo = () => {\n const params = this._createTFBOParams(\n {\n module: \"application\",\n action: \"getLastApplicationsInfo\",\n parameters: {\n }\n })\n\n return this._tfbo(params)\n }\n\n getDocumentTypesPayload = (): Types.RequestBody => {\n return {\n module: \"utility\",\n action: \"getdocumenttypes\"\n }\n }\n getDocumentTypes = () => {\n const params = this._createTFBOParams(this.getDocumentTypesPayload())\n return this._tfbo(params, Authorize.No)\n }\n\n getTMCYOrgOverridesPayload = (): Types.RequestBody => {\n return {\n module: \"utility\",\n action: \"getTMCYOrgOverrides\"\n }\n }\n getTMCYOrgOverrides = () => {\n const params = this._createTFBOParams(this.getTMCYOrgOverridesPayload())\n return this._tfbo(params, Authorize.No)\n }\n\n\n\n // getCountries\n getCountriesPayload = (showUnused: boolean): Types.RequestBody => {\n return {\n module: \"utility\",\n action: \"getCountries\",\n parameters: {\n showUnused\n }\n }\n }\n\n getCountries = (showUnused: boolean = false) => {\n const params = this._createTFBOParams(this.getCountriesPayload(showUnused))\n return this._tfbo(params, Authorize.No)\n }\n\n getcurrenciesPayload = (processorId?: number): Types.RequestBody => {\n return {\n module: \"utility\",\n action: \"getcurrencies\",\n parameters: {\n processorId,\n }\n }\n }\n\n getcurrencies = (processorId?: number) => {\n const params = this._createTFBOParams(this.getcurrenciesPayload(processorId))\n return this._tfbo(params, Authorize.No)\n }\n\n getKYCProvider = (countryId: number) => {\n const params = this._createTFBOParams(\n {\n module: \"utility\",\n action: \"getkycprovider\",\n parameters: {\n countryId\n }\n })\n\n return this._tfbo(params, Authorize.No)\n }\n\n checkUserTermsAndConditionsPayload = (): Types.RequestBody => {\n return {\n module: \"profile\",\n action: \"checkUserTermsAndConditions\"\n }\n }\n\n checkUserTermsAndConditions = () => {\n const params = this._createTFBOParams(this.checkUserTermsAndConditionsPayload())\n return this._tfbo(params)\n }\n\n getLatestTermsAndConditionsPayload = (): Types.RequestBody => {\n return {\n module: \"profile\",\n action: \"getLatestTermsAndConditions\"\n }\n }\n\n getLatestTermsAndConditions = () => {\n const params = this._createTFBOParams(this.getLatestTermsAndConditionsPayload())\n return this._tfbo(params)\n }\n\n agreeToLatestTermsAndConditions = (versionNumber: string) => {\n const params = this._createTFBOParams(\n {\n module: \"profile\",\n action: \"agreeToLatestTermsAndConditions\",\n parameters: {\n versionNumber: versionNumber\n }\n }\n )\n\n return this._tfbo(params)\n }\n\n // getAvatars\n getAvatars = () => {\n const params = this._createTFBOParams(\n {\n module: \"profile\",\n action: \"getAvatars\",\n parameters: {},\n }\n )\n\n return this._tfbo(params)\n }\n\n // changeAvatar\n changeAvatar = (attachmentId: number) => {\n const params = this._createTFBOParams(\n {\n module: \"profile\",\n action: \"changeAvatar\",\n parameters: {\n attachmentId,\n },\n }\n )\n\n return this._tfbo<{}>(params)\n }\n\n // isAutoWithdrawFormEnabled\n // ip\n getIPPayload = (): Types.RequestBody => {\n return {\n module: \"utility\",\n action: \"ip\",\n }\n }\n\n getIP = () => {\n const params = this._createTFBOParams(this.getIPPayload())\n return this._tfbo(params, Authorize.No)\n }\n // getPreferredLanguages\n getPreferredLanguagesPayload = (): Types.RequestBody => {\n return {\n module: \"utility\",\n action: \"getpreferredlanguages\",\n }\n }\n\n getPreferredLanguages = () => {\n const params = this._createTFBOParams(this.getPreferredLanguagesPayload())\n return this._tfbo(params, Authorize.No)\n }\n\n getTradingCentralLink = (data: Types.GetTradingCentralLinkParams) => {\n const params = this._createTFBOParams(\n {\n module: \"utility\",\n action: \"createHandshakeURL\",\n parameters: data\n }\n )\n\n return this._tfbo(params)\n }\n\n getResearchPlatformLink = (data: Types.GetTradingCentralLoginLinkParams) => {\n const params = this._createTFBOParams(\n {\n module: \"utility\",\n action: \"createTCLoginURL\",\n parameters: data\n }\n )\n\n return this._tfbo(params)\n }\n\n /// application ///\n // apps\n getUserAppsPayload = (): Types.RequestBody => {\n return {\n module: \"application\",\n action: \"apps\",\n }\n }\n\n getUserApps = () => {\n const params = this._createTFBOParams(this.getUserAppsPayload())\n return this._tfbo(params)\n }\n\n checkApplicationStatusesPayload = (): Types.RequestBody => {\n return {\n module: \"application\",\n action: \"check_application_statuses\",\n }\n }\n\n checkApplicationStatuses = () => {\n const params = this._createTFBOParams(this.checkApplicationStatusesPayload())\n return this._tfbo(params)\n }\n\n checkApplicationStatusByIDPayload = (applicationId: number): Types.RequestBody => {\n return {\n module: \"application\",\n action: \"check_application_status_by_id\",\n parameters: {\n applicationId\n }\n }\n }\n\n checkApplicationStatusByID = (applicationId: number) => {\n const params = this._createTFBOParams(this.checkApplicationStatusByIDPayload(applicationId))\n return this._tfbo(params)\n }\n\n // appExists = (accountHolderEmail: string) => {\n // const params = this._createParams(\n // {\n // module: \"application\",\n // action: \"check_applicant_existance\",\n // parameters: { accountHolderEmail }\n // }\n // )\n\n // return this._post(Authorize.Yes,params)\n // }\n\n validateEmail = (data: Types.ValidateEmailParams) => {\n const params = this._createTFBOParams(\n {\n module: \"application\",\n action: \"validateemail\",\n parameters: data\n }\n )\n\n return this._tfbo(params, Authorize.No)\n }\n\n incrementalSubmit = (data: Types.AppInfo) => {\n const authorized = this.tfboSession || this.accessToken\n const params = this._createTFBOParams(\n {\n module: \"application\",\n action: authorized\n ? \"application_submit\"\n : \"incremental_submit\",\n parameters: data\n }\n )\n return this._tfbo(params, authorized ? Authorize.Yes : Authorize.No)\n }\n\n simplified_submit_level_one = (data: Types.AppInfo) => {\n const params = this._createTFBOParams(\n {\n module: \"application\",\n action: \"simplified_submit_level_one\",\n parameters: data\n }\n )\n return this._tfbo(params)\n }\n\n simplified_submit_level_two = (data: Types.AppInfo) => {\n const params = this._createTFBOParams(\n {\n module: \"application\",\n action: \"simplified_submit_level_two\",\n parameters: data\n }\n )\n return this._tfbo(params)\n }\n\n getAccountTradingTypes = () => {\n const params = this._createTFBOParams(\n {\n module: \"utility\",\n action: \"getAccountTradingTypes\",\n parameters: {}\n }\n )\n\n return this._tfbo(params, Authorize.No)\n }\n\n getJumioUrl = (type: Types.JumioAcceptedDocument, locale: string) => {\n const params = this._createTFBOParams(\n {\n module: \"application\",\n action: \"jumio_iframe_redirect_url\",\n parameters: { type, locale }\n }\n )\n\n return this._tfbo(params)\n }\n\n getJumioDocumentTypes = () => {\n const params = this._createTFBOParams(\n {\n module: \"application\",\n action: \"getJumioDocumentTypes\"\n }\n )\n\n return this._tfbo(params)\n }\n\n sendOtpCode = (data: Types.VerifyEmailParams) => {\n const params = this._createTFBOParams(\n {\n module: \"emailvalidation\",\n action: \"send_verification_code\",\n parameters: data\n }\n )\n\n return this._tfbo(params, Authorize.No)\n }\n\n verifyOtpCode = (otpCode: string, email: string) => {\n const params = this._createTFBOParams(\n {\n module: \"emailvalidation\",\n action: \"verify_otp_code\",\n parameters: {\n otpValue: otpCode,\n accountHolderEmail: email\n }\n }\n )\n\n return this._tfbo(params, Authorize.No)\n }\n\n isValidOtpCode = (otpCode: string, recaptchaResponse: string) => {\n const params = this._createTFBOParams(\n {\n module: \"utility\",\n action: \"isValidOtpCode\",\n parameters: {\n otpCode: otpCode,\n recaptchaResponse: recaptchaResponse,\n }\n }\n )\n\n return this._tfbo(params)\n }\n\n isUserVerifiedPayload = (email: string): Types.RequestBody => {\n return {\n module: \"emailvalidation\",\n action: \"isuserverified\",\n parameters: {\n userEmail: email\n }\n }\n }\n\n\n\n isUserVerified = (email: string) => {\n const params = this._createTFBOParams(this.isUserVerifiedPayload(email))\n return this._tfbo(params, Authorize.No)\n }\n\n\n isEmailVerificationRequired = (countryId: number) => {\n const params = this._createTFBOParams(\n {\n module: \"emailvalidation\",\n action: \"isemail_verification_required\",\n parameters: { originCountry: countryId }\n }\n )\n\n return this._tfbo(params, Authorize.No)\n }\n\n //returns AddressLookupResponse\n addressLookup = (data: Types.AddressLookupParams) => {\n const params = this._createTFBOParams(\n {\n module: \"application\",\n action: \"addressLookup\",\n parameters: data\n }\n )\n\n return this._tfbo(params, Authorize.No)\n }\n\n getDocumentsJPN = () => {\n const params = this._createTFBOParams(\n {\n module: \"application\",\n action: \"get_documents\",\n parameters: {}\n }\n )\n\n return this._tfbo(params)\n }\n\n getMigrationStatusPayload = (): Types.RequestBody => {\n return {\n module: \"migration\",\n action: \"getMigrationStatus\",\n parameters: {}\n }\n }\n\n getMigrationStatus = () => {\n const params = this._createTFBOParams(this.getMigrationStatusPayload())\n return this._tfbo(params)\n }\n\n setMigrationResponse = (response: Types.UserMigrationResponse) => {\n const params = this._createTFBOParams({\n module: \"migration\",\n action: \"setMigrationResponse\",\n parameters: {\n response: response,\n }\n })\n return this._tfbo(params)\n }\n\n appInfoPayload = (): Types.RequestBody => {\n return {\n module: \"application\",\n action: \"get_application_info\",\n parameters: {\n email: Utils.loadEncryptedString(Enums.__STORAGE.user),\n }\n }\n }\n\n appInfo = () => {\n const params = this._createTFBOParams(this.appInfoPayload())\n return this._tfbo(params, Authorize.No)\n }\n\n sendLastField = (field: string) => {\n const params = this._createTFBOParams(\n {\n module: \"application\",\n action: \"setFormLastField\",\n parameters: {\n accountHolderEmail: Utils.loadEncryptedString(Enums.__STORAGE.user),\n formLastField: field\n }\n }\n )\n\n return this._tfbo(params, Authorize.No)\n }\n\n getAppRules = (country_id: number, accountType?: Types.ApplicationType) => {\n const params = this._createTFBOParams(\n {\n module: \"application\",\n action: \"get_validation_rules\",\n parameters: { country_id, accountType }\n }\n )\n\n return this._tfbo(params, Authorize.No)\n }\n\n //utility\n multilpeTFBO = (data: Types.RequestBody[], auth: Authorize = Authorize.Yes) => {\n const request = { payload: data }\n return this._tfbo(request, auth)\n }\n\n checkTFBOResponse = (response: Types.APIResponse,\n alsoValid?: Types.ResponseStatus[]): Types.ResponseStatus => {\n const { status } = response.payload[0]\n const valid = alsoValid ? ['OK', ...alsoValid] : ['OK']\n if (!valid.includes(status.toUpperCase()))\n throw Utils.apiError(response)\n return status\n }\n\n //2fa\n\n FA2Options = (): RequestInit => {\n return {\n // mode: 'no-cors',\n headers: {\n 'Content-Type': 'application/json',\n 'session': `Bearer ${this.accessToken}`,\n 'token': `Bearer ${this.accessToken}`\n }\n }\n }\n\n isSignalCenterEnabled = (email?: string) => {\n const notAllowed = {\n allowed: false\n }\n if (!email) return Promise.resolve(notAllowed)\n return fetch(`${appConfig.SIGNALS_URL}/check-access/${encodeURI(email)}`, {\n method: \"GET\", ...this.FA2Options()\n })\n .then(response => {\n if (response.status === 200)\n return response.json()\n throw new Error(`Failed to check Signal Center status. Status code ${response.status}`)\n })\n .then(response => response as Types.SignalCenterEnabledResponse)\n .catch(() => {\n return notAllowed\n })\n }\n\n\n get2FaStatus = () => {\n return this._auth(\n `user/tfa/status`,\n 'get')\n }\n\n set2FaStatus = (enable: boolean, code: string) => {\n const params = {\n code: code\n }\n return this._auth(\n enable\n ? `user/tfa/enable`\n : `user/tfa/disable`,\n 'post', params)\n }\n\n verify2FaCode = (data: Types.FA2VerifyRequest) => {\n const payload: Types.FA2VerifyRequest = {\n email: data.email,\n code: data.code\n }\n if (data.recaptchaResponse)\n payload.recaptchaResponse = data.recaptchaResponse\n return this._auth\n ('auth/tfa', 'post', payload)\n }\n\n generate2FaCode = async () => {\n return this._auth(\n `user/tfa/generate`, 'post')\n }\n\n //address lookup\n\n AddressLookupOptions = (): RequestInit => {\n return this.FA2Options()\n }\n\n getCurrencyPairRate = (params: Types.CurrencyPairRateParams) => {\n return fetch(`${appConfig.EXCHANGE_RATES_URL}/currency-pair?amount=${params.amount}&from=${params.from}&to=${params.to}&direction=${params.direction}`, {\n method: \"GET\",\n })\n .then(response => {\n if (response.status === 200) {\n return response.json()\n } else {\n throw new Error(response.statusText)\n }\n })\n .then(response => response as Types.CurrencyPairRateResponse)\n }\n\n addressLookupAutocomplete = (params: Types.AddressLookupAutocompleteParams) => {\n return fetch(`${appConfig.ADDRESS_LOOKUP_URL}/lookup`, {\n ...this.AddressLookupOptions(),\n method: \"POST\",\n body: JSON.stringify(params),\n })\n .then(response => {\n if (response.status === 200) {\n return response.json()\n } else {\n throw new Error(response.statusText)\n }\n })\n .then(response => response as Types.AddressLookupAutocompleteResponse)\n }\n\n addressLookupComponents = (params: Types.AddressLookupComponentsParams) => {\n return fetch(`${appConfig.ADDRESS_LOOKUP_URL}/components`, {\n ...this.AddressLookupOptions(),\n method: \"POST\",\n body: JSON.stringify(params),\n })\n .then(response => {\n if (response.status === 200) {\n return response.json()\n } else {\n throw new Error(response.statusText)\n }\n })\n .then(response => response as Types.AddressLookupComponentsResponse)\n }\n\n bjpPaymentFinishCallback = (transaction_id: string, status: string) => {\n return fetch(`${appConfig.PAYMENT_URL}/finish_callback/Bjp?transaction_id=${transaction_id}&status=${status}`, {\n ...this.AddressLookupOptions(),\n method: \"POST\",\n })\n .then(response => {\n if (response.status === 200) {\n return response.json()\n } else {\n throw new Error(response.statusText)\n }\n })\n .then(response => response)\n }\n\n generateSsoToken = () => {\n return this._auth<{\n ssoCode: string\n } & Types.ErrorAuthResponse>('internal/sso', 'post')\n }\n\n validateSsoToken = async (parameters: Types.ValidateSsoTokenParams): Promise => {\n try {\n const response = await this._auth\n ('internal/sso/exchange', 'post', parameters, Authorize.No)\n\n if (!response.code)\n this.setAuthTokens(response)\n return response.code ? false : true\n } catch (e) {\n return false\n }\n }\n\n getalltrades = (parameters: Types.GetAllAccountTradesParams) => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"getalltrades\",\n parameters: parameters\n }\n )\n\n return this._tfbo(params)\n }\n\n sendTradeStatementsEmail = (parameters: Types.GetAllAccountTradesParams) => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"sendTradeStatementsEmail\",\n parameters: parameters\n }\n )\n\n return this._tfbo(params)\n }\n\n getAccountDetails = (tradingId: number) => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"getAccountDetails\",\n parameters: {\n \"tradingId\": tradingId\n }\n }\n )\n\n return this._tfbo(params)\n }\n\n getGreenIDUIShow = (applicationID: number) => {\n const params = this._createTFBOParams(\n {\n module: \"application\",\n action: \"greenIDUIShow\",\n parameters: {\n applicationId: applicationID,\n }\n })\n\n return this._tfbo(params)\n }\n\n\n getGreenIDUISubmitCallBack = (applicationID: number) => {\n const params = this._createTFBOParams(\n {\n module: \"application\",\n action: \"greenIDUISubmitCallback\",\n parameters: {\n applicationId: applicationID,\n }\n })\n\n return this._tfbo(params)\n }\n\n isThinkInvestOptionDisabled = (affiliateId: string, userId: number) => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"isThinkInvestOptionDisabled\",\n parameters: {\n affiliateId, userId\n }\n }\n )\n\n return this._tfbo(params)\n }\n getGreenIDUIAbortCallback = (applicationID: number) => {\n const params = this._createTFBOParams(\n {\n module: \"application\",\n action: \"greenIDUIAbortCallback\",\n parameters: {\n applicationId: applicationID,\n }\n })\n\n return this._tfbo(params)\n }\n\n refreshTTDemoBalance = (accountId: number, amount: number) => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"refreshTTDemoBalance\",\n parameters: {\n accountId: accountId,\n amount: amount,\n }\n }\n )\n\n return this._tfbo<{}>(params)\n }\n\n addTrustedDevice = () => {\n const params = this._createTFBOParams(\n {\n module: \"authentication\",\n action: \"addTrustedDevice\",\n parameters: {}\n }\n )\n\n return this._tfbo<{}>(params)\n }\n\n getTrustedDeviceStatus = () => {\n const params = this._createTFBOParams(\n {\n module: \"authentication\",\n action: \"gettrusteddevicestatus\",\n parameters: {}\n }\n )\n\n return this._tfbo(params)\n }\n\n listTrustedDevice = () => {\n const params = this._createTFBOParams(\n {\n module: \"authentication\",\n action: \"listTrustedDevices\",\n parameters: {}\n }\n )\n\n return this._tfbo(params)\n }\n\n removeTrustedDevice = (deviceId?: number) => {\n const params = this._createTFBOParams(\n {\n module: \"authentication\",\n action: \"removeTrustedDevice\",\n parameters: {\n deviceId\n }\n }\n )\n\n return this._tfbo<{}>(params)\n }\n sendPartnershipQuestionnaire = (details: {\n user: number\n partnershipType: string// 'IB' | 'MM'\n answers: Array<{\n question: string\n answer?: string\n }>\n }) => {\n const params = this._createTFBOParams(\n {\n module: \"partnership\",\n action: \"sendPartnershipQuestionnaire\",\n parameters: {\n userId: details.user,\n partnershipType: details.partnershipType,\n filledQuestionnaire: details.answers\n\n }\n }\n )\n\n return this._tfbo<{}>(params)\n }\n\n validateIB = (id: number) => {\n const params = this._createTFBOParams(\n {\n module: \"application\",\n action: \"does_affiliate_exist_by_aid\",\n parameters: {\n aid: id\n }\n }\n )\n return this._tfbo<{}>(params, Authorize.No)\n }\n\n findAllAvailableRequestTypes = () => {\n const params = this._createTFBOParams(\n {\n module: \"supportrequest\",\n action: \"findAllAvailableRequestTypes\",\n parameters: {}\n }\n )\n return this._tfbo(params)\n }\n\n findAllRequestTypes = () => {\n const params = this._createTFBOParams(\n {\n module: \"supportrequest\",\n action: \"findAllRequestTypes\",\n parameters: {}\n }\n )\n return this._tfbo(params)\n }\n\n saveSupportRequest = (parameters: Types.SaveSupportRequest) => {\n const params = this._createTFBOParams(\n {\n module: \"supportrequest\",\n action: \"savesupportrequest\",\n parameters: parameters\n }\n )\n return this._tfbo<{}>(params)\n }\n\n getAllSupportRequests = (parameters: Types.GetAllSupportRequests) => {\n const params = this._createTFBOParams(\n {\n module: \"supportrequest\",\n action: \"searchByFilter\",\n parameters: parameters\n }\n )\n return this._tfbo(params)\n }\n\n rateSupportRequest = (parameters: Types.RateSupportRequestParameters) => {\n const params = this._createTFBOParams(\n {\n module: \"supportrequest\",\n action: \"rateSupportRequest\",\n parameters: parameters\n }\n )\n return this._tfbo<{}>(params)\n }\n\n getAccountsByRequestType = (requestTypeId: number) => {\n const params = this._createTFBOParams(\n {\n module: \"supportrequest\",\n action: \"getAccountsByRequestType\",\n parameters: {\n requestTypeId: requestTypeId,\n }\n }\n )\n return this._tfbo(params)\n }\n\n getLastDemoContestDate = () => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"getLastDemoContestDate\",\n parameters: {}\n }\n )\n return this._tfbo(params)\n }\n\n getUserTradingVolumePayload = (currency?: string): Types.RequestBody => {\n return {\n module: \"payment\",\n action: \"getUserTradingVolume\",\n parameters: {\n currency: currency,\n }\n }\n }\n\n getUserTradingVolume = (currency?: string) => {\n const params = this._createTFBOParams(this.getUserTradingVolumePayload(currency))\n return this._tfbo(params)\n }\n\n checkPercentageAndRatioConfigurationPayload = (subProcessorId: number): Types.RequestBody => {\n return {\n module: \"payment\",\n action: \"checkPercentageAndRatioConfiguration\",\n parameters: {\n subProcessorId: subProcessorId,\n }\n }\n }\n\n checkPercentageAndRatioConfiguration = (subProcessorId: number) => {\n const params = this._createTFBOParams(this.checkPercentageAndRatioConfigurationPayload(subProcessorId))\n return this._tfbo(params)\n }\n\n checkUserReferrerStatus = (userId: number) => {\n const params = this._createTFBOParams(\n {\n module: \"referafriend\",\n action: \"checkUserReferrerStatus\",\n parameters: { userId: userId }\n }\n )\n return this._tfbo(params)\n }\n\n checkQualificationCriteriaForTheReferrer = () => {\n const params = this._createTFBOParams(\n {\n module: \"referafriend\",\n action: \"checkQualificationCriteriaForTheReferrer\",\n parameters: {}\n }\n )\n return this._tfbo(params)\n }\n\n addNewReferrer = (userId: number) => {\n const params = this._createTFBOParams(\n {\n module: \"referafriend\",\n action: \"addNewReferrer\",\n parameters: { userId: userId }\n }\n )\n return this._tfbo(params)\n }\n\n generateRefLinkPayload = (): Types.RequestBody => {\n return {\n module: \"referafriend\",\n action: \"generateRefLink\",\n parameters: {}\n }\n }\n\n generateRefLink = () => {\n const params = this._createTFBOParams(this.generateRefLinkPayload())\n return this._tfbo(params)\n }\n\n getReferralActivitiesPayload = (userId: number): Types.RequestBody => {\n return {\n module: \"referafriend\",\n action: \"getReferralActivities\",\n parameters: { userId: userId }\n }\n }\n\n getReferralActivities = (userId: number) => {\n const params = this._createTFBOParams(this.getReferralActivitiesPayload(userId))\n return this._tfbo(params)\n }\n\n getRemainigDeposit = (accountId: number) => {\n const params = this._createTFBOParams(\n {\n module: \"account\",\n action: \"getRemainingDepositAmount\",\n parameters: {\n accountId\n }\n }\n )\n\n return this._tfbo(params)\n }\n\n // Partner Portal\n\n getpartnerinfoPayload = (parameters: Types.GetWithUserIDParams): Types.RequestBody => {\n return {\n module: \"ibcommissioncportalmanagement\",\n action: \"getpartnerinfo\",\n parameters: parameters\n }\n }\n\n searchPartnerClientListPayload = (parameters: Types.SearchPartnerClientListParams): Types.RequestBody => {\n return {\n module: \"ibcommissioncportalmanagement\",\n action: \"searchPartnerClientList\",\n parameters: parameters\n }\n }\n\n searchpartnerusersummaryPayload = (parameters: Types.SearchPartnerUserSummaryParams): Types.RequestBody => {\n return {\n module: \"ibcommissioncportalmanagement\",\n action: \"searchpartnerusersummary\",\n parameters: parameters\n }\n }\n\n getIBCountriesPayload = (): Types.RequestBody => {\n return {\n module: \"ibcommissioncportalmanagement\",\n action: \"getCountries\",\n parameters: {}\n }\n }\n\n getIBTradingPlatformsPayload = (): Types.RequestBody => {\n return {\n module: \"ibcommissioncportalmanagement\",\n action: \"getTradingPlatforms\",\n parameters: {}\n }\n }\n\n getIBAccountTradingTypesPayload = (): Types.RequestBody => {\n return {\n module: \"ibcommissioncportalmanagement\",\n action: \"getAccountTradingTypes\",\n parameters: {}\n }\n }\n\n searchClientAllAccountsPayload = (parameters: Types.SearchClientAllAccountsParams): Types.RequestBody => {\n return {\n module: \"ibcommissioncportalmanagement\",\n action: \"searchClientAllAccounts\",\n parameters: parameters\n }\n }\n\n searchClientAllAccounts = (parameters: Types.SearchClientAllAccountsParams) => {\n const params = this._createTFBOParams(this.searchClientAllAccountsPayload(parameters))\n\n return this._tfbo(params)\n }\n\n searchClientSummaryPayload = (parameters: Types.SearchClientSummaryParams): Types.RequestBody => {\n return {\n module: \"ibcommissioncportalmanagement\",\n action: \"searchClientSummary\",\n parameters: parameters\n }\n }\n\n searchClientSummary = (parameters: Types.SearchClientSummaryParams) => {\n const params = this._createTFBOParams(this.searchClientSummaryPayload(parameters))\n\n return this._tfbo(params)\n }\n\n searchClientTransactionSummaryPayload = (parameters: Types.SearchClientTransactionsParams): Types.RequestBody => {\n return {\n module: \"ibcommissioncportalmanagement\",\n action: \"searchClientTransactionSummary\",\n parameters: parameters\n }\n }\n\n searchClientTransactionSummary = (parameters: Types.SearchClientTransactionsParams) => {\n const params = this._createTFBOParams(this.searchClientTransactionSummaryPayload(parameters))\n\n return this._tfbo(params)\n }\n\n getCashbackType = () => {\n const params = this._createTFBOParams(\n {\n module: \"ibcommissioncportalmanagement\",\n action: \"getcashbacktype\",\n parameters: {}\n }\n )\n\n return this._tfbo(params)\n }\n\n updateCashback = (parameters: Types.UpdateCashbackParams) => {\n const params = this._createTFBOParams(\n {\n module: \"ibcommissioncportalmanagement\",\n action: \"updateCashback\",\n parameters: parameters\n }\n )\n\n return this._tfbo<{}>(params)\n }\n\n getPartnerCountrySettings = () => {\n const params = this._createTFBOParams(\n {\n module: \"ibcommissioncportalmanagement\",\n action: \"getPartnerCountrySettings\",\n parameters: {}\n }\n )\n\n return this._tfbo(params, Authorize.No)\n }\n\n isVietnamCalculationModel = (partnerId: number) => {\n const params = this._createTFBOParams(\n {\n module: \"ibcommissioncportalmanagement\",\n action: \"isVietnamCalculationModel\",\n parameters: { partnerId }\n }\n )\n\n return this._tfbo(params)\n }\n\n getVietnamSubIbsExport = (parameters: Types.GetSubLevelIbsParams) => {\n const params = this._createTFBOParams(\n {\n module: \"ibcommissioncportalmanagement\",\n action: \"getVietnamSubIbsExport\",\n parameters: parameters\n }\n )\n\n return this._tfbo(params)\n }\n\n\n getsublevelibs = (parameters: Types.GetSubLevelIbsParams) => {\n const params = this._createTFBOParams(this.getsublevelibsPayload(parameters))\n\n return this._tfbo(params)\n }\n\n getsublevelibsPayload = (parameters: Types.GetSubLevelIbsParams): Types.RequestBody => {\n return {\n module: \"ibcommissioncportalmanagement\",\n action: \"getsublevelibs\",\n parameters: parameters\n }\n }\n\n createIBApplication = (data: Partial